분류 전체보기
-
JVM & GC (JAVA)Java & Spring/자바 2020. 10. 20. 18:22
JVM과 GC JVM (Java Virtual Machine) 자바 애플리케이션을 클래스 로더를 통해 읽어서 자바 API와 함께 실행하는 것 JAVA와 OS 사이에서 중개자 역할 ~> OS에 구애받지 않고 재사용을 가능하게 함 메모리 관리, Garabage collection을 수행 스택 기반의 가상머신 cf) ARM 아키텍처와 같은 하드웨어는 레지스터 기반으로 동작 자바 실행 과정 JVM은 OS로부터 프로그램이 필요로 하는 메모리를 할당받음 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리 자바 컴파일러(javac)가 소스코드(.java)를 바이트코드(.class)로 변환 Class Loader를 통해 class 파일들을 JVM으로 로딩 로딩된 class 파일들은 Execution engin..
-
MVC 패턴기술 이야기/Design 2020. 10. 20. 15:54
MVC 패턴 간략하게 정리 Model 비즈니스 로직을 구현하는 영역, 데이터를 처리하는 부분 DB 연결 및 데이터 CRUD 작업을 수행 최근에는 domain 영역과 비즈니스 로직 영역을 나누어 service에서 비즈니스 로직을 분기 처리, domain에서 각 역할을 분기처리 View 컨트롤러에게 받은 모델의 결과값을 가지고 사용자에게 출력할 화면을 만드는 역할 만들어진 화면을 웹 브라우저에 전송 ~> 웹브라우저가 출력 Controller 클라이언트 요청에 따라 실제 업무를 수행하는 모델 컴포넌트를 호출해주는 역할 클라이언트가 보낸 데이터를 모델에 전달할 때, 데이터를 가공하기도 한다. 2020.12.04 추가 컨트롤러의 역할은 시스템을 사용하기 위한 인프라와 관련된다.(데이터 관련 X) 비즈니스 로직은 ..
-
TDD(Test-Driven-Development, 테스트 주도 개발)기술 이야기/TDD 2020. 10. 20. 15:53
TDD란 무엇인가 Tset-Driven-Development => 테스트 주도 개발 짧은 개발 사이클에 의존하는 개발 프로세스 새로운 기능에 대한 자동화된 테스트케이스 작성 ~> 테스트를 통과하는 간단한 코드 작성 테스트 종류 단위 테스트 Unit test : 소프트웨어의 최소단위, 보통 함수를 가리킴 통합 테스트 Integration test : 단위 기능이 합쳐진 기능에 대한 테스트 시스템 테스트 System test : 위 내용보다 더 큰 개념, 전체 시스템에 대한 동작 테스트 인수 테스트 Acceptance Test : 고객이 ok할 수 있는지 판단하기 위한 테스트 TDD의 장단점 장점 객체지향적인 코드 개발 명확한 기능과 구조를 설계할 수 있음 코드 재사용성을 보장하면서 코드를 작성하게 됨 설계..
-
Restful API기술 이야기/Design 2020. 10. 20. 15:46
RESTful API 6 원칙 Uniform Interface URI로 지정한 리소스 조작을 통일되고 한정적인 인터페이스로 수행 Stateless(무상태성) REST는 무상태성 성격(상태정보 저장/관리 X) 자유도 증가 ~> 구현이 단순해짐 Cacheable(캐시 가능) 웹의 인프라 활용 가능 ~> HTTP의 캐싱 기능 활용 HTTP 프로토콜 표준에서 사용하는 Last-Modified나 E-Tag를 활용한 캐싱 Last-Modifed는 E-Tag보다 부정확 ~> 예비용으로 활용 Last-Modifed에는 마지막 수정된 잘짜와 시각을 담고있음 E-Tag는 특정 버전의 리소스를 식별 E-Tag는 요청된 값을 ASCII 코드와 같이 고유한 형태로 표현 Client-Server 구조 REST 서버는 API 제공..
-
객체지향 프로그래밍 (OOP)Java & Spring/자바 2020. 10. 20. 15:43
객체지향 프로그래밍(OOP)란 무엇인가 오퍼레이션(operation)으로 정의할 수 있음 (객체의 기능) 식별 이름 파라미터 및 파라미터 타입 리턴 값 및 리턴 타입 인터페이스 모든 오퍼레이션 집합 객체를 사용하기 위한 명세를 의미 메시지 오퍼레이션의 실행을 요청하는 것을 메시지를 보낸다고 표현 메소드 호출 ~> 메시지를 보내는 과정 객체들이 메시지를 통해서 통신 ~> 원하는 결과를 얻는다 (객체 간 메시지를 주고받음) 4가지 특징 추상화 객체의 공통 프로퍼티(요소)와 메소드를 뽑아내는 작업 코드를 어떻게 짜야할지 미리 추상적으로 설계하는 작업 캡슐화 객체 수행 목적에 따라서 데이터 구조 및 메소드를 결합해서 묶는 것. 외부에서 무분별한 객체의 변경을 막기 위해, 구현 내용을 감추고 이용 방법만 제시 클..
-
클라우드 컴퓨팅CS 지식/기타 2020. 9. 30. 17:54
클라우드 컴퓨팅 private/ public/ hibrid/ multi 4가지 public cloud 환경이 여러 사용자로 파티셔닝 되거나 재배포 되는 클라우드 즉, 가상 환경 내의 서버를 임대하는 방식 private cloud 단일 최종 사용자 or 그룹의 전용 클라우드 환경, 실행 시 방화벽으로 보호됨 완전히 독립적인 액세스 권한이 있는 단일 고객만 기반 IT 인프라를 독점으로 사용하는 경우 등 hibrid cloud 여러 환경이 LAN, WAN, VPN, API 등을 통해 연결된 형태 public과 private을 혼합돼서 사용할 수 있음 multi cloud 2개 이상의 퍼블릭 or 프라이빗 클라우드로 구성된 것으로, 모든 하이브리드 클라우드는 멀티 클라우드에 포함된다.(반대는 X) 어떤 형태로든..
-
BOJ) 평범한 배낭알고리즘/백준 2020. 8. 28. 16:49
평범한 배낭 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 풀이 짐의 개수 n, 버틸 수 있는 무게 k, n개 만큼의 짐의 정보 (무게 w, 가치 v)가 주어진다. 최대한 k에 맞추어, 최대 가치(max v)를 찾는 문제다. dp의 크기를 최대 가치 k까지 입력받을 수 있도록, k+1만큼 생성해준다. 짐의 정보를 순회하면서 w와 v를 가져온다. 그리고 k 부터 w까지 무게를 줄여나가면서, 현재 무게 ( i )의 dp값(가치) 과 dp[i-w] ..
-
BOJ) 숫자고르기알고리즘/백준 2020. 8. 28. 16:42
숫자고르기 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절� www.acmicpc.net 풀이 어제 풀었던 사이클 문제와 비슷한 것 같은데, 이 문제는 BFS로 풀었다. (사실 어제 푼 방법이 기억에 남지 않았다.) 1~N번까지 순회하면서 해당 인덱스가 가진 값을 타고 가는 검사를 통해, 시작한 인덱스 i번이 나오면 답에 추가를 해줬다. 위의 값을 가지고 있다면, 1번~ 7번까지 순회를 하면서 답을 찾는 것이다. 1번 index는 3이라는 값을 가지고 있다. 이 3이라는 값을 LinkedList에 넣고, 탐색을 한다. 3번 ..