안녕하세요✋오늘은 Java 에서 제네릭 에대해 알아보겠습니다. 제가 간단하게 알았던 제네릭 타입은 그냥List list = new ArrayList();List linkedList = new LinkedList(); 안에 들어가는 타입을 미리 결정하는게 제네릭 타입 이구나 정도로 알고 있었습니다. 그러다가 저 리스트에 String이 아닌 객체가 들어올수도 있고, Integer, Double 등 다른값이 들어올수도 있는 상황을 생각해 봤습니다. 즉 나중에 저 List 안에 String 도 들어갈수도 있고, Integer 도 들어갈 수 있는즉, 재사용성이 가능한 코드를 어떻게 하면 만들 수 있을까?라는 고민을 해봤고, 그에 대한 해답은 바로 제네릭 을 잘 이해하고 사용하자 였습니다. 고민 1)어떠한 타입..
안녕하세요 오늘은 RabbitMQ 를 Docker에 깔아보겠습니다. 왜 RabbitMQ 를 사용하게 되었냐면, 강의를 들으면 공부를 하던 중 동기 통신이 아닌, 비동기 통신을 해야 하는 상황이 있었습니다. 그래서 비동기 통신을 하기 위해 메세지 큐를 사용해야 했고, 메세지 큐 중 하나인 오픈소스인 RabbitMQ 를 사용했습니다. 설정에 대해 알아보기 전에 간단하게 RabbitMQ 에 대하여 알아보겠습니다. 비동기 처리를 위한 메세지 큐에는 어떤 것이 있을까요? RabbitMQ 메시지 브로커는 송신자와 수신자 간의 효율적인 메시지 전달을 중개하는 역할을 담당 합니다. AMQP 를 기반으로 작동하며, 대규모 분산 시스템에서 사용되는 메시지 큐 서비스를 제공한다. 프로듀서(메세지 생성) 와 컨슈머(메세지 소..
안녕하세요 오늘은 String 객체에 대한 이야기를 해보겠습니다. 문자열 생성 문자열은 자바에서 객체로 취급한다는거 알고 계셨나요? int,double,char는 원시 타입으로 해서 객체가 아닙니다. 그러므로 자체적으로 구현된 메소드들 또한 없죠. 위 타입을 객체 처럼 사용하기 위해서는 이미 만들어진 Wrapper 클래스를 사용하면 됩니다. 한번 String 객체를 생성해 보겠습니다. // 1 String str1 = new String("Hello World"); String str2 = new String("Hello World"); // 2 String str3 = "Hello World"; String str4 = "Hello world"; 위 사진은 보기 코드에 첫번째 new 로 객체를 생성했을..
안녕하세요 오늘은 자바 최상위 객체인 Object에 대해서 다뤄보겠습니다 자바 최상위 객체 Object 이해하기 public class ObjectEx { } 위 코드를 생성을 하면은 기본적으로 생략된 것이 3개가 있다 그 3개가 무엇일까요? 1) import java.lang.* 2) public class -> extends Object 3) public ObjectEx() { super(); } 위 3가지가 생략이 되어있습니다. 자바에서 자동으로 생략을 해주는 것 입니다. 컴파일러에서 자동으로 넣은 상태로 실행을 시켜주는 것입니다 묵시적으로 위 코드들은 무조건 들어가 있어야 합니다 위 3가지는 항상 들어가야하는 default 값 이라고 생각하면 됩니다 Object는 java.lang에 들어가있는 객..
안녕하세요오늘은 자바가 어떻게 동작하는지 랑 JVM 관점에서 Static이 어떻게 작동하는지 알아보겠습니다. 자바에서 클래스를 실행시키기 위해서는 메인메소드가 필요합니다.그러면 메인 메소드는 무엇일까요?public static void main(String[] args) { } 를 메인 메소드라고 부릅니다. 정확하게 말하면 스프링 환경이 아닌, 일반 자바를 다루는 환경에서 클래스의 어떠한 값을 콘솔에 출력하기 위해서꼭 있어야 하는 게 바로 메인메소드 입니다.public class StaticTest { public static void main(String[] args) { System.out.println("Hello World"); }} 위 값이 없다면 출력을 할 수가 없죠. 그리고 값,메소드 등을..
안녕하세요 오늘은 Class, Object, Instance 에 대하여 알아보겠습니다 여러분들은 객체지향 프로그래밍에서 기본이 무엇이라고 생각하시나요? 저는 클래스를 도구로 사용하는 것이 제일 기본이라는 생각을 합니다. 객체지향 자체가 클래스안에 많은 변수(=필드),메소드 들이 있고 그 내용들을 다른 클래스에서 가져가다가 쓰는 그런 형태기 때문이죠. 그래서 객체지향을 클래스지향이라고 부르기도 한다고 합니다. 하지만 객체지향은 이해하기가 쉽지 않습니다. 그래서 객체지향을 이해하기 위해 여러 예제를 보고있고, 직접 예제를 짜보며 공부를 하고 있습니다. 그리다가 공부 중에 객체지향 설명을 할 때 항상 나오는 용어에 대해서 궁금증이 생겼습니다. 특히 여러 글이나 강사님들이 설명을 할 때, 어쩔때는 객체, 어쩔때..
여러분이 생각하는 도메인은 무엇인가요? 제가 생각했던 도메인은 분야를 의미하는 뜻이 였습니다ex) 개발 분야에서, 결제,헬스,의료,등등 이런 분류를 도메인이라고 생각했습니다그럼 이책에서 말하는 도메인은 무엇일까요??이제 한번 배워보겠습니다 ✍️1.1 도메인이란?온라인 서점을 예시로 들어보자온라인 서점은 개발자가 구현해야 할 소프트웨어의 대상이 된다ex) 상품 조회, 구매, 결제, 배송 추적 등의 기능을 제공해야 한다-> 온라인 서점은 즉 소프트웨어로 해결하고자 하는 문제, 영역 즉 도메인에 해당한다그리고 상위 도메인을 기준으로 하위 도메인을 생성할 수 있다. 위 다이어그램으로 간단하게 표현을 할 수 있습니다.카탈로그 하위 도메인은, 고객에게 구매할 수 있는 상품 목록을 제공함주문 하위 도메인은 고객의 주..
안녕하세요😃 오늘은 리눅스 우분투 환경에 Amazon corrent jdk를 설치해보겠습니다. jdk 설치하기에 앞서 일단 본인이 사용할 PC에 리눅스 우분투를 설치해놔야 합니다. 설치하는 방법은 아래 링크에서 단계별로 하면 설치를 할 수 있습니다. https://www.linuxtechi.com/install-ubuntu-server-22-04-step-by-step/ How to Install Ubuntu Server 22.04 LTS Step by Step Tutorial on how to install Ubuntu Server 22.04 LTS (Jammy Jellyfish) step by step with screenshots. Ubuntu Server is used for enterprise-..
안녕하세요 오늘은 스프링 프레임워크에서 세션 및 쿠키를 다루는 방법에 대하여 알아보겠습니다. 세션과 쿠키는 클라이언트와 서버의 연결을 유지하는 방법입니다 우리가 사용하는 웹 브라우저에 서비스는 HTTP 프로토콜을 기반으로 통신을 합니다. 그리고 그 HTTP 프로토콜은 클라이언트와 서버의 관계를 유지 하지 않는 특징이 있습니다. 그 대표적인 특징 2가지가 무상태성 (Stateless) 비연결성(Connctionless) 위 사진을 보면 한번 요청이오고 그 요청에 응답이 오면 바로 연결을 끊는다. 만약에 그러면 로그인을 하는 상황이라면 어떨까요? 로그인을 해서 여러 기능을 이용해야 하면은, API요청을 할 때마다 로그인을 해야할까요? 만약 실제로 그렇다면은...... 엄청나게 귀찮을 겁니다. 매번 요청하고 ..
안녕하세요 오늘은 자바에서의 참조에 대해서 알아보겠습니다. 위 내용을 이해하기 위해서는 Java 람다식에 대한 선수지식이 조금 있으면 좋다고 생각합니다. 람다식은 JDK8 에 처음으로 나왔고, 람다 문법을 사용하는 개발자분들도 현재 많이 있을거라고 생각합니다. 여러분들 중에서 람다 문법을 쓰다보면 가끔 알맞게 람다 문법을 잘 사용했는데 자꾸 문법에 줄이 그어지는 상황을 보신적이 있을 것 입니다. 그리고 그 메시지를 확인해보면 이런 문구가 있습니다. 왜그럴까? 하고 Replace lambda 를 누르면 문법이 좀 신기한 모양으로 바뀌고, 간결해 지는 것을 볼 수 있습니다. 그리고 오류도 당연히 생기지 않죠 실제로 실행일 시켜봐도 같은 동작을 하는 것을 볼 수 있습니다. 한번 간단한 예제로 보겠습니다. 두개..