본문 바로가기
728x90
반응형

Java17

[SpringBoot] Kafka로 분산형 데이터 처리하기 (2) - Virtual Box에서 Kafka 설치하기 안녕하세요. J4J입니다. 이번 포스팅은 kafka로 분산형 데이터 처리하기 두 번째인 virtual box에서 kafka 설치하는 방법에 대해 적어보는 시간을 가져보려고 합니다.   이전 글 [SpringBoot] Kafka로 분산형 데이터 처리하기 (1) - Kafka란 무엇인가?    Virtual Box 설정하기 spring에서 kafka를 연동하여 사용하기 위해 kafka를 구축해 보겠습니다. kafka를 구축하기 위해 해볼 수 있는 방법은 다양하게 존재합니다. 대표적으로 aws에서 제공해 주는 완전관리형 서비스인 msk도 존재하고, 그 외에도 ec2 등의 서버 등을 통해 자체 구축하는 경우도 있습니다. 이번에 저 같은 경우는 자체 구축을 진행하려고 하며, ec2 등을 통해 서버를 할당받지 않고.. 2024. 8. 25.
[디자인패턴] 빌더(Builder) 패턴 이해하기 안녕하세요. J4J입니다. 이번 포스팅은 빌더(builder) 패턴에 대해 적어보는 시간을 가져보려고 합니다. Builder 패턴이란? builder 패턴은 객체 생성을 유연하게 할 수 있도록 도와주는 디자인 패턴 중 하나입니다. 자바 관점에서 확인했을 때 객체 생성을 할 때 보통 사용될 수 있는 것은 생성자를 활용하는 것입니다. 파라미터 정보가 하나도 들어있지 않은 default 생성자부터 원하는 파라미터 정보로 구성된 생성자까지 활용하여 객체를 생성할 수 있습니다. builder 패턴은 생성자와 유사하게 객체 생성을 도와주지만 생성하는 방법을 다양하게 구성해 볼 수 있습니다. 클래스 내부에 builder 패턴을 적용하기 위한 설정만 해둔다면 객체 인스턴스를 생성해야 되는 곳에서 메서드 체이닝을 활용하.. 2024. 3. 23.
[React] AES256 암호화 (with. Java) 안녕하세요. J4J입니다. 이번 포스팅은 AES256 암호화하는 방법에 대해 적어보는 시간을 가져보려고 합니다. React에서 암호화 방법 [ 1. 패키지 설치 ] $ npm install crypto-js $ npm install -D @types/crypto-js // 타입 스크립트 사용 시 추가 설치 [ 2. 암복호화 코드 작성 ] import cryptoJs from 'crypto-js'; const secretKey = '12345678901234567890123456789012' // 32자리 비밀키 const iv = 'abcdefghijklmnop' // 16자리 iv // 암호화 export const encrypt = (text: string) => { const cipher = cry.. 2022. 7. 4.
[Spring] 설정 파일 변경하는 다양한 방법 (xml → Java) 안녕하세요. J4J입니다. 이번 포스팅은 설정 파일을 변경하는 다양한 방법에 대해 적어보는 시간을 가져보려고 합니다. 최근 스프링 설정 파일의 추세는 익숙하지 않은 xml파일보다 익숙한 환경의 Java파일로 설정하는 추세라고 개인적으로 생각합니다. 그리고 변경하는 방법에는 다양한 방법들이 있는데 그중 제가 알고 있는 방법들을 정리해보고자 합니다. root-context와 service-context 모두 각각 2가지 방법밖에 모르지만요 ㅎㅎ.. 제 블로그에서 사용했던 JPA와 MyBatis 설정방법까지 같이 포함하여 변경해보도록 하겠습니다. 변경 전 root-context.xml 혹시 태그를 사용하는데 에러가 발생하시는 분은 xml파일 하단의 Namespaces탭을 다음과 같이 변경해주시면 됩니다. ro.. 2021. 4. 10.
[Java] 자바기초 - 컬렉션(Collection) 안녕하세요. J4J입니다. 이번 포스팅은 컬렉션에 대해 적어보는 시간을 가져보려고 합니다. 컬렉션이란? 컬렉션이라고 하는 것은 자바에서 데이터를 유용하게 담기 위해 만들어 둔 인터페이스로 컬렉션 프레임워크라고도 많이 부릅니다. 말 그대로 인터페이스이기 때문에 사용자들이 사용하기 위해서는 인터페이스를 상속받아 정의해 둘 필요가 있었고 정의된 클래스들을 자바에서 제공하여 언제 어디서든 사용할 수 있습니다. ※ 인터페이스에 대해 모르신다면? [Java] 자바기초 - 추상클래스와 인터페이스(abstract/interface) 종류 컬렉션의 종류는 List, Set, Map 총 3가지가 있습니다. 이 3개는 모두 인터페이스이기 때문에 위에 말씀드린 것처럼 해당 인터페이스를 상속받아 구현시켜둔 클래스들이 다양하게 .. 2020. 12. 31.
[Java] 자바기초 - 제네릭(Generic) 안녕하세요. J4J입니다. 이번 포스팅은 제네릭에 대해 적어보는 시간을 가져보려고 합니다. 제네릭이란? 자바로 프로그래밍된 코드들을 보시면 인스턴스를 생성할 때 꺽쇠("")들로 표현된 코드들을 보신 경험이 있을 것인데 이런 코드들이 모두 제네릭이 적용된 코드들입니다. 제네릭이라고 하는 것은 클래스 내부에서 사용될 변수들의 타입을 지정해주는 역할을 수행합니다. 다른 표현으로는 담고 싶은 데이터 타입을 정해 다른 데이터 타입은 담을 수 없도록 해준다 라고 말할 수 있습니다. 제네릭을 일상생활에서 비유하자면 뷔페에 갈 때 이쪽은 한식코너, 저쪽은 양식코너와 같이 분류하는 것이라고 생각하면 됩니다. 제네릭을 사용하는 이유는 원치 않은 데이터 타입을 담을 때 컴파일 과정에서 발견하기 위해 사용됩니다. (코드 작성.. 2020. 12. 28.
[Java] 자바기초 - 객체지향(OOP) - 다형성(Polymorphism) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 다형성에 대해 적어보는 시간을 가져보려고 합니다. 다형성이란? 다형성이라고 하는 것은 다형성이라는 말을 그대로 풀이하여 여러 가지 형태를 가질 수 있는 특성을 의미합니다. 다른 표현으로는 자바에서 하나의 인스턴스를 생성할 때 한 클래스에 대해서만 생성하는 것이 아니라 여러 클래스에 대해 인스턴스를 생성할 수 있다는 것을 말합니다. 무슨 말인지 이해가 되지 않으실 것 같아 바로 코드로 표현해보겠습니다. package oop; public class Animal { String zooName = "J4J Zoo"; public void getZooName() { System.out.println(zooName); } public .. 2020. 12. 27.
[Java] 자바기초 - 객체지향(OOP) - 추상화(Abstraction) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 추상화에 대해 적어보는 시간을 가져보려고 합니다. 추상화란? 추상화라고 하는 것은 목적과 관련이 없는 것을 제거하고 필수적인 요소만을 표현해 둔 것을 말합니다. 예를 들어 초코빵과 크림빵을 만든다고 가정해 보겠습니다. 두 빵을 만들 때 빵 표면을 무엇으로 만들지, 빵 속을 무엇으로 채울지에 대한 것은 필수적인 요소라고 할 수 있습니다. 그리고 이 요소들에 대해 빵마다 정의를 해보자면 초코빵일 땐 빵 표면은 밀가루, 속은 초콜릿으로 하고 크림빵일 땐 빵 표면은 쌀가루, 속은 크림이라고 할 수 있습니다. 하지만 뜬금없이 빵을 얼마나 빨리먹을 수 있는지에 대한 것은 빵을 만들 때 필수적인 요소가 아닙니다. 이처럼 프로그래밍을 할 때.. 2020. 12. 23.
[Java] 자바기초 - 객체지향(OOP) - 캡슐화(Encapsulation) 안녕하세요. J4J입니다. 이번 포스팅은 객체지향 프로그래밍의 특징 중 하나인 캡슐화에 대해 적어보는 시간을 가져보려고 합니다. 캡슐화란? 캡슐화라고 하는 것은 알약을 구매할 때 약들이 캡슐에 감싸져 있어 어떤 약인지 알 수 없는 것처럼 클래스 내부의 변수 및 메서드들이 외부에 노출되지 않기 위해 감싸져 있는 것을 말합니다. 클래스가 사용되는 목적에 따라 외부에 노출시킬 메서드와 변수가 정해질 것이고 외부 사용자들은 노출된 변수와 메서드만 사용될 수 있게 됩니다. 캡슐화의 사용 목적은 캡슐화가 무엇인지에 대해서만 들어봐도 어느 정도 예측을 할 수가 있는데 한 마디로 표현을 하면 정보은닉을 위해서입니다. 정보은닉에 담겨져 있는 의미처럼 외부에 의한 중요정보 탈취 및 객체 손상 등을 방지하기 위해 사용됩니다.. 2020. 12. 22.
[Java] 자바기초 - 추상클래스와 인터페이스(abstract/interface) 안녕하세요. J4J입니다. 이번 포스팅은 추상 클래스와 인터페이스에 대해 적어보는 시간을 가져보려고 합니다. 사용 이유 추상 클래스와 인터페이스를 사용하는 이유는 클래스를 작성할 때 사용 용도에 맞는 필수적인 요소들을 포함시키기 위해 사용합니다. 예를 들어 핸드폰을 만들 때 핸드폰에는 필수적으로 알람 소리, 벨소리 등이 포함되는데 알람 소리와 벨소리들에 대해 정의하는 것을 포함시키지 않고 핸드폰 제작하는 것을 방지하기 위해 사용합니다. 이처럼 프로그래밍을 할 때도 A라는 클래스를 만들 때 클래스에 필요한 메서드들을 사전에 모두 정의하여 A클래스를 작성할 때 필수적인 메서드들 모두 정의할 수 있도록 도와줍니다. 추상 클래스 추상 클래스는 일반 클래스와 달리 abstract라는 키워드를 이용하여 클래스를 작.. 2020. 12. 21.
[Java] 자바기초 - 접근 제한자 안녕하세요. J4J입니다. 이번 포스팅은 접근 제한자에 대해 적어보는 시간을 가져보려고 합니다. 접근 제한자란? 자바에서 접근 제한자는 말 그대로 자바 내에 존재하는 클래스, 메서드, 변수 들에 대한 접근을 제한하는 역할을 수행합니다. 예를 들어 A클래스에 a라는 변수가 있고 B클래스에 b라는 변수가 있는데 a라는 변수를 A클래스에서만 접근할 수 있고 B클래스에서는 접근하지 못하게, 즉 사용하지 못하도록 해줍니다. 사용 이유 굳이 변수 등의 앞에 키워드를 추가하며 접근 제한자를 사용하는 이유는 바로 정보은닉의 목적 때문입니다. 코드를 작성하다보면 상대방에게 공개해도 되는 데이터 값과 공개하면 안 되는 데이터 값들이 명확하게 구분이 됩니다. 접근 제한자는 이처럼 구분이 필요한 데이터에 보안성을 높여주는 역.. 2020. 12. 16.
[Java] 자바기초 - 생성자(Constructor) 안녕하세요. J4J입니다. 이번 포스팅은 생성자에 대해 적어보는 시간을 가져보려고 합니다. 생성자란? 생성자는 객체를 생성하기 위해 선언을 할 때 변수들의 값들을 초기화 해주는 역할을 수행합니다. 자바에서는 객체를 생성할 때 new라는 키워드를 이용하여 객체를 생성하는데 동일 클래스에 대한 객체를 생성하더라도 생성자가 어떻게 정의되어 있는지에 따라 서로 다른 결과를 만들어 줄 수 있습니다. 생성자의 형태는 메서드의 형태와 유사하지만 메서드와 달리 결과 값을 리턴해주는 타입은 정의하지 않습니다. 그렇기 때문에 {접근지정자} {클래스명} ({파라미터}) {내용} 의 형태로 정의하여 작성을 할 수 있습니다. 다음 코드를 보도록 하겠습니다. package contructor; public class Book {.. 2020. 12. 14.
[Java] 자바기초 - Wrapper Class 안녕하세요. J4J입니다. 이번 포스팅은 Wrapper Class에 대해 적어보는 시간을 가져보려고 합니다. Wrapper Class란? Wrapper Class라고 하는 것은 자료형에 속하는 타입들의 객체화라고 말할 수 있습니다. 우선 자료형에 속하는 것들이 무엇이 있을까요? 나열을 해보면 byte, short, int , long, float, double, char, boolean, String 등이 있습니다. ※ 자료형에 대해 더 자세히 알고 싶다면? [Java] 자바기초 - 자료형 그리고 이런 자료형들을 Wrapper Class로 표현하면 아래 표와 같이 표현할 수 있습니다. 자료형 Wrapper Class byte Byte short Short int Integer long Long float.. 2020. 12. 13.
[Java] 자바기초 - 형 변환(Promotion/Casting) 안녕하세요. J4J입니다. 이번 포스팅은 형 변환에 대해 적어보는 시간을 가져보려고 합니다. 형 변환이란? 형 변환이라고 하는 것은 자료형에 저장되어 있는 값들을 다른 형태의 자료형에 값을 집어 넣는 것 입니다. ※ 자료형에 대해 모르신다면? [Java] 자바기초 - 자료형 다음 코드로 예를 들어 봅시다. package transform; public class Example { public static void main(String[] args) { int intVal = 32; long longVal = intVal; System.out.println("intVal값: " + intVal); System.out.println("longVal값: " + longVal); } } 자료형 중 정수형에 속하.. 2020. 12. 11.
[Java] 자바기초 - 입/출력 안녕하세요. J4J입니다. 이번 포스팅은 자바의 입/출력에 대해 적어보는 시간을 가져보려고 합니다. 프로그래밍을 위해 IDE를 사용하면서 입/출력을 수행하고 싶을 때 어떠한 지시가 없으면 IDE는 스스로 입/출력과 관련된 기능을 수행하지 않습니다. 그리고 프로그래밍 언어마다 입/출력하는 방식이 다르기 때문에 각각의 언어에 맞는 입/출력 방식을 사용하여 지시를 내려줘야 되고 자바에서 입/출력에 대한 지시를 내릴 수 있는 방법은 한 가지만 있는 것이 아닙니다. 저는 그 중에서 입력과 출력 모두 각각 2가지 방법을 소개하고자 합니다. 먼저 출력부터 보도록 하겠습니다. 출력 1: System.out 자바에서 출력을 받을 수 있는 방법 중 첫 번째는 System.out입니다. System.out은 자바 출력의 대.. 2020. 12. 8.
[Java] 자바기초 - IDE 안녕하세요. J4J입니다. 이번 포스팅은 IDE에 대해 적어보는 시간을 가져보려고 합니다. IDE란? IDE는 Integrated Development Environment의 약자로 이번에도 똑똑하신 위키백과님에 따르면 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어라고 합니다. 정말 단순하게 말하면 코드가 작성되는 프로그램 툴이라고 말할 수도 있겠습니다. 자바에서 사용되는 IDE 그럼 자바에서 사용되는 IDE는 무엇이 있을까요? 대표적으로 자바에서 사용되는 IDE는 Eclipse, IntelliJ 등이 있습니다. Eclipse와 IntelliJ를 개인적인 견해를 담아 간단히 비교해보면 다음과 같은 특성이 있습니다. 구분 E.. 2020. 12. 6.
[Java] 자바기초 - JVM/JDK/JRE 안녕하세요. J4J입니다. 이번 포스팅은 자바를 이용하여 프로그래밍을 하기 위한 필수적인 환경 요소들에 대해 적어보는 시간을 가져보려고 합니다. 저도 프로그래밍을 시작한 지 오래되지는 않았지만 자바를 사용하여 주로 프로그래밍을 해왔습니다. 하지만 JVM/JDK/JRE을 들어는 봤지만 어떤 역할을 수행하는지는 자세히 알지 못하고 있었습니다. 그렇기에 포스팅을 하면서 이들의 역할들에 대해 간단히 알아보고자 합니다. JVM이란? JVM은 Java Virtual Machine의 약자로 아는 것이 많으신 위키백과님에 따르면 자바 바이트코드를 실행할 수 있는 주체이다 라고 말씀을 하십니다. 그럼 여기서 또 궁금한 것이 생깁니다. 바이트코드가 무엇이죠? 바이트코드는 작성된 코드들을 컴퓨터에서 읽고 해석하기 위한 목적.. 2020. 12. 6.
728x90
반응형