컴포넌트 - 조합하여 화면을 구성할 수 있는 블록(화면의 특정 영역) - 화면을 빠르게 구조화하여 일괄적인 패턴으로 개발 가능해진다. - 패턴이 있으므로 남이 작성한 코드도 보기 편해진다. 컴포넌트 등록 - 전역 컴포넌트와 지역 컴포넌트로 나뉨 - 지역(local) 컴포넌트는 특정 인스턴스에서만 유효한 범위를 가짐 - 전역(Global) 컴포넌트는 여러 인스턴스에서 공통으로 사용 가능 전역컴포넌트 컴포넌트 등록 - Vue.component('컴포넌트 이름', { // 컴포넌트 내용 }; - 컴포넌트 이름은 template 속성에서 사용할 HTML 사용자 정의 태그 이름을 의미함. - 뷰 생성자로 컴포넌트 등록 -> 인스턴스 객체 생성 -> 특정 화면 요소에 인스턴스 부착 순서로 진행됨. - my-comp..
개발환경 : window10 개발툴 : Atom Vue 버전 : 2.5 Vue.js를 이용해서 Hello Vue.js 찍기 {{message}} - Vuejs도 기본구조는 html이기 때문에 html template 안에 작성되는 코드이다. - new Vue로 선언되는 것이 뷰 인스턴스라고 한다. - el 속성은 뷰 인스턴스가 그려질 지점을 지정한다. 이 속성은 CSS 선택자 규칙을 준수합니다. - data 속성은 message 값을 정의하여 화면의 {{message}} 에 연결합니다. -> message가 m 이 되면 {{m}} 으로 출력하면 됩니다. 실제로 바꾸어서 브라우저에 띄우고 vue 개발자도구( Chrome 확장기능 )를 이용해서 Root 태그를 확인해보니 data 속성의 자식으로 nn이 지정..
트랜잭션 - 비즈니스로직에서 쪼개질 수 없는 하나의 단위작업 - 한 번에 이루어지는 작업의 단위 - 알아두면 좋은 ACID 원칙 원자성(Atomicity) 하나의 트랜잭션은 모두 하나의 단위로 처리해야 한다. A와 B 작업이 하나의 트랜잭션으로 묶여있는 경우 A는 성공, B는 실패할 경우 해당 작업단위는 실패로 끝나야한다. 즉, A,B 모두 rollback 되어야 한다는 원칙 일관성(Consistency) 트랜잭션이 성공했다면 데이터베이스의 모든 데이터는 일관성을 유지해야한다. 격리성(Isolation) 트랜잭션으로 처리되는 중간에 외부에서의 간섭은 없어야한다. 영속성(Durability) 트랜잭션이 성공적으로 처리되면, 그 결과는 영속적으로 보관되어야 한다. 실습했던 내용 - pom.xml 에 라이브러..
블로킹 방식의 작업완료 통보 - submit() 메소드 이용. 매개값으로 받은 작업객체(Runnable, Callable)를 스레드풀에 저장하고 즉시 Future객체를 반환. - Future 객체는 작업결과가 아니라 작업이 완료되기까지 기다렸다가(지연되었다가 == 블로킹되다) 최종결과를 얻었을 때 사용된다. - 따라서 Future 객체를 지연객체라고도 부른다. - Future 객체의 get() 메소드는 작업이 완료될때까지 블로킹되었다가 처리결과를 리턴한다. - get()메소드의 리턴타입은 submit() 메소드의 두번째 인자의 타입과 같다. 리턴값이 없는 작업 완료 통보 - Runnable 객체로 생성. - 작업처리가 정상적으로 완료되면 Future 객체의 get() 메소드는 null을 반환. - 작업도..
스레드풀 - 병렬작업 처리가 많아지면 스레드 개수 증가 -> 스레드 생성 및 스케쥴링을 CPU가 바빠져서 메모리 많이 사용 - 결국 성능저하. - 갑작스런 병렬 작업처리가 많아질 때 스레드풀을 이용. - 스레드를 제한된 개수만큼 정해놓고 작업큐(Queue)에 들어오는 작업들을 하나씩 스레드가 맡아서 처리. - 스레드풀 생성/사용을 위해 Executors 클래스와 ExecutorService 인터페이스를 제공. - Executors의 다양한 정적메소드로 ExecutorService의 구현객체를 만들 수 있는데 이것이 바로 스레드풀. 스레드풀 생성 Executors 클래스 - newCachedThreadPool() - newFixedThreadPool() ExecutorService executorServi..
Thread Group - 관련된 스레드를 묶어서 관리할 목적으로 사용. - JVM이 실행될때 - system 스레드 그룹을 만듬 - JVM 운영에 필요한 스레드들을 생성 - system 스레드 그룹에 포함시킴 스레드 그룹 이름 얻기 ThreadGroup group = Thread.currentThread().getThreadGroup(); String groupName = group.getName(); 스레드 그룹 예제 public static void main(String[] args) { ThreadGroup group = Thread.currentThread().getThreadGroup(); //System.out.println(group.getName()); AutoSaveThread auto..
우리는 흔히 insert 작업을 할때 (Oracle 기준입니다.) insert into tbl_board(bno, title, content, writer) values(seq_board.nextval, #{title},#{content},#{writer}) 위와 같이 insert를 할 것이다. bno 컬럼은 sequence 객체의 값이 들어가는 자리로 VO가 있다면 vo에 저장되어 넘어가지 않고 sequence 객체의 nextval 함수를 통해서 실행될 것이다. 그런데 만약, 자동으로 추가된 PK 값을 확인해야 하는 상황이 온다면 어떻게 할까요? - sequence 객체의 currentval 함수를 이용하면 앞으로 들어갈 PK 를 확인할 수 있는데. 임의의 갯수 임의의 번째 실행이라면? 제약사항이 있다..
템플릿 메소드 패턴 - 알고리즘 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의하는 패턴 - 구현하려는 기능이 일정한 프로세스가 존재한다. - 구현하려는 기능이 사용하는 알고리즘이 추후 변경가능성이 있다. 템플릿 메소드 패턴을 위한 단계 1. 구현하려는 기능의 필요한 여러가지 단계를 확인. 2. 각각의 단계를 메소드로 분리 선언 3. 수행할 템플릿 메소드를 생성. 4. 하위 클래스에서 구현. 예제로 확인 추상 클래스 선언! public abstract class AbstGameConnectHelper { //외부에 노출되면 안됨. //보안과정 protected abstract String doSecurity(String string); //인증과정 protected a..