분류 전체보기
-
딕셔너리 모듈 (defaultdict, Counter)프로그래밍 언어/Python 2021. 7. 15. 12:36
오늘은 파이썬 알고리즘 인터뷰 책으로 코딩테스트 준비를 하던 중에 알고있지 못했던 좋은 정보를 정리하려고 한다. 1) defaultdict defaultdict의 형태는 우리가 평소에 쓰던 딕셔너리와 같다. 차이점은 딕셔너리는 딕셔너리 안에 존재하지 않은 키에 대한 값(value)를 출력한다거나 접근할 때 KeyError 메시지가 발생한다. 하지만, defaultdict객체를 사용하게 되면 딕셔너리 내에 존재하지 않는 키를 조회하면 디폴트 값을 기준으로 해당 키에 대한 딕셔너리 아이템을 생성해준다. (defaultdict을 사용하기 위해서는 collections를 import해줘야한다.) 위와 같이 C라는 key에 value를 주지 않았어도 KeyError가 나오지 않고 default값인 0이 출력되는 ..
-
[스터디 12주차] 멀티쓰레드 프로그래밍프로그래밍 언어/JAVA 2021. 7. 14. 13:48
더보기 목표: 자바의 멀티쓰레드 프로그래밍에 대해 학습 0. 들어가기 전 오늘의 큰 주제인 멀티쓰레드는 무엇일까? 멀티쓰레드를 알아보기 전에 멀티태스킹(multitasking)이라는 개념을 알아두는 것이 좋다. 멀티태스킹은 두 가지 이상의 작업을 동시에 처리하는 것으로 예를 들어 우리가 웹 브라우저를 통해 서칭을 하면서 뮤직 플레이어를 노래를 들을 수도 있고 PC카카오톡에서 알림도 받을 수 있다. 위의 예시는 정확히 말하면 멀티태스킹 중에 멀티프로세스라는 표현이 더 맞을 수 있다. 그러면 다른 예시를 알아보자. 요즘은 잘 보기 힘들지만 브라우저를 통해 블로그에 들어가면 글을 보는 것과 함께 BGM, 음악이 함께 재생되는 것이 있었다. 혹은 카카오톡같은 메신저 애플리케이션은 메시지를 주고받을 뿐만 아니라 ..
-
스레싱(thrashing)이란 무엇인가CS지식/운영체제 2021. 7. 13. 23:17
우리는 컴퓨터에서 실제 물리 메모리 이외에 프로세스만의 가상 메모리를 사용하며 주소 변환을 통해 물리 메모리에 접근한다고 배웠다. 또한, 페이징 기법이나 세그멘테이션 기법을 통해 나뉘어진 조각들은 물리 메모리에 위치할 수도 있고 스왑영역에 위치할 수도 있다는 것을 배웠다. 하나의 프로세스가 작업 중이라고 해서 프로세스의 전체 데이터가 물리 메모리의 전체 영역에 할당되는 것은 비효율적이기때문에 그때 그때 필요한 부분만 물리 메모리에 올리고 쓸 일이 없는 부분은 스왑영역에 올려 메모리 관리를 효율적으로 진행한다. 현재 CPU를 점유하고 있는 프로세스가 필요로 하는 데이터가 물리 메모리에 없다면 swap in과 swap out을 통해 필요한 데이터를 스왑영역에서 물리 메모리에 올리고 물리 메모리에 있던 어떠한..
-
내용 협상(content negotiation)이란 무엇인가CS지식/네트워크 2021. 7. 12. 22:04
내용 협상(content negotiation)은 왜 도입된 것일까? 상황을 가정하여 생각해보자. www.naver.com이라는 네이버 사이트는 한국인이 접속을 하기도 하고 외국인이 접속을 한다고 생각해보자. 사용언어가 다른 두 클라이언트는 그냥 www.naver.com URL로 접속을 할 것이다. 이 때, 서버는 클라이언트에게 그냥 한국어로 된 웹 페이지로 응답하면 될까? 그렇다면 외국인은 네이버 사이트를 이용하기 힘들 것이다. 그러면 웹 서버는 한국어 버전과 다른 언어 버전으로 되어 있는 네이버 웹 페이지 리소스를 가지고 있을텐데 어떻게 판단하여 클라리언트에게 적합한 버전을 보낼 수 있을까? 여기서 필요한 개념이 내용 협상(content negotiation)이라는 것이다. 내용 협상을 통해 하나의 ..
-
[이클립스] javadoc 만들기프로그래밍 언어/JAVA 2021. 7. 11. 20:57
오늘은 애노테이션을 배우던 중, @Documented의 사용여부가 javadoc과 관련되어 있어 직접 javadoc을 만들어 보았다. javadoc을 만드는 법을 정리하여 모르는 사람들을 이 글을 통해 알고가면 좋을 것 같다. ① 상단 메뉴에서 File- Export로 들어간다. ② 다음과 같은 창이 뜨면 java폴더를 클릭하면 javadoc이 있는 것을 확인 할 수 있다. javadoc을 클릭하고 next버튼을 누른다. ③ 그러면 아래와 같은 창이 나오고 문서를 만들 폴더와 javadoc.exe를 선택해준 뒤 Next버튼을 누른다. ④ 아래의 창에서는 설정할 것이 없어 건드리지 말고 Next버튼을 눌러 다음으로 이동한다. ⑤ Next버튼을 눌러 나온 창에서는 한글 깨짐 방지를 위해 VM options에..
-
[스터디 11주차] Enum프로그래밍 언어/JAVA 2021. 7. 10. 22:03
더보기 목표: 자바의 열거형에 대해 학습 1. enum 정의하는 방법 먼저, enum이 무엇인지부터 알아보자. enum enumerated type의 줄임말로 서로 관련된 상수를 편리하게 선언하기 위한 것으로 상수를 여러 개 정의할 때 사용한다. 기존에 상수를 사용하면서 발생했던 문제를 개선하고자 JDK 1.5부터 추가된 기능으로 타입까지 비교가 가능하다. 그러면 이러한 enum은 왜 만들어졌을까? enum을 사용하지 않고 상수를 관리하는 코드를 봐보자. 아래의 코드는 enum 없이 기존의 public static final을 이용하여 상수를 선언하는 것이다. public class NoEnum { public static final int KangBaekHo = 10; public static fina..
-
What did i watch?기타/일상 2021. 7. 9. 13:43
데이터베이스 데이터베이스의 원리와 응용(한양대학교, 백현미) http://www.kocw.net/home/search/kemView.do?kemId=1163794 데이터베이스의 원리와 응용 본 강의에서는 데이터베이스 입문자들에게 꼭 필요한 데이터베이스 기초 이론, 데이터 모델과 연산, SQL, 데이터베이스 설계에 대해 공부하고자 한다. www.kocw.net 운영체제 운영체제 (이화여자대학교,반효경) http://www.kocw.net/home/search/kemView.do?kemId=1046323 운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw..
-
flex box layout (display : flex ;)웹 프로그래밍/FE(Front-End) 2021. 7. 8. 18:00
우리는 보여지는 요소의 위치를 내가 원하는대로 조정하여 반응형 웹 디자인을 구현하기 위해 position속성에 값을 주어 left, right, bottom, right를 주거나 이렇게 조정하여도 원하는 결과를 얻지 못하면 float 속성을 이용한다. 하지만, float속성이 만들어진 이유는 반응형 웹 디자인을 위해서가 아니라 마치 요소를 떠 있게 하는 것처럼 하여 그 주변을 다른 요소로 감싸는 포지셔닝(positing)을 위해서이다. 즉, 우리가 원하는 레이아웃(layout)으로 요소를 배치하기 위해 float속성을 마주잡이로 사용하는 것은 어긋난 행동이다. 하지만, flex box가 나오기 이전에는 어쩔 수 없이 position, float, table 등과 같은 속성을 사용하여 레이아웃을 구성하게 ..