본문 바로가기

CS

(54)
삽입, 선택, 버블 정렬 삽입 정렬(Insertion Sort) - 가장 간단한 정렬 방식으로 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬한다. - 두 번째 키와 첫 번째 키를 비교해 순서대로 나열하고 이어서 세번째 앞의 n-1개의 키와 비교하여 알맞은 순서에 삽입하여 정렬하는 방식이다. - 평균과 최악 모두 수행 시간 복잡도는 O(n²)이다. 데이터 : 8 5 6 2 4 1회차 : 5 8 6 2 4 2회차 : 5 6 8 2 4 3회차 : 2 5 6 8 4 4회차 : 2 4 5 6 8 public class SortExample { public static void main(String [] args) { String strQuestion = "85624"; System.out.println("결과 :..
Polling, Pulling POLLING 서버에 결과를 주기적으로 요청하는 것. 즉, 클라이언트가 서버에 질의를 던지고, 그 질의에 대한 결과를 서버가 대답해주는 것. (주기적으로 결과값을 계속 요청) 사용자 정의된 프로토콜을 이용한 서버, 클라이언트가 여기에 대부분 속할 수 있음. 스트리밍할 때 HLS 프로토콜은 Http를 통해 데이터를 받아오는데 프로토콜 한계상 지속적인 연결 유지가 힘들기 때문에 5초에 한번 등 주기를 가지고 접속을 시도하는데 이러한 개념이라 생각하면 될것 같다 PULLING 서버의 데이터를 클라이언트가 직접! 주기적으로 가져가는 것. 즉, 클라이언트가 서버의 데이터를 알아서 가져가는 것. 보통 안드로이드 api 서버들을 PULLING 방식으로 보면 된다.
WebHook 웹서비스를 제공해주는 서버 단에서 어떠한 이벤트를 외부에 전달하는 방법. 서버에서 어떠한 작업이 수행 되었을 때 해당 작업이 수행 되었음을 HTTP POST로 알리는 개념. Webhook을 구현한 웹 애플리케이션은 특정 작업이 수행될 때 URL에 대해 POST 방식으로 요청을 생성한다. 한 줄 정리 : 서버에서 어떤 이벤트가 발생했을 때 다른 서버나 클라이언트에게 이를 알려주는 행위를 웹훅이라고 함
Tree(트리) Tree 트리는 정점과 선분을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태이다. 트리는 하나의 기억 공간을 노드라고 하며 노드와 노드를 연결하는 선을 링크라고 한다. 트리는 가족의 계복, 조직도 등을 표현하기에 적합하다. Tree 관련 용어 - 노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것 - 근 노드(Root Node) : 트리의 맨 위에 있는 노드 - 디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수 - 단말 노드(Terminal Node) = 잎노드(Leaf Node) : 자식이 하나도 없는 노드, 즉 디그리가 0인 노드 - 자식 노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들 - 부모 노드(P..
플라이웨이트(Flyweight) 패턴 플라이 웨이트 패턴은 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 한 공유해서 사용함으로써 메모리를 절약하는 패턴이다. 다수의 유사 객체를 생성하거나 조작할 때 유용하게 사용할 수 있다. Java와 코틀린의 String Pool 방식이 이와 같다. 테스트 코드: class ExampleUnitTest { @Test fun addition_isCorrect() { var str1 = "ABCD" var str2 = "ABCD" println(str1.hashCode()) println(str2.hashCode()) str1 = "ABCDE" str2 = "ABCDEF" println(str1.hashCode()) println(str2.hashCode()) } }
소프트웨어 생명 주기 소프트웨어 생명 주기는 소프웨어 개발 방법론의 바탕이 되는 것으로 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈것이다. 일반적으로 사용되는 소프트웨어 생명 주기 모형에는 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형이 있다. 폭포수 모형(Waterfall Model) 폭포수 모형은 폭포에서 한번 떨어진 물은 거슬러 올라갈 수 없듯이 소프트웨어 개발도 이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그결과를 철저하게 검토하여 승과정을 거친 후에 다음 단계를 진행하는 개발 방법론이다. - 소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형이다. - 제품의 일부가 될 매뉴얼을 작성해야 한다. - 두 개 이상..
Process와 Thread의 차이 Process란? 프로세스는 한 마디로 정의하자면 컴퓨터에서 실행되고 있는 컴퓨터 프로그램을 말한다. 여기서 프로그램이란 하드 디스크 등에 저장되어 있는 실행코드를 뜻하며 프로세스를 조금 더 풀어서 설명하자면 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업(Task) 단위를 지칭한다. 즉, 컴퓨터에게 프로세스란 다음과 같이 정의할 수 있다. - 운영체제로부터 시스템 자원을 할당받는 작업의 단위 - 컴퓨터에서 연속적으로 실행되고 있는 프로그램 - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 Process 구성 요소 위에서 프로세스는 운영체제로부터 시스템 자원을 할당받는다고 했는데 어떤 시스템 자원을 할당 받을까? Process는 다음과 같이 네가지의 자원들을 할당 받..
AMD CPU에서 Android Studio 에뮬레이터 사용하기 이번에 데스크탑을 젠3로 업그레이드 했는데 안스의 에뮬레이터가 실행이 안되는 이슈가 있었다. 퀘이사존이랑 안드로이드 포럼쪽에서 찾아봤더니 바이오스에서 SMT를 설정하고 windows의 하이퍼바이저 플랫폼을 활성화시키면 된다길래 해보았다. 참고로 AMD의 SMT 기능이 불안정하다는 말들이 많았기 때문에 이전에 사용하던 바이오스 세팅을 저장하고 진행하는 것을 추천한다. 스크린샷의 메인보드와 윈도우는 긱바 어로스 B550 Pro Ac, Windows 10 Pro이다. SVM Mode를 활성화시키고 재부팅한다. 제어판에서 Windows 기능 켜기/끄기 클릭 Windows 하이퍼바이저 플랫폼 선택 후 재부팅하면 된다.