| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 엔티티 생명주기
- tag
- ci/cd
- 카카오사용자정보가져오기
- MIND 2023 #후기
- input
- 상속
- Spring API
- 카카오인가코드받기
- GitHub_Actions
- 백엔드공부
- static
- form
- 어떤 개발자?
- html
- 백엔드스쿨
- 카카오인증토큰받기
- button
- 백엔드 로드맵
- oAuth2
- 엔티티 매니저
- Interface
- Docker
- jenkins
- feignClient
- 예외
- 인스턴스
- Java
- spring
- 제로베이스
- Today
- Total
목록전체 글 (85)
HiDevelop
물리적인 하나의 컴퓨터에는 여러 개의 서버가 동작할 수 있다. 각각의 서버는 포트라는 값으로 구분되어서 동작한다.( Web-80, Email-20...) 인터넷 TCP/IP 기반의 네트워크가 전 세계적으로 확대되어 하나로 연결된 네트워크들의 네트워크(네트워크 결합체) TCP/IP : 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는데 사용하는 통신 프로토콜들의 집합 HTTP(Hyper Transger Protocol) HTTP는 Sever-Client 모델을 따른다. Sever --Client 모델 : Client 와 Sever간의 요청과 응답을 주고받는 모델 무상태성(Stateless) 프로토콜 어린이집 교사(Sever)가 돌볼 수 있는 아이(Client)의 수는 10명으로 제한되어..
쓰레드의 메모리 접근방식 다음과 같이 존재한다고 가정해보겠습니다. class IncreaseThread extends Thread{ int num = 0; public IncreaseThread(int num){ this.num = num; } public void run(){ num +=1; } } public class ThreadAccessMemory{ public static void main(String[] args){ int num = 9; IncreaseThread threadA = new Thread(num); IncreaseThread threadB = new Thread(num); threadA.start(); threadB.start(); } IncereaseThread : 변수 nu..
Thread의 스케줄링과 쓰레드의 우선순위 컨트롤 다수의 쓰레드가 생성될 수 있기에, JVM(자바 가상 머신)은 쓰레드의 실행을 스케줄링(컨트롤) 해야 합니다. 다음과 같은 기본적인 알고리즘을 따라 스케줄링합니다. 우선순위가 높은 쓰레드의 실행을 우선한다. 동일한 운선순위 쓰레드가 둘 이상 존재할 때 CPU의 할당시간을 분배해서 실행한다. 자바의 쓰레드는 우선 순위가 할당되는데, 이는 우선적으로 실행되어야 하는 쓰레드의 순위를 의미합니다. 가장 높은 우선순위는 정수 10, 가장 낮은 우선순위는 정수 1로 표현합니다. 참고사항 : 자바가 언어 차원에서 쓰레드를 지원하고는 있지만, 쓰레드는 특성상 운영체제에 상당히( 윈도우10, 리눅스 등) 의존적입니다. 즉 가상 머신이 동작하는 운영체제에따라서 실행의 결과..
프로그램이 실행이 요청되면 메모리 공간이 할당되고, 이 메모리 공간을 기반으로 프로그램이 실행됩니다. 이렇듯 할당된 메모리 공간을 이용해 실행 중에 있는 프로그램을 Process(프로세스)라고 합니다. 보통 여태까지 해왔던 프로세스들은 main메소드의 호출을 통해 프로그램 하나만 실행해 왔습니다. 그러나 하나의 프로세스 내에서 둘 이상의 프로그램을 형성할 수도 있습니다. class ShowThread extends Thread{ String threadName; public ShowThread(String name) {threadName = name;} public void run() { //Thread의 mian문인 run을 오버라이딩 for(int i = 0; i> 프로세스내에서 프로그램의 흐름 형성..
Generics 클래스는 무엇일까? 왜 필요할까? 볼펜, 연필 클래스가 있고 이 필기구를 담는 볼펜 박스, 연필 박스 클래스를 정의해봅시다. class Pen{ String Content; public Pen(String Content) {this.Content = Content;} public void showContent() {System.out.println(Content);} } class PenBox{ Pen pen; public void store(Pen pen) {this.pen = pen;} public Pen pullout() {return pen; } } class pencil{...} //위 코드와 유사함 class pencilBox{...}//위 코드와 유사함 이제 각 연필과 볼펜을..
Clone 메소드 protected object clone() throws CloneNotSuppertedException 해당 메소드는 Object의 클래스에 정의되어 있는 메소드로, 호출된 인스턴스의 복사본이 생성되고, 복사본의 참조 값(주소값)을 반환한다. 다음의 코드를 보자 class Cat implements Cloneable{ String name; int age; public Cat(String name, int age) { this.age = age; this.name = name; } public void show() { System.out.printf("[%s, %d]",name, age); System.out.println(""); } public Object clone() throw..
JVM은 OS가 할당해 주는 메모리 공간을 기반으로 자기자신과 자바응용프로그램의 실행을 돕습니다. JVM은 메모리 공간을 효율적으로 사용하기 위해 데이터 특성에 따라 분류해서 저장합니다. JVM은 메소드, 스택, 힙 영역으로 메모리를 나눕니다. 메소드 : 메소드의 바이트코드, static 변수 스택 : 지역변수, 매개변수 힙 : 인스턴스 * 자바 바이트 코드 : 소스파일을 컴파일 할 때 생성되는, JVM에의해 실행이 가능한 코드 메소드 영역 메소드 영역에 저장되는 데이터는 클래스를 처음 메모리 공간에 올릴 때 초기화 되는 대상을 저장하기 위한 공간입니다. 주로 메소드의 바이트 코드와 static 변수가 저장됩니다. 그럼 static 메소드는?, 다른 바이트 코드들은 저장되지 않는 걸까요? 프로그램의 대부..
예외 : 프로그램의 논리에 맞지 않는 상황 예외처리의 방식 (try~catch) - if문을 통해 예외를 처리할 수 있지만, if문은 예외 처리만을 위해 사용되지 않기 때문에, 코드의 가독성이 떨어질 수 있다. 따라서 예외처리문인 try~catch문을 통해 예외를 처리하게 되면 어느 부분이 예외가 발생하는지 예외처리를 어떻게 하는지에 대해 쉽게 파악할 수 있다. try~catch문 구조는 대략 다음과 같다. try { if(choice INIT_SELECT.EXIT) { throw new MenuChoiceException(choice); //예외 발생구간!!! } switch(choice) { case INIT_SELECT.INPUT: phone..
Local 클래스 메소드 내에서만 정의가 가능한 클래스 정으된 메소드 내에서만 인스턴스 생성과 참조변수 선언이 가능 Local, Anonymous 클래스 공부해도, 당분간은 쓸 일이 없어 까먹을 것 같다. 기억나지 않을 때마다 들어와서 찾아보자! Local 클래스를 메소드의 반한형으로 사용하고 싶다면? 인터페이스를 활용하면 됩니다. 인터페이스를 선언하고 이를 메소드의 반환형으로 만듭니다. Local 클래스가 해당 인터페이스를 구현하고 return new Local클래스명() 을 통해 반환하면 Local 클래스의 인스턴스를 메소드의 반환값으로 사용할 수 있습니다. Local 클래스가 접근 가능한 변수는 무엇이 일까요? Local 클래스는 메소드 내에 존재하기 때문에 매개변수와 지역변수에 접근이 가능합니다...
class OuterClass{ private String myName; private int num; OuterClass(String name){ myName = name; num = 0; } public void whoAreYou() { num++; System.out.println(myName + "OUterclass" + num ); } static class NestedClass{ NestedClass(){ System.out.println("Hi"); } } class InnerClass{ InnerClass(){ whoAreYou(); } } } public class InnerClass { public static void main(String[] args) { // TODO Auto-ge..