본문 바로가기

JAVA

(33)
싱글톤 패턴(Singleton Pattern)에 멤버 변수를 사용하면 안 되는 이유 싱글톤 패턴: 객체의 인스턴스가 오직 1개만 생성되는 패턴(ex. Spring Bean) 멤버 변수: 메소드나 생성자 내부에서 선언되는 지역변수와는 다르게 클래스 내부에서 선언되는 변수 한 사용자의 행동으로 인한 결과는 해당 사용자의 정보에만 누적이 되어야 한다. 회원가입을 하고, 로그인 후 사용자가 하는 행동으로 인해 쌓이는 데이터들은 해당 사용자에게만 누적되어야 한다. 하지만 싱글톤 패턴에 멤버 변수를 사용하게 되면, 여러 사용자가 동시에 접속할 때 특정한 사용자를 구분할 수 없게 되고 나의 정보가 다른 사람의 정보와 뒤바뀔 수 있다.
국비 수업 23일 차(22.11.03.) - 웹 크롤링(웹 스크래핑) ※ 웹 크롤링(실시간 데이터 수집) - 정식 명칭은 Web Scraping이며, 웹 사이트에서 원하는 정보를 추출하는 것을 의미한다. 웹 사이트는 HTML 기반이므로 정보를 추출할 페이지에서 개발자 모드를 실행한 후 원하는 태그를 검색하는 스킬이 요구된다. 웹 크롤링 라이브러리 1. Jsoup - 정적 데이터를 비교적 빠르게 수집할 수 있지만 브라우저가 아닌 HTTP Request를 사용하기 때문에 동적 데이터를 수집하기 위해서는 해당 서버의 인증키 요구 등 수집 할 수 없는 경우가 많다. 2. Selenium - Jsoup에 비해 느리지만 브라우저 드라이버를 사용하여 동적 데이터도 수집 가능하다. 예제) 멜론에서 원하는 음악 가사 찾기 import java.util.List; import java.ut..
국비 수업 18일 차(22.10.27.) - JDBC ※ JDBC(Java DataBase Connectivity) 자바에서 데이터베이스로 접속할 수 있도록 해주는 자바 API - JDBC JAR 파일 경로 C:\Program Files (x86)\MySQL\Connector J 8.0 JDBC에서는 크게 3가지의 클래스가 사용 된다. Connection은 다리 역할 PreparedStatement는 택배차 역할 ResultSet은 답장 역할을 한다. import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection { private static Connection conn; public static Connection..
국비 수업 14일 차(22. 10. 21.) - MVC 모델 ※ MVC 모델 - 소프트웨어 설계 시 사용되는 디자인 패턴이다. 단순히 만드는 방법이 아니라 "잘" 만들기 위한 것이다. M: Model 데이터와 대응 V: View 보여지는 화면 C: Controller 흐름, 처리 담당 MVC 1 View와 Controller가 함께 공존하는 형태 MVC 2 View와 Controller가 완벽히 분리된 형태 DTO(Data Transfer Object) / VO(Value Object) - 데이터 전송 객체 여러 데이터들을 포장해서 만든 데이터 포장용 객체 양쪽으로 전송되어 오고 가는 데이터들을 담은 객체 DAO(Data Accept Object) - 데이터 접근 객체 데이터들을 관리하는(CRUD) 여러 메소드들이 정의되어 있다. 데이터베이스 접근용 객체
국비 수업 13일 차(22. 10. 20.) - 파일 입출력 파일 경로 - 절대 경로: 드라이브 경로부터 전부 써주기 ex) D:\0900_GB_LDY\JAVA\test.txt - 상대 경로: 현재 위치를 기준으로 경로를 표현해주기 ./: 현재 경로(생략 가능) ex) ./test/txt → 현재 파일이 속한 폴더의 test.txt ../: 상위 폴더 ex) ../test.txt → 현재 위치의 상위폴더에 있는 test.txt 1. Writer(입력) FileWriter > BufferedWriter > 파일에 입력 FileWriter: 경로에 있는 파일을 가져오기(사용하기 위해서) * 파일이 없는 경우에는 그 이르대로 파일을 생성해준다. * 하지만 경로가 이상한 경우(폴더의 위치가 잘못된 폴더인 경우)에는 폴더를 생성해주지 않고, 예외를 발생시킨다. new Fi..
국비 수업 13일 차(22. 10. 20.) - Thread ※ 쓰레드(Thread) - 프로그램: 컴퓨터가 해야 할 행위들을 소스코드를 통해 만들어 낸 대본이다. - 프로세스: 실행된 프로그램을 말한다. 운영체제로부터 시스템 자원을 할당받는 작업의 단위이다. - 쓰레드: 프로세스의 특정한 수행 경로이며 프로세스의 처리 경호이다. 프로그램의 흐름을 의미하기도 한다. - 멀티 쓰레드: 하나의 프로세스를 동시에 처리하는 것처럼 보이지만 사실을 매우 짧은 단위로 분할해서 차례대로 처리한다. 여러 개의 처리 경로를 가질 수 있게 한다. 한 개의 처리 경로를 여러 개로 나누어 동시 작업이 가능해진다. 웹 서버 프로그램(JSP 등)이 대표적인 멀티 쓰레드 응용 프로그램이다. - 멀티 쓰레드의 장점 1. 효율성이 증가된다. 2. 처리량이 증가한다. 3. 처리 비용이 감소된다...
국비 수업 12일 차(22. 10. 19.) - HashMap, 빠른 for문 2022.10.19 - [JAVA] - 국비 수업 12일 차(22. 10. 19.) - ArrayList, HashSet 3. HashMap - Map 구조는 Key(키)와 Value(값)이 쌍으로 저장되는 형태이다. 그러므로 검색에 용이하다. Key는 중복이 불가능하며, Value는 가능하다. Key는 (중복이 불가능하기 때문에) Set 타입으로 저장되어 있고 Value는 Collection 타입이다. 우리가 알게 모르게 사용한 Map과 유사한 구조가 있다. data = 10; "data라는 이름으로 10이라는 값을 넣어 놓는다"라는 이런 변수의 선언도 Map과 유사한 구조이다. 그러므로 변수명을 동일하게 짓지 못한 것이다. Key와 Value가 이루는 한 쌍을 Entry라고 부른다. KEY VALUE..
국비 수업 12일 차(22. 10. 19.) - ArrayList, HashSet ※ 컬렉션 프레임워크(Collection Framework) - 많은 데이터들을 쉽고 효과적으로 관리할 수 있는 표준화된 방법을 제공하는 클래스 및 인터페이스들의 집합이다. 자료구조의 일종이다. Collection(interface) List(interface) Set(interface) 구현 클래스 ArrayList LinkedList Vector ... HashSet TreeSet ... 1. ArrayList - Array는 배열이라는 뜻이고 List는 나열된 원소들의 묶음이라는 뜻이다. ArrayList는 배열을 이용해서 원소들을 나열해 묶어 놓은 형태의 클래스이다. 컬렉션 클래스들 중 가장 많이 사용되는 클래스이다. 인덱스를 이용해서 내부 배열의 요소에 빠르게 접근이 가능하지만 크기를 변경시키기..