목록2022/02 (24)
hmk run dev
Servlet과 그것을 사용하는 Servlet web MVC Servlet 웹 애플리케이션을 만들 때 필요한 인터페이스 Servlet web MVC Servlet 사용 Spring Framwork에 있는 모듈 Web Service를 만든다. MVC 패턴을 사용한다. 정적 데이터만 전달하는 Web Server 어떤 사용자가 들어와도 같은 페이지를 반환함 사용자 요청에 따라 다른처리를 해줄 수 없다 동적인 처리를 해주는 웹 어플리케이이션의 부재 동적 데이터를 처리하는 CGI(Common Gateway Interface) 동적인 페이지를 처리할 수 있게됨 그러나, 많은 사용자를 처리하기엔 무리 CGI의 두 가지 문제점 - 요청이 들어올 때마다 프로세스(메모리에 적재된 프로그램 인스턴스)를 생성함 - 같은 CG..
Remote dictionary server 원격 + HashMap(Key - Value) + 서버 직관적으로 풀어보면 키와 밸류 값을 이용한 원격 서버라고 할 수 있다. 쿠팡이 모든 물품이 품절상태로 발생한 오류가 있었다고 하고 그 이유가 Redis 때문이라고 기사에 났던 적이 있다. 그 이유는 32bit CPU에서 Int의 최대값 때문이었다. 2147483647(이십일억사천칠백사십팔만삼천육백사십칠) key값이 너무 많아져서... 에러가 발생했다. 그래서 Redis 패치 내용을 보면 int > long으로 패치된 것을 볼 수 있다. 2,147,483,647 > 4,294,967,295 그래서 Redis가 뭘까? Cache 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것 어디에 저장해야 빠..
컴퓨터 안엔 크게 CPU, MEMORY, DISK가 있다. 아주 기본적인 구조로 폰 노이만 구조라고 한다. CPU프로세스 쉽게 말해서 계산하는 역할 ALU - 수학적계산, 산술 연산 등등... 레지스터 - 메모리에 있는 명령들이 쭉 올라와서 계산을 통해 연산을 하게 된다. 프로그램이 실행되고 있는 것 프로세스는 하나의 컴퓨터에 여러 개가 존재할 수 있다. 컴퓨터 작업 관리자에 들어가 보면 내 컴퓨터에서 실행돼있는 프로세스들을 볼 수 있다. 요즘은 멀티코어, 헥사코어들 프로세서가 여러 개인 컴퓨터가 많지만 프로세서가 하나라고 가정할 때 한 개의 CPU(프로세서)는 한개의 명령만 처리가 가능하다. 프로세스가 여러 개 있다고 해도 보통은 CPU에서 처리속도가 매우 빠르기 때문에 동시에 실행되고 있다고 생각할 ..
추상 클래스 사용하는 이유 - 상속을 강제하기 위함 부모 클래스에서 정의만 해놓고, 실제 동작은 자식 클래스에서 하게 됨 이러한 추상 클래스의 성격이 잘 반영되어진 것이 팩토리 메서드 패턴(Factory Method Pattern)이다. 추상클래스는 일반 클래스와 크게 다르지 않다. 단지, 추상 메서드를 선언해 상속을 통해 자손 클래스에서 완성을 유도하는 클래스라고 할 수 있다. 비유하자면 미완성 설계도라고 할 수 있다. 상속을 위한 클래스 이므로 따로 객체생성이 불가능하다. abstract class className { ... public abstract void methodName(); } - 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스 - 추상 메소드는 하위 클래스에서 메소드 구현을 ..
데이터 조회 시 JOIN이 들어가는 쿼리일 경우엔 특정 레코드엔 NULL인 칼럼이 들어가는 경우가 빈번하다. 이럴 때 특정 레코드의 칼럼이 NULL인 경우 WHERE 조건을 사용하지 않고 싶을 때 아래처럼 구현하면 된다. SELECT * FROM w_schedule ws LEFT OUTER JOIN w_work w WHERE 1=1 AND ((w.wait_yn IS NULL and 1=1 ) or (w.work_stat IS NOT NULL and w.wait_yn = 'N')) 위의 코드처럼 w_work가 조인돼서 생기는 필드인 w.wait이 IS NOT NULL인 경우에 한해 w.wait_yn = 'N' 조건을 걸어준다. FROM w_alliance_work waw LEFT OUTER JOIN w_w..
캐시워크같은 잠금화면위에 어플화면을 띄울 수 있는 기능을 개발을 해보자! 안드로이드 같은 경우 잠금화면 액티비티를 개발자가 개발 할 수 있다(IOS는 아직까지 안돼는 걸로...) 잠금화면을 점유하기 위해서 BroadcastReceiver에서 ACTION_SCREEN_OFF, ACTION_SCREEN_ON 액션을 받아서 화면에 액티비티를 띄워야 하는데 Manifest파일에 receiver를 등록해 정적 동작은 실행되지 않는다. 그래서 Service를 만들어 백그라운드에서 동작하게 만들어야 하는데 안드로이드 O 버전부터 백그라운드 동작을 죽이기 때문에 일정 시간이 지나면 더 이상 동작하지 않는다. 이것을 해결하기 위해 AlarmManager로 알람을 등록해 서비스를 계속 실행시키는 방법도 있는데 이것은 알람..
Activit - 앱이 실행되면 전체 화면에 앱의 UI를 띄워줌 - 사용자와 상호작용하며 이벤트 처리 - 새로운 UI를 화면에 표시 기본적으로 MainActitvity가 앱 실행 시 최초로 보이는 화면을 담당한다. Service 앱의 백그라운드에서 동작하는 작업을 수행하며 서비스를 실행한 앱을 다른 앱으로 전환하더라도 서비스에서 시작한 작업은 백그라운드에서 계속 실행 된다. 서비스는 크게 3가지로 나눌 수 있는데 - 포그라운드 서비스 : 알침창에 서비스가 실행 중임을 표시해준다. 시스템에 의해서 강제로 종료되지 않음 - 백그라운드 서비스 : 사용자에게 보이지 않는 백그라운드에서 작업을 수행하며. 시스템의 리소스가 부족할 경우 강제 종료될 수 있음 - 바인드 서비스 : 서비스와 서비스를 호출하는 앱 구송 ..
Intent (스프링의 @Autowird와 비슷...??) Component를 실행하기 위해 시스템에 넘기는 정보 기본적으로 안드로이드는 component기반이고 이때 내부적으로 개발자가 작성한 Activity 같은 클래스들이 아래와 같이 동작하게 된다. 위 4개의 영역은 각각각의 class지만 상호 결합되지 않은 상태로 실행이 되고. 이것들은 안드로이드에선 component라고 할 수 있다. 안드로이드 애플리케이션을 네 가지 기본요소에는 Activity, Service, Broadcast Reiceiver, Content Provider가 있다. 이때 인텐트(Intent)란 이러한 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 인텐트는 안드로이드 개발 시 매우 빈..
UML 다이어그램 종류 (액시디콜컴클) UML이란 소프트웨어 시스템을 구축하기 전에 모델을 설계한 그림으로된 표기법 - Activity - Sequence - Deployment - Collaboration - Component - Class 화이트박스 테스트 - 내부구조를 알고 동작검사 블랙박스 테스트 - 내부구조, 작동원리를 모르고 검사 스택을 사용한 연산 - 재귀호출, 후위연산, 깊이 우선탐색(DFS) 큐 - 선택정렬, 넓이 우선탐색(BFS) 병렬 데이터베이스 분할방법 수평분할 - 라운드-로빈, 범위 분할, 해시 분할 수직분할 - 예측분할 데이터베이스 설계 단계 개념적 설계 - 사용자의 요구사항 분석 후 DB에 대한 추상적인 형태 설계(ERD 작성) 논리적 설계 - 논리적 모델이용 스키마 생성, 개..
보호되어 있는 글입니다.