본문 바로가기

전체 글

자바의 열거형 enum - 스터디 9차 이번 주제는 조금은 쉽지만, 유용하게 사용하는 열거형 enum에 대해서 알아보려고해요. 열거형은 다른 언어들과 마찬가지로 여러 상수를 관리할때 사용할 수 있어요. enum을 정의하는 방법부터 enum에 어떠한 메서드들이 제공되고 있는지 보면 좋을 것 같네요. enum은 2004년 자바 Java SE 5 부터 도입되었는데요. 이때가 어노테이션, 지네릭등 기능적으로 많이 추가되었는데, enum 클래스도 같이 추가되었다고 합니다. oracle 공식문서부터 살펴 볼게요. enum이 나오기 전에 계절을 예로 들면서 public static final로 상수값을 정의하는 enum pattern을 사용 했었다고 하면서 이 패턴에 대한 문제점으로 인해 나왔다고 서술하네요. 나름대로 풀이해보면서 정리 해볼게요. 1. .. 더보기
멀티쓰레드 프로그래밍에서 필요한 지식들 - 스터디 8차 능동적으로 동작하는 쓰레드는 무엇이 있을까요? 프로세스와 쓰레드가 무엇인지? 자바에서는 이러한 개념들을 어떻게 다루는지 이야기 해볼게요. 추가로 Executors나 Future에 대해서도 이야기 하면 좋겠네요. 1. 프로세스와 쓰레드가 무엇일까? 자바에서 쓰레드를 다루기 전에 OS 단위에서 프로세스와 쓰레드가 무엇인지 사전 지식을 알 필요가 있습니다. 저는 이전에 프로세스와 쓰레드의 차이를 브라우져의 탭을 예를 들어 이야기 했었는데요. 하나의 브라우져가 열리는 것을 프로세스라고 하면 그 브라우져안에서 자원을 공유받아 사용하는 탭이 나뉘는게 쓰레드라고 설명하면서요. 한번은 누가 "정말 아는게 맞나요? 예시말고 제대로된 지식으로 말해 주세요."라고 한적이 있었는데 부끄럽게도 제대로 이야기 하지 못했던 기억이.. 더보기
자바에서 패키지 그리고 클래스패스(CLASSPATH) - 스터디 7차 7차 패키지 그리고 클래스패스에 대해서 학습할게요. 1. 자바에서 package는 무엇을 말하는거야? 패키지는 관련 클래스 및 인터페이스 집합을 구성하는 네임스페이스라고 정의 합니다. 개념적으로 패키지는 컴퓨터의 폴더와 유사하다고 하는데, 한 폴더에는 HTML 페이지를, 다른 폴더에는 이미지를, 또 다른 폴더에는 스크립트나 응용 프로그램을 보관할 수 있다고 설명하네요. 또한 Java 프로그래밍 언어로 작성된 소프트웨어는 수백 또는 수천 개의 개별 클래스로 구성될 수 있으므로 관련 클래스와 인터페이스를 패키지에 배치하여 구성하는것이 합리적이라고 합니다. 폴더와 비슷하지만, 클래스, 하위 패키지 및 인터페이스 그룹을 비슷한 것들끼리 모아서 관리하기 쉽게 캡슐화하는 메커니즘이라고 이해하시면 좋을 것 같네요. .. 더보기
자바의 상속에 대하여 - 스터디 6차 이번 주차는 상속에 대한 학습입니다. 이전 포스트와 겹치는 부분도 있고, 연관해서 생각 할 부분이 많아서 백기선님 과제가 굉장히 체계적으로 보이네요. oracle java document 순서로 내주시는 것 같아서, 요거보고 과제를 내시나 싶기도 하구요. 제 학습방법이 제대로된 방향으로 가고있는 것 같아요. ㅎㅎ 1. 상속의 특징은? What is Inheritance? 상속은 객체지향 프로그래밍의 특징 중 하나입니다. 자바 컨셉문서를 보면, 자전거를 예를 들어서 설명하고 있네요. 현세계에서 물체는 종종 서로 일정한 공통점을 가지고 있는데요. 같은 공통점을 한데 묶어서 사용할 수 있으면 하는 생각에서 비롯된 개념이 상속인 것 같아요. 상속은 말그대로 상위 클래스의 속성, 기능을 사용할 수 있게 만드는 개.. 더보기
자바의 클래스(Class)란 무엇일까? - 스터디 5차 최근에 생소한 게임을 만드는 프로젝트를 맡게 되어 업무에 치이다보니, 일과 관련된 공부만 했었던 것 같네요. ㅎㅎ CBT가 거의 끝나가고 있어서, 개인 공부를 좀 해야겠다라는 생각이 들어요. 블로그에 새글도 쓰면 좋겠다 싶기도 하고 ㅎㅎ 그래서 가볍게 시작하면 어떨까 합니다. 개발 커뮤니티 들렸다가, 굉장히 좋아하는 백기선님이 온라인으로 진행했던 라이브 스터디를 클론하여 발표하고 공유하는 모임이 있어서, 자바를 다시 복습하면서 자바를 사용하고 느꼈던 부분을 공유하면 좋겠다 싶어서 참여 하기로 마음먹었어요. 스터디는 5주차 과제부터 15주차 까지 진행하기로 했는데 일단 필수 과제 내용을 보고 제가 알고 있는 내용 끄적여보고 찾아보면서 좀 더 깊게 정리 해볼까 합니다. 1. 클래스가 무엇이고, 어떻게 정의하.. 더보기
회사에서 Spring Boot + mongoDB 트랜잭션 도입하기 1. 왜 mongoDB에서 트랜잭션을 도입하는거야? 우선 업무에서 왜 mongoDB를 사용하고 있는지 부터 이야기 해야 할 것 같아요. 일반적인 회사에서는 관계형 데이터베이스를 사용하고 있는데, 제가 머물고 있는 곳은 규모가 작은 스타트업이고 제품이 유저의 반응, 트렌드, 새로운 아이디어를 빠르게 반영 시켜야 만 했어요. 그렇기 때문에 스키마 변경에 자유로운 nosql을 선택하게 되었습니다. 그러나 서비스가 방향을 잡아가면서 점점 복잡해지고 결정적으로 유저의 재화가 소모되는 기능이 추가되면서 트랜잭션의 ACID속성을 필요로 하게 되었습니다. MongoDB는 태생은 ACID보다 BASE 속성(Basically Available, 일관성)을 우선시하여 설계되었기 때문에 트랜잭션을 지원하지만 선택사항으로 남아.. 더보기
SpringDataJPA(스프링데이터JPA)를 뜯어보자 1. 스프링 데이터 JPA 💡 Spring Data Jpa는 SQL 쿼리를 직접 작성하는 대신 객체와 객체 간의 관계에 집중할 수 있게 돕는 기술, 덕분에 Java의 ORM 기술인 JPA (Java Persistence API)를 더 쉽고 편리하게 사용 2. 특징은 무엇? Repository 인터페이스 JPA를 추상화 시킨 인터페이스만 정의하면, Spring Data JPA가 구현체를 자동으로 생성해주는 기능을 제공, 이를 통해 CRUD (Create, Read, Update, Delete) 작업을 위한 코드 중복을 줄일 수 있움 쿼리 메소드 메소드 이름을 분석하여 SQL 쿼리를 자동으로 생성하는 기능을 제공 예를 들어, **findByName(String name)**이라는 메소드를 Repository.. 더보기
2023 카카오 제1회 tech meetup 참여 후기 5월 11일 오후 7시에 판교역 카카오 아지트에서 카카오 공개 기술 세미나가 있었는데요. 정말 운이 좋게도 100명안에 당첨이 되서 부랴부랴 퇴근하고 판교로 출발했습니다. 🙃 유익한 내용 공유하고 제가 느낀 것 들을 공유 드려볼게요. 첫 판교 아지트 방문 우와 여기가 카카오야? 처음 카카오 판교 아지트로 들어가는데 기분이 묘하더라구요. 개발자를 시작하면서 카카오는 한번쯤은 일해보고 싶은 곳이라고 생각하고 있었는데, 생각보다 빨리 초대받게 되었네요. ㅎㅎ 저녁 7시임에도 불구하고 100분이나 오셨고, 역시 개발자들이란 ~ 생각이 절로 나더라구요. 세션 내용 및 후기 ChatGPT로 바뀐 개발자의 일상 이야기 (robin.hwang, 황민호) 개인적으로 가장 인상깊게 들었던 로빈님 처음부터 PPT를 발표를 .. 더보기