일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java Singleton
- Open Close Principal
- Sub Bytes
- Unchecked Exception
- HandlerMethodArgumentResolver
- Checked Exception
- mTLS
- 데이터 압축
- Graphql Client
- Request Body 여러 번 사용
- Reading HttpServletRequest Multiple Times
- 상호 인증
- Java Graphql
- mapstruct
- java
- Tomcat DBCP
- Socket is closed
- 이중정렬
- Jndi DataSource
- tomcat jndi
- 개방 폐쇄 원칙
- graphql
- 바이트 절삭
- NoUniqueBeanDefinitionException
- Java Rest
- requestheaderdto
- AfterMapping
- Srping MVC
- try - with - resources
- WildFly
- Today
- Total
목록Java (14)
Developer Sang Guy
문자열 생성 코드private static final char[] CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();public static String getRandomString(int length) { StringBuilder temp = new StringBuilder(length); for (int i = 0; i 효율적인 메모리 할당을 위해 StringBuilder의 초기 용량을 설정각 스레드 별로 독립적인 난수를 생성하기 위해 ThreadLocalRandom 사용 문자열 생성 결과public static void main(String[] args) { System.out..
Stram Api를 활용한 정렬, 이중 정렬, 오름차순, 내림차순 적용 방법을 알아보자 정렬에 사용할 User 클래스@Builder@Getter@ToStringpublic class User { private String name; private Integer age;} 정렬에 사용할 Sample User ListList users = Arrays.asList( User.builder().name("김씨").age(25).build(), User.builder().name("김씨").age(16).build(), User.builder().name("김씨").age(33).build(), User.builder().name("이씨").age(19).b..
MappingTarget @Getter @ToString(exclude = "orders") @Table(name = "members") @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @DynamicUpdate public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; @Enumerated(EnumType.STRING) private Gender gender; @Setter private String email; @Column(name = "phone_number..
DataBase에 문자열 데이터 저장 시 Data Type의 Length가 지정되어 있다면 Database 또는 Table에 설정된 문자 인코딩으로 전환 된 바이트 배열의 길이 만큼 저장된다. 만약에 컬럼의 Length 보다 전환 된 바이트 배열의 길이가 더 길 경우 저장할 수 없다. 영어는 한 단어가 1byte라 실수하는 경우가 거의 없지만 한글을 사용할 경우 한 단어가 1byte가 아니라 종종 실수를 한다. 한글의 경우 문자 인코딩에 따라 bytes length가 다르다. 한국에서 주로 많이 사용하는 Charset은 UTF-8 과 EUC-KR로 예를 들면 UTF-8은 한 글자당 3byte이고 EUC-KR은 2byte 이다. public String subByteToStringNoCutting(Stri..

참고 문서 https://jwt.io/introduction JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io https://auth0.com/docs/secure/tokens/json-web-tokens Auth0 Get started using Auth0. Implement authentication for any kind of application in minutes. auth0.com WIX 개발 연동하다가 JWT를 경험하게 되었다. JWT란 Json Web Token라는 이름을 가진 당사자 간에 정보를 JSON 형..

package first; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { // 상대 경로로 같은 패키지(디렉토리) 안에 있는 파일 읽어오기 BufferedReader br1 = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("text.txt"))); System.out.println(br1.readLine()); // 상대 경로로 다른 패키지(디렉토리) 안에 있는 파일 읽어오기 BufferedReader br2 = n..
SocketUtil 클래스를 생성하여 Socket 통신 테스트를 진행하였더니 "Socket is closed" 라는 에러를 만나게 되었다. 해당 에러는 소켓을 사용하려 할 때 이미 소켓이 닫혀 버린 경우 발생하는 에러이다. Socket.class public OutputStream getOutputStream() throws IOException { if (isClosed()) throw new SocketException("Socket is closed"); if (!isConnected()) throw new SocketException("Socket is not connected"); if (isOutputShutdown()) throw new SocketException("Socket output..

이미지 출처 : https://madplay.github.io/post/java-checked-unchecked-exceptions 위에 파란색으로 색칠 된 블록에 있는 Exception들은 아시는분들은 알겠지만 코딩을 할때 thy - catch 블록 또는 throws 예외를 적용하지 않으면 항상 컴파일 오류(빨간 줄)을 발생시키는 CheckExcpetion 클래스이다. 하지만 초록색으로 색칠 된 블록에 있는 Exception들은 try - catch 블록 또는 throws 예외를 적용하지 않아도 컴파일 오류를 발생시키지 않는 Unchecked Exception 클래스이다. 자바의 Unchecked Exception 클래스는 RuntimeException과 Error 이다. Error 클래스는 보통 JV..
최근에 상점 주문을 받는 API를 개발하다가 상점의 상품의 정보를 저장해야 하는 일이 생겼다. 기존에 사용하는 DB에 저장하려하는데 상품이 여러개가 올라올수 있다보니 크기가 꽤 큰 필드가 필요했다. 하지만 크기가 넉넉한 필드가 없어 고민하던 중 바이트 배열 압축을 통해 어느정도 문제를 해결 할 수 있을 것 같아 이 방법을 사용했다. 데이터 압축과 압축해제를 위해 DeflaterOutputStream와 InflaterOutputStream를 사용했다. public class DeflaterOutputStream extends FilterOutputStream 이 클래스는 "deflate"압축 형식으로 데이터를 압축하기위한 출력 스트림 필터를 구현합니다. 또한 GZIPOutputStream과 같은 다른 유형..
NonStaticInnerClass - 상위 클래스를 참조해야 생성 및 사용 가능 (숨은 참조가 생성 됨) - 외부 클래스의 자원을 사용 할 수 있음 (참조했으니까 사용 가능) - 외부 클래스를 필수적으로 참조하므로 매번 시간과 공간이 소비되며 가비지 걸렉션이 외부 클래스의 인스턴스를 수거하지 못하는 메모리 누수가 생길 수 있다. 위와 같은 사유로 외부 클래스의 자원을 사용 할 일이 없다면 무조건 static을 붙여 멤버 클래스를 만들도록 권유한다. StaticInnerClass - 상위 클래스 참조 필요없이 생성 및 사용 가능 (숨은 참조 그딴거 없음) - 외부 클래스의 자원을 사용 할 수 없음 (Static이라서 사용 못함) 내부 클래스를 가진 TestClass 1 2 3 4 5 6 7 8 9 10 ..