일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이차전지관련주
- 알고리즘
- effectivejava
- 카카오 면접
- JavaScript
- 이펙티브 자바
- Effective Java 3
- 예제로 배우는 스프링 입문
- Effective Java
- 이펙티브자바
- 티스토리챌린지
- Spring
- 알고리즘정렬
- 스프링핵심원리
- kubernetes
- 스프링
- ElasticSearch
- java
- 스프링부트
- 오블완
- Sort
- 김영한
- 코딩테스트
- 스프링 핵심원리
- 카카오
- 클린아키텍처
- 자바
- 자바스크립트
- k8s
- 엘라스틱서치
- Today
- Total
목록분류 전체보기 (153)
Kim-Baek 개발자 이야기
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다. ◎화면에 값을 출력하는 방식 - System.out.println(출력할 값); -> 값 + enter 를 나타낸다 ( ln이 line next 를 의미) 값을 1개만 출력하기 때문에 원하는 형태를 위해서는 + 연산자를 통해 문자열을 계속 붙여야 한다. - System,out,print(출력할 값); 1개의 값을 출력하나 enter 가 들어가지 않는다. - System.out.printf("출력문자열 format"[, 값]); -> jdk 1.5 이상부터 지원하는 기능 f 가 format을 의미한다. ※ %문자 (지시자, 전환문자) -> %d : 정수 , %f : 실수, %s - 문자열(모든 type), %%..
OAuth2 승인 방식의 종류 Authorization Code Grant Type : 권한 부여 코드 승인 타입 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용됩니다. 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식입니다. Implicit Grant Type : 암시적 승인 권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식입니다. Resource Owner Password Credentials Grant Type : 리소스 소유자 암호 자격 증명 타입 클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환하는 ..
BFS는 너비우선탐색 이라고 블리는 Graph 알고리즘 중 하나이다. - BFS 는 일반적으로 Queue를 이용해 구현 - 시작 정점과 인접한 모든 정점을 방문하는 방법 - 얻어진 해가 최단 경로가 된다는 것을 보장 - 경로가 매우 길 경우에는 많은 저장 Memory 가 필요 C++를 이용해 BFS를 구현 #include #include #include using namespace std; vector* vertex; bool* checked; void bfs(int st); int main() { int n, m, s; int from, to; cin >> n >> m >> s; vertex = new vector[n + 1]; checked = new bool[n + 1]; for (int i = 0..
HDFS HDFS(Hadoop Distributed File System)는 수십 테라바이트 또는 페타파이트 이상의 대용량 파일을 분산된 서버에 저장하고, 많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템이다. HDFS를 이용하면 수십 혹은 수백 대의 웹 서버급 서버를 묶어서 하나의 스토리지처럼 사용할 수 있다. 즉 기존 대용량 파일 시스템과의 차이점은 저사양 서버를 이요해 스토리지를 구성할 수 있다. 물리적으로 분산된 서버 디스크에 저장된 데이터들은 HDFS에서 제공하는 API를 이용하여 파일의 읽기 및 저장과 같은 제어가 가능하다. 은행이나 전자상거래처럼 트랜잭션이 중요한 경우는 HDFS가 적합하지 않으며, 대규모 데이터를 저장하거나 배치로 처리하는 경우 유용하다. HDFS..
사용자가 현재 a.com 이라는 사이트에 접속해서 인터넷을 하고 있다. 그런데 사용자의 PC가 해킹되어 사용자가 모르는 hacking.js 라는 프로그램이 내부적으로 동작하고 이 hacking.js 는 사용자가 a.com 사이트에 접속하면 사용자 PC의 개인정보가 담겨있는 쿠키파일을 hacking.com 으로 전송한다고 하자. (이를 크로스 사이트 스크립팅(XSS) 해킹기법이라고 한다.) 웹 브라우저는 이처럼 사용자가 특정사이트에 접속중인 상태에서 동시에 다른 사이트를 접근하는 경우 보안상 문제가 발생했다고 인식하여 이와 같은 행위를 기본적으로 불허한다. 이를 동일출처정책(Same Origin Policy) 이라고 한다. 그런데 이러한 해킹말고 실제로 기능구현 할 때 다른 사이트를 동시에 접속해야 될 필..
인프런에서 백기선 님의 [스프링 프레임워크 핵심 기술] 을 듣고 정리한 내용입니다 Inversion of Control: 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법을 말 함. - 추가적으로 토비의 스프링에서의 설명 어떤 프로그램을 만들 때, 각 기능들을 만들어 두더라도 이 기능들이 필요에 따라 순서대로 작동하지 않는다면 그 프로그램은 제대로 작동할 수 없습니다. 따라서 각 기능들이 순서대로 작동하게 하기 위해서 제어(Control)가 필요합니다. 위에서 이야기한 제어할 항목들이 적다면 프로그래머가 기능의 순서를 알고 관리할 수 있습니다. 하지만 기능들이 늘어나서 수천, 수만개의 제어..
Hadoop 하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크이다. 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하고, 분산 처리 시스템인 맵리듀스를 이용해 데이터를 처리한다. 하둡은 구글의 논문 GFS(Google File System)과 맵리듀스(MapReduce)를 더그 커팅이 2005년에 구현한 결과물이다. 하둡은 오픈소스 프로젝트이므로 소프트웨어 라이센스 비용이 없다. 리눅스 서버면 얼마든지 하둡을 설치해 운영할 수 있고, 저장 용량이 부족하면 필요한 만큼의 리눅스 서버만 추가하면 된다. 데이터의 복제본을 저장하기 때문에 데이터 유실이나 장애가 발생했을 때도 데이터 복구가 가능하다. 기존 RDBMS는 데이터..
인프런에서 백기선 님의 [스프링 프레임워크 핵심 기술] 을 듣고 정리한 내용입니다 참고: 스프링 프레임워크 레퍼런스 https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html 스프링이란? https://docs.spring.io/spring/docs/current/spring-framework-reference/overview.html#overvie “소규모 애플리케이션 또는 기업용 애플리케이션을 자바로 개발하는데 있어 유용하고 편리한 기능을 제공하는 프레임워크" ● 스프링 프레임워크 그 자체 ● 스프링 프레임워크 포함 모든 스프링 프로젝트 (스프링 부트, 스프링 데이터, 스프링 시큐리티...) ● 이 강좌에서 스프링은..
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다. ◎소스코드를 짤 때 편하게 해주는 툴 가장 기본적으로 사용이 가능한 것(메모자) -> Editplus -> Eclipse(IDE-통합개발환경) - Editplus 의 경우 한국 사람이 만든 툴이다 ◎Editplus 의 사용 설정' -Editplus 를 사용하기 위해서는 자바의 컴파일러(javac.exe)와 인터프리터(java.exe)를 등록을 하자 도구 -> 사용자 도구 -> 추가 -> 프로그램의 경로에서 메뉴 제목 : 프로그램의 이름을 지정하자 명령 : 실행을 시킬 파일 등록 인수 : 추가한 프로그램에게 전달시킬 파일의 경로를 지정 ※javac.exe의 경우 파일의 이름을 그대로 넘기기 때문에 파일 이름을 ..
Kubernetes StatefulSets Qwiklabs의 Running a MongoDB Database in Kubernetes with StatefulSets을 공부 하면서 정리한 내용이다. k8s에서 MongoDB를 셋업하는 내용이다. DB의 경우 상태를 계속 유지하고 있어야 하는 Stateful한 성격이 있기 때문에 k8s의 StatefulSet 에 대한 개념과 이해가 필요하다. Stateful App의 반대 개념은 Stateless App 이다. Reference https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/ MongoDB를 k8s에서 구축하기 위해서 StorageClass, headless service, St..
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다. ◎컴파일 시 오류 cannot find symbol -> 오타가 있을때 나오는 오류이다 (대소문자 구별을 잘 확인하자) ※에러 노트를 만들자 어떤 상황에서 에러가 났는지, 어떻게 고쳤는지 확인을 통해 추후에 에러를 잘 고칠 수 있게 된다. ◎공백과 주석 공백과 주석은 코드의 가독성을 높인다, 컴파일 시에는 사라지는 부분이다. ◎중괄호의 사용 중괄호는 코드(명령문)를 묶는다. 열었으면 닫아야한다. 중괄호를 기준으로 Tab 을사용한다 -> 어떻게 연결되는지 확인이 편리할 수 있도록 하는 것이다. ◎세미콜론의 사용 ; (세미콜론)은 하나의 명령문(실행문)이 종료됨을 알려준다.(마침표 개념) 실제로 실행할 때는 공..
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다. ◎자바설치 후 기본 설정 내 컴퓨터 오른쪽 클릭 후 속성에 들어간다. 시스템 속성 - 고급 - 환경변수 - 시스템 변수 추가 새로 만들기를 한다. JAVA_HOME 과 자바가 깔린 경로만 추가(C:\Program Files\Java\jdk1.8.0_73) path 를 수정하는데 맨 앞에 C:\Program Files\Java\jdk1.8.0_73\bin; 추가 자바가 올바르게 깔렸는지 확인을 하기 위해서는 명령프롬프트(실행 -> cmd) 를 통해 확인이 가능하다. java -version 을 입력한다. ◎명령 프롬프트 기본 명령어 cd : change directory의 줄임말로 위치를 바꿔주는 역할 dir ..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 PSA 소개 잘 만든 인터페이스 나의 코드 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 나의 코드 잘 만든 인터페이스 (PSA) 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 Service Abstractionhttps://en.wikipedia.org/wiki/Service_abstraction 예시 스프링 웹 MVC @Controller 와 @RequestMapping 나의 코드 @Controller | @ReuqestMapping | ... Servlet | Reactive 톰캣, 제티, 네티, 언더토우 스프링 트랜잭션 PlatformTransactionManager 나의 코드 @Transacti..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 AOP 소개 흩어진 코드를 한 곳으로 모아 흩어진 AAAA 와 BBBB class A { method a () { AAAA -> AAA 오늘은 7월 4일 미국 독립 기념일이래요. BBBB -> BB } method b () { AAAA -> AAA 저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다. BBBB -> BB } } class B { method c() { AAAA -> AAA 점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요. BBBB -> BB } } 흩어져 있는 것을 바꾸려면, 모두 찾아가서 바꿔야하는 문제가 생겨 모아 놓은 AAAA 와 BBBB class A { method a () { 오늘은 7..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 Inversion of Control 제어권이 뒤바꼈다고? 일반적인 (의존성에 대한) 제어권: “내가 사용할 의존성은 내가 만든다.” class OwnerController { private OwnerRepository repository = new OwnerRepository(); } IoC: “내가 사용할 의존성을 누군가 알아서 주겠지” 내가 사용할 의존성의 타입(또는 인터페이스)만 맞으면 어떤거든 상관없다. 그래야 내 코드 테스트 하기도 편하지. class OwnerController { private OwnerRepository repo; public OwnerController(OwnerRepository repo)..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 프로젝트 살펴보기 ( Pet Clinic ) 프로젝트 구조 설명 일반적인 메이븐 프로젝트 src/main/java src/main/resources src/test/java src/test/resources 스프링 부트 기반 프로젝트 스프링 부트 스프링 데이터 JPA DB: HSQLDB 뷰: 타임리프 캐시: EHCache 코드가 어떻게 흘러가는 걸까? 로그로 분석하는 방법 application-properties 에서 스프링 프레임워크의 기본 로깅 레벨을 변경하면 더 자세히 볼 수 있다. 디버거로 분석하는 방법 디버깅 포인트를 찍고, Debug 모드로 실행하면 된다.
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 기본 Error Handler 스프링 부트에는 기본적으로 error handler가 들어가 있다. index페이지가 없을 때, localhost:8080으로 요청 시, 보이는 화면이 기본 error handler가 처리해준 결과이다. @MVC 예외 처리 방법 Error를 테스트 하기 위해 Controller를 만들어준다. Controller에서 /hello 요청이 왔을 때 Error를 던지게 한다. SampleException이라는 클래스를 만들어 RuntimeException을 던지도록 해준다.(extends RuntimeException) 그 후, 이 앱에 특화되어 있는 error 정보를 담고 있는 커스텀 클래스를 만들어..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 스프링부트는 복잡한 프로젝트 의존성을 '스타터(Starter)' 의존성 수십 개로 해결한다. 그저 프로젝트에 필요한 기능들을 빌드에 선언을 하기만 하면, 그에 필요한 개별 라이브러리들을 자동으로 추가해준다. 스타터 의존성을 사용안한다고 생각해보자. 그렇다면 스타터 의존성의 장점을 바로 알 수 있을 것이다. 스프링 부트 없이 빌드하려면 어떤 의존성을 추가해야 할까? 스프링 MVC를 지원하려면 어떤 의존성들이 필요할까? 어떤 버전을 사용해야 잘 호환이 될까? 이렇듯 이미 코드 첫줄을 작성하기도 전에 빌드 명세에 어떤 것을 추가하여 기능을 만들어야 할지 많은 고민해야 한다. 이러한 많은 고민 끝에 그레이들 빌드 명세에 다음 의존성..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 @SpringBootApplication은 다음의 3개의 어노테이션을 포함한다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration SpringBoot 어플리케이션 구동에 특히 눈여겨 볼 것은 @ComponentScan 과 @EnableAutoConfiguration @ComponentScan @Component @Configuration, @Repository, @Controller, @Service, @RestController 위 어노테이션을 포함한 모든 클래스를 Bean으로 등록한다. @EnableAutoConfiguration - 설정 자동 등록하기 S..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 @WebServlet 서블릿을 선언할 때 사용되는 Annotation 이 Annotation이 표시된 클래스는 Servlet Container에 의해 처리된다. 속성 값을 통해 해당 Servlet과 매핑될 URL 패턴을 지정한다. @Controller 이 Annotation이 표시된 클래스는 “Controller” 임을 나타낸다. @Controller는 @Component의 구체화된 역할을 한다. classpath scanning을 통해 구현 클래스를 자동으로 감지할 수 있도록 해준다. 일반적으로 RequestMapping 어노테이션을 기반으로 한 handler method와 함께 사용한다. @WebServlet과 @Cont..