Yeonhee

[프로그래머스] Lv.2 전화번호 목록 - JAVA

🔗 https://school.programmers.co.kr/learn/courses/30/lessons/42577 1. 접근방식 / 설계 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 retu...

[프로그래머스] Lv.1 완주하지 못한 선수 - JAVA

🔗 https://school.programmers.co.kr/learn/courses/30/lessons/42576 1. 접근방식 / 설계 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완...

[프로그래머스] Lv.1 폰켓몬 - JAVA

🔗 https://school.programmers.co.kr/learn/courses/30/lessons/1845 1. 접근방식 / 설계 N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return. 최대로 가질 수 있는 폰켓몬 개수 max = N/2 설정....

[백준] 2446번 : 별 찍기 - 9 - JAVA

🔗 https://www.acmicpc.net/problem/2446 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 예제 1) 코드 package baekjoon; import java.util.Scanner;...

[Dart] Dart 기본

1. DartPad 🔗 https://dartpad.dev/ 2. 출력 void main() { print('Hello World'); } 3. 변수 타입 void main() { // var은 자동으로 대입하는 값의 타입으로 유추함 var name = 'yeonhee'; String name2 = 'YeonHee'...

[Java] null 과 isEmpty()의 차이

1.

[Web] Http 메소드

1. 주요 메서드 GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경) DELETE : 리소스 삭제 2. 기타 메서드 HEAD : GE...

[Node.js] Express를 이용한 웹서버 구축

1. 설치 및 초기세팅 1. 새 폴더를 만들고 터미널에서 cd C:\test-node 커맨드를 통해 이동해준다. 2. npm init 엔터키 눌러주면서 전부 기본값으로 설치 ⇒ package.json 파일 생성됨 3. 만든 폴더에 app.js 생성 const express = require('express'); const app = expres...

[JS/jQuery] 자바스크립트 기초 문제 정리

https://github.com/lydiahallie/javascript-questions/blob/master/ko-KR/README-ko_KR.md 1. 호이스팅(hoisting) 함수 안에 있는 선언들을 모두(초기화 제외) 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말함. 인터프리터가 변수와 함수의 메모리 공간을 선언 ...

[JS/jQuery] 메서드

1. keypress 이벤트 onkeydown(KeyCode) : 사용자가 키보드의 키를 눌렀을 때 onkeyup(KeyCode) : 사용자가 키보드의 키를 눌렀다가 뗐을 때 onkeypress(ASCII) : 사용자가 키보드의 키를 눌렀을 때 * onkeydown과 onkeypress의 차이 onKeyPress는 A...

[SpringBoot] #11 게시판 CRUD

[Spring Boot] #11 게시판 CRUD 1. 게시글 등록 페이지 구현 및 등록 기능 1) 컨트롤러 @GetMapping("/register") public void register() { log.info("register get..."); } @PostMapping("/register") public String registerPo...

[Java] Stream 메서드

1. IntStream 1) range() / rangeClosed() 차이 range() : 종료 값을 포함하지 않음. rangeClosed() : 종료값을 포함해서 반환. 예시 IntStream.range(0, 5).forEach(System.out::println); // 0~4 IntStream.rangeClosed(...

[SpringBoot] #10 서비스 계층과 DTO + 게시판 목록 구현

[Spring Boot] #10 서비스 계층과 DTO + 게시판 목록 구현 1. 서비스 계층과 DTO 1) DTO와 엔티티의 분리 JPA를 이용하게 되면 엔티티 객체는 단순히 데이터를 담는 객체가 아니라 실제 데이터베이스와 관련이 있고, 내부적으로 엔티티 매니저가 관리하는 객체임. => 일회성으로 데이터를 주고받는 용도로 사용되는 DTO...

[JS/jQuery] 기본 개념 정리

[JavaScript/jQuery] 기본 개념 정리 1. 프로토타입 기반 언어 JavaScript는 프로토타입 기반 언어(prototype-based language). 모든 객체들이 메소드와 속성들을 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미. => 프로토타입은 JavaScript ...

[SpringBoot] #9 Querydsl 설정 및 테스트코드

1. 프로젝트의 와이어프레임 프로젝트를 구성할 때는 가장 먼저 와이어프레임(화면 설계서)를 제작하고 진행하는 것이 좋음. 장점 화면의 URI와 전달하는 파라미터 등을 미리 결정할 수 있음. 데이터베이스 설계에 필요한 컬럼들을 미리 파악하는데 도움이 됨. 2. 프로젝트 생성 1) build.gradle 설정 1) MariaDB 관련...

[SpringBoot] 오류 정리

1. 프로젝트 생성시 build가 되지 않는 오류 A problem occurred configuring root project 'practice'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:...

[SpringBoot] #8 화면 구성을 위한 Thymeleaf 사용 - 2

1. Thymeleaf의 기본 객체와 LocalDateTime Thymeleaf에는 내부적으로 여러 종류의 기본 객체를 지원함. 1) sno를 5자리로 포맷해서 출력 <li th:each="dto : ${list}"> [[${#numbers.formatInteger(dto.sno,5)}]] </li> 2) Local...

[SpringBoot] #7 화면 구성을 위한 Thymeleaf 사용 - 1

1. Thymeleaf를 사용하는 프로젝트 생성 스프링 부트에서는 기본적으로 JSP 대신에 Thymeleaf나 FreeMarker, Mustache 등을 이용해서 화면을 처리함. 프로젝트 생성시 Thymeleaf 의존성 추가 Thymeleaf는 기본적으로 templates 폴더를 기본으로 사용함. Thymeleaf 코드 예시 ...

[프로그래머스] Lv.0 최빈값 구하기 - JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/120812 문제 풀이과정 매개변수로 주어진 array 배열에서 중복값을 제거한 배열 setArr 선언. setArr의 길이(=set의 크기)만큼 반복하면서 매개변수 array를 ArrayList로 변환한 list(Collection...

[Java] Stream의 개념 및 사용법

1. 스트림(Stream)이란? 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식(함수적-스타일(functional-style))으로 처리할 수 있도록 해주는 반복자. 2. 반복자 스트림 import java.util.Arrays; import java.util.Iterator; import java.util.List; import j...

[Java] 람다식(Lambda Expressions)의 개념 및 사용법

1. 람다식이란? 함수적 프로그래밍 : 병렬 처리와 이벤트 지향 프로그래밍에 적합함. => 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합함으로써 더욱 효율적인 프로그래밍이 될 수 있음. 람다식 : 익명 함수(anonymous function)를 생성하기 위한 식. 자바에서 람다식을 사용할 때의 장점 자바 코드가...

[Java] Iterator의 개념 및 사용법

1. Iterator란? 자바의 Collection에 저장되어 있는 요소들을 순회하는 인터페이스. 2. Iterator 사용법 1) 정의방법 Iterator<T> iterator = Collection.iterator(); 2) Iterator 메서드 종류 hasNext() : 다음 요소가 있는지 판단 next() : 다음 요...

[SpringBoot] #6 쿼리 메서드(Query Methods) 기능과 @Query

Spring Data JPA의 검색 조건 처리를 위한 3가지 방법 쿼리 메서드 : 메서드의 이름 자체가 쿼리의 구문으로 처리되는 기능. @Query : SQL과 유사하게 엔티티 클래스의 정보를 이용해서 쿼리를 작성하는 기능. Querydsl 등의 동적 쿼리 처리 기능. 1. 쿼리 메서드(Query Methods) 메서드의 이름...

[SpringBoot] #5 페이징과 정렬 처리

1. 페이징/정렬 처리하기 JPA가 실제 데이터베이스에서 사용하는 SQL의 처리를 자동으로 하기 때문에 개발자들은 SQL이 아닌 ‘API의 객체와 메서드를 사용하는 형태’로 페이징 처리를 할 수 있게 됨. Spring Data JPA에서 페이징 처리와 정렬은 findAll() 메서드를 사용함. * findAll() : ...

[SpringBoot] #4 CRUD 구현

[Spring Boot] #4 CRUD 구현 1. 테스트 코드를 통한 CRUD 연습 * JpaRepository의 CRUD 메서드 insert: save(엔티티 객체) select: findById(키 타입), getOne(키 타입) update: save(엔티티 객체) delete: deleteById(키 타...

[SpringBoot] #3 Spring Data JPA 실습 설정

설정 자동 import 기능 설정 File ⇒ Settings ⇒ Auto Import 검색 ⇒ 체크박스 선택 sysout 자동완성 => ‘sout’ 입력 후 ctrl+space Spring Data JPA가 개발에 필요한 것 JPA를 통해서 관리하게 되는 객체(엔티티객체)를 위한 엔티티 클래스. ...

[SpringBoot] #2 Maria 데이터베이스와 Spring Data JPA

1. Maria 데이터베이스 설정 Maria DB : 오픈 소스로 사용 가능, MySQL과 거의 동일한 기능 제공, 클라우드 환경에서도 오라클 데이터베이스에 비해 적은 비용으로 사용 가능하다는 장점 ‘mariadb.org’ 에서 다운 HeidiSQL 실행 ⇒ 암호 입력후 ‘열기’ ⇒ 우클릭-새로생성-데이터베이스 생성(bootex) ⇒ 사람 아...

[SpringBoot] #1 프로젝트를 위한 준비

스프링 레퍼런스 문서 Spring Boot API Spring Data API 1. 스프링 프로젝트 생성 스프링 프로젝트 생성해주는 사이트 https://start.spring.io/ 1에서 generate한 후 다운 받은 zip 폴더를 압축 풀음 ⇒ 해당 폴더의 build.gradle을 인텔리제이에서 열기(open as pro...

[Spring] 의존성 주입(Dependency Injection, DI)

1. 의존성 주입의 개념 및 필요성 1) 의존성 주입이란? Spring 프레임워크에서 지원하는 3가지 핵심 프로그래밍 모델 중 하나 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게...

[Java] Lombok이란?

1. Lombok 이란? Project Lombok은 자바 개발의 속도를 높이고, 편집기와 빌드 도구에 자동으로 연결되는 자바 라이브러리의 플러그인. 단 하나의 어노테이션으로 클래스는 완벽한 기능을 가진 빌더, 로깅 변수 자동화, 기타 등등의 기능을 사용할 수 있음. ⇒ 즉, getter, setter, equals 등의 메소드와 동등하게 ...

[백준] 1271번 : 엄청난 부자2 - JAVA

https://www.acmicpc.net/problem/1271 문제 갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다. 그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다. 프로토스 중앙 우주 정부의 정책인...

[Spring Security] #1 스프링 시큐리티 기본 개념과 동작 원리

용어 1. WAS(Web Application Server) : DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고도 불림. Container란 JSP, Servlet을 실행...

[Java] Collection 인터페이스와 구현클래스

1. Collection 상속 구조 2. Array(배열)와 List 1) Array index와 값의 쌍으로 구성되어 있음. index는 값에 대한 유일무이한 식별자(주민번호같은) *) 리스트에서 index는 몇 번째 데이터인가 정도의 의미를 가짐. 논리적 저장 순서와 물리적 저장 순서가 일치 ⇒ index로 해당 원소에 접근...

[Spring] 스프링 개념, 용어 정리 - 1

용어 1. J2EE (Java 2 Enterprise Edition) 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합 1. Servlet(서블릿) 1) 정의 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 서블릿이란 자바를 사용하여 웹을 만...

[백준] 10951번 : A+B - 4 - JAVA

https://www.acmicpc.net/problem/10951 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트...

[Spring Security] #2 스프링 시큐리티 프로젝트 적용하기

1. 로그인/로그아웃 1) security-context.xml <security:intercept-url> : 특정한 URI에 접근할 때 인터셉터를 이용해서 접근을 제한하는 설정 2) AccessDeniedHandler 구현 방식 특정한 uri 지정 사용자가 접근했던 uri 자체의 변화는 없음. ex) /admin...

[Spring] 스프링 프레임워크의 정의 및 특징

용어 의존성(Dependency) : 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미. context : 스프링이 사용하는 메모리 영역 1. 프레임워크 뼈대나 근간을 이루는 코드들의 묶음 프레임워크를 이용한다는 의미는 프로그램의 기본 흐름이나 구조를 정하고, 모든 팀원이 이 구조에 자신의 코드를 추가하는 ...

[YoungCultureCenter] security

security-context.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:securit...

[백준] 15552번 : 빠른 A+B - JAVA

https://www.acmicpc.net/problem/15552 문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 Buf...