Java

Java

[java] JSONTokener & JSONParser

JSONTokener org.json.JSONObject : https://mvnrepository.com/artifact/org.json/json/20230227 JSONObject jsonObj = (JSONObject) new JSONTokener(jsonStr).nextValue(); JSONParser org.json.simple.JSONObject : https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple JSONObject jsonObj = (JSONObject) new JSONParser().parse(jsonStr); JSONTokener와 JSONParser // JSONTokener를 통해 읽은 JSONObj..

Java

[Java1.7] httpClient를 통한 api통신

Java1.7환경(+ httpclient-4.5.2)에서의 httpClient를 통한 api통신 HttpClient 설정 및 가져오기 기존 httpClient 셋팅과 동일하게 설정해야해서 아래의 client빌드 시 아래의 셋팅추가 셋팅이 필요 없는 경우 HttpClients.createDefault() 를 사용하여 디폴트값으로 생성가능 RequestConfig 를 통해 타임아웃 설정 java1.7 기반에서는 별도의 설정없이는 tls1.2버전이 적용안되기 때문에 SSLConnectionSocketFactory 셋팅에 tls 추가 (tomcat 셋팅 시에도 tls버전 셋팅가능) 톰캣에서 tls 셋팅 시 : 톰캣 bin/catalina.sh 또는 각자 환경에따라 파일 및 경로는 다름아래 코드 삽입 후 리스타트..

Java

[Java] @Transactional 어노테이션 정리

트랜젝션 레벨 조정할때마다 자꾸 찾아보게 되서 정리 .. 추가로 readOnly 속성은 이번에 처음알았음 ㅇㅅㅇ,, (JPA를 사용할 경우 특히나 중요함.) Propagation 전파 레벨 속성으로 부모 자식(?) 트랜잭션간의 영향 수준을 정의하는 옵션 새로운 커넥션에 트랜잭션을 적용할지 기존 커넥션에 포함되어 트랜잭션이 적용될지 ..? // 전파 레벨 적용 예시 (REQUIRED는 디폴트값이므로 생략가능 = @Transactional만 선언한것과 같다.) @Transactional(propagation=Propagation.REQUIRED) public void transactionTest(){ // } 1. REQUIRED (default) 부모 트랜잭션이 있는 경우 부모 트랜잭션 내에서 동작하며, ..

Java

[Java] 객체지향 설계 원칙 SOLID

Clean Code라는 책을 읽으며 설계원칙에 따라 코드를 작성하는 것이 얼마나 중요한지 새삼 깨닫게 되어 객체지향 설계원칙의 근간이 되는 SOILD원칙에 대해 정리하고자 함. SOLID 유지보수와 확장이 쉬운 시스템을 설계하기 위한 객체지향 설계 원칙 이런 설계원칙을 적용하여 설계한다면 코드를 읽기 쉽게함 바라보는 관점에 따라 주관적 일 수 있다. 1. SRP(Single Responsibility Principle) - 단일 책임 원칙 - 한 클래스는 하나의 책임만 가져야 한다. 2. OCP(Open Closed Principle) - 개방 폐쇄 원칙 - 소프트웨어 요소는 확장에는 열려 있으나 수정에는 닫혀 있어야 한다. 3. LSP (Liskov substitution Principle) - 리스코..

Java

[Java] 클라이언트 IP 확인

title : "Java - IPCheck" category : "Java" tags : [Java,IP] date : 2023-01-30T12:00:00 last_modified_at: 2023-02-28T12:00:00 comment: true IP Check client의 ip체크 시 아래와 같이 체크 하였으나 최근 새로운 고객사와 연동을 하며 ip체크가 제대로 되지 않는 현상이 확인되어 로그를 확인한 결과 IP가 , 콤마로 구분하여 두개가 들어오고 있었다. String ip = request.getHeader("X-Forwarded-For"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.g..

Java

[Java] Arrays.ArrayList

title : "Java - ArrayList" category : "Java" tags : [Java, ArrayList] date : 2023-01-30T12:00:00 last_modified_at: 2023-02-28T12:00:00 comment: true Arrays.asList() Arrays의 ArrayList 와 ArrayList 는 비슷해 보이지만 다른 클래스이다. import를 먼저 확인해 보면 아래와 같다. Arrays : java.util.Arrays.ArrayList ArrayList : java.util.ArrayList Arrays.asList 메소드는 private 정적 클래스인 ArrayList를 반환 함. 따라서, 추가 삭제 등 요소 크기 변경이 불가하다.(Unsuppo..

Java

[Java] socket server & client

title : "Java - socket" category : "Java" tags : [Socket] date : 2022-12-21T12:00:00 last_modified_at: 2023-01-14T12:00:00 comment: true 기존 연동사에서 소켓통신 방식으로 변경해야한다 하여 소켓 연동 진행. Client Code @SuppressWarnings("unchecked") public static T doSocket(String ip, int port, T t) throws Exception { Socket socket = null; T result = null; try { // 1. 소켓 생성 socket = new Socket(); SocketAddress address = new I..

Java

[Java] Queue 함수

title : "DataStructure - Queue" category : "DataStructure" tags : [Java, Queue,Heap] date : 2022-07-26T12:00:00 last_modified_at: 2023-01-14T12:00:00 comment: true Queue 특징 선입선출(FIFO)형 리스트 구조 넓이우선탐색(BFS)에서 사용 Function // Define import java.util.Queue; Queue queue = new LinkedList(); func return add() 추가(Exception) offer() 추가(false) element() 조회(Exception) peek() 조회(null) remove 삭제(Exception) pol..

Bogass
'Java' 카테고리의 글 목록