profile
Software Engineer + Product Manager
태그 목록
전체보기 (324)개발일기(78)토비의 스프링(26)더 나은 코드(23)테스트(20)Netty(19)Java(18)더 나은 테스트(15)How to work(13)생각(12)trouble shooting(11)코딩테스트(10)트러블슈팅(10)프로그래머스(10)회고(9)커뮤니케이션(8)더 나은 설계(8)tcp(8)토비의스프링(8)git(7)프로덕트 오너(7)C(6)(6)우주지상국(6)network programming(6)agile(6)더 나은 도구(5)2021(5)aop(5)dll(5)TDD(5)자세(5)비동기(5)junit(5)읽기모임(5)알고리즘(5)asynchronous(5)고민(5)매니지먼트(4)IntelliJ(4)배움(4)네트워크 프로그래밍(4)커리어(4)추상화(4)코드리뷰(4)JNA(4)wireshark(4)windows(4)독서(4)문제(4)Spring(4)github(4)인프콘(4)오브젝트(3)debug(3)의존관계(3)관계(3)multithreading(3)협력(3)객체지향(3)학습(3)습관(3)awaitility(3)test(3)데이터(3)예외(3)프로젝트 매니저(3)문제해결연습(3)Software Engineering(3)Telnet(3)협업(3)실시간(3)네트워크 패킷분석(3)2022(3)연역적(3)사람(3)mock(2)management(2)개방폐쇄원칙(2)주석(2)분석(2)배포(2)실용주의 프로그래머(2)변경(2)networking(2)태도(2)clean architecture(2)http(2)클린 아키텍처(2)Software Enginerring(2)소프트웨어 개발자(2)컨퍼런스(2)test case(2)귀납적(2)jackson(2)제품(2)가치(2)사용자(2)기획(2)문제 해결 연습(2)리팩토링(2)User Manual(2)온보딩(2)목표(2)TROUBLESHOOTING(2)코드로 문제해결 연습(2)개발문화(2)리더(2)Mockito(2)문서화(2)(2)마인드(2)더 나은 디자인(2)leak(2)cherry-pick(2)디버깅(2)collaboration(2)ci(2)stream(2)Locale(2)함께자라기(2)대역(1)동료(1)조직(1)아주힘듬(1)SOLID(1)network(1)branch(1)XML(1)네이밍(1)EventLoop(1)삶의자세(1)흥미(1)병렬(1)모델링(1)CI/CD(1)Manangement(1)Transction(1)switch(1)고통(1)Nginx(1)json(1)주니어(1)자유(1)더나은코드(1)철학(1)환경(1)1553B(1)프로그래밍(1)redmine(1)impact(1)우주(1)행복(1)메시지큐(1)String(1)동반자(1)인터뷰(1)부모참여수업(1)감정(1)복잡성(1)클린코드(1)Ideation(1)di(1)커밋(1)putty(1)JIRA(1)어린이(1)성과(1)화면중심(1)경계값(1)도구(1)short circuit(1)clean software(1)누수(1)예외처리(1)Native(1)더 나은 개발(1)SDLC(1)발표(1)제약사항(1)마음 가짐(1)중복(1)제안서(1)notion(1)생각의프레임(1)회사(1)개발자(1)memory(1)Reflection(1)교보문고(1)사업(1)창업(1)도전(1)split()(1)멀티쓰레드(1)Csharp(1)Messaging Service(1)함께(1)의존(1)svn(1)프로젝트(1)Product Design(1)유틸리티(1)help(1)Strategy Pattern(1)예측(1)aws(1)Feedback(1)작업난이도(1)snmp4j(1)어설프다(1)이슈관리(1)lazy(1)템플릿/콜백(1)kotlin(1)데이터 통신(1)핀란드(1)동등분할(1)준비(1)약함(1)장애회고(1)volatile(1)삶의일기(1)아두이노(1)디자인 패턴(1)신뢰성(1)크리스찬(1)User Journey(1)코딩(1)lua script(1)관심(1)테스트케이스(1)alignment(1)생존(1)heap memory(1)노이즈캔슬링(1)기록(1)PSA(1)MVP(1)인사이트(1)독서메모(1)InvalidMemoryAccess(1)일기(1)algorithm(1)aspect(1)메타포(1)템플릿(1)스프링(1)DTO(1)exception(1)트러불슈팅(1)설계(1)authentication(1)cdd(1)부족함(1)코드변경관리(1)다름(1)세미나(1)변화(1)Persona(1)문서(1)자동화(1)메모리(1)프로세스(1)캐시일관성(1)인증(1)SNMP(1)비실시간(1)객체지향의사실과오해(1)커뮤니티(1)StringUtils(1)Pain Point(1)figma(1)비정상종료(1)우선순위(1)캐시불일치(1)warning(1)IoC(1)assembly(1)projects(1)집중(1)문제정의(1)actions(1)SI 프로젝트(1)신뢰(1)문화(1)rebase(1)죽음(1)빌더 패턴(1)리드잇(1)백로그(1)Thread(1)Product Designer(1)S3(1)Pull Request(1)garbage collector(1)아쉬움(1)ObjectMapper(1)iteration(1)VxWorks(1)문제해결(1)(1)PacketSender(1)개선(1)주간보고(1)불편(1)시니어개발자(1)데이터 엔지니어(1)코드작성외에(1)Memory Leak(1)응집도(1)software engineer(1)Pair Programming(1)힙 메모리(1)TCP Connection Persistence(1)균형(1)아이들(1)고객(1)성경(1)Device Driver(1)Thread Pool(1)OXM(1)지상국(1)실험(1)면접(1)사표(1)동료주도개발(1)소수점(1)프로토타입(1)메모리가시성(1)Interrupt(1)요구사항(1)공유(1)어려움(1)Q&A(1)util(1)Functional(1)사용자중심(1)ux(1)Copilot(1)가짜필요(1)결합도(1)
post-thumbnail

(테스트 코드와 함께) Java Thread Pool 동작 원리

몇 년 전까지만 해도 직접 쓰레드를 생성하고 해제 해야하는 책임을 가지는 플랫폼에서 주로 개발을 했습니다. 자바 언어로 넘어오면서 쓰레드 풀이라는 개념을 접하게 되었는데, 처음 쓰레드 풀을 접하고 사용 상의 문제는 없었지만 내부 동작을 모르니 어딘지 모르게 찝찝한 부분

2023년 3월 13일
·
0개의 댓글
·

Java Stream: 좋은 설계 표본

변하지 않는 것과 변하는 것 그리고 함께 변하는 것과 따로 변하는 것을 구분한 좋은 표본

2023년 3월 9일
·
0개의 댓글
·

Lazy Java Stream

Java Stream을 사용해 이렇게 작성된 코드를 보며 의문점이 생겼습니다. 제 생각에는 코드가 다음과 같이 동작할 것 같았습니다.filter 연산에서 스트림의 모든 항목을 순회하며 3보다 작은 항목을 추출한다. findFirst 연산에서 추출된 항목 중 첫 번째 항

2023년 3월 9일
·
0개의 댓글
·
post-thumbnail

쓰레드 누수 이슈: 문제의 원인을 찾는 귀납적 과정

Java, Netty 기반 서비스에서 발생한 쓰레드 누수 이슈를 밑바닥에 있는 로그에서 시작해서 진짜 원인을 찾아서 해결한 귀납적 과정을 기록하며 객관화해 보았습니다.

2023년 2월 21일
·
0개의 댓글
·
post-thumbnail

다 쓴 객체 참조에 항상 null 값을 할당해야 하나요?

어제 팀에서 작성된 코드 중에 이런 패턴의 코드가 있어서 Effective Java 책의 내용(아이템 7 다 쓴 객체 참조를 해제하라)을 살펴보았습니다.결론은 ‘다 쓴 객체 참조를 프로그래머가 항상 명시적으로 해제(null 처리)할 필요는 없다’ 입니다. 아래는 관련된

2023년 1월 12일
·
0개의 댓글
·

개발일기 #87 : Java Reflection의 유용함

어떤 제약으로 클래스에 some1, some2, some3 처럼 List 없이 쭉 펼쳐진 멤버들이 있었는데 루프를 돌 수 없어 괴로웠다. 현업에서 Reflection을 제대로 사용해 본적이 없었는데 getMethod("some"+index).invoke(...)와 같이

2023년 1월 5일
·
0개의 댓글
·

개발일기 #74 : 접근제어

계속 C언어에 익숙한 개발자와 대화를 나눈다. ‘아! 이런 사고를 하시는구나’를 이해하는 신선함이 있는 것 같다. 대화를 하다보니 C언어에서는 함수를 정의하면 곧바로 코드 어디에서든 호출이 가능한데 Java에서는 클래스 내에 함수를 정의했다고 곧바로 호출할 수 있는게

2022년 11월 23일
·
0개의 댓글
·

C# 코드에서 Java 코드로 DTO(Data Transfer Object) 반환하기

이전 글에서 Java 코드에서 JNA(Java Native Access)를 활용해 C먼저 C해당 상태 값을 획득하여 반환하는 함수입니다. 최종적으로 DLL에서 Export 되는 합수입니다.Java에서 DTO를 정의합니다. C이제 DLL을 로드하고, 연결된 DLL 함수

2022년 11월 10일
·
0개의 댓글
·

JNA | Invalid memory access 오류

Java 프로젝트에서 JNA(Java Native Access)를 활용하여 CJava 코드에서 문제가 발생했으면 호출 스택을 통해서 어느 파일, 어느 코드에서 문제가 발생했는지 쉽게 찾을 수 있었겠지만 라이브러리로 로드한 C어느 코드에서 죽는다는 것은 알았지만 왜 해당

2022년 11월 7일
·
0개의 댓글
·
post-thumbnail

Java 코드로 C# dll 호출하기 (JNA 활용)

특정 외부 시스템을 제어할 일이 생겼는데 C++/CVisual Studio에서 Class Library (.NET Framework) 템플릿 프로젝트를 생성하고 DLL 파일을 생성합니다. File > New > Project 메뉴를 선택합니다.‘Create a new

2022년 11월 1일
·
0개의 댓글
·
post-thumbnail

IntelliJ + Java 불필요한 경고 비활성화 하기

테스트 코드를 작성하다 재활용 될 수 있는 코드가 보여서 별도의 메서드로 분리했다. 단순하게 두 개의 시간을 비교하는 메서드인데 어느 정도 차이(밀리초)가 나도 같은 시간으로 판단하는 epsilonMillis 라는 파라미터를 입력 받는다. 그런데 커밋을 하려고 하니 I

2022년 10월 12일
·
0개의 댓글
·

개발일기 #9 : 고객이 JAVA 코드를 까볼 수 없도록

JAVA로 작성한 서비스 실행을 서버에 따라 제한하는 기능을 C++ DLL로 작성하고 JNA로 호출하도록 바꾸어 보았다. jar 파일을 고객에게 전달하면 소스를 까볼 수 있으니 아무래도 취약한 것 같아서다. 처음에 JAVA 코드에서 JNA로 DLL 로드가 실패해서 찾아

2022년 8월 12일
·
0개의 댓글
·

JAVA | 깔끔한 느낌의 새로운 Switch

새로운 Switch-case 문과 If-else 문 간단 비교

2022년 4월 20일
·
0개의 댓글
·
post-thumbnail

Netty | 반복된 연결 실패와 java.lang.OutOfMemoryError 문제

AWS EC2 인스턴스 (1G 메모리) 에 올린 통신 서버(Netty 기반)에서 java.lang.OutOfMemoryError 예외가 발생합니다.

2022년 4월 15일
·
0개의 댓글
·

Jackson | boolean 타입의 isA 멤버의 직렬화 문제

Java 프로젝트에서 boolean 타입의 isUp 이라는 객체 멤버가 Jackson 라이브러리를 통해 JSON 문자열로 직렬화되면 필드 이름이 up 로 바뀌는 문제가 발생합니다.

2022년 4월 5일
·
2개의 댓글
·

JAVA | 객체 생성자를 함수 인터페이스로 다루기

JAVA 에서 생성자를 함수 인터페이스로 다루는 방법을 찾아보았다.

2022년 3월 21일
·
0개의 댓글
·

String.split() 대신 StringUtils.split() 사용하여 Leading Empty String 제거하기

String.split() 을 사용하면 Leading Empty String 이 생겨요.

2022년 3월 11일
·
0개의 댓글
·

Netty | Simple TCP Server - Client

Netty 프레임워크를 활용해 TCP 서버, 클라이언트를 구성하고 간단한 메시지를 교환하는 테스트 코드를 작성합니다.

2022년 2월 1일
·
0개의 댓글
·