본문 바로가기

전체 글

(99)
[MySQL] 시퀀스 생성하는 방법 # 시퀀스를 생성할 테이블 CREATE TABLE SEQUENCES( NAME VARCHAR(32), CURRVAL BIGINT UNSIGNED )ENGINE=InnoDB; # 시퀀스를 생성하는 프로시저 CREATE PROCEDURE CREATE_SEQUENCE(IN the_name text) MODIFIES SQL DATA DETERMINISTIC BEGIN DELETE FROM SEQUENCES WHERE name=the_name; INSERT INTO SEQUENCES VALUES (the_name, 0); END; # NEXTVAL 함수 생성 CREATE FUNCTION NEXTVAL(the_name VARCHAR(32)) RETURNS BIGINT UNSIGNED MODIFIES SQL DATA..
[Spring Boot] AJAX를 사용한 비동기 통신 AJAX란? AJAX란 비동기 자바스크립트와 XML (Asynchronous JavaScript And XML)을 말합니다. 간단히 말하면, 서버와 통신하기 위해 XMLHttpRequest 객체를 사용하는 것을 말합니다. JSON, XML, HTML 그리고 일반 텍스트 형식 등을 포함한 다양한 포맷을 주고 받을 수 있습니다. AJAX의 강력한 특징은 페이지 전체를 리프레쉬 하지 않고서도 수행 되는 "비동기성"입니다. 이러한 비동기성을 통해 사용자의 Event가 있으면 전체 페이지가 아닌 일부분만을 업데이트 할 수 있게 해줍니다. (-- MDN --) 비동기 통신을 위해 사용하는 것으로 지금은 다소 퇴보되었다고 항간에서 이야기 한다. 대안책으로 axios를 많이 사용하는 추세이다.. AJAX 사용을 위한 ..
[Spring Boot] DTO, DAO, Service, Controller DTO 개요 DTO는 Data Transfer Object의 약자로 계층간 데이터 교환을 위해 사용하는 객체이다. DTO 내부에는 로직이 존재하지 않으며, 생성자와 getter, setter만 존재해야 한다. DTO 예시 import lombok.Getter; @Getter public class MemberDto { private String id; private String pwd; private String name; private String email; private int auth; public MemberDto() { } public MemberDto(String id, String pwd, String name, String email, int auth) { this.id = id; thi..
[Spring Boot] MyBatis로 DB연결, 접근 권한 설정 관리 DatabaseConfig DB와 직접 소통하기 위해서는 DAO가 필요하다. DAO와 DB를 중개해주는 것으로 여기서는 MyBatis를 사용한다. 스프링 프레임워크에서는 application-context.xml을 통해 bean으로 데이터베이스 관련 속성을 관리해주었다. 그러나 스프링 부트에서는 Java 클래스 파일로 관리하며 다음과 같이 작성하여 사용한다. MySQL 사용 시 import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; im..
[Spring Boot] 프로젝트 구조 및 초기 설정 개발환경 : IntelliJ IDEA 운영체제 : macOS Monterey 12.x.x CPU : Apple Silicon (ARM 64) Spring Framework MVC MVC는 Model, View, Controller 구성으로 Model은 Service와 DAO(Data Access Object)로 구성되어 있다. DAO가 MyBatis를 통해 DB로 부터 데이터를 가져오며 Service를 거쳐 Controller로 View에 뿌려주는 형식을 갖는다. 스프링 프레임워크의 문제점 구조적으로 위 그림처럼 DB에서 끄집어낸 정보를 서비스, 컨트롤러를 거쳐서 뷰로 가져가기 때문에 setAttribute로 전달해줄 값을 받아서 jsp에서 getAttribute로 뿌려주는 과정을 거쳤다. 때문에 컨트롤..
BOJ5598 : 카이사르 암호 Java, Kotlin 문제 가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건너뛰어 적었다고 한다. 26개의 대문자 알파벳으로 이루어진 단어를 카이사르 암호 형식으로 3문자를 옮겨 겹치지 않게 나열하여 얻은 카이사르 단어가 있다. 이 카이사르 단어를 원래 단어로 돌려놓는 프로그램을 작성하시오. 각 문자별로 변환 전과 변환 후를 나타낸 건 아래와 같다. 변환전 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 변환후 D..
[자료구조] 해시 테이블(Hash Table) 해시 테이블(Hash Table / Hash Map) 🔍 개념 해시 테이블은 대량의 정보를 저장하고 특정한 요소를 효율적으로 검색할 수 있는 데이터 구조이다. 다소 복잡하다. 해시 테이블의 구조는 테이블 내에 내부적으로 더 작은 sub-group인 "버킷"에 key-value 구조의 쌍을 저장해둔다. 키를 저장할 때 메모리의 공간을 덜 차지할 수 있도록 해시 함수를 통해 키값을 해시라는 특정한 숫자 값으로 변환해준다. 해시 테이블은 메모리 확장이 필요한 경우에만 메모리 크기를 늘리고, 가능하면 최소 크기를 유지한다. 검색 시 key를 사용해서 원하는 value를 가져올 수 있다. 이는 두개의 값이 하나의 쌍이기 때문에 가능한 것이다. 검색된 key는 사전에 정의된 해시함수를 통해 해시값을 반환받고 해당 ..
[자료구조] 배열(Array)과 연결 리스트(Linked List) 📌 배열 🔍 배열(Array)이란? 배열은 CRUD를 할 때 가장 기본적으로 사용되는 자료구조이다. 생성할 때 크기가 결정되고 각 자리에 대해 인덱스 번호가 부여된다. 인덱스 번호를 통해 배열 내부에 있는 요소들에 접근할 수 있다. 위와 같이 배열의 주소를 나타내는 인덱스(index)와 요소(elements)로 구성되어 있다. 배열의 장점 배열은 필요에 따라 바로 생성하여 사용하기 용이하다. int[] numArr = { 1, 2, 3, 4, 5 };와 같이 배열은 바로 생성할 수 있다는게 최고 장점이다. 그리고 배열이 응용되어 스택이나 큐 같은것들이 존재한다고 볼 수 있기 때문에 배열은 어떤 자료구조의 기초가 될 수 있다. 또한 원하는 데이터에 대해 CRUD를 쉽게 처리할 수 있으며 정렬하기에 용이하다..