🚀 자바의 구성 우리가 자바를 다루면서 자바가 어떻게 운영되는지 확인할 필요가 있다. 자바의 최대 장점으로 JVM이 설치되어 있는 어느 운영체제라도 JDK를 사용할 수 있다 알고있다. 우리는 여기서 더 자세하게 알고 들어갈 필요가 있다. 🌠 JVM(Java Virtual Machine) 자바 바이트코드를 실행할 수 있는 스택 기반의 가상 머신을 구현한 소프트웨어이다. JVM의 역할은 JAVA Application을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실할하게된다. 때문에 JAVA와 OS에서 중계 역할을 하여 JAVA가 OS환경에 구애받지 않고 실행을 가능하게 해준다. 또한, 메모리 관리, GC(Garbage collection)을 수행한다. 🌠 JDK(Java Development kit)..
🚀 Lambda 의 등장 기술이 발전되어 가면서 커져만 가는 데이터를 처리한 방법을 필요로했고 이를 필요로 하는 CPU 의 성능 향상이 필요하게 되었다. 이후 CPU에 멀티 코어가 등장하게 되면서 모든 데이터를 빠르게 처리하기 위해 모든 코어를 동원할 수 있는 기술을 개발하게된다. 그렇게 JAVA 8에서 새롭게 등장한 병렬화 개념이 등장했고 동시에 Collection (Map / Set / List)가 더욱 강화 되었다. 이러한 컬렉션 기능을 더욱 효울적으로 사용하기 위해 등장한 함수형 프로그래밍이 오늘의 주제인 Lambda인 것이다. 그래서 람다식이란? 스프링을 위한 자바 객체 지향의 원리와 이해 에서 정의한 람다식 이란? 코드 블록을 위해 메서드를, 메서드를 사용하기 위해 익명 객체를 만드는 복잡함을..
🚀 Stream 이란? 데이터의 흐름을 정의가능한 API로 Collection을 함수로 정의할 수 있다. java8 에서 추가된 API 데이터를 다루는 영역에서 강한 측성을 보임 데이터를 처리하기 위한 내부반복을 통해 정렬 / 필터링 기능 제공 🌠 특징 ✔ 병렬 처리에 유리 병렬 처리를 위해 common fork join pool을 사용하는 parallel() 메소드 제공 common fork join pool 각 스레드가 개별 큐를 가지고 있으며, 놀고 있는 스레드가 있으면 일하는 스레드의 작업을 가져와 수행하여 최적의 성능 도출 코어의 수가 많을수록, 처리할 데이터 수가 많을수록, 데이터당 처리 시간이 길수록 병렬 처리 성능 향상 배열, ArrayList 사용 시 유리(LinkedList는 순차 진행..
Service Layer의 역할 MVC 디자인 페턴에서 Model은 크게 Service Layer과 Data Access Layer로 구성된다. 여기서 DAL계층은 Entity와 함께 DB 영역에서 SQL처리를 담당한다. 만일 데이터에 문제가 발생할 경우 어떻게 처리되는가? 데이터가 DB에 저장된 시점에서 데이터를 다시 호출하여 수정하는 것은 비효율적이다. 때문에 로직의 중간에서 데이터를 작업 할 수 있는 Transaction 로직을 추가해 줘야한다. 공식적으로 이러한 로직을 Service Layer라고 부른다. 🚀 Service Layer의 필요성 Controller Layer에서 넘겨받은 데이터는 중간 작업이 필요한경우 Service Layer을 거치게된다. 여기서 중간 작업은 데이터를 집계 / 수정..
[LeetCode] 1641. Count Sorted Vowel Strings class Solution: def countVowelStrings(self, n: int) -> int: dp = [[i for i in range(1,6)] for _ in range(n)] for i in range(1,n): for j in range(1,5): dp[i][j] = dp[i - 1][j] + dp[i][j - 1] return dp[n-1][4]
🚀 시작점에 대해 모든 언어가 그렇듯이 그 시작 포인트가 있다. C 계열 int main(void){ print("Hi") return 0; } JVM 계열 class main{ public static void main(String[] args){ System.out.println("Hello world!"); } } 이는 실행시 메모리를 할당하고 프로세스 종료시에 같이 종료됨을 의미한다. 때문에 모든 언어가 프로세스를 실행하는 목적으로 시작점을 가지고 있다. 🌠 자바의 시작점 처음 JAVA를 배우는 경우 Hello, World를 출력하기 위해 다음과 같은 스크립트를 보게된다. 핵심은 System.out.println() 이지만 중요한 것은 쓰레드를 실행하기 위한 main() 이다. 물론 초기 초보 개..
🚀 Security 테스트 스프링 환경에서 Security를 적용할 경우 인증된 토큰을 가진 사람만 접근이 가능하다 이 경우 단위 테스트를 할 때에 어떻게 접근해야하는지 알아야 한다. 기존에 다음과 같이 유저 정보가 입력되어 있어야한다. @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser(User.withDefaultPasswordEncoder() .username("user1..
🚀 질문 질문은 기술적인 지식 뿐만 아니라 자신이 사용하고 있는 기술을 지식적으로 적립되어 있는지 질문을 했다. 다음은 답변하지 못한 질문의 키워드 이다. 🌠 DDD (Domain Driven Design) 해당 도메인 전문가의 입력에 따라 도메인 을 일치시키는 모델링 소프트웨어에 중점을 둔 소프트웨어 설계 접근 방식으로 그 핵심은 Loose Coupling, High Cohesion 으로 각 도메인이 연결성이 적고 높은 정도로 연관되어 보다 가벼운 설계를 위해 만들어 졌다. Eric Evans가 출간한 도메인 주도 설계-소프트웨어의 복잡성을 다루는 지혜 에서는 DDD를 소프트웨어를 이해하고 프로젝트를 성공적으로 완성하기 위한 사고방식 으로 정의하였다. 새로운 방식의 개발 방법이 아닌 SW의 복잡성을 최..
🚀 API(Application Programming Interface) 직역하자면 응용 프로그래밍 명세서이다. 목적은 프로그램들 혹은 컴퓨터와 컴퓨터 사이의 상호작용하는 것을 도와주는 매개체이다. 🚀 API는 어떻게 사용되어질까? 우리가 웹 개발을 진행하게되면 필요한 기능을 구현하게된다. 가장 기본적인 CRUD 또한 API로 볼수 있다. 또한 KAKAO, Google, 심지어 Discord 까지 최근 모든 서비스가 자신의 서비스를 응용할 수 있는 API를 지원하고 있다. Red Hat Linux를 제작한 Red Hat은 API의 정의를 다음과 같이 하고있다. API는 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트 API를 사용하면 구현 방식을 알지 못하는 제품 또는 서비스와도 ..
🚀 JSP(JavaServer Pages) JSP는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어이다. Java EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작한다. 🚀 Servlet 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 다시말해, 자바 언어로 구현한 웹 어플리케이션이라는 말인데 이 때문에 JSP와 많이 비교한다. 🚀 Servlet Container (서블릿 컨테이너) Spring Boot 개념이 등장하기 전 웹 어플리케이션으로 톰켓과 같은 웹 애플리케이션을 서블릿 컨테이너라고 부르는데, 이런 웹 애플리케이션(J2EE Application)은 ..
- Total
- Today
- Yesterday
- 백준
- OOP
- JPA
- Matlab
- 자격증
- 그래프
- 릿코드
- docker
- 디자인패턴
- 스프링부트
- 매트랩
- springboot
- 수학
- kakao
- 알고리즘
- java
- 스프링
- ajax
- CS
- 프로그래머스
- Solid
- Algorithm
- 면접
- 자바
- spring-cloud
- Spring
- security
- C언어
- nginx
- interview
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |