본문 바로가기
반응형

전체 글95

Basic한 알고리즘 문제 Binary Tree에서 최대 Depth 구하기 Root노드 기준으로 좌측 노드들의 총 Depth와 우측 노드들의 총 Depth 중 가장 큰 값에 1을 더한 값 MaxDepth = max(좌측Node의 maxDepth, 우측Node의 maxDepth) + 1 int maxDepth(Node node) { if (node == null) { return 0; } int left = maxDepth(node.left); int right = maxDepth(node.right); return Math.max(left, right) + 1; } Binary Tree에서 모든 노드의 갯수 구하기 Root노드 기준으로 좌측 노드들의 총 갯수에 우측 노드들의 총 갯수의 합에 1을 더한다 총 노드 수 = (좌측 총 .. 2019. 11. 22.
파이썬 딕셔너리 (Python - Dictionary) 딕셔너리(Dictionary) 파이썬 딕셔너리는 리스트와 유사 항목의 순서를 따지지 않음 Key, Value 형식 Key는 대부분 문자열 or 불변하는 타입 가능(Bool, 정수, 부동소수점수, 튜플, 문자열..) 변경 가능함, 추가, 삭제, 수정 가능 Java의 HashMap과 유사 생성 : {} 중괄호({}) 안에 콤마(:)로 구분된 키:값 쌍을 지정. empty_dict = {} test_dict = { "hobby": "soccer", "description": "I'm a good boy!" } 딕셔너리로 변환하기 : dict() 두 값으로 이루어진 시퀀스를 딕셔너리로 변환 가능 list = [['a', 'b'], ['c', 'd'], ['e', 'f']] dict(list) 결과 {'c':'d.. 2018. 11. 2.
Spring AOP (Aspect Oriented Programming) Spring AOP(Aspect Oriented Programming) 개요 관점 지향 프로그래밍(AOP)은 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법이다. 공통된 관심사항을 모듈화하여 여러 코드에 쉽게 적용할 수 있도록 도와준다. 이를 구현하기 위해 기존의 OOP 방식으로는 한계가 있어 (상속, 위임 등으로 해결하려 하지만 코중복된 코드 등의 한계 발생) AOP개념이 도입되었다. 그렇기 때문에 OOP와는 반대되는 개념이 아닌 보완을 해주는 개념이라고 볼 수 있다. Spring IoC 컨테이너에 의존하지 않기 때문에 필요하지 않으면 사용하지 않아도 무방하다. 이러한 특성 때문에 핵심 비즈니스 로직을 변경하지 않고도 공통 관심 기능을 추가, 적용할 수 있다. 공통 관심 기능은 주로 로깅, 트랜잭.. 2018. 10. 30.
Java8 람다표현식 (Lambda Expression) Lambda Expression Introduction 람다 표현식(Lambda Expression)은 Java8의 새롭고 중요한 기능이다. 이것은 표현식을 사용하는 하나의 인터페이스 메서드를 표현하기 위해 간결하고 명확한 방법을 제공한다. 람다표현식은 또한 Collection으로 부터 데이터를 추출하고 거르고 반복하는 아주 쉽게 만들 수 있도록 Collection 라이브러리들을 개선했다. 게다가 멀티코어 환경에서 새로운 동시성 기능 성능이 향상된다. 람다식(Lambda Expression) 아래코드를 보자. calculator(new Operator { public int execute(int a, int b) { return a + b; } }); 여기서 필요한 코드는 연산하는 부분인 a + b가 전.. 2018. 10. 30.
Spring Boot로 Gradle + SpringMVC + JSP 적용하기 Spring Boot를 이용해서 JSP를 사용하려고 할 때, 별도의 작업을 해야만 합니다. Spring Boot를 사용하는 것부터 JSP페이지를 출력하는 과정을 정리해봅니다. Spring Initializer http://start.spring.io/ Spring Boot Initialize 하는 사이트입니다. 원클릭으로 기본적인 프로젝트를 zip파일 형태로 생성할 수 있습니다. 여기서는 gradle, Spring Boot 1.3.6버전을 선택했고 SpringMVC로 구현할 것이기 때문에 Dependencies에는 Web을 추가했습니다. Generate Project 클릭하면 [Artifact name].zip 파일을 다운받을 수 있습니다. * JPA나 MongoDB, Redis, OAuth 등 다양한 .. 2016. 7. 12.
파이썬(Python) 배열, 리스트(List) 여러 데이터를 담기위한 자료구조로 배열(List)을 가장 많이 사용합니다. 아마도 개발하면서 가장 많이 사용하는 자료구조가 아닐까 생각되는데요. 대표적으로는 Java의 ArrayList가 있겠죠. 파이썬도 당연히 리스트를 제공합니다. 어떠한 방법으로 파이썬에서 리스트를 사용하는지 기본적인 문법과 함께 예를 들어가며 진행해보겠습니다. squares = [1, 4, 9, 16, 25] print(squares) 1부터 5까지의 제곱값이 담겨있는 squares 리스트를 선언하였습니다. 파이썬의 리스트는 [, ] 문자로 표기합니다. Java와 C언어의 배열에 자주 사용된 형태니 쉽게 적응할 수 있습니다. Slicing 파이썬은 indexing을 이용해서 값을 가져올 뿐만 아니라 여러값을 쪼개서 가져올 수 있습니.. 2016. 6. 29.
안드로이드 Permission Denial: android.permission.READ_EXTERNAL_STORAGE 오류 MP3 관련 앱을 개발하던 중 뜬금없는 Permission 오류가 발생. Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media ... requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 폰은 갤럭시 S7. 마시멜로우 환경에서 테스트. 분명 Manifests에 permission을 지정했는데 왜 오류나는거지? 알아보니 M 버전(SDK23) 에서는 Permission을 별도로 지정해야한다. Manifest의 uses-permission은 SDK21버전에 적용되기 때문에 uses-perm.. 2016. 6. 25.
NoSQL 데이터 모델링 기법 앞서 NoSQL의 특징과 데이터 모델링의 개념을 살펴봤는데, 그 종류가 매우 다양하고 각 종류마다 데이터 관리 방식이 다르다는 것을 알 수 있었습니다. 다양하게 데이터를 모델링 할 수 있는 만큼 여러 기법들이 존재하는데 어떤 기법들이 있는지 살펴보고 그 중 대표적인 기법들에 대해서 자세히 알아보도록 하겠습니다. 주요 NoSQL 데이터 모델링 기법 Atomic AggregatesEnumerable KeysDimensionality ReductionIndex TableComposite Key IndexAggregation with Composite KeysInverted Search - Direct AggregationMaterialized Path..... NoSQL의 데이터 모델링 기법에는 위와 같이 다.. 2016. 6. 14.
NoSQL 데이터 모델링 개념 데이터베이스를 사용할 때 가장 중요한 것은 역시 데이터 모델링이라고 할 수 있습니다. 데이터를 어떤 형태로 관리하고 적재할 것인지에 따라 성능이나 관리적인 측면에서 큰 차이가 날 수 있기 때문입니다. 기존의 RDBMS 방식과 NoSQL의 모델링 방법은 서로의 개념이 다른 만큼 큰 차이가 있습니다. 관계형 데이터베이스의 모델링은 주로 데이터들을 정규화(Normalization) 하는 방식으로 진행합니다. 반면에, NoSQL의 모델링은 비정규화(Denormalization)를 기본으로 가져갑니다. NoSQL의 데이터 모델링 개념과 기법, 예시를 보면서 알아보도록 할텐데 먼저 개념부터 알아보겠습니다. NoSQL 데이터 모델링 개념비정규화(Denormalization)와 함께 Aggregates, Applica.. 2016. 6. 10.
NoSQL의 특징 #2 MongoDB를 시작하기에 앞서 NoSQL의 개념부터 차근차근 알아보고 있습니다. 지난번 포스팅인 NoSQL의 특징 #1 에 이어서 이번에는 NoSQL의 종류와 장점과 단점을 알아보겠습니다. NoSQL에는 여러 종류가 있는데 각각 어떤 특징이 있는지, 그리고 NoSQL과 RDBMS와의 비교를 통해 장단점을 알아볼 것입니다. NoSQL의 종류MongoDB, HBase, Redis, CouchDB, Cassandra, Dynamo 등등 현재 여러 곳에서 사용되고 있는 NoSQL 방식의 데이터베이스들 입니다. 이외에도 수많은 데이터베이스들이 존재하는데 각각 약간씩 다른 데이터 모델에 기반을 두고 있습니다. Steven Yen이 블로그에서 밝힌 NoSQL의 종류는 다음과 같은데요.Key/Value StoreOr.. 2016. 6. 7.