분류 전체보기

모각코

[모각코] 2024 동계 모각코 2회차 내용

공부한 내용 [Java] JUnit5 사용법 알아보기 JUnit이란? 🔲 Java 개발자의 93%가 사용하는 단위 테스트 프레임워크 🔲 스프링 부트 2.2버전 이상부터 기본 제공한다. JUnit5는? 🔲 Platform : 테스트를 실행하게 해주는 런처를 제공한다. TestEngine API devrepo.tistory.com 소감 테스트에 관련된 연습을 많이 할 수 있어 좋았다.

🐣 Spring/Spring 기본

[Spring] Dispatcher-Servlet의 동작 과정을 알아보자.

Dispatcher - Servlet이란? Dispatcher Servlet에 앞서, _Servlet_이란 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 뜻한다. 자바의 Servlet은 웹 서버의 성능을 향상시키기 위해서 사용되는데, 간단하게 생각하자면 클라이언트의 요청을 처리하고 결과를 반환하는 웹 프로그래밍 기술이다. _Dispatcher-Servlet_또한 _Servlet_의 일종으로 그 역할을 살펴보자면 Dispatcher의 의미를 찾아보면 된다. 이는 "급파자"라는 뜻으로 가장 먼저 요청을 받아 처리할 함수인 컨트롤러를 정해주는 역할을 가진다. 즉, _Dispatcher-Servlet_은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아서 적합한 컨트롤러..

🍀 Knowledge/객체지향설계

[객체지향설계] 좋은 객체에 대한 설계

클래스와 객체 흔히들 붕어빵과 붕어빵 틀, 설계도와 건물과 같은 식으로 클래스와 객체를 설명해왔다. 나 역시 비슷한 수준으로 클래스와 와 객체에 대해 이해하고 있을 뿐이었다. 다만, 그러한 수준으로 클래스와 객체의 관계와 그 자체를 이해하는 것은 정확하지 못하다. 클래스의 책임은 객체를 생성하고, 적절한 때에 파괴하는 것이다. 또한 클래스의 자식들이 어떤 모습이며 어떤 행동을 해야 하는 지 적어놓은 "계약"에 대해서 알고 있다. 객체는 계약에 대한 자격을 갖추기 위해 인터페이스를 구혐함으로써 이를 준수하게 된다. 물론 인터페이스는 추상화를 통해 다형성이 보장된 다는 점에서도 의미가 있긴하다. 객체는 생명체이다. 올바른 객체는 그 자체로 생명체이다. 현실 세계의 피조물의 대리자 그 자체이며, 생명주기와 행..

🍀 Knowledge/객체지향설계

[객체지향설계] 객체지향 생활체조 원칙 지키려고 노력하기

객체지향 생활 체조 9원칙 '소트윅스 앤솔러지'라는 책에서는 객체지향 프로그래밍을 보다 잘 하기 위해서 9가지 원칙을 제시한다. 지금까지 공부하고, 직접 사용해본 경험을 바탕으로 각 규칙을 왜 써야 하고 무엇이 좋은 지 작성해보고자 한다. 규칙 1. 한 메서드에 한 단계의 들여쓰기(indent)만 한다. 지금까지 코딩테스트를 포함하여 코드를 짤 때, 들여쓰기 따윈 신경쓰지 않았다. 남이 볼 코드라고는 전혀 생각하지 않아서였다. 하지만, 협업은 혼자서 하는 것이 아니다. 누가 보아도 알아볼 수 있는 코드여야 유지보수 측면에서 이점이 크다. 깊은 들여쓰기는 가독성을 좋지 못하게 만들기 때문에 가급적이면 줄이는 것이 좋다. 들여쓰기를 줄이는 것은 가독성 뿐만이 아니라, 재사용성과 디버깅에 있어서도 유리하다. ..

💫 Language/Java

[Java] 객체 지향 설계 5원칙(SOLID)이란?

SOLID 원칙이란? 객체지향 프로그래밍에 있어 반드시 알아야 하는 SOLID 원칙은 자기 자신 클래스 내부의 응집도는 높이고, 타 클래스와의 결합도는 낮추는 것에 초점을 둔다. 이는 클래스에게 독립된 역할을 부여하기 위함이며 재사용성과 유지보수성이 높은 소프트웨어를 만들 수 있기 때문이다. 🔲 SRP(Single Responsibility Principle) : 단일 책임 원칙 - 클래스가 변경되는 이유가 단 한 가지여야 한다 🔲 OCP(Open Close Principle) : 개방/폐쇄 원칙 - 확장에는 열려있고, 수정에 대해서는 닫혀있어야 한다. 🔲 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 - 하위 타입을 상위 타입으로 대체할 수 있어야 한다 🔲 ISP..

💫 Language/Java

[Java] 일급 컬렉션과 사용해야 하는 이유에 대하여

일급 컬렉션이란(First Class Collection) 🔲 일급 컬렉션 : Collection을 Wrapping하면서, 그 외 다른 멤버 변수는 없는 상태를 말한다. public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = ranks; } } 일급 컬렉션의 장점 🔶 비즈니스에 종속적인 자료구조 일반적으로 MVC 패턴에서 Model은 데이터베이스와의 상호작용이나 비즈니스 로직을 처리한다. 이때 애플리케이션이 고도화됨에 따라 Model에서 Service 계층을 추가하여 비즈니스 로직을 관리하는데 여기서 문제가 발생할 수 있다. 애플리케이션의 비즈니스 로직을 담당하는 코드에서 특수한 자료구조를 가져야 ..

💫 Language/Java

[Java] JUnit5 사용법 알아보기

JUnit이란? 🔲 Java 개발자의 93%가 사용하는 단위 테스트 프레임워크 🔲 스프링 부트 2.2버전 이상부터 기본 제공한다. JUnit5는? 🔲 Platform : 테스트를 실행하게 해주는 런처를 제공한다. TestEngine API를 제공. 🔲 Jupiter : JUnit5를 지원하는 TestEngine API 구현체 🔲 Vintage : JUnit4와 3를 지원하는 TestEngine 구현체 JUnit5를 시작하는 방법 🔲 스프링부트 2.2버전 이상부터는 기본 탑재된다. 🔲 그 외에는 maven, 혹은 gradle 방식으로 추가할 수 있다. gradle test { useJUnitPlatform() } dependencies { testImplementation 'org.junit.jupiter..

💫 Language/Java

[Java] 멀티스레드와 동기화에 대해서

공유자원과 임계영역 🔲 공유 자원 : 여러 스레드가 동시에 접근할 수 있는 자원 🔲 임계 영역 : 공유자원들 중 여러 스레드가 동시에 접근했을 때, 문제가 생길만한 부분 🔶경쟁 상태? 둘 이상의 스레드가 공유자원을 병행적으로 읽거나 쓸때, 타이밍이나 접근 순서에 따라 실행 순서가 달라지는 상황(race 현상) 🔶Read - Modify - Write @RestController @RequestMapping("/race-condition") public class RaceConditionCotroller { public static Integer studentCount = 0; @PostMapping("/1/increase") public ResponseEntity increaseCount() { stud..

🏤 코딩 테스트/c++ 코딩테스트 준비

[C++ 코테] 코딩 테스트 연습 & 알게된점(1)

백준 2309 🔲 내 풀이 #include using namespace std; int n = 9, k = 7; int a[9]; vector result(7); void combi(int start, vector b) { if (b.size() == k) { if (accumulate(b.begin(), b.end(), 0) == 100) { copy(b.begin(), b.end(), result.begin()); } return; } for (int i = start + 1; i > a[i]; } vect..

💫 Language/Java

[Java] 동기/비동기 & 블럭킹/논블럭킹이란?

동기/비동기란? 🔶동기란(Synchronize)? 🔲 요청 작업에 대한 완료 여부를 따져 순서대로 처리하는 것을 말한다. 🔶비동기란(Asynchronize)? 🔲 요청 작업에 대해 완료 여부를 따지지 않아, 자신의 작업을 그대로 실행한다. 동기와 비동기의 큰 차이점 중 하나는 요청한 작업에 대해서 작업 순서가 지켜지냐, 지켜지지 않냐이다. 동기는 작업 순서가 지켜지기 때문에 A, B, C라는 Task에 대해 그 순서를 지키며 실행되지만, 비동기는 그렇지 않다. 무작위로 실행될 수 있는 것이다. 블럭킹/논블럭킹이란? 🔶 블럭킹이란? 🔲 다른 요청의 작업을 처리하기 위해 현재 작업을 Block(차단)하는 것 🔶 논블럭킹이란? 🔲 다른 요청의 작업을 처리하기 위해 현재 작업을 Block(차단)하지 않는 것 🤔..

TIlearn
'분류 전체보기' 카테고리의 글 목록 (6 Page)