일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- s
- 윤성우의 열혈 자료구조
- C programming
- insertion sort
- datastructure
- Graph
- stream
- Algorithm
- Stack
- Serialization
- 메모리구조
- 윤성우 열혈자료구조
- Selection Sorting
- R
- 혼자 공부하는 C언어
- C 언어 코딩 도장
- JSON
- 이것이 자바다
- coding test
- list 컬렉션
- 이스케이프 문자
- 알기쉬운 알고리즘
- buffer
- Today
- Total
목록Programming Language (94)
Engineering Note
Entity와 DTO 변환 과정을 for문 대신 Stream으로 변환하면서 알게된 내용을 정리하려고 한다. 1. 초기 forEach를 사용한 비효율적인 방식 코드public List converWithForEach(List orderEntities) { List orderDtos = new ArrayList(); orderEntities.stream().forEach(order ->{ OrderDto dto = OrderDto.from(order); orderDtos.add(dto); }); return orderDtos;} forEach 방식의 문제점함수형 프로그래밍 위반: 스트림 파이프라인 외부에서 선언된 orderDtos라는 변이 가능한 상태를 스트림 내부에서 변경해야 하는데 이는 함수형 프로..
1. 람다식이란?Lambda expression(람다 표현식, 람다식)- 메서드를 하나의 식(expression)으로 표현한 것.- 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명함수(anonymous fuction)'라고도 한다. 예시//메서드int method() { return (int) (Math.random()*5) + 1;}//람다식int[] arr = new int[5];Arrays.setAll(arr, (i) -> (int)(Math.random()*5) + 1; 람다식의 장점- 모든 메서드가 클래스에 포함되어야 한것과 달리, 람다식은 오직 람다식 자체만으로 메서드의 역할을 대신할 수 있다. 2.람다식 작성하기람다식은 '익명 함수'답게 메서드에서 메서드..
Stream- Java8부터 도입된 컬렉션 및 배열의 요소를 반복처리 하기 위한 기술- for문과 Iterator와 비교해 가독성이 좋고, 재사용성이 좋다.- Stream을 이용하면 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있다. Stream은 중간 연산과 최종 연산이 있다.중간 연산은 연산 결과가 스트림인 연산, 스트림에 연속해서 중간 연산을 할 수 있다. 최종 연산은 연산 결과가 스트림이 아닌 연산이다. 스트림의 요소를 소모하므로 단 한번만 사용할 수 있다.중간 연산 예시 : map(), filter()최종 연산 예시 : forEach(), count() 변환 - map()- 스트림의 요소에 저장된 값 중에서 원하는 필드만 뽑아내거나 특정 형태로 변환해야 할 ..
최근에 openai의 API를 이용할 서비스를 개발하면서, API key를 사용할 일이 있었다. 그런데 API key는 외부에 노출되면 안되는 정보기도 하고 여러 코드에서 중복으로 사용되는 코드라서 환경변수에 등록하고 사용해야 하는데 환경변수에 등록하고 현재 파일에서 읽어오는 과정을 정리하려고 한다. 그래서 dotenv 모듈의 load_dotenv 함수를 통해 환경변수를 운영체제의 환경변수로 등록해주는 방법을 정리하려고 하려고 한다. 우선 dotenv메서드 사용을 위해 필요한 라이브러리를 설치한다.pip install python-dotenv env 파일이 다음과 같이 있다면 OPENAI_API_KEY="sk-" 다음 처럼 환경변수를 읽어올 수 있다.from dotenv import load_dote..
JS는 기본적으로 Browser를 조작하기 위해서 태어난 언어다. 언어의 목적에 맞는 함수들을 지원하고 있다. document.getElementId();=> element의 요소들을 가져온다., ID만으로 선택함. querySelector("#myId") => id도 되고 class, tag 등 CSS 선택자 전부 가능document.getElementById("myBtn"); // id로 찾음document.querySelector("#myBtn"); // CSS 선택자 형식으로 iddocument.querySelector(".btn"); // 클래스 선택 가능 element.addEventListenr();=> 그 요소에 이벤트를 등록한다. 대..
Thread 구현 방법- Runnable 인터페이스 구현(Thread 클래스로 직접 생성)- Thread 클래스를 상속 => Thread 클래스를 상속받으면 다른 클래스를 상속받을 수 없기 때문에, Runnable 인터페이스를 구현하는 방법이 일반적이다. Runnable 인터페이스 구현(Thread 클래스로 직접 생성)- Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 다음과 같이 Runnable 구현 객체를 매개값으로 갖는 생성자를 호출하면 된다.Thread thread = new Thread(Runnable target); Runnable- Thread가 작업을 실행할 때 사용하는 인터페이스이다. Runnable 인터페이스에는 run() 메서드가 정의되어 있는데, 구현 클래스는 run..
JVM 메모리의 3가지 주요 영역- method area, call stack, heap call stack(call stack area)- stack 자료구조를 기반으로 메서드 호출을 추적하는 공간, JVM이 thread마다 만들어 줌.- 간단하게 stack area라고도 함. stack frame- 메서드가 호출될 때, call stack에 push되는 단위. 지역변수, 매개변수, 리턴 주소 등이 들어있음.- call stack area에 차례대로 저장되는 메서드의 호출 정보 main thread- Java 프로그램 실행시 JVM이 자동으로 만들어주는 최초의 thread, main() 메서드를 실행함. [JVM 시작] │ ▼[Main Thread 생성] ← OS에서 실제 실행 단위..

Interface는 두 장치를 연결하는 접속기다. Java에서는 객체들을 각각의 장치로 볼 수 있다. 그래서 Java에서 Interface는 두 객체를 연결하는 역할을 한다. 객체 A - Interface - 객체 B 객체 A는 Interface를 통해 객체 B와 연결되어 있다. 객체 A는 Interface를 통해 객체 B를 사용할 수 있다. 그런데 객체 A가 객체 B를 직접 호출할 수도 있는데 왜 Interface를 통해 호출할까? 여기서 요즘 시스템 디자인에서도 중요한 노드 간(객체간) 느슨한 결합을 위해서다. 시스템 디자인에서도 리퀘스트를 보내는 클라이언트와 응답을 하는 서버간의 강하게 결합이 되어 있다면, 빠르게 성장하는 서비스를 위해 서버를 수평확장해야하거나 새로운 기능을 추가할 때 어려움을 겪..