[테코톡 정리] 어썸오의 JVM Memory Layout
·
맛있지만 저작권 문제/테코톡
우아한테크코스 어썸오의 JVM Memory Layout을 듣고 정리한 글입니다. 시작하기 앞서, 나는 [10분 테코톡] 김김의 JVM Specification 을 먼저 들어봤는데 발표와 내용이 너무 깔끔해서 추천한다. 실제 컴퓨터의 메모리 레이아웃은 아래와 같다. 메모리에 OS나 다른 애플리케이션 프로세스들이 상주하고, JVM도 실행이 되면 아래와 같이 공간을 차지하게 된다. 1. JVM의 구조 자바 JVM의 구조는 위와 같다. 그중에 Execuation Engine에 Interpreter, JIT Compiler, Garbage Collector가 있으며, 위 JVM Memory라고 적혀있는 박스를 Runtime Data Areas라고 한다. 자바 코드가 동작하기까지 과정 클래스 파일 안에 어떤 필드가..
[테코톡 정리] 제리의 MVC 패턴
·
맛있지만 저작권 문제/테코톡
우아한테크코스 제리의 MVC 패턴을 듣고 정리한 글입니다. MVC 패턴의 탄생 배경 과거의 프로그래머들은 수많은 프로그램을 만들었다. 하지만, 코드가 많아질수록 복잡해져 코드가 파악하기 힘들고 기능을 수정할 때마다 대부분의 코드를 갈아엎어야 하는 경우가 많았다. 즉, 유지보수가 하기 어려웠다. 그러다 계속 코드를 짜다 보니, 특정 코드 구성을 하니 유지보수가 편한 것을 발견하게 됐다. 이러한 규칙성이 조금씩 보이기 시작했다. 그리고 이 패턴을 공식처럼 만들어 논문으로 발표하게 됐고, 많은 프로그래머들의 사랑을 받아 오늘날의 MVC 패턴이 생겨나게 되었다. MVC는 유지보수가 편해지는 코드 구성 방식이라고 할 수 있다. MVC를 웹에 비유해서 맛보기 사용자가 구글에 코딩이라고 검색을 한다. 컨트롤러는 코딩..
String, String Buffer, String Builder
·
개발(레거시)/자바
1. 시작부터 요약 자바에서 문자열을 다루기 위해서는 크게 String, String Buffer, String Builder를 사용할 수 있다. 들어가기 앞서 요약하자면, 연산이 많지 않을 경우는 아무거나 사용해도 상관없다. 하지만, 멀티 쓰레드 환경이고 문자열 연산이 많다면 String Buffer를 사용하고, 문자열 연산이 많고 쓰레드 동기화를 고려하지 않아도 되는 경우 String Builder를 사용한다. 또한 문자열 연산이 적고, 멀티 쓰레드 환경을 고려해야 한다면 String 클래스를 사용하면 적절하다. 2. 불변(immutable)한 String 클래스 자바의 String 클래스는 불변하다. 위와 같은 예제에서 보이는 것처럼, String 클래스는 기존 문자열에 "Tendulkar"를 더해..
현실 세상의 TDD - 안정감을 주는 코드 작성 방법
·
맛있지만 저작권 문제/분류하긴 애매한데 하여간
보호되어 있는 글입니다.
[테코톡 정리] 오리와 코린의 Merge, Rebase, Cherry pick
·
맛있지만 저작권 문제/테코톡
우아한테크코스 오리와 코린의 Merge, Rebase, Cherry Pick을 듣고 정리한 글입니다. 들어가기 전, 사전 지식 HEAD는 현재 브랜치를 가리키는 포인터이며, 브랜치는 브랜치에 담긴 커밋 중 가장 마지막 커밋을 가리킨다. origin/HEAD는 원격 레파지토리의 기본 브랜치의 HEAD 포인터를 의미한다. 예시로 1주 차 미션에 내가 반영한 커밋의 시작 로그와 마지막 로그이다. 마지막 로그 :(HEAD -> le2sky, origin/le2sky) refactor: 메서드 간격정리(문제 7) 시작 : (origin/main, origin/HEAD, main) feat: setup precourse onboarding project $ git remote -v origin https://git..
Generic, Variance
·
개발(레거시)/자바
1. Generic 제네릭 자료형이란 클래스에서 사용하는 변수의 자료형이 여러 개 일 수 있고, 그 기능은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언하는 것이다. 실제로 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식이라 할 수 있다. 주로 컬렉션 프레임워크에서 많이 사용된다. 제네릭의 의의 첫 번째는 형 변환을 할 때 생기는 성능적인 이슈를 해결하는 것이다. 두 번째는 제네릭을 사용해 안정적이고 범용적인 API를 개발하기 위함이다. 다음은 제네릭 자료형을 사용하지 않은 예시이다. public class Cage { private Cat animal; public void setAnimal(Cat animal) { thi..
DataTypes, Type conversion, Type of variables
·
개발(레거시)/자바
1. DataTypes 변수를 선언하면 해당되는 자료형의 크기 만큼 메모리가 할당된다. 변수는 할당된 메모리를 가리키는 이름이다. 자바의 자료형은 primitive type 8종류와 reference type(non-primitive)으로 이루어져 있다. 분류는 아래와 같다. Primitive Type 정수형(byte, short, int, long)의 경우에는 표현범위가 -2^(n-1) ~ 2^(n-1) - 1 임을 기억하자. 자바에서 사용하는 정수에 대한 기본 자료형은 int이다. 자바의 정석에 따르면 int는 CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문에 일반적으로도 int를 많이 사용한다고 한다. 효율적인 실행보다 메모리를 절약이 필요할 때는 상황에 맞는 자료형을 사용하는 것이 적절하다..
Basic Syntax, DataStructures
·
개발(레거시)/자바
1. Basic Syntax 메인 메서드(기본 메서드) JVM은 런타임 정도로 일단 생각하자. 예를 들어, 당신이 JS 개발자라면 런타임은 Node.js나 웹 브라우저가 있을 것이고, C#은 아마도 닷넷 정도로 생각해보자. 다음에 제대로 다루어 보겠다. TECHIE DELIGHT에서 가져온 내용입니다. JVM(Java Virtual Machine)은 지정된 클래스의 메인 메서드를 호출하여 실행하고 main() 이후 프로그램에 필요한 다른 모든 메서드를 호출한다. public class TestProject { public static void main(String[] args){ //... } } 여담으로 일반적으로 매개변수(Parameter)는 함수를 정의할 때 사용되는 변수를 매개변수, 실제 함수를 ..
[백준 #14938] 서강그라운드, 자바스크립트 풀이
·
CS/알고리즘
문제 난이도 유형 🥇골드 4티어 데이크스트라, 최단 경로, 우선순위 큐 문제 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 7417 3813 3063 50.271% 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 하는 게임이다. 서강그라운드에서 1등을 하면 보상으로 치킨을 주는데, 예은이는 단 한번도 치킨을 먹을 수가 없었다. 자신이 치킨을 못 먹는 이유는 실력 때문이 아니라 아이템 운이 없어서라고 생각한 예은이는 낙하산에서 떨어질 때 각 지역에 아이템 들이 몇 개 있는지 알려주는 프로그램을 개발을 하였지만 어디로 낙하해야 자신의 수색 범위 ..
이하눌