본문 바로가기
반응형

분류 전체보기318

[Java] Unmodifiable Collection vs Immutable 차이점 카프카 컨슈머 코드리뷰를 하다가 'Unmodifiable Collection'이라는 것을 보게 되었다. 카프카에서 본 소스코드는 다음과 같았다. private List drainRecords(int n) { if (isDrained() || position >= records.size()) { drain(); return Collections.emptyList(); } // using a sublist avoids a potentially expensive list copy (depending on the size of the records // and the maximum we can return from poll). The cost is that we cannot mutate the returned .. 2019. 5. 29.
Java Map - HashMap, TreeMap, LinkedHashMap 비교, 차이점 데이터를 모아서 관리할 수 있는 클래스를 컬렉션이라고 한다. 컬렉션은 그 타입에 따라 내부에 데이터를 저장하는 구조와 처리하는 방법이 다르다. 내부에서 처리하는 방법에 따라 데이터의 탐색이 빠른 경우가 있고, 추가/제거가 빠른 경우가 있다. 사용하는 컬렉션의 특성을 잘 알고 사용해야 불필요한 성능 저하를 피할 수 있다. 자바에서 제공하는 컬렉션의 대표적인 예로 List, Map, Set 등이 있다. 그 중에 이번 포스트에서 알아볼 Map 종류는 Key 값과 Value 값을 관리해주는 컬렉션이다. Key - Value 쌍은 java.util.Map.Entry 클래스로 정의되며 이 Entry 들을 저장, 관리 해주는 컬렉션이 Map이다. Map 컬렉션은 다음과 같이 사용할 수 있다. 가장 많이 사용하는 Ha.. 2019. 5. 28.
자바 'for each' 구문 - Java의 향상된 for 문 자바를 이용해서 컬렉션 데이터를 처리할 때 반복문을 많이 사용한다. for 문을 이용해서 컬렉션 데이터 하나하나를 처리하는 코드는 일반적으로 다음과 같을 것이다. public static void main(String[] args) { int array[] = {1, 2, 3, 4, 5}; for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } // 출력 // 1 // 2 // 3 // 4 // 5 초기부터 자바를 사용해 왔거나 C 언어 같은 언어를 사용하던 프로그래머라면 이런 형태의 코드가 자연스럽게 받아들여질 것이다. 하지만 JDK 5.0 버전부터 for each 구문을 제공하면서 더 간결하게 컬렉션 데이터를 사용할 수 있.. 2019. 5. 27.
멀티 태스킹에 대하여 모두가 바쁘게 살고 있는 요즘. 업무 능력과 생산성을 향상시키기 위해 많은 직장인들이 멀티태스킹을 하고 있다. 업무를 진행하면서 메일도 읽고, 전화 응대도 하고, 보고서도 쓴다. 게다가 틈틈이 친구들과 메신저로 대화도 나눈다. 이 모든 것을 처리하고 있는 자신의 모습을 보면 열심히 일하는 열정적인 직장인이 된 것 같아서 뿌듯하다. 생각해보면 나도 멀티태스킹을 많이 하고 있었다. 배치 프로그램을 돌려놓고 모니터링을 하면서, 다른 프로그램을 개발하고 있다. 헤드폰을 쓰고 음악을 들으며, 틈틈이 친구들과 메신저로 잡담도 나눈다. 중간중간 메일 확인을 하고, 배치 프로그램 모니터링 화면을 흘깃흘깃 본다. 처리해야 할 일들이 많아질 수록 동시에 하는 일이 많아지게 된다. 하지만 이런 멀티태스킹 정도가 높아질 수록.. 2019. 5. 26.
2019년 돈 많이 주는 프로그래밍 언어 순위 개발자의 필수 사이트 중 하나인 '스택오버플로우(Stackoverflow)'에서 개발과 관련된 설문조사를 진행, 결과를 발표했다. 이전에 프로그래밍 언어 순위 포스트에서도 참고했던 설문조사인데 2019년 버전이 발표되었다. (링크 : Developer survey results 2019 - stackoverflow) 프로그래밍 언어 인기 순위 2019 2018년 순위에 이어 자바스크립트가 프로그래밍 언어 인기순위 1위를 차지했다. 2위는 역시 HTML과 CSS, 그 뒤를 역시 SQL이 이었다. 작년과 크게 달라진 바는 없다. 가장 인기있는 웹 프레임 워크 순위 1위로는 jQuery가 선정되었다. 그 뒤를 React.js와 Angular/Angular.js가 따랐다. 웹 프레임워크는 잘 모르기 때문에 넘어.. 2019. 5. 22.
[GitHub] PR 템플릿, 이슈 템플릿 등록하기 (Pull Request Template, Issue Template) GitHub을 이용해서 소스 코드를 관리할 때 PR(Pull Request)라는 과정을 거치게 된다. PR 등록을 하면 소스코드를 관리하는 개발자나 다른 팀원이 PR에 대한 코드 리뷰를 진행하게 된다. PR을 등록할 때 소스코드 이외에 어떤 작업이었고 어떤 내용을 고쳤는지 설명도 같이 써주면 좋다. 단순히 커밋 로그와 소스코드만으로는 작업에 대한 완벽한 이해가 어렵기 때문이다. 팀으로 작업을 하는 경우 PR에 대한 보다 자세한 내용을 적어두면 좋은데 이 때 '템플릿' 기능을 사용하면 좋다. PR 템플릿을 등록해 놓으면 PR 등록을 할 때, '이런이런 내용을 등록해주세요'라고 미리 등록된 템플릿이 PR 요청 본문에 먼저 등록이 되고, PR 요청자는 그 본문을 수정하면 된다. PR 템플릿 등록하기 $ mkd.. 2019. 5. 21.
[javascript] 자바스크립트의 동등 연산자 (equality) 자바스크립트(javascript)라는 언어의 가장 큰 특징 중 하나가 '타입 선언'이 필요없다는 점이다. 자바나 C 같은 언어는 정작 타입 언어로 변수 선언에 타입을 명시해야한다. 이 후 해당 변수에 호환 되지 않는 타입을 사용할 때 컴파일 에러가 발생한다. int foo = 10; foo = 10.3f // Error!! foo = (int)10.3f // OK!! 위 코드를 예로 들면, int foo 로 선언된 변수에는 정수형 데이터만 담을 수 있다. 만약 1.02f 같은 실수형 데이터를 할당하면 컴파일 에러가 발생한다. 강제로 입력하기 위해서는 타입 변환(Type Casting)을 해야한다. 자바나 C 같은 언어의 기초 단계에서 배우는 내용이다. 하지만 자바스크립트는 이런 변수 타입이 없다. 자바스.. 2019. 5. 20.
Docker를 이용한 MySQL 설치 방법 도커 환경에서 MySQL을 구동해보자. 간단하기 DB 연동 테스트를 할 때, 별도의 머신을 할당받아 MySQL을 설치하는 것보다 간단하게 도커를 이용해 MySQL을 설치하는게 편리 할 수 있다. 우선 도커는 설치되어 있다고 가정하겠다. 다음 명령어를 이용해 MySQL 도커 이미지를 가져온다. $ docker pull mysql이 명령을 실행하면 도커 허브에서 MySQL 최신 버전 이미지를 다운로드한다. (만약 특정 버전의 이미지를 다운로드하려면 'docker pull mysql:5.5' 같이 버전을 명시하면 된다.) $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest 990386cbd5c0 9 days ago 443MB My.. 2019. 5. 19.
[javascript] encodeURI(), encodeURIComponent(), escape() 함수, 차이점 자바 스크립트를 이용해서 URL, URI 문자열을 다룰 때 특수 문자들을 별도로 처리해줘야 한다. URL/URI 문자열에 %, '' 같은 문자열이 들어가면 의도하지 않은 동작을 할 수 있다. 따라서 URL에 사용할 특수 문자들은 RFC 3986에 정의되어 있는 규칙에 따라 Escape 처리 해줘야 한다. URL에 사용할 특수 문자들을 처리하기 위해 encodeURI(), encodeURIComponent(), escape() 함수를 사용 할 수 있다. 각 함수들의 차이점은 다음과 같다. encodeURI() / decodeURI() : 최소한의 문자만 인코딩함 (; / ? : @ & = + $ , - _ . ! ~ * ' ( ) #) 이런거 안함 encodeURIComponent / decodeURICo.. 2019. 5. 19.
반응형