본문 바로가기

자바15

다시 돌아온 병아리 신입 주디 #1 Batch 처리에 대해 알아보자 🫧 휴.. 금융권에서 풀스택 하게 될걸 각오하고 왔는데 정말 운 좋게도 모바일 팀에 들어가게 되어서 서버 개발을 하고 있다..! 정말 자바 쓸 수 있는 것만으로도 행복🕺✨ /** 실제로 동기들은 자바 쓰는 팀이 거의 없다. tmi로 금융it를 준비한다면 쿼리 짜는 거!! 진짜 중요!! 별표 다섯 개⭐️⭐️⭐️⭐️⭐️ 🐰: SQLP도 따고 싶은데.. 아 너모 어려와여.. SQLD랑 난이도 격차가 너모 큰 거 아니오? 🤖: 변명이야!!! 공부해!!! 🐰: 넵.. **/ 그래도 혹시나 하는 마음으로 최근엔 프론트 코드도 보면서 공부하고 있었는데 완전 서버 개발로 직무를 주셔서(?) 안심하고 다시 서버 공부로 돌아왔당..! 아직 크게 업무가 많지는 않아서 이럴 때 많이 많이 공부해 두자!! 회사 내부 배치 시스템을.. 2024. 3. 24.
[Spring] Spring Security 개념과 처리 과정 👮‍♀️ (+근데 상황극을 곁들인) 오늘도 노드 마을에서 온.. 토끼는 낯선 기술에 울고 있다..(?) 그렇다.. 유저가 있는 서비스라면 인증과 인가 처리는 필수이다. Spring에서는 Spring Security라는 프레임워크로 관련 기능을 제공하고 있다. 꽤 넓고 내용이 많은 파트이다. CS 스터디를 동기 삼아 건드리기 무서웠던 파트를 한 번 공부해 보자. 오늘은 Security 개념과 처리 과정에 대해서 알아보려고 한다. 👮‍♀️ Spring Security /** 평화로운 토끼 마을 */ 토끼 마을에 입장하기 위해서는 신원을 입증해야 한다. 🐰 : 안녕하세요. 토끼입니다. 저는 토끼마을 주민이에요. 딱 봐요? 토끼상이됴? 🤖 : 삐빅. 박.주.디. 신원이 입증되었습니다. 방금 주디가 한 것이 인증(Authentication)이다. .. 2023. 6. 1.
[Java] Gradle.. Gradle 말입니다. 자바 빌드 도구 🐘 자바 프로젝트를 진행하면서 빌드 도구를 많이 접해볼 것이다. 최근에 프로젝트 세팅을 하면서 Gradle, 이 친구 설정을 많이 변경하고 사용했다. 그런데 말입니다.. 빌드 도구는 여러 가지 있단 말이됴? 그리고 Gradle을 사용하면서 왜 사용하는지, 어떻게 사용하는지 알고는 있나요?! 🤖 : 거.. 살살 하세요. 지금 공부하려고 하잖쇼? 🐰 : 뭐야.. 웬일로 내 편을 들어주니? (떠오르는 과거의 기억..) 1. Build Tool (소프트웨어 개발에서) 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구 소스코드의 빌드 과정을 자동으로 처리해주는 도구 외부 소스 코드 (외부 라이브러리) 자동 추가, 관리 종류: APACHE ANT, Maven, Gradle [ Ant(앤트) ] 설정을 위해 XM.. 2023. 5. 19.
[Gradle] Jacoco 적용하고, Codecov로 테스트 커버리지 관리하기 난 지금까지 프로젝트에서 테스트 코드를 열심히 작성하지 못했다.. 크흡 우리 팀 고수 개발자분... 커버리지 80% 이상으로 작성한다고 하셔서.. 리스팩 👏 🤖 : 너도 할 수 있지? 🐰 : 8%? ㅎㅎ.. 농담.. (진짜?) 이번에 열심히 작성해 보기로 했으니... 파이팅~! (후후.. 어서 와 JUnit은 처음이지?) 그리고 프로젝트에서 Jacoco와 Codecov를 적용하려고 한다. 근데 잠깐!! 코드 커버리지는 뭐고, 저 도구들은 뭐야? 그리고 왜 필요해? 🤖 : 그말 왜 안 하나 했다. 해당 도구들의 사용법을 익히기 전에 개념부터 살펴보자. 0. Test Code 테스트 코드는 왜 작성해야 할까. 예전 프로젝트에서는 시간이 부족하다는 이유로 테스트 코드 작성을 소홀히 했다. 하지만 테스트 코드가.. 2023. 5. 14.
[Java] Mutable, Immutable, 방어적 복사, unmodifiableList 🎇 Mutable, Immutable 자바는 new 연산자로 객체를 생성힐 수 있고, 이때 heap 영역에 할당되고 stack 영역에서 참조 타입 변수를 통해 데이터에 접근한다. 이때 자바의 객체의 타입은 두 가지 있다. Mutable(가변) 객체와 Immutable (불변) 객체이다. ✔️ Immutable(불변) 객체 불변 객체 : 객체 생성 이후에는 객체의 상태가 바뀌지 않는 객체 불변 객체 종류: String, Boolean, Integer, Float, Long 등 String을 제외하고 원시 타입의 wrapper 타입이다. 🤖 : 오잇! 나 String 타입 변경한 적 있는 거 같은데? 🐰 : 오.. 이 상황을 말하는 거야? String name = "정윤"; name = "jeongyoon".. 2023. 5. 2.
멀티 모듈, 그게 뭔데? 그거 어떻게 하는건데? 🧐 때는.. 바야흐로 일주일 전... 디프만 OT.. 👥 우리 서버팀 : 웅성👥 웅성 👥 웅ㅅ멀티 웅성성 모듈 웅성👥 🐰 주디박 : 뭔데?!! 멀티??? 모??? 뭐라고요?? 멀티 모듈??? 그게 모지!!? DDD???? 👥 우리 서버팀 : 한 프로젝트에 여러 모듈 개발하는 방법이 있어요!! 🐰 주디박 : 예??? 아~~~~ 그렇구나~~~ (모르겠음) 우리 서버팀에서 도전하고 싶어 하고 궁금해하는 멀티 모듈!!! 그게 뭘까? 팀에 도입하고 싶은데 우선 나는 궁금해졌다. 그게 뭔데? 그게 왜 필요한데??? 그래서 공부를 시작했다. 두둥 탁 1. 멀티 모듈 프로젝트✔️ 모듈Oracle Java 문서에서 모듈이란 패키지의 한 단계 위의 집합체이며, 관련된 패키지와 리소스들의 재사용할 수 있는 그룹이라고 정의하고 .. 2023. 4. 17.
[우아한테크코스] 프리코스 4주차 : 다리 건너기 (bridge) 이 글은 '프리코스' 과정에 작성한 글이며 현재 레포지토리에 있는 코드와 다를 수 있습니다. (리팩토링함) 🚩 4 주차 목표 1. 클래스(객체)를 분리하는 연습 2. 리팩터링 이 두 가지에 익숙해지는 것을 목표로 하고 있다. [4주 차] 미션 - 다리 건너기 🪜 🏃 리팩토링 전 프리코스 제출 코드 시점 👉 미션 저장소 📎 Source Code (PR) 📆 기간: 2022.11.16(수) 15:00 ~ 2022.11.22(화) 23:59 1. 구현 과정 ⚙️ 기능 구현 목록 작성 👉 기능 구현 목록 박굴렁쇠... 일단 코드가 돌아가게 구현해보자. 그런데 행복하지 않다.. 찝찝해 찝찝한 부분을 확인해보자. 1️⃣ 인스턴스 변수의 수를 줄이기 위해 노력한다. 현재 BridgeGameController에서 생성.. 2022. 11. 19.
[Java] 람다와 스트림 (Lambda & Stream) 람다식 (Lambda Expression) 함수(메서드)를 간단한 '식(expression)'으로 표현하는 방법 익명 함수(이름이 없는 함수, anonymous function) 함수와 메서드의 차이 근복적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어 함수는 클래스에 독립적, 메서드는 클래스에 종속적 // 반환 값이 있는 경우 (int a, int b) -> a > b ? a : b // 매개변수의 타입이 추론 가능하면 생략가능(대부분 경우 생략가능) (a, b) -> a > b ? a : b ✔️ 함수형 인터페이스 단 하나의 추상 메서드만 선언된 인터페이스 함수형 인터페이스 타입의 참조변수로 람다식을 참조할 수 있음 MyFunction f = (a, b) -> a > b ? a : b; .. 2022. 11. 13.
[Java] 코딩테스트 대비 정리 (1) 동적 타입 언어인 파이썬과 자바스크립트에 적응한 나란 몸.. 정적 타입 언어 자바를 쓰려니 참 어렵다... 휴 자바 미션과 코딩테스트를 대비해서 헷갈렸던 개념을 정리하면서 공부해보자! List 클래스 자바에서 List를 만들때 List 인터페이스를 구현한 ArrayList나 LinkedList와 같은 객체를 생성하게 되는데 Arrays.asList()와 List.of() 메소드로도 생성할 수 있다. 1) Arrays.asList() List strList = new ArrayList(Arrays.asList(splitArray)); 2) List.of() List.of() 메서드는 JAVA 9 부터 지원하는 메서드이다. char 배열과 String 클래스 차이 코드를 짤 때 문자열 저장은 String 타.. 2022. 10. 29.
[IntelliJ] project마다 JDK 버전 관리하기 나는 기존에 JDK 8을 사용하고 있었고 스프링 강의에서는 JDK 11을 사용한다. 엇.. 그러면 IntelliJ 버전은 어떻게 해야할까. Project A Project: Gradle Project Language: Java Java: 11 Project B Project: Gradle Project Language: Java Java: 8 Project Setting (CTRL+ALT+S, CMD+,) ✔️ Gradle JVM 변경 Build, Execution, Deployment > Build Tools > Gradle 여기서 Gradle JVM을 변경한다. 내가 원하는 JDK 버전을 추가해줬다. ✔️ Project bytecode version 변경 Build, Execution, Deploym.. 2022. 10. 25.
[Java] 예외처리 예외처리 (exception handling) 프로그램 오류 컴파일 에러(compile-time error): 컴파일할 때 발생하는 에러 런타임 에러(runtime error): 실행할 때 발생 하는 에러 에러(error): 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception): 프로그램 코드에 의해서 수습될 수 있는 미약한 오류 -> 예외는 처리하자!! 논리적 에러(logical error): 작성 의도와 다르게 동작 예외 처리 정의: 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적: 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 방법: try-catch문, 예외 선언하기 ✔️ Exception Exception 클래스들: 사용자.. 2022. 10. 23.
[Java] 다형성(polymorphism), 추상 클래스, 인터페이스, 내부 클래스 다형성 (polymorphism) 여러 가지 형태를 가질 수 있는 능력 (하나의 객체가 여러개의 자료형 타입을 가질 수 있는 것) 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. 조상: TV, 자손: SmartTV Tv t = new SmartTV(); // OK SmartTv s = new TV(); // 에러 멤버의 개수가 7가진데 5가지만 참조변수로 사용할 수도 있다. ✔️ 참조변수의 형변환 사용할 수 있는 멤버의 개수를 조절하는 것 조상 자손 관계의 참조변수는 서로 형변환 가능하다. 자손타입 -> 조상타입(up-casting) : 형변환 생략가능 조상타입 -> 자손타입(down-casting) : 형변환 생략불가 FireEngine .. 2022. 10. 12.
[Java] 상속 (Inheritance), 오버라이딩, super, super() 상속 (Inheritance) 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것. (코드의 재사용) 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화 블록 제외) 자손의 멤버 개수는 조상보다 적을 수 없다. class Parent { int age; } class Child extends Parent {} : 이때 부모 멤버 1개를 모두 상속받았기 때문에 자식 또한 멤버 1개이다. 자손의 변경은 조상에 영향을 미치지 않는다. 예시 class Point { int x; int y; } class Point3D extends Point { int z; } ✔️ 포함 관계 클래스의 멤버로 참조변수를 선언하는 것 작은 단위의 클래스를 만들고, 이들을 조합해서 클래스를 만든다. 예시 class Poi.. 2022. 10. 9.
[Java] 클래스와 객체, 변수와 메서드, 오버로딩, 생성자 1. 객체지향언어 ✔️ 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. ✔️ 특징 코드의 재사용성이 높다. 코드의 관리가 용이하다. 신뢰성이 높은 프로그래밍을 가능하게 한다.(캡슐화) ✔️ 핵심개념 캡슐화 상속 추상화 다형성 자바 언어 자바 언어의 다형성을 활용 역할 = 인터페이스 구현 = 인터페이스를 구현한 클래스, 구현 객체 객체를 설계할 때 역할과 구현을 명확히 분리 객체 설계시 역할(인터페.. 2022. 9. 17.
[Java] 비트연산자(bitwise operator) "& | ^ ~ << >>" 비트 연산자는 피연산자를 비트단위로 논리 연산한다. 비트 연산의 우선순위: 논리 연산 (쉬프트 연산자) ex) 7 > .. 2022. 7. 19.
반응형