전체 글 50

[Java] 연산자

학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 연산자 ? 연산자란 수나 식을 일정한 규칙에 따라 계산하는것입니다. CPU : 중앙처리장치 컴퓨터 시스템을 통제하고 , 프로그램의 연산을 실행하는 제어장치입니다. 반도체는 대부분 실리콘으로 이루어져있는데, 실리콘은 최외곽 전자가 4개를 가지고있습니다. 실리콘원자는 최외곽원자가 8개일 때 가장 안정한 상태를 가집니다. 실리콘원자는 다른 실리콘원자와 원자를 공유하며 강하게 결합되어있습니다. 이 때 최외곽 원자가 하나 부족하거나 , 최외곽 원자가 하나 더 많을경우 실리콘원자는 불안정한..

공부/JAVA 2022.09.14

[자료구조] 트리구현

DFS,BFS 공부하기전에 기초가되는 트리구조를 어떻게 구현할 지 생각해 보았다. 답지를 보면 더 빠르겠지만 제대로 된 이해를 하지 못할것 같아서 먼저, 혼자 생각한다음에 트리를 구현해보록 했다. 자바에 익숙해져서 그런지 객체로 구현하는 것이 습관이 되어서 , 비록 자바스크립트이지만 class를 사용하여 객체들만의 특성을 생각하여 변수를 부여하였다. 일단 구현은 했는데,,, 맞는지 검증하는 과정을 더 생각해보아야겠다 class Tree{ _masterNode; _nodes = []; _values = []; constructor(nowValue , values){ this._values = values; this. _masterNode = new Node(nowValue,0,values,null,this..

공부/알고리즘 2022.09.13

[알고리즘] 그리디 알고리즘(탐욕법)

그리디 알고리즘이란 ? 주어진 상황에서 가장 좋은것(큰 값)을 구하는 알고리즘이다. 단순히 가장 좋은것을 선택하는 행위를 반복하여도 최적의 값이 추출되는지 검증이 필요하다. 1. 해결 아이디어 제시 거스름돈으로 사용할 화폐단위를 정의한다. 가장 적은 개수를 구하는 문제이기에 화폐단위중 가장 큰 값으로 거슬러 줄수 있는 개수를 구한다. 그다음으로 적은 금액으로 거슬러 줄 수 있는 개수를 구한다. 해당 작업을 반복한다. 2. 정당성 분석 해당 문제는 거슬러 주어야할 최소 동전 개수를 구하는 문제 이기에, 화폐의 가장큰 단위로 거슬러 준다면 , 거스름돈의 개수를 최소화할 수 있다. 예 : 거스름돈 1,000 일 경우 500 * 2 100 * 10 50 * 20 10 * 100 이기에 가장큰 화폐단위인 500원..

공부/알고리즘 2022.09.08

자바 데이터 타입, 변수 그리고 배열

목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 자바의 데이터타입 - 기본형 타입 (Primitive Type) 총 8종류의 기본형 타입을 미리 정의하여 제공 실제 값을 저장하는 공간으로 스택 메모리가 사용된다 타입 할당되는 메모리 기본값 표현 범위 논리형 boolean false true,false 정수형 byte 0 -128 ~ 127 short 0 -32,768 ~ 32,767 int 0 -2,147,483,648 ~ 2,147,483,64..

공부/JAVA 2022.09.06

[JAVA] JVM 이란 무엇이며 자바코드는 어떻게 실행되는가

JVM : Java Virtual Machine 자바 가상 머신 왜 필요한가 ? Java 의 원칙은 WORA(Write Once Run Anywhere) 이다. 즉 한번 작성한 코드는 어디서든 실행가능해야한다 . 이것을 가능하도록 해주는것이 바로 JVM이다. JVM의 역활 자바코드는 자바 컴파일러를 실행하여 JVM이 이해할 수 있는 자바 바이트코드로 변환된다. 바이트코드 : 1바이트로 이루어진 자바 가상머신이 읽을 수 있는 코드 바이너리코드(기계어) : 0과1로 이루어진 CPU가 읽을 수 있는 코드 + 이렇게 변환된 프로그램은 .class 확장자로 저장된다. 자바 바이트코드를 JVM에서 실행하면 운영체제에 맞게 바이너리코드로 변환하여 하드웨어의 자원을 사용한다. 이 말에 따르면 결국 JVM 은 운영체제에..

공부/JAVA 2022.08.30

BeanFatory와 ApplicationContext

BeanFactory 스프링 컨테이너의 최상위 인터페이스 스프링 빈을 관리하고 조회하는 역활 getBean()을 제공 ApplicationContext BeanFactory 기능을 모두 상속 받아서 제공 BeanFactory 외에도 부가기능을 제공한다 MessageSource 를 활용한 국제화 기능 : 예를 들어 한국에서는 한국어 ,영어권에서는 영어로 출력 EnviromentCapable : 환경변수 _ 로컬 , 개발 , 운영등을 구분하여 처리 ApplicationEventPublisher : 이벤트를 발행하고 구독하는 기능 ResourceLoader : 파일 , 클래스패스, 외부 등에서 리소스를 편리하게 조회 ApplicationContext는 BeanFactory의 기능을 상속받는다 Applicati..

공부/Spring 2022.03.06

스프링 IoC , DI

스프링 IoC ( Inversion Of Control) : 제어의 역전 제어의 역전 ? 보통은 개발자가 원하는 객체를 생성하고 제어하는 스타일로 개발을 하는데 , 개발자가 호출하는것이 아니라 프레임워크 같은것이 호출해주는것 . 기존 프로그램은 클라이언트의 구현객체가 스스로 필요한 구현객체를 생성하고 사용하는 구조였다. 한마디로 구현객체가 프로그램의 제어흐름을 조절했다. 제어의 역전이 사용된 경우 AppConfig가 등장후 구현객체는 자신의 로직을 실행하는 역활만 가지고 있다. 프로그램 제어흐름을 AppConfig가 가져가게 된다. 스프링 IoC ? 스프링은 스프링 프레임워크에서 위의 제어의 역전을 관리해준다. @Bean 어노테이션으로 빈을 등록해주면 스프링 컨테이너에 해당 빈이 등록되게 된다. 기본적으..

공부/Spring 2022.03.03

좋은객체지향의설계원칙5가지(SOLID)

SRP (Single Responsibiliy Principle) : 단일 책임원칙 : 한 클래스는 하나의 책임만 가져야한다 - 한 클래스를 변경할 때 다른 클래스들에 파급효과가 미치면 안된다. 예를 들어 예전 JSP의 경우 DB커넥션과 UI, Bean등 여러가지가 한군데 뭉쳐있다. 이를 각자의 역활을 하는 클래스로 나누어 해당 기능에대한 책임을 지게해야한다. OCP (Open Closed Priciple) : 개방 폐쇄 원칙 : “소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.” - 어느 모듈에 수정을 할 때 다른 모듈을 수정하게 해서는 안된다. 이를 지키면 어느 기능을 추가개발 시 , 기존에 동작하는 코드들에 대해 변경할 필요가 없다. LSP (Liskov Substitution ..

공부/JAVA 2022.02.26

MySQL 성능향상

1. Index 2. B-Tree 3. FastOpimizer & Execution Plan 4. Full Text Index 5. Partition Index Index Scan vs Table Scan(Full Table Search) id(PK) data 1 A 2 B 3 C 만약 조건절에 data로 검색을 했을때 전체 테이블을 스캔해야한다 ( WHERE data = 'A' ) id로 검색했을 때 pk는 인덱스가 있기때문에 인덱스 영역만 읽기는다 Clustered Index VS None-Clustered Index Clustered Index : 물리적인 데이터파일과 직접적으로 연관 1:1 매칭 PK , Unique Index , Physical Data File 읽기 속도만 향상된다 쓰기는 느리..

공부/MySQL 2022.02.26