public interface Student { String getName(); } public interface Citizen { String getName(); } public class Brad implements Citizen, Student{ @Override public String getName() { return "Brad"; } } Student Interface 와 Citizen Interface 를 동시에 구현하는 Brad 라는 클래스가 있습니다. 각 인터페이스는 getName 이라는 문자열을 반환하는 메서드를 가지고 있고 이 인터페이스를 구현하는 Brad 클래스는 반드시 getName 메서드를 오버라이드 해야 합니다. Brad 클래스 에서는 getName 을 오버라이드 하고 있습니다..

Gradle은 JAVA 개발에 엄청난 도움을 주는 강력한 Build Tool이지만 생소한 groovy 문법과 설정 파일, 사용방법 때문에 오히려 신입 개발자 들을 헷갈리게 하기도 합니다. 다행인 점은 gradle 을 사용하기 위한 학습 곡선이 높지 않고 대부분의 팀에서 gradle을 어렵게 사용하지 않는다는 점입니다. 이 포스트에서는 웹 개발에 필요한 최소한의 gradle 지식을 알아 보도록 하겠습니다. Build Tool Gradle 은 일종의 build tool(빌드 도구) 입니다. 여기서 말하는 빌드라는 개념은 단순히 프로그램을 컴파일하여 애플리케이션을 생성하는 작업만을 의미하지는 않습니다. 개발한 소프트웨어가 제품으로 만들어지는 일련의 과정, 즉, 컴파일, 테스트, 배포, 문서화 등의 작업을 포함..

이전에 서블릿 보안과 관련된 포스트(링크)를 작성했던 적이 있습니다. 서블릿 기반의 웹 애플리케이션에서 인증과 인가 과정을 간단하게 설명했습니다. 스프링에서는 마찬가지로 이런 인증과 권한등 보안에 관한 기능을 제공하는 프레임워크인 스프링 시큐리티(Spring Security)가 있습니다. 스프링 시큐리티는 보안과 관련되어 수행해야 하는 다양한 작업들을 지원해 줍니다. 하지만 저와 같은 신입 개발자들이 스프링 시큐리티와 같은 보안기술을 이해하는 것은 쉬운 일이 아닌 것 같습니다. 여전히 모르는 것이 더 많고 어렵게 느껴지는 부분이지만, 최근 진행한 팀 프로젝트에서 스프링 시큐리티와 관련된 기술을 쓰며 알게된 사실들과 코드를 포스팅해 보려고 합니다. 인증(Authentication)과 권한(Authoriza..

IPv4 는 32비트로 구성된 프로토콜입니다. 32비트로 표현할 수 있는 IP 주소는 대략 42억개 정도로 이미 공인 IP는 2011년 부터 고갈되어 아주 제한적으로 할당이 이루어지고 있습니다. 그러나 인터넷이 연결된 개인용 컴퓨터와 모바일 디바이스는 끊임없이 늘어나고 있습니다. 당연히 존재하는 공인 IP만으로 이 모든 장치들을 커버하는 것은 불가능 한 일입니다. 사설 IP 사설IP는 부족한 공인 IP 숫자를 보완하기 위한 하나의 수단이 될 수 있습니다. 인터넷 서비스 제공자(ISP, Internet Service Provider)가 부여하는 공인 IP는 외부 인터넷망과 연결된 라우터(공유기)에 부여되고 라우터(공유기)에 연결된 내부 네트워크의 디바이스들은 내부 네트워크에서만 사용되는 가상의 IP주소를 ..

String 은 웹개발을 할 때 가장 많이 사용하는 자료형입니다. 그러다보니 실무에서는 String 객체를 잘 알고 활용하는 것이 중요합니다. 그런데 생각보다 String 객체를 잘 못 사용해서 생기는 버그가 많습니다. 오늘은 간단하게 String 객체를 비교할 때 주의해야 할 점 세 가지를 알아 보도록 하겠습니다. String class 의 method 를 소개한 포스트가 있으니(링크) 참고하시면 좋을 것 같습니다. 1. '==' vs equals() String 자료형을 선언하는 방법은 크게 두 가지가 있습니다. 하나는 리터럴 문자열 값을 대입하는 것이고 하나는 new 키워드를 사용해 String 객체를 직접 생성하는 방법입니다. 그런데 두 값을 '==' 연산을 통해 비교하면 같은 문자열을 저장하고 ..

지난주 한 회사의 면접에서 다음과 같은 질문과 답변을 주고 받았습니다. 면접관 : 추상 클래스와 인터페이스의 차이에 대해서 설명해 보세요. 나 : 네, 추상 클래스는 추상 메소드를 가진 클래스이고 인터페이스는 추상 메소드로만 이루어져 있는 것입니다. 면접관 : 다른 차이점은 없나요? 나 : (당황) 어... 제가 실무에서는 거의 인터페이스만 사용해 봐서... 잘 모르겠습니다. 면접관 : (실망한 표정) 네, 알겠습니다. 집에 돌아오며 생각해 보니 제가 알고 있는 것만으로도 그 자리에서 몇가지 대답을 더 할 수 있었을텐데 당황하는 바람에 제대로 답변을 못 한 부분이 아쉬웠습니다. 만약 다른 면접장에서 비슷한 질문을 받게 된다면 더 잘 대답하기 위해 추상클래스와 인터페이스의 차이에 대해 기록해 두려고 합니다..
알고리즘 책이나 강의를 보면 항상 초반에 한 가지 탐색 방법이 소개 됩니다. 이분탐색(binary search)라는 이름을 가지고 있는 이 알고리즘은 보통 책이나 강좌의 앞쪽에 소개 되는데다 그 개념 자체가 이해하기 어렵지 않기 때문에 배울 때는 큰 어려움이 없지만, 의외로 코딩테스트의 문제로 만나게 되면 문제를 쉽게 풀 수 없게 만드는 복병이 되기도 합니다. 오늘은 이 이분 탐색에 대해 간단히 알아보고 실제 코딩 테스트에서 어떻게 활용할 수 있는지에 대해 생각해 보도록 하겠습니다. 사실 이분탐색의 개념은 매우 간단하고 직관적입니다. 이를 설명하기 위해 스무고개 놀이를 한 번 해 보도록 하겠습니다. 1부터 100사이에 있는 숫자를 하나 생각하고 가능한 적은 횟수의 추측으로 이 숫자를 알아내는 방법을 생각..

정렬(Sort)은 알고리즘 과목에서 항상 단골로 출제되는 영역입니다. 오늘은 그 중에서 힙 정렬(Heapsort)를 알아보도록 하겠습니다. 우선 이 정렬 알고리즘을 이해하기 위해서는 힙(heap)이라는 독특한 자료구조에 대해 먼저 이해 해야 합니다. 그런데 이 heap을 알려면 우선순위큐(Priority Queue)를 또 먼저 알아야 합니다. 그러면 또 그냥 큐(Queue)가 뭔지도 알아야겠죠. 점점 일이 복잡해 지니까 아주 단순하게 설명하도록 하겠습니다. 각각의 개념에 대해 부족한 설명은 추후에 (가능하다면)포스트 하도록 하겠습니다. 큐(Queue)는 컴퓨터의 기본적인 자료구조의 일종입니다. 먼저 삽입된 데이터가 먼저 나오는 FIFO(First In First Out)구조로 되어 있는데 화장실 앞에 줄..
- Total
- Today
- Yesterday
- DP
- 코딩의 기술
- 자바스크립트 개론
- 야근
- java
- Warning
- RESTful
- REST API
- markov chain
- 로그
- html
- was
- restful api
- 자바스크립트개론
- Spring in Action
- 크롬
- CONVENTIONS
- 전략패턴
- 클린코드
- 몰라서망신
- 디자인패턴
- 문장 생성기
- Markov
- Count
- GROUP BY
- 마르코프
- 동적계획법
- 마르코프 연쇄
- 유지보수
- 경고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |