![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mM8Mi/btsMceRTeD6/mwegke4y7hxW0JHKz1P7vK/img.png)
로그인 할 때 대소문자 구분 없이 로그인이 되는 사이트를 본 적이 있을 것이다. 그럴 때 마다, 사용자로 부터 받은 아이디를 모두 소문자나, 대문자로 치환하여 DB에 전달하는게 아닐까 라는 생각을 한 적이 있다.(collate가 모르는 사람이 구현을 했다면 이렇게 구현을 하지 않았을까..? 이렇게 생각 한 나처럼..) 그러나 collate를 알고 있다면 전혀 그럴 필요가 없다는 사실..! Collate란?문자 집합에 포함된 문자들을 어떻게 비교하고 정렬할지를 정의하는 콜레이션을 설정 하는 키워드- 문자열 데이터를 비교 할 때 대소문자를 구분할지 여부- 문자 간 정렬 순서를 정의- 언어별 특수 문자 처리 방식을 지원 Collate의 구조예) utf8mb4_general_ci- utf8mb4 : 문자 집합-..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/md2tq/btsL4Z1l6PA/vKEFBLtaOZrTkPcN7tECmK/img.png)
WebClient는 Spring WebFlux에서 HTTP 요청을 비동기 방식으로 처리하는 강력한 도구이다. 비동기 처리는 주로 리액티브 프로그래밍에서 사용되며, 비동기 요청을 보내고 응답을 기다리는 동안 다른 작업을 병렬로 처리할 수 있게 한다. * 동기와 비동기/ 블럭과 넌블럭 차이 이해하기https://musma.github.io/2019/04/17/blocking-and-synchronous.html 동기와 비동기, 그리고 블럭과 넌블럭무릇 모든 개발자들, 아니 비단 개발자가 아니라 할지라도 컴퓨터 관련 산업계 종사자들이라면 오다 가다 한 번씩은 꼭 들어보고, 또 익혔음직한 내용이겠습니다. 이름하야, 동기(Synchronous)와 비musma.github.io 하지만 WebClient를 사용방법..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mczSH/btsL3p075Tj/keI1yeWLX4dDKhvYHkxFjk/img.png)
프로젝트 오픈 후 모니터링 중 타사의 API 호출이 안되는 경우가 발생했다. 에러 로그도 없이 호출이 안되는 상황....뭘까..? 상황은 이랬다. 우리 시스템으로 요청이 오면 서비스단에서 DB를 확인 한 후, 해당 데이터의 종료시간이 null인 경우에만 타시스템에 요청을 보내게 되어있다.문제는 타시스템에 요청을 하고 응답을 받는 시간이 꽤 길어서 마냥 기다리기만 할 수 없다는 것이다. 따라서, 쓰레드를 생성하여 요청을 하고(응답값은 프로그램에 영향을 미치지 않고,DB에만 저장된다), 원래의 단일 쓰레드에서 종료시간을 업데이트 했다. 이게, 단순히 테스트를 할 때는 문제가 되지 않았는데..오픈 후 많은 많은 요청이 발생하니 조회와 업데이트의 순서가 보장되지 않아, 실제로 요청을 보내야 할 건들의 종료시간이..
[상황]jar 파일을 실행시키는 start.sh 파일을 생성하여 service 등록을 하였는데, 정상적으로 동작하지 않는 기능이 생겼다. >> 서비스 등록 방법은 아래 글에 있습니다!https://yes-admit.tistory.com/57 [CentOs] 서비스 등록으로 서버 재부팅시 자동으로 프로그램 실행시키기테스트 중 서버를 자주 내렸다 올렸다 하는 경우가 생겼는데 그 때마다 서비스를 새로 올려줘야해서 불편했다. 하나만 올리는거라면 그나마 괜찮겠지만 나는 2개나 올려야 해서...너무 귀찮았다yes-admit.tistory.com 환경변수의 문제였는데 해당 기능이 정상적으로 동작 하기 위한 환경변수가 특정 사용자에게만 부여가 되어있기 때문이었다. 따라서 정상 실행을 위해서는 해당 사용자로 실행을 해야..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lBahh/btsJFuhUhQ5/6GQDkIdsrLyKIkl6PKhuok/img.png)
socket 통신을 통해 STT를 붙여야 하는 경우가 생겼다. 이전에도 여러번 socket으로 데이터를 주고 받은 적이 있기 때문에, 이 정도는 아무것도 아니지ㅋ 생각했는데, 업체로부터 제대로된 연동정의서가 아닌 C# 샘플 코드를 받았다. 흠 C#은 모르는데...?다행히 샘플 코드가 어렵지 않아 Java로 포팅하면서, 제대로 했다고 생각했는데....계속 잘못된 결과를 받았다. 그치..한번에 잘 될 일이 없지..ㅎ 그치만 아무리 봐도 뭐가 잘못인지 모르겠다.. 업체에 문의해봐도, 본인들도 그 결과는 처음본다고... 네..? 나에게 도움이 되는 답변은 아니었다.그래서 수석님에게 도움을 요청하니, 코드의 문제는 아닌거 같고, 엔디안 문제 아니냐는 힌트를 주셨다. 엔디안이요? 와 완전 처음 들어보는 말..엉엉..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cMqKx5/btsJFwUiH24/kKlrMzHphrkLfaXNxpswj0/img.png)
Null의 문제점Java에서 null은 매우 오랜 시간 동안 객체가 없음을 나타내는 대표적인 방법이었다. 하지만 이 null이 시스템 전반에 걸쳐 여러 문제를 일으킬 수 있다. 1. NullPointerException (NPE)프로그램에서 객체가 null인 상태에서 그 객체에 접근하려 할 때, NPE가 발생하며 이는 개발자들이 자주 마주하는 에러 중에 하나이다.String name = null;System.out.println(name.length()); // NullPointerException 발생 2. 코드 가독성 저하null 처리를 위해 코드 전반에 if문을 사용해야하며 가독성이 떨어진다.if (user != null && user.getName() != null) { System.out..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/tZnuk/btsJAH3qlRG/q4tImwqDRKmrOqQx7wM2U0/img.png)
동일한 ID를 가진 경우 A 테이블의 NAME 컬럼 값을 B 테이블의 NAME 값으로 변경해야 하는 상황이 생겼다. 아래와 같은 경우로, A테이블에 NAME 컬럼이 추가 되어 기본값 NULL 값으로 되어있는데, B테이블에서 해당 ID의 NAME을 찾아 업데이트를 해줄 것이다.이럴 때 UPDATE JOIN을 통해서 쉽게 변경이 가능하다.UPDATE TB_A A JOIN TB_B B ON A.ID = B.ID SET A.NAME = B.NAME WHERE 조건문 근데 이렇게 그냥 바로 되었다면 난 이 블로그를 쓰지 않았을 것이다.업데이트를 하는데 이상하게 Duplicate 키 에러가 발생하였다. 테이블 A의 PK는 ID와 REGIST_DATE인데 나는 이 컬럼들을 업데이트 하지 않았다.근데 왜 중..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mlFsC/btsII1HuRqe/hBDKRdjPB9Lx1HDtORwR31/img.png)
나는 데이터베이스에 대해 아직 잘 모른다. 할 수 있는건...정말 단순 CRUD정도.. DB에 대해서 잘 몰라서 생겼던 문제점에 대해서 작성해보려고 한다. 채팅 내용을 저장하는 테이블을 설계 할 때 방 이름과 등록일을 primary key로 잡았었다.(해당 테이블은 이해를 돕기 위해 임의로 생성한 테이블이며, 실제로 사용 된 테이블이 아닙니다)CREATE TABLE `MESSAGE` ( `ROOM_ID` varchar(20) NOT NULL, `USER_ID` varchar(20) NOT NULL, `MESSAGE` varchar(100) NOT NULL, `REGIST_DATE` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (..
- Total
- Today
- Yesterday
- 자바코테
- java
- 현대코테
- 현대오토에버
- 톰캣
- 아파치카프카
- react
- Spring
- Kubernetes
- 리액트
- 자바스크립트
- 전자정부프레임워크
- java 코테
- centos
- 스프링
- tomcat
- 현대
- Linux
- 도커
- 쿠버네티스
- 오토에버코테
- softeer
- 자바
- 코딩테스트
- springboot
- Docker
- javascript
- mysql
- 코테
- softeer java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |