[JAVA] NIO vs IO의 차이점
회사에서 사용하는 기술 스택 중 Webflux가 존재하는데..
회사에서 사용하는 기술 스택 중 Webflux가 존재하는데..
오류를 만났다.. 알고있던 오류였지만 이 메소드에서 발생할 수 있다는 점은 놀라웠다.
진짜 간단한 거지만 블로그에 작성해서 나쁠건 없어서 포스팅 해본다.
레디스에는 5가지의 타입이 존재한다. 한번 데이터베이스에 타입이 결정된 상태에서 해당 타입과 상관없는 명령을 수행하려고 할 때 위와 같은 에러 메세지가 출력이 된다.
설날에 스타벅스와서 블로그 작성하는 내 인생에.. 눈물이.. 아무튼..
일단, 자바에서 String은 immutable(불변)입니다. 그래서 한번 생성된 것이 수정되지 않습니다. 그렇기 때문에 자칫하면 메모리 낭비로 이어질 수 있습니다. 이를 해결하기 위해서 String Pool이라는 것을 이용합니다. (String Pool도 heap 내부에 존재합...
프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있습니다. 이럴 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.
회사에서 mssql 을 사용하고 이를 sp를 통해 호출한다.
우리가 String을 byte로 변환하는 경우가 종종 있다.
Java를 개발하다보면 String에 대해서 별다른 고민없이 (“Some text” + “ added text”)와 같이 ‘+’기호를 통해 스트링을 더하곤 한다. 하지만 Java 개발자라면 고민을 더 해보고 Class를 선택해야한다. String과 StringBuilder, 그리고...
MSSQL에서 발생한 Error 메세지들
프로젝트에서 WebContect 폴더 안 └─>WEB-INF 폴더 안 └─> lib 폴더 를 생성해준다. 기존에 존재한다면 그 폴더를 이용하자.
자바에서 String 객체를 boolean으로 변환하고 싶을 수 있다.
일반적인 프로그램이라면 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번하게 일어난다.
OutputStream
Netty
일단, 어떤 이유로 package 코드에 빨간 줄이 생겼는 지 이유를 잘 모르겠다. 나는 회사 내 프레임 워크를 SVN 을 통해 다운 받았다. 그리고 코드를 살펴보다 갑자기 빨간 줄이 도배가 되더라.
들어가며 “클린코드”를 신입인 내가 한번에 이해할 수 있을거라 생각하지 않는다. 가볍게 여러번 읽는 것을 목표로 하며, 읽으며 배운 것을 정리해 볼 예정이다.
web.xml web.xml에서 설정할 수 있는 것들, 설정하는 방법에 대해 알아보겠다. xml이기 때문에 기본적으로 태그를 사용해서 값을 설정한다.
저장소 기존에는 개발에 필요한 라이브러리를 프로그래머가 직접 다운받아 프로젝트에 추가했었다.
pom.xml 정의
로컬 저장소 이용하려는 라이브러리에 따라서 중앙 저장소에 존재하지 않는 경우가 존재한다.
메이븐 중앙 저장소도 원격 저장소의 한 종류이다.
pom.xml을 수정, 추가 한 뒤
mvn package 위 명령어를 통해 만든 jar 파일은 manifest 속성이 빠져있다면 실행이 불가능하다.
앞에서 말헀듯이 Goal은 어떤 작업을 수행할 지 지정할 수 있다. 몇몇 goal들은 이미 내장되어 있어 Maven이 알아서 작업을 수행한다.
Maven(이하 메이븐) 이란 빌드 도구이다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
문제 풀러가기
문제 풀러가기
HITS를 이용하면 정말 간단하게 방문자수를 추가할 수 있습니다. 다만, 새로고침하면 조회수가 증가하기 때문에 정확한 통계 지표로 사용하기는 어렵습니다.
위의 사진처럼 제일 상단에 빨간 색으로 표기된 탭들을 네비게이션 바(navigation bar)라고 한다. 네비게이션 바를 원하는 대로 커스텀하는 방식을 하기 위해서 하단의 블로그를 참고했다. 해당 내용에 대해서는 정리하기 보다는 참고가능한 블로그 link를 추가하겠습니다. 클릭...
⭐️ favicon
포스트 주소 변경 _config.yml에 설정된 permalink의 값을 따라간다. 아마 /:categories/:title로 되어있을 가능성이 높다.
해당 포스팅은 지속적으로 업데이트 될 수 있습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
window를 사용하다보면 batch 파일을 작업표시줄에 고정한 뒤 필요할 때마다 사용하고 싶을 수 있다.
소득 공제란? 연말 정산 정부는 세금을 걷어 1년 살림살이(예산)를 짠다. 다만 근로자 개개인의 소득이나 소비를 정확히 측정할 순 없으니 일정한 세율에 따라 임시로 세금을 매긴다(원천징수). 연말이 되면 근로자가 얼마를 벌어 어디에, 어떻게 썼느냐를 알 수 있다. 그러면 세금도 정...
해당 포스팅은 지속적으로 업데이트 될 수 있습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
일반적으로, 나는 우리가 처리하지 않고 처리에 대한 작업을 다른 서버에게 넘겨주는 것을 “프록시해준다.” 라는 문장으로 표현해왔다. 프록시에는 포워드 프록시 / 리버스 프록시 두가지가 존재한다고 한다.
Connection Timeout vs Read Timeout Connection Timeout 예 개발자인 선재는 점심시간 짧습니다. 하지만 먹는 것을 좋아해 맛집에서 먹으려고 노력을 합니다.
이클립스와 같은 IDE를 사용하기 때문에 컴파일과 빌드의 개념에 대해 잘 알지 못했다.
정의 plugin 이란 응용 프로그램에 특정 기능을 추가하는 소프트웨어 구성 요소이다.
먼저, 마크다운 언어를 설명하기 전에 마크업 언어에 대해 설명하겠습니다.
seed 128 ecb 암호화 시 마지막 블럭이 128비트로 떨어짐에도 불구하고 128비트의 블록을 추가로 붙이는 코드가 존재했고, 일부로 패딩을 추가해 블록의 크기를 맞춰서 plainText를 암호화 시켜도 원래의 크기의 128 비트가 추가 되었다.
주입받지 않은 변수를 참조하는 방법 현재 다니는 회사는 자체 프레임 워크를 사용하고 있다.
들어가며 회사에서 기존에 서버 재시작 없이 수정 사항을 반영하기 위해 자바 스크립트를 사용했다. 톰켓에 auto reload 기능은 논외로 한다. 오버헤드가 심하니 배포에서 사용하기는 무리가 있다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
계정 / 약관 관련 업무를 하다보면 다른 서비스팀으로부터 문의 및 요청이 들어온다. 이번에 복잡하게 꼬여서 데이터 추출을 하기 까다로운 경우가 생겼는데 이 때, group by를 통해 데이터를 추출할 수 있었다. group by를 통해 데이터를 추출할 때 잃어버리는 데이터가 많아 ...
ETL은 그냥 단어 자체를 풀이하자면 추출(Extract), 변환(Transform), 적재(Load)이다. 한 곳에 저장된 데이터를 필요에 의해 다른 곳으로 이동하는 것을 의미한다.
STORED PROCEDURE 확인
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
git을 작성하다 실수로 원격 저장소에 push 했을 경우 원하는 commit위치로 되돌리는 명령어에 대해 알아 보겠다.
git remote 추가 로컬 저장소에 원격 저장소에 접근하기 위해서 원격 저장소의 단축 이름을 지정해야 원격 저장소에 접근할 수 있다.
git rebase -i HEAD~[숫자] 자신이 여러번 commit 한 내용을 하나로 합치고 싶을 경우 사용한다.
만약 master에서 계속 개발하다가 이걸 master 저장하고 싶지 않고 다른 branch에 commit하고 싶을 땐, 새로운 branch를 생성한다. (혹은, master랑 같은 commit 위치 인 branch) master에서 개발한 내용들을 add한다. (옮기고 ...
우리가 만든 Bean들은 스프링 부트가 자동으로 넣어 주고 있지만, 항상 하나의 객체당 하나의 Bean만 생성되는 것도 아니기 때문에 여러가지 상황에서 스프링 부트가 어떤 우선순위로 bean을 주입해주고 있는지 알아보자.
Filter vs Interceptor vs AOP
스프링 부트가 뜰 때, h2 등을 사용하는 경우에 데이터 베이스에 대한 테이블과 그 데이터를 자동으로 삽입하고 싶을 때가 있다. 매번 /h2-console을 들어가서 삽입할 수는 없으니까! ㅎㅎ
안녕하세요. 이번 포스트에서는 logback에 대해서 구조 및 사용법을 정리해보려고 합니다. 내용에 대해서 전부를 다루는 것은 아니고, 전체 구조를 파악할 수 있을 정도로 정리해보려고 합니다.
이클립스 사용중에 콘솔창이 너무 길어져서 아래로 스크롤하기도 귀찮은데 좌우까지 하기 답답해서 찾아봤습니다.
이클립스에서 SVN 프로젝트를 다운 받고 난 뒤, 코드를 보다가 F3(Open declaration)을 클릭 하면 Problems opening an editor. Reason : [project-name] does not exist. 라는 문구가 나온다.
@Transactional에서 기본 값은 REQUIRED 이다. REQUIRED의 경우, @Transactional이 붙어있는 메소드에서 다른 @Transactional이 붙은 메소드를 호출하면 두 개의 트랜젝션은 합쳐진다. 이 경우에 호출된 메소드에서 rollback이 발생했고 ...
스프링 부트에서 트랜젝션을 읽기 전용으로 설정할 수 있다.
오늘은 Spring Data JPA 기본키 매핑하는 방법에 대해서 알아보겠습니다. JPA가 제공하는 데이터베이스 기본 키 생성 전략은 다음과 같습니다. 이때, 기본키를 할당하는 방법으로는 두가지가 있습니다.
다른 서비스, 서버랑 통신하다보면 미리 합의한 전문으로 통신하게 된다. 간혹, result code가 정의되어 있는 경우가 많은데 숫자로 result code를 반환할 경우, enum으로 정의하기 힘들다.
코틀린은 인스턴스에 대해 + 연산자를 정의해서 사용할 수 있다. 이것을 코틀린에서는 관례라고 부른다. 언어 기능을 타입에 의존하는 자바와 달리 코틀린은 함수 이름을 통해 관례에 의존한다. 함수 이름을 통한 관례를 채택한 이유는 기존 자바 클래스가 구현하는 인터페이스는 이미 고정이 ...
안녕하세요. 코틀린의 기본적인 class 정의 방식에 대해서 알아보겠습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
해당 블로그는 개인이 공부하고, 정리한 걸 기록하는 공간입니다. 오타, 오류가 존재할 수 있습니다. 댓글을 달아주시면 수정할 수 있도록 하겠습니다.
요구사항이 많은 대규모 청약 알림 스케줄러를 개발해야 했다.
긴 스터디 끝에 읽으면 좋은 내용들만 정리했습니다.
정의 스크립트 언어(scripting language)란 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리킨다.
domain의 뜻과 관련된 용어 정리, 어떤 흐름으로 도메인이 이용되는지를 정리해본다.
먼저, 쿠버네티스는 도커를 통해 개발한 서비스를 쉽게 관리하게 도와주는 어플리케이션이다. 단, 하나의 서버만 띄운다면 쿠버네티스는 필요없다. 도커만 있어도 된다. 하지만, 트래픽과 오류 등에 대한 대비의 문제로 여러 서버를 띄울 때 쿠버네티스를 사용한다.
전체적인 그림을 파악하는게 우선이라고 생각했다! 여러 곳에서 빠르게 훑고 나만의 언어로 다시 정의해본다! 왁!
안녕하세요. OAuth는 3rd가 사용자의 resource를 다른 서버로 부터 받아오기 위해서 인증을 하는 과정을 뜻하는데요! 그 인증을 하는 과정의 종류로 Grant Type이 나눠지게 됩니다.
Reactive Programming을 한 줄로 설명하면 다음과 같습니다. Reactive programming is programming with asynchronous data streams.
우리 서비스들을 모니터링 하다보면, 생각 외로 오류를 추적하기가 쉽지 않은 편이였다. requestId(traceId)를 요청 시점에 넣어주고는 있지만, webflux 환경이기 때문에 계속 변경되기 도 하고 user 식별자 또한 msg에 직접 넣는 형식으로 기록되기 때문에 식별자 ...
내가 개발을 진행했던 프로젝트 중에서 가장 버그가 많았고, 정상적으로 배포하기까지 품이 많이 들었던 작업이였던 거 같다. 사실, 정리하고 보니까 별 것 쉬운 것 같지만 오류를 만났을 때 당시는 되게 해결하기 위해 많이 검색하고 고민했었다. 동일한 실수를 하지 않기 위해서 오류를 시...