반응형

태태개발일지 17

태태코딩 - 람다(김영한 실전자바 고급 3편)

요즘 AI공부를 시작하다보니, AI공부를 쉬고싶을 때 백엔드 공부로 치유하는 느낌이다,, 원래는 백엔드도 점점 공부라고 느껴지던 참이였는데,, 치료된건가..? 싶다 일단 AI 끝나면 멀티스레드를 마무리하고, 람다를 제대로 다시 공부해볼 예정이다. 효율적인 코드?역시 영한 강사님이다,, 아직 시작 부분이지만, 람다가 왜 필요한지 설명해주신다.머리속 코드로 작성해보자면 public void ex1(){ String ex1 = "행복"System.out.println("오늘은 "+ ex1+ "해요");} public void ex2(){ String ex2 = "우울"System.out.println("오늘은 "+ ex2+ "해요");}public class Main { public static void..

JAVA 2025.04.27

태태코딩 - pandas 정리

Pandas엑셀말고 판다스를 이용하는 이유 엑셀은 만줄만 넘어가도 느려지지만, 파이썬은 만줄은 가볍다. pandas종류seriesdataframe구별법 열의 갯수이다. series는 열이 하나이다.dataframe은 열이 두개이상이다. loc와 iloc 구별법pd.loc['index']pd.iloc[index숫자] loc는 ''로 특정 인덱스 이름으로 찾는 것이고,iloc는 인덱스의 번호로 찾는다. #판다스 사용법import pandas as pdlst = [1,2,3,4,5,6,7,8,9]lst2 = [1,2,3,'Apple','play',6,7,8,9]#열이 하나여야 한다.sr2 = pd.Series(lst2)#csv파일 읽어오기pd.read_csv('삼성전자 종가.csv')#csv파일에있는..

태태개발일지 - AI 기초(머신러닝)

기본적으로 지도학습, 비지도학습, 강화학습 으로 나눈다. 지도학습실제 정답이 있는 문제를 내서 학습시키는 것이다.                                                                   (실제로 text와 label을 함께 입력한다.) feature: 입력값label : 출력값,정답   비지도학습실제 정답을 넣지않고, 알아서 군집을 구성하게 하여 처리하게 하는 것이다.  강화학습실제 경험을 토대로 학습해 나가는 것이다. (ex 알파고)  강화학습은 다루지 않고, 지도학습  비지도학습에 대해서 다룰 것이다.  지도학습  분류와 회귀 두종류가 있다. 1) 분류주어진 데이터를 통해 카테고리에 따라 분류하는 문제. ex)분류는 맞다,아니다의 이진분류 모델이있고, 사..

태태개발일지 - java 고급 멀티스레드

생산자 스레드와 소비자 스레드 시뮬레이션가정:1. 생산자는 데이터를 가져와서 queue에 입력을한다.2. 소비자는 데이터를 queue에서 가져와서 제거한다.  기본 코드 예시 public synchronized void produce(int value) throws InterruptedException { while (queue.size() == MAX_SIZE) { System.out.println("Queue is full. Producer is waiting..."); sleep(); // Queue가 꽉 차면 기다림 } queue.offer(value); System.out.println("Produced..

JAVA 2025.03.06

태태개발일지 - 자바 고급 멀티쓰레드(김영한)

동시성저번 글은 메모리 가시성에 대한 글을 작성했다. 보통 성능을 위해 변수를 메모리에서 직접 참조하지 않고, 캐시에 담아서 값을 처리를 하는데, 이를 통해서 생기는 문제였다. 이번에 다룰 부분은 동시성이다. private Integer x = 7000if(x > 5000){ x -= 4000;} 쓰레드 안에서 이러한 로직을 실행할 때 문제가 생긴다.  만약 두개의 쓰레드가 동시에 실행한다면 어떻게 될까?  둘다 if문에 들어가서 검증로직을 수행 후 , x의 값을 변경하게 된다. 동시에 값을 참조했으므로 x의 값은 7000으로 찍히고 둘다 if문 안으로 들어가게 된다. 첫번째 쓰레드가 x에서 -4000을 해버렸고, 두번째 쓰레드가 값을 변경할때 x는 1000이 되게 되어 x는 음수가 되는 상황이 발생..

JAVA 2025.02.22

태태개발일지 - 멀티스레딩(김영한 고급 자바)

메모리 가시성 (Memory Visibility) 스레드를 선언할 때 공유변수를 volatile 으로 선언하는 이유를 알아보았다. 쓰레드와 메인쓰레드는 효율을 위해서 캐시에 변수의 값을 집어넣고 프로세스를 진행한다.즉. Main Thread에서 기존 쓰레드의 공유변수의 상태값을 바꾼다해도 캐시의 값이 바뀌기 때문에 쓰레드는 그 값의 변화를 인지하지 못한다는 것이다. private Boolean flag;를 쓰레드안에 선언해놓고 MainMethod에서flag = "false";를 선언한다고 해도 바로 실행중인 멀티 스레드에서 인지하지 못한다는 뜻이다.이것이 메모리의 가시성이다. 이유위에 언급한 것 처럼, MainThread 와 Multi Trhead모두 변수의 값을 캐시에 불러와서 그 값을 지속적으로 읽기..

JAVA 2025.02.17

태태개발일지 - 도메인 주도 설계의 사실과 오해 후기(조영호 강사님)

Next Step에서 진행하는 DDD 강의를 듣게 되었다. 수강료는 18만원으로 2일에 거쳐서 4시간씩 진행되는 강의였다. 수강 이유프로젝트에서 클린 + 레이어드 아키텍처로 진행하다가 도메인을 나눌 때 어떻게 나누어야하는지 궁금했고, DDD라는 개념을 접했는데 이에 대해서 더 알고싶어 수강을 하게 되었다. 강사님조영호 강사님이다. 객체지향으로 유명하시고, 이분의 인프런 강의를 수강한 상태로 진행 되었다. 시작DDD와 객체지향에 대해 오해가 있는 것 같다.  DDD를 사용하면 문제가 해결된다.?DDD 너무 어려워 안할래? 객체지향과 도메인주도 설계의 차이점 객체지향알고리즘과 데이터의 조화를 통해 작은 문제를 해결하는 것이다. 도메인 주도 설계(디자인패턴, 단위테스트, 아키텍쳐) 이러한 기술들을 비지니스로직..

태태개발일지 - 고급 자바 멀티 스레드

인터럽트 1. volatile boolean runFlagRunnable 클래스 안에 volatile boolean runFlag = true;를 선언해준다.  main method에서 task.runFlage = false; 넣으면 작업을 중단할 수 있다. 하지만 위와 같은 방법으로는 바로 작업을 중단할 수 없기 때문에  log("작업 중단 지시 thread.interrupt()"); 2.thread.interrupt();  인터럽트 메서드를 사용한다.  하지만 interrupt(); 가 발생했다고 바로 interruptException이 일어나는게 아니다.sleep(); 과 같이 스레드를 대기시키는 명령어를 만나면 interruptException을 만든다.  예외가 터지면 -> 이제 인터럽트 상태가..

JAVA 2025.02.11

태태코딩 - 김영한 자바 고급[스레드]

Thread 메서드Thread.threadId();  => 각 스레드에 대해 유일한 idThread.getName(); => 디버깅이나 로깅 목적으로 유용하다.Thread.getPriority();  => 스레드 우선순위 1이 가장낮음 10이 가장높음 기본값: 5 set 메서드를 가지고 우선순위를 변경할 수 있다.스케줄러가 따져보고 결정한다. *실제 실행 순서는 JVM 구현과 운영체제에 따라 달라질 수 있다.Thread.getThreadGroup(); =>   스레드 그룹은 하나의 그룹으로 묶어서 일괄종료, 우선순위 설정을한다.*부모 스레드* : 새로운 스레드를 생성하는 스레드를 의미한다.Thread.getState(); => 스레드 상태new , runnable, bolcked, waiting, tim..

JAVA 2025.02.08

태태개발일지 - 멀티쓰레드

자바 메모리 구조메서드영역: 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.클래스 정보, static, 런타임 상수 스택영역: 자바 실행 시 스택이 생성된다.스택 프레임: 스택 영역에 쌓이는 네모 박스 하나가 스택 프레임이다 힙영역: 객체와 배열이 생성되는 영역. 가비지 컬랙션이 이루어지는 주요 영역. 스레드 생성1. Thread 상속public class HelloThread extends Thread{ @Override public void run(){ System.out.println(Thread.currentThread().getName()+":run()"); }} .run은 호출하지 말기 : 하단의 이유 제시 .star..

JAVA 2025.02.05
반응형