목록java (78)
코딩마을방범대

Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 Redis - (4) Java에서 Redis 사용하기(Jedis) Redis - (5) Java에서 Redis 사용하기(Lettuce) 5에서는 RedisTemplate를 통해 직접 Redis에 접근했다면 이번엔 RedisTemplate를 통해 RedisRepository에서 접근해서 사용하는 방식이다. build.gradle implementation('org.springframework.boot:spring-boot-starter-data-redis') application.yml !! 트랜잭션을 사용하지 않는 경우 pool 옵션은 줄 필요 없음 !! spring: redis: # 레디스 서버 주소 (local일 ..
Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 Redis - (4) Java에서 Redis 사용하기(Jedis) Jedis보단 Lettuce가 선호되는 추세이니 Lettuce를 사용하도록 하자! 다만 Jedis보다 사용이 조금 어렵다는 단점이 있다. 레터스는 레디스 서버와 단일 커넥션으로 멀티 스레드 요청에 대해 처리가 가능하다. ( 내부적으로 논-블럭킹 + 비동기로 구현되어 있으며 스레드 세이프하다. ) 레디스 서버가 어차피 싱글 스레드 기반이기 때문에 어차피 다중 커넥션이 단일 커넥션에 비해 성능상 이점이 있는 것도 아니다. 따라서 레터스를 사용한다면 굳이 커넥션 풀을 만들지 않고 단일 커넥션을 공유하도록 하는 것이 좋다. 그럼에도 불구하고 커넥션을 공유하면 ..
Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 Java 의 Redis Client 는 크게 두 가지가 있다. 원래 Jedis 를 많이 사용했으나 여러 가지 단점 (멀티 쓰레드 불안정, Pool 한계 등등..) 과 Lettuce 의 장점 (Netty 기반이라 비동기 지원 가능) 때문에 Lettuce 로 추세가 넘어가고 있었으며, 그러다 결국 Spring Boot 2.0 부터 Jedis 가 기본 클라이언트에서 deprecated 되고 Lettuce 가 탑재되었다. build.gradle Jedis 의존성을 추가해준다 dependencies { ... // https://mvnrepository.com/artifact/redis.clients/jedis implemen..

Redis - (1) 기본 개념 Redis - (2) 우분투 서버에 Redis 세팅하기 레디스 CLI 접근(내부접속, 외부접속) 내부접속은 레디스가 설치된 서버에서 직접 접속하는 방법 apt로 redis-server 를 설치하면서 CLI 관련 패키지도 함께 설치 되기 때문에 접근이 쉬움 $ redis-cli 외부접속은 접속하고자 하는 레디스 서버 및 프로세스 포트에 대한 추가적인 입력이 필요 # 외부접속(비밀번호 X) $ redis-cli -h [접근 서버 IP] -p [레디스 실행 프로세스 포트] # 외부접속(비밀번호 O) $ redis-cli -h [접근 서버 IP] -p [레디스 실행 프로세스 포트] -a [비밀번호] 데이터 조회 키(Key) 확인 방법 모든 키(Key) 리스트 출력 > keys *..

1. 톰캣 서버에 배포를 위해 war 파일을 생성하였으나 수동으로 생성하여 실행하니 Error: Invalid or corrupt jarfile 파일명.war 라는 오류가 발생함 2. war 프로젝트로 생성 시 자동으로 생성되는 SNAPSHOT을 수동 Exploded에 추가해서 생성해보니 아래와 같은 오류 발생 > java -jar test.war war에 기본 Manifest 속성이 없습니다. 이 때 부터 뭔가 가능할 것 같아서 찾아보았더니 실행가능한 war 파일이 빌드 시 자동 생성된다는 것이였다! ( 물론 war 프로젝트거나 build.gradle을 설정했을 경우에만 ) 프로젝트 생성 시 war 프로젝트로 생성하지 않았어도 아래와 같이 build.gradle을 설정하고 Add Frameworks S..

포스트맨에서 AES 암호화한 값을 변수로 쓰고 싶을 경우 어쩔 수 없이 포스트맨에서 제공하는 javaScript로 추출할 수 밖에 없다! 나의 경우 자바의 AES256 암호화값을 포스트맨에서 그대로 변수로 사용해야 하는데, 물론 API를 통해 response 값을 받을 수 있지만 코드를 수정하지 않는 선에서 해결해야 했다 아래는 자바에서의 AES256 암호화 내용이다 public static String encrypt(String str, String seckey) throws IOException, GeneralSecurityException { byte[] keyData = seckey.substring(0, 32).getBytes(); String IV = seckey.substring(0, 16)..
key값을 넘겨주는 일이 있었으나 내가 보기엔 값이 같아보이는데 자꾸 equals false가 떠서 수작업으로 찾아보았더니 request로 넘겨주는 값의 공백이 vo객체엔 +로 대체되어 있었다 포스트맨으로 아래와 같이 replace로 공백을 +로 대체하려 하였으나 그래도 공백이 그대로 출력되는 상황이였다 var jsonData = JSON.parse(responseBody); var channelKey = jsonData.data.channelKey.replace(" ", "+"); if (jsonData) { pm.environment.set("Channel-Key",channelKey); } 찾아보니 Spring 컨트롤러에서 GET은 +를 공백으로 대체하여 받아온다고 한다! + 외에도 ! * ' ( ..

run 으로 프로젝트 실행 시 정상적으로 실행되어 API 등 호출이 가능했지만 debug로 돌리자 아래와 같은 에러가 발생했다 Method breakpoints may dramatically slow down debugging 위처럼 그냥 간단한 경고문처럼 뜨길래 실행에는 지장이 없는 줄 알았으나 검색해보니 저게 문제였다! ctrl + shift + F8 을 누르면 아래와 같은 창이 뜨는데 여기서 'Java Method Breakpoints' 를 체크해제 하면 된다 테스트 할 때 북마크가 아닌 왼쪽 공란을 눌러 빨간색으로 표시했었는데 이게 디버그 때 breakpoint로 잡히는지 처음 알았다 앞으로 F11로 북마크 이용하기!