본문 바로가기

CS 잡지식

동기화(Synchronization) VS 동시성(Concurrency) 이 둘의 개념이 매우 혼동스럽다. 한국어로 둘다 단어가 비슷한 것도 한 몫을 한다. 영어단어로 기억을 하면 헷갈리지 않을 것이다. 이번 페이지에서는 이 둘의 차이점을 알아 보자 동시성(Concurrency) 트랜잭션 A와 B가 있다고 하자. 이 둘은 동시에 실행이 된다고 하자!! 이렇게 2개 이상의 작업들이 동시에 실행되는 것을 동시성(concurrency) Problem이라고 한다. 동시성 문제의 핵심은, 비록 동시에 실행이 되더라고 마치 하나하나 독립적으로 실행한 것과 같은 결과를 내게 하는 것이다. 동기화(Synchronization) 같은 데이터를 가지고 무언가를 실행을 하는 것! ex1) 트랜잭션 동기화-> 같은 커넥션을 사용하기 위하여, 각 메서드에 Connection객체를 매개 변수로 일일이.. 더보기
HTML vs CSS 더보기
HTML, CSS, Java Script에 대한 고찰! HTML : 웹 브라우저에 보이는 컨텐츠를 전문 용어로 Element라고 하는데, 이 Element를 HTML로 담는다. CSS : HTML에 있는 Element에 디자인을 입힌다. JS : Java Script로 element들을 움직이게 하기 위한 프로그래밍 언어!( 본래의 탄생 배경 ) or 정적인 html 페이지를 동적으로 만들어 주는 프로그래밍 언어! -> HTML, CSS, JS가 웹 프론트엔드 개발의 기본이다!!! ( 그러나, 요즘에는 ThymeLeaf와 같은 좋은 ViewTemplate이 있기에 JS 없이, HTML과 CSS만으로 웹 프론트엔드 개발이 가능하다 ) JS를 사양하는 이유 1. 문법이 아주 개판이다. -> 예를 들어, 일반 프로그래밍 언어에서는 1 == "true"는 false.. 더보기
예외는 2가지 측면에서 생각! 예외는 크게 1. 시스템 예외 : 복구 불가능한 예외(DB 접근 안됨, 네트워크 불안정 등) -> 런타임(언체크) 예외로 처리! 2. 비지니스 예외 : 시스템은 정상 동작했지만, 비즈니스 상황에서 문제가 되기 때문에 발생하는 예외( EX. 주문 시, 카드의 잔액이 부족할 시, 이것은 시스템에 의해서 일어난 예외가 아니라 비즈니스 상황에서 발생한 예외이다. 주문 시 결제 잔고가 부족하면 주문 데이터를 저장하고, 결제 상태를 대기로 처리하며, 고객에서 잔고 부족을 알리고 별도의 계좌로 입금하도록 안내해야 한다.) -> 체크 예외로 처리!! -> 이 2개로 구분하여 예외를 설정을 하자!!! 더보기
@Transational 사용 시 주의점( 매우 중요 && 면접에서 자주 나옴) @SpringBootTest public class InternalCallV1Test { @Autowired CallService callService; @Test void printProxy() { log.info("callService class={}", callService.getClass()); } @Test void internalCall() { // 정상 실행됨! callService.internal(); } @Test void externalCall() { // external() 내부의 inernal()이 트랜잭션 적용을 받지 못함!! callService.external(); } @TestConfiguration static class InternalCallV1Config { @Bean .. 더보기
SQL 작성 TIP ex) select * from employee,department where id = 1 1.from employee, department -> 여기에는 사실 JOIN이 숨어 있다. 바로 Cross JOIN의 implicit JOIN이다. FROM 뒤에는 2개 이상의 table이 있는 경우, 기본적으로는 Cross Join이 default로 실행이 된다. 2. WHERE id = 1 -> 1에서 JOIN된 tuple들의 집합(테이블) 중, 우리가 원하는 tuple 즉 selection codition을 충족하는 tuple들을 최종적으로 여기서 선택을 한다. 3. Select * -> 1,2가 실행 완료가 되고 실행되는 부분으로써, 1,2의 결과로 나온 최종 tuples들의 projection attri.. 더보기