본문 바로가기
자격증/정보처리기사

시험전 확인

by 딸기뚜왈기 2024. 10. 18.
class ovr1 {
    public static void main(String[] args) {
        ovr1 a1 = new ovr1(); //부모가 부모를 낳은 형태 . 호출해도 오버라이드된 매서드 호출x
        ovr2 a2 = new ovr2(); //내가 태어난 형태. 부모를 참조한다.
        System.out.print(a1.san(3, 2) + a2.san(3, 2));
    }

    int san(int x, int y) {
        return x + y;
    }
}

class ovr2 extends ovr1 {
    int san(int x, int y) {
        return x - y + super.san(x, y);
    }
}

a1.san(3, 2) -> 부모클래스의  return x + y 실행
a2.san(3, 2) -> 자식클래스의 return 호출 후 super에 의해 부모 호출.

<다시 풀어볼 것> -거만 x , 꼼꼼이, 출력형태.

26회 4 : Group by where (X) Where Group by(O) having (왜그해오)

18회 20 틀린건 아닌데, 한번 보기. (++1 :전위. 먼저 1 올려준다.  1++:후위.나중에 1 올린다.)


13회 20번 꼼꼼히 봐라. 3으로 나누어떨어져 나머지가 0이 되는 것은 3의 배수만 있는게 아니다! 0도!!! 있다는거.

11회 20 자세히 봐라!!! 11번

2021 기출 2회 3번: a가 계속 100으로 초기화 되는 이유는, a를 직접 변경하는 부분이 없기 때문이다. a= 이라고 재할당 하고 있지 않기 때무이다.

16번
2021기출 3회 1번,17번

2022년 기출 2회 17


<SQL>

cascade restrict까지 헷갈리냐..
cascade 무조건 삭제 restrict 봐주는거.

insert into 테이블명(...) ValueS();

create view 뷰이름 as 조회쿼리.

 

 

  • 외부 조인(OUTER JOIN): 하나의 테이블에서 모든 행을 반환하고 일치하지 않는 경우 NULL 반환. 
  • 물리 조인: 조인 수행 방식 및 최적화 방법에 관련된 용어.(정렬병합 중첩반복 해시)
  • 세타조인 : 조인하는 두 릴레이션의 속성 값을 비교 . 만족 튜플만 반환.
  • 비동등 조인 : 조건이 '='가 아닌 경우 사용.  A.value > B.value와 같은 비교 사용 가능.
  • 이너조인(내부조인,동등 조인) : 조건이 '=' 등호로 일치하는 결과를 반환한다.(INNER)
  • 자연조인 : 동등조인에 참여한 결과의 중복된 속성을 제거한 결과를 반환한다.
  • 크로스 조인 : 두 테이블의 모든 조합을 반환
  • 셀프조인 : 셀프 조인이란, 동일 데이블 사이의 조인
  • 서브쿼리 조인: 한 쿼리 안에 포함된 서브쿼리를 사용하여 데이터를 조인하는 방식.
  • 세미조인 : 자연 조인의 한쪽 테이블 속성만 반환, 기호로 리본 열려있는 쪽 속성 제거.

집합연산( UNION, INTERSECT, MINUS, UNION ALL)

 

일반집합연산자 카티션프로덕트 기호 -> x 

순수관계연산자 디비전(나누기기호) : S의 모든 튜플과 관련있는 R의 튜플. 

 

 

 

스케줄링 HRN의 우선순위 계산 : (대기시간 + 서비스(실행)시간) / 서비스(실행)시간 = 시스템 응답시간



<문제 끝까지 읽기>
<출력형태.> 
파이썬 특히 조심 리스트로 뽑는지, 하나만 뽑는지 등등
<전위연산인지 후위연산인지>
<C언어 return을 print로 착각하지 않기!>

<검토 1번 꼭 하기!>

 

<답을 하나 쓰는건지 두개쓰는건지 명확히>

보기가 여러개라도 칸이 하나면 답이 하나 쓰는 것일 확률 높다


<아스키코드>

0:48

9:57

space:32

A:65

a:97
-------------------------------------

틀린건 아니지만 한번 보기
28회 20번, 35회 05번 비교.

 

MEC(Mobile Edge Cloud/Computing) : 무선 기지국에 분산 클라우드 컴퓨팅 기술을 적용하여 서비스와 캐싱 콘텐츠를 이용자 단말에가까이 전개함으로써 모바일 코어 망의 혼잡을 완화하는 기술. 

MDE (Modification Detection Code) : 키를 사용하지 않는 변경 감지 코드로 메시지의 무결성을 보장



병행제어와 로킹 구분하기.
병행제어 : 상호작용을 제어(직렬화 기법만 있는게 아니다.)
로킹(병행제어 기법) :  DB의 일관성, 무결성 유지 위해 순차적 진행을 보장 직렬화기법. 상호 배제.

프로토콜 구성요소는 구조의미타이밍이 아니고
구문의미타이밍

비대칭 키 알고리즘 정의 분명히 : 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개키와 비밀키를 사용하는 알고리즘.. 

요구사항 개발 프로세스 중
요구사항 도출 : 문제를 이해, 관련 정보를 식별/수집 방법 결정 ,요구사항을 구체적으로 표현.

소프트웨어 생명주기 모델 프로세스 중
설계 : 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계

UI 개발 주요 기법 (3CSwot - 시사숍)
시나리오 플래닝: 불확실성이 높은 상황을 예측하여 다양한 시나리오를 설계하여 불확실성을 제거해 나가는 방법. 
사용성 테스트 :사용자가 직접 제품을 사용하고 시나리오에 맞추어 과제를 수행하고 질문에 답하는 테스트.

블랙박스테스트
오류 추정 테스트 : 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법.

★경험기반 테스트 
오류 추정 테스트 : 개발자가범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법. 

SQL 문법 순서
SELECT
FROM 
WHERE 
GROUP BY
HAVING 
ORDER BY


객체 지향 설계 원칙(SOLID) 
인터페이스 분리의 원칙(interface): 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
의존성 역전의 원칙(dependency) :실제 사용 관계는 바뀌지 않음. 추상을 매개로 메시지를 주고받음. 관계를 느슨하게 만듬.

UI 화면 설계 산출물(와스프)
스토리보드, 프로토타입.

 

트러스트존 : arm 프로세서 탑재된 하드웨어 보안 기술 중 하나. 일반구역, 보안구역 나눔. 보안 강화 하드웨어 기반 보안 기술.

 

DRDOS(분산 반사 서비스 거부 공격) : 
출발지 IP 주소를 공격대상 IP로 위조하여, 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부(DoS)가 되는 공격 기법.

IP 스푸핑 : 타깃 시스템의 정보를 빼내기 위해 침입자가 속여 자신의 패킷 헤더를 인증된 호스트의 ip 주소로 위조하여 타깃에 전송하는 공격기법

랜드어택 :  DoS 공격 유형. 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격. 

Hulk Dos (http get flooding과의 차이 명확히): 공격자가 공격 대상 웹사이트 주소(url)를 지속적으로 변경하면서 다량의 GET요청을 발생시킨다.

http get flooding : HTTP 캐시 옵션 조작(과도한 get메시지 이용) -> 캐싱 서버가 아닌 웹 서버가 직접 처리하도록 유도(서버 과부하) -> 자원소진.

회수할 때, CASCADE CONSTRAINTS ! "s" 빼지마.

소켓 : IP address 와 PORT 넘버가 합쳐진, 네트워크상에서 서버 프로그램과 클라이언트 프로그램이 데이터를 송수신하고 통신할 수도 있도록 해주는 교환 기술.

MAC : 일방향 암호 중 인증 시 키 사용
MDC : 일방향 암호 중 인증 시 키 사용 X.

고가용성 상상동 -> 동: 동시적접근(페일오버X)

물리적조인 정중해 -> 정령합병, 중첩반복, 해시

EAI 구성요소(플어브메비)

데이터베이스 특징(무일회보효)
데이터베이스 특성(실계동내) 동시공용

소프트웨어 아키텍처 비용 평가 모델 : SAAM(변경용이성, 기능성). ATAM(이해 상충관계까지 평가), CBAM(경제적 의사 결정에 대한 요구 충족 비용 평가), ADR(응집도평가), ARD(특정부분의 품질요소 평가)

NOsql : 전통적인 RDBMS와 다른 DBMS 지칭.
네가지 유형까지 알아두기.(키컬다그)

정적테스트 중
기술리뷰 : 정의된 계획 및 명세를 준수하고 있는지에 대한 검토를 수행하는 리뷰 변경 사항이 적절하게 구현되어 있는지를 평가하고, 여러 대안을 추천하거나 대안을 검토.
관리리뷰:프로젝트 진행 상황에 대한 전반적인 검토를 바탕으로 범위, 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰.

배치프로그램유형 (이온정)

파밍 : 사용자가 자신의 웹 브라우저를 입력해도 가짜 웹 페이지로 접속하게 하여 개인 정보를 훔치는 공격. ex) 컴퓨터에 악성 코드 설치하게 한 뒤 은행 사이트 접속 시 자신들이 개설해 놓은 사이트로 강제로 접속하게 한 뒤 보안카드 번호를 입력 받아 돈을 빼간다.

Tripwire tcpdump

네트워크 보안 솔루션(NAC-단말기가 내부 네트워크에 접속 시도하는 것 제어 및 통제/ IDS-이벤트모니터링, 비인가 접근 탐지/ IPS-공격이나 침입 실시간 차단/ WPS-인가되지 않은 무선 단말기의 접속 탐지 차단/ UTM-보안장비 통합/ VPN/ SIEM-정보 빅데이터 보안 관제 솔루션/ ESM-이벤트 로그 통합 관리 분석 전사적 통합 보안 관리 시스템)

CPS :가상 물리 시스템.
디지털트윈 :물리적인 사물과 컴퓨터에 동일하게 표현되는 가상 모델.

OLAP 연산 중 Pivoting : 차원 변경을 위해 사용되는 연산, Dicing : 고정된 다차원 값에 대한 연산.


UI 개발 주요 기법(3CSwot 시사숍) 중
시나리오 플래닝: 불확실성이 높은 상황을 예측하여 다양한 시나리오를 설계하여 불확실성을 제거해 나가는 방법. 
사용성 테스트 :사용자가 직접 제품을 사용하고 시나리오에 맞추어 과제를 수행하고 질문에 답하는 테스트.

클라우드 컴퓨팅 유형(사공하)에서 공용 클라우드와 클라우드 컴퓨팅 유형(인플소)의 인프라형 서비스 헷갈리지 말기. 

인프라형 서비스(IaaS) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스. +서버, 스토리지, 네트워크를 가상화 환경으로 만들어 필요에 따라 인프라 자원을 사용할 수 있게 제공하는 서비스 입니다.ex)AWS의 EC2, S3 

공용 클라우드(public cloud) : 클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원/서비스를 제공하는 클라우드

결합도 내공외제스자 내용결합도 공통결합도

소프트웨어 아키텍처 패턴 유형(계클패브모)
계층화 패턴/ 클라이언트-서버패턴(클래스 아님)/ 파이프-필터 패턴/ 브로커 패턴/ mvc 패턴.

소프트웨어 개발방법론 종류(구정 객컴 애제)
구조적 방법론/정보공학 방법론/객체지향 방법론/컴포넌트 기반 방법론/애자일 방법론/제품 계열 방법론.

럼바우 - 객동기 (객체모델링-ER다이어그램, 동적모델링-시간흐름에 따른 동적 행위, 기능모델링-자료흐름)

ITSM(it service management) SLA SLO

디스패치 : 준비 상태에 있는 프로세스 중 하나에 CPU할당하는 것.
문맥교환: 문맥 상태를 제어블록(PCB)에 저장했다 복원
이블트윈:무선 Wifi 피싱 기법. 공격자는 합법적인 Wifi 제공자처럼 행세하며 노트북이나 휴대전화로 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격 기법. 

페이지 교체 : FIFO
비선점형 스케줄링 : FCFS

 

참샘휴일(일관성검사오라클)

 

ERM 기업 전사적 위험 관리

 

IAM ID PASSWD 종합관리 역할기반 사용자 계정관리.

데이터 마이닝: 데이터 속에 있는 변수 사이의 상호관계를 규명하여  일정한 패턴 찾기.

마이데이터 : 개인이 정보 주체가 되는 주체적 능동적.

 

SDDC(Software Defiedn Data Center): 모든 하드웨어가 가상화되어 가상 자원의 풀을 구성하고, 데이터 센터 전체를 운영하는 소프트웨어가 필요한 기능 및규모에 따라 동적으로 자원을 할당, 관리하는 역할을 수행하는 데이터센터  

SDN:컨트롤 플레인(Control Plane) 트래픽 전송을 수행하는 데이터 플레인(Data Plane) 분리


인터페이스 감시도구 : 스카우터, 제니퍼.

빅데이터 수집 기술(빅척와 비스정 : 빅 척와 비(정형)스(쿱)정(정형))

스마트그리드: 전기 및 정보통신기술을 활용하여 전력망을 지능화, 고도화, 에너지 이용 효율을 극대화하는 전력망

시맨틱웹 : 정보와 자원 사이의 관계-의미 정보를 기계(컴퓨터)가 처리할 수 있는 온톨로지 형태로 표현하고, 이를 자동화한 컴퓨터가 처리하도록 하는 지능형 웹.
  
온톨로지 : 개념과 개념들의 속성, 그리고 개념 간의 관계 정보를 컴퓨터가 이해할 수 있도록 서술해 놓은 개념화 명세서. 

단위모듈 구현 원리 : 독닉추분(정보은닉,분할과 정복,모듈독립성, 데이터 추상화)



소프트웨어 아키텍처 4+1(논배구프유)유스케이스,프로세스,배포뷰.


Slow Read Attack: Zero Wndow Packet 상태에서 다수의 HTTP 패킷 지속 전송 -> 자원소진

패스워드 크래킹 ( 무차별대입 + 사전대입 -> 패스워드 하이브리드/ 레인보우 테이블(패스워드별 해쉬값 생성))
인터페이스 구현 검증 도구(엑스피 엔셀웨)

- xUnit : 자바, C++, .Net(Nunit) 언어 지원

-STAF :  테스트 대상 분산 환경에 데몬을 사용하여

-FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인

-NTAF: FitNesse + STAF

- Selenium : 테스트 스크립트 언어를 합습할 필요 없이 기능 만듦

- watir:루비

 

CEP (Complex Event Processing) ): IoT 센싱데이터, 로그, 음성 데이터 등 실시간 데이터의 처리 기술

CMMI(Capability Maturity Model Integration) : 소프트웨어 개발 능력/성숙도 평가 품질 개선 모델

CMMI 단계적 표현 모델의 성숙도 레벨 (초관 정관최)

요구사항 개발 프로세스 (도분명확)

사용자 요구사항 도출 세부 활동(페콘사유)콘셉트모델정의/사용자요구사항/UI컨셉션

요구사항 수집 주요 수집기법(더로워서 + ㄹ)

요구사항 명세 단계 주요기법(비정) 비정형 명세 기법-자연어 /비정형 명세 기법-수학적

ui 품질 요구사항.(기신사효유이)

UI 설계 원칙 (직유학유)유효성,유연성,직관성,학습성

UI 개발 주요 기법 (3CSwot - 시사숍) 시나리오 플래닝(불확실성 예측 시나리오 설계),사용성 테스트

UI 시나리오 문서 작성 요건 (완일이가 추수)

보안모델 (벨기비무)

OSI 7계층 - (아ap파pr서sess 티Trans내net다date 피phy)


병행제어 미보장 문제(갱현모연) 모순성-일관성결여문제.

API : 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
스테레오 타입 : UML의 기본적인 요소 이외의 새로운 요소를 만들어내기 위한 확장 매커니즘.
데이터베이스 무결성 (개참속사키) 개체무결성-한엔터티 내 같은 기본키 허용x, 기본키 속성 null 허용x/ 참조무결성: 외래키가 참조하는 다른 개체의 기본키 값 = 기본키 o or Null o/
WPA(Wifi Protected Access) : 물리 계층에서의 패킷 암호화 방식 > WEP

BSC(조직성과평가):재무적/고객 측면/내부 프로세스 측면/학습 및 성장 측면.

KPI : 기업 성과 달성 측정 지표
CoAP(constraint) : (M2M 노드들 사이)에서 이벤트에 대한 송수신을 (비동기적)으로 전송하는 (REST 기반)의 프로토콜. 멀티캐스트 지원과 같은 특수한 요건을 충족하면서도 부하가낮고, 단순한 특징이 있다.  

XSS : 검증되지 않은 외부 웹페이지가 전송되어 열람함으로써 웹 페이지에 포함된 부적적한 스크립트가 실행되는 공격.

ipv4->ipv6 : 듀터주 듀얼스택 터널링 주소변환

블랙박스테스트기법(동경결상 유분페원비오)
동치분할-유무횻값/경계값분석/ 결정테이블-발생조건 나열 + 조합 t/ 상태 전이-전이 경우의 수/ 유스케이스-프로세스 흐름 기반 명세화 t/ 분류 트리-트리구조로 분석설계/ 원인결과그래프-그래프활용 관계에 미치는 영향 / 비교-같은 입력값 동일 결과?/오류추정-실수추정,결함 도출되게 테스트 설계 /

화이트박스테스트(구결조, 조변다, 기제데루)
구문-모든명령문한번은 수행/결정-전체 조건식 한번은 TF/조건-개별조건식 한번은 TF/조건결정-전체+개별 한번은 TF/변경조건결정-다른 개별조건식 영향 받지 않고 전체 조건식 독립정 영향 주므로써 조건결정커버리지 향상/다중조건-모든개별조건 조합 100%보장.

DB설계 절차(요개논물구) : 요구사항 분석-요구사항명세서작성/개념적설계-ER다이어그램/논리적설계-트랜잭션인터페이스설계/물리적설계-성능고려 저장구조 변환 과정, 명세테이블정의서/구현-SQL통해 DB생성.

요구사항분류: 기능적 -기능적요구/비기능적-비기능적요구.


테스트종류(단통시인알베회)통합- 인터페이스 간 시스템 정상 작동 검증/시스템-통합된 단위 시스템의 기능 정상 수행 검증/인수-요구사항만족여부/알바-개발자환경 개발자 함/베타-실제 사용자 환경 개발자 없이 피드백/회귀-오류 수정 삭제로 인한 변화 반복 테스트.

IPD(Inter Process Communication; 소세메공): 프로세스간 통신 기술 /// 소켓/세마포/메시지큐/공유메모리.

관계데이터모델구성요소(릴레 튜속카디차 스인) : 스키마-데이터베이스 구조 제약조건 기본구조/ 인스턴스-정의된 스키마에 의해 생성된테이블의 데이터 집합

데이터모델구성요소(구연제):연산/구조/제약조건

접근통제 유형 (임강역) : 임의-사용자or그룹의 신분(식별자)에 따라/강제-정보 허용 등급 기준/역할기반.


세션 하이재킹 : 세션 관리 취약점을 이용한 공격

UX: 사람의 감정/경험
UI: 사용자 인터페이스.

소프트웨어 아키텍처 패턴 유형 (계클파브모) 

디자인 패턴 생구행 명확히!!!!!!!!!!!!!!!!!!!!!!!
행위-반복적 객체 상호작용 패턴화. 알고리즘이나 클래스 관련.

응집도:통신적-동일한 입력 출력을 사용하여 다른 기능을 수행하는 활동/순차적-모듈 내 한 활동에서 나온 출력 값을 다른 활동이 사용.

3A : accounting(계정관리), authorization(권한부여), authentification(인증)

네트워크계층 -단말간 전송 최적화 경로 제공
데이터링크계층 -오류수정, 직접 연결 두 노드 사이 데이터 전송.
전송계층 -신뢰성 있는 통신.

 

데이터 암호화 전송 기술.: IPSec, SSL/TLS (보안소켓계층) S-HTTP :웹상에서 네트워크 트래픽을 암호화하는 주요 방법



 

전송계층(혼잡,흐름,오류)
데이터링크계층 기법 (회선, 흐름, 오류)

TCP 핸드셰이킹 : 전송계층에서 신뢰성 있는 세그먼트 전송보장을 의해 TCP Flags 기반 동작

Go-Back-N ARQ는 sliding window 기반의 에러 제어 방식 중 하나

 

TCP 흐름제어
정지-대기:  손실된 프레임 1개를 전송, 응답 기다림. 한번에 프레임 1개만 전송할 수 있음.
슬라이딩 윈도우 :  윈도우 크기를 동적으로 조절하며, 네트워크의 혼잡 상황에 따라 윈도우 크기를 조절

 

원거리 통신망 연결 기술(전용회선패킷) 전용-계약체결자끼리. /회선-물리적 전용선,전달 경로 /

패킷교환방식 종류

  • 가상회선 :  연결형
  • 데이터그램 :  비연결

다중화기 종류: (시주코)TDM/FDM/CDM

광전송 기술 : -WDM(Wavelength Division Multiplexing) -파장 다른 광신호 동시 이용. 광섬유를 다중화. 간섭x. -DWDM(Dense Wavelength Division Multiplexing ) : 파장 대역이 조밀한 광전송 기술.

 

암호화 알고리즘(대비해)

대칭키 : DES,SEED,AES,ARIA,IDEA,선형 피드백 시프트 레지스터(LFSR) : 스트림 암호화

비대칭키:

해시 암호화 알고리즘: MD5(128), SHA-1(160), SHA-256/384/512(256), HAS-160 (MD5+ SHA-1)

QKD(Quantum Key Distribution; 양자 암호 키  분배) 

 

배치프로그램(이온정)

CPS(CYBER-PHYSICAL SYSTEM) : 가상 물리 시스템

디지털 트윈 : 물리적인 사물과 컴퓨터에 동일하게 표현되는 가상 모델. 자산 운용 효율성 증대.

가상화 백업 : 하이퍼바이저가 관리하는 가상 서버의 상태를 '이미지 파일'로 백업

VTL( VTL: 가상의 테이프 라이브러리 )

하이퍼바이저: HW와 OS사이의 SW 가상화 플랫폼

도커 : 하이퍼바이저 없이 리눅스 컨테이너 기술을 바탕으로  가상화 솔루션

쿠버네티스 : 리눅스재단, 컨테이너화 된 애플리케이션의 자동 배포

 

 

데이터베이스 파일 접근 방법 구조(인순해)
순차-물리적순서=논리적순서
인덱스-<키값-주소>
해싱

 

하둡 (Hadoop) : 구글, 야후에 적용한 기술.  대량의 데이터를 저장하고 처리하기 위해 설계된 오픈소스 자바 소프트웨어 프레임워크.

하둡 분산 파일 시스템(HDFS; Hadoop Distributed File System) : 데이터를 분산 저장 파일 시스템

맵리듀스 (MapReduce) : 대량의 데이터 병렬로 처리  프로그래밍 모델

타조(Tajo) : 하둡 기반 데이터웨어하우스 시스템

 

일정관리 모델: CPM (주 공정법)-제약사항배제/ PERT/ CCPM(주 연쇄 공정법)-자원제약사항고려

 

ITSM(IT Service Management) :  고객 중심의 it 서비스 관리 기법.

SLA(Service Level Agreement) : 서비스 수준 계약 관리.

 

소프트웨어 생명주기 모델 프로세스(요설구테유 분설구테유 ) 설계: 기능 수행 방법을 논리적으로 결정

요구사항 분석에 사용되는 기법(소자요)

테스트 레벨 종류 : 단통시인 알베회 : 회귀테스트(오류 반복 테스트)

단위모듈 구형 방법 (독닉추분)

 

소프트웨어 생명주기 모델 종류(폭프나반)반복적 개발 

소프트웨어 개발방법론 종류(구정 객컴 애제) 구조적- 나씨슈나이더만/정보공학/

XP의 12가지 기본원리 : 공동 코드 소유- 누구든지 언제라도 수정 가능/ 메타포어(Metaphor): 공통적인 이름 체계로 고객과 개발자 간의 의사소통을 원활히 /테스트 기반 개발(TDD; Test Driven Develop):(선테 후코)/ 리팩토링(Refactoring): 프로그램의 기능을 바꾸지 않으면서 시스템 재구성

 

스크럼(Scrum): backlog를 바탕으로, 스프린트,번다운차트.

린(LEAN) :도요타

소프트웨어 개발 보안 용어(자위취위)

소프트웨어 개발 보안의 3대 요소 (기무가)

 

UML 구조적 다이어그램(클객컴배복패)

UML  행위적 다이어그램(유시활타상) 시퀀스다이어그램(메실생객)-객체간 메시지 전달/활동다이어그램- 흐름을 순서대로 표현/타이밍 다이어그램 -시간에 따른 객체의 상태 변화를 표현/ 상태 다이어그램: 객체의 상태 변화와 전이를 나타냄

 

 

 


GUI유형(CLI,GUI,NUI,OUI)
GUI-그래픽 기반, 전자펜, 마우스
CLI- 정적 텍스트 기반, 명령어(Command)
NUI-직관적 반응,신체부위,터치,음성(Natural)
OUI-유기적상호작용기반,현실 모든 사물.

RR :  time slice를 기반으로 스케줄링한다.(시간 내 처리 못하면 큐 제일 끝으로 감.)

반환시간 = 실행시간 + 대기시간 - 도착시간(반=실+대-도)

평균 반환시간 = 총 실행시간 다 더하기(P1~P4) + 대기시간(P1~P4) / 프로세스 개수(4)  

P4 총 실행시간 = P4 종료시점 앞부분 P1,P2,P3실행시간 다 더해준 뒤 - 도착시간. 

 

선점 !SRT(남은 처리 시간) : 가장 짧은 시간 소요되는 프로세스 먼저 수행, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 스케줄링 알고리즘.

비선점 ! -SJF(Shortest Job First) :프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료시까지 자원을 점유하는 스케줄링 알고리즘. 기아현상 발생가능성 있음.

 

RAID0:스트라이핑

RAID1:미러링.

RAID2:ECC(오류정정부호),비트레벨스트라이핑,해밍코드패리티.

RAID3:드라이브고장허용

RAID4:

RAID5:패리티배분스트라이핑.-모든디스크 나눠저장.

RAID6:패리티배분스트라이핑-두번분산저장

 

a.remove(값) 

list.insert(idx, 원소)  <--list[idx] 위치에 원소를 넣겠다.

list.index(값)

 

시프트연산자.

29 << 2

29 = 11101 (2진수)

1110100 (왼쪽으로 두 비트 이동)

->116

 

마이너스 시프트연산자(2진수-> 0,1교환-> +1 ->시프트-> -1 ->0,1교환->10진수화)

-13 >> 2

13 2진수화 :00001101

1의 보수(0,1교환) : 11110010

2의 보수(+1) : 11110011

>>2 : 11111100

2의 보수(-1) : 11111011

1의 보수(0,1교환) : 00000100

--> 결과 : -4

-13 << 2

13 2진수화 :00001101

1의 보수(0,1교환) : 11110010

2의 보수(+1) : 11110011

<<2 :  11001100

2의 보수(-1) : 11001011

1의 보수(0,1교환) : 00110100

--> 결과 : -52

 

 

매개변수 String name = "hello"  가 부모 클래스에 정의되어 있고, 자식클래스엔 없다면,,, 자식클래스에서 System.out.print(this.name) 하면 부모클래스에 있는 매개변수를 참조하게 된다. 그 역은 성립 안됨.

// 부모 클래스 P
public class P {
    String name = "Parent"; 
    public P(){ 
        System.out.print(this.name); 
    }
}

// 자식 클래스 C
public class C extends P { // P 클래스를 상속받음
    // 생성자
    public C(String name) { 
        System.out.print(name); // this를 지움 
    }
}

// 실행 클래스
public class Soojebi { 
    public static void main(String[] args){
        C c = new C("Soojebi"); 
    }
}

// 결과는 ParentSoojebi
// 부모 클래스 P
public class P {
    String name = "Parent"; 
    public P(){ 
        System.out.print(name); 
    }
}

// 자식 클래스 C
public class C extends P { // P 클래스를 상속받음
    // 생성자
    public C(String name) { 
        System.out.print(this.name); 
    }
}

// 실행 클래스
public class Soojebi { 
    public static void main(String[] args){
        C c = new C("Soojebi"); 
    }
} // 결과는 ParentParent

 

 

// 부모 클래스 P
public class P {
    String name = "Parent"; 
    public P(){ 
        Systehttp://m.out.print(name); 
    }
}

// 자식 클래스 C
// 자식 클래스 C
public class C extends P {
    String name; // C 클래스의 name 변수 추가

    // 생성자
    public C(String name) { 
        super(); // 부모 클래스의 생성자 호출
        this.name = name; // 매개변수를 클래스의 필드에 저장
        System.out.print(this.name); // 자식 클래스의 name 출력
    }
}


// 실행 클래스
public class Soojebi { 
    public static void main(String[] args){
        C c = new C("Soojebi"); 
    }
} // 결과는 ParentSoojebi

 

 

 

11회 11번

// modell:SUV, year: 2020
//생성자 호출 후에는 yyyy가 2021로 증가하지만, Car 객체의 yyyy는 이미 2020으로 고정된 상태

class Car {
    String model;
    String color;
    int yyyy;

    // 기본 생성자
    Car() {
        this.model = "승용차";
        this.color = "검정";
        this.yyyy = 2020;
         System.out.print("model: " + model);
    }

    // 매개변수가 있는 생성자
    Car(String model, String color, int yyyy) {
        this.model = model; // this는 현재 객체의 model 가리킴
        this.color = color; // this는 현재 객체의 color을 가리킴
        this.yyyy = yyyy;  // 여기서 yyyy를 올바르게 할당 2020
         System.out.print("modell: " + model);
    }
}

public class Soojebi {
    public static void main(String args[]) {
        int yyyy = 2020; // int yyyy는 2021로 업데이트
        Car c = new Car("SUV", "흰색", yyyy++);  // 후위 증가 연산자 사용 // 이 시점에서는 2020이 전달됨
        System.out.print(", year: " + c.yyyy);  // 출력 확인
    } // c.yyyy는 생성자에서 받은 2020을 출력
}
// modell:SUV, year: 2021
//생성자 호출 후에는 yyyy가 2021로 증가하였고, Car 객체의 yyyy도 전위연산에 의해 2021로 바 상태


class Car {
    String model;
    String color;
    int yyyy;

    // 기본 생성자
    Car() {
        this.model = "승용차";
        this.color = "검정";
        this.yyyy = 2020;
        System.out.print("model: " + model);
    }

    // 매개변수가 있는 생성자
    Car(String model, String color, int yyyy) {
        this.model = model;
        this.color = color;
        this.yyyy = yyyy;  // 여기서 yyyy를 올바르게 할당 2021
        System.out.print("modell: " + model);
    }
}

public class Soojebi {
    public static void main(String args[]) {
        int yyyy = 2020; //int yyyy는 2021로 업데이트
        Car c = new Car("SUV", "흰색", ++yyyy);  // 전위 증가 연산자 사용 // 이 시점에서는 2021이 전달됨
        System.out.print(", year: " + c.yyyy);  // 출력 확인
    } // c.yyyy는 생성자에서 받은 2021을 출력
}
//modell: SUV, year: 2020, updated year: 2021

class Car {
    String model;
    String color;
    int yyyy;

    // 매개변수가 있는 생성자
    Car(String model, String color, int yyyy) {
        this.model = model;
        this.color = color;
        this.yyyy = yyyy;  // 생성자 내부의 yyyy는 2020
        Systehttp://m.out.print("modell: " + model);  // 모델 출력
    }
}

public class Soojebi {
    public static void main(String args[]) {
        int yyyy = 2020;  // yyyy 값은 2020
        Car c = new Car("SUV", "흰색", yyyy++);  // 후위 증가 연산자 사용 -> c.yyyy에는 2020이 전달
        Systehttp://m.out.print(", year: " + c.yyyy);   // c.yyyy는 2020
        Systehttp://m.out.print(", updated year: " + yyyy);  // yyyy는 2021로 증가된 값
    }
}
// modell: SUV, year: 2021

class Car {
    String model;
    String color;
    int yyyy;

    // 매개변수가 있는 생성자
    Car(String model, String color, int yyyy) {
        this.model = model;
        this.color = color;
        this.yyyy = yyyy;  // 생성자 내부의 yyyy는 2020
        Systehttp://m.out.print("modell: " + model);  // 모델 출력
    }
}

public class Soojebi {
    public static void main(String args[]) {
        int yyyy = 2020;  // yyyy 값은 2020
        Car c = new Car("SUV", "흰색", yyyy++);  // 후위 증가 연산자 사용 -> c.yyyy에는 2020이 전달
        Systehttp://m.out.print(", year: " + yyyy);   
// c.yyyy는 2020, yyyy는 2021

  • c.yyyy: Car 객체가 가지고 있는 생성 당시 값(2020)을 의미.
  • yyyy: 메인 메서드에서의 현재 값(2021)을 의미.
 



 

 

public class Main {
    public static void main(String[] args) {
        int[][] arr = new int[][]{{4, 5, 6}, {7}};
        
        // 두 번째 행의 내용을 출력
        System.out.println(Arrays.toString(arr[0]));  //  출력[4,5,6]
    }
}

 

 

#include <stdio.h>

struct Soojebi {
    char name[20];
    int age;
    int height;
    int weight;
    char greeting[20];
};

int main() {
    // 배열 s[]를 두 개의 요소로 선언
    struct Soojebi s[] = {{"하이", 28, 30, 40, "헬로"}, {"안녕", 25, 170, 60, "굿바이"}};
    struct Soojebi *p;

    p = s;  // 첫 번째 구조체 요소를 가리킴
    printf("Name: %s, Age: %d\n", p->name, p->age);

    p++;  // 두 번째 구조체 요소로 이동
    printf("Name: %s, Age: %d\n", p->name, p->age);

    return 0;
}

 

 

f-string

  • name = "STR" result = f"R {name}"
  • name = "STR" result = "R {}".format(name)
  • name = "STR" result = "R %s" % name

print(result)  # 출력: R STR

 

 

class Parent {
    int a; // 부모 클래스의 a 필드

    public Parent(int a) {
        this.a = a; // 부모 클래스의 a 필드 초기화
    }
}

class Child extends Parent {
    int a; // 자식 클래스의 a 필드

    public Child(int a) {
        super(a); // 부모 클래스의 생성자 호출
        this.a = a; // 자식 클래스의 a 필드 초기화
    }

    public void printValues() {
        System.out.println("Parent a: " + super.a); // 부모 클래스의 a 필드 출력
        System.out.println("Child a: " + this.a);   // 자식 클래스의 a 필드 출력
    }
}

public class Main {
    public static void main(String[] args) {
        Child obj = new Child(3); // Child 객체 생성
        obj.a = 5; // 자식 클래스의 a 필드에 5 할당

        // 값 출력
        obj.printValues(); // Parent a: 3, Child a: 5
    }
}
class Parent {
    int a; // 부모 클래스의 a 필드

    public Parent(int a) {
        this.a = a; // 부모 클래스의 a 필드 초기화
    }
    
    // Parent 클래스에 printValues() 메서드를 추가
    public void printValues() {
        System.out.println("Parent a: " + this.a); // 부모 클래스의 a 필드 출력
    }
}

class Child extends Parent {
    int a; // 자식 클래스의 a 필드

    public Child(int a) {
        super(a); // 부모 클래스의 생성자 호출
        this.a = a; // 자식 클래스의 a 필드 초기화
    }

    @Override
    public void printValues() {
        super.printValues(); // 부모 클래스의 printValues() 호출
        System.out.println("Child a: " + this.a);   // 자식 클래스의 a 필드 출력
    }
}

public class Main {
    public static void main(String[] args) {
        Parent obj = new Child(3); // Child 객체 생성
        obj.a = 5; // 부모 클래스의 a 필드에 5 할당

        // 값 출력
        obj.printValues(); // Parent a: 5, Child a: 3
    }
}

 

//재귀함수 stack 출력위치 잘보라.

class Main {
    public static void main(String[] args) {
        String str = "abacabcd";
        boolean[] seen = new boolean[256];
        System.out.print(calculFn(str, str.length()-1, seen));
    }

    public static String calculFn(String str, int index, boolean[] seen) {
        if(index < 0) return ""; // 기저 사례
        char c = str.charAt(index);
        
        // 문자 c가 처음 등장하는 경우
        if(!seen[c]) {
            seen[c] = true; // 문자를 본 것으로 표시
            return calculFn(str, index-1, seen) + c; // 뒤에 c를 추가해줌 ->순방향출력abcd
            return c + calculFn(str, index-1, seen); //앞에 c를 추가해줌 -> 역순출력dcba
        }
        
        // 이미 본 문자라면, 다음 문자에 대해 재귀 호출
        return calculFn(str, index-1, seen);
    }
}

 

 

call by value 조심.

값을 바꾸고 싶으면, 호출할 때 주소값을 전달해줘야한다는 점.

#include <stdio.h>

void swap(int a, int b) {
    int t = a;
    a = b;
    b = t;
}

int main() {
    int a = 11;
    int b = 19;
    swap(a, b);  // swap 함수 호출

    switch(a) {
        case 1:
            b += 1;
        case 11:
            b += 2;
        default:
            b += 3;
        break;
    }

    printf("%d", a-b); //-13
}
#include <stdio.h>

void swap(int *a, int *b) {
    int t = *a;   // *a는 a의 값을 의미
    *a = *b;      // b의 값을 a에 할당
    *b = t;       // t(원래 a의 값)를 b에 할당
}

int main() {
    int a = 11;
    int b = 19;

    swap(&a, &b);  // swap 함수 호출 - 주소값을 전달

    switch(a) {
        case 1:
            b += 1;
            break;
        case 11:
            b += 2;
            break;
        default:
            b += 3;
            break;
    }

    printf("%d", a - b);  // 결과 출력 5
    return 0;
}
//하이딩
//특징 static이 들어가 있다.
//static이 있을 땐 같은 이름의 매서드여도 오버라이딩이 아니라 하이딩! 이고, 
//func1()을 각각 가지고 있는 형태가 된다.

class P{
	public static void func1(){System.out.printIn("A");}
}
class C extends P{
	public static void func1(){System.out.printIn("C");}
}

P p1 = new C(); //아버지가 날 낳은 형태.
p1.func1(); //static이 있으므로(하이딩 형태기 때문에) 부모가 가진것 출력한다. //A출력
			//static없었으면(오버라이딩이면) C출력했을 것
C p2 = new C(); //내가 나를 낳은 형태
p2.func1();	//자식이 가진 func1()인 C를 출력하게 된다.