Java

· Java/Java
thread-safe 이란?면접 단골질문? 이 있다. 바로 StringBuffer 와 StringBuilder 에 대한 질문이다 위 질문에서 아마도 면접관들이 원하는 키워드는 바로 'thread-safe' 에 대한 의견을 듣는 것일 것이다당연하게도 남들 다 아는 똑같은 역할과 동작을 시키지만 내부 메소드가 다르고, 구현 방법이 다르고~ 이런 이야기는 좋아하지 않을 것이라고 생각한다Java ConcurrentMap 에 대한 내용을 공부하닥 thread-safe 에 관한 내용이 나와 한번 정리를 해보았다.1. thread-safe 개념Thread-safe 이란 여러 스레드가 동시에 같은 리소스(객체, 변수, 데이터 구조 등)에 접근하더라도 프로그램이 의도한 대로 정확하게 동작하는 것을 의미한다일반적으로 우리..
필자는 실무에서 SpringBoot, Java, JPA 를 사용하여 개발하고 있다. 그리고 현재 멀티 모듈 기반의 스프링부트 프로젝트를 하고 있다.그리고 일반적인 Spring Layered Architecture 를 사용하고 있다.  하나 특이점이 있다면, 일반적인 멀티 모듈 구조랑은 살짝 느낌이 다르다.책임을 분리한 모듈들도 존재하지만, 예를 들면 아래와 같다.module-commonmodule-databasemodule-core 위 공통으로 사용하는 모듈들도 존재하고 아래 처럼 역할에 맞는 멀티 모듈이 존재한다.module-apimodule-paymentmodule-adminmodule-merchant 위처럼 역할에 맞는 모듈들이 존재한다.  그리고 각 모듈은 일반적으로 레이어드 아키텍쳐로 구성이 되..
· Java/Java
오늘은 Java/Spring 환경에서 사용하는 실무에서 SFTP/SSH 프로토콜을 사용하기 위해서 용하는 라이브러리 인 'Jsch' 사용법을 알아보려고 한다  위 포스팅을 목적은 내가 나중에 까먹었을 떄 위 포스팅을 보고 필요한 부분을 바로바로 복붙해 가기 위함이다.그러므로 내가 자주 썻던 메소드 및 사용예시에 대해서 만 설명해볼 예정이다.. 1. JSCH 란?http://www.jcraft.com/jsch/ 위 사이트는 공식문서 이다. 공식문서만 딱 들어가봐도 꽤나 오래되 보이는 사이트가 있고 그만큼 오래된 전통 라이브러리로 판정이 된다 2018년 6월이 마지막 업데이트로 생각보다 오래된(?) 라이브러리 이다 기술이 노후되고 관리되지 않았다고 안좋고 나쁜기술은 아니라고 생각한다 무료로 쓰는 입장에서, ..
문제 : https://www.acmicpc.net/problem/11866       요세푸스 문제를 풀기 위해서는 기본적인 '요세푸스 순열' 의 개념에 대해 알고 있어야 한다. n과 k가 자연수이고, k 출처 : https://ko.wikipedia.org/wiki/%EC%9A%94%EC%84%B8%ED%91%B8%EC%8A%A4_%EB%AC%B8%EC%A0%9C 위 개념적인 설명 후에 '(7,3) 요세푸스 순열은 {3,6,2,7,5,1,4}이며 4번째 위치한 사람이 마지막으로 제외되게 된다.'라는 예시가 나와있다. 위 예시는 백준 문제와 같다. 나는 위 예시부터 이해가 되지 않았다. 7개의 수가 있고 3번째 사람부터 제거를 한다는 것 알겠지만그건 별개로 저 순열은 왜 3,6,2,7,5,1,4 순서가..
· Spring/Boot
들어가며나는 jsch 라이브러리를 사용하여 파일을 SFTP 를 통하여 다른 서버로 전송을 해야했다.ex) prod-server -> file-server 필자는 gradle 을 사용하여 아래 의존성을 추가하여 라이브러리를 사용하였다.implementation group: 'com.jcraft', name: 'jsch', version: '0.1.55'  간단하게 내 상황에 대하여 설명을 해보자면프론트에서 User 가 파일 업로드를 여러개 하였고 그 파일들을 서버로 전송 받아서위 파일들을 SFTP 세션을 생성해 파일 서버로 보내는 작업을 하고 있었다. 위 상황에서 추가적인 요구사항이 들어왔다.User 가 파일업로드 후 서버로 파일들을 전송할 때, User 가 업로드 한 파일이 아닌다른 서버에 존재하는 파일..
· Java/Java
들어가며위 Jackson 라이브러리는 Spring 에서 객체를 직렬화, 역직렬화 할 때 필수 라이브러리이다.위 라이브러리를 사용 안하는 백엔드 개발자는 없을 것? 이라고 생각한다. 회사 코드를 보다가 자주 보이는 것이지만, 매번 검색하는 번거로움을 줄이기 위해 정리를 해놓으려고 한다. https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind Jackson 라이브러리를 사용하기 위해선 위 URL 에 접속해서 gradle or Maven 본인이 사용하는빌드 도구 코드를 따서 의존성 주입을 시키면 된다. Gradle// https://mvnrepository.com/artifact/com.fasterxml.jackson.cor..
· Java/Java
들어가며가끔 JDK API 에 내부 구현이 궁금해 내부 구현을 파고들다 보면 몇몇의 상위 객체는implements Serializable 을 구현 하고 있는 것을 본적이 있을 것 입니다. 평소에는 그냥 이런게 있구나 하고 가볍게 넘기곤했다.그러다 JPA 관련 문서를 보다가, JPA 공식 문서에 Entity 의 기본 구현은 Serializable 을 구현하는 것이라는 것을 봤다. 하지만 저는 Entity 를 구성하면서 한번도 Serializable  을 구현한적이 없었죠. 그래서 궁금했습니다. 이게 뭐길래 다양한 객체 내부구현을 타고가다 보면 최상위에 있는지 왜? 이걸 구현하는지가 궁금했다. 그래서 한번 공부를 해봤다. 1. 직렬화, 역직렬화직렬화는 간단하게 설명해 객체를 외부의 자바 시스템에서도 사용할 ..
· Java/OOP
서론문득 Java 공부를 하면서 abstract 로 선언된 클래스랑 interface 를 알게되었습니다.둘이 하는 역할이 비슷한데 왜 하나로 통합하지 않고 각각을 사용할까? 라는 고민이 들었습니다. 그래서 역시나 생각할 시간에 직접 만들어서 내가 비교를 해보면 개념을 파악하는데도움이 될 걸 알기 때문에 직접 해보고 공부한 내용을 바탕으로 글을 써 봤습니다.(부족한 내용은 내 개발 인생 동반자인 자바의정석 과 ChatGPT 를 참고 했습니다) 본론객제치향 관점에서 abstract 와 interface 는 추상화 라는 개념을 사용하는 도구로 쓰입니다. 위 '추상화' 를 통해 컴파일 시점 의존성과 런타임 시점 의존성이 달라지는걸 볼 수있죠.위 방법을 '동적 바인딩' 이라고 합니다. 이제 abstract 랑 i..
hyeonkyu
'Java' 태그의 글 목록