목록전체 글 (65)
개발그래머
목표 자바의 람다식에 대해 학습하세요 학습할 것 (필수) 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 사용법 List numbers = List.of(1, 2, 3, 4, 5); // (parameter) -> expression numbers.forEach(number -> System.out.println(number)); parameter : 람다 함수의 매개변수 목록을 정의함 -> : 람다식의 구분자 expression : 람다 함수의 본문 람다식 Java8에 도입된 람다식은 함수형 프로그래밍 개념을 Java에 도입한 중요한 기능임 익명 함수를 만들어 코드를 더 간결하고 유연하게 작성할 수 있게 해 주며 컬렉션 처리, 쓰레드 처리, GUI 이벤트 ..
목표 자바의 제네릭에 대해 학습하세요 학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드카드) 제네릭 메소드 만들기 Erasure 제네릭 사용법 제네릭의 탄생 이유 제네릭은 자바 5 버전부터 도입되었음 이전 컬렉션(List, Set, Map...)과 가은 데이터 구조를 사용할 때, Object 타입을 이용하여 모든 유형의 객체를 담을 수 있었음 public class GenericExample { public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(10L); list.add(2.5); list.add("hello world"); for (Object o : list) ..

발견 최근 개발한 사이트를 테스트하다가 발견된 오류이다. 특정 url에서만 새로고침시 /가 추가되어 nginx에서 403 forbidden이 발견된 현상이었다. 에러 새로 고침 전 localhost:8080/search?keyword=키워드 새로 고침 후 localhost:8080/search/?keyword=키워드 과정 처음에는 nginx에서의 설정이 잘못되어 저런 오류가 발생되었나 싶어 여러 가지 검색을 하였고 nginx의 설정들을 변경해 보았다. location / { try_files $uri $uri/ /index.html =404; } $uri와 $uri/를 시도하여 요청된 URL에 해당하는 정적 파일을 찾습니다. 즉, 실제 파일이 존재하는지 확인합니다. 파일이 존재하지 않으면 /index.h..
목표 자바의 Input과 Ontput에 대해 학습하세요 학습할 것 (필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 스트림(Stream) public class InputStreamExample { public static void main(String[] args) { try (InputStream stream = new FileInputStream("hello.txt")) { int data;..

목표 자바의 애노테이션에 대해 학습하세요 학습할 것 (필수) 애노테이션 정의하는 방법 @Retention @Target @Documented 애노테이션 프로세서 애노테이션 정의하는 방법 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) public @interface CustomAnnotation { String value(); int count() default 1; } @Retention = 애노테이션 정보가 유지되는 범위를 지정 @Target = 애노테이션이 적용할 수 있는 대상의 유형을 지정 @interface = 애노테이션을 정의 애노테이션 멤버는 메서드 형태로 선언됨(value()와 count(..
목표 자바의 열거형에 대해 학습하세요 학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum 정의하는 방법 //enum 클래스명 enum Example { LIM,YO,HWAN } 단순히 문자열만 선언시 ; 생략 가능 public enum Day { MONDAY("월요일"), TUESDAY("화요일"), WEDNESDAY("수요일"), THURSDAY("목요일"), FRIDAY("금요일"), SATURDAY("토요일"), SUNDAY("일요일"); private String name; Day(String name) { System.out.println("나의 요일은 " + this.name() + "이..

1. selinux 와 nginx 에러 chcon -R -t httpd_sys_content_t 디렉터리 setsebool -P httpd_can_network_connect on getsebool -a | grep http 프로젝트 개발 서버는 ubuntu로 구성하였고 프로젝트 운영 서버는 고객 요구에 따라 centOS로 구성하였습니다. ubuntu와 centOS의 차이는 크게 없다고 생각하였기 때문에 별 문제가 없을 것이라고 생각했다. ubuntu에서 세팅하는 그대로 centOS에 적용을 했고 서버가 실행하는 것 까지는 문제가 없었다. 서버를 실행하고 403 에러가 발생하여 권한이 문제였나 해서 프로젝트 디렉터리에 권한을 주고 시작해봐도 나아지지 않았다. 그래서 검색을 해본결과 ubuntu와 cent..

목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 Thread 클래스와 Runnable 인터페이스 Thread 프로그램에서 실행되는 쓰레드 JVM을 사용하면 동시에 실행되는 여러 실행 쓰레드를 가질 수 있음 모든 쓰레드는 우선 순위를 가지고 있음 우선 순위가 높은 쓰레드가 우선 순위가 낮은 쓰레드보다 우선적으로 실행됨 쓰레드들은 데몬으로 실행할 수 있음 일부 쓰레드에서 실행중인 코드가 새로운 쓰레드 개체를 만들 때 새로운 쓰레드의 우선순위는 초기에 생성 쓰레드의 우선순위와 동일하게 설정되며 생성 쓰레드가 데몬인 경우에만 데몬 쓰레드로 생성됨 JVM이 시작될 때 일반적으로 데..