반응형

분류 전체보기 285

컴퓨터 네트워크 - HTTP & HTTPS

HTTPS란 무엇인가? HTTPS(Hyper Text Transfer Protocol Secure) 안전화된 통신규약으로, http(Hyper Text Transfer Protocol)에 s가 뒤에 붙는데 이 s는 secure의 약자입니다. secure를 한국어로 번역하면 '안전한'입니다. 이름에서도 알 수 있듯이 HTTPS는 HTTP에서 안정성이 추가된것입니다. HTTPS는 클라이언트가 서버로 정보를 보낼때에 중간에서 정보를 가로체거나 변조할 수 없으며, 잘못된 사이트인지 알려주는 기능을 제공합니다. SSL 또는 TSL 기술을 이용하여 텍스트 정보를 서버에 전송할때 암호화하여 전송합니다. 서버에서는 이 암호화된 데이터를 복호화 하여 사용합니다. 암호화된 데이터는 중간에서 가로체더라도(Sniffing) ..

윷놀이 속 확률

평면과 둥근면이 나올 확률 웇놀이를 하며 윷을 던졌을 때 둥근면과 평면이 나오는 확률은 1/2이 아닙니다. 윷의 무게중심은 평면이 바닥으로 67도를 이룰때 가운데에 있습니다. 바닥과 평면이 67도 이하인 경우 둥근면으로 그 위는 평면이 나오게 됩니다. 하지만, 일반적으로 윷의 단면은 평면보다 둥근면이 더 커 무게중심의 위치가 달라져서 평면이 나오는 확률이 높습니다. 도, 개, 걸, 윷, 모가 나올 확률 우선 평면과 둥근면이 나오는 확률을 각각 1/2이라고 가정합니다. 각 윷이 둥근면과 평면으로 두 가지의 경우가 있으며, 4개의 윷을 사용하기 때문에 2 x 2 x 2 x 2 = 16, 총 16가지 경우의 수가 존재합니다. 평면을 (앞), 둥근면을 (뒤)로 구분했을때 다음과 같은 16가지 경우의 수가 존재합..

나아가는중 2022.01.22

[DB] Database 요약 & 정리 index 인덱스

인덱스는 데이터 조회(SELECT) 시 빠르게 접근하도록 도와주는 역할을 합니다. 인덱스의 존재 유무에 상관없이 데이터 조회의 결과는 동일하지만, 조회 속도를 향상할 수 있습니다. 책에서 목차가 인덱스에 해당한다고 생각하면 됩니다. 책의 목차를 통해 책에서 원하는 페이지를 빠르게 찾을 수 있습니다. 인덱스를 잘 사용하면 효과적이지만, 반대로 잘못 설계한다면 성능을 떨어뜨릴 수도 있습니다. 예를 들어, 동일한 데이터가 많이 존재하며 분산되어 있는 경우, 데이터 조회 시 인덱스 테이블에서 검색을 하는 것이 성능이 더 느릴 수도 있습니다. 또한, 데이터의 변경 작업이 자주 일어날 경우, 인덱스를 사용하는 것이 성능을 떨어뜨릴 수도 있습니다. 인덱스는 처음 생성하는데 많은 시간이 소요될 수 있습니다. 인덱스를 ..

자바(JAVA) - Optional

Optional은 jdk 1.8(java 8)부터 추가된 기능입니다. Optional 클래스는 제네릭 타입의 클래스이며 타입 파라미터로 T 타입을 사용되며 T 타입의 참조 변수 value가 있습니다. public final class Optional { private final T value; ... } 제네릭 타입은 데이터 형식에 의존하지 않고, 모든 데이터 타입을 갖도록 하는 방법입니다. 클래스에서 미리 타입을 지정하지 않고 사용자에 의해 지정됩니다. 제네릭을 사용하게 되면 컴파일 타임에 강한 타입 체크가 가능하며, 외부에서 타입을 지정하여 캐스트가 불필요한 장점 등이 있습니다. 성능 향상을 위해 기본타입은 OptionalInt, OptionalDouble과 같은 래퍼 클래스들을 사용하는 것이 좋습니..

자바(JAVA) - 람다식(Lambda Expression)

람다식(Lambda Expression) 람다식은 자바에서 제공하는 함수형 프로그래밍(Functional Programming) 방식입니다. 자바의 객체지향 프로그래밍(Object Oriented Programming) 이지만, JDK 1.8 Java 8)부터 함수형 프로그래밍 기능을 추가하였습니다. 람다식은 익명 함수(Anonymous functions)를 지칭하는 용어로 함수(메서드)를 간단한 식(expression)으로 표현하는 방법입니다. 하지만 자바에서 람다식은 익명 함수가 아니라 익명 객체입니다. 자바에서는 함수만 존재할 수 없으므로 객체 형식으로 존재해야합니다. 본래는 익명 객체를 사용하는 것을 람다식을 사용하여 표현할 수 있습니다. 익명 객체란 이름이 없는 일회용 클래스로 선언과 생성을 동..

자바(JAVA) - 익명 클래스 (Anonymous class)

익명 클래스란 이름이 없는 일회용 클래스입니다. 일회용으로만 사용하기 때문에 이름이 필요 없으며 객체 생성 시에 클래스 정의와 생성을 동시에 합니다. 보통의 자바 클래스는 클래스를 정의하고 클래스명으로 객체를 생성합니다. // 클래스 정의 class MyClass { ... } // 객체 생성 MyClass myClass = new MyClass(); 객체를 생성해주는 new 연산자 뒤에 부모 클래스(인터페이스)의 이름을 사용하여 생성하며, {} 안에 함수를 정의합니다. 하나의 부모 클래스를 상속받거나 단 하나의 인터페이스만을 구현할 수 있습니다. // 생성과 정의를 동시에 Object myClass = new Object() { void myMethod() { ... } }; 학생 클래스의 배열을 나이..

자바(JAVA) - Char to Int : 문자를 숫자로 변환하기

자바에서 문자 타입의 char를 정수 타입의 int로 변환하는 방법입니다. 1. 자동 형변환, 강제 형변환 (X) char c = '1'; int n = c; // == int n = (int)c; System.out.println(n); // 결과: 49 자동 형변환이나 강제 형변환으로 char를 int로 변경하면 문자 '1'의 아스키 코드인 49가 출력되어 올바른 방법이 아닙니다. 2. '0'을 빼주기 (ASCII code 사용) (O) char c = '1'; int n = c - '0'; // == int n = (int)c - '0'; 49 - 48 = 1 System.out.println(n); // 결과: 1 아스키 코드 표를 살펴보면 문자 0 ~ 9는 48 ~ 57의 순서로 되어있습니다. ..

[백준 Baekjoon] 1713번 후보 추천하기 - JAVA

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int M = Integer.parseInt(br.readLine()); int[] fram..

이원 탐색 (BinarySearch) - 자바(JAVA)

c++ 언어로 작성된 수도코드를 자바로 변환한 코드입니다. // 이미 정렬된 배열 a[0]...a[n-1]에서 x = a[j]인 j를 반환 // left, right: 탐색하고자 하는 리스트의 왼쪽, 오른쪽 끝 // 초기값으로 left = 0, right = n-1 // 리스트의 중간 위치 middle = (left + right) / 2로 설정 // a[middle]과 x 비교 // int BinarySearch (int *a, const int x, const int n) int binarySearch(int[] a, final int x, final int n) { // Search the sorted array a[0],...,a[n-1] for x int left = 0, right = n-1;..

선택 정렬 (SelectionSort) - 자바(JAVA)

c++로 작성되어 있는 수도코드를 자바로 변환한 코드입니다. // 정렬되지 않은 정수들 중에서 가장 작은 값을 찾아서 정렬된 리스트 다음 자리에 놓는다. // void SelectionSort(int *a, const int n) void selectionSort(int[] a, final int n) { // n개의 정수 a[0]부터 a[n-1]까지 비감소 순으로 정렬한다. for (int i = 0; i < n; i++) { int j = i; // a[i]와 a[n-1] 사이에 가장 작은 정수를 찾는다. for (int k = i + 1; k < n; k++) if (a[k] < a[j]) j = k; // a[i] 에서부터 a[n-1]까지의 정수 값을 검사한 결과 a[j]가 가장 작은 값 // a..

반응형