작성 규칙 1. 응용을 막아두는 그러한 경우 때문에 사전은 블로그에 저장 2. 새로운 단어는 각 메뉴에 위에 추가(아래있을 수록 오래전에 등록한 단어) #ㄱ - 객체(Object) : 현실에서 존재하는 개념을 추상화하여 클래스 같은 단위로 묶어 놓은 개념 - 경쟁 상태(Race condition) : 여러 개의 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 결과 값에 영향을 줄 수 있는 상태 - 기아 현상(Starvation) : 원하는 자원을 제 때 얻지 못하는 현상 - 게이트웨이 : 컴퓨터 네트워크에서 서로 다른 통신망으로 들어가는 네트워크로 들어가는 입구역할을 하는 네트워크 포인트 #ㄷ - 데드락(Deadlock) : 둘 이상의 프로세스가 서로 상대방이 가지고 있는 자원을 가지기 위해서 무한..
소스코드 import java.text.*; import java.time.Duration; import java.time.Instant; import java.util.stream.*; import java.io.*; import java.util.*; public class Main { static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static StringBuilder sbb = new StringBuilder(); static void solve(int opih1, int opih2) throws Exception { System.setIn(new FileInputStream("c:/Dev/git/..
입력 방향성이 없는 그래프가 주어진다. 세준이는 1번 정점에서 N번 정점으로 최단 거리로 이동하려고 한다. 또한 세준이는 두 가지 조건을 만족하면서 이동하는 특정한 최단 경로를 구하고 싶은데, 그것은 바로 임의로 주어진 두 정점은 반드시 통과해야 한다는 것이다. 세준이는 한번 이동했던 정점은 물론, 한번 이동했던 간선도 다시 이동할 수 있다. 하지만 반드시 최단 경로로 이동해야 한다는 사실에 주의하라. 1번 정점에서 N번 정점으로 이동할 때, 주어진 두 정점을 반드시 거치면서 최단 경로로 이동하는 프로그램을 작성하시오. 출력 첫째 줄에 두 개의 정점을 지나는 최단 경로의 길이를 출력한다. 그러한 경로가 없을 때에는 -1을 출력한다. 풀이 [A->B]->C->D, A->[B->C]->D, A->B->[C-..
아마존 버전 확인하기 cat /etc/*release Linux2가 적혀있지 않다면 1이 Linux1의 경우 실제로 Centos 6.x 버전 톰캣 실행 위치 /var/lib/tomcat8 젠킨스 위치 /var/lib/jenkins 젠킨스 설정 파일 /etc/sysconfig/jenkins 메이븐 위치 /opt/maven/ 톰캣 conf 위치 /etc/tomcat8/tomcat8.conf 톰캣 tomcat-users.xml 위치 /etc/tomcat8/tomcat-users.xml 아이피 테이블 위치 /etc/sysconfig/iptables log 위치 /var/log 톰캣 로그위치 /var/log/tomcat
1. 시작 > 개인 정보 설정을 들어간다 2. 활동기록 > 체크된 항목 체크 해제 3. 결과 확인
1. src/main/java의 org.randi.controller 패키지에서 BoardController.java를 추가해 준다. package org.randi.controller; import org.randi.domain.BoardVO; import org.randi.service.BoardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.s..
DBeaver 현재 줄만 실행 Ctrl + Enter 현재 스크립트 실행 Ctrl + X 인텔리제이 입력모드(여러줄 커서) : Ctrl + Ctrl + ↑ 또는 ↓ 참조된거 포함 변수명 변경하기 : Ctrl + F6 또는 변수 우클릭 후 Rename + Refactor 테스트 클래스 만들기 : Ctrl + Shift + T 꼭 해당 파일이 포인트 잡혀있어야 함!!! setter/getter, toString, contructor ... etc Alt + Insert redo : Ctrl + Shift + Z 한 줄 지우기 : Ctrl + Y 구현한 곳으로 따라가기 Ctrl + Left Click 창닫기(Close Tab) : Ctrl + Alt + Shift + Q(사용자 정의) Settings : Ct..
자동차를 운전하기 위해서는 운전 면허증이 필요하다. 운전 면허증을 보면 행정 기관이 '이 사람은 자동차를 운전할 자격이 있다'라고 인정하고 있는 것을 알 수 있다. 공개 키 인증서도 운전 면허증과 아주 비슷하다. 공개 키 인증서에는 이름이나 소속 메일 주소 등의 개인 정보, 그 사람의 공개 키가 기재 되고, 인증 기관의 개인 키로 디지털 서명이 되어있다. 공개 키 인증서를 보면 이 공개키는 확실히 이 사람 것이다'라고 인정했다는 것을 알 수 있다. 공개 키 인증서는 간단히 인증서라고도 부른다. 인증 기관이란 '확실히 이 공개 키는 이 사람의 것이다'라고 인정하고 디지털 서명을 할 수 있는 사람이나 기관을 말한다. 국제적인 조직이나 정부가 만든 것도 있고, 인증 기관의 서비스 제공을 업무로 하고 있는 일반..
메세지 인증 코드 이용 예시 IPsec, SSL, TLS 본문 앨리스는 A은행에 한 고객인 앨리스로부터 네트워크를 통해서 공금 의뢰가 도착했다. A은행이 읽어보니 다음과 같은 내용이었다. "내 계좌 앨리스-5374에서 B 은행 계좌 밥-6671로 1억 원을 송금바랍니다" A은행은 이 메세지가 분명히 자신의 고객인 앨리스로부터 왔다는 것과 송금액인 1억 원과 수신자인 B은행의 계좌 밥-6671의 내용이 네트워크를 통해 전송되는 도중에 변경되지 않았다는 것을 확인해야 한다. 만약 고객 앨리스가 A은행에 보낸 송금 의뢰를 적극적 공격자 맬로리가 도중에 변경했다고 하면, A은행은 내용이 조작되었다는 것을 검출할 수 있어야 한다. 송금처가 맬로리의 계좌로 조작되어 있다면 1억 원을 도난당하기 때문이다. 과연 이 ..
일방향 해시 함수의 종류 MD4, MD5, SHA-1, SHA-2(SHA-256, SHA-384, SHA-512) 등등이 있다. 해시함수란? - 데이터의 지문을 생성하는 함수 예를 들어 파일의 수정여부를 알고 싶으면 어떻게 해야 할까?전체를 비교하면 된다. 하지만 파일의 전체를 훑어서 비교하기에는 너무 자원의 낭비가 심하다. 간단하게 처리 하기 위해서는 사람의 지문을 채취하듯 파일의 지문을 채취하면 된다. 그렇게 하기 위해서는 일방향 해시함수를 이용하면 된다. 일방향 해시 함수에는 입력과 출력이 각각 1개씩 있다. 입력은 메세지라고 하고, 출력은 해시 값이라 한다. 일방향 해시 함수는 메세지를 기초로 해서 해시 값을 계산한다. 예를 들어 345689를 23으로 나누어보자. 그리고 소수점 이하 7자리부터 ..
대칭 암호 vs 비대칭 암호(공개키 암호) 예전에는 DES가 표준 대칭키 암호였지만 NIST에 의해 2000년에 표준 대칭키 암호가 RSA로 선정되었다. 하지만 평문을 암호화하고 암호문을 복호화 하는 데 같은 키를 사용하기 때문에 정당하지 않는 수신자가 키를 사용해서 복호화 할 수 있는 가능성이 있다. 그러므로 정당한 수신자에게만 키를 전달하기 위해서는 공개 키 암호(비대칭 암호) 기술이 필요하다. 공개키 공개 키 암호에서는 암호화 키와 복호화키(이 두개를 합쳐 키 쌍-key pair-이라고 부른다)가 분리되어 있다. 개인이 가지고 있는 복호화키는 절대로 공개해서는 안된다. 개인 키(private key)라고도 부른다. 송신자는 암호화 키를 써서 메세지를 암호화하고, 수신자는 복호화키를 써서 암호문을 복..
보안의 3요소 가용성 : 자원이 필요할 때 접근할 수 있어야 한다. 무결성 : 자원이 변형되지 않고 그대로 전달되어야 한다. 기밀성 : 자원은 인가된 사람만 접근이 가능해야 한다. 암호 상식 보안에서 가장 취약한 것은 사람 공개되었지만 시간이 많이 걸리는 알고리즘이 강하다. 단어 정리 평문을 암호문으로 바꾸는 것을 암호화 정당한 수신자가 암호문을 평문으로 바꾸는 것을 복호화 정당하지 않은 수신자가 암호문을 평문으로 바꾸는 것은 암호해독(Cryptanalysis) 앨리스와 밥 : 메세지를 주고 받는 임의의 인물 이브 : 소극적 공격자 맬로리 : 적극적 공격자 빅터 : 검증자
@Bean Spring Container에 Bean을 등록하도록 하는 메타데이터를 기입하는 어노테이션 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만드려할 때 사용 @Component Spring Container에 Bean을 등록하도록 하는 메타데이터를 기입하는 어노테이션 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 어노테이션 @configuration 설정 파일이라고 알려주는 어노테이션 @Autowired / @Resource spring / java 어노테이션 injection에 사용된다. Lombok관련 어노테이션 @Setter setter 메서드를 만들어주는 역할을 함 JDK7까지 @Setter(onMethod = {@Annotations}) JDK8부터 @Setter(..
Injection 주입(Injection)은 말그대로 외부에서 '밀어 넣는 것'을 의미합니다. 외부에서 주입하는 것과 그렇지 않은 것을 이해하기 위해서 음식점의 식재료를 생각해 보면 이해가 쉽습니다. 어떤 음식점의 경우는 매일 가게를 열기 전 직접 식재료를 구하기 위해 시장을 가지만, 프랜차이즈 식당들은 본사가 트럭 등을 이용해서 식재료를 공급합니다. 이 두가지 방식의 차이는 필요한 객체를 얻기 위해서 주체가 능동적인지 수동적인지에 대한 문제입니다. 의존성과 주입을 결합해서 생각해 보면 '어떤 객체가 필요한 객체를 외부에서 밀어 넣는다는 의미가 됩니다. 그렇다면 다음은 '왜 외부에서 객체를 주입하는 방식'을 사용하는지에 대한 문제를 알아볼 필요가 있습니다. 음식점의 예에서 직접 식재료를 사지 않고, 대행..
db포트를 사용하고 있지 않아서 설정해 줬다. SELECT dbms_xdb.gethttpport() from dual; EXEC dbms_xdb.sethttpport(9090); 유저 생성 CREATE USER USER1 IDENTIFY BY USER1 DEFAULT TABLESPACE USERS TEMPORARY TABLE SPACE TEMP 권한 부여 GRANT CONNECT, DBA USER1 테이블 생성, seq생성 CREATE SEQUENCE seq_board; CREATE TABLE tbl_board { bno number(10,0), title varchar2 not null, content varchar2 not null, writer varchar2 not null, regdate dat..
설정 프로젝트의 자바 버전 스프링 프레임워크의 버전 1.8 5.0.7.RELEASE 스프링의 테스트 스프링의 jdbc 스프링의 트랜잭션(tx) org.springframework spring-test ${org.springframework-version} org.springframework spring-jdbc ${org.springframework-version} org.springframework spring-tx ${org.springframework-version} HickariCP Mybatis, Mybatis-Spring Log4jdbc com.zaxxer HikariCP 2.7.8 org.mybatis mybatis 3.4.6 org.mybatis mybatis-spring 1.3.2 org..
JAVA의 특징 자바가상머신만 설치하면 컴퓨터의 운영체제에 상관없이 작동한다. 기본 자료형을 제외한 모든 요소들이 객체로 표현 캡슐화, 상속, 다형성이 잘 적용된 언어 GC를 통한 자동적인 메모리 관리 멀티쓰레드를 지원 OOP의 특징 객체지향 프로그래밍은 코드의 재사용성이 높다. 코드의 변경이 용이 직관적인 코드 분석 개발속도 향상 상속을 통한 장점 극대화 오버로딩, 오버라이딩 오버로딩이란 같은 이름이 메소드를 여러개 정의하는 것, 매개 변수의 타입이 다르거나 개수가 달라야 한다. 오버라이딩이란 상위 클래스의 메소드를 하위 클래스에서 재정의 Servlet, JSP Servlet이란 Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것 (HTML in JAVA) JSP란 html 기반..
c문자, 문자열 input %[^\n]%*cscanf warning #pragma warning(disable : 4996) 자료형의 범위int : –2,147,483,648 ~ 2,147,483,647 20억 / 10개unsigned int = long : 0 ~ 4,294,967,295 40억 / 10개long long :–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 92억 / 10개unsigned long long : 0 ~ 18,446,744,073,709,551,615 입출력C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문..
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database#statement-vs-preparestatement 우선 속도 면에서 PreparedStatement가 빠르다고 알려져 있다. 이유는 쿼리를 수행하기 전에 이미 쿼리가 컴파일 되어 있으며, 반복 수행의 경우 프리 컴파일된 쿼리를 통해 수행이 이루어지기 때문이다.PreparedStatement에는 보통 변수를 설정하고 바인딩하는 static sql이 사용되고 Statement에서는 쿼리 자체에 조건이 들어가는 dynamic sql이 사용된다. PreparedStatement가 파싱 타임을 줄여주는 것은 분명하지만 static sql을 사용하는데 따르는 퍼포먼..
# 특징 *propotion : 비례한*in-place : 제자리에서 // 꽃댕댕 public class HelloWorld { /************************************ 주의 : arr[]의 크기를 엄청 크게 할 경우 1. stack의 overhead때문에 연산이 수행되지 않을 수 있습니다. 2. String[] args의 크기가 65535byte 밖에 입력되지 않아서 오류를 내뿜습니다. *************************************/ public static void main(String[] args) { int arr[] = { 234, 45 , 563, 345, 345, 234, 45 , 563, 345, 345, 234, 45 , 563, 345, ..
공통 *** 사용자가 바뀌면 환경변수를 읽지 못해서 REFRESH를 해야 한다. *** neovim 설정 open vi ~/.config/nvim/init.vim [java] 프로세스 보기 ps -ef | grep java ps aux a: 이 옵션은 ps에게 시스템의 모든 사용자에 대한 프로세스를 나열하도록 지시합니다. 이 옵션이 없으면 ps는 명령을 실행 중인 사용자와 연관된 프로세스만 나열할 수 있습니다. u: 이 옵션은 출력에 프로세스의 사용자/소유자를 표시하도록 ps에 지시합니다. 사용될 경우 출력에는 각 프로세스를 소유한 사용자를 나열하는 열이 포함됩니다. 이 옵션은 또한 출력을 사용자 중심으로 변경하여 사용자 활용에 대한 자세한 정보를 제공합니다. x: 이 옵션은 터미널에 연결되지 않은 프로..
# JVM의 메모리 구조 일반적인 프로그램과 자바 프로그램의 구조입니다. 사용자가 작성한 JAVA 코드(JAVA Source)를 컴파일러(Java Compiler)가 바이트코드로 변환시켜준다. 변환된 바이트 코드는 Execution Engine에 의해 처리된다. #JVM의 메모리 구조 Method Area1. Field Information : 멤버변수의 이름, 데이터 타입, 접근 제어자에 대한 메타데이터2. Method Information : 메서드의 이름, 리턴타입, 매개변수, 접근제어자에 대한 메타데이터3. Type Information : Type의 속성이 Class인지 Interface인지의 여부 저장' 접근 제어자 및 연관된 interface의 전체 리스트 저장 //abstract여서 @Ov..
인터넷에 기여한 자바 인터넷의 도움으로 자바는 프로그래밍의 최전선에 자리잡게 되었습니다. 그리고 역으로 자바 덕분에 인터넷도 지대한 영향을 받았죠. 자세하게 설명하면 자바가 일반적인 웹 프로그래밍을 간단하게 해주었고, 온라인 세상에 있는 컨텐츠를 바꾸는 방법을 applet이라 불리는 것을 통해 네트워크 프로그램의 새로운 종류에 혁신을 제공했습니다. 또한, 자바는 인터넷의 문제인 이식성(혹은 휴대성)과 보안에 영향을 주었습니다. 이에 대해 자세히 살펴보도록 하죠.Java Applets Applet(이하: 애플릿)은 자바에 적합한 브라우저에 전송 및 자동 실행되도록 설계된 특별한 자바 프로그램입니다. 자세히 설명하면 애플릿은 사용자와 상호작용 없이 애플릿 그 자체를 다운로드(download)할 수 있죠. 예..