다양한 프로그래밍 언어 소스코드 품질평가 기업인 TIOBE index에서는 평점이나 선호도를 기반으로 프로그래밍 언어의 순위를 평가하고 발표한다. 티오베 인덱스에 따르면 2022년 6월 현재 1순위는 Python이 차지하고 있는 것을 확인할 수 있다. 그 뒤로 C언어, Java, C++ 등이 위치하고 있음을 확인할 수 있다. 이처럼 1위부터 4위까지를 차지하고 있는 C, C++, Java, Python에 대하여 비교, 분석해보자. ※ 본 포스팅을 읽기 전 참고하면 좋은 글들 : [프로그래밍 언어론] 객체 지향 프로그래밍(OOP : Object Oriented Programming)란? OOP의 장단점객체 지향 프로그래밍(OOP)과 객체(Object) 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어..
Map 컬렉션 클래스 JAVA의 Map 컬렉션 클래스는 Collection 인터페이스를 상속하진 않지만 Collection 자료구조를 이야기 할 때 빠지지 않는다. Map 클래스는 Map 인터페이스를 상속한다. Map 클래스는 중복을 허용하지 않는 Key 값과 그에 대응하는 중복이 허용되는 Value 값이 쌍을 이루어 저장되는 자료구조이다. 이때 Key 값은 Value를 찾기 위한 색인과 같은 역할을 한다. Map 클래스는 요소의 저장 순서를 유지하지 않는다. Key는 중복을 허용하지 않지만, Value는 중복을 허용한다. Map 대표적인 컬렉션 클래스 3가지에 대하여 알아보자. HashMap HashMap 클래스는 Map 클래스에서 가장 많이 사용되는 클래스 중 하나이다. HashMap 클래스는 해시 ..
Set 컬렉션 클래스 Set 컬렉션 클래스는 Set 인터페이스를 구현한 클래스이다. Set 컬렉션 클래스는 요소의 저장 순서를 유지하지 않고, 같은 요소의 중복 저장을 허용하지 않는다. 따라서 중복을 제거해야 하거나 저장 순서가 중요하지 않을 때 자주 사용되는 컬렉션 클래스이다. 이러한 Set 컬렉션 클래스에 속하는 대표적인 클래스는 다음과 같다. 1. HashSet 2. TreeSet 간단하게 이 두 가지 클래스에 대해 알아보자. HashSet 클래스 HashSet 클래스는 Set 컬렉션 클래스에서 가장 많이 사용되는 클래스이다. HashSet 클래스는 hash 알고리즘을 사용하여 검색 속도가 매우 빠르다. 이러한 HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장한다. H..
문제 https://programmers.co.kr/learn/courses/30/lessons/1832 코딩테스트 연습 - 보행자 천국 3 3 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 6 3 6 [[0, 2, 0, 0, 0, 2], [0, 0, 2, 0, 1, 0], [1, 0, 0, 2, 2, 0]] 2 programmers.co.kr 풀이 정말 어려웠지만 재밌는 문제였다. 풀이법이 잘 생각나지 않지만 생각만 잘한다면 코드 길이가 매우 짧고 명료하게 해결할 수 있다. 이 문제는 DP를 이용하면 해결할 수 있다. 나는 DP 배열을 다음과 같이 정의했다. DP[0][i][j] = (i,j) 좌표에 세로로 들어오는 경우의 수 DP[1][i][j] = (i, j) 좌표에 가로로 들어오는 ..
서버 관리의 어려움 서버를 관리하는 일은 매우 복잡하고 어려운 작업이다. 만약 서버를 개발할 때 개발 환경이 바뀌게 된다면 컴퓨터 세팅이나 프로그램 등을 처음부터 다시 설정해야 한다. 시스템 환경, 방화벽, 네트워크 설정, Dependency, 각종 개발 프로그램 설정 등... 이러한 방식은 매우 번거롭다는 문제점이 발생한다. 특히 DevOps나 MSA가 유행하면서 Micro Service들이 잘게 나뉘면서 관리가 더욱 복잡해지게 되었다. 게다가 새로운 툴은 끊임없이 나오고, 클라우드의 발전으로 설치해야 할 서버가 매우 많아지는 상황에서 서버 관리 방식의 변화가 필요했다. 이러한 상황 속 어려움을 해결해줄 도커(Docker)가 등장하게 되었다. 도커(Docker)란 무엇인가? 도커는 컨테이너 기반의 오픈..
String 클래스는 불변이다 자바에는 String, StringBuffer, StringBuilder 클래스가 존재한다. 자바에서 String 클래스는 보통 불변(immutable)하다. 즉, 한 번 초기화되면 변하지 않는다. 혹자는 String 클래스도 변한다고 말하지만, 사실 그것은 변하는 게 아니라 새로 생성한 것뿐이다. 예를 들어, String 클래스의 concat() 메서드나 "+" 연산자를 이용해 문자열의 변화를 주더라도, 그것은 문자열이 변경됐다기보다는, 새로 생성한 것이라고 봐야 한다. 자세한 내용은 아래 게시글을 참조하면 좋다. [JAVA] 자바 String Constant Pool 이란?, String "=="와 equals의 차이 String Constant Pool이란? 아래와 같..
NAC(Network Access Control)이란? NAC의 탄생 배경NAC는 말 그대로 네트워크 접근 제어를 뜻하는 것으로 엔드포인트(PC, 스마트폰 등과 같은 네트워크에 접속하는 모든 유무선 기기)가 네트워크에 접근하기 전 보안 정책 준수 여부를 검사하여 네트워크 사용을 제어하는 것을 말한다. 또한, NAC 시스템은 네트워크에 연결된 엔드포인트들의 여러 정보를 수집하여 엔드포인들을 분류하고 분류한 그룹의 보안 위협 정도에 따른 제어를 수행하기도 한다. 이러한 NAC는 어떻게 탄생하게 되었을까? NAC는 세계적인 컨설팅 회사인 가트너(Gartner) 그룹에서 새로운 네트워크 보안 모델을 제시한 것을 계기로 급속도로 확산 되었다. 사내망에 바이러스 같은 것이 침투하면 순식간에 사내망 전체로 퍼지게 되..
아스키 코드란? 아스키 코드(ASCII)는 American Standard Code for Information Interchange를 줄인 말이다. 이름 그대로 미국에서 정의한 정보 교환용 부호체계이다. 아스키 코드는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다. 1바이트로 구성되어 있는 아스키 코드는 8비트(==1바이트) 중 7개의 비트만 사용한다. 나머지 1비트는 Parity Bit이라고 불리는 오류 체크를 위한 비트로 사용한다. 예를 들어 이진법으로 1000001이면서 십진법으로 65는 문자 'A'를 나타낸다. 이처럼 알파벳을 포함, 영문 키보드로 입력할 수 있는 모든 기호들이 아스키 코드로 할당되어 있다. 매우 단순하고 간단하여 많은 곳에서 사용되었다. 하지만, 아스키 코드는 7개의 비트만을..
List 컬렉션 클래스 List 컬렉션 클래스는 List 인터페이스를 구현한 클래스이다. List 컬렉션 클래스는 객체를 순차적으로 저장한다. 객체를 인덱스로 관리하기 때문에 List 컬렉션에 객체를 추가하면 인덱스가 자동으로 부여된다. 이 인덱스를 이용해 객체를 검색하고 삽입, 삭제할 때 사용한다. 이러한 List 컬렉션은 요소의 저장 순서가 유지되고, 같은 요소의 중복 저장을 허용한다는 특징을 가진다. List 인터페이스에서 공통적으로 제공하는 주요 메서드는 다음과 같다. 메서드 설명 boolean add(E e) 해당 리스트(list)에 전달된 요소를 추가 void add(int index, E e) 해당 리스트의 특정 위치에 전달된 요소를 추가 void clear() 해당 리스트의 모든 요소를 제..
Java Collections Framework란 Java Collections Framework는 재사용이 가능한 Collection 자료 구조를 구현하는 클래스 및 인터페이스들의 집합이다. 간단히 말해 여러 가지 자료 구조들을 미리 만들어놓고 지원하는 라이브러리라고 생각할 수 있다. Java Collections Framework는 데이터를 저장하는 자료 구조에 따라 다음과 같은 주요 인터페이스를 정의한다. 1. List 인터페이스 2. Set 인터페이스 3. Map 인터페이스 여기서 List와 Set 인터페이스는 모두 Collection 인터페이스를 상속 받지만 Map 인터페이스는 구조상의 차이로 별도로 정의한다. 따라서 List 와 Set 인터페이스의 공통적인 부분은 Collection 인터페이스..
아틀라시안(Atlassian)이란? 아틀라시안은 오스트레일리아의 시드니에 기반을 두고 있으며 소프트웨어 개발자들을 타깃으로 하는 전사적 소프트웨어를 만드는 기업이다. 아틀라시안에서 제공하는 유명한 제품들로는 지라(Jira), 뱀부(Bamboo), 비트버킷(Bitbucket) 등이 존재한다. 카카오와 같은 국내 유명 대기업들에서도 아틀라시안이 제공하는 소프트웨어를 많이 사용하고 있다. 내가 입사한 회사에서도 아틀라시안의 지라, 뱀부, 비트버킷 등을 이용한다. 따라서 이에 대해 포스팅해보고자 한다. 우선 우리 회사에서 주로 사용하는 제품들만 소개해보도록 하겠다. 지라(Jira) 지라는 이슈 및 작업을 관리할 수 있는 협업 툴이라고 볼 수 있다. 큰 아이디어를 사용자 스토리, 이슈 및 작업으로 팀 전반에서 관..
서류 전형 & AI 면접 검사 현대 아이티앤이는 다음과 같은 4가지 항목에 대해 자기소개서를 작성해야 한다. 1. 현대백화점그룹이 지향하는 4가지 실천가치(열정/소통/창의/파트너십 중 택 1)와 부합하는 본인의 강점과 경험을 기술하여 주십시오 2. 본인이 지원하는 직무에 있어 다른 지원자와는 차별화된 역량 및 그와 관련된 경험 혹은 경력을 기술하여 주십시오. 3. 기존과 다른 새로운 변화를 시도했던 경험과 그를 통해 배운 점이 무엇인지 기술하여 주십시오. "새로운 기술 습득의 중요성" 4. 당사 지원동기와 입사 후 포부를 기술하여 주십시오. 1번이 조금 까다로웠지만, 나머지 문항은 일반적으로 자기소개서에 작성하는 항목이었기 때문에, 어렵지 않게 작성할 수 있었다. 서류 전형을 통과하면 AI 면접을 진행하..