Back-End/JAVA 39

[Java] 웹 크롤링(실시간 데이터 수집, Web Crawling), 설치·실행하기

1) 웹 크롤링(실시간 데이터 수집, Web Scraping)이란? - 웹 사이트에서 원하는 정보를 추출하는 것을 의미한다. - 보통 웹 사이트는 HTML 기반이므로 정보를 추출할 페이지에서 개발자모드 실행 후, 원하는 태그를 검색하는 스킬이 요구된다. - 크롤링한 데이터를 소장, 활용하는 것은 불법이 아니지만 영리를 위한 목적 또는 배포시 문제가 될 수 있으니 이 경우에는 해당 사이트의 허락을 반드시 받아야한다. 2) 웹 크롤링 라이브러리 1. Jsoup 정적 데이터를 비교적 빠르게 수집할 수 있지만 브라우저가 아닌 HTTP Request를 사용하기 때문에 동적 데이터를 수집하기 위해서는 해당 서버의 인증키 요구 등 수집할 수 없는 경우가 많다. 2. Selenium Jsoup에 비해 느리지만 브라우저..

Back-End/JAVA 2021.06.21

[Java] MVC 모델

1) MVC 모델 소프트웨어 설계시 사용되는 디자인 패턴 만드는 방법이 아닌 "잘" 만들기 M : Model (데이터와 대응) V : View (보여지는 화면) C : Controller (흐름을 제어하는 역할) 2) MVC1 모델 View, Controller가 함께 공존하는 형태 3) MVC2 모델 View, Controller가 완벽하게 분리된 형태 4) DTO(Data Transfer Object), VO(Value Object), DAO(Data Access Object) 1. DTO, VO 양쪽으로 전송되어 오고가는 데이터들을 담은 객체 여러 데이터들을 포장해서 만든 데이터 포장 객체 2. DAO 데이터에 접근하기 위한 객체 데이터들을 관리하는 여러 메소드들이 정의되어있다. (CRUD : Cr..

Back-End/JAVA 2021.06.03

[Java] 파일 입출력

1) 파일입출력 1. writer(입력) FileWriter > BufferedWriter > 파일에 입력 FileWriter : 경로에 있는 파일 가져오기( 쓰기 위해서 ) * 파일이 없는 경우에는 그 이름대로 파일을 생성한다. * 하지만 경로가 이상한 경우에는 ( 폴더가 잘못된 폴더인 경우 ) 폴더를 생성해주지 않고 예외가 발생한다. new FileWriter("파일경로/파일명.확장자") : 덮어쓰기 모드 new FileWriter("파일경로/파일명.확장자",true) : 추가 모드 BufferedWriter : 버퍼를 이용해서 파일 작성 bw.write("문자열") : 버퍼에 문자열 쓰기 bw.close( ) : 파일에 적용 / 버퍼에 있는 데이터들을 실제 파일에 써주면서 버퍼 닫기 import j..

Back-End/JAVA 2021.06.02

[Java] Thread(쓰레드)

1. 프로그램 잘 짜여진 틀 2. 프로세스 실행된 프로그램 운영체제로부터 시스템 자원을 할당받는 작업의 단위 자바 프로그램은 운영체제 대신 JVM에 의해 자원을 할당받는다. 1) Thread(쓰레드) 1. (단일)쓰레드 프로세스의 특정한 수행 경로 프로그램의 처리 경로 프로그램의 흐름 2. 멀티 쓰레드 하나의 프로세스를 동시에 처리하는 것처럼 보이지만, 사실은 매우 짧은 단위로 분할해서 차례로 처리한다. 병렬적 구조 여러개의 처리경로를 가질 수 있다. 한개의 처리경로를 여러개로 나누어 동시 작업이 가능해진다. 웹 페이지(JSP)가 대표적인 멀티 쓰레드 응용 프로그램이다. 2) 쓰레드 장단점 1. 장점 효율성 증가 처리량 증가 처리비용 감소 2. 단점 복잡하고 구현과 설계가 어려움 하나의 쓰레드 문제 발생..

Back-End/JAVA 2021.06.01

[Java] 빠른 for문

1) 빠른 for문 (향상된 for문, forEach문) for( 자료형 변수명 : 컬렉션 ) { 변수로 컬렉션 내부의 요소를 하나씩 꺼내오면서 반복 } 단순하게 모든 요소들을 순회할 때 사용하는 것이 좋다. 순서가 중요한 경우에는(몇 번째에 어떤 값이 있는지 알 필요가 있는 경우) 기존의 for문을 이용한다. 2) 빠른 for문 예제 import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; public class ForEach { public static void main(Strin..

Back-End/JAVA 2021.06.01

[Java] HashMap

1) HashMap Map구조는 Key와 Value가 쌍으로 저장되는 형태이다. 2) Key / Value Key(중복불가능) Value(중복가능) fly 날다 walk 걷다 run 뛰다 Key와 Value가 한 쌍(Entry)으로 저장된다. 그러므로 검색에 용이하다. Key는 Set타입이고 Value는 Collection 타입이다. 키 ⇔ 해쉬테이블 ⇔ 값 import java.util.HashMap; public class HMapTest { public static void main(String[] args) { HashMap map1 = new HashMap(); // HashMap에 요소 추가하기 map1.put("fly", "날다"); map1.put("walk", "걷다"); map1.put..

Back-End/JAVA 2021.06.01

[Java] HashSet

1) HashSet Set은 집합이다. 저장된 값들은 인덱스가 없기 때문에 저장 순서가 고정되어 있지 않다. 값의 포함 여부, 유무 검사 목적이 있다. 집합은 중복되는 원소(요소, 값)를 포함할 수 없다. 중복을 없앨 때 사용하기도 한다. 2) HashSet에서 요소 가져오기 - iterator .iterator( ) - 순서가 없는 Set 타입의 요소에 순서를 부여해주는 기능을 담당한다. - 리턴 타입은 Iterator - 순서가 부여되었으면 값들을 .next( )를 통해 하나씩 가져올 수 있다. 3) HashSet 메소드 import java.util.HashSet; import java.util.Iterator; public class HSetTest { public static void main(..

Back-End/JAVA 2021.06.01

[Java] ArrayList

1) ArrayList 컬렉션 클래스 중 가장 많이 사용되는 클래스 배열을 이용해서 값을 저장한다. 인덱스를 이용하기 때문에 배열 요소에 빠르게 접근 가능하지만, 크기를 늘리기 위해서 새로운 배열을 생성하고 기존의 값들을 옮기는 작업을 한다. (내부적으로) 이러한 이유들 때문에 작업처리 속도가 느리다. 배열은 처음에 몇 칸을 할당할지 고정해야 하지만, ArrayList는 처음에는 0칸이며 값을 넣는 만큼 자동으로 늘어나는 가변배열이다. 2) ArrayList 메소드 import java.util.ArrayList; public class ArListTest { public static void main(String[] args) { ArrayList arMsg = new ArrayList(); // 0칸..

Back-End/JAVA 2021.06.01

[Java] Generic(제네릭)

1) Generic(제네릭) 클래스를 선언할 때 자료형을 정하지 않는 기법(사용할 때 지정=객체를 만들 때 지정) 키워드는 보통 대문자로 시작한다. E : Element N : Number T : Type K : Key V : Value 2) 제네릭 클래스 클래스 내부에서 사용될 자료형을 지정한다. class 클래스명{ //내부에서 키워드를 타입으로 사용 가능 키워드 변수; } 객체를 만들 때 키워드 대신에 사용될 자료형을 지정해준다. public class GClassTest { Web data; } public class GenericMain { public static void main(String[] args) { GClassTest obj = new GClassTest(); obj.data = ..

Back-End/JAVA 2021.05.31
반응형