Java Reflection API란? 컴파일한 클래스 정보를 활용해 동적으로 프로그래밍이 가능하도록 지원하는 API 리플렉션이란 런타임 상황에서 메모리에 올라간 클래스 정보를 찾아 상태값 혹은 메서드를 실행하는 등 조작하는 행위 프레임워크에서 유연한 동작을 위해 자주 사용. 리플렉션 사용이유 @Autowired, @Resource 같이 의존성을 주입하는 어노테이션에서 사용 Spring이 DI를 해줄 때의 장점으로 이어진다고 생각 합니다. 즉, 의존성을 낮춰 유연한 코드를 만들어 준다고 생각합니다. Spring에서 Bean을 IoC Container에서 생성하고 등록할 때 Bean으로 등록할 클래스를 찾기 위해 Method Area에서 어노테이션이 붙은 클래스를 찾아 생성하고 등록한다. Java Refl..
JDBC API 기능을 사용하면서 나오는 중복된 코드가 발생합니다. 해당 기능은 유지면서 중복된 코드를 없애고자 디자인 패턴 중 하나인 템플릿 콜백 패턴을 적용해 보았습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public class UserDao { ... public void update(User user) throws SQLException { Connection con = null; PreparedStatement pstmt = null; try { con = ConnectionManager.getConnection(); String sql = "UPDATE users SET pass..
프로세스 vs 스레드 사전적 의미 프로세스 : 컴퓨터에서 연속적으로 실행 되고 있는 컴퓨터 프로그램 컴퓨터 프로그램 : 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음 스레드 : 프로세스 내에서 실행되는 흐름의 단위 구조 및 특징 프로세스 구조 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당 받는다. 기본적으로 프로세스당 최소 1개의 스레드(main thread)를 가진다. 각 프로세스는 독립적이며 다른 프로세스의 자원에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다. 스레드 구조 스레드는 프로세스내에서 Code, Data, Heap영역을 공유하고 Stack은 고유의 영역으로 ..
두 기술 모두 HTTP에서 Connectionless 와 Stateless 한계를 해결 하기 위한 기술이다. Connectionless(비연결성) : HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다. Stateless (상태유지안함) : 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다. \ COOKIE SESSION 사용사례 장바구니, 오늘 더 이상 창을 보지 않음 로그인 정보 유지 저장위치 클라이언트 서버 보안 위험 상대적으로 안전 라이프 사이클 만료기간 까지 만료기간 까지 or 기본적으로 브라우저를 끄면 만료 단점 클라이언트의 상태정보를 노출될 위험이 있다. 서버..
https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, www.acmicpc.net 백준 알고리즘 문제를 풀다가 replace 와 replaceAll이 원하는 문자열을 모두 바꿔 주는데 무슨 차이가 있는지 궁금해..
get vs post get 방식 post 방식 데이터를 조회 서버의 값이나 상태를 조작 url방식으로 정보를 보낸다 http body부에 정보를 담아 보낸다 길이 제한이 있다 get 방식보다 길이 제한에 자유롭다 Idempotent1 Non-Idempotent 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다. 캐싱2 할 수 있다. ( post방식보다 속도가 빠르다. ) 캐싱 할 수 없다.( get방식보다 느리다. ) post 특징 post는 데이터를 전송합니다. post는 get방식 보다 보안이 안전한거지 꼭 안전 하다고는 볼 수 없다. 네트워크 패킷 분석 툴로 알 수 있기 때문이다. 메시지 데이터를 ..
BufferedReader는 데이터를 읽지 만 스캐너는 데이터도 구문 분석합니다.BufferedReader를 사용하는 경우에만 String을 읽을 수 있지만 Scanner를 사용하여 int, long 또는 float을 읽을 수 있습니다.Scanner가 JDK 5 릴리스에 추가 된 동안 BufferedReader는 Scanner의 이전 버전이었고, jdk 1.1부터 존재합니다.BufferedReader의 버퍼 크기는 1KB의 Scanner와 비교할 때 커집니다 (8KB).Scanner는 명령 프롬프트에서 작은 사용자 입력을 읽는 데 더 적합하지만 BufferedReader는 긴 문자열로 파일을 읽는 데 더 적합합니다.BufferedReader는 동기화되었지만 Scanner가 아니므로 여러 스레드간에 Sca..
package baekjoon.find.rule.q1475; import org.junit.Test; import java.util.Arrays; public class MainTest { @Test public void mapTest() { String[] arr = {"a","b","c"}; String arr2 = "d"; callFunc(arr); callFunc(arr2); } // 가변 인자는 타입은 지정해주고 개수는 가변적으로 받을 수 있다. // (가변인자는 배열처럼 직접 출력하면 주소를 출력한다.) private void callFunc(String... o) { System.out.println(o); System.out.println("---------------------------..