[Python] 한 번에 여러 개 입력(input) 받기
·
Devlopment/Python
Python에서 입력 받는 형식에 대해서 알아봅시다.1차원, 2차원 리스트 입력도 같이 알아봅시다.  코드 예시# 값 두개를 입력 받아서 a와 b에 저장 (띄어쓰기 구분)a, b = input().split() # 문자열a, b = map(int, input().split()) # 정수형a, b = map(float, input().split()) # 실수형# 1차원 배열 정수형 리스트로 입력 받기list = list(map(int, input().split()))# 문자열 여러줄 입력받기list = [input() for _ in range(n)] # n에 3을 넣으면 3줄 입력 받기# 문자열 받아서 한글자씩 나누어 더하기s = input()for i in range(len(s)): sum += int..
[MyBatis] Invalid bound statement (not found)
·
ETC/Error
Invalid bound statement (not found) 해결 방법 1. Mapper 인터페이스와 XML 오타 확인 ID값이나 Mapper 인터페이스의 메서드명과 다른지 확인해보는 것이 좋다.혹은 인터페이스의 이름과 XML 파일에 선언된 이름이 달라서 생기는 경우도 있다. 2. mapper-locations 쿼리가 작성되어 있는 mapper XML이 위치한 경로를 application.properties에 정의하지 않거나또는 잘못 선언된 경우 발생한다. mapper가 있는 경로로 application.properties에 정확한 경로로 변경해주면 된다. mybatis.mapper-locations:classpath:mapper/*.xml 3. 동일한 이름이나 다른 패키지 경로 Mapper의 이름은..
[thymeleaf] 타임리프 설명 및 문법 정리
·
ETC/TIP
타임리프(thymeleaf) 타임리프(thymeleaf)란 스프링부트에서 공식적으로 지원하는 View 템플릿 엔진입니다. 타임리프의 목표는 템플릿을 만들 때 유지관리가 쉽도록 하는 것입니다.이를 위해 디자인 프로토타입으로 사용되는 템플릿에 영향을 미치지 않는 방식인 Natural Templates 기반으로 합니다. Natural Templates은 기존 HTML 코드와 구조를 변경하지 않고 덧붙이는 방식입니다. 타임리프 장점 - 코드를 변경하지 않기 때문에 서버팀과 퍼블팀 간의 협업이 편해집니다.- JSP와 달리 Servlet Code로 변환되지 않기 때문에 비즈니스 로직과 분리되어 오로지 View에 집중할 수 있습니다.- 서버상에서 동작하지 않아도 되기 때문에 서버 동작 없이 화면을 확인할 수 있습니다..
[Java] DTO, VO, DAO 차이점
·
Devlopment/Java
DAO (Data Access Object) 데이터베이스와 상호작용을 담당하는 객체를 말합니다.데이터베이스에 접근하기 위한 로직을 분리하기 위해 사용합니다.직접 데이터베이스에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행합니다. DAO 예시 코드 public class UserDAO { public void createUser(User user) { // 데이터베이스에 유저 정보를 저장 } public User getUserById(int userId) { // 데이터베이스에서 유저 정보 조회 } public void updateUser(User user) { // 데이터베이스에서 유저 정보 업데이트 } p..
[자료구조] 스택 vs 큐
·
CS/자료구조 & 알고리즘
스택(Stack) 입력과 출력이 방향이 한 곳으로 제한이 되며, 후입선출(LIFO, Last In First Out) 원칙을 가지고 있습니다. 스택의 사용 예시 1. 웹 브라우저 방문기록(뒤로 가기) : 가장 나중에 열린 페이지부터 다시 보여주는 형식으로 스택 구현 2. 역순 문자열 만들기 : 가장 나중에 실행된 것부터 실행을 취소한다 3. 후위 표기법 계산 4. 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)  스택(Stack) 코드 예시 데이터 넣을 때는 push()데이터 최상위 값을 뺄 때는 pop()비어있는 지 확인하고자 한다면 isEmpty()꽉차있는 지 확인하고자 한다면 isFull()  push와 pop할 때는 해당 위치를 알고 있어야 하므로 기억하고 있는 '스택 포인터(SP)'..