본문 바로가기

CLASS/JAVA48

#20-3 / collector interface, Comparable ⚡ CollectorCollector : generic을 사용하는 유일한 interface ❗ 기본제공 라이브러리 어렵당... 몰라두댐.. 나중에혹시 쓰게된다면..참고... 추후에 공부..stringbuilder가 뭐였더라...    https://dev-eunse.tistory.com/75Stream 사용하면 lamda방식이구나 하면됨public class interface_etc { public static void main(String[] args) { String data[] = {"aaa","bbb","ccc"}; //원시배열 Stream st = Stream.of(data); //원시배열을 바로 핸들링하기 위해 stream선언함 //Stream : lamda 형태 구조로 구성하기 위해 .. 2024. 6. 11.
#20-2 / generic code 형태의 class generic code 형태의 class : T 파라미터 값을 이용한 자료형 classjava11번대 이상에서 사용( 8번대는 사용 불가 )알아두면 좋다!~ ⚡ T : typeT : type의 약어, 사실 아무거나 써도 되지만 통상적으로 T 사용public class generic { public static void main(String[] args) { gen g = new gen(); //무조건 문자로 던지라는 class g.test("test"); //test 출력 gen g2 = new gen(); //무조건 숫자로 던지라는 class g2.test(100); //100 출력 }}class gen { //자료구조를 자유자재로 사용 가능 T result; public void tes.. 2024. 6. 11.
#20-1 / 람다(lamda)코드 사용 방식 단점 : 버전 별로 달라질 수 있다java11번 기준 수업   =>  ∴ 8번대에서는 안먹힐 수 있다 ✅ lamda 방식 ( =삼항연산)java8번대부터 시작 / java11에서 가장 활발사용이유 : method를 단순화(익명)하는 작업javascript는 ES5부터 해당 방식 도입  ✅ lamda방식의 형태 - 2가지 방식화살표 방식 : ->?또는 :을 활용하는 방식 ⚡ 화살표 method단점 : 디테일하게 쓰지는 못하는..package java_test_t;//람다코드 사용방식public class lamda { static void ex(abc z) { //memory 상주 void method z.run(); } static abc test() { //interface를 이용한 return m.. 2024. 6. 11.
#19 / Thread (class 형태 , interface 형태) ⚡ Thread (class 형태 , interface 형태)public class thread1 {//Thread (class 형태 , interface 형태) public static void main(String[] args) { //-- class 형태 Thread 호출// int w = 0;// while( w 2024. 5. 31.
#18-2 / Thread를 이용한 멀티 서버 ⚡ TCP 멀티서버public class multi_server { public static void main(String[] args) { new server_port(); }}//멀티 포트 설정class server_port { /* -싱글포트로 한다면? int port = 9001; server_open so = new server_open(port); //배열의 포트번호 so.start(); */ /*멀티포트*/ public server_port() { int port[] = {9001,9002,9003}; //원시배열 사용 - 해당 포트를 다 열어버리겠다 int w=0; while(w ⚡ Thread를 이용한 clientpublic class.. 2024. 5. 27.
#18-1 / 서버 - UDP UDP : 내부 포트 UDP와 TCP는 따로 놈❗ 서버 관련 변수는 모두 private 으로 선언 하는게 좋음 : 중간에 채갈 수 있음 ex) UDP Server(UDP 5000) Client(UDP 5000) -> 그다음 접속자는 UDP 5001, UDP 5002.... (가상포트)만약 client가 UDP 5000번을 이미 사용하고 있는경우 접속이 되지 않음- 포트 하나개로 여러개를 사용 할 수있음- 한개의 포트를 열어서 여러개의 가상포트와 통신을 할 수 있는 구조- 보안상 연결을 체크 할 수 있음- 자신의 포트가 열려있는지 아닌지를 체크해서 서버로 넘겨야함(보안 good)- 가상포트는 자동생성- 역추적 가능- packet 필요 TCP ( https://dev-eunse.tistory.com/94 .. 2024. 5. 27.
#17 / remind3 ⚡ abstract/* [응용문제 1] 추상클래스 응용 - ex_ab.java 해당 프로세서를 실행시 현재 날짜와 시간이 출력되는 코드를 작성하시오. 단, 해당 날짜와 시간은 abstract에서 return 받아서 출력되도록 합니다. 결과 : 2024-05-24 09:45:22 */public class exam20 { public static void main(String[] args) { new ex20_box(); }}class ex20_box extends ex_ab{ public ex20_box() { System.out.println(this.ex20_abs("yyyy-MM-dd hh:mm:ss")); System.out.println(this.ex20_abs("yyyy-MM-dd"));.. 2024. 5. 24.
#16-2 / 서버 - TCP 해당 기능 제작시 무조건 서버 먼저 제작 -> 클라이언트 제작해야함 1. s : 내 서버 구축(port번호 정해서 socket open -> cmd로 열렸나 확인)2. c :  client에서 접근 : Socket sk = new Socket(ip,port);3. c : OutputStream os = sk.getOutputStream : 클라이언트 -> 서버로 전송하는 역할 4. s : InputStream is = sk.getInputStream : 클라이언트에서 적용된 메세지를 받는 역할   ⚡ 네트워크 url 정보 현황해당 페이지 크롤링 되어서 html파일 생성public static void main(String[] args) { String url = "https://nain.co.. 2024. 5. 23.
#16-1 / network 🔥 [ 알아야함 ]ip or 도메인주소Port 정보 포트 중복사용 불가 - 단, TCP와 UDP가 구분될 경우 가능(cmd로 열려있는지 닫혀있는지 확인 netstat -an)TCP : 외부 연결 프로토콜 (전송속도 빠름)UDP : 내부 연결 프로토콜 (전송속도 느리나 1:1일 경우 TCP보다 빠름)[ network ]예외처리 필수Inet4Address,Inet6Address : ipv4,ipv6 ( InetAddress : 부모 , 무조건 엄마먼저 써야함) -> new 안씀⚡ ip 확인//getByName : 접속할 도메인 또는 ip 주소명 출력 InetAddress ia = Inet4Address.getByName("localhost");System.out.println(ia); //localhost/12.. 2024. 5. 23.
#15-3 / csv 데이터 저장 ❗ csv 파일은 UTF-8 언어셋을 사용하지 않음 : EUC-KR로 변환 필요   txt 파일 문서파일 외에 한글 깨짐이 발생할 경우 FileWriter(파일경로,언어셋,이어쓰기여부)❗ csv 특성  : , 로 구분함 ⚡ csv 데이터 추가//csv 데이터 저장public class file20 { public static void main(String[] args) { new file_csv("member.csv"); //,쉼표 형태 csv여야 함 }}//writer로 csv파일에 사용자 추가class file_csv{ String file_src = ""; //파일 위치 및 파일명 File f = null; FileWriter fw = null; BufferedWriter bw = null; p.. 2024. 5. 22.
#15-2 / StreamWriter,StreamReader Stream의 기본은 byte , Reader의 기본은 stringread를 사용하면 buffered에는 1개 loss데이터 발생⚡ InputStreamReader  InputStreamReader : Stream + Reader,변환 가능한 라이브러리public static void main(String[] args) { try { //InputStreamReader : Stream + Reader,변환 가능한 라이브러리 System.out.println("입력값 : "); InputStreamReader isr = new InputStreamReader(System.in); //int data = isr.read();//read를 사용하면 buf.. 2024. 5. 22.
#15-1 / 이미지(binary) * 이미지(binary) - stream으로만 가능 * stream 사용시 유의사항  1. byte[] 변환 필요 2. InputStream 사용시 read 필수   3. write를 이용할 경우 flush 사용하면 에러가 적다 : 한번 초기화해줌⚡ 이미지 복사-반복문 없이 처리public static void main(String[] args) { try { String img = "D:\\webpage\\agree\\src\\main\\java\\io\\img.jpg"; //원본이미지 FileInputStream fs = new FileInputStream(img); //파일을 로드 byte[] by = new byte[fs.available()]; //이미.. 2024. 5. 22.
#14-3 / Stream 활용법 Reader ,Writer,File -> ASCII 전용 Stream -> 바이너리(이미지 , 동영상, 오디오, pdf,zip 등..) Stream은 byte단위로 변환 후 집어넣어야 함! byte[] data = ag.getBytes();  InputStream(입력) 부모 - 하위: FileInputStream , AudioInputStream, ObjectInputStream..등 자식 OutputStream(출력) 부모 - 하위: FileOutputStream..등 자식 ⚡ FileInputStream FileInputStream : io - buffer 필수대상 파일을 로드 한 후 해당 내용을 byte로 변환하여 결과 출력 (입력 X) - 걍 출력만 함available() : 파일 용량 (byt.. 2024. 5. 21.
#14-2 / nio ⚡ Files(nio 형태) 이용한 파일 내용을 배열에 저장 File : io  / Files : nio(Buffer 장착)   => (https://dev-eunse.tistory.com/3) 참고io,nio 둘중 하나만 사용 ! - 알아서 선택Files : new 작성할필요 x - 어차피 메모리에 저장되기때문에- nio 방식 public static void main(String[] args) { String url = "D:\\webpage\\agree\\src\\main\\java\\io\\agree.txt"; try { //List interface 구성 형태로 nio 배열 저장 List data = new ArrayList(); //List로만 사용 가능 .. 2024. 5. 21.
#14-1 / FileReader => Buffer Buffer : 메모리를 활용하여 데이터를 출력 또는 입력(temp : 임시저장소)buffer는 기억하는애FileReader fr = new FileReader(url);System.out.println((char)fr.read());//파일을 읽을때 해당 방식은 텍스트 파일의 한글자만 출력됨..▶  이걸 개선한게 Buffer ⚡ BufferFileReader fr = new FileReader(url);BufferedReaderbr = new BufferedReader(fr); ( 이걸 맞춰주면 에러날일 X  , buffer가 먼저 나올 순 없음)👀주의- reader(or write) 선언 후 buffer 선언- Buffer는 임시 저장된 공간의 데이터이므로 read 또는 readLine() 사용시 .. 2024. 5. 21.
#13-4 / I/O 🔥 👀 선생님 전체 정리 내용https://dev-eunse.tistory.com/99 👀 내가 해본 전체 정리 내용https://dev-eunse.tistory.com/92 I/O : input/output input - 키보드,마우스,Hdd,File ..등output - 모니터,프린터.. 등 java.io > java.nio 👀I/O는 무조건 예외처리를 사용해야한다  - 넣지 않으면 작동불능!load할 파일명과 경로가 올바른 상황이면 try/그 반대 상황은 catch 🔽 파일 첨부 기능 제작시 주로 사용public static void main(String[] args) { try {//io는 예외처리 필수 //해당 로드할 파일 properties -> 경로 입력 //서버에 올라가있으.. 2024. 5. 20.
#13-3 / Map클래스배열(Key배열) ArrayList,LinkedList는 key배열 아님Map => key : 데이터값, valueMap-가장 큰단위 , 그 안에 자식 Hashmap,Hashtable,TreeMap (List와 같다고 생각하면 됨)Interface임 ( ArrayList,LinkedList  얘네는 class) - List처럼 엄마만 Interface,하위는 class 👀{product=모니터} 이런 형식으로 출력됨int사용 불가 - Integer사용 (List와 동일)중복된 key 사용 불가 Hashmap -> ArrayList -> LinkdedList 로 변환해서 프론트에게 전달! (실무에선 이렇게 사용함) 👀Hashtable : 데이터 병렬처리 및 ThreadHashMap : 단일 처리 및 Single Thre.. 2024. 5. 20.
#13-2 / Thread ✅ 웹개발자는 스레드 다룰 일이 크게 없다-> web 개발자가 유일하게 스레드를 활용 하는 경우 : API Server    Javascript에서 멀티 스레드(많이 써봣자 4개) : web worker을 쓰게 되면 멀티 스레드를 사용하게됨⚡ 단일스레드(기존 알던방식)단일스레드 : 순차적으로 실행되기 때문에 위에서 에러나면 아래도 실행안됨public static void main(String[] args) { th1_box th = new th1_box(); th.aaa(); th.bbb(); //대기 int w=0; do { th1_box thb = new th1_box(); thb.ccc(w); //애두 단일스레드 w++; }wh.. 2024. 5. 20.
#13-1 / String, StringBuilder, StringBuffer ⚡  new String()같은 자료형 또는 자료형 클래스라고 할지라도 new가 붙었다면 인스턴스 영역(메모리)으로 변경되므로 비교하는 상황이 달라질 수 있다String a = "a1234";String b = "a1234";String c = new String("a1234"); //new : 인스턴스 생성 == RAM에 올라갔단 뜻String d = new String("a1234");System.out.println(a==b); //trueSystem.out.println(a.equals(b)); //trueSystem.out.println(a==c); //falseSystem.out.println(a.equals(c)); //trueSystem.out.println(c==d); //false ⚡ .. 2024. 5. 20.
#12 / remind2 /* 1. {1,3,6,9,10}의 원시배열 데이터 중 홀수 값을 다음과 같이 모두 변경합니다. (LinkedList 사용) 결과 : {2,4,6,10,10} 으로 변경 LinkedList는 set이 더 빠름 */ public class exam12 { public static void main(String[] args) { Integer arr[] = {1,3,6,9,10}; List arr_l = new LinkedList(Arrays.asList(arr)); int idx=0; for(Integer a : arr_l) { //forEeach if(a%2 == 1) { arr_l.set(idx,a+1); }else { arr_l.set(idx,a); } idx++.. 2024. 5. 17.
#11-2 / 배열을 이용한 예외처리 ⚡ 배열을 이용한 예외처리package oop2;import java.util.ArrayList;import java.util.Arrays;//배열을 이용한 예외처리public class ex10 { public static void main(String[] args) { //object형태의 자료형 전체를 확인 //System.out.println(data[4].getClass().getName()); //간단한 자료형 이름만 출력 //System.out.println(data[4].getClass().getSimpleName()); Object data[] = {"유재석",1000,"실버회원",0.5,true}; ArrayList user = new ArrayList(); //빈.. 2024. 5. 16.
#11-1 / Exception : 예외처리 🌺 Exception : 예외처리(오작동 발생)  - 종류 엄청많음  1. 사용자의 입력실수로 인해 정보전달이 안될 경우  2. 개발자가 프로그램 오류시 정확한 오류 파악을 하기 위한 수단  3. 강제 프로세서에 대한 정보 수정 및 종료 try{}catch(Exception 변수){}finally {} ex) 회원가입시 예외처리 사항 1. id에 한글 입력  2. 이메일 관련  3. 연락처 관련  4. 동의 및 미동의(체크박스) 관련 - 미체크시 null값 날라오면 error  5. 첨부파일 - 용량,파일속성,여러개 서버로 전송시  6. FTP 및 메일👀내가 해보니까~예외처리 : if else와 비슷한데 좀더 포괄적인 느낌..?  오류나냐 안나냐로만 나눠서 출력!try( 명령 ) 에서 오류난것들은 싹.. 2024. 5. 16.
#10-2 / 단어 검토 및 변경(정규식 코드) ⚡ 정규식 코드//--split : 문자열을 원시배열화 함String word = "1,2,3,4,5,6,7";String arr[] = word.split(",");System.out.println(Arrays.toString(arr));//--replace : 문자변경("찾을단어","변경단어")String address = "서울특별시 마포구 마포동";String result1 = address.replace("서울특별","서울");String result2 = address.replace("마포","mapo");System.out.println(result2);//--replaceAll(정규식) : 배열 형태의 단어범위를 설정하며,특정단어로 모두 변경String code = "010abcd12z4B.. 2024. 5. 14.
#10-1 / Interface 👀 전체 정리 : https://dev-eunse.tistory.com/97  Interface : class와 비슷한 성격을 가지고 있음. 즉,모든 메소드를 그룹화함(근데 다름)- 기본 메소드가 {} 없음(public) - public 안에는 문법 작성 x,인자값은 작성해야함- default란 interface에서 유일하게 기본메소드를 활용할 수 있는 선언문,default를 붙여야 {}사용 가능- ⭐ default메소드는 사용해도되고 안해도 됨,public은 필수- private,protected 사용불가(default,public 가능),static 메소드 또한 사용 가능함(메소드 안에 문법 작성 가능)- 무조건 별도 파일- interface를 직접 class파일에 사용하지 못함(로드를 활용해서 사.. 2024. 5. 14.
#9-3 / class + class - class+class는 abstract 에서 값을 받은후 거쳐 갈때 추가하면 편하다!(abstract에서 return으로 하나만 받아올수 있어 값이 2개 필요하거나 추가 사항이 있을때 거쳐가는 용으로 사용) - 맨 아래 예제 확인⚡ class + class- 실제 클래스를 숨기기 위해 주로 사용(없다고 생각하고 a_class에 작성)- Spring에서 많이 사용- 코드 재활용에 좋다   현재시간,날짜   로그인정보   DTO(getter,setter)   Session,Cookie 관련   Database Connecton .. 등package oop2;// class + classpublic class oop_class5 { public static void main(String[] args) { .. 2024. 5. 13.
#9-2 / abstract(추상 클래스) abstract(추상 클래스) :코드 규격화를 위함(협업),가상 공간(메모리에 안잡힘)- extends : 상속 클래스- @Override : 상속된 메소드를 호출- overloading : 상속받는 메소드 외에 추가로 메소드를 생성함(추상클래스에 선언하지 않은 메소드명 사용해야함) 로드방식class b_class extends a_class{ @Override메소드{}} 👀 전체 정리 : https://dev-eunse.tistory.com/95  ❗ 중요 주의사항 : 코드를 이미 진행시 해당 추상 메소드 이름 을 변경하면 상속받은 모든 클래스에 문제 발생!⚡ abstract(추상 클래스) - 상속(협업시 주로 사용)package oop2;//외부 클래스 로드 및 abstract(추상 클래스)publ.. 2024. 5. 13.
#9-1 / 배열에 해당 클래스를 로드하여 적용하는 방법(DTO),protected ⚡ 배열에 해당 클래스를 로드하여 적용하는 방법(DTO)List di = null;   //이런 형식 (dto_info : getter,setter가 있는 클래스명)package oop;//배열에 해당 클래스를 로드하여 적용하는 방법(DTO)import java.util.ArrayList;import java.util.List;//실행 부분public class list_dto { public static void main(String[] args) { new list_data(); }}//--module(반복문,원시배열...등 data)class list_data { String user[][] = { {"hong","kim"}, {"홍길동","강감찬"} }; //--class배열에 gett.. 2024. 5. 13.
#8 / remind1 /* 1. Scanner 라이브러리를 이용하여 다음과 같이 결과가 나오도록 코드를 작성하시오.단, 최소 및 최대 값은 0~100[결과]점수를 입력해주세요 : 100~80 : A등급입니다79~60 : B등급입니다59~40 : C등급입니다39~ : D등급입니다*/ /* 2.다음 키오스크 메뉴 형태에 맞춰서 주문하는 시스템 프로세서를 제작하게 됩니다.다음 결과에 맞춰서 결과가 출력되로록 하세요. (조건 : 외부 class 사용)[결과] 2를 입력시메뉴선택 : 1.커피 2.햄버거 3.콜라 4.피자"햄버거를 신청하셨습니다"단, 그 외 번호(1~4) 외 번호 입력시 "해당 매뉴는 SOLD OUT 입니다"*/ /* 3.PC가 1~9까지 랜덤으로 숫자를 하나 선택합니다.선택한 숫자의 구구단을 출력하세요.(조건 : 외.. 2024. 5. 10.
#7-4 / foreach,List배열 ⚡ foreach 사용법배열 전용으로 사용하는 반복문이며, 클래스 배열에 주로 많이 사용함public class web8 { public static void main(String[] args) { LinkedList arr = new LinkedList(); arr.addFirst(50); arr.addFirst(150); arr.addFirst(250); arr.addFirst(350); for(Integer a : arr) { //for(받는변수 : 클래스 배열 객체명) System.out.println(a); } }}⚡ List 배열 - 상위배열(arraylist,linkedlist 모두 사용할수 있는 배열)- interface(class 아님)class web8_box { p.. 2024. 5. 9.
#7-3 / LinkedList 클래스 배열 ⚡ LinkedList 클래스 배열package oop;import java.util.Arrays;import java.util.LinkedList;//LinkedList 클래스 배열public class web5 { public static void main(String[] args) { Integer a[] = {1,3,5,7,9}; //원시배열 //클래스 배열 선언 LinkedList ls = new LinkedList(Arrays.asList(a)); LinkedList ls2 = new LinkedList(); ls2.add(10); ls2.add(20); ls2.add(30); //ArrayList에서도 가능 ls2.add(2,50); ls2.remove(0); .. 2024. 5. 9.