본문 바로가기

개발

(25)
[자.알.인] CH19. 비트 조작 1. 비트 조작 비트(bit)는 Binary Digit을 줄인 말로 데이터를 나타내는 최소 단위입니다. 0과 1 두 개의 값만을 가질 수 있습니다. 8bit가 모여 1Byte가 되며 이 후 단위들은 킬로, 메가, 기가 등 컴퓨터 저장 용량이나 RAM 용량 등에서 보던 익숙한 단위가 보이게 됩니다. 2. 부울 연산자 가장 기본적인 부울 연산(Boolean Operation)에 대해서 설명드리겠습니다. AND OR NOT NAND NOR XOR XNOR 등 으로 소개가 되어있습니다. 저 중에 0과 1의 숫자로 이용하는 '비트 연산자'에서 일부 사용이 가능합니다. 3. 비트 연산자 위의 부울 연산자에서 사용되는 것은 4가지의 연산이 있습니다. AND(&) 두 자릿수 중 하나라도 0이 있으면 0, 없으면 1로 ..
[자.알.인] CH16. 트라이 1. 트라이(Tire)란? 트라이(Trie)는 검색 트리의 일종으로 일반적으로 키가 문자열인, 동적 배열 또는 연관 배열을 저장하는데 사용되는 정렬된 트리 자료구조입니다. 특히 실무에 매우 유용하게 쓰이는 자료구조로서, 자연어 처리(NLP) 분야에서 문자열 탐색을 위한 자료구조로 널리 쓰입니다. 래딕스 트리(radix tree) / 접두사 트리(prefix tree) / 탐색 트리(retrieval tree)라고도 불린다. 여기서 트라이는 retrieval tree의 'trie'를 따온 단어입니다. 해당 자료구조는 예를 들어서 'Datastructure'라는 단어를 검색하기 위해서 제일 먼저 'D'를 찾고, 다음 단어 순서로 찾는 방식입니다. 2. 트라이 구현(Java) 자.알.인의 문제 62번 '트라이..
[자.알.인] CH08. 연결 리스트 1. 연결 리스트(Linked List)란? 배열과 함께 가장 기본이 되는 대표적인 선형 자료구조 중 하나로, 다양한 추상 자료형 구현의 기반이 된다. 순서대로 저장하는 배열과 다르게 데이터의 순서가 메모리에 물리적인 순서대로 저장되지는 않는다. 어떤 데이터 덩어리(이하 노드(Node))를 저장할 때 그 다음 순서의 자료가 있는 위치를 데이터에 포함시키는 방식으로 자료를 저장한다. 연결 구조를 통해 물리 메모리를 연속적으로 사용하지 않아도 되기 때문에 관리도 쉽다. 특정 인덱스에 접근하려고 할 때 전체를 순서대로 읽어야 하기 때문에 시간 복잡도는 O(n) 이다. 반면, 시작/끝 지점에 엘리멘트를 추가, 삭제, 추출하는 작업의 시간 복잡도는 O(1) 이다. 2. 자.알.인에서의 연결 리스트 문제 위의 설명..
[스프링부트 게시판] 17. Spring Security 이번 게시글에서는 로그인 기능을 스프링 시큐리티 라이브러리를 사용하여 수정하도록 하겠습니다. 상세한 내용은 공식 홈페이지 Docs와 아래 블로그 링크를 참고하시면 됩니다. Spring Security :: Spring Security If you are ready to start securing an application see the Getting Started sections for servlet and reactive. These sections will walk you through creating your first Spring Security applications. If you want to understand how Spring Security works, you can docs.sprin..
[스프링부트 게시판] 16. 로그인 기능 구현 이번 게시글에서는 로그인 기능 구현에 대해 설명드리겠습니다. 이전에 만들었던 loginForm.html 을 사용하도록 하겠습니다. [loginForm.html] Username: Password: Remember me Login joinForm.html처럼 form의 action 속성을 지우고 button의 type 속성을 button으로 변경, id 속성으로 'loginBtn'을 추가합니다. 이전 join.js처럼 이번엔 login.js를 생성하도록 하겠습니다. login.js를 불러오기 위해 UserController에서 addScript에 login을 집어넣어 작동하는지 확인합니다. 정상적으로 login.js를 불러오는 것을 확인할 수 있습니다. [login.js] window.addEventLis..
[스프링부트 게시판] 15. 회원가입 기능 구현 이번 게시글에서는 회원가입 페이지를 이용한 회원가입 기능 구현에 대해 설명 드리고자 합니다. 그 전에 먼저 전에 13. 페이지 공통 부분 분리에 대해서 몇 가지 수정을 설명하고 이어 말씀하도록 하겠습니다. 이전에 페이지 공통 부분으로 Header와 Footer를 공통으로 잡아 해결했지만 Header와 Footer에 대한 공통 부분은 계속 반복적으로 코드를 작성하기 때문에 순수하게 안에 내용만을 바꾸고 싶은 레이아웃을 만들고 싶었습니다. [계속 반복해야하는 코드] html 태그에 xmlns:layout 에 대한 URL을 작성합니다. 여기에서 공통부분을 제외한 다른 부분을 바꾸는 것을 th:block 태그를 이용하여 만듭니다. 여기서 공통 CSS나 JS로 이용한 것을 모아서 할 수 있으며 다르게 제작하는 부..
[스프링부트 게시판] 14. 로그인, 회원가입 화면 만들기 이번 게시글에서는 로그인과 회원가입을 위한 화면을 구현하도록 하겠습니다. 이전에 사용하던 UserController를 이와 같이 변경시킵니다. [UserController] @Controller public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/user/joinForm") public String join() { return "user/joinForm"; } @GetMapping("/user/loginForm") public String login() { return "user/loginForm"; } } @Controller 어노테이션으로 변경 후 웹 페이지를 불러 올 @GetMappi..
[스프링부트 게시판] 13. 페이지 공통 부분 분리 이번 게시글에서는 모든 페이지에서 사용할 페이지의 공통 부분을 분리하도록 하겠습니다. 먼저 Header와 Footer에 해당하는 화면을 분리하고자 합니다. 여기에서 Header는 태그로, Footer는 Footer라 작성이 된 부분으로 사용할 것입니다. [Header] 메인페이지 로그인 회원가입 [Footer] Footer 2개의 공통 부분을 따로 만들어보도록 하겠습니다. 우선 사전 작업으로 태그에 작업해야 할 것이 있습니다. [main.html] ... 제가 사용하는 Thymeleaf에서 th 태그와 layout 태그를 사용합니다. 이를 사용하기 위해 xmlns:th="http://www.thymeleaf.org"와 xmlns:layout="http://www.ultraq.net.nz/thymeleaf..