programming(5)
-
Java 8 (Spider)
2014.03월, 자바가 오라클에 인수되고 나온 첫 번째 버전으로 출시됨. 언어적으로 가장 역대급 변경이 아닌가 싶다. 1. Lambda Expression - 원래는 java 7에서 도입 예정이었으나, 준비 부족으로 인해 제외하고 출시되었고, 이 버전에서 포함. - 자바는 타입과 인터페이스에 대한 규약으로 인해, 간단한 인터페이스조차도 반드시 해당 타입을 구현하고 실행. → 많은 클래스와 실제 비즈니스보다 복잡한 코드를 양산. - Functional Interface (추상 메서드 선언이 1개인 interface)는 메서드의 Meta 정보가 단일하기 때문에, 프로그램이 정확한 유추가 가능하다. import org.junit.Test; // 간단한 Thread 실행 public class LambdaTe..
2020.11.27 -
java 버전별 특징(1.0~1.7)
1. java 1.0 - 1996년 1월 발표 - "Write Once, Run Anywhere" > JVM 기반 - 메모리 관리, 다중 상속 등 기존의 문제점을 극복하기 위한 목표를 가지고 접근 - 플랫폼의 안정성 및 웹브라우저에서의 Java Applet 시연으로 급 인기 상승 2. java 1.1 - 1997년 2월 발표 - Inner Class, Java Beans, JDBC, RMI 도입 - reflection 도입 : 공개 인터페이스 부재로 런타임 중 조작 불가. - Window platform 용의 JIT 방식의 Execution Engine 내 compiler 최초 도입(by Symantec) - 국제화, Unicode 지원 3. java 1.2 (Playground) - 1998년 12월 ..
2020.11.25 -
JVM 이란
jvm은 간단히 얘기하면 java 실행 환경 이다. 이것을 아는 것은 왜 중요할까? 이는 jvm 이전의 프로그래밍 언어의 패러다임과 관련이 있다. 이전의 언어는 하드웨어를 직접 제어하기도, 메모리를 직접 관리하기도 했다. 이는 곧 특정 OS에 설치된 라이브러리에 의존하는 코드가 나오게 되고, OS가 바뀌거나 버전이 업그레이드 되면 영향을 받을 수 밖에 없다. 이 와중에.. Write Once, Run anywhere 라는 유명한 말과 같이 Java가 세상에 나오게 되며, 바로 저 말의 이면에는 JVM이 있는 것이다. 그렇다. 그 당시에 저 개념은 기존 소프트웨어 개발자들에게는 충격이었다. 이를 가능하게 하는 JVM은 개발자는 application 코드를 작성하고, 나머지 저수준의 메모리 관리 등은 가상머..
2020.10.30 -
비트마스크
bit : 2진수의 1자리 > 예를 들어 8비트를 가지고 부호가 없는 정수 0 부터 255 까지를 표현 0 = 00000000 255 = 11111111 1. 비트 연산 1) AND 연산 (기호 : a & b ) : 둘다 1일 경우만 1, 둘중에 하나만 값이 0 이어도 결과는 0 이 된다. ex) 111 & 101 = 101 ex) 101 & 100 = 100 ex) 001 & 100 = 0 2) OR 연산 (기호 : a | b ) : 둘중에 하나만 값이 1 이면 1, 둘다 0 일 경우만 0 이 된다. ex) 101 | 100 = 101 ex) 011 | 100 = 111 ex) 1000 | 0101 = 1101 3) XOR 연산 (기호 : a ^ b ) : 둘이 같은 값 (11 or 00) 이면 0 이..
2020.10.19 -
객체지향 개발 원칙
스프링이 개발자에게 제공하는 가치 = 객체지향과 테스트 ※ 객체지향 개발의 원칙 (SOLID) 1. 단 하나의 책임 원칙 (SRP : Single Responsibility Principle) - 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 한 클래스에 너무 많은 기능을 담으면 안 된다. - 비즈니스 객체가 다른 문제와 결합하면, 해당 비즈니스를 참조하는 모든 객체가 Non 비즈니스 문제로 인해 영향을 받을 수 있다. 2. 개방-폐쇄 원칙 (OCP : Open-Closed Principle) - 소프트웨어 엔티티(클래스, 모듈, 함수)는 확장에 대해서는 개방되어야 하지만, 변경에 대해서는 폐쇄되어야 한다. 예를 들면, 모듈 자체를 변경하지 않고도, 그 모듈을 둘러싼 환경을 바꿀 수 있..
2020.10.16