분류 전체보기
-
[SSAFY] SSAFY 10기 수료 후기(1학기/2학기/프로젝트/삼성연계/기업연계/수상/수료)SSAFY 2024. 9. 2. 17:12
시작이 제일 무서워 미룬이 완벽하지 못할까 봐 지금이내일의 나에게 일단 미루지그러다가 돼버렸지 미룬이( 'ᵕ' و(و ♪( 'o' و(و ♪ 싸피가 끝난지 벌써 2달이라는 시간이 지났는데요....(시간 참 빠르다)싸피 기간동안 정신없이 주어진 것들을 해내느라 정리할 힘도 시간도 없었네요미루고 미루다 많은 것들이 정리된 지금! 더 잊어버리기 전에 적어보려고 합니당:) 알고리즘에 치여 살던 1학기1학기는 자바 전공반에서 다양한 이론을 배우고 주기적으로 시험도 봤습니다. Java 언어 기초, HTML/CSS/JS 웹 개발 기초, Vue와 Spring 프레임워크에 대한 개발 공부를 중심으로 했는데요. 중간중간 알고리즘 교육도 쉬지 않고 받았답니다. (바쁘다 바뻐) 전공생이었던 저는 Java 언어나 H..
-
[소프트웨어공학] TDD와 BDDComputer Science/Software Engineering 2024. 1. 17. 10:00
TDD TDD(Test-Driven Development, 테스트 주도 개발)는 소프트웨어 개발 방법론 중 하나로, 선 개발 후 테스트 방식이 아니라 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다. 즉 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식이다. 반복 테스트를 위한 소프트웨어 방법론으로 작은 단위의 테스트를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. TDD를 이용한 개발 방법 1. 테스트 케이스 작성 만들고 싶은 기능을 점검할 테스트 코드를 작성한다. 이때 아직 기능 코드를 구현하지 않았으므로 테스트 결과는 실패로 반환된다. 실패하는 테스트를 가장 빠르게 구현하는 방법은 아무 값이나 반환하도록 하는 것이다. 2. 테스트 케이스를 통과하는 코드 작..
-
[Java] Virtual Thread에 대해서Programming Language/Java 2024. 1. 10. 12:22
2023년 9월 19일에 릴리즈된 Java 21 는 Java 8 이후 세번째 LTS 버전이다(11, 17, 21). 이 버전에서는 많은 사람들이 기다리고 있는 가상 스레드 라는 기능이 추가되었다. Virtual Thread가상스레드란 전통적인 Java 스레드에 더하여 새롭게 추가되는 경량 스레드이다. 경량 스레드 모델이란 기존 언어의 스레드 모델보다 더 작은 단위로 실행 단위를 나눠 컨텍스트 스위칭 비용과 Blocking 타임을 낮추는 개념이다. Project Loom의 결과물로 추가된 기능으로 OS 스레드를 그대로 사용하지 않고 JVM 자체적으로 내부 스케줄링을 통해서 사용할 수 있는 경량의 스레드를 제공한다. Project Loom이란? 경량 스레드를 Java에 추가하기 위해서 가상 스레드를 비롯한..
-
[운영체제(OS)] 프로세스와 스레드, Context Switch란?Computer Science/Operating System 2024. 1. 10. 09:30
프로세스 (Process) 프로세스 : 실행 중인 프로그램 프로세스 Context 프로세스의 context는 크게 3가지로 분류할 수 있다. 하드웨어 context : CPU 수행상태를 나타내는 것으로 PC(Program Counter)와 각종 레지스터에 저장하고 있는 값들 프로세스의 주소 공간 : 코드(code), 데이터(data), 스택(stack)으로 구성된 프로세스만의 독자적인 주소 공간 커널 상의 context : 프로세스 관리를 위한 자료구조인 PCB(Process Control Block)와 Kernel stack(커널 내의 주소) 커널? 리눅스 구성요소 중 핵심 구성 요소. 하드웨어와 프로세스 운용을 위한 인터페이스. 프로세스의 주소 공간 (Big Endian) OS Code 실행 명령을 ..
-
[MongoDB] MongoDB란?Computer Science/Database 2024. 1. 3. 01:11
기존의 사용하던 RDB는 당시 Disk Storage가 매우 고가의 제품이라 데이터 중복을 줄이는데 집중했다. 방대한 양의 데이터를 처리하기 위해서 성능 향상이 필요했지만 수직적 확장의 경우 비용이 많이 소모되고, 수평적 확장의 경우 관계 테이블을 모두 동일한 서버에 보관해야했기에 확장이 어려웠다. 이후 Disk Storage가 더이상 큰 이슈가 아니게 되면서 데이터베이스의 확장성과 성능을 위해 NoSQL이 등장했다. NoSQL은 RDB가 하지 못했던 것들을 해결하며 다양한 장점을 제공한다. 데이터 가시성이 좋고 Join없이 조회할 수 있어 읽기 성능, 응답 속도가 빠르다. 스키마가 유연해서 어플리케이션의 요구사항에 맞게 데이터를 수용할 수 있다. Scale-Out이 간편하다. 역정규화에 따라 데이터 중..
-
[IPC] IPC(Inter-Process Communication)란?Computer Science 2023. 12. 28. 16:31
IPC IPC는 Inter-Process Communication의 약자로 프로세스 간 통신을 말한다. 프로세스는 독립된 실행 객체로서 서로 독립되어 있기 때문에 다른 프로세스의 영향을 받지 않는다. 대신 서로 간 통신을 위해 커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공한다. 커널 운영체제 자체도 소프트웨어이기 때문에 메모리에 올려야 사용할 수 있다. 하지만 메모리 공간의 제약으로 운영체제 중 필요한 부분 만을 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려 사용하게 된다. 이때 메모리에 상주하는 운영체제의 부분을 커널이라고 한다. 보통은 운영체제라고 하면 커널을 말한다. 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분이다. 프로세스 VS 스레드 프로세스는 컴퓨터에서..
-
[NGINX] Nginx에 대해서Backend 2023. 12. 28. 14:46
Nginx는 높은 성능과 안정성, 그리고 현재 가장 많이 사용되고 있는 웹 서버이다. Apache같은 웹 서버와 비교하면 더 빠르고 가볍, 대규모 어플리케이션에 적합하다는 장점이 있다. 웹서버에 대해 알아보고, Apache와 비교하며 Nginx에 대해 알아보자! 웹 서버란? 웹 서비스의 구성요소로는 클라이언트, 웹서버, WAS, DB를 들 수 있다. 클라이언트 서비스를 이용하기 위해 네트워크를 통해 요청을 보내는 주체 웹 개발 영역에서 클라이언트는 보통 웹 브라우저 웹 서버 클라이언트 요청에 따라 정적 파일(HTML, CSS, JS, 이미지 등)을 응답하여 제공하는 소프트웨어 HTTP 프로토콜을 사용하여 클라이언트와 통신 Nginx, Apache, Node.js 등 WAS(Web Application S..
-
[Java] Record Class란?Programming Language/Java 2023. 12. 20. 03:21
Record란 데이터 클래스로 Java 14에 추가되어 Java 16에 정식으로 포함되었다. Record 클래스를 사용하기 이전에는 변경 불가능한 단순 데이터 클래스를 표현하고자 할 때 불편함이 있었다. 불변 데이터 객체 User가 있다고 해보자. public class User{ private final String name; private final String gender; public Person(String name, String gender) { this.name = name; this.gender= gender; } @Override public int hashCode() { return Objects.hash(name, gender); } @Override public boolean equ..