본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

전체 글580

[CS] 운영체제 요약 1. 운영체제의 개념 1) 운영체제란? - 사용자가 컴퓨터를 쉽게 다룰 수 있는 환경을 제공해주고 시스템 자원들을 효율적으로 관리해주는 소프트웨어 - 유사한 개념으로 펌웨어가 있다. 펌웨어는 특정 하드웨어 장치에 포함되어 하드웨어의 제어와 구동을 담당하는 일종의 운영체제로, 소프트웨어를 추가로 설치할 수 없다는 특징이 있다. 2) 운영체제의 역할 편리한 User Interface(GUI, CUI) 제공 효율적인 HW, SW 자원 관리 프로세스 관리(스케쥴링)와 쓰레드 관리 시스템 보호 ※ GUI(Grapic User Interface) : 그래픽을 통해 작업 ※ CLI(Command Line Interface) : 명령어를 통해 작업 3) 운영체제의 구조 깊은 순서대로 [하드웨어 -> 드라이버 -> Ke.. 2022. 11. 10.
[CS] 네트워크 요약 1. 네트워크의 개념 - 네트워크는 통신 분야의 개념으로 노드(네트워크 장치)와 링크(선로)로 구성되는 전송 매체다. 1) 처리량과 지연 시간 - 처리량 : 단위 시간당 전달되는 데이터양으로 bps 단위를 사용함 - 대역폭 : 특정 기능을 수행할 수 있는 주파수의 범위 - 지연시간 : 요청이 처리되는 왕복 시간 2) 토폴로지 - 네트워크의 노드와 링크가 배치되어 있는 방식 (1) 트리 - 계층형 토폴로지라고도 함 - 노드의 추가와 삭제가 쉬움 (2) 버스 - 중앙 회선 하나에 여러 노드가 연결되어 있는 구조 - 주로 LAN(근거리 통신망)에 사용됨 - 노드의 추가와 삭제가 쉬우며, 설치 비용이 적고 신뢰성이 우수함 - 스푸핑의 위험이 있음. 스푸핑은 악의적인 노드에 패킷이 오도록 하는 공격을 뜻함 (3).. 2022. 11. 6.
[팀 프로젝트] SQL 교육 사이트 - 채점 로직 상세 설명 동작 과정 1. Unit 1 테스트 페이지 접속 i) "http://localhost:8080/test/unit/1"에 접속한다. @RequestMapping("/unit/{test_num}") public String unit(@PathVariable("test_num") String test_num, Model model) { model.addAttribute("test_num", test_num); return "test/unit/test"+test_num; } - TestController의 unit() 컨트롤러 메소드에 매핑되어 resources/templates/test/unit/test1.mustache 뷰로 이동한다. ii) 3문제를 다 풀고 답안 제출을 누른다. 2-1. submit 이벤.. 2022. 11. 3.
[완전탐색] 카드 짝 맞추기 - 2021 KAKAO BLIND RECRUITMENT 해결 방법 필자는 DFS와 BFS를 기반으로 완전탐색을 이용해서 해결했다. BFS를 통해 현재 커서로부터 각 칸까지 이동할 때 필요한 최소 키 조작 횟수를 구했다. 예를 들어, 입출력 예 #1에서 최초로 실행되는 BFS 결과는 다음과 같다. 1칸 이동, 일괄 이동의 경우를 모두 반영했다. 그리고 DFS에서는 뒤집혀 있는 카드의 상태에 따라 동작 방식이 다르다. 소스 코드에서는 뒤집혀 있는 카드의 상태를 state 변수에 저장했다. state가 0인 경우에는 어떠한 카드도 뒤집혀 있지 않은 상태고, state가 0이 아닌 경우에는 뒤집혀 있는 카드의 번호가 저장되어 있다. DFS는 다음과 같이 동작한다. state==0 : 현재 뒤집힌 카드가 없다면 남아있는 모든 카드를 한 번씩은 뒤집어본다. state!.. 2022. 11. 2.
[CS] 디자인 패턴과 프로그래밍 체계 요약 1. 디자인 패턴 - 디자인 패턴 : 객체 간의 상호 관계에 대한 규약 1) 싱글톤 패턴 - 하나의 클래스에 하나의 인스턴스만 가지는 패턴 - 장점 : 인스턴스 생성 비용이 줄어듦 - 단점 : 의존성은 높아지고 독립적인 테스트가 어려워짐 ※ 의존 : 다른 오브젝트의 변경 사항에 대해 다른 오브젝트도 같이 변하는 경우 ※ 의존성 주입(DI) : 추상화 계층을 통해 모듈을 쉽게 교체할 수 있도록 만드는 것 - DB 연결 모듈에 많이 사용됨 2) 팩토리 패턴 - 객체를 생성하는 부분을 분리하여 추상화하는 패턴 - 하위 클래스에서 객체 생성 방법을 결정함 3) 전략 패턴 - 전략이라고 부르는 알고리즘을 추상화한 패턴 4) 옵저버 패턴 - 특정 객체에 상태 변화가 생길 때마다 옵저버들에게 변화를 알려주는 패턴 -.. 2022. 11. 1.
[Spring] @Enable 어노테이션을 이용한 설정 모듈화 @Enable 설정 어노테이션을 이용하면 xml 전용 태그를 만드는 것보다 훨씬 간단하게 설정 정보를 모듈화할 수 있다. 이번 포스팅에서는 bean 설정 정보를 재사용하는 방법과 이를 응용해서 설정 정보를 모듈화하는 방법을 알아볼 것이다. 1. @Import와 @Configuration 클래스 상속 1) @Import - @Import를 이용해서 다른 @Configuration 클래스를 재사용하는 방법이 있다. 예를 들어, DBConfig라는 @Configuration 설정 클래스를 재사용하려면 아래 코드처럼 작성하면 된다. @Configuration @Import(DBConfig.class) public class AppConfig {...} - 매번 동일한 내용의 설정 정보만 사용할 수 있다는 한계가.. 2022. 10. 28.
[Spring] 캐시 추상화 1. 캐시와 캐시 추상화의 기본 개념 1) 캐시 - 캐시는 동일한 요청이 들어왔을 때 결과를 새롭게 만드는 대신에 저장되어 있던 기존 결과를 돌려주는 기술이다. - 분명히 성능에 도움이 되는 기술이지만, 매번 다른 결과를 돌려주는 작업에 캐시를 적용하면 오히려 성능이 떨어지기 때문에 반복적으로 동일한 결과를 돌려주는 작업에 캐시를 적용해야 한다. 캐시를 확인하는 작업도 어느 정도 비용이 있다. - 캐시의 내용이 유효하지 않게 되면 캐시에서 기존 내용을 바로 지워줘야 한다. 2) 캐시 추상화 - Spring 3.1에서는 AOP를 이용해 bean의 메소드에 캐시를 적용할 수 있으며, 캐시 서비스 구현 기술에 종속되지 않도록 추상화 서비스를 제공해주기 때문에 애플리케이션 코드에 영향을 주지 않는다. - 캐시는.. 2022. 10. 27.
[Spring] Spring의 Task와 Scheduling 1. TaskExecutor 1) TaskExecutor 소개 - 태스크란, 독립적인 쓰레드 안에서 동작하도록 만들어진 오브젝트를 의미한다. TaskExecutor은 이런 태스크를 실행하는 다양한 방법을 추상화한 인터페이스다. public interface TaskExecutor extends Executor { void execute(Runnable task); } - TaskExecutor은 JDK의 java.lang.concurrent.Executor를 구현하지 않은 기술의 태스크 실행기에 대한 어댑터를 제공해주고, Spring에 최적화된 방식으로 태스크 실행기를 확장하고 활용할 수 있게 해준다. - 대부분의 TaskExecutor가 추상화한 기술은 비동기적으로 독립된 쓰레드에서 실행되며, 주로 쓰.. 2022. 10. 25.
[Spring] 리모팅과 EJB 1. 리모팅이란? - 원격 시스템과 Spring 애플리케이션이 연동해서 동작하게 해주는 기술 - Spring 애플리케이션이 클라이언트 시스템에게 원격 서비스를 제공해주거나 다른 원격 시스템의 서비스를 이용할 수 있다. 2. 익스포터와 프록시 - 원격 서비스를 제공할 때나 사용할 때나 모두 인터페이스를 이용해야 한다. 클라이언트에게 제공되는 기능을 담은 서비스 bean도 서비스 내용이 정의된 인터페이스를 구현하고 있어야 하고, 원격 서비스를 사용할 때도 원격 서비스의 내용이 담긴 인터페이스를 이용해야 한다. - Spring이 제공하는 모든 리모팅 지원 기능은 익스포터와 프록시 방식을 사용한다. 1) 익스포터 - 클라이언트와 서비스 bean의 사이에서 클라이언트로부터 원격 요청을 받아서 서비스 bean을 호.. 2022. 10. 25.