분류 전체보기 43

[Kotlin in Action] 1.코틀린이란 무엇이며 왜 필요한가

코틀린 주요 특성 정적 타입 지정 언어 자바와 마찬가지로 코틀린도 정적 타입 (statically typed) 지정 언어 모든 프로그램 구성요소의 타입을 컴파일 시점에 알 수 있음 객체의 필드나 메서드를 사용할때 마다 컴파일러가 타입을 검증해줌 +) 대표적인 동적타입 지정언어로는 그루비나 JRuby가 있음 자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 명시할 필요가 없음. 대부분의 경우 코틀린 커파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 떄문 이런 기능을 타입 추론 (type inference)라고 부름 정적 타입의 장점 성능 : 실행시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠름 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 떄문에 프로..

[Java] JVM을 파헤쳐보자: 1. 메모리 구조와 멀티스레드

JVM이란? 자바를 공부하는 사람이라면 JVM에 대한 이야기를 많이 들어보았을 것이다. JVM이란 Java Virtual Machine의 약자로, 자바로 작성된 프로그램을 실행시켜주기 위한 가상 머신(가상의 컴퓨터, 컴퓨터안의 컴퓨터)이다. JVM은 Java를 플랫폼 독립적인 언어로 만들어준다는 특징과, 메모리를 관리하고 최적화 해주는 기능이 존재한다는 특징이 존재한다. 여기서 플랫폼 독립적이라는건, 어떤 운영체제 상에서 작성된 프로그램이든 모두 문제없이 돌아간다는 것인데, 이를 가능토록 중개해주는 것이 바로 JVM의 역할이다. 또한 Java이전에는 프로그램 메모리를 모두 SW개발자가 관리했다면, JVM은 가비지 컬렉터를 통해 자동으로 메모리 관리를 해준다! 따라서 개발자는 운영체제에 맞는 JVM만 깔아..

[스프링/Spring] @SpringBootApplication 어노테이션을 완벽하게 파헤쳐보자

0. 목차 1. 서론 2. 본론 @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 3. 정리 서론 스프링부트 프로젝트를 생성을 하게되면, 기본 application클래스가 생성이된다. 해당 클래스를 잘 살펴보면 @SpringBootApllication 어노테이션이 달려있음을 확인 할 수 있다! 아무생각 없이 당연히 달려있으니까 쓰던 어노테이션이지만, “SpringBootApplication 어노테이션을 사용하면 마법과 같은 일들이 발생한다”고 표현을 할만큼 중요한 역할을 수행한다. 본 게시글에서는 @SpringBootApplication 어노테이션에 대해 파고들어 보겠다 본론 우선 파고들어가보면, 스프링부트어플리케이션 어노테이션의 내부는 ..

Programming/Spring 2023.01.09

[데이터 중심 애플리케이션 설계] 2장 : 데이터 모델과 질의 언어

해당 게시글은 [데이터 중심 애플리케이션] 책을 읽고 스터디하며 정리한 글입니다. 데이터 중심 애플리케이션 설계 - YES24 데이터는 오늘날 시스템을 설계할 때 마주치는 많은 도전 과제 중에서도 가장 중심에 있다. 확장성, 일관성, 신뢰성, 효율성, 유지보수성과 같은 해결하기 어려운 문제를 파악해야 할 뿐 아니라 www.yes24.com 서론 소프트웨어 개발에서 가장 중요한 부분인 데이터 모델에 대해 이야기한 챕터. 데이터 모델은 문제를 어떻게 생각해야하는지에 대해서도 큰 영향을 미치기 때문에 매우 중요하다고 기술하고 있다. 각 애플리케이션은 하나의 데이터 모델을 다른 데이터 모델 위에 계층을 두어 만드는데, 이때 각 계층의 핵심 문제는 다음 하위 계층 관점에서의 데이터 모델을 표현하는 방법이다. 따라..

[데이터 중심 애플리케이션 설계] 1장 : 신뢰할 수 있고 확장가능하며 유지보수하기 쉬운 애플리케이션

오늘날의 많은 어플리케이션은 계산 중심이 아닌 데이터 중심적임 일반적으로 데이터 중심 애플리케이션은 공통으로 필요한 기능을 제공하는 표준 구성 요소(standard building block)로 만듬 애플리케이션에서 다시 데이터를 찾을 수 있게 저장 (DB) 읽기 속도 향상을 위해 수행 결과 기억 (캐시) 다양한 방법으로 필터링 할 수 있게 제공 (search index) 다른 프로세스로 메세지 보내기 (steam processing) 주기적으로 대량의 데이터를 분석 (batch processing) 위의 과정이 당연한 이야기 처럼 들린다는것 = 데이터 시스템이 성공적으로 추상화 되었다는 것 데이터 시스템에 대한 생각 데이터 시스템이라는 포괄적인 용어로 묶는 이유에는 데이터 시스템 분류간 경계가 흐려지고..

약 8시간 응시한 라인 카카오 코테 후기

오전 10시부터 오후 7시까지 코테여서 스터디룸을 빌렸다.. 트랙패드까지 가져감ㅋ 9월 24일 오전 10시 - 오후 12시 30분 2022 하반기 라인 코테, 5문제 2시간 30분 총평 알고리즘이라곤 DFS BFS밖에 모르던 상반기에 응시했을때랑 체감난이도가 비슷했다 상반기보다 어려웠다는 평이 다수인데, 너무 아쉽다. 애초부터 3솔을 목표로 임했는데, 1,2번까지 빠른시간내에 풀고 3번이랑 4번 왔다갔다 간을 보다가 시간을 보내버렸다 특히 3번은 구간합으로 풀면 효율성에도 문제 진짜 풀 수 있었던 문제였다고 생각이 되는데 그래서 좀 아쉽다. 일단은 2솔인데 히든 케이스를 맞췄을지는 모르겠어서, 잘 모르겠다. 원한 결과만큼 얻진 못했지만, 최선을 다했음을 알기때문에 훌훌 털어버렸다 점심은 내가 좋아하는 신..

Apply 2022.09.26

[운영체제/OS] 데드락(DeadLock, 교착상태)의 개념, 발생 조건, 처리방법

데드락의 개념 데드락 이란 ? 두개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해 다음 처리를 하지 못하는 상태 '교착 상태'라고도 부르며, 시스템적으로 한정된 자원을 여러곳에서 사용할때 발생 '외나무 양끝에서 두사람이 서로 비켜주기만 기다리는'것과 같으며 아래의 예시를 참고해보자! 프로세스 1과 2가 리소스1과 2를 모두 얻어야 한다고 가정하자 프로세스1이 자원1을 얻은경우 프로세스2는 자원1을 얻을수없고, 프로세스2가 자원2를 가지고 있으므로 프로세스1은 자원2를 얻을 수 없다. 두 프로세스는 무한정 wait 상태에 빠지게되며, 이게바로 DeadLock 데드락의 발생 조건 발생 조건 설명 상호배제(Mutual Exclusion) = Mutex 한번에 하나의 프로세스만이 공유자원 사용가능한 상태 점..

Computer Science/OS 2022.08.29

[운영체제/OS] 캐시(Cache)와 지역성(Locality) & 캐싱라인(Caching Line)

Cache 캐시 메모리(cache Memory) 캐시 메모리란 ? 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두고 속도를 빠르게 하는 메모리 속도가 빠른 장치와 느린 장치간의 병목 현상을 줄여주며, 메인 메모리와 CPU사이에 위치한다 캐시가 효율적으로 동작하기 위해서는 CPU가 참조할 정보에 대한 예측이 잘 되어야함 즉, 캐시의 적중률(Hit-rate) 을 극대화 시켜야함 이때 나오는 개념이 캐시의 지역성(Locality) 캐시의 지역성(Locality)이란 데이터에 대한 접근이 시간적-공간적으로 가깝게 발생하는 것을 뜻함 이때 프로그램은 정보를 균일하게 참조하는 것이아니라, 어느 한 순간에 특정 부분을 집중 참조할 것이라는 전재 조건이 존재한다. 시간지역성 : 최근에 참조된 데이터가 곧 다시..

Computer Science/OS 2022.08.29

[운영체제/OS] Process vs Thread 그리고 멀티스레드(Multi Thread)

Process vs Thread Process를 알아보자! 프로세스의 의미 실행중인 프로그램을 의미한다. 다수의 프로그램이 병행 수행될수 있는 오늘날에는 시분할 시스템(타임쉐어링)의 작업단위로 사용됨 프로세스의 상태 변화 생성 -> 준비 : 스케줄러에 의해 프로세스가 호출됨. 준비 -> 살행 : 사전 정의된 스케줄링 알고리즘에 따라 프로세스가 CPU할당 받음. 해당과정을 디스패치(dispatch) 라고함 실행 -> 준비 : 더 높은 우선순위의 프로세스를 실행하거나, 자원할당시간 만료 후 준비상태로 다시 전환. 해당 과정을 타임아웃(Timeout) 이라 부름 실행 -> 대기 : 할당된 시간 이전 실행 중에 기타 입출력 요구, 페이지 교환, read, write 등으로 CPU를 다른 프로세서에 할당 양도한 ..

Computer Science/OS 2022.08.27

[SWM/10주차] 테스트코드 작성하고,,,,,주저리 주저리

최근근황 사실 이번주도 딱히 특별한 이슈사항은 없었다. 그저 통계기능 나머지를 마저 구현하고, 기존의 코드를 손좀 보고 테스트코드를 왕창(?) 작성했다. 머리가 나쁘면 엉덩이가 고생한다고 ^^.. 아직 모르는게 많아서 코드짜는데 한참걸렸다. 원래 예외처리까지 오늘다하려고 했는데, 8시간이나 태웠는데도 목표치의 반도 도달 못함 ​ 근데이거 막상 돌리면 코드는 잘 돌아가는데.. 저기 objectMapper랑 mockMvc 타입의 bean을 찾을 수 없다고 밑줄이 뜬다. 너무 짱나서 막 구글링해봤는데.. "사람은 항상 기계보다 위대하다" 길래 그냥 밑줄 무시하고 하는중이다 ^^ ​ ​ ​ 아 그리고 보면.. 알다시피.. 테스트 코드를 개판으로 작성한 느낌이 낭낭해서 어떤 멘토님의 특강도 참여해 보았다^^.. ..

SW maestro 2022.08.14