일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준#boj#12755
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#2615#오목
- 백준#BOJ#1939#중량제한
- 백준#boj#16932#모양만들기
- Today
- Total
목록백기선님과 함께 하는 자바 스터디 (23)
순간을 성실히, 화려함보단 꾸준함을
15주라는 시간 동안 진행했던 "백기선님과 함께 하는 자바 스터디"를 무사히 마쳤습니다. 사실 처음 스터디를 시작할때만 해도 15주라는 시간동안 꾸준히 할 수 있을까? 나중에 가면 스스로 지쳐서 그냥 그만 두지 않을까? 하는 걱정도 있었지만 매주마다 조금씩 정리하고 공부하며 꾸준하게 업로드를 하여서 이런 결과를 만들어 낼 수 있었던 것 같습니다. 어떤 한 언어를 공부할때 그냥 대충 사용법만 알고 알고리즘 문제 풀 정도만 공부하면 되겠지 라는 성실하지 못한 생각을 가지고 있었는데 이번 계기로 기본기란 무엇인지 재대로 알수 있어서 좋았습니다. 앞으로도 나아가야 할 길이 먼 것 같습니다. 자바8 버전 문법에 익숙해져야 하며, JUnit 5 도 공부하고, 리플렉션이 정확히 무엇인지 더 나아가 스프링 프래임워크 ..
목표 자바의 람다식에 대하여 학습하시오 학습할 것(필수) - 람다식 사용법 - 함수형 인터페이스 - Variable Capture - 메소드,생성자 레퍼런스 람다식 람다식이란? - 람다식이란 간단히 말하면 '식(expression)'으로 표현한 것. 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. 람다식은 메소드 이름과 반환값이 없으므로 '익명함수(anonymous function)'이라고도 한다. int[] arr = new int[5]; Arrays.setAll(arr,(i) -> (int)(Math.random()*5)+1);람다식 작성법 람다식은 '익명함수'이니 메소드에서 이름과 반환값을 제거하고 매개변수 선언부와 몸통 {} 사이에 '-..
평소 static 키워드와 final 키워드가 너무나도 헷갈려서 이참에 확실히 정리하고자 글을 씀 final 키워드 final 키워드는 단순히 상수화 시키는 키워드가 아니다. 그 이유는 final 키워드는 상수화를 시켜주는 것이 아닌 단 한번만 할당이 가능한 키워드 이기 때문이다. public class Store { final int value; public Store(int value){ this.value=value; } public int getValue(){ return this.value; } public static void main(String[] args) { Store store = new Store(3); Store store1=new Store(1); System.out.printl..
중복되는 코드를 줄여보자!!!! 과거 스프링 JAP(아직 나도 이 개념이 뭔지는 모르지만 요즘 JPA 모르면 바보라니깐 천천히라도 공부하려는 의지를 갖자!!!)가 나오기 이전에는 데이터베이스에 접근하려는 방식은 DAO(Data Access Object) 를 사용하였다. 그러나 이런 방식은 중복된 코드를 양상시키는 주된 이유였으며, 단순 노동으로 치부되기도 하였다. //Apple public class Apple { private Integer id; public Integer getId(){ return this.id; } } public class Banana { private Integer id; public Integer getId(){ return this.id; } } Apple 과 Banana..
목표 자바의 제네릭에 대해 학습하시오 학습할 것(필수) 제네릭 사용법 제네릭 주요 개념(바운디드 타입,와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭이란? 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듬 제네릭의 장점 타입 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있다. 때문에 코드가 간결해 진다. 제네릭 사용법 Class Box {} Box : 제네릭 클래스. 'T의 Box' 또는 'T Box' 라고 읽음 T : 타입 변수 또는 타입 매개변수(T는 타입 문자) Box : 원시 타입(raw type)제네릭 타입은 클래..
왜 버퍼(Buffer)를 쓰면 빨라지는 걸까??? 지난 포스팅에 버퍼(Buffer)에 관해 다루었지만 중요한 개념이라 좀 더 자세히 알아보도록 하자 왜 버퍼(Buffer)를 쓰면 빨라질까???우린 단순히 버퍼를 쓰면 입출력시 좀 더 빠르다는 것을 알 수 있다. 그리고 왜 빠른가 라고 물으면 한번에 모아서 보내기 때문에 빨라진다고 알고 있다. 그러나 이는 굉장히 위험한 생각이다. 왜냐면 단순히 버퍼라는 공간에 모아서 보내기 때문에 라는 이유로 입출력이 빨라지는 건 아니기 때문이다. 바로 시스템 콜(System Call) 의 횟수와 상관이 있기 때문이다. 버퍼를 사용하지 않을때는 키보드로 입력을 할때마다 시스템 콜의 동작이 발생한다.(시스템 콜이 무엇인지는 운영체제와 관련이 있는 내용이니 개인적으로 찾아보길..
목표 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것(필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 입출력이란? - I/O란 Input 과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고 받는 행위를 뜻한다. 1) 스트림(Stream) 자바에서는 데이터를 전송하기 위해선 두 대상을 연결하고 데..
애노테이션은 단순히 마크만 해놓은 것 애노테이션을 자세히 공부를 하지 않으면 무슨 기능이 있는 것처럼 생각할 수 있지만 그냥 주석과 다름이 없다. 이 말이 의미하는 바는 런타임 중에 알아내야 할 값은 들어가지 못한다 예시를 하나 들어보자 import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { private static final String hello = "hello"; @GetMapping(hello) public String hello(){ return "h..
목표 자바 에노테이션에 관해 학습하세요. 학습할 것(필수) 애노테이션 정의하는 방법 @retention @target @documented 에노테이션 프로세서 애노테이션 정의하는 방법 애노테이션이란? - 자바를 개발한 사람들은 소스코드에 대한 문서를 따로 만들기보단 소스크도와 문서를 하나의 파일로 관리하는 것이 더 효율적이라고 생각했다. 그래서 소스코드의 추석에 소스코드에 관한 정보를 저장하고, 소스코드의 주석으로부터 HTML 문서를 생성해내는 프로그램(javadoc.exe)를 만들어서 사용했다. import java.lang.annotation.*; /** * Indicates that a method declaration is intended to override a * method declarati..
Enum은 왜 만들어지게 되었을까? 출처: https://wisdom-and-record.tistory.com/52 https://yadon079.github.io/2021/java%20study%20halle/week-11-feedback 결론부터 언급하자면 상수를 클래스를 선언하여 사용할때 발생하는 이득들을 모두 취하고, 좀 더 간단한 방법으로 선언하고 사용하기 위해 탄생하게 되었다. 예제는 입력을 받으면 과일의 가격이 출려되는 프로그램이다. public class EnumEx { public static final int APPLE = 1; public static final int BANANA = 2; public static final int COCONUT = 3; public static vo..
목표 자바의 열거형에 대해 학습하세요. 학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 java.lang.Enum EnumSet 1. enum 정의하는 방법 열거형이란? - 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. Java5에서 추가된 개념으로 열거형이 갖는 값뿐만 아니라 타입도 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다. 정의 enum 열거형이름{ 상수명1, 상수명2, ...} 예를 들어 동,서,남,북 을 정의하는 열거형 Direction은 다음과 같다 enum Direction{ EAST,WEST,SOUTH,NORTH} 정의된 상수를 사용하는 방법은 열거형이름.상수명 이다. class Unit{ int x,y; // 유..
병렬처리(parallel processing) 공부를 하다보면 반드시 듣게 되는 개념이 있다고 한다. 바로 Critical Path 라는 개념이다. Critical Path 란? 필자는 전체 시간을 줄이기 위해 가장 우선적으로 개선해야될 부분 이라고 부르고 싶다. 하나의 작업은 그 전 작업이 끝나야지만 실행할 수 있고, 각 작업은 parallel 하게 처리가 되고 있다고 가정해 보자. 이때 전체 작업 시간을 줄이기 위해서는 어떻게 해야 될까??? 바로 각 작업마다 가장 긴 시간이 걸리는 녀석들의 시간을 줄이면 된다. 여기서 가장 긴 시간이 걸리는 녀석들 이 바로 Critical Path 가 된다. 따라서 각 Critical Path 를 줄여야 전체시간이 줄어드게 된다. 시간을 줄이는 과정을 통해서 Cri..