전체 글 148

[spring] 토비의스프링 정리

1장 오브젝트와 의존관계 1.1 초난감 DAO ㅇ 자바빈이라 함은 다음 두 가지 관례를 따라 만들어진 오브젝트를 가리킨다. 디폴트 생성자(자바빈은 파라미터가 없는 디폴트 생성자를 갖고 있어야 한다. 툴이나 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문이다.), 프로퍼티(자바빈이 노출하는 이름을 가진 속성을 프로퍼티라고 한다. 프로퍼티는 setter,getter를 이용해 수정, 조회할 수 있다.) 1.2 DAO의 분리 1.2.1 관심사의 분리 ㅇ 오브젝트에 대한 설계와 이를 구현한 코드는 변한다. 소프트웨어 개발에서 끝이라는 개념은 없다. 요구사항은 끊임없이 바뀌고 발전한다. 그래서 개발자가 설계할 때 가장 염두에 둬야 할 것은 미래의 변화를 어떻게 대비할 것인가이다. ㅇ 변화는 몇 시간 후에도..

[데이터베이스] 오라클 CASE WHEN 표현식

If 문 방식 SELECT ename , deptno , CASE WHEN deptno = '10' THEN 'New York' WHEN deptno = '20' THEN 'Dallas' ELSE 'Unknown' END AS loc_name FROM emp WHERE job = 'MANAGER' CASE 표현식에서 ELSE 부분은 생략이 가능하며, 만족하는 조건이 없으면 NULL을 리턴한다. CASE 표현식은 SELECT 절, WHERE 절, PL/SQL 등 많은 부분에서 사용이 가능하다. Switch 문 방식 SELECT ename , deptno , CASE deptno WHEN 10 THEN 'New York' WHEN 20 THEN 'Dallas' ELSE 'Unknown' END AS loc_..

[프로그래머스] 입양 시각 구하기(2)(SQL)

https://programmers.co.kr/learn/courses/30/lessons/59413 코딩테스트 연습 - 입양 시각 구하기(2) ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 programmers.co.kr 나의 답 : select a.hour, nvl(b.count, 0) --값이 없을 수 있어서 nvl사용 from ( select rnum hour from ( select (rownum-1) rnum from animal_outs --기존 테이블을 활용해서 0~..

[알고리즘] dp

다이나믹 프로그래밍의 조건 1. 최적 부분 구조(Optimal Substructure): 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복되는 부분 문제(Overlapping Subproblem): 동일한 작은 문제를 반복적으로 해결해야 한다. 점화식: 인접한 항들 사이의 관계식 만들기 피보나치 수열 탑다운 프로그래밍 d = [0]*100 #메모이제이션 하기 위한 리스트 초기화 def fibo(x): if x==1 or x==2: #종료조건 return 1 if d[x]!=0: #이미 계산한 적이 있다면 그대로 반환 return d[x] d[x]=fibo(x-1)+fibo(x-2) #아직 계산하지 않았다면 점화식에 따라서 결과 반환 return d[x..

[아파치] 아파치를 root대신 일반 계정으로 관리하기

Apache 일반계정으로 관리 (root 대신 apache 계정) 1. apache 계정생성 $ useradd apache -p apache -d /home/apache (-p로 그냥 넣으면 암호가 평문으로 들어가서 안 됨... useradd -p `openssl passwd apache` 이렇게 해야 한다나..) http://blog.daum.net/kst435/6 2. 일반계정으로 변경 $ cd /usr/local $ chown -R apache.apache apache 3. setUID 설정 --> 이렇게 안 해 주면 1024 이하 port 오픈 안 됨. (아파치 메인 프로세스를 root로... 그 외는 실 처리 프로세스는 apache로 뜨게 하는 설정임) $ cd /usr/local/apache/..

공부/리눅스 2022.06.14

[알고리즘] 이진탐색

순차탐색 : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인 이진탐색 : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색. 이진탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다. 재귀: def binary_search(array,target,start,end): if start>end: return None mid = (start+end)//2 if array[mid]==target: return mid elif array[mid]>target: return binary_search(array,target,start,mid-1) else: return binary_search(array,target,mid+1,end) n, target = li..

[알고리즘] 플로이드 워셜

각 단계마다 특정한 노드 k를 거쳐가는 경우를 확인한다. a에서 b로 가는 경로보다 a에서 k를 거쳐 b로 가는 경로가 더 빠른지를 검사한다. INF=int(1e9) #무한을 의미 n=int(input()) #노드의 개수 m=int(input()) #간선의 개수 graph=[[INF]*(n+1) for _ in range(n+1)] #2차원 리스트를 만들고 무한으로 초기화 for a in range(1,n+1): for b in range(1, n+1): if a==b: graph[a][b]=0 #자기자신으로 가는 비용 for _ in range(m): #간선 정보 입력받기 a,b,c = map(int,input().split()) graph[a][b]=c for k in range(1, n+1): fo..

[알고리즘] 다익스트라 최단거리 알고리즘

O(V^2). V=노드의 개수. V가 5000이하면 사용할만하다. 그 이상 되면 우선순위 큐 사용. import sys input = sys.stdin.readline INF = int(1e9) # INF = 1000000000 n, m = map(int, input().split) start = int(input()) graph = [ [] for i in range(n+1)] visited = [False]*(n+1) distance = [INF]*(n+1) for _ in range(m): a, b, c = map(int, input().split()) graph[a].append((b,c)) def get_smallest_node(): min_value = INF index = 0 for i in..

[알고리즘] DFS, BFS

DFS : 깊이 우선 탐색, stack자료구조 사용 BFS : 너비 우선 탐색, queue자료구조 사용 from collections import deque def dfs(graph, v, visited): visited[v] = True print(v, end=' ') for i in graph[v]: if not visited[i]: dfs(graph, i, visited) def bfs(graph, start, visited): queue = deque([start]) visited[start]=True while queue: v=queue.popleft() print(v, end=' ') for i in graph[v]: if not visited[i]: queue.append(i) visited..

[네트워크] SSL, HTTPS

SSL SSL은 Secure Socket Layer이라는 약자로 보안 소켓 레이어이다. Netscape에서 서버와 브라우저 간 보안을 위해 만든 프로토콜이다. 역할 HTTP 요청과 응답 데이터의 암호화가 이루어진다. 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장한다. 사용 시 이점 통신 내용이 공격자에게 노출되지 않는다. 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지를 판단할 수 있다. 통신 내용의 악의적 변경을 방지 할 수 있다. SSL 인증서 SSL 인증서는 클라이언트와 서버 간의 통신을 제 3자가 보증해주는 전자화 된 문서 CA (Certificate Authority) SSL 인증서는 제 3자가 보증해주는 문서이다. 여기에 해당 되는 제 3자들이 바로 Certificate A..

공부/네트워크 2022.05.12