SSL (Secure Sockets Layer) 및 이어지는 TLS (Transport Layer Security)는 인터넷 상에서 데이터를 안전하게 전송하기 위한 프로토콜입니다. 이 프로토콜은 데이터를 암호화하여 중간자 공격 및 데이터 유출 등의 보안 위협으로부터 데
TCP/IP(Transmission Control Protocol/Internet Protocol)는 대부분의 인터넷 기반 애플리케이션과 서비스에서 사용되는 기본 통신 프로토콜입니다. 이는 서로 다른 장치에서 실행되는 애플리케이션 간의 신뢰성 있는, 순서가 지정된, 오
인터넷이 무엇인가에 대해 알기 전에 네트워크란 무엇인가에 대해 이해할 필요가 있다. 💡 네트워크는 서로 연결된 컴퓨터 또는 기타 장치의 그룹, 인터넷은 네트워크들의 네트워크상위 단계에서, 인터넷은 여러 개의 표준화된 프로토콜을 이용해서 장치들과 컴퓨터 시스템들을 연결
개발을 하기로 했다면 Git 또는 SVN 을 사용하거나 들어봤을 것이다. 이러한 도구들은 개발자들이 팀으로 코드를 작성하는데 있어서 효율적으로 협업할 수 있도록, 코드를 관리하는데 도움을 준다. 깃에는 브랜치라는 하나의 줄기 ( 공통으로 개발하고 있는 코드 ) 에서 독
HTTP HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. > 💡 프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환
자바에서 시간이나 날짜를 다뤄야하는 일이 있다면 가장 먼저 구글에 자바 현재 시간 과 같은 형식으로 검색을 할 것 같습니다. 그럼 다수의 블로그들이 calendar 클래스나 date 클래스를 사용하여 설명하고 있을 겁니다. 자바 8 이하의 버전을 사용하고 있다면 사용
자바에서 시간이나 날짜를 다뤄야하는 일이 있다면 가장 먼저 구글에 자바 현재 시간 과 같은 형식으로 검색을 할 것 같습니다. 그럼 다수의 블로그들이 calendar 클래스나 date 클래스를 사용하여 설명하고 있을 겁니다. 자바 8 이하의 버전을 사용하고 있다면 사용
객체 직렬화란 자바가 객체를 바이트 스트림으로 인코딩( 직렬화 )하고 그 바이트 스트림으로부터 다시 객체를 재구성( 역직렬화 )하는 메커니즘이다자바 직렬화의 근본적인 문제는 공격 범위가 너무 넓고 지속적으로 더 넓어져 방어하기 어렵다는 점이다. 역직렬화 과정에서 호출되
synchronized 키워드는 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. 동기화를 제대로 사용하면 어떤 메서드도 이 객체의 상태가 일관되지 않은 순간을 볼 수 없을 것이다. 동기화에는 중요한 기능이 하나 더 있다. 동기화는 일관성이 깨진 상태를 볼
예외는 오직 예외 상황에서만 써야 한다. 절대로 일상적인 제어 흐름용으로 쓰여선 안 된다.또한, 잘 설계된 API 라면 클라이언트가 정상적인 제어 흐름에서 예외를 사용할 일이 없게 해야 한다.상태 검사 메서드, 옵셔널, 특정 값 중 하나를 선택하는 지침외부 동기화 없이
지역변수의 범위를 줄이는 가장 강력한 기법은 역시 ‘가장 처음 쓰일 때 선언하기’ 다.거의 모든 지역변수는 선언과 동시에 초기화해야 한다.초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. 반복문은 독특한 방식으로 변수 범위를 최소화해준다. 예
메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바란다. ex) 인텍스 값은 음수이면 안된다, 객체 참조는 null 이 아니어야 한다. 자바 7에 추가된 java.util.Objects.requireNonNull 메서드는 유연하고 사용하기도 편하니
아이템 42. 익명 클래스보다는 람다를 사용하라 예전에는 자바에서 함수 타입을 표현할 떄 추상 메서드를 하나만 담은 인터페이스( 드물게는 추상 클래스 ) 를 사용했다. 자바 8에 와서 추상 메서드 하나짜리 인터페이스는 특별한 의미를 인정받아 특별한 대우를 받게 되
열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 자바 열거 타입을 뒷받침하는 아이디어는 단순하다. 열거 타입 자체는 클래스이며, 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개한다.
아이템 10. equals 는 일반 규약을 지켜 재정의하라 각 인스턴스가 본질적으로 고유하다 인스턴스의 ‘논리적 동치성' 을 검사할 일이 없다. 상위 클래스에서 재정의한 equals 가 하위 클래스에도 딱 들어맞는다. 클래스가 private 이거나 packag
안드로이드 생체 인증을 구현해보기 위해 작성한 글, 코드기 때문에 참고만 하시고 혹시 문제가 있는 부분이 있다면 말씀해주세요 !! 안드로이드에서 생체 인증을 사용할 수 있던 것은 API Level 23 ( Android 6.0 ) 부터이다. 이 때는 fingerprin
우선 위젯킷을 사용하기 위해서는 [ File → New → Target ] 에서 Widget Extension 을 검색해서 추가해준다. 스크린샷 2022-09-15 오전 10.21.26.png ![스크린샷 2022-09-15 오전
클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라 한다. 로 타입이란 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을 때를 말한다. ex) List<E> 의 로 타입은 List 이다. 로 타입을 쓰면 제네릭이 안겨
잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API 를 깔끔히 분리한다. ⇒ 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다. 정보 은닉의 장점시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다
OS 의 메모리 영역에 접근해서 Java 의 메모리를 관리하는 가상의 프로그램C, C++ 로 개발을 할 때는 사용자가 calloc, realloc, malloc 를 통해 메모리를 할당하고 free 로 메모리를 해제해줘야 한다. 하지만 자바에서는 가비지 컬렉터가 자동으로