본문 바로가기

전체 글

웹브라우저 공격 XSS(클라이언트 공격) 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면 사이트에 접속한 사용자가 삽입된 코드를 실행시키게 되고, 보통 의도치 않은 행동을 수행시키거나, 쿠키나 세션 토큰등을 탈취한다. CSRF(서버 공격) 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하여 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격이다. SQLInjection 악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL문을 전송하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 더보기
List 원소 변경 List 원소 변경:List.set(int index,Object element) List list = new ArrayList(); for(int i=0; i 더보기
인터페이스와 추상클래스의 차이점 인터페이스 인터페이스는 추상 클래스보다 추상화 정도가 높으며 추상 클래스와는 다르게 구현부가 있는 일반 메서드, 일반 멤버 변수를 가질 수 없다는 특징이 있습니다. 추상 클래스 class 앞에 'abstract' 키워드를 사용하여 정의하며, 하나 이상의 추상 메서드를 가지는 클래스를 말합니다. 추상 메서드를 선언하여 상속을 통해서 하위 클래스에서 구현하도록 강제하는 클래스입니다. 차이점 추상 클래스는 extends키워드를 사용하며 다중상속이 불가능하지만 인터페이스는 implements키워드를 사용하며 다중상속이 가능하다. 추상클래스는 일반 변수, 생성자, 일반 메서드, 추상 메서드를 모두 가질 수 있는 반면 인터페이스는 상수와 추상 메서드만 가질 수 있고, 생성자와 일반 변수는 가질 수 없습니다. 더보기
list.indexOf() list.indexOf(Object o), list.lastIndexOf(Object o) for(int i=0; i 더보기
Dispatcher Servlet의 동작 원리 Dispatcher Servlet의 동작 원리 Spring MVC 패턴에서 기본적으로 사용하는 Servlet으로, 클라이언트의 요청이 있을 시 가장 앞단에서 요청을 가로채어 요청에 매핑되는 Controller에 작업을 전달하고 비즈니스 로직 처리 후 해당 결과 View를 클라이언트에 전달하는 역할 더보기
Array와 LinkedList 차이,Call By value와 Call By Reference 차이 배열과 링크드 리스트의 차이 배열 데이터 입력이 순차적으로 이루어지며, 물리적 주소 또한 순차적이다. 인덱스가 있어 원하는 데이터에 한 번에 접근 가능하기 때문에 데이터 접근 속도가 매우 빠르다. 데이터 삽입, 삭제에 취약하다.배열 특성상 데이터 삽입, 삭제가 이루어지면 해당 위치의 다음 순서의 데이터의 위치 변경이 이루어지기 때문이다. 배열의 크기가 처음에 결정되어서(unresizable) 변경이 불가능하다. 링크드 리스트 인덱스를 가지고 있는 배열과는 다르게 리스트는 인덱스 대신 현재 위치의 이전 및 다음 위치에 대한 정보가 있다. 데이터 접근 시 연결되어 있는 링크를 따라가야 하기 때문에 배열에 비해 속도가 떨어진다. 데이터 삽입, 삭제는 논리적 주소만 바꿔주면 되기 때문에 용이하다. 언제든지 메모.. 더보기
2차원배열 정렬 및 중복계산제거로 인한 알고리즘 실행시간 줄이기 2차원 배열 정렬 (1) Comparator 클래스 구현 Arrays.sort(scope, new Comparator() { @Override public int compare(int[] o1, int[] o2) { return o1[0]-o2[0]; // 첫번쨰 숫자 기준 오름차순 //return o2[0]-o1[0]; // 첫번째 숫자 기준 내림차순 //return o1[1]-o2[1]; // 두번째 숫자 기준 오름차순 { //return o2[1]-o1[1]; // 두번째 숫자 기준 내림차순 } }); (2) 람다 사용 Arrays.sort(scope,(o1, o2) ->o1[0]-o2[0]); (3) Comparator.comparing() 사용 Arrays.sort(scope, Comparato.. 더보기
String,StringBuillder,StringBuffer String 불변(immutable)하는 특징 할당된 메모리 공간이 변하지 않는다. concat이나 + 연산자를 통해 다른 문자열을 붙일 경우 기존 문자열에 새로운 문자열을 붙이는 것이 아니라 새로운 String 객체를 만든 후 새 String 객체에 연결된 문자열을 저장하고 그 객체를 참조하도록 한다. 짧은 문자열을 더할 경우 문자열 연산이 적고 멀티스레드 환경일 경우 StringBuffer 변함(Mubtable)하는 특징 문자열 연산으로 기존 객체의 공간이 부족하게 되는 경우 버프크기를 늘리며 유연하게 동작한다. 스레드에 안전한 프로그램이 필요할 때나, 개발 중인 시스템의 부분이 스레드에 안전한지 모를 경우 문자열 연산이 많고 멀티스레드 환경일 경우 StringBuilder 스레드에 안전한지 여부가 .. 더보기