Web Sever 개발과 CS 기초 (87) 썸네일형 리스트형 DB Index 이해하기 인덱스란 무엇인가 인덱스란, 별도의 저장 공간을 사용하여, 데이터베이스의 검색 속도 높여 주는 장치이다. 인덱스가 어떻게 생성되는 지, 왜 검색 속도를 높여주는 지 예시를 통해서 알아보자. 오른쪽 테이블에는 물리적 주소와 이름과 email 값이 저장되어 있다. 인덱스가 존재 하지 않는 상황에서, 이름이 SMITH인 사람의 Email을 모두 알아낸다고 가정하자. 인덱스가 없다면, 맨 위부터 100000번째 아래 데이터를 모두 훑으며 이름이 SMITH인 데이터를 일일이 발견해야 한다. 하지만 인덱스를 만들어 이름이 SMITH인 Eamil을 찾는 과정을 알아보자. 먼저 인덱스 값으로 사용할 이름과 실제 데이터 위치를 나타내주는 물리적 주소 값을 가져온다. 그리고 이름 값들을 알파벳 순으로 정렬한다. 정렬되어 .. Transaction과 ACID 쉽게 이해하기(+MySQL transaction 설정 방법) 개요와 목적 이번 글에서는 DB의 무결성을 보장해주는 트랜잭션의 개념에 대해서 알아본다. 그리고, 무결성을 보장하는 트랜잭션의 특징인 ACID에 대해서도 알아본다. Transaction 트랜잭션이란, 명령어들이 뭉쳐진 하나의 작업 덩어리를 의미한다. 분할 할 수 없는, 작업 덩어리라고 말할 수 도 있다. 예시를 통해, 분할 되어서는 안 되는 작업 덩어리가 무엇인지 알아보자. 은행 서비스를 이용해, 월세를 지불하는 상황이다. → 먼저 세입자 통장에서 월세 60만원이 인출 된다. → 집주인 통장으로 60만원이 입금 된다. 그런데, 만약 60만원 인출 작업만 성공하고, 입금 작업은 실패한다면, 허공에 돈이 날아가는 문제가 발생한다. 즉 60만원 인출과 60만원 입금은 동시에 성공하던지, 동시에 실패 해야 하는.. ThreadLocal, Atomic 이해와 CAS 원리 개요 목적 스레드를 사용하면 공유된 자원에 접근하여 예기치 못한 문제가 발생할 수 있다. 이번 시간에는 스레드 별로, 개별 공간을 제공하는 ThreadLocal과 Atomic에 대해서 알아본다. 마지막에는 Atomic을 가능하게 하는 CAS 동작 원리에 대해서도 알아본다. ThreadLocal ThreadLocal은 스레드 별로, 자신만의 변수를 만들어준다. ThreadLocal 변수 없이 일반 변수를 사용하면 모든 스레드가 공유된 자원을 사용하게 된다. 예시) 일반 변수 String a; thread1이 a에 값을 “t1”을 set한다(저장한다). thread2가 a의 값을 get(꺼내온다)하면 thread2가 설정하지 않은 “t1”의 값이 나온다. 공유된 자원을 사용하기 때문에 thread2가 설정하.. Concurrent List, Concurrent HashMap 쉽게 이해하기 개요 목적 멀티 thread를 사용 시 동시성 문제를 주의해야 한다. 동시성 문제를 해결하기 위한 다양한 방법들이 있다. (동기화, ThreadLocal, Atomic 등) 이번에는 많은 자료를 저장하는 list와 hash가 공통 자원일 때, 동시성 문제를 해결해주는 CucurrentLIst와 ConcurrentHash에 대해 알아보자. Concurrent List import java.util.ArrayList; public class ConcurrentLIst { public static void main(String[] args) throws InterruptedException { TestList testList = new TestList(); Thread t1 = new Thread(testLi.. 동시성 문제에 대한 이해와 Java의 Lock 객체 종류 개요 목적 자바 스레드 기능을 사용하면, 여러 처리를 동시에 진행할 수 있는 장점이 있다. 하지만, 공유된 자원을 동시에 접근했을 때, 동시성 문제가 발생 할 수 있다. 이 문제를 해결하는 방법이 동기화이다. 자바 제공하는 동기화 방법은 lock 객체를 사용하는 것이다. 이번 글에서는 lock 객체에 대한 이해와 종류에 대해서 알아본다. lock 객체를 잘 이해하기 위해, 관련 용어에 대한 설명을 먼저 한다. 동시성 문제, 동기화, Synchronized블럭, lock객체 이해 쓰레드는 하나의 프로세스의 공통된 자원을 사용해, 쓰레드간 빠른 전환이 가능하다. 하지만 공통된 자원을 쓰는데 주의점이 있다. 예를 들어 int num = 0; 이라는 공통된 자원에 +1을 기능하는 4개의 쓰레드가 동시에 실행된다.. Thread와 Process Fork 차이 개요 목적 Thread와 Process Fork 모두 프로세스의 흐름을 나눠 효율이 증가한다. 역할은 비슷하지만, 이 둘의 차이는 존재한다. 먼저 두 역할을 이해하기 위한 기본 용어를 이해 한 후에 Thread와 Process Fork 역할과 차이에 대해서 알아보자. 사전 지식 먼저 이해하기 프로그램, 프로세스, 스레드 프로세스란 컴퓨터 자원을 할당 받아 실행되고 있는 프로그램이다. 프로그램은 실행 되기 전 코드 자체를 의미한다. 예를 들어, 바탕 화면에 있는 크롬 브라우저 아이콘은 프로그램이고, 아이콘을 클릭하여, 크롬을 사용하는 것은 크롬 프로세스이다. CPU 동시성과 병렬처리. 콘텍스트스위칭 컴퓨터를 사용할 때, 다양한 프로세스를 동시에 사용한다. 크롬으로 검색을하고, 멜론 플레이어로 음악을 듣고,.. Spring MVC 구조와 사용법 Spring MVC 구조 @RestController public class testController{ @PostMapping("/test") public ResponseEntity addSentence( //비지니스 로직 } } 해당 컨트롤러 메소드는 GET /test 요청이 왔을 때 실행되는 코드를 담고 있다. 단순하게 어노테이션 작성만으로 HTTP 요청을 처리할 메소드를 지정할 수 있는 것은 Spring이 제공하는 MVC 구조 덕분이다. MVC 구조의 어떤 과정으로 HTTP 요청이 각 메소드로 전달되어 비지니스 로직을 처리할 수 있는 지 알아보자. 가장 기본적인 흐름은 HTTP 요청은 먼저 DispathcerServlet으로 전달된다. DispatcherServlet은 프론트 컨트롤러로서 모든 H.. SQL 언어 DML, DDL, DCL, TCL 이해하기 개요와 목적 먼저 관계형 데이터 베이스 관리 조작 언어인 SQL를 간단히 알아보고, 관계형 데이터 베이스 구조 별로 사용하는 SQL 언어인 DML, DDL, DCL,TCL에 대해서 알아보자 SQL이란 SQL이란 관계형 데이터베이스를 관리하고 조작하는 언어이다. 관계형 데이터 베이스에 대한 설명은 아래 글을 통해 확인 할 수 있다. SQL은 프로그래밍 언어가 아닌, 쿼리 언어를 사용한다. 특징으로, 영어 문장 형식과 비슷한 질의를 통해 데이터 베이스와 소통한다. 영어 문장 구조와 비슷한 SQL예시를 알아보자. SELECT * FROM students WHERE age>21; students 테이블에서 나이가 21 이상인 정보 조회하는 요청이다.. DELETE FROM students WHERE id=2; .. 이전 1 ··· 6 7 8 9 10 11 다음