전체 글

개발 공부하는 블로그
@Controller와 @RequestMapping 어노테이션 @Controller : 이 클래스는 컨트롤러임을 나타내는 어노테이션 @RequestMapping : 특정 요청이 발생했을 때 실행되는 메소드임을 나타내는 어노테이션 DemoController.class @Controller public class DemoController { @RequestMapping("home2") public String home() { return "home.html"; } @RequestMapping("profile") public String profile() { return "profile.html"; } @RequestMapping("blog") public String blog() { return "blog..
프로그래머스 배열 만들기 4 https://school.programmers.co.kr/learn/courses/30/lessons/181918 import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] arr) { List list = new ArrayList(); int i = 0; while (i < arr.length) { if (list.isEmpty()) list.add(arr[i++]); else if (list.get(list.size() - 1) < arr[i]) list.add(arr[i++]); else if (list.get(l..
인텔리제이에서 db 연결을 위해 sqlite-jdbc.jar 파일을 추가했는데 계속 db 연결이 안되고 no suitable driver found for jdbc 오류가 발생했다. 프로젝트를 잘못 만든게 문제인가 싶어서 스프링 프로젝트로 진행하고 있던걸 JavaFX 프로젝트로 다시 생성하고 코드 복붙한담에 File - Project Structure - Libraries에서 다운받은 jar 파일을 추가해주고 다시 실행해보았는데 또 같은 오류가 발생했다... (참고로 jar 파일 추가할 때 main 부분에 추가해주었다.) 근데 처음 추가했을 때 External Libraries 목록에 추가한 jar 파일이 보이지 않았다 근데 여러번 올렸다 내렸다 해서 성공했다는 사람들이 있어서 다시 같은 작업을 반복했더..
컬렉션 컬렉션 중에는 list가 가장 많이 사용된다고 한다. set은 자주 사용하진 않지만 중복값을 허용하지 않기 때문에 중복 제거 시 set으로 형변환을 하여 편리하게 사용할 수 있다. map은 key와 value의 쌍으로 구성된다. key는 set에 속하기 때문에 중복이 불가능하다. value는 중복이 가능하고 객체형을 받을 수 있다. list도 들어갈 수 있고 클래스도 들어갈 수 있음. JDBC란? 자바 응용 프로그램이 관계형 데이터베이스에 접속하기 위한 자바 표준 규격이다. JDBC 구조 - DriverManage : 드라이버 리스트를 저장하고 요청된 URL에 해당하는 드라이버를 애플리케이션에 제공. - Connection : 하나의 논리적 데이터베이스 트랜잭션을 나타내는 클래스 - Stateme..
프로그래머스 수열과 구간 2 https://school.programmers.co.kr/learn/courses/30/lessons/181923 public static int[] solution(int[] arr, int[][] queries) { int[] answer = new int[queries.length]; // s = queries[i][0], e = queries[i][1], k = queries[i][2]; // arr[queries[i][0] ~ arr[queries[i][1] for (int i = 0; i ar..
추상 클래스와 인터페이스의 공통점과 차이점 공통점 - 추상 메서드를 포함할 수 있다 - 상속을 통해 기능을 확장하고, 다형성을 지원한다. - 클래스 간 관련성을 나타내는 용도로 사용할 수 있다. 차이점 - 추상 클래스는 추상 메서드 외에 일반 메서드, 인스턴스 변수를 포함할 수 있지만 반면 인터페이스는 추상 메서드, 디폴트 메서드, 정적 메서드, 상수만 가질 수 있다. - 추상 클래스는 단일 상속만 가능하지만 인터페이스는 다중 상속이 가능하다. - 인터페이스는 구현에 초점을 두지만 추상 클래스는 상속받아 기능을 확장하는 것에 초점을 둔다. 추상 클래스는 공통 속성을 상속하는 것이고 인터페이스는 어떠한 기능을 포함하고 싶을 때 사용하는 것이라는 설명이 가장 이해가 잘되는듯 추상 클래스 = 상속 인터페이스 ..
BETWEEN 연산 between a and b는 --> a와 b 포함한 그 사이의 값. 비교연산자로 나타내면 a >= field and b
템플릿 메소드 패턴 템플릿 메소드 패턴이란?!?!?!?!? 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에 만든다. 슈퍼클래스에서는 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해두고 이를 활용해 코드의 기본 알고리즘을 담고 있는 템플릿 메소드를 만든다. 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 오버라이드할 수 있도록 만든 메소드를 훅(hook) 메소드라고 한다. 서브클래스에서는 추상 메소드를 구현하거나, 훅 메소드를 오버라이드하는 방법을 이용해 기능의 일부를 확장한다. public abstract class Super { public void te..
DAO (Data Access Object) DAO란 DB의 데이터에 접근하기 위한 객체로 DB에 쿼리를 실행하는 기능을 한다. 그래서 User 클래스를 만들고 dao 패키지에 User 객체가 데이터베이스에 접근할 수 있는 UserDao 클래스를 만듦. get(), add() 메소드 등 생성함. executeQuery executeQuery는 SQL 구문 실행 후 ResultSet이라는 객체를 반환한다. select 구문 실행 시 사용된다. PreparedStatement pstmt = conn.prepareStatement("select id, name, password from users where id = ?"); pstmt.setString(1, id); ResultSet rs = pstmt.ex..
DB 연동 public void check() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( dbHost, dbUser, dbPassword ); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("show databases"); while (rs.next()) { String line = rs.getString(1); System.out.println(line); } } Class.forName() 메소드로 jdbc 드라이버를 ..
yeooniyeoon
개공블