반응형
반응형

 

WEB-INF와 META-INF 차이

 

WEB-INF

- Web Information의 약자입니다.

- WEB-INF폴더에는  브라우저에서 직접 접근할 수 없고 오직 서버내에서만 접근이 가능합니다.

 

META-INF

- Java에서 설정관련 파일을 저장하는 폴더입니다.

- Java 패키징 기술인 jar의 일부입니다.

- jar 파일들을 풀어보면 META-INF 폴더 아래 MANIFEST.MF 라는 파일이 있습니다.

반응형
반응형

반응형

Spring-docs + WebSecurityConfig

Spring-docs를 사용할려고 추가하고 나서 실행해보니 Failed to load remote configuration.이 발생했습니다.

 

해결

WebSecurityConfig에 WebSecurityCustomizer에서 설정을 해주면 됩니다.

@Bean
public WebSecurityCustomizer ignoringCustomizer() {
	return (web) -> web.ignoring().antMatchers("/swagger-ui/**", "/v3/api-docs/**");
}
반응형

'SpringBoot' 카테고리의 다른 글

스프링 표준 코딩 작성 방법  (0) 2023.07.05
[error]Sequence "MEMBER_SEQ" not found; SQL statement:  (0) 2023.06.04
반응형
반응형

Sequence "MEMBER_SEQ" not found; SQL statement:

 

문제

새로 생성한 함수가 잘 작동하는지 확인하기 위해 @Test를 실행해 봤는데  Sequence "MEMBER_SEQ" not found; SQL statement:

에러가 발생했습니다.

 

원인

명확한 이유는 잘모르겠습니다. vscode를 껏다가 다시 켜서 같은 환경에서 실행했던니 에러 없이 잘 진행되는걸로 보아 설정해둔 것이 실행되지 않아 발생했던거 같습니다.

 

원인 이유로 예상되는거는 아래와 같습니다.

1. Member entity 설정 에러

 

해결

vscode를 껏다가 다시 켠 후 entity를 확인해봅니다.

 

반응형

'SpringBoot' 카테고리의 다른 글

스프링 표준 코딩 작성 방법  (0) 2023.07.05
[error]Spring-docs + WebSecurityConfig  (0) 2023.06.11
반응형
반응형

Two Sum

https://leetcode.com/problems/two-sum/

 

Two Sum - LeetCode

Can you solve this real interview question? Two Sum - Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not

leetcode.com

 

코드

import time
import datetime

def twoSum(nums, target):
    start = time.time()
    # filter를 통해 뒤에 오는 숫자가 많으면 제거 후 index() 값을 구하는게 빨라질꺼 같아서 적용해보았지만 
    # 주어진 nums 배열에서는 속도 차이가 없었습니다.
    # nums = list(filter(lambda x: x < target, nums))

    for i, num in enumerate(nums):
        n = target - num
        if n in nums[i + 1:]:
            # 걸린 시간: 0:00:00.000013
            # return [i, nums.index(n)]
            # 위에 코드는 Example 3에서 [3, 3] 배열에서 2번째 인덱스 값이 틀리게 계산됩니다.
            # 이유는 값은 값이 있을 때 index() 함수는 가장 먼저 같은 값으로 있는 index를 return 해주기 때문입니다.

            # 걸린 시간: 0:00:00.000013
            # 시간복잡도:O(n^2)
            # nums.index(n)으로 구한 것과 시간 차이가 없읍니다.
            # nums의 i + 1 부터 검색하여 n 숫자의 index를 구하고 i만큼 빼고 index를 구했으니 다시 i의 값을 더해줍니다.
            # 그리고 나서 i가 0일 수 있으니 1을 더해줍니다.
            return [i, nums[i + 1:].index(n) + i + 1]

    end = time.time()
    sec = (end - start)
    sec = datetime.timedelta(seconds=sec)
    print(sec)

nums = [2,7,11,15] 
target = 9
# nums = [3, 3]
# target = 6
twoSum(nums, target)

 

결과

 

다른 분의 코드

def twoSum_dict(nums, target):
    start = time.time()

    dict = {}
    for i, num in enumerate(nums):
        dict[num] = i

    #타겟에서 첫번째 수를 뺀 결과를 키로 조회
    for i, num in enumerate(nums):
        if target - num in dict and dict[target - num] != i:
            # 걸린시간: 0:00:00.000001
            # 시간복잡도:O(1)
            # print([i, dict[target - num]])
            # return [i, dict[target - num]]

    end = time.time()
    sec = (end - start)
    sec = datetime.timedelta(seconds=sec)
    print(sec)

시간복잡도가 o(1)로 되면서 속도가 엄청 빨라집니다.

 

추가적으로 공부할 부분

- array.index(x) 리스트에서 x의 인덱스 반환
- array.index(x, start) 리스트[start:]에서 x의 인덱스 반환
- array.index(x, start, stop) 리스트[start:stop]에서 x의 인덱스 반환

 

반응형
반응형

파이썬 lambda 사용시

파이썬 lambda 사용할 때 격은 일에 대한 내용입니다.

 

 

 

1. map(lambda x: x> 1, nums)

nums 안에 있는 숫자 값을 조건에 따라 걸러 낼려고 했는데 map()을 사용하면 True, False로 return 하게 됩니다.

숫자로 받을려면 filter() 함수를 사용하면됩니다.

반응형

'Python' 카테고리의 다른 글

File 읽어서 객체에 담기  (0) 2024.09.04
print 하면 <map object at 0x10446d880> 나올 때  (0) 2023.06.01
[python] list 사용 방법  (0) 2023.05.29
zip()  (0) 2023.05.03
combinations()  (0) 2023.05.03
반응형
반응형

문제

vscode 환경에서 파이썬을 가지고 map에 있는 값을 읽을려고 print() 실행 했을 때 <map object at 0x10446d880>이라고 나왔다.

읽을 수 있게 바꿔야 합니다.

 

코드

def twoSum(nums, target):
	# arr map
    arr = map(lambda x: x < target, nums)

nums = [2,7,11,15]
target = 9
twoSum(nums, target)

 

해결

1. for문

for num in arr:
	print(num)

 

2. map을 list로 담기

arr = list(map(lambda x: x < target, nums))
print(arr)

 

 

반응형

'Python' 카테고리의 다른 글

File 읽어서 객체에 담기  (0) 2024.09.04
파이썬 lambda 사용시  (0) 2023.06.01
[python] list 사용 방법  (0) 2023.05.29
zip()  (0) 2023.05.03
combinations()  (0) 2023.05.03
반응형

Clustered vs NonClustered (index 개념)

Database에서 index의 구조는 크게 Clustered 와 NonClustered로 나눠집니다.

 

Clustered

Clustered index는 데이터가 테이블에 물리적으로 저장되는 순서를 정의합니다. 즉, Clustered index는 특정 컬럼을 기준으로 데이터들을 정렬시켜줍니다. 테이블 데이터는 오직 한 가지의 방법으로만 정렬되기 때문에 테이블 당 하나의 Clustered index가 존재합니다.

단점으로는 새로운 데이터를 삽입할 때는 많은 비용이 소모되는 담점이 존재합니다.

 

주로 사용될 때:

  • 테이블 데이터가 자주 업데이트 되지 않는 경우
  • 항상 정렬 된 방식으로 데이터를 반환해야하는 경우
  • 테이블은 정렬되어있기 때문에 ORDER BY 절을 활용해 모든 테이블 데이터를 스캔하지 않고 원하는 데이터를 조회할 경우
  • 읽기 작업이 월등히 많은 경우(Read 속도가 빠릅니다.)

 

NonClustered

NonClustered index는 군집화 되어있지 않은 index를 말합니다. 즉, 테이블에 저장된 순서에 따라 데이터를 정렬하지 않습니다. 또한 NonClustered index는 별도의 장소에 저장되어 사용됩니다. 그러므로 별도의 공간(약 10%)이 필요합니다.

 

주로 사용될 때:

  • where절이나 join 절과 같이 조건문을 활용하여 테이블을 필터링 하고자할 때
  • 데이터가 자주 업데이트 될 때
  • 특정 컬럼이 쿼리에서 자주사용 될 때
반응형

'DB' 카테고리의 다른 글

Procedure과 Function의 차이  (0) 2023.05.31
반응형
반응형

Procedure와 Function의 차이

  • Procedure는 로직을 기술하여 해당 업무 처리를 직접 하는 용도로 많이 사용되고, Function은 로직을 도와주는 목적으로 사용됩니다.
  • Procedure은 select, where문 등에서 사용이 불가능 하지만 Function은 사용 가능합니다.
  • Procedure은 클라이언트에서 값을 건네받아 서버에서 작업을 한 뒤 클라이언트에게 전달하지만, Function은 클라이언트에서 값을 건네 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업을 하고 반환합니다.

Procedure이란?

일련의 쿼리를 하나의 함수로 실행할 수 있는 쿼리의 집합입니다. 예를 들어 네이버에서 상품을 구매하기 위해서 로그인, 상품 선택, 상품 구매 등 여러 프로세스를 한 번의 procedure에 담아 실행 할 수 있습니다.

 

잠정

  1. 하나의 요청으로 여러 SQL문을 실행할 수 있습니다.
  2. 서버에서 실행되기 때문에 속도가 빠릅니다.
  3. 리턴값이 있을 수도, 없을 수도 있습니다.
  4. 여러개의 리턴값을 보낼 수 있습니다.

단점

  1. 재사용성이 좋지 않습니다.

코드

CREATE OR REPLACE PROCEDURE 프로시저 이름 ( 
	매개변수명1 [ IN || OUT || INOUT ] 데이터타입
	, 매개변수명2 [ IN || OUT || INOUT ] 데이터타입 ... 
) IS||AS 변수, 상수 등 선언 ( 선언부 ) 
BEGIN 실행 문장 ( 실행부 ) 
EXCEPTION 문장 //필수아님 
END ;

호출 방법

CALL 프로시저명(IN파라미터명, @OUT파라미터명)
EXECUTE 프로시저명(IN파라미터명, @OUT파라미터명)

 

Function이란?

각 프로세스를 수행하기 위해 필요한 기능들입니다.

Function은 리턴값이 필수입니다.

담점

  1. 클라이언트에서 실행되기 때문에 프로시저보다는 느리다

코드

CREATE OR REPLACE FUNCTION 함수 이름
     ( 매개변수명1 매개변수1타입,
       매개변수명2 매개변수2타입 ... )
  RETURN 데이터타입
  IS||AS
         변수, 상수 등 선언 ( 선언부 )
  BEGIN
         실행 문장 ( 실행부 )
         RETURN 반환값    //필수
         EXCEPTION 문장   //필수아님
  END ;

호출 방법

SELECT 함수명(IN 파라미터명) FROM DUAL;

 

참조

https://velog.io/@devjooj/Mysql-Function과-Procedure-차이

https://fomaios.tistory.com/entry/Oracle-함수Function와-프로시저Procedure-차이

반응형

'DB' 카테고리의 다른 글

Clustered vs NonClustered (index 개념)  (0) 2023.05.31

+ Recent posts