본문 바로가기

전체 글

spring 5주차 - section 6 웹 MVC웹 개발에서 사용하는 소프트웨어 디자인 패턴 (model, view, controller로 구성됨)model: 웹 어플리케이션의 데이터, 비즈니스 로직 처리view: UI를 구성controller: 사용자 입력을 처리하고, model과 view를 연결먼저 요청이 오게 되면 스프링 컨테이너에서 관련 컨트롤러를 찾고, 없으면 static 파일을 찾도록 동작을 진행한다. home.html// HomeController@Controllerpublic class HomeController { @GetMapping("/") public String home() { return "home"; }}controller 디렉토리에 HomeController 파일에서 Controller.. 더보기
spring 4주차 - section 5 스프링 빈과 의존 관계스프링 빈(Bean)은 컨테이너에 의해 관리되는 객체를 의미한다.어플리케이션이 돌아가는데 필요한 객체를 컨테이너에 등록을 하고 등록된 빈(Bean) 사이에 의존 관계를 설정해야한다.Spring bean으로 등록하기 위해서는 Annotation(@Repository, @Component, @Service, @Controller)와 같은 기능을 클래스 선언 이전에 붙임으로써 지정을 할 수 있다.  해당 그림에서는 스프링 컨테이너에 3개의 bean 객체(memberController, memberService, memberRepository)가 존재한다. memberRepository는 memberService에 그리고 memberController에 각각 의존되어 있는 것을 볼 수 있다.. 더보기
spring 2,3주차 - section 3,4 정적 컨텐츠웹 브라우저의 요청이 있을 때, 서버에서 파일을 그대로 웹 브라우저에게 전달하는 방식 Hello-static.html을 요청할 경우 내장 톰켓 서버를 거치고 스프링에 hello-static 과 관련한 컨트롤러가 없기 때문에 리소스에서 hello-static.html을 찾은 후 그대로 웹 브라우저에게 반환을 해줌// main/java/controller/Controller.javapublic class Controller { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "spring!!"); return "hello"; }}// main/resources/stat.. 더보기
자료구조 스터디 week 6 - 재귀 재귀함수 내부에서 자기 자신을 호출하는 함수, Recursion등차수열, 팩토리얼, 피보나치 수열 등 많은 알고리즘을 재귀적으로 표현할 수 있다// 등차수열public int seq(int n) { if (n == 1) return 1; else return seq(n - 1) + 3;}// 피보나치public int fib(int n) { if (n == 1 || n == 2) return 1; else return fib(n-1) + fib(n-2);}  하노이의 탑하노이의 탑도 재귀적으로 구현할 수 있다a, b, c 3개의 기둥이 있고, 이 3개의 원반을 기둥 b로 옮겨야 하는 작업을 재귀적으로 구현 하노이의 탑을 재귀적으로 표.. 더보기
자료구조 스터디 week5 - 큐 큐(Queue)입장을 위해 줄 서는 모습, 대기열과 같이 먼저 들어온 데이터가 먼저 나가는 방식으로 실행되는 자료구조따라서 선입선출(FIFO)의 특징을 가진다.- 후입선출(LIFO) 특징을 가지는 스택과는 대비되는 개념이다. 배열 자료형을 이용하며, 변수 front와 tail을 통해 큐에 있는 자료를 추가 혹은 삭제할 수 있다.물론 큐의 최대 크기를 예상할 수 있는 경우에는 배열이 가장 효율적이지만, 작업 과정에서 배열의 크기를 예상할 수 없는 경우 배열의 크기를 재할당 받아야하는 단점이 존재한다. 배열을 이용한 큐 구현ADT 큐에는 4개의 필드 queue[], numItems, front, tail이 있고, 5개의 함수가 있다.예) enque(x), dequeue(), front(), isEmpty().. 더보기
GDSC/GDG 오리엔테이션 - 환경 설정 GDSC 시작이번 GDSC 4기에 지원하였고, 나름 면접을 잘봤다는 평가를 받고 GDSC Back-end 파트에 합격하였다.사실 면접을 보고 나올때만 해도 긴장이 돼서 못봤다는 생각이 자꾸 들었었다. 기존에 백엔드와 관련된 프로젝트 경험이 없을 뿐더러, 웹 페이지를 만들어 본거라곤 php와 mysql로 게시판 CRUD를 한게 전부였다. 그것도 제대로 만들지 못해 취약점 투성이어서 어디 프로젝트라고 내놓지도 못하는 웹사이트다. 그래도 간단한 기술 질문같은 것은 답변 할 수 있었고, 운이 좋게 붙었다고 생각한다. 웹 개발 관련 다른 프레임워크를 다뤄보고 싶어서 지원한만큼 최대한 열심히 활동하려고 한다. OT이번 세션에서는 앞으로의 Backend 스터디 진행 방향과 8주간 만들어야할 프로젝트에 대해 설명을 들.. 더보기
NoSQL, NoSQL Injection 기초 NoSQL이란?No-relational DBMS(NoSQL, NRDBMS)는 영문 그대로 관계형 데이터베이스가 아닌 데이터베이스를 의미한다RDBMS는 테이블간의 관계를 이용하여 데이터를 저장하는 반면, NoSQL은 RDBMS와 달리 고정된 스키마 없이 유연한 방식으로 데이터를 정리할 수 있어, 간단한 작업에 매우 유용하다 대표적으로 MongoDB, Reddis, CouchDB가 있다 MongoDBMongoDB는 JSON(Javascript 객체 표기법) 형태로 자료를 저장하며 많은 데이터를 유연하고 쉽게 저장할 수 있는 NoSQL이다. MongoDB의 특징스키마를 따로 정의하지 않아 각 컬렉션(Collection)에 대한 정의가 필요없다JSON 형식으로 쿼리를 작성할 수 있다_id 필드가 Primary .. 더보기
자료구조 스터디 week4 - 스택 스택스택이란 맨 위의 원소만 접근 가능한 자료구조를 말한다.맨 위의 원소를 스택탑이라고 하며, 새로운 원소를 저장할 때는 스택 탑 바로 위에 원소를 저장하고, 원소를 삭제할 때는 무조건 탑에 있는 원소를 삭제한다. 스택의 삽입과 삭제의 예시는 다음과 같다. 스택에서 삽입할 때는 아래부터 쌓고 삭제할 때는 맨 위의 원소를 삭제하게 된다. 메모리 구조에서의 스택  프로그램은 위와 같은 가상 메모리에서 수행된다는 가정하에 컴파일러가 컴파일 하고 물리적인 메모리에는 수행시점에 대응된다.(프로그램이 독립적으로 물리 메모리 크기에 구애받지 않고 실행된다는 뜻) 정적 영역에는 컴파일 직후 상대의 위치를 정할 수 있는 모든 정보(수행 코드, 데이터)가 있고, 동적 영역에는 프로그램 수행 중 할당 받는 메모리(힙)와 다.. 더보기