자바 37

Http Get 요청 - 인증된 사용자만 세션키 받아오기

서버와 통신하기 위해 만들었다 HttpURLConnection을 이용하여 통신하였으며, GET method를 이용하여 올바른 사용자 이름과 비밀번호를 제공해야 sessionKey를 할당 받게 만들었다. 간단한 권한 부여를 만들기 위해 예를 든 내용이기 때문에 실제 환경에서는 더 강력한 인증, 권한을 부여해줘야 한다. 또한 여기에서는 자바만이 보여지는데 실제로는 DB를 사용해서 정보를 저장해야한다. 전체코드import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONE..

Java 2023.09.09

Java 음성 소켓 통신(서버, 클라이언트) 기초

✔ Server import java.io.*; import java.net.*; import javax.sound.sampled.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { // 서버 소켓 생성 serverSocket = new ServerSocket(12345); System.out.println("서버가 12345번 포트에서 연결 요청을 기다리고 있습니다..."); // 클라이언트 연결 대기 Socket clientSocket = serverSocket.accept(); System.out.println("클라이언트가 접속..

Java/Java 2023.04.21

프로그래머스 - 타겟넘버 - 자바 - 코딩테스트연습

class Solution { int answer = 0; // 목표값과 일치하는 경우의 수를 저장할 변수 public int solution(int[] numbers, int target) { dfs(numbers, 0, target, 0); // 깊이 우선 탐색(DFS) 함수 호출 return answer; // 결과 반환 } // 깊이 우선 탐색 함수 public void dfs(int[] numbers, int depth, int target, int sum){ if(depth == numbers.length){ // 배열의 모든 요소를 다 탐색한 경우 if(target == sum) answer++; // 목표값과 일치하는 경우 answer 변수 증가 } else { dfs(numbers, de..

프로그래머스 - 같은 숫자는 싫어 - 자바 - 코딩테스트 준비

import java.util.*; public class Solution { public int[] solution(int []arr) { int[] answer = {}; // 크기가 얼마나 있는지 모르니 가변인 어레이리스트를 사용 ArrayList arrl = new ArrayList(); // 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수 int num = -1; // 영햐을 끼치지 않는 숫자 for(int i=0; i< arr.length ; i++){ if(arr[i] != num){ // 처음은 무조건 삽입 왜냐면 관련없는 -1 arrl.add(arr[i]); num = arr[i]; // 배열의 변수를 비교하기 위해 num에 arr을 넣는다. } } // ans..

기술면접 준비 2

예외처리 NullPointException : null 값을 가지고 있는 참조 변수로 즉 해당 객체가 null인 상태에서 접근했을 때 해당 값이 null에 대한 접근을 하여 발생, 해당 객체는 없는데 접근하여 발생한다고 생각하자 ArrayIndexOutBoundsException : 배열에서 할당된 인덱스 범위 초과시 발생 NumberFormatException : 데이터를 숫자로 변경하는 경우 많이 발생 svm(Support vector machine) 신호처리, 의료 응용 분야, 자연어 처리, 음성 및 영상 인식을 비롯한 여러 분류 및 회귀 문제에 사용되는 지도 학습 알고리즘, 기계학습의 하나로 자료 분석을 위한 지도 학습 모델로, 주로 분류와 회귀 분석을 위해 사용 MVC 유저가 보는 페이지, 데이..

프로그래머스 자바 (옹알이1) 코딩테스트 문제

class Solution { public int solution(String[] babbling) { int answer = 0; for(int i=0; i< babbling.length; i++){ babbling[i] = babbling[i].replaceFirst("aya", "0"); babbling[i] = babbling[i].replaceFirst("ye", "0"); babbling[i] = babbling[i].replaceFirst("woo", "0"); babbling[i] = babbling[i].replaceFirst("ma", "0"); // 처음 부분을 포함한걸 전부 없에라 replace 할경우 다 없어지기 때문에 first사용 babbling[i] = babbling[i]...

Spring 클론코딩 프로젝트 콘텐츠 DetailPage( 감상 가능한 곳, 유튜브(youtube) 예고편, 겔러리)

🎬 감상가능한 곳 타임리프 tb_movie 테이블의 mov_watch 컬럼에서 해당 movieIdx 값을 통해 해당하는 링크와 이미지 이름을 주기위해 타임리프에서 splt과 삼항연산자를 이용하여 구현하였다. th:title="${#strings.contains(wat,'aHR0cHM6Ly93d3cubmV0ZmxpeC5jb20vdGl0b')} or ${#strings.contains(wat,'netflix')}? '넷플릭스' : 1. {#strings.contains(wat,'aHR0cHM6Ly93d3cubmV0ZmxpeC5jb20vdGl0b' 이 부분은 넷플릭스의 고유 주소 값이다. 2. netflix 가 포함되어도 넷플릭스인걸 알 수 있기 때문에 타임리프에서 or 조건을 사용해서 1번과 2번이 포함되면..

JAVA (TCP/IP, 서버 클라이언트)

2. TCP/IP 네트워킹 소켓(socket) - 두 호스트 사이 연결 - 어떠한 방식으로 통신을 할지도 정해주는 것 - 원격 장비에 연결, 데이터 전송(보내기, 받기), 포트 지정, 수신 대기(서버와 클라이언트 관계(c/s), p2p) ServerSocket 클래스 - 클라이언트의 연결 요청을 기다리면서 연결 수락을 담당하는 클래스 (대기하다가, 일반소켓을 만들고 일반 소켓끼리 통신할 수 있도록 만들어 연결을 해주는 역할) -> 서버부터 실행을 해야한다.(대기상태에서) Socket 클래스 - 연결된 클라이언트와 통신을 담당하는 클래스(사용자가 접속할 수 있는) 문제. 에코서버를 만들어보자. 데이터 클라이언트 -----> 서버 5 밖으로 보넬 아웃풋 스트림을 통해 나갈거 만들고 -> 버퍼에다 담을거기 떄..

Java/Java 2022.10.20

JAVA 네트워크

1. 네트워크(Network) - Net + work 합성어 - 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용형태 인터넷(Internet) - 컴퓨터로 연결하여 TCP/IP 프로토콜을 이용하여 정보를 주고받는 네트워크 ✔ IP(Internet Protocol) - 인터텟 연결되어 있는 모든 장치를 식별할 수 있도록 장비에게 부여되는 고유 주소 ✔ IPv4 - 8bit씩 4자리 - 하나의 스텟마다 0 ~ 255 (0 ~ 42억9천) 예) 211.100.85.100 - 향후 IPv6, 32bit 내 아입피 확인 - 네이버 "내 ip"로 검색 -> 123.142.55.115 - cmd -> ipconfig -> 192.168.12.12 도메인 -> IP, IP -> 도메인 - cmd -> nsl..

Java/Java 2022.10.20

자바 제네릭(Generic)

1. 제네릭(Generic) 클래스나 메소드에서 사용할 데이터의 타입을 컴파일시에 미리 지정하는 방법 제네릭을 사용하는 이유 - 다양한 타입의 객체의 재사용을 높일 수 있음 - 클래스에서 사용할 타입을 외부에서 사용 - 반복적인 코드, 불필요한 코드를 사용하지 않도록 함 - 강제적인 형변환을 발생시키지 않음 public class Generic1 { public static void main(String[] args) { // Box2 box1 = new Box2(); // Box2 box1 = new Box2(); Box2 box1 = new Box2(); box1.setT("안녕하세요"); System.out.println(box1.getT()); String str = box1.getT();// 형..

Java/Java 2022.10.12

자바 스레드

1. 스레드(Thread) 프로세스 - 윈도우 작업 관리자에서 프로세스 탭에 올라와 있는 어플리케이션 하나 - 운영체제로부터 필요한 메모리를 할당받아 어플리케이션 코드를 실행 멀티 태스킹 - 두가지 이상의 작업을 동시(병렬작업)에 처리하는 것 스레드 - 하나의 프로세스 내부에서 독립적으로 실행되는 작업단위 - 운영채재애 의해 관리되는 하나의 작업 혹은 Task를 의미 - 다중 스레드 작업시에는 각 스레드끼리 정보를 주고 받을 수 있어 처리 과정의 오류를 즐일 수 있음 - 각 프로세스는 서로 정보를 주고 받을 수 없음 - JVM에 의해 하나의 프로세스가 발생, main() 안에 실행문들이 하나의 스레드 멀티 스레드 - 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법 - 메모리 공유로 인한 시스..

Java/Java 2022.10.07

자바 영어단어장

영어단어장 프로그램을 작성해보자. 1. 지난 단어장을 수정하여 save라는 명령을 입력하면 wordbook.txt 단어를 저장 2. 프로그램을 재시작할 때 wordbook.txt에서 단어를 읽어와 메모리에 저장 public class World {//먼저 변수를 선언한다. private String english; private String korean; private int level; private String wdate; // 변수가 private로 선언되어 있기 때문에 this를 이용하영 받아온 값을 넘겨준다. public World(String english, String korean, int level, String wdate) { this.english = english; this.korea..

Java/Java 2022.10.07

자바 예외처리

2. 예외 처리(Exception) 오류(error) 자바 컴파일러에 의해 문법 오류를 발생 예외(exception) 문법이 맞게 작성되었다 하더라도 프로그램을 실행하면서 예상하지 못한 오류가 발생 프로그램 실행 중 비정상적으로 종료 예측할 수 있는 예외, 예측 못하는 예외 ✔ 예외가 발생하는 원인 - 사용자가 잘못된 데이터를 입력하는 경우 - 개발자가 로직이나 계산을 잘못 작성한 경우 - 하드웨어나 네트워크가 제대로 동작하지 못하는 경우 - 악의적으로 잘못된 연산을 요구하거나 시스템을 공격 예외의 종류 - 예외 상황에 맞춰 문제를 처리하기 위해 다양한 예오처리가 있다. - 컴파일시에 예외 발생 - 런타임시에 예외 발생 [Exception] // 모든 예외를 처리 [IOExcerption] [FileNo..

Java/Java 2022.10.06

자바 Map 인터페이스

✔ Map 인터페이스 : - 키와 값을 한 쌍으로 이루어지는 데이터의 집합으로 순서가 없고, 키는 중복으로 허용하지 않지만 값운 중복으로 허용 HashMap, TreeMap, HashTable HashMap 클래스 - Map 인터페이스를 구현한 대표적인 클래스 - 키와 값으로 구성된 요소객체를 저장하는 구조를 가지고 있는 자료구조 - 키는 중복될 수 없고, 값은 중복될 수 있음 - 기존의 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대체(키 값은 중복X) - 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 뛰어난 성능 - 비동기식(여러개의 프로그램을 동시에 처리, 시간이 오래걸리면 다음 문장으로 이동 후 동작하는 방식) TreeMap 클래스 - 이진트리..

Java 2022.10.06

국비지원 자바 복습 9(Generic, 컬렉션 프레임워크)

1. 제네릭(Generic) 클래스나 메소드에서 사용할 데이터의 타입을 컴파일시에 미리 지정하는 방법 제네릭을 사용하는 이유 - 다양한 타입의 객체의 재사용을 높일 수 있음 - 클래스에서 사용할 타입을 외부에서 사용 - 반복적인 코드, 불필요한 코드를 사용하지 않도록 함 - 강제적인 형변환을 발생시키지 않음 ✔ Object 클래스 - 자바의 모든 클래스의 최상위 조상 클래스 - 모든 타입은 Object 클래스 객체화 시킬 수 있음 - 기본 데이터 타입을 객체화 시킨 래퍼타입으로 대입 받을 수 있음 2. 컬렉션 프레임워크(Collection Framework) - 여러가지 데이터를 메모리에 쉽고 효과적으로 처리할 수 있도록 제공하는 클래스들릐 집합 - 자료구조를 구현한 클래스들의 모음 @ 자료구조 : - ..

Java/Java 2022.10.06

국비지원 자바 복습 7 (객체의 배열, Object, 상속, 업/다운 캐스팅)

1. 객체의 배열 클래스 이름 참조변수 = new 클래스이름[요소의 갯수]; int[] arr = new int[3]; arr[0] = 10; ​ // 아직 객체화는 아니고 배열을 만든것일 뿐 Student[] arr = new Student[3]; arr[0] = new Student(); //student 객체를 arr[]에 0번방에 저장하게 된다. arr[0].setNo(1); arr[0].setName("song"); .... ​ arr[1] = new Student();// 주소마다 객체를 다시 선언해줘야 한다. arr[1].setNo(2); arr[1].setName("hun"); .... ​ @ arr[0] = student[0];//잘못된 입력 ​ 2. object 클래스 -java.lan..

Java/Java 2022.10.04

국비지원 자바 복습 6 (메소드, 메인메소드, opp, 클래스)

1. 메소드(method) - 어떤 로직이나 기능을 만들어 내는 방법(함수) - 코드를 재활용 할 수 있도록 하여 경제적으로 코드를 작성할 수 있음 - 객체를 생성하여 참조변수를 통해 호출할 수 있는 함수 ​ 접근제어자 [static] 변환타입 메소드이름([매개변수1, 매개변수2..]) { //매개변수 : 원하는 값을 넣을 수 있다. // 반환타입이 없을 경우 void를 사용한다. 메소드이름이 호출되면 실행할 문장; ... [return 반환값] // 내가 원하는 값을 돌려준다. 메소드 호출한곳으로 // 반환값은 반환타입과 동일하게 사용한다. } ​ // static : 객체를 생성하지 않아도 코드가 실행되면 메모리에 적재된다 public static int sum(int num1, int num2){ ..

Java/Java 2022.10.04

국비지원 자바 복습 5 (2차원 배열, String 클래스, 주민등록 검증)

1. 2차원 배열 값이 행과 열로 구성된 배열 ​ 1차원 데이터타입[] 배열이름 = new 데이터타입[갯수]; int[] arr = new int[5]; arr[0] = 10; //1차원 배열에서 한번에 초기화 및 변수선언 int[] arr = {10, 20, 30}; // new int 생략 가능하다. ​ 2차원 데이터타입[][] 배열이름 = new 데이터타입[행갯수][열갯수];// |(행)-(열) int[][] arr = new int[2][3]; [0,0] [0,1] [0,2]0행 [1,0] [1,1] [1,2]1행 0열 1열 2열 ​ arr[0][0] = 10; arr[0][1] = 20; .. arr[1][2] = 60; ​ // 2차원 배열의 선언 및 초기화 int[][] arr = {{10,..

Java/Java 2022.10.04

국비지원 자바 복습 4 (반복 문, 배열)

1. 반복문 - while문 ​ while(조건식){ 조건식의 결과가 true인 동안 반복할 문장; ... } ​ int num = 10; while(num >= 10){ //밑에서 후위연산 후 올라와서 빠진다. System.out.println("num은 10보다 큽니다."); //무한루프 때문에 중괄호가 필요하다. num--; } (while)문제 1 ~ 100까지의 짝수의 총합을 구하는 프로그램을 작성 - for문 ​ for(변수의 초기화; 조건식; 증감식){ 조건식이 true인 동안 반복할 문장 } ​ for(int i=1; i random은 0.99999까지이기 때문이다. ​ 1 ~ 45의 사이에 랜덤한 값을 추출 double rn = Math.random(); (int)(rn * 45) + 1..

Java/Java 2022.10.04

국비지원 자바 3(타입변환, 제어 문, 성적프로그램)

1. 타입 변환 - 연산은 기본적으로 같은 타입의 피연산자와 수행 - 서로 다른 타입의 피연산자가 있을경우 두 피연산자 중 크기다 큰 타입으로 자동변환 EX) 10 / 3.0 = 3.3333... 실수형이 정수형보다 크기(소수)가 크기 때문이다. 정수 byte, (byte)변수명 ​ ​ ✔ Scanner 클래스 -> 조건/제어문 들어가기 전에 미리 알아보자 - 자바에서 여러가지 데이터를 입력받을 수 있도록 도와주는 대표적인 입력관련 클래스 - java.util 패키지(폴더별로 나누어 둔것이라고 생각하자)에 존재 ​ 변수 -> Stack에 저장 데이터타입 변수이름 = 값; int num = 10; 객체 -> new가 나오면 ..

Java/Java 2022.10.04

자바 오류, 람다, API - 학원

람다복습 ​ 오류의 종류 에러(Error) : 개발자가 해결할 수 없는 문제 (코드로 수습 불가) 예외(Exception) : 개발자가 해결 가능한 문제 (코드로 수습 가능) ​ 예외의 발생 시점 확인된 예외(checked exception) 컴파일 단계에서 발생하는 예외(이클립스 빨간줄) 미확인 예외(unchecked exception) 프로그램 실행 중(런타임) 발생하는 예외 ​ 예외 처리 예상되는 예외를 적절한 처리를하여 비정상적인 종료를 막는다. ​ 예외 처리 문법 ​ try{ 실행할 명령문 }catch(예외이름 변수명){ 예외를 처리하는 명령문 }catch(예외이름 변수명){ 예외를 처리하는 명령문 }.... }finally{ 오류 발생 여부에 상관없이 무조건 실행할 코드 } ** catch는 ..

자바 내부 클래스, 외부 클래스, 람다식 - 학원

​ # 내부 클래스(Inner Class) 클래스 내부애 선언된 클래스를 내부 클래스라고 한다. 내부 클래스를 가진 클래스를 외부 클래스라고 한다. ​ 클래스를 구성하는 멤버로 변수, 메소, 생성자 뿐만 아니라 클래스도 가질 수 있다. 만약 B 클래스를 A클래스에서만 사용한다면 B클래스를 내부클래스로 만들어 사용한다. ​ 외부 클래스가 메모리에 할당되야 내부 클래스의 객체화가 가능하기 때문에 B를 별도로 사용하지 못한다. 내부 클래스는 외부 클래스의 멤버이기 때문에 외부 클래스의 멤버를 상속없이 사용할 수 있다. ​ 내부 클래스의 종류 - 인스턴스 내부 클래스 - 스태틱 내부 클래스 - 로컬 내부 클래스 ​ ​ ​ # 익명 클래스(Anonymous Class) 이름이 없는 클래스 ​ ​ # 함수형 인터페..

자바 - 추상메소드, 추상클래스, 인터페이스 - 학원

# 추상 메소드 ​ 메소드를 선언만하고 구현을 하지않은 것을 추상 메소드라고 한다.(마완성된 메소드) ex) abstract void 메소드명(매개변수) 1. abstract 키워드를 사용한다. 2. 마지막에 세미콜론을 써야한다. ​ ​ # 추상 클래스 ​ abstract 카워드가 붙은 클래스는 추상 클래스이며 , 추상 메소드가 한 개 이상 있는 클래스는 반드시 추상 클래스로 선언한다.(미완성된 클래스) ex) abstract class 클래스명 { abstract void 매소드명(매개변수) *일반 메소드도 선언 가능 } 1. abstract 키워드를 사용한다. 2. 객체화 시킬 수 없다. ​ ** 미완성된 메소드(추상 메소드)는 상속받은 자식 클래스에서 반드시 재정의하여 구현을 해야만 해당 클래스를 ..

자바 접근 권한 제어자, Casting -학원

# 접근 권한 제어자(접근자) ​ 주로 클래스의 멤버(변수, 메서드)에 접근을 제어하기 위해 사용한다. ​ public : 모든 곳에서 접근 가능, 대표 클래스를 의미할 때 사용 protected : 다른 패키지에서 접근 불가, 자식은 허용 default : 다른 패키지에서 접근 불가 ( 별도로 명시하지 않고 접근제어자 생략시 자동으로 default가 됨) private : 다른 클래스에서 접근 불가, 메소그로만 접근하자! (getter, setter) ​ //alt shift s -> r 접근 권한 제어자 설정하기 ​ ​ # Casting ​ up casting : 자식 값을 부모 타입으로 형변환 down casting : 이미 up casting된 값을 다시 자식 타입으로 형변환 ※ 부모 값을 자식 ..

자바 상속 - 학원

상속(inheritance) 1. 기존에 선언된 클래스의 멤버(생성자는 제외)를 새롭게 만들 클래스에서 사용하고 싶을 때 상속을 받고 새로운 기능만 추가한다. 2. 여러 클래스 선언 시 멤버가 겹치는 경우, 부모 클래스를 먼저 선언하고 공통멤버를 자식 클래스에게 상속해준다. ​ ​ 상속 문법 ​ class Parents{ Parents멤버 } ​ class Child extends Parents{ Parents, Child 멤버 } ​ ​ super : 부모의 참조값 부모의 멤버에 접근할 때 사용한다. ​ super() : 부모 생성자 자식 클래스 타입의 객체로 부모 필드에 접근할 수 있다. 우리는 객체를 만들 때 자식 생성자만 호출하기 때문에, 자식 필드만 메모리에 할당된다고 생각할 수 있다. ex)C..

자바 학원 필기 9

# 2022.09.02 //art shift a 커서 키워서 한번에 지우기 ​ # 다마고치 문제 복습 ​ ​ package day08; ​ import java.util.Scanner; ​ class Creature { // 캐릭터 이름 String name; // hp int hp; // 밥먹은 수 int eatCnt; // 턴 int turn; // 변 boolean poo; ​ ​ ​ ​ ​ public Creature(String name, int hp) { this.name = name; this.hp = hp; } ​ // 먹기 : 턴을 1중가, hp 2증가 void eat() { this.turn++; this.hp += 2; this.eatCnt++; } ​ // 자기 : 3초 동안 잠에 ..

자바 클래스 - 학원

# 클래스 ​ 객체지향 프로그래밍(Object Oriented Prigramming) 이란? (OOP) 추상화된 클래스로 객체를 만들고 객체들 간의 관계를 맺어 상호작용하는 프로그래밍 기법 ​ 추상화란? (객체 모델링) 공통적인 특징을 파악하여 하나의 묶음으로 만들어내는 것 ​ 클래스 1. 사용자 정의 타입이다. - 클래스를 사용하면 여러 타입, 여러 값을 저장할 수 있는 저장공간을 만들 수 있다. - 클래스 안에 선언된 변수와 메서드를 서용하고 싶다면, 해당 클래스 타입으로 변수를 선언해야 한다. ​ 2. 연관성 있는 저장공간과 기능을 한 곳에 모아 편하게 관리할 수 있다. - 저장공간과 기능을 나누어 관리하게되면 코드가 길어졌을 때 사용하기 불편하다. 이때 연관되는 저장공간과 기능을 클래스로 묶어서 ..

자바 학원 필기 7

# 메소드 ​ 자료형 메소드명(매개변수){ 실행할 코드; return 리턴값; } 변수명.메소드명() ​ 함수와 메소드 클래스 밖에 선언되어 있다면 함수라고 부르지만 클래스 내부에 선언되어 있는 함수는 메소드라고 부른다. 자바에서는 모든 함수가 클래스 내부에서 선언되기 때문에 메소드만 존재한다. 개념 상 함수가 메소드보다 더 큰 범주이므로 메소드를 함수라고 불러도 되지만, 자바는 메소드만 존재하므로 메소드라고 부르는게 좋다. ​ 메소드 기능 이름 뒤에 소괄호. 단, 키워드 뒤에 소괄호는 메소드가 아니다. ​ ​ 메소드 선언과 구현 리턴타입 메소드명(자료형 매개변수명, .....)