일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 김영한
- 스프링 핵심원리
- 클린아키텍처
- 스프링
- 코딩테스트
- 이펙티브자바
- 알고리즘
- kubernetes
- ElasticSearch
- 예제로 배우는 스프링 입문
- Sort
- 카카오 면접
- 이차전지관련주
- 엘라스틱서치
- effectivejava
- 자바스크립트
- JavaScript
- Effective Java
- 이펙티브 자바
- 카카오
- 스프링핵심원리
- Effective Java 3
- 스프링부트
- 알고리즘정렬
- java
- 티스토리챌린지
- k8s
- 오블완
- Spring
- 자바
- Today
- Total
목록분류 전체보기 (153)
Kim-Baek 개발자 이야기
Jpa를 사용하다가, entity를 repository를 통해서 삭제했는데 DB에 값이 남아있고 삭제가 되지 않는 경우가 있다. 어떤 경우인지 우선 살펴보겠다. 첫 번째로 유저 엔티티이다. @Entity public class Users implements Serializable { @Id @GeneratedValue private long id; private String name; @OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = {CascadeType.ALL}) private Set userRoleUser; // GETTERS AND SETTERS } 두 번째로 유저 롤 엔티티이다. @Entity public class UserRol..
IT기업의 신입 채용을 위해 코딩 테스트 준비를 정말 많이 했었다. 인적성, NCS와 같은 필기테스트 공부는 거의 하지 않고 오로지 코딩테스트 알고리즘 공부만 했던 기억이 난다. 대학생때는 백준 온라인 저지 사이트의 알고리즘 문제를 풀었었다. 알고리즘 문제가 익숙하지 않던 대학생에게 한글로 된 문제와 사이트가 알고리즘 문제의 거부감을 많이 없애줬던 것 같다. 문제를 풀어볼수록 잘 하고 있나에 대한 의구심과 실력이 늘고있다는 느낌을 못받았었던 것 같다. 하지만 코딩테스트 시험을 보거나 알고리즘 테스트를 하다보면, 많이 성장했던 것을 느꼈던 것 같다. 대학생때는 C++로 알고리즘 문제를 풀었었는데, C++ 언어의 특별한 자신감이 있다거나 잘 아는 것은 아니였지만 그저 알고리즘 문제를 위해서 C++를 공부하고..
일반적으로 회사에서 업무를 하면 Git 을 사용하는 경우가 가장 많다. 본인이 작업한 내용을 push 하고 merge까지 하려고 하면, 다른 사람이 작업한 내용과 conflicts 가 나는 경우가 있다. 최근 Github 에서는 충돌이 났을 때, 간단한 충돌의 경우 웹 상에서 해결할 수 있는 기능이 존재한다. [Github Web 에서 충돌 해결] Merge를 하려고 보면 저렇게 충돌이 났다고 나오고, Resolve conflicts 버튼이 활성화 된다. 이 버튼을 누른다. 그러면 아래와 같이 충돌난 부분의 소스코드가 나온다. 이 부분을 고치고, 체크하면 Github 웹 상에서 바로 충돌의 해결이 가능하다. [Git 명령어로 충돌 해결] 모든 경우에 웹으로 되는 것이 아니기 때문에, 명령어로 충돌을 해결..
스칼라에 대해서 이야기 해보려고 한다 이전 포스트에서 Spark 의 구조에 대한 설명을 했는데 Spark 코드를 주로 Scala로 많이 작성한 것들을 봤었다 Scala 무엇일까?? Functional Programming 언어로 많이 불린다. Scala lets you write code in an object-oriented programming (OOP) style, a functional programming (FP) style, and even in a hybrid style, using both approaches in combination. 스칼라는 또한 객체지향적인 (OOP) 프로그래밍도 가능하고 함수형 프로그래밍(FP) 프로그래밍도 가능하다 Scala 공식 문서에는 Hybrid Style?..
오늘 Apach Spark 에 대해서 공부해보려고 합니다. Apach Spark 는 In memory 방식의 대용량 데이처 처리 엔진입니다 Java, Scala, Python, R 과 같은 high level API 를 제공하고 있고, 특히 Spark SQL 같은 SQL을 위한 다양한 라이브러리를 제공하고 있습니다. 분산 클러스터 컴퓨팅 프레임워크로 Standalone 환경 뿐만 아니라 Cluster mode를 통해 대용량 데이터 처리가 가능합니다 특징 스파크는 인메모리 (In Memory) 기반 처리로 빠른 처리가 가능하며 Cluster Manger를 활용해 분산환경에서도 처리가 가능합니다. YARN, Mesos, Kubernetes 등 다양한 클러스터에서 동작이 가능합니다 기존 대용량 처리 프레임워크..
브라우저에서 html을 그리기 위해서 여러 가지 과정이 있다는 것을 알고 있었지만 정확하게 알지 못했는데, 렌더 트리가 어떻게 그려지고, 어떤 과정인지를 정확하게 설명하고 있는 내용이다. 브라우저의 핵심 기능은 사용자가 참조하고자 하는 웹페이지를 서버에 요청(Request)하고 서버의 응답(Response)을 받아 브라우저에 표시하는 것이다. 브라우저는 서버로부터 HTML, CSS, Javascript, 이미지 파일 등을 응답받는다. HTML, CSS 파일은 렌더링 엔진의 HTML 파서와 CSS 파서에 의해 파싱(Parsing)되어 DOM, CSSOM 트리로 변환되고 렌더 트리로 결합된다. 이렇게 생성된 렌더 트리를 기반으로 브라우저는 웹페이지를 표시한다. 클라이언트 (브라우저) 를 보면 렌더링엔진과 자..
프론트엔드 관련 테스트를 하면서, 항상 사용했던 것이 브라우저의 개발자 도구이다. 개발자 도구를 통해서 어떤 행동을 할 수 있을지를 아래에서 설명한다. 1.1 개발자 도구 크롬 브라우저가 제공하는 개발자 도구(DevTools)은 자바스크립트 개발에 필수적인 강력한 도구이다. 개발자 도구는 브라우저에 기본 내장되어 있으므로 별도의 설치가 필요없다. 개발자 도구는 아래의 단축키로 오픈할 수 있다. 단축키 Windows F12 또는 Ctrl + Shift + I macOS command ⌘ + option ⌥ + I 예전에 프론트엔드를 개발할 때 가장 어려운 것이 무엇일까요? 라는 질문을 들은 적이 있다. 그 때의 나는 디버깅이 아닐까요 라고 대답을 했던 것 같다. 사실 프론트엔드의 디버깅을 내가 잘 할 줄 ..
- Type 통일 : 부모타입에 자식객체를 모두 대입가능 상속 -> 다형성 + overriding -> abstract -> Interface - 코드 재사용 -> 타입통일 : 다형성을 위해 사용이 된다. ※ 객체와의 좋은 관계 1. high cohesion (높은 집중도) (하나의 클래스가 하나의 일만 하자) : 단일 책임 2. loose coupling (느슨한 연결) - 관계가 깊을수록 다른 쪽에 영향을 끼칠 가능성이 많다. ◎ 내부 class (Nested class, inner class) - JDK 1.1 에서 추가되었다. GUI에 대한 것이 많이 바뀌게 되었는데, 그것을 지원하기 위해 나오게 되었다. class A{ class B{ } -> class 안에 class를 정의 -> 외부 cla..
POST post 메서드는 기존에 알고있던대로 등록에 관한 내용이다. http 메세지로 넘어온 엔티티를 새로운 자원으로 등록한다. 새로운 자원으로 등록하지않을 수도있는데 이런 경우엔 200(ok)이나 204(no content) response code로 응답한다. 새로운 자원으로 만들어진 경우에는 201(created) response code로 응답하며 신규 생성된 자원의 위치를 헤더에 포함해야한다. 무슨 말이냐하면 예를들어 게시판에 새로 게시물을 등록하면 이를 따라갈수있는 위치를 응답 헤더에 넣어야한다는 의미다. 201 created Location: /board/2 PUT post와 가장 큰차이는 put 메서드는 자원의 식별자를 이미 알고있는 상태여야한다는 점이다. put 메서드는 식별자의 자원을..
- 웹 서버 (Web Server) 클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터) CASE 정적 컨텐츠를 요청(request)했나? 1. 정적 컨텐츠구나! 내가 제공해줄게 => .html, .png 등 응답(response) 2. 정적 컨텐츠가 아니구나.. 웹서버에서 간단히 처리 못하겠군. WAS에게 처리를 부탁해야겠다! => 결국 WAS가 처리해준 컨텐츠를 받은 웹서버는 응답(response)을 해줌 대표 : Apache, nginx - WAS (Web Application Se..
"브라우저에 도메인을 입력하면 → DNS서버에 IP주소를 요청 → 수신한 IP주소에 해당하는 웹서버에 접속" 1. 로컬PC의 hosts파일 확인 ( 브라우저에 캐싱되어 있는지 먼저 확인하자 ) 로컬PC의 C:\Windows\System32\drivers\etc 경로(윈도우 설치 경로에 따라 조금 차이가 있을 수 있음)에는 hosts라는 파일이 있다. 이 파일을 메모장으로 열어보면, IP주소와 도메인 주소를 설정할 수가 있다. 이 파일은 PC의 자체 DNS역할을 하며, 브라우저는 가장 먼저 이 파일을 확인하여 입력한 도메인의 매핑정보가 존재하는지 확인한다. 2. DHCP&ARP 대부분 가정집에서는 DHCP로 인터넷 접속을 하고 있을 것이다. DHCP는 Dynamic Host Configuration Pro..
제 2정규화를 수행 했을 경우 테이블의 모든 컬럼이 완전 함수적 종속을 만족한다.(부분 함수적 종속을 모두 제거되었다.) 이를 이해하기 위해서는 부분 함수적 종속과 완전 함수적 종속이라는 용어를 알아야 한다. 함수적 종속: X의 값에 따라 Y값이 결정될 때 X -> Y로 표현하는데, 이를 Y는 X에 대해 함수적 종속 이라고 한다. 예를 들어 학번을 알면 이름을 알 수 있는데, 이 경우엔 학번이 X가 되고 이름이 Y가 된다. X를 결정자이라고 하고, Y는 종속자라고 한다. 다른 말로 X가 바뀌었을 경우 Y가 바뀌어야만 한다는 것을 의미한다. 함수적 종속에서 X의 값이 여러 요소일 경우, 즉, {X1, X2} -> Y일 경우, X1와 X2가 Y의 값을 결정할 때 이를 완전 함수적 종속이라고 하고, X1, X..
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다 ◎ abstract - 메소드와 class 에 붙는 제한자 (modifier) - 추상의 , 구현되지 않은 이라는 의미 ex) public abstract class A { } 이렇게 추상적인 클래스의 경우 하위클래스에서 재정의 (오버라이딩) 해야하는데 이는 강제가 아니다. -> 다른메소드를 만들 수도 있고, 안만들 수도 있고 자기 마음대로 하게된다. => 이것을 강제하는 것이 abstract 메소드이다 ※ Animal 의 경우 타입으로는 많이 쓰인다. 하지만 실제 new Animal 로 객체를 생성해서 쓸일은 많이 없다 ex) 동물원에서 개 , 고양이 객체를 생성하지 동물객체를 생성하지는 않는다. => 부모클..
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다 ◎ super - 부모객체를 의미한다. this 는 (현재)이 객체 - super.부모객체의 멤버 -> 부모객체의 instance 변수/메소드 호출시 사용 ※ super . 는 생략하더라도 보통 컴파일러가 알아서 처리! - ★ super( [값, ...] ) -> 부모객체의 생성자 호출 -> 생성자 구현부의 첫 구문으로 와야한다 (this(), super()는 같이 올 수 없어!) -> 생성자 구현부에 this () 나 super 가 없으면 super(); 가 첫 구문으로 들어가게 된다 public A( ){ super(); 부르기 -> 상위 클래스의 객체를 자동으로 만들어서 같이 묶어서 사용할 수 있도록 하기..