[Java] Volatile
·
Java
들어가기 전Volatile은 성능을 포기하고 변경된 값을 정확히 본다 생각하면 된다.CPU에서는 일반적으로 효율적인 처리를 하기 위해 캐시 메모리에 값을 불러오고, CPU는 캐시메모리에 있는 값을 사용한다.다음 문제를 한 번 보자public class VolatileFlagMain { public static void main(String[] args) { MyTask task = new MyTask(); Thread t = new Thread(task, "work"); log("runFlag = " + task.runFlag); t.start(); sleep(1000); log("runFlag를 false로 변경 시도")..
[Java] reverse()
·
Java
reverse()?reverse()는 주로 Collections 클래스나 StringBuilder 클래스를 사용하여 리스트나 문자열을 뒤집는 데 사용한다.자바가 아닌 파이썬의 경우에는 주로 List 객체에서 주로 사용된다.아래는 정렬 이후 reverse()를 사용해 내림차순 정렬을 한 코드의 결과 값이다. (개인적으로 코테 문제를 풀면서 처음으로 배운 부분을 스스로 적용한 부분이라 아직도 기억이 잘 나는중)  적용해보기 (reverse() x)reverse() 메서드를 사용하지 않을 때 내림차순 정렬은 어떻게 해야 할까?제일 접근 하기 쉬운 Bubble Sort로 내림차순에 대한 코드를 짠다면 다음과 같이 짤 수 있다Bubble Sort를 사용하니 임의의 공간인 temp를 만들어줘 비교를 통해 자리를 바..
[Java] Thread Join
·
Java
들어가기 전Join이란 뭘까?여러 개념에서의 Join이 있을 수 있겠지만 이번 글은 Thread 개념에서의 Join이다.Join에 대해 설명하기 전 다음 쓰레드 생명주기에 대해서 한 번 보고 가면 좋을 것 같다.당연한 말이겠지만, 멀티스레드를 구현하지 않는다면 Blocked, Waiting, Timed Waiting을 경험 할 수 없을 것이다.위의 3가지 상태의 경우는 멀티스레드를 통해 한 쓰레드가 동작중이고 그 과정에서 대기, 차단 등을 하는 과정이니.. Join ?Join의 역할은 아래의 사진과 같이 여러개의 스레드가 존재 할 때, 특정 스레드가 끝날 때 까지 다른 스레드를 대기하게 하는 역할을 한다이러한 역할을 고려할 때 Join은  세가지 상태중 Wating(대기)에 해당되며, Join을 호출 했..
[Java] Record
·
Java
들어가기 전record란걸 몰랐던 저는 스파르타에서 1차 프로젝트를 함께 하는 팀원덕에 새로운 자료형을 배우게 되었습니다.ps. 감사합니다 팀원1님,,   record란?코딩에서 record는 불변 객체 (immutable object)를 표현하기 위해 사용되는 데이터 구조입니다. 사용목적 :데이터의 불변성을 유지하면서 속성을 정의하고 처리할 수 있도록 함.이러한 목적을 갖고 있는 record는 "객체지향적 프로그래밍"에 적합합니다. 주요 특징 : 불변성(Immutable) : record는 기본적으로 불변객체이기 때문에 상태 변경이 없는 객체를 다루는데 유용함간결함(conciseness) : 기본생성자, toString(), equals(), hashCode() 등을 자동으로 구현해주기 때문에 코드가 ..
[Java] What is NullPointException?
·
Java
Null이란?흔히 코딩을 하다 보면 Null이란 값이 존재(?)하는데(존재한다는 표현이 맞지는 않을 수 있으나, 편의상 사용) 이 Null 이란 뭘까? 쉽게 카카오톡 선물하기를 떠올리면 된다.친구에게 선물을 하면 구매는 되었지만 배송지가 아직 입력되지 않아 특정기간(자동환불 되는 기간)동안은 주소지를 비워두는 것을 말한다.이 때 이 비워두는 것을 Null이라고 한다. 기본적으로 기본형(int , double, long, boolean)의 경우 자동으로 "0"과 "false"로 값이 초기화가 되지만, 참조형의 경우(ex : int[] students) 데이터에 접근하기 위한 주소를 저장하는 데이터 타입이기 때문에 주소지를 지정하지 않는다면 임의로 Null을 넣어두게 되며 이 때 NullPointExcep..
[Java] Linear Search AND Binary Search
·
Java
이번 글에서는 검색 알고리즘의 기초를 이해하기에 핵심적인 두 가지 기본 알고리즘 선형 탐색( Linear Search)와 이진 탐색(Binary Search)에 대해 써볼 예정이다.사실 여기서 더 들어가면 나오는 트리 구조에 대해 대학원을 준비하면서 어렴풋이 봤던 기억은 있지만, 막상 공부를 위해 세세히 공부하기 시작하니 기초 이론부터 제대로 잡지 않으면 뒤에서 큰일 날 것 같아 글을 쓴다 Linear Search선형 탐색(Linear Search)이란 무엇인가?선형탐색이란 주어진 배열 리스트(Array List)에서 특정 값을 목표로 i = 0부터, i = n - 1 (혹은 i = 1 부터 i = n까지) 차례대로 검색하는 알고리즘을 말한다.이러한 알고리즘의 문제는 차례대로 검색하기 때문에 정렬(sor..
[Java] "float" vs "double" in precision
·
Java
어느정도의 토이프로젝트를 진행 할 수 있지만.. 기본개념없이 주먹구구식으로 Spring, Java, RDBMS(oracle)을 사용해 진행한 느낌이 심해 기초부터 다시 잡고자 Java 개념부터 다시 잡기 위해 김영한 강사님의 "코드로 시작하는 자바 첫걸음" 강의를 듣다 "실무에선 float 보단 double을 더 많이 사용한다. 정밀도에서 차이가 나기 때문이다"라는 말씀에 궁금증으로 찾아보게 되었다.Variable (변수)간단하게 프로그래밍에서 변수는 연관된 기호 이름과 쌍을 이루는 추상적인 저장 위치로, 알려지거나 알려지지 않은 데이터 또는 값으로 지칭되는 객체를 말한다.https://en.wikipedia.org/wiki/Variable_(computer_science)#:~:text=In%20com..