❗ 아마도 내가 응시했던 그 시험.....떨어졌더랬지?ㅠㅠ
다시 정리해봅시다!
[출처] : https://ss-o.tistory.com/108?category=950890
https://www.youtube.com/watch?v=W2Gy0MtWGRk
리팩토링(Refactoring)
: 코드의 외부 행위는 바뀌지 않고 내부 구조를 개선 시켜 소프트웨어 시스템을 변경하는 프로세스
- 이미 존재하는 코드의 설계를 안전하게 향상 시키는 기술.
- 리팩토링 대상 : 중복된 코드, 거대한 클래스, 긴 메소드
- 리팩토링 목적
- 소프트웨어의 디자인 개선
- 소프트웨어를 이해하기 쉽게 만들기 위해
- 버그를 빨리 찾을 수 있도록 하기 위해
- 프로그램을 빨리 작성할 수 있도록 하기 위해
#include <stdio.h>
void main(){
int c = 0;
int i = 0;
while(i < 10){
i++;
c *= i;
}
printf("%d", c);
}
i는 0~9까지 증가하지만 c는 계속 0이므로
0에 계속 곱해도 결과는 0
학생 테이블에서 이름이 민수인 튜플을 삭제하는 sql
DELETE FROM 학생 WHERE 이름 = '민수';
TCP/IP에서 신뢰성 없는 IP를 대신해 송신 측으로 네트워크의 IP 상태 및 에러 메시지를 전달해주는 프로토콜
public class Test{
public static void main(String[] args){
int i = 0;
int sum = 0;
while(i < 10){
i++;
if(i % 2 == 1)
continue;
sum += i;
}
System.out.print(sum);
}
}
i는 0~9까지 증가하고, 홀수인 경우에 continue
sum = 2+4+6+8+10
30
심리학자 톰 마릴은 컴퓨터가 메시지를 전달하고 메시지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메시지를 재전송하는 일련의 방법을 '기술적 은어'를 뜻하는 프로토콜이라는 용어로 정의했다.
EAI : 기업에서 운영되는 서로 다른 플랫폼 및 어플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션
- Message Bus
- 어플리케이션 사이 미들웨어를 두어 처리함
- 확장성이 뛰어나고 대용량 처리가 가능
- Point to Point
- 중간에 미들웨어 없이 각 어플리케이션 간 point to point 형태로 연결
- 변경 및 재사용이 어려움
- Hub & Spoke
- 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
- 확장 및 유지보수가 용이함
- Hub 장애시 전체가 영향을 받음
- 모든 데이터 전송을 보장
- Hybrid
- Hub&Spoke와 Message Bus의 혼합 방식
- 데이터 병목 현상 최소화
- 필요한 경우 한가지 방식으로 EAI 구현이 가능
[출처] : https://simsimfully.tistory.com/595
abstract class Vehicle{
String name;
abstract public String getName(String val);
public String getName(){
return "Vehicle name : " + name;
}
}
class Car extends Vehicle{
String name;
public Car(String val){
name = super.name = val;
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class Test{
public static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.printf(obj.getName());
}
}
- abstract : 추상 클래스(미완성 클래스) → 구체적인 구조는 상속 받는 하위 클래스에서 완성
- Vehicle class의 추상 메소드인 getName(String val)은 하위 클래스인 Car class의 String getName(String val)에서 재정의
① Vehicle obj = new Car("Spark");
: obj는 하위 클래스인 Car 클래스를 생성자로 둔 객체 변수이며 자료형은 상위 클래스인 Vehicle로 지정 : 오버라이딩을 위해
② Car class → public Car(String val)
: new 연산자를 통해 객체 생성시 초기화 작업을 위해 생성자 함수 실행
③ name = super.name = val;
: name = super.name = Spark 대입
④ obj.getName()
: obj 객체의 getName() 함수를 호출 → getName()은 오버로딩
(오버로딩 - 같은 이름의 함수를 여러개 정의하고 매개변수의 유형이나 개수를 다르게 하는 것.)
⑤ 호출한 getName()에는 매개변수가 없기 때문에 Vehicle→public String getName()을 호출
⑥ return "Vehicle name : " + name;
: Vehicle name : Spark
int r1(){
return 4;
}
int r10(){
return (30+r1());
}
int r100(){
return (200+r10());
}
int main(){
printf("%d", r100());
return 0;
}
r100()을 호출 → 200 + r10()을 호출 → 30 + r1()을 호출 →
200 + 3 + 4
234
동치 분할 테스트, 경계값 분석 테스트 등 내부 구조를 보지 않고 하는 테스트
산출물의 변경사항을 버전별로 관리해서 목표 시스템의 품질 향상을 지원
- 형상관리
: 소프트웨어의 개발 과정에서 발생하는 산출물의 변경사항을 버전관리 하기 위한 일련의 활동
- 절차 : 형상 식별 → 형상 통제 → 형상 감사 → 형상 기록
상단의 유튜브 출처에서 기출 해설로 확인
대표적인 내부 라우팅 프로토콜로 대규모 네트워크에 적합하고 링크 상태 라우팅 프로토콜로도 불림
- 거리벡터 알고리즘 : RIP, IGRP
- 링크상태 알고리즘 : OSPF, BGP
객체 생성시 초기화 작업을 위한 함수로, 객체를 생성할 때 반드시 호출 되고 제일 먼저 실행됨.
new 연산자를 통해 생성
데이터베이스 구조와 제약조건에 대한 명세를 기술한 것
컴퓨터 프로그래밍에서 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙
- 카멜 케이싱
- 소문자로 시작
- 단어 사이의 단락을 대문자로 표기
String camelCasing;
int count;- 파스칼 케이싱
- 대문자로 시작
- 단어 사이의 단락을 대문자로 표기
String PascalCashing;
int Count;- 스네이크 케이싱
- 소문자로 시작
- 단어 사이의 단락을 _로 표기
String snake_casing;
int count;- 헝가리안 표기법
- 이름 앞에 데이터 타입을 명시
- 데이터 타입은 정해진 약어로 표시
String strHungarianCasing;
int nCount;- GNU Namimg Conversation
- 모든 문자를 소문자로 표기
- 단락 사이를 _로 표기
String gnu_naming_conversation;
int count;- 상수 표기법(대부분의 명명법에서 상수-final 같은-를 표기하는 방법임)
- 모든 문자를 대문자로 표기
- 단락 사이를 _로 표기
String MARCO_CASING;
int COUNT;
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >= 90
누구나 쉽게 이해하고 사용할 수 있어야함
관계대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 언어
[출처] https://velog.io/@ieed0205/%EA%B4%80%EA%B3%84%EB%8C%80%EC%88%98-SQL-LEEToday
ALTER TABLE 학생 ADD 주소 VARCHAR(20);