전체 글
-
Java에서 Thread를 사용하는 방법Programming/Java 2021. 10. 4. 01:19
애플리케이션의 구현이 복잡해지면서 CS 기초 특히 트랜잭션, 쓰레드를 제대로 이해해야 겠다고 느꼈다. 그래서 쓰레드의 정의, 자바에서의 쓰레드 사용법, Thread-Safe 구현 방식, Thread-Safe Collections 같이 자바에서의 쓰레드 활용에 대해 리스트로 정리하고자 한다. Thread-safe에 대한 내용이 길어질 것 같아서 이 글에서는 Java에서의 Thread 선언까지만 다룰것이다. 프로세스와 쓰레드 프로세스는 실행 중인 프로그램의 단위를 말한다. 현재 OS의 특성 상 동영상을 보면서 동시에 문서 작업을 하는 것과 같은 다중 동시 작업을 지원해야 할 때 여러 프로세스가 메모리에 동시에 적재되고 번갈아가며 실행된다. 프로세스 또한 여러 작업 단위를 동시에 실행해야 할 수 있다. 프로세..
-
Spring AOP(Aspect-Oriented Programming)의 이해Spring 2021. 10. 3. 19:11
Aspect-Oriented Programming Aspect-oriented Programming(AOP) complements Object-oriented Programming(OOP) by providing another way of thinking about program structure 관점 지향 프로그래밍은 프로그램 구조에 대한 다른 사고방식을 제공해서 객체 지향 프로그래밍을 보완한다 👉 Aspect Oriented Programming with Spring Spring Framework Docs의 AOP를 설명하는 첫 문단이다 절차 지향 프로그래밍과 객체 지향 프로그래밍의 관계처럼 OOP와 AOP를 분리하지 말라는 뜻이기도 하다 OOP의 모듈화 단위가 Class라면 AOP의 모듈화 단위는 ..
-
@(Annotation)을 이용한 Spring Container ConfigurationSpring 2021. 10. 2. 20:39
이 글은 아래의 공식 문서를 참조해서 작성했습니다 https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-java Core Technologies In the preceding scenario, using @Autowired works well and provides the desired modularity, but determining exactly where the autowired bean definitions are declared is still somewhat ambiguous. For example, as a developer looking at ServiceConfig, how do docs.sp..
-
Filter와 Interceptor의 차이Spring 2021. 9. 30. 00:01
Filter 필터란 리소스에 대한 요청(서블릿/정적 콘텐츠)이나 리소스의 응답 또는 둘 다에 대해 필터링 작업을 수행하는 개체를 말한다. // javax.servlet Interface Filter { void destroy(); void doFilter(ServletRequest request, ServletResponse response, FilterChain chain); void init(FilterConfig filterConfig); } doFilter 메서드에서 필터링 작업을 수행한다. 모든 필터는 초기화 매개변수를 얻을 수 있는 FilterConfig 객체에 대한 액세스 권한을 가지고 있으며 필터링 작업에 필요한 리소스를 로드하는 데 사용할 수 있는 ServletContext에 대한 참조를..
-
[Programmers]괄호 회전하기(Python)/StackProblem Solving/Programmers 2021. 9. 26. 22:43
https://programmers.co.kr/learn/courses/30/lessons/76502# 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr def parenthesesString(p): s=[] v={'[':0, '{':1, '(':2, ']':0, '}':1, ')':2} for k in p: if k in ['[', '{', '(']: s.append(v[k]) else: if len(s)!=0 and s[-1]==v[k]: s.pop() else: return 0 if len(s)!=0: return 0 return 1 def solution(s): answer = 0 for i in range(len(s)): answer+=parenthesesString(s[i:]+..
-
Color를 이용해서 Self-Balancing을 구현하는 Red-Black TreeData Structure 2021. 9. 24. 01:45
자료구조와 알고리즘을 공부한 사람이라면 레드블랙트리에 대해 한번쯤은 들어봤을 것 이다 포인터가 중간보스라면 레드블랙트리가 최종보스라고 생각하는데 .. 3부작 정도로 나눠서 레드블랙트리를 정리하려고 한다 레드블랙트리가 무엇인지에 대해 알기 전에, 레드블랙트리가 어디에서 사용되는지에 대해 두 가지를 소개하자면 Java Collection API의 Map Interface 구현체인 HashMap의 Seperate Chaining 구현에서 사용한다. 👉 Key값의 Collision이 발생할 경우 같은 Hash값을 가지는 원소들을 Collection으로 관리하는데, 이 때 원소의 개수가 많아지면 Red-Black 트리를 이용해서 관리하여 연산 시간을 O(log)으로 관리한다 Linux의 기본 스케줄러인 CFS 스..
-
Builder Pattern (생성 패턴)의 정의와 예제Computer Science 2021. 9. 21. 01:33
빌더 패턴은 객체의 생성과 관련된 디자인 패턴이다 빌더 패턴과 비교 가능한 예시는 점층적 생성자 패턴(Telescoping Constructor Pattern), 자바빈 패턴(JavaBeans Pattern)이 있다. 점층적 생성자 패턴 - Telescoping Constructor Pattern Pizza hawaiian = new Pizza("cross"); Pizza hawaiian = new Pizza("cross", "mild"); Pizza hawaiian = new Pizza("cross", "mild", "ham+pineapple"); // Dough, Sauce, Topping 필수 인자를 받는 생성자와 선택적 인자를 받는 생성자들을 객체가 생성될 수 있는 케이스 숫자대로 만들어 객체를 ..
-
GET Method는 URL을 256자 이하로 제한하지 않는다Web 2021. 9. 18. 17:35
HTTP Method를 정의하고, GET과 POST의 차이를 비교할 때 주로 등장하는 말인 'GET Method의 최대 길이(URI+Query String)는 최대 256자이다'라는 말은 사실이 아니다 하지만 많은 자료에서는 위와 같이 표기되어있고, 나도 자연스럽게 "GET Method 최대 길이는 256자"라고 생각하고 있던 것 같다 이전에 정말 길이 제한이 256자일까?라는 궁금증이 생겨서 찾아본 결과 웹 플랫폼에서는 공식적으로 URI길이에 제한을 두지 않고, Chrome 브라우저는 2MB의 길이로 제한(주소창 표시는 32kB)을 둔다고 한다. URI 길이 제한은 브라우저의 정책에 따라 다르다. 위의 세 사진만 봐도 Chrome, Internet Explorer, Firefox의 URL 제한이 다른 ..