no image
[Java] 웹 개발 개론
Web HTTP(Hypertext Transfer Protocol) HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜 URI(Uniform Resource Identifier) 특정 리소스를 식별하는 통합 자원 식별자 HTML(Hyper Text Markup Language) 하이퍼 미디어를 표현하기 위한 언어 REST(Representational State Transfer) Client - Server Client : 데이터를 사용자에게 표시하거나 이에 대한 후속 작업을 처리한다. Server : 데이터를 저장 및 조작하고 효율적인 방식으로 클라이언트에게 제공한다. Stateless 모든 정보는 요청을 통해서만 이루어지며 요청에 대한 정보는 서버에 저장하지 않는다. Cach..
2022.05.17
no image
[Java] 객체 지향과 디자인 패턴
객체 지향의 4대 특성 1. 캡슐화 객체의 속성을 보호하기 위해 사용 Method 설계 속성이 선언되었다면 해당 속성을 변경하는 method는 반드시 선언해야한다. Getter / Setter Method CRUD Method Business Logic Method 인스턴스 생명 주기 처리 Method 인스턴스 영구성 관리 Method 무결성 캡슐화 코딩 : 변수는 private 로 선언하고 메서드는 public으로 선언한다. Getter / Setter 를 제외하고는 매개변수를 Validation 한 후에 메서드를 수행한다. 2. 상속 속성의 상속이 아닌 하위 개체로 내려갈수록 구체화된다. 프로그램 구조 이해도 최상위 클래스의 구조를 통해 하위 클래스의 동작을 이해할 수 있다. 재사용성 및 유지보수성 ..
2022.05.09
no image
[Java] 자료 구조
자료구조(Data Structure) 효율적인 로직을 짜기 위한 기본 토대 개발하려는 시스템에 가장 효율적인 자료구조를 선택하는게 중요하다. 선형 자료구조 배열(Array) 자료의 물리적 위치와 논리적 위치가 같다. 인덱스 연산에 의해 배열 내 요소를 바로 꺼낼 수 있다. 산술적 연산이 빠르다. 배열의 개수에 의존성을 갖는다. 연결 리스트(Linked List) 노드가 필요할 때마다 메모리를 할당 받고 자료는 링크를 통해 연결된다. 자료의 물리적 위치와 논리적 위치가 다를 수 있다. 자료뿐만 아니라 다음 요소를 가리킬 링크를 가진다. Ex. C, C++ 의 포인터 데이터 수정에 따라 링크 연결만 생성 또는 해제해주면 되기 때문에 배열에 비해 수행속도가 적게 든다. 스택(Stack) Last In Firs..
2022.05.03
no image
[Java] 객체 지향 프로그래밍(3)
상속 (extends) 이미 구현된 클래스보다 더 구체적인 기능을 구현할 때 사용 protected 접근제어자를 이용하여 하위 클래스에서도 상위 클래스의 멤버 변수에 접근이 가능하도록 한다. 하위 클래스에서 상위 클래스를 상속받으면 하위 클래스 생성자에서 먼저 상위 클래스 생성자를 호출한다. 상속을 이용한 멤버십 시나리오 구현 | 📄 Customer.java /** * 일반 고객 클래스 */ public class Customer { // protected : 하위 클래스 접근가능 protected int customerId; protected String customerName; protected String customerGrade; int bonusPoint; double bonusRatio; pu..
2022.04.26
no image
[Java] 객체 지향 프로그래밍(2)
Static 변수 힙 메모리 : 필요할 때마다 allocation 받아서 처리하는 동적 메모리 영역 스택 메모리 : 함수가 호출될 때마다 함수 내에서 사용하는 지역 변수 메모리 영역 데이터 메모리(constant) : 프로그램이 로드 될 때부터 공유되어 사용되는 메모리 영역 | 📄 Employee.java public class Employee { public static int serialNum = 1000; private int employeeId; private String employeeName; private String department; // 사원이 한명 추가될 때마다 사번 증가 public Employee() { serialNum++; employeeId = serialNum; } pub..
2022.04.19
no image
[Java] 객체 지향 프로그래밍 (1)
객체 기능을 수행하는 데이터의 단위 객체 지향 프로그래밍 vs 절차 지향 프로그래밍 객체 지향 프로그래밍 객체 간의 관계가 존재 객체의 속성, 기능, 협력 구현 필요 존재하는 것을 추상화한 뒤 코드화를 진행 대표 언어 : C++, java 절차 지향 프로그래밍 시간의 흐름에 따른 프로그래밍 컴퓨터의 작업 처리 방식과 유사 컴퓨터의 처리구조와 유사해 실행속도가 빠름 대표 언어 : C ⭐️ 객체 지향의 반대가 절차 지향, 절차 지향의 반대가 객체 지향은 아니다! Ref. 절차지향 VS 객체지향 절차지향(Procedural Programming)이란? 절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법 brownbe..
2022.04.07
no image
[Java] Basic Java (2)
증가, 감소 연산자 연산자가 항의 앞에 있는 가 뒤에 있는 가에 따라 연산 시점과 결과가 달라진다. 문장(statement)의 끝 ; 을 기준으로 연산결과를 적용한다. public class OperatorTest { public static void main(String[] ars) { int gameScore = 150; int lastestScore = ++gameScore; // gameScore += 1; int lastScore = gameScore++; System.out.println(lastestScore); System.out.println(lastScore); System.out.println(gameScore); } } 단락 회로 평가(short circuit evaluation) ..
2022.04.04
no image
[Java] Basic Java (1)
네이밍 컨벤션 Camel Case 권장 문자열 사이를 대문자로 구분하는 방법 클래스명은 대문자로 쓴다. 패키지명은 소문자로 쓴다. 변수명의 시작은 숫자로 쓰는 건 불가능하다. 변수명의 특수문자에는 $와 _만 가능하다. 변수명 뒤에 숫자를 쓰는 건 권장되는 방법은 아니다. ⭐ 변수 네이밍의 목적은 프로그래밍 중의 용도에 맞고 가독성을 높이는 것이다! 변수, 함수의 명명은 축약형으로 쓰는 것보다 명시적으로 쓰는 게 좋다! int ns; // worst int numberOfStudent; // best indexing variable 같은 경우는 간단한 형태로 표현해도 좋다! Ex: i, j 정수 bite : 바이트 단위의 데이터 핸들링 시 이용 (음악, 동영상, 실행 파일 등), input / output..
2022.03.29
no image
[Java] 멀티스레드
멀티스레드 멀티 프로세스 : 독립적 (할당받은 메모리를 통해 실행) 멀티 스레드 : 독립적 x (하나의 프로세스 내부에 생성) 메인 스레드 반드시 존재 main() 메소드를 실행하면서 시작 싱글 스레드에서는 메인 스레드 종료시 프로세스 종료 멀티 스레드는 작업 스레드가 계속 실행 중이면 프로세스 종료 x 작업 스레드 생성 Thread 클래스로부터 직접 생성 Runnable : 작업 스레드가 실행하는 코드를 갖고 있는 객체 Runnable : 인터페이스 타입 → 구현 객체를 직접 만들어야함 Runnable ⊃ run() → 재정의 Runnable은 작업 내용을 가지고 있는 객체. (실제 스레드는 아님) Runnable 인터페이스 class subThread implements Runnable { publi..
2021.10.18