본문 바로가기

전체 글234

[CS] HTTP와 HTTPS HTTP (HyperText Transfer Protocol)웹 페이지를 요청하고 응답받기 위해 설계된 클라이언트와 서버 간의 기본 *통신 프로토콜이다. 사용자가 웹 브라우저를 통해 웹 페이지를 요청하면, 서버는 그 요청에 대한 응답을 보낸다. 주로 *헤더와 *바디로 구성된다.통신 프로토콜 : 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계이다. 즉, 통신 규약 및 약속헤더는 클라이언트와 서버 간의 메타 데이터를 전달하기 때문에, *요청 메서드, URL, 프로토콜 버전, 요청 헤더 등이 포함된다.바디는 클라이언트가 서버에 전송하고자 하는 실제 데이터가 포함되며, JSON, XML, 폼 데이터 등이 포함될 수 있다.데이터를 암호화하지 않은 평문으로 전송하기 때문에 중간에, 누군가가.. 2024. 9. 14.
[CS] 대칭키와 비대칭키(공개키) 암호화 방식 암호화 기술암호화는 데이터를 읽을 수 없는 형태로 변환하는 과정이다. 이를 통해 데이터가 전송 중에 도청되더라도 내용을 알 수 없게 된다.즉, 암호화 기술을 통해 데이터를 암호화하면, 해당 데이터를 읽을 수 있는 사람을 제한할 수 있기 때문에 데이터의 기밀성을 보장한다.HTTPS 와 같은 보안 프로토콜에서는 대칭키와 공개키 암호화를 결합하여 사용한다.대칭키 암호화의 장점과 공개키 암호화의 장점을 채택하여 용량이 큰 정보는 대칭키로 암호화하고, 암호화에 사용된 대칭키는 공개키로 암호화하여 대상에게 전달하는 하이브리드 암호화 방법이 일반적으로 사용되고 있다. 대칭키 암호화 방식 암호화와 복호화에 같은 키를 사용하는 방식으로, 암호화한 정보를 다른 사용자에게 보낼 때 암호 키도 함께 보내야 한다.구현이 간단하.. 2024. 9. 11.
[Kotlin][Map] containsKey, containsValue 맵에 지정된 키가 포함되어 있으면 true 를 반환합니다. K 유형의 키를 전달해야 하는 containKey 의 유형 안전성 제한을 극복할 수 있습니다.val map: Map = mapOf("x" to 1, "y" to 2)print(map.containsKey("x")) // trueprint(map.containsKey("y")) // trueprint(map.containsKey("z")) // false 맵이 하나 이상의 키를 지정된 값에 매핑하는 경우 true 를 반환합니다. V 유형의 값을 전달해야 하는 containValue 의 유형 안전성 제한을 극복할 수 있습니다.val map: Map = mapOf("x" to 1, "y" to 2)// member containsValue is use.. 2024. 9. 10.
[Kotlin][String] indexOf 지정된 startIndex 부터 시작하여 지정된 문자열이 처음 나타나는 이 문자 시퀀스 내의 인덱스를 반환합니다.public fun CharSequence.indexOf(string: String, startIndex: Int = 0, ignoreCase: Boolean = false): Int { return if (ignoreCase || this !is String) indexOf(string, startIndex, length, ignoreCase) else nativeIndexOf(string, startIndex)}fun matchDetails(inputString: String, whatToFind: String, startIndex: Int = 0): S.. 2024. 9. 10.
[CS] Database 인덱스 (Index) 인덱스 (Index)테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장한다. 즉, 인덱스는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다.예시: 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아 보는것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index 는 책의 색인과 같다.데이터베이스에서도 테이블의 모든 데이터(책의 내용)를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치(책의.. 2024. 9. 9.
[Kotlin][Collection] getOrPut 값이 존재하고 null이 아닌 경우 지정된 키에 대한 값을 반환합니다. 그렇지 않으면 defaultValue 함수를 호출하고 해당 결과를 지정된 키 아래의 맵에 넣고 호출 결과를 반환합니다. 맵이 동시에 수정되는 경우 작업이 원자적으로 보장되지 않는다는 점에 유의하세요.public inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V): V { val value = get(key) return if (value == null) { val answer = defaultValue() put(key, answer) answer } else { value }}val map = muta.. 2024. 9. 7.
[Kotlin][Bitwise Operator] shl, shr, ushr, and, or, xor, inv 이 값을 bitCount 비트 수만큼 왼쪽으로 이동합니다. bitCount 의 최하위 5개 비트만 이동 거리로 사용됩니다. 따라서 실제로 사용되는 변속 거리는 항상 0..31 범위에 있습니다.print(1 shl 3) // 8 이 값을 bitCount 비트 수만큼 오른쪽으로 이동하여 가장 왼쪽 비트를 부호 비트의 복사본으로 채웁니다. bitCount 의 최하위 5개 비트만 이동 거리로 사용됩니다. 따라서 실제로 사용되는 변속 거리는 항상 0..31 범위에 있습니다.print(9 shr 3) // 1 이 값을 bitCount 비트 수만큼 오른쪽으로 이동하여 가장 왼쪽 비트를 0으로 채웁니다. bitCount 의 최하위 5개 비트만 이동 거리로 사용됩니다. 따라서 실제로 사용되는 변속 거리는 항상 0..31.. 2024. 9. 7.