디자인 패턴
·
CS
디자인 패턴은 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다. 생성 패턴(Creation Pattern): 클래스나 객체의 생성과 참조 과정을 정의하는 패턴이다. 추상 팩토리(Abstract Factory)더보기 빌더(Builder)더보기 팩토리 메소드 (Factory Method)더보기 프로토타입(Prototype)더보기 싱글톤(Singleton)더보기 구조 패턴(Structural Pattern)어댑터(Adapter)더보기 브리지(Bridge)더보기 컴포지트(Composite)더보기 데코레이터(Decorater)더보기 퍼싸드(Facade)더보기 플라이웨이트(Flyweight)더보기 프록시(Proxy)더보기 행위 패턴(Behavioral Patte..
객체의 응집도 정리
·
CS
우연적 응집정의 :모듈 내의 구성 요소들이 아무런 관련 없이 단순히 하나의 모듈에 모여 있는 경우입니다. 각 기능들 사이에논리적, 기능적 연관성이 전혀 없으며, 단지 우연히 함께 모여 있을 뿐이다.특징:가장 낮은 응집도 단계예시 :하나의 유틸리티 클래스에 파일 입출력, 숫자 계산, 문자열 포맷팅 등 서로 관련 없는 기능을 모두 넣은 경우public class Miscellaneous { public void calculateSum(int a, int b) { System.out.println("Sum: " + (a + b)); } public void printMessage(String message) { System.out.println("Message:..
캡슐화 보안 약점
·
CS
잘못된 세션에 의한 정보 노출멤버 변수 - 클래스 수준에서 정의된 변수 (객체가 살아있는 동안 계속 유지)(힙 영역)지역 변수 - 메서드 안에서만 사용되고, 메서드가 끝나면 메모리에서 사라짐(스택 영역)public class UserHandler { private User currentUser; // 멤버 변수 public void handleRequest(HttpServletRequest request) { HttpSession session = request.getSession(); this.currentUser = (User) session.getAttribute("user"); }}- currentUser가 클래스의 멤버 변..
SQL 집계 함수, 그룹 함수, 윈도우 함수
·
CS
집계 함수: 데이터를 요약하거나 통계 값을 계산할 때 사용된다.함수 설명COUNT()행 수를 계산SUM()합계를 계산AVG()평균을 계산MAX()최대값을 찾음MIN()최소값을 찾음 2. 집계 함수 사용법(1) GROUP BY 없이 사용테이블 전체를 대상으로 집계 함수를 계산한다.모든 행을 하나의 그룹으로 간주하여 값을 계산한다.예시 : 전체 평균 구하기SELECT AVG(score) AS average_scoreFROM students; 학생 테이블의 모든 행을 대상으로 평균 점수를 계산한다.GROUP BY가 없기 때문에 전체 집계로 처리됨.  (2) GROUP BY와 함께 사용특정 컬럼을 기준으로 그룹별로 데이터를 나눈 후 집계한다.각 그룹마다 별도의 요약 통계를 계산할 수 있다.예시 : 학년별 평균 ..
Mysql 사용 시 조언
·
CS
사용하는 쿼리 문을 explain을 통해 검사했을 때,select_type 의 경우 WARNING에 DEPENDENT, DERIVED 가 있을 경우 유의 이는 일반 쿼리인지, 서브 쿼리인지, Union 쿼리인지를 나타낸다. type 어떤 타입의 인덱스를 참조했는가?인덱스 종류consteq_refrefrangeindex인덱스를 풀 스캔하겠다는 의미 트리 형태의 인덱스를 사용하는게 아니라 갖고 있는 모든 인덱스를 스캔하기에 성능이 안 좋다.fulltextMySQL의 전문 검색 기능 이용all모든 데이터를 풀 스캔 key 어떤 인덱스를 사용했는가 extra 쿼리를 어떤 식으로 풀었는가? Using indexFull scanimpossibleNo matchingUsing filesort파일 정렬 사용하기에 안 ..
TCP/IP 이해
·
CS
1. Connection oriented두 개 엔드포인트(로컬, 리모트) 사이에 연결을 먼저 맺고 데이터를 주고받는다. 여기서 'TCP 연결 식별자'는 두 엔드포인트의 주소를 합친 것으로, 형태이다. 2. Bidrectional byte stream양방향 데이터 통신을 하고, 바이트 스트림을 사용한다. 바이트 스트림이란?- 1바이트(8비트)씩 데이터를 전송한다.- 이진 데이터를 처리할 수 있어 이미지, 오디오, 비디오 같은 파일을 다루기 적합- 문자 집합에 의존하지 않음 : 문자가 아닌 데이터를 다룰 때 유리하다.- 입출력 스트림(InputStream, OutputStream) 계열 클래스에서 사용된다. 바이트 스트림 사용 예시- 파일 복사: 이미지 , 동영상 등 텍스트가 아닌 파일을 처리할 때 주로 ..
SameSite란?
·
CS
SameSite란 쿠키를 설정할 때, 쿠키에 부여하는 속성 값이다.SameSite의 옵션에는 None, Lax, Strict 이렇게 3가지가 존재한다. csrf 공격 시나리오유저의 쿠키가 https://blog.dokydoky.com에  대해 남아 있는 상태에서 의심스러운 사이트 url을 클릭했다고 가정하면 저 api를 쏘면 session에 쿠키가 자동으로 적용돼 요청이 날아가기에 비밀번호가 변경되버리는 불상사가 발생한다. 이 공격이 가능했던 이유첫번째, cross origin 사이에 write가 가능했다.두번째, 유저의 패스워드 변경 요청을 할 때, 브라우저가 유저의 세션 쿠키 값을 붙혀서 전송하기 때문이다. 근데 이때 블로그 서버가 유저한테 세션 쿠키를 발행할 때 , SameSite 옵션을 Stric..