JAVA
-
메시징 시스템과 카프카 개념 잡기JAVA 2021. 4. 13. 17:37
0.들어가기전에MSA에서는 데이터 송수신 방법으로 메시징 시스템을 사용한다. 회사 프로젝트 내에서 사업장과 중앙서버가 통신할 때 MQ, 토픽 등의 용어가 나와 이에 대해 공부 하다가 메시징시스템을 공부하게 되었다. 요즘 기업들 자격요건란에 Kafka란 단어가 많이 나와서 적어도 뭔지는 알아야 겠다는 생각에.. 카프카가 이런 것이다. 정도의 개념을 잡는 것이 목적이기에 너무 깊게 들어가진 않았다. (더 깊게는 앞으로 공부할 예정,,)1.메시징 시스템1-1. 메시징 시스템의 개념 메시징 시스템의 종류에는 Kafka, RabbitMQ, Active MQ, AWS SQS, JAVA JMS 등이 있다MSA에서는 시스템간의 호출이 많기 때문에 결합도를 낮추기 위해서 메시징 시스템을 사용한다 어플리케이션 간에 메시지..
-
ConcurrentHashMap, CopyOnWriteArrayList에 대하여JAVA 2021. 4. 12. 16:28
0.들어가기전 ArrayList와 HashMap을 Thread safe하게 사용 하는 방법은 무엇인가?에 대한 대답으로 아래의 내용을 공부 해 보았다 1.Thread Safe 란? 멀티 쓰레드 환경에서 개발자가 의도한대로 코드가 동작하는 것 어떤 함수나 변수, 객체가 여러 스레드에서 동시에 접근이 이루어져도 수행 결과가 의도 한대로 나오는 것. 2.HashMap을 Thread Safe 하게 사용하는 방법 ConcurrentHashMap 스레드가 안전한 연산을 할 수 있게 해주는 해시맵 ConcurrentHashMap은 multi-threaded 환경에서 안정적으로 동작하고 HashTable과 synchronized map 보다 더 나은 성능을 가지고 있다. 그 이유는, ConcurrentHashMap은 ..
-
JVM에 대하여JAVA 2021. 4. 9. 09:27
1. 메모리프로그램 실행하기 위한 데이터 및 명령어 저장 공간.2. JVM이란?Java Virtual Machinejava프로그램은 JVM으로 실행 가능하다 → 자바는 JVM 위에서 실행 되기 때문에 OS에 독립적이다. 자바 소스 코드 컴파일 후 생성된 파일이 해석(interpret)과 Link없이 바로 JVM에 적재 되고, OS로부터 메모리를 할당받아 GC(Garbage Collection)를 통해 스스로 메모리 관리를 한다는 특징이 있습니다.메모리 할당 등 메모리 관리 기능bytecode를 interpreter 형태로 OS에 맞추어 interpret, execute한다JAVA와 OS 사이의 중개자 역할. 3. JVM 구조 그림 JVM은 크게 가비지컬렉터, Execution Engine, Class L..
-
JVM 메모리 구조JAVA 2021. 4. 8. 11:26
0.들어가기 전 쓰레드 세이프란? 멀티 쓰레드에 의한 동시 호출에서 안정성이 보장되는 코드를 말한다. 즉, 멀티 쓰레드 환경에서 코드가 개발자가 의도한대로 동작하는 것을 말한다. 이 쓰레드 세이프에 대해 공부하다가 JVM의 메모리 구조를 공부하게 되었다. 메모리란? 프로그램을 구동하기 위해서 운영체제(OS)가 데이터를 저장할 공간을 할당함. 메모리 공간은 크게 Static, Stack, Heap 영역으로 구분 됨. 1.JVM과 메모리 할당 출처) https://velog.io/@agugu95/자바와-JVM-그리고-메모리-구조 1-1. JVM 메모리 공간 Runtime Data Areas라고도 불린다. 위 그림과 같이 JVM의 메모리 공간은 Method Area, Heap, Stack, PC Registe..
-
자바스크립트 객체 복사하는 방법JAVA 2019. 8. 6. 23:17
객체의 경우 그냥 복사를 해서 복사한 객체에 데이터를 추가하면 기존 객체도 바뀐다. 이는 객체에 값을 저장하면 실제 값을 저장하는게 아닌 객체를 메모리 어딘가에 만들고, 객체의 주소값을 저장하기 때문이다. 따라서 객체(배열 포함)의 경우 원배열이 바뀌는 걸 원치 않는다면 깊은 복사를 해야한다 ex) var foo = { key: 'value' }; var bar = $.extend({}, foo); foo.key = 'other value'; console.log(foo); console.log(bar); 참조 . https://hyunseob.github.io/2016/02/08/copy-object-in-javascript/
-
자바에서 객체 파일에 저장하고 읽는 방법JAVA 2019. 7. 21. 01:02
객체를 분해하여 전송하기 위해서는 직렬화(Serialization) 되어야 한다. 객체를 전송하기 위해서는 3가지 단계를 거친다. (1) 직렬화된 객체를 바이트 단위로 분해한다. (marshalling) (2) 직렬화 되어 분해된 데이터를 순서에 따라 전송한다. (3) 전송 받은 데이터를 원래대로 복구한다. (unmarshalling) 출처: https://hyeonstorage.tistory.com/252 [개발이 하고 싶어요] 자바에서 객체를 파일에 저장하는 방법에는 2가지가 있다. 첫 번째가 객체를 직렬화해서 마샬링하고 언마샬링 하는 방법. 두 번째가 문자로 저장하는 방법 참고 = http://wawoops67.blogspot.com/2013/02/java-outputstream-inputstrea..
-
자바 컴파일러와 JVMJAVA 2019. 7. 4. 23:04
컴파일러는 뭐냐. 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 말한다. 자바 컴파일러란. 자바 소스코드를 실행하려면. 기계가 알아 들을수 있는 bytecode로 변환을 시켜야한다. 변환하기전의 원본 코드인 source code를, 기계에서 실행할 수 있도록 bytecode로 변환 시키는게 자바 컴파일러의 일이다. JVM (Java Virtual Machine) JVM은 자바 컴파일러가 변환한 bytecode를 실행시키는 프로그램이다. 이 프로그램은 bytecode를 읽어서 OS의 코드를 호출하는 일을 한다. 실행되는 과정 1.JVM이 target code를 로딩한다. *target code : source code를 기계가 알아 들을 수 있는 bytecode로 변환한..
-
jar파일이란JAVA 2019. 7. 2. 23:06
회사에서 빌드를 해서 개발서버에 배포를 할때. .jar 파일로 말아서 배포하는데 .jar는 뭔 파일일까 궁금해져서 검색해봤다. jar파일이란 자바로 만든 클래스파일들을 한대 묶어놓은 포멧을 말한다. 해당 파일을 실행하려면, jdk 또는 jre가 필요하다. 왜 묶어놓았을까? jar(=Java ARchive)파일은 여러개의 클래스 파일을 하나로 묶어서 실행할 수 있게 해주기 때문에 jar로 만들면 프로그램의 경로나 파일의 위치에 상관없이 실행이 가능하다. *파일을 묶은걸 보면 src라는 폴더와 bin이라는 폴더가 있는데 src는 source코드(.자바파일), bin은 binary(.클래스파일) 의 약자라 한다. (이걸 지금에서야 암..ㅎ.)