목록프로그래밍 (7)
nathan_H
글쓰는 또라이가 세상을 바꾼다 글또라는 개발자 글쓰기 모임에 지난 기수 참여하면서 내가 작성한 글 이외에 다른 분들의 글을 보면서 동기부여와 내가 작성한 글에 대해 아쉬움이 많이 남아 이번에도 지원해 참여하게 되었다. (개인적으로 글 쓰는 또라이가 세상을 바꾼다는 워딩은 참 매력적이다.) 글또를 다시 하는 이유 지난 기수를 활동하면서, 이론적인 내용을 정리하는 것보단 정말 내가 이해한 내용으로 생각을 글로 담아내기가 절대 쉽지 않은 과정이라고 느꼈다. 그래서 몇 개의 글은 쓰고 지웠던 적도 있다. 그래서 이번 기수에는 이론적인 내용을 담아내는 것도 물론 좋지만, 이론적인 내용에서 더 발전해서 내가 실제 해당 내용을 적용하고 느낀 부분과 다양한 예시를 통해 글을 작성하는 것이 목표이다. 나만의 컨텐츠 지난..
Intro Spring Security를 사용하다 보면, 인증이 된 유저는 UsetDetailsService에서 리턴을 한 후 UserDetails 타입의 객체가 바로 Principal 로 변환되어 사용하게 된다. 즉 인증이 된 유저는 Principal이 되고 인증이 필요한 로직에 사용되게 된다. 가령 아래와 같은 코드에서 현재 인증이 처리된 유저의 클라이언트 등록 목록을 조회하는URI 요청이 들어올 시 파라미터로 현재 인증이 처리 된 Principal이 들어오게 되면서 해당 Principal의 name (username)으로 클라이언트 등록 조회 목록을 조회할 수 있게 된다. @GetMapping("/info") public ModelAndView registrationInfo(ModelAndView ..
최근 알고리즘 문제를 풀면서 벽에 부딪히는 느낌이 많이 들었는데, 그 중 Dynamic Programming이라는 유형의 문제는 쉽게 감이 잘 잡히지 않는 유형 중 하나였다. 그럼에도 불구하고 Dynamic Programming은 중요한 알고리즘 디자인 패러다임이기에 한 번 제대로 이해하고 문제도 풀어볼 가치가 있다. Dynamic Programming 사실 Dynamic Programming 이름만 가지고는 다른 "이분 탐색", "분할 정복", "너비 우선 탐색"과 같이 무엇을 의미하는 잘 다가오지 않는데, Dynamic Programming이라는 말은 최적화 문제를 연구하는 수학 이론에서 왔으며 전산학 전반에서 일반적으로 사용하는 Dynamic, 혹은 Programming이란 단어와는 아무런 관련이 ..
인터페이스란? 인터페이스의 의미 자체는 아래와 같다. - 전기 신호의 변환(變換)으로 중앙 처리 장치와 그 주변 장치를 서로 잇는 부분. 또는, 그 접속 장치. - 키보드나 디스플레이 등처럼 사람과 컴퓨터를 연결하는 장치. - 소프트웨어끼리 접촉·공통되는 부분. 순화어는 `접속'. 즉 인터페이스의 의미를 한 줄로 요약하면 "접속하는 장치" 이다. 그리고 이 의미는 자바에서도 그대로 적용된다. 자바 인터페이스의 개념과 역할 개념 개발 코드와 객체가 서로 통신하는 접점, 객체의 사용 방법을 정의한 타입. 역할 개발 코드가 객체에 종속되지 않도록 방지 개발 코드 변경 없이 리턴값 또는 실행 내용을 다양하게 구현 (다형성) 개발자들 간의 하나의 코드 규약 하나의 프로그램을 제작할 때에는 "설계"와 "구현"을 하..
시작하기 알고리즘을 풀다보면 그래프 자료구조를 사용하는 경우가 많고, 그래프 자료구조를 사용하는 문제의 상당수는 DFS, BFS을 구현해 문제를 해결하는 경우가 많다. 그리고 문제의 난이도가 올라갈수록 단순한 DFS, BFS가 아닌 다양한 형태로 변형한 DFS, BFS을 요구한다. 그래서 DFS, BFS 개념과 몇가지 유형을 통해 한번 DFS, BFS을 뿌시고자 한다. Graph 자료형 그래프 자료형의 경우 선형 자료구조나 트리 자료구조로 표현하기 어려운 多:多의 관계 를 가지는 원소들을 표현하기 위한 자료구조로 객체의 정점과 객체를 연결하는 간선의 집합이다. 그래프 객체를 나타내는 정점(vertex)과 객체를 연결하는 간선(edge)의 집합 𝐺 = (𝑉,𝐸) − 𝑉는 그래프에 있는 정점들의 집합 − 𝐸..
상속 https://blog.itthis.me/57 상속이란? 현실 세계 관점 부모가 자식을 선택해서 물려주는 행위 객체 지향 프로그래밍 관점 자식(하위, 파생) 클래스가 부모(상위) 클래스의 멤버를 물려받는 것 자식이 "부모를 선택"해 물려받음 상속 대상 : 부모의 필드와 메소드 활용 상속의 효과 부모 클래스 "재사용"해서 자식 클래스에서 빠르게 개발 가능 중복 코드 줄임 유지 보수 편리성 객체 다형성 구현 상속 대상 제한 부모 클래스의 private 접근 제한을 갖는 필드와 메소드는 제외 부모 클래스가 다른 패키지에 존재하는 경우, default 접근 제한을 갖는 필드와 메소드도 제외 클래스 상속 자식 클래스가 상속할 부모 클래스를 "지정"하는 키워드 자식이 부모를 지정! 자바의 상속은 다중 상속을 ..
Linked List 연결리스트는 대표적은 추상적 자료구조의 한 예로 기존 리스트 자료구조와 달리 Node와 Link를 가진 자료구조이다. 위에 그림처럼 데이터를 담고 있는 Node 그리고 각 노드들은 연결하는 Link를 통해 이루어져 있다. 연결 리스트의 장단점 연결리스트의 경우 링크를 통해 각 데이터가 연결이 되어 있기 때문에 배열에 비해 추가 / 삭제가 용이한 점을 가지고 있다. 반면에 특정 데이터를 찾기 위한 순차 탐색에 있어 탐색 속도가 배열에 비해 느린 단점을 가지고 있다. 하지만 연결 리스트는 '동적 할당'을 기반으로 한 자료구조이기 때문에 크기를 미리 지정할 필요가 없다는 큰 장점을 가지고 있기 때문에 많이 사용되어 진다. 그래서 궁극적으로 내가 어떠한 목적을 가지고 코드를 구성하느냐에 따..