프로그래밍 언어

    [C#] Enum에 Name List / Value List 가져오기

    Enum 정보 가져오기public enum Colors { red = 0, green = 1, blue = 2, yellow = 3 }public void Run(){ Console.WriteLine("Enum에 저장된 Name 가져오기"); //Enum에 저장된 Name List로 가져오기 var nameList = Enum.GetNames(typeof(Colors)); foreach (var name in nameList) Console.WriteLine($"{name}"); Console.WriteLine("Enum에 저장된 Value값 가져오기"); var valueList = Enum.GetValues(typeof(Colors))..

    [Java] String Empty와 Blank 체크하기

    Empty와 Blank의 차이String Empty : null 이거나 length(길이)가 없는 StringString Blank : 공백으로만 되어있는 StringEmpty StringJava6 이상부터는 String 클래스의 isEmpty 메소드로 체크하면 된다.String test = " ";if (test.isEmpty()) { log.info("isEmpty");} else { log.info("isNotEmpty"); }//결과는 isNotEmpty 가 출력된다 test라는 String이 null이 들어올 수 있기 때문에 조건을 추가해준다면 다음과 같이 Empty를 체크하면 된다String test = null;if (test == null || test.isEmpty()) { ..

    [C++] volatile 키워드

    개념const 키워드와 함께 변수의 성질을 바꾸는 역할을 하는 타입 한정자지만 그 사용 빈도가 낮아 책이나 자료들에서도 잘 다루어지지 않는 타입이다.volatile 키워드가 지정된 변수는 최적화를 수행하지 않는다.변수의 최적화최적화를 시켜주는 컴파일러의 기능인데 프로그래머는 사람이기 때문에 실수를 하기 마련이다. 물론 컴파일러가 모든걸 보완할 수는 없다. 예를 들면)int a;a = 0;a = 1;a = 3;a에는 최종적으로 3의 값이 들어가게 되며 이전의 작업인 0과 1은 의미가 없게 된다, 따라서 재정의를 하는 경우에는 컴파일러가 알아서 위의 두 작업을 삭제한다. 이를 통해 수행 시간의 이득을 가져올 수 있다. 하지만, 만약 메모리를 참조하여 하드웨어에 명령을 내리는 코드라고 가정하고 a를 메모리 쓰..

    [C++] false sharing이란? (거짓 공유)

    개념false sharing은 멀티 쓰레드 환경 + CPU의 멀티 코어에서 발생된다.cpu 내부의 코어와 코어간의 메모리 정보가 공유되어 하드웨어 적으로 병목 현상이 일어나는건다.#include #include #include long long num1 = 0;long long num2 = 0;long long num3 = 0;void fun1() { for (long long i = 0; i resultTime = endTime - beginTime; printf("%lld\n", num1 + num2); std::cout  비슷하거나 빨라야 하는데 1초 차이도 아니고 6초 차이가 나버린다.CPU의 캐시 구조L3 캐시는 메모리로부터 자료를 받아온다, 그럼 해당 데이터를 L2 > L1 ..

    [Java] Collection Framework (자료구조 종류)

    Java Collection Framework (JCF) 컬렉션은 기본 데이터형이 아닌 참조 데이터형만 저장이 가능하다 따라서 Collection에서의 데이터는 Object 타입의 객체로서 저장이 된다.기본 데이터 형은 Wrapper 클래스를 이용하여 Boxing 시켜주거나 Integer num = new Integer(5) 기본 데이터형인 5를 Wrapper 클래스의 Integer 타입 객체로 변환 autoboxing으로 저장할 수 있다 즉 오토박싱을 통해 기본 데이터형 컬렉션에 직접 대입하여 저장해도 컴파일러가 자동으로 Wrapper 클래스로 변환해준다 collection.add(11) 저장된 값을 얻어올 때에도 객체화된 데이터를 기본 데이터형으로 바로 얻어올 수 있는데 이 경우는 unboxing이다..

    [C#] 7.0 튜플 (Tuple)

    개념C# 7 이전 버전에서는 메서드에서 하나의 값만을 리턴할 수 있었지만, C# 7부터는 튜플(Tuple)을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있게 되었다. 메서드 원형을 정의할 때 리턴타입이 복수 개이므로 튜플 리턴 타입(tuple return type) 표현식을 사용하게 되는데, 이는 괄호 ( ) 안에 여러 리턴타입을 순서대로 나열하면 된다. 예를 들어, int 2개와 double 하나를 리턴할 경우 (int, int, double)과 같이 표현할 수 있으며, 더 나아가 편의를 위해 각 리턴타입마다 이름을 지정할 수도 있다. 예를 들어 (int count, int sum, double average)와 같이 작성이 가능하다.(double, int) t1 = (4.5, 3);Consol..

    [C#] switch문에 추가된 기능 (버전 7~9)

    기본형)int flag = 3; switch (flag) {case 1: DoFunc1(); break;case 2: DoFunc2(); break;default: DoFunc3(); break; }C# 7.0, switch문의 패턴 매칭switch case 문이 패턴 매칭 식을 흡수한다, 원래 switch 문의 조건식에는 값 형식의 식들만 들어갈 수 있었지만 클래스 인스턴스도 들어갈 수 있고 case 문에는 패턴 매칭식을 넣을 수가 있다.using System; public class Program { public static void Main() { object data = 5; // object data = "STRING"; // object..

    [Java] switch문

    변경 전과 후 특징 비교변경 전)C, C++에서 사용하는 형태의 Switch 형식을 따른다.불필요한 반복코드 존재한다.다수의 case와 break가 존재한다.개발자의 실수로 break를 빼먹을 경우 다음 분기로 넘어가게 됨.변경 후)Switch 내에서 라벨이 일치하는 경우, case -> A와 같은 형식으로 표현이 가능하다.단일 수행 또는 블록 수행이 가능하다.Switch 블록 내에서 계산된 값을 반환하는 yeild라는 키워드가 생겼다.여러 조건을 쉼표로 구분하여 한 라인으로 처리할 수 있음.테스트 클래스 정의enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; }코드로 변경사항 살펴보기간단한 코드 비교를 통해 새로워진 Sw..

    [Python] None

    None값이 없음, 알 수 없음 정도의 의미를 가진다. 정수 0이나 빈 문자열 ""과는 다르다.score_100 = 100score_0 = 0score_none = Noneprint(score_none)// NoneNone과 NoneTypeNone은 NoneType 타입의 객체다print(type(None))//  int, str과 같은 일반적인 타입들과 다르게, NoneType은 빌트인에 존재하지 않는다.print(int)print(int)print(NoneType)// 결과Traceback (most recent call last): File "example.py", line 3, in print(NoneType)NameError: name 'NoneType' is not defined Py..

    [Python] 인덱싱과 슬라이싱 : 음수 인덱스

    문자열과 리스트는 Iterable (순회할 수 있는) 객체다. 문자열은 여러 개의 문자들을 모아 놓은 배열이고, 리스트는 다양한 값을 모아 놓은 배열이다. 이 두 자료형의 원소에는 위의 그림처럼 인덱스(순서)가 있다. 편의 상 왼쪽에서부터 오른쪽으로 향하는 방향을 정순(정방향), 오른쪽에서부터 왼쪽으로 향하는 방향을 역순(역방향)이라 하면 인덱스에는 대소 관계가 있는데 정순이라면 왼쪽의 인덱스일수록 작은 값입니다. 역순이라면 오른쪽의 인덱스일수록 작은 값이다. 파이썬에서 인덱싱과 슬라이싱을 잘 활용하시려면 인덱스의 대소 관계를 정확히 알아야 한다.인덱싱 (Indexing)과 슬라이싱(Slicing)인덱싱(Indexing)은 문자열이나 리스트와 같은 컬렉션 자료형에서 기준값으로 개별 원소에 접근하는 방법이..