소켓 : 두 프로그램이 네트워크를 통해 서로 통신할 수 있도록 양쪽에 생성되는 링크의 단자 소켓이 연결되면 서로 다른 프로세스끼리 데이터를 전달할 수 있음 서버 클라이언트 socket() socket() bind() listen() connect() accept() 서버, 클라이언트는 각각 socket을 생성하고 서버는 bind에서 포트번호를 할당한다 그 후에 listen()을 호출하여 클라이언트의 접속을 기다린다. 클라이언트는 connect()를 통해 서버에 접속을 시도한다. 클라이언트 요청이 오면 accept() 함수를 호출에 연결한다. 소켓이 연결되면 recv() / send() 함수를 통해 데이터를 전달하고 마지막에 close()를 호출하여 소켓을 종료한다. C프로그래밍에서는 socket() ->..
싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스 싱글턴을 만드는 3가지 방법 1. public static final 방식 public class Singleton { public static final Singleton INSTANCE = new Singleton(); private Singleton() {} public void singletonMethod() {} } private 생성자는 public static final 필드의 Singleton.INSTANCE를 초기화 할 때 한 번만 호출 public이나 protected 생성작 없으므로 클래스가 초기화 될 때 만들어진 인스턴스가 전체 시스템에서 하나뿐임이 보장 예외적으로 권한이 있는 클라이언트는 AccessibleObject.set..
클래스는 생성자와 별도로 정적 팩터리 메서드를 제공할 수 있다. 생성자보다 정적 팩터리 메서드가 좋은점 1. 이름을 가질 수 있다. 2. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 5. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. 단점 1. 상속을 하려면 public이나 protected생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다. 2. 정척 팩터리 메서드는 프로그래머가 찾기 어렵다. 정적팩터리 메서드 명명방식 1. from : 매개변수를 하나 받아서 해당 타입의 인스턴스를 반환하는 ..
스트림 최종연산 collect collect() : 스트림의 최종연산, 매개변수로 컬렉터를 필요 Collector : 인터페이스, 컬렉터는 이 인터페이스를 구현 Collectors : 클래스, static메서드로 미리 작성된 컬렉터를 제공 스트림을 컬렉션과 배열로 변환 : toList(), toSet(), toMap(), toCollection(), to Array() 통계 : Counting(), summingInt(), averagingInt(), maxBy(), minBy() 리듀싱 : reducing() 문자열 결합 : joining(), joining(","), joining("," , "{" , "}"); 그룹화와 분할 : groupingBy(), partitioningBy() Collecto..
스트림? - 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓은 것 - 데이터 소스가 무엇이던 간에 같은 방식으로 다를 수 있게 해줌 - 코드의 재사용성이 높아짐 문자열 정렬, 출력 String[] strings = {"data1", "data3", "data2"}; List stringList = Arrays.asList(strings); Arrays.sort(strings); Collections.sort(stringList); for(String string : strings) { System.out.println(string); } for(String string : stringList) { System.out.println(string); } Stream strin..

람다식? - 메서드를 하나의 식으로 표현한 것 - 메서드의 이름과 반환값이 없어지므로, 익명함수라고도 함 람다식 작성법 반환타입 메서드이름 (매개변수) { //내용 } (매개변수) -> { //내용 } int add(int a, int b) { return a + b; } (int a, int b) -> { return a + b; } (a, b) -> a + b 함수형 인터페이스 Type t = (int a, int b) -> a + b; interface Function { int add(int a, int b); } Function function = new Function() { @Override public int add(int a, int b) { return a + b; } }; functi..
자바에서 객체를 생성하는 3가지 방법에 대해 알아보겠습니다. 1. 생성자 스타벅스 음료 3잔을 자바 코드로 만들어보겠습니다. StarbucksDrink라는 클래스를 만들고 음료의 종류마다 값을 받을 수 있도록 생성자를 만들었습니다. 총 4개의 생성자를 통해 다양한 음료를 만들 수 있는 구조네요. public class ConstructorClass { public static void main(String[] args) { StarbucksDrink drink1 = new StarbucksDrink(2, true); //투샷, 아이스 StarbucksDrink drink2 = new StarbucksDrink(2, 2, true); //투샷, 시럽2번, 아이스 StarbucksDrink drink3 = ..