본문 바로가기

전체 글

(101)
서버 설정 WEB , WAS, DB .. 정말 많이 들었지만 그동안은 간단히 이해하고 넘어 갔었습니다. 서버 성능에 관한 공부 중 궁금한 점이 있어 정리해보도록 하겠습니다. 성능 사용자의 어플리케이션 성능은 개인용 하드웨어의 성능이 발전함에 따라 거의 문제가 되지 않기 때문에 서비스의 성능은 서버의 성능이 결정하게 됩니다. 성능을 측정할 때에는 사용자가 서버에 대해 느끼는 '속도'나 'TPS(Troughput per second)'을 측정하게 됩니다. 이렇게 측정된 성능을 기반으로 병목이 있을 시 튜닝을 진행하게 됩니다. WAS WAS에서 설정해야하는 값은 대표적으로 DB Connection Pool, Thread 개수가 있습니다. 이 두가지 개수는 많이 사용할수록 메모리를 많이 점유하게 됩니다. 그렇지만 적게 설..
Semaphore & Mutex 공유된 자원에 동시에 여러개의 프로세스가 접근하면 문제가 발생합니다. 따라서 공유된 자원속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한하기 위해 고안된 것이 'Semaphore'입니다. Semaphore는 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것이라면, Mutex는 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것입니다. Critical Section을 가진 쓰레드들이 공유 리소스에 대한 접근을 조율하기위해 Locking, Unlocking을 사용합니다. Mutex는 상태가 0,1 두개뿐인 binary Semaphore 입니다.
tomcat / oracle 오랜만에 tomcat 서버를 구동하였는데 아래와 같은 창이뜨면서 접속이 되지 않았습니다. 구글링을 해보니 아파치 톰캣과 오라클이 같이 설치되어 있는 경우 포트 충돌로 인한 창이란 결론에 이르렀습니다. 하여, oracle 의 포트를 바꿔주기로 했습니다. window cmd 창을 열고 아래와 같은 명령어를 입력해주면 포트를 9090으로 변경할 수 있습니다. 이후 포트가 정상 변경된것을 확인하려면 아래 명령을 실행해주세요
스택과 큐 1. Stack 스택은 LIFO(Last In First Out) 구조입니다. top으로 정한곳을 통해서만 접근 가능하며, top을 통해 삽입하는 연산은 push, 삭제하는 연산은 pop이라 합니다. 스택은 시간 순서에 따라 자료가 쌓이고 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조적 특징을 가지고 있습니다. 비어있는 스택에서 자료를 추출하려고하는 경우 stack underflow라고 합니다. 스택이 넘치는 경우 stack overflow 라고 합니다. 스택으로 사용하기 좋은 분야는 아래와 같습니다. -웹 브라우저 방문기록: 가장 나중에 열린 페이지를 다시 보여줘야합니다. -실행 취소: 가장 나중에 실행된 것부터 실행 취소합니다. 2. Queue 큐는 FIFO(First In First Out)..
console에서 값 읽을 때 백준 알고리즘 사이트에서 알고리즘 문제를 꾸준히 풀어보고 있습니다. 저는 주로 Java 언어를 사용하여 진행하고 있는데, 그 과정에서 컴파일에러, 시간초과 등 많은 에러를 보았습니다. 그 중 콘솔에서 입력 값을 받을 때 문제가 발생하는 경우가 있어 이 글을 작성합니다. Scanner 대신 BufferedReader를 ! BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String 을 int로 바꿀때 ! 1. charAt() br.readLine 을 하면 String 으로 그 값을 받아오는데, int 로 변경할 떄 Integer.parseInt를 주로 사용하였습니다. 그러나 최근 charAt을 응용하여 변경하는 법을 알게되..
git 기본적인 사용법 git status: 변경된 사항 확인 git add . : all file staging git commit -m "update message insert here" git push origin master git branch code 내려받기 git clone -b {branch_name} --single-branch {저장소 URL} ex) git clone -b subBranch --single-branch https://github.com/어쩌구저쩌구
SQLD SQLD 공부 중에 학습한 내용을 정리하였습니다. 1. DROP, TRUNCATE, DELETE의 차이 DROP, TRUNCATE 는 auto commit 이 됩니다. TRUNCATE는 용량이 줄어들며 인덱스도 삭제됩니다. 그러나, 테이블은 삭제되지 않고 데이터만 삭제됩니다. DROP은 테이블 전체를 삭제하며 공간도 전체를 삭제합니다. DELETE 는 사용자 commit 필요합니다. 테이블의 용량은 줄어들지 않으며 데이터만 지울 수 있습니다. 삭제 후 복원 가능합니다. 2. Oracle 과 SQL Server 의 차이 2.1 Rollback Oracle 은 Create table의 경우 transaction 종료 처리되어 rollback해도 테이블이 그대로 존재합니다. SQL server 의 경우 Beg..
HashBang 오늘은 HashBang(해쉬뱅)에 대해 작성해보겠습니다. 해시뱅은 #(hash) + !(bang) 인데요. 해시뱅을 사용하는 이슈는 SPA(Single Page Application)으로 웹 어플리케이션을 구성하기 위해서입니다. 전체 페이지를 로딩하는 대신에 페이지 하나만 두고 자바스크립트만으로 모든 메뉴를 다루는 것입니다. 이를 구현하기 위해선 URL변경 없이 구현해야하는데, 이를 위해 해시뱅을 사용합니다. # 뒤에 붙은 부분을 fragment identifier 라고 부릅니다. 정확하게 사용하기 위해서 아래 작동 원리를 살펴보겠습니다. 작동 원리 1) 사용자가 https://127.0.0.1/#!/device 요청 2) 브라우저가 # 뒤의 !/device를 로컬에 저장 후 https://127.0.0..