본문 바로가기

Programming128

[Java] 멀티 스레드 동시성 제어 하이 ..! 지난번 글에서 내가 멀티 스레드에 대해 포슽팅을 했었다. https://devkingdom.tistory.com/275 [Java] Multi Thread 처리 하이 오랜만에 글을 쓴다. 1.Thread란 오늘은 Java의 Thread 개념에 대해 다루려고 한다. 보통 대부분의 네트워크 통신을 거치는 프로그램은 멀티 스레드 환경에서 구현이 되어야한다. 간단하게 말해 devkingdom.tistory.com 오늘은 Multi Thread 의 동시성을 처리하는 방법에 대해 좀 얘기 해볼까한다. 블로그명이 IT 알려주는 은행원 이니 입금, 출금 등 은행 거래를 예시로 설명을 드리려 한다. 위의 그림에 표현된 계좌에는 동시 다발적으로 입금, 출금 ,조회가 일어난다. 그런데 여기서 문제가 하나 보인다.. 2021. 9. 2.
[Java] Multi Thread 처리 하이 오랜만에 글을 쓴다. 1.Thread란 오늘은 Java의 Thread 개념에 대해 다루려고 한다. 보통 대부분의 네트워크 통신을 거치는 프로그램은 멀티 스레드 환경에서 구현이 되어야한다. 간단하게 말해서 여러 클라이언트에서 들어오는 메시지를 동시에 처리할 수 있어야한다는 말이다. Java에서 특정한 Task를 돌릴때 동시에 여러 일을 처리하게 해야할 때가 있는데 이때 그 일을 수행할 녀석을 만든다. 이게 바로 Thread 이다. 이 Thread는 사용하는 Machine의 cpu 자원을 활용하여 할당되고 업무가 수행된다. 기본적인 내용이지만 같은 프로그램안에서 각각의 스레드는 서로가 생성한 객체를 공유하여 사용할 수 있다는 점도 알아두자. 뒤에 다룰 내용이지만 이 객체에 대한 동시성 , 동기화 문제를.. 2021. 8. 30.
Apache Kafka 정리 하이 .. 최근에 프로젝트를 진행하면서 대용량 실시간 데이터를 Apache Kafka를 이용하여 사용해 보았다. 간단하게 Kafka는 링크드인에서 2011년 오픈소스로 공개된 실시간 분산 데이터 처리 플랫폼이라고 할 수 있다. 예전에 이렇게 대용량 실시간 스트리밍 데이터를 처리하기 위해서는 redis나 rabbitMQ등의 다양한 어플리케이션을 사용하곤 했었는데, 이런 어플리케이션은 각각 특징이 다 달라서 데이터 파편화 현상이 있어서 유지보수에 어려움을 줬다. 그래서 이리한 문제를 해결해줄 수 있는게 바로 Kafka 이다. Kafka를 사용하면 Source 어플리케이션과 Target 어플리케이션간의 커플링을 약하게 할 수 있다. Kafka의 경우, 데이터 스트림을 각 어플리케이션에서 처리하는 것이 아닌 한.. 2021. 8. 19.
[Java] 람다식 (Lambda Expression) 오늘은 람다식에 대해 간단하게 정리해두려고 한다. 람다식은 Java 8 부터 지원하는 객체지향 프로그래밍과는 다른 함수형 프로그래밍 방식이다. 람다식은 익명객체를 더 간단하게 줄여서 사용하는 방식이라고 생각하면 된다. 람다식에서는 함수명이나 반환타입을 제거하고 (파라미터, ....) -> { 실행문 } 이형태로 사용하면 된다. 백문이 불여일타 이기 때문에 간단한 예제를 코딩으로 구현해보도록 하겠다. 우선 앞서 말한것 처럼 람다식이 익명 객체라고 했었다. 람다식을 사용하기 위해서는 우선 함수형 인터페이스를 만들어줘야한다. 함수형 인터페이스 @FunctionalInterface interface MyFunction { int max(int a, int b); } 코드를 보시면 @FunctionalInterf.. 2021. 8. 16.
[Java] JVM GC 기본 동작 방식 이해하기 예전에 내가 JVM 메모리가 어떻게 관리되는지 포스팅을 했었다. https://devkingdom.tistory.com/226 [JAVA] JAVA 메모리 이야기 - Stack 과 Heap 하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸 devkingdom.tistory.com 오늘은 Heap 영역의 메모리를 청소하는 Garbage Collector 에 대해 알아보려고한다. 먼저 GC가 무엇인지부터 말씀드리겠다. GC는 JVM의 Heap 영역에서 사용하지 않는 객체를 없애주는 프로세스를 의미한다. Heap 영역에는 다양한 객체들이 올라와 있는데 이 객체.. 2021. 8. 4.
안드로이드 Kotlin 기본 사용법 정리 - TextView, Button, EditText 1. TextView 1) TextView의 기본 주요 속성 - text : 보여줄 문자열 - lines : 문자열의 라인수 - textColor : 표시되는 문자열 색상 - textSize : 표시되는 문자열 크기 - textAppearance : 표시되는 문자열 형식 2) 코틀린에서 TextView 속성 통제하는법 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ````````` //val textView = findViewById(R.id.textView) // 이 과정이 kotlin에서는 필요가 없음. textView.t.. 2021. 7. 20.
ConstaintLayout 내용 정리 오늘은 안드로이드 프로젝트를 만들때 가장 기본적으로 만들어지는 ConstraintLayout에 대해 정리를 해 두고자 한다. ConstarintLayout 의 경우 RelativeLayout과 비슷하게 동작하는데 부모나 다른 view와의 관계 설정을 통해 UI를 배치할 수 있다. 이러한 배치를 하기 위해 제약 조건을 이용해 배치를 할 수 있는데 이때 두가지를 사용할 수가 있다. 1) 실선 제약 조건 : 부모나 다른 view와의 관계설정을 실제 좌표값을 이용해서 설정하는 방법임 2) 스프링 제약조건 방법 : 부모나 다른 view와의 관계설정을 실제 비율을 이용해서 설정하는 방법임 위처럼 이렇게 비율을 가지고 UI 작업을 해주면 만약에 화면을 회전하거나 할때 알아서 뷰를 찾아서 배치를 해주는 큰 장접이 있다.. 2021. 7. 19.
[JAVA] JAVA 메모리 이야기 - Stack 과 Heap 하이.. ! 어느날 회사의 누군가 Java의 메모리가 어떻게 관리되는지에 대해서 물어봤다. 대답이 많이 나오지 않았다... 나름대로 Java를 제일 잘한다고 생각했었고, 자신감도 있던 상태라 충격이 컸다.. 그래서 오늘부터 자바의 기본에 대해 정리를 해보려 한다. 부족하겠지만 재밌게 읽어주셨으면 한다. 먼저 오늘은 정말 기초적인 내용이다. Java 에서 메모리 관리가 어떻게 이루어지는지를 작성해보도록 하겠다. JVM? 먼저 메모리를 알기전에 JVM이 뭔지 간단하게 정리하고 넘어가자. 나는 지금 집에서 윈도우 PC 에서 개발을 하고 글도 적고 하고 있다. 그리고 회사에 가면 Mac Mini도 사용한다. Mac Mini의 OS는 iOS 이다. JVM은 이런 OS의 메모리 영역에 접근해서 Java의 메모리를 .. 2021. 4. 24.
[WEB] HTTP 상태 코드 정리 예전에 내가 HTTP 프로토콜에 대해 정리해둔 내용이있다. devkingdom.tistory.com/104?category=841890 [WEB] HTTP 프로토콜 하이 ~~~ 오늘은 Spring 공부를 하다가 문득 HTTP 프로토콜을 한번 정리해놔야겠다는 생각이 들어서 글을 쓴다. HTTP 프로토콜을 본격적으로 공부해 보기전에 웹 서비스가 무엇인지 간단하게 정리 해 devkingdom.tistory.com 위에 작성된 글처럼 Client 와 Server간 데이터를 주고받기 위해 정해놓은 규약이 Http프로토콜인데, 이렇게 데이터를 주고 받는 과정에서 우리가 잘 주고받았는지, 아니면 뭐 문제가 있는게 아닌지 이런걸 확인할 수 있는게 바로 HTTP 상태코드이다. 오늘은 이 http 상태코드에 대해 알아보도.. 2021. 4. 6.