아스키

영문숫자공백 1바이트 한글 2바이트,

 

utf-8

영문숫자공백 1바이트 한글 3바이트

 

utf-16

영문숫자공백한글 모두 2바이트

 

'웹개발 지식' 카테고리의 다른 글

AES-256 사용법 및 예제  (0) 2023.02.06
백 / 프론트(vue) 연결  (0) 2023.02.03
JOIN 및 쿼리 연산자  (0) 2023.01.30
포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02

256비트 (= 32바이트)의 키 값을 가짐.

 

AES는 키 값의 길이와 무관하게 128비트(= 16바이트)의 블록 단위로 암호화를 수행함.

** 코드상으로 보면 subString(0,16)을 한다!

 

만약 128비트보다 작은 블록이 발생하면 패딩 작업을 통해 부족한 부분을 특정값으로 채움.

** 패딩 작업엔 (PKCS5, PKCS7 방식이 있음)

** "AES/CBC/PKCS5Padding" 식으로 작성

 

코드

public class AES256 {
    public static String alg = "AES/CBC/PKCS5Padding";
    private final String key = "hyeryunsKeyMyKeyMyEncryptedKey==";
    private final String iv = key.substring(0, 16); // 16byte

    public String encrypt(String text) throws Exception {
        Cipher cipher = Cipher.getInstance(alg);
        SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
        IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
        cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivParamSpec);

        byte[] encrypted = cipher.doFinal(text.getBytes("UTF-8"));
        return Base64.getEncoder().encodeToString(encrypted);
    }

    public String decrypt(String cipherText) throws Exception {
        Cipher cipher = Cipher.getInstance(alg);
        SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
        IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
        cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParamSpec);

        byte[] decodedBytes = Base64.getDecoder().decode(cipherText);
        byte[] decrypted = cipher.doFinal(decodedBytes);
        return new String(decrypted, "UTF-8");
    }
}

'웹개발 지식' 카테고리의 다른 글

문자 바이트  (0) 2023.03.22
백 / 프론트(vue) 연결  (0) 2023.02.03
JOIN 및 쿼리 연산자  (0) 2023.01.30
포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02

뷰 및 axios 설치. 실행

npm init
npm i
npm i -g npm@latest
npm i -g @vue/cli
npm i axios

npm run serve

 

- axios를 통해 서버단 다녀오기 axios.get(url)~~~

axios.get(url).then((res) => {
	console.log(res)  
}).catch((err)=>{
	console.log(err)
})

- axios를 통해 데이터도 함께 보내기 axios.post(url,{data})~~~

axios.post(url,{
    A: 'dataA',
    B: 'dataB'
}).then((res) => {
	console.log(res)  
}).catch((err)=>{
	console.log(err)
})

 

methods: {}로 서버단으로 전송,

mounted(){}는 페이지 로딩과 동시에 실행될 수 있게 해줌.

data(){}를 통해 값을 화면으로 보여줄 수 있음.

<script>
import axios from 'axios'

export default {
	name: 'App',
	data(){
		return {
			name: ''
		}
	},
	methods: {
		test(){
			const url = '/api/test'
			axios.get(url).then((res) => {
				this.name = res.data.name
			}).catch((err) => {
				console.log(err)
			})
		}
	},
	mounted(){
		this.test()
	}
}
</script>

뷰단에 데이터 보이도록!

<template>
	<div>
		{{ name }}
	</div>
</template>

뷰단에서 입력한 값 서버단으로 보내기!

v-model을 이용하면 scripte단에서 this.____으로 입력값을 가져올 수 있다.

클릭이벤트 거는 방법. href="javascript:;" @click.prevent='메서드명'

<template>
	<div>
		<input type="text" v-model="name">
	</div>
	<div>
		<button href="javascript:;" @click.prevent="test">버튼클릭</button>
	</div>
</template>

<script>
import axios from 'axios'

export default {
	name: 'App',
	methods: {
		test(){
			axios.post('/api/test',{
				name: this.name
			}).then(res) => {
				console.log(res)
			}).catch((err) => {
				console.log(err)
			})
		}
	}
}
</script>

'Vue' 카테고리의 다른 글

Vue Router  (0) 2022.09.19
Vue 함수 구현 (computed / methods)  (0) 2022.09.06
Vue의 개념과 시작하기  (0) 2022.09.05

뷰 설치 및 필요 npm 설치

npm init
npm i
npm i -g npm@latest
npm i -g @vue/cli

npm i axios
npm run serve

 

vue.config.js에 연결 작업

프론트 : 8080 / 백 : 9000

devServer: {
    proxy: {
      "/api": {
         target: 'http://localhost:9000/',
         pathRewrite: {'^/': ''},
         changeOrigin: true

      }
    },
    port : 8080
  },

axios 사용법

<script>

export default {
    methods: {
      함수명(){
        axios.post('매핑주소',{
        	// 보낼 데이터
        }).then((res) => {
        	// 응답
          console.log(res)          
        }).catch((err)=>{
          console.log(err)
        })
      }
    }
  }
  
</script>

'웹개발 지식' 카테고리의 다른 글

문자 바이트  (0) 2023.03.22
AES-256 사용법 및 예제  (0) 2023.02.06
JOIN 및 쿼리 연산자  (0) 2023.01.30
포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02

INNER JOIN : 교집합. 두 테이블에 데이터가 모두 존재하는 경우 조회.

 

LEFT(RIGHT) OUTER JOIN : 기준 테이블의 모든 데이터 + 조인 데이터 참조. 조인 데이터가 없을 경우 NULL 값 처리.

 

FULL OUTER JOIN : 두 개 테이블 모두 조회. 조인 데이터 없을 경우 NULL값 처리.

 

JOIN시 ON / WHERE 차이

- ON : 조인 전 처리

- WHERE: 조인 후 처리


IN(100,200) : 둘 중 하나라도 포함. 100 OR 200

=> 값이 100인 데이터와 200인 데이터 출력

 

> ALL(100,200) : 모든 조건 만족. 100 > AND 200 >

=> 100보다 크고, 200보다 큰 데이터 출력

 

> ANY(100,200) / > SOME(100,200) : 둘 중 하나라도 조건 만족. 100 OR 200 (명칭만 다를 뿐 ANY와 SOME은 동일 기능)

=> 100보다 크거나 200보다 큰 데이터 출력

 

EXISTS (서브쿼리) : 조건의 TRUE/FALSE 체크, 서브쿼리를 만족하는 조건이 하나라도 있으면 더이상 탐색하지 않음.

중복데이터가 많으면 JOIN보다 빠를 수 있다!

=> 서브쿼리 만족하는 조건이 하나라도 있으면 TRUE, 하나도 없으면 FALSE

 

SQL1 UNION SQL2 : 각각의 데이터를 합친다. (중복 X)

SQL1 UNION ALL SQL2 : 각각의 데이터를 합친다. (중복 O)

 

IS NULL : NULL인 경우

IS NOT NULL : NULL이 아닌 경우

 

LIKE('A%') : A로 시작하는 경우

LIKE('%A') : A로 끝나는 경우

LIKE('%A%') : A가 포함되는 경우

 

LIKE('_A') : A로 끝나는 두 글자인 경우

 

NOT LIKE('A%') : A로 시작하지 않는 경우

NOT LIKE('%A') : A로 끝나지 않는 경우

NOT LIKE('%A%') : A가 포함되지 않는 경우

 

BETWEEN 100 AND 200 : 100 이상 200 이하의 값

NOT BETWEEN 100 AND 200 : 100이상 200이하에 포함되지 않는 값

 

BETWEEN 날짜 비교

BETWEEN TO_DATE('2000-01-01', 'YYYY-MM-DD') AND TO_DATE('2000-12-31', 'YYYY-MM-DD')

 

BETWEEN 문자 비교

BETWEEN 'A' AND 'C' : 첫 문자에 A,B,C가 포함된 값 조회. (아스키 코드값으로 비교)

 

TOP 4: 상위 4개 데이터 출력

TOP 50 PERCENT : 상위 50% 출력( 6개 데이터라면 상위 3개 출력)

 

LIMIT 3 : 3개 데이터만 출력 (= LIMIT 0,3)

LIMIT 2,2 : 세 번째 데이터부터 2개 데이터 출력(0부터 시작해서 0, 1, 2로 세 번째 데이터)

 

ROWNUM : 조회된 결과에 순서대로 순번을 붙여줌.

> ORACLE

SELECT ROWNUM FROM TB

> MYSQL

SELECT @rownum:=@rownum+1 FROM TB WHERE (@rownum:=0) = 0;

 

ROWNUM은 조회된 데이터 순서로 나오기 때문에 ORDER BY 시 순번이 뒤섞일 수 있다.

ROWNUM으로 ORDER BY 사용할 땐 서브쿼리에 ORDER BY 후 ROWNUM 사용하기!

 

ROW_NUMBER()와 다름.

ROW_NUMBER()는 OVER()함수 필수!

ORDER BY 사용 시, ROW_NUMBER()는 OVER(ORDER BY ~~) 사용하면 돼서 ROWNUM보다 더 편리할 수 있다.

 

 

 

 

'웹개발 지식' 카테고리의 다른 글

AES-256 사용법 및 예제  (0) 2023.02.06
백 / 프론트(vue) 연결  (0) 2023.02.03
포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02
SQL 컬럼 복사 방법  (0) 2022.10.20

1) POST / GET 설정

 

2-1) POST : Body에 raw(JSON)으로 데이터 입력 후 전달 { "" : "" }

2-2) GET : Params에 데이터 입력 후 전달.

 

3) 헤더값이 필요할 경우, Headers에 데이터 입력 후 전달.

 

=> 저장하기!

'웹개발 지식' 카테고리의 다른 글

백 / 프론트(vue) 연결  (0) 2023.02.03
JOIN 및 쿼리 연산자  (0) 2023.01.30
No Mybatis mapper was found in '' package  (0) 2023.01.02
SQL 컬럼 복사 방법  (0) 2022.10.20
HttpServletRequest | HttpServletResponse  (0) 2022.09.29

패키지에서 mapper를 인식하지 못함.

 

방법1) @MapperScan으로 패키지 잡아주기

방법2) @Mapper 빠졌는지 체크

방법3)  mapper 위치 확인하기.

 

'웹개발 지식' 카테고리의 다른 글

JOIN 및 쿼리 연산자  (0) 2023.01.30
포스트맨  (0) 2023.01.02
SQL 컬럼 복사 방법  (0) 2022.10.20
HttpServletRequest | HttpServletResponse  (0) 2022.09.29
Lombok (생성자 관련 어노테이션)  (0) 2022.09.28

[ 선택 정렬 ]

정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해가는 방식

앞에서부터 정렬됨

O(N^2)

 

[ 버블 정렬 ]

이웃한 데이터를 비교하여 가장 큰 데이터를 가장 뒤로 보내며 정렬하는 방식

뒤에서부터 정렬됨

O(N^2)

 

[ 삽입 정렬 ] 

자신의 앞 데이터들과 비교하며 삽입을 통해 정렬하는 방식

앞에서부터 정렬됨

최악 O(N^2)

 

[ 병합 정렬 ]

퀵 정렬과 같이 분할과 정복을 통해 두 개의 정렬된 배열을 합치며 더 커진 배열로 만드는 알고리즘.

좌우 두 개의 배열의 크기는 항상 동일하여 최악의 경우에도 O(NlogN)의 시간복잡도를 가진다.

두 개의 배열을 합쳐 새로운 배열을 만들기 위한 별도의 임시 기억 장치 필요.

수행 시간이 오래 걸려 주로 외부 정렬에 활용됨.

O(N*logN)

 

[ 퀵 정렬 ]

기준키를 기준으로 작거나 같은 값을 지닌 데이터는 기준키 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록하여 작은 값을 갖는 데이터와 큰 값을 갖는 데이터로 분리해가며 정렬하는 방식

평균 N*logN

최악 O(N^2)

 

** 참고 사이트

https://terms.naver.com/entry.naver?docId=2270444&cid=51173&categoryId=51173

 

[ 힙 정렬 ]

주어진 데이터들을 이진 트리로 구성하여 정렬하는 방식.

최댓값과 최솟값을 쉽게 추출할 수 있는 완전 이진트리의 자료구조 알고리즘.

내림차순 정렬 시 최대 힙 트리 구성, 오름차순 정렬 시 최소 힙 트리 구성.

주어진 데이터를 집산의 조건을 만족하는 완전 이진 트리로 구성한 다음, 그 루트 노드를 꺼내면 그것이 데이터 중 가장 큰 값을 가지는 것이 됨.

 

힙 생성 O(logN)

힙 정렬 O(N)

평균 O(N log N)

관계대수?

원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적인 언어.

SELECT : 릴레이션 R에서 조건을 만족하는 튜플 반환

PROJECT : 릴레이션 R에서 주어진 속성들의 값으로만 구성된 튜플 반환

JOIN : 공통 속성을 이용해 R과 S의 튜플들을 연결해 만들어진 튜플 반환

DIVISION : 릴레이션 S의 모든 튜플과 관련있는 R의 튜플 반환

 

 

관계해석?

관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때 계산 수식 사용.

원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지니며, 튜플 관계해석과 도메인 관계해석이 있음.

 

'정보처리기사' 카테고리의 다른 글

암호화 DES | AES  (0) 2022.10.05
8.3 배치 프로그램  (1) 2022.10.04
8.2 모듈  (0) 2022.10.04
8.1 형상 관리  (1) 2022.10.04
7.5 데이터 조작 프로시저 최적화  (1) 2022.09.30

 

모든 컬럼 복사

INSERT INTO A테이블
SELECT * FROM B테이블

 

지정 컬럼 복사

INSERT INTO A테이블 (컬럼명1, 컬럼명2..)
SELECT 컬럼명1, 컬럼명2.. FROM B테이블

 

 

'웹개발 지식' 카테고리의 다른 글

포스트맨  (0) 2023.01.02
No Mybatis mapper was found in '' package  (0) 2023.01.02
HttpServletRequest | HttpServletResponse  (0) 2022.09.29
Lombok (생성자 관련 어노테이션)  (0) 2022.09.28
생성자 패턴 | 빌더 패턴  (0) 2022.09.21

+ Recent posts