일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Airflow
- netflix oss
- WebLogic
- Hibernate
- spring boot
- coalesce
- KAFKA
- RabbitMQ
- Selenium
- JPA
- QueryDSL
- spring cloud
- Redis Sentinel
- Netty
- docker
- vue.js
- weblogic 10
- argo cd
- MySQL
- docker-compose
- redis
- docker compose mysql
- mybatis
- jmeter
- cassandra
- spring boot redis
- ChannelPipeline
- grafana
- Spring Open Feign
- Docker Compose
- Today
- Total
목록JAVA (64)
IT.FARMER
동시성 과 병렬성(Concurrence and parallelism) 동시성(concurrence)과 병렬성(parallelism, multi thread) 어떻게 보면 같은 말인것 같지만 정확히 표현하면 전혀 다른 의미로 사용된다. Thread를 공부함에 있어 이두부분을 명확하게 집고 넘어가야한다. 동시성은 하나의 프로그램내에서 여러작업이 동시에 진행되는것을 말한다. 예를들어 사용자가 웹브라우저에 메일을 읽고 있을때 동시에 다른 탭에서 비디오를 재생하고 있다면 이는 동시성을 보여주는 예이다. (Open GPT를 통해 얻은 예제인데 뭔가 쉽게 이해할 수 있는 예시는 아닌거 같다) 그림으로 보면 다음과 같다. 실제론 싱글코에서 동작되며 여러 작업이 동시에 실행되는것 처럼 보이게 하는것이다. 싱글코어에서 다..
동기화, 비동기화 & 블로킹/논블로킹을 이야기하다보면 아직도 많이 혼란스럽다. 최근에는 reactive 프로그래밍이라고 하여 프론트에서는 동기/비동기화 관련 글들이 많고 서버에서도 블로킹/논블로킹관련 reactive(리액티브) 글들이 많다. UI에서는 대표적으로 Vue.js 나 React.Js 를 꼽을수있고, 서버쪽에서는. RxJava(RetiveX), Spring Reactor(https://projectreactor.io/) 를 들을수있다. 간단하게 설명하면 Reactive X는 넷플릭스에서 공개한 오픈소스라이브러리 이고, Reactor는 Spring 오픈소팀이 만든 프레임워크 이다. 참고) Advanced Reactive Java 그럼 우리가 흔히 알고있는 async 및 sync 에 대하 먼저 알아..
Java Stream 스트림은 JAVA8 API 에 새로추가된 기능이다.스트림을 이용하면 선언형 (즉, 데이터를 처리하는 임시 구현코드 대신 질의로 표현할 수 있다) 으로 컬렉션 데이터를 처리 할 수있다. 일단 스트림이 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 또한 스트림을 이용하면 멀티스레드 코드를 구현하지 않고도 데이터를 투명하게 병렬로 처리할 수있다. → morden java in action Stream 의 여러 기능중 filter, sorted, map , collect 같은 여러 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 의 파이프라인을 만들어 낼수있다. 여러 연산을 파이프라인으로 연결해도 여전히 가동성과 명확성이 유지된다. filter와(sorted, map, colle..
코드리뷰를 할때나, 개발을 할때 final을 보면 이게 꼭 필요한것인가? 하고 의문을 같거나 언제 사용하면 좋을까? 하고 생각에 잠기는 경우가 생긴다. 기본적으로 final 이라고하면 불변 객체에 정의후 값을 재할당하지 않을때 사용함으로 상수(const)에서 많이 사용한다. 요즘엔 IDEA 도구가 좋아지다 보니, Eclipse나 IntelliJ 에서 자주 추천을 해준다. 특히나 Spring(boot)를 사용하시는 개발자라면 생성자 방식의 주입을 사용하실때 ide에서 final을 추천해준다. 그럼 언제 사용하고, 어떤 의미를 가지고 있는지 좀더 살펴보자. final 종류 final 변수 final method final class for example final 변수 → 해당 변수가 생성자나 대입 연산을 ..
초기화 블럭 종류 클레스 초기화 블럭 인스턴스 초기화 블럭 클레스 초기화 클레스가 처음 로딩될때 한번만 수행되는 블럭 인스턴스 변수 및 메서드에 접근 불가 (static 으로 선언된 곳은 접근 가능) 인스턴스 초기화 인스턴스가 생성될때마다 수행되는 블럭 super 생성자 이후에 실행됨 생성자 보다 먼저 생성됨 모든 생성자의 콩통 코드를 인스턴스 초기화 블럭에 넣으면 코드가독성이 좋다. for example) package primitive; /** * 클레스 초기화 테스트 * - 클레스 초기화 * - 인스턴스 초기화 */ public class InitializationClass { static { System.out.println("1.클레스 초기화"); } { System.out.println("2...
파일을 외부공간에 올려두고 그것을 다시 URL Stream 으로 읽어어 오려고 한다. 하지만 이파일이 어느 확장자명을 가진것인지 모를때는 META 데이터를 읽어와 확장자 명을 정의해야한다. URL.openStream() 과 Files.write({file_name}, {input_stream}) 으로 저장하려할때 어째든 파일 이름과 확장자 명이 필요하다. 그럼 해당 파일에 대한 확장자명은 파일을 임의의 파일로 저장한뒤에 메타데이터를 읽어와 다시한번 저장 하도록 한다. 순서 1. URL 스트림으로 파일 읽기 2. Temp directory 에 파일 저장 하기 3. 템프파일을 읽어들여 메타데이터확인하기 4. 템프디렉토리 파일을 지정된 파일 경로로 메타데이터를 입혀 저장하기 public static void ..
java generic 이란? java 5 버전부터 등장하기 시작한 제네릭 기능이다. 형변환을 안전하게 해주고, 컴파일시에도 잘못된 형변환을 알려준다. 이로인해 코드의 재사용성을 높일수 있고 , 제네릭 메소드 이용시 타입 세이프 하게 개발가능 하다. 가장 보편하게 알려진 제네릭의 의미는 다음과 같다. 제네릭 은 클래스 내부에서 사용할 테이터 타입을 외부에서 지정하는 기법을 말한다. 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 위와 같이 다양한 타입의 객체들을 형변환시, 컴파일시에 도움을 받도록 한다. 제네릭은 사용시 메소드, 클레스, 변수에 활용방법에 따라 명칭이 각기 다르다. 해당 타입종류를 모른다고 해서 문제되진 않는다. Java 개발을 하며 무의식..
byte[] 배열을 문자열로 변환하여 사용 RestAPI 통신을 하거나, 혹은 다른 이유로 인해서 파일을(Byte[]) 를 문자열로 저장 하거나 보내야할 경우가 있다. 가끔 우리가 웹화면에서 HTML의 image 테그를 이용할때
remote debuging intelliJ , spring boot, java jvm JVM은 디버그 모드로 시작할수 있으며 JPDA(Java platform debugger architecture )디버거에 연결할수 있다. 디버깅을 활성화 하면 로컬및 원격 디버깅을 모두 활성화 한다. java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=127.0.0.1:8888,suspend=n -jar {jarName} 옵션 -Xdebug suspend=n : 값이 y 인경우 jvm 은 일시중지 모드로 시작되고 디버거가 연결될때까지 일시 중지 생태로 유지된다. , 이는 즉시 디버깅이 필요한 경우세 유용하다. address=127.0.0.1:8888 로컬 호스트..