가비지컬렉터 - 동적을 할당된(Heap) 메모리 영역중 사용하지 않는 영역을 탐지하여 해제하는 기능 Heap에는 오브젝트 타입의 객체 데이터들이 저장된다. Stack에는 파라미터 등 임시 변수와 참조 변수를 저장한다. 자바에서는 Heap에 오브젝트(객체) 데이터 할당된다.(String, Intager(int랑 다르다!) 등) (Stack은 정적(Static)으로 할당한 메모리 영역 - 임시데이터(파라미터, 임시데이터), 및 Heap을 참조하는 참조변수 저장 가비지 컬렉터는 "현재 Stack"을 돌면서(현재 사용하고 있는 객체와 연결된 변수들은 Stack에 존재하니까) 참조 연결된 객체들을 마킹(Reachable)하고 그 외의 것(UnReachable)들은 제거한다. 그래서 가비지 컬렉팅은 언제 일어나는데..
디자인 패턴 = 소프트웨어를 개발하며 공통적으로 발생하는 문제를 해결하기 위한 양식이나 패러다임 그 중에서 대표적인 디자인 패턴인 MVC 디자인 패턴은 애플리케이션을 모델,컨트롤러,뷰 세가지 역할로 구분한 개발 방법론 Model + Veiw + Controller 자바에서는 = JavaBean(Service) + JSP + Servlet JavaBean - 데이터를 표현하기 위한 목적으로 JAVA Bean규약에 따라 작성된 자바 클래스 JSP - HTML에 Servlet기반의 JAVA코드를 삽입하는 형식(기술)(HTML에서 Servlet이 돌아가도록한 서버 스크립트 기술) (Servlet & JSP - 둘다 같은 역할이 가능하다. 하지만 MVC패턴에서 둘의 역할을 나눠서 장점을 활용해 담당하는 부분을 나..
C와 C++의 경우는 OS에 Dependency하다.-> OS가 달라지면 배포가 불가능하다. 따라서 크로스컴파일이 필요하다. 크로스 컴파일 - 타켓 플랫폼에 맞춰 컴파일 하는 것을 크로스 컴파일이라고 한다. JVM은 이를 더 근본적으로 해결해준다. 자바는 운영체제에 제한을 받지 않는다. 자바 바이트코드를 JVM 위에서 동작시켜 OS에 제한을 받지않는다. JVM이 OS에 관련된 작업들을 대신 해준다. 힙 & 스택 관리 GC등 .java(= 소스코드) ---> (컴파일러/javac) ---->.class파일:(=자바 바이트 코드를 담은 파일) ----> JVM이 실행 "당신이 짠 자바 코드를 컴파일 해서 배포하면 어떤 플랫폼이든 다시 컴파일 할 필요 없이 실행시킬 수 있다." - SUN
REGEX = 문자열에서 pattern을 작성 Groups and ranges Chracter뜻 | 또는 () 그룹 [] 문자셋, 괄호안의 어떤 문자든 [^] 부정 문자셋, 괄호안의 어떤 문가 아닐때 (?:) 찾지만 기억하지는 않음 Quantifiers hracter뜻 ? 없거나 있거나 (zero or one) * 없거나 있거나 많거나 (zero or more) + 하나 또는 많이 (one or more) {n} n번 반복 {min,} 최소 {min,max} 최소, 그리고 최대 Boundary-type Chracter뜻 \b 단어 경계 \B 단어 경계가 아님 ^ 문장의 시작 $ 문장의 끝 Character classes Chracter뜻 \ 특수 문자가 아닌 문자 . 어떤 글자 (줄바꿈 문자 제외) \d..
UX는 사용자다. 사용자에게 정보를 얻고 사용자에서 나온 정보를 바탕으로 제품의 품질을 좋게 해야한다. 유명한 앱,서비스에서도 항상 업데이트가 진행되고 다운그레이드도 진행되듯 좋은 디자인은 한 번에 나올 수 없다. 따라서 사용자로 자신을 객관화하는 능력이 가장 중요한 능력이 될 것이다. 다양한 서비스, 기술이 쏟아지고 있는 현재 UX의 중요성은 엄청나게 커질것이다. 경험과 통찰력이 중요한 분야인 것 같다. --------------------------------------------- 아래 정리
Mocking은 테스트코드와 관련이 깊다. 테스트 코드를 작성하다보면 가끔 실제로 작성할 수 없는 코드들을 마주하게 된다. (API실제 호출, 결제 등) 이런 외부 API를 테스트 코드에서 호출하게 되면 실제로 API가 작동해버릴 수 있어 조심해야한다. 이럴 때, 이런 코드들을 테스트해보려고할 때 Mocking이 그 해결책이 될 수 있다. Mcok - 놀리다, 무시하다, 가짜의 거짓된 Mocking은 실제 값으로 테스트를 하기 어려우니 가까 값을 사용할 수 있게 해주는 것이다. 사용은 이럴 때 할 수 있다. 1. 외부 API가 현재 정상적으로 작동할지 않을 때 - 항공권 서비스를 개발할때 여행사에서 운영서버로 적용할 때까지 시간이 많이 걸렸었다. 그럼 그 때까지 손놓고 기다릴 수 는 없으니 Mocking..
//사용방법 Book book = new Builder("MYBOOK").setContent("IT"),setAutor("JINSUB").build(); public class Book { private String title; private String content; private String author; public Book(String title) { } public void setTitle(String title) { this.title = title; } public void setContent(String content) { this.title = title; } //...이하 파라미터별 set함수 Vo Class 및 DTO Class를 설계할 때, 필요한 인자들을 선택적으로 받아야할 경..
도메인의 사전적 정의는 아래와 같다. A domain is a field of study that defines a set of common requirements, terminology, and functionality for any software program constructed to solve a problem in the area of computer programming, known as domain engineering. 컴퓨터 프로그래밍으로 문제를 해결하기 위해 만들 소프트웨어 프로그램을 위한 요구사항, 용어, 기능을 정의하는 학문 영역이 도메인 공학이다. - 위키백과 간단히 말하면 해결하고자 하는 문제의 영역 을 도메인이라고한다. 소프트웨어 입장에서 다시 해석하면 개발하고자 하는 소프트..
신장트리(Spanning Tree) 그래프 내의 모든 정점을 포함하는 트리(필연적으로 연결 트리이다.) 최소 연결 = 간선의 수가 가장 적다. N개의 정점에서는 간선이 N-1개가 된다. 사용 : N개의 정점을 최소의 케이블을 사용하여 연결하고자 하는 경우(통신 네트워크) MST 최소신장트리(Minimun Spanning Tree) 신장트리에서 간선의 가중치 합이 최소인 트리 나올 수 있는 여러 개의 신장트리중에 간선의 가중치의 합이 가장 작은 트리 사이클이 포함되지 않는다!(신장트리 자체가 최소 간선이므로 사이클이 있을 필요가 없다.) MST 구현 방법 - 크루스칼 알고리즘 간선을 선택하는 알고리즘 간선을 정렬한 뒤 작은 순서대로 선택(Greedy) 이 때, 사이클을 형성하는지 체크한다. 추가하고자 하는..
DO 객체지향 내용 정리 - 공부한 내용 한 번더 정리 (그냥 인상깊어서... 책임! 역할! 협력!!) 객체지향 실전을 위해 스프링 부트 시작 - 스프링 객체지향을 실전 적용 연습 목적으로 책 병행해서 공부시작 - 다른 언어들도 가능하지만 자바가 객체지향 연습하기 좋을 것 같아 고민하다가 시작했다. 객체지향적인 사고를 체득하는 것이 목적. 플러그인이란? 소프트웨어의 일부이다 (= 플러그인도 프로그램이다.) 원래 프로그램에는 없지만 Plug-In 해버리면 그 기능을 사용할 수 있는 것 웹브라우저에서 사용하는 플러그인이 대표적이다. 얼마전 종료된 Adobe Flash도 플러그인이다. 웹브라우저가 처리하지 못하는 것을 부분적으로 처리해주는 것 처럼 표준기능을 확장해주는 별도의 프로그램이다. ----------..