일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- model1
- SQL
- phaser
- Ajax
- PL/SQL
- 블록체인
- JSP
- autowired
- express
- RDS
- 웹게임
- AWS
- 알고리즘
- node.js
- Cookie
- 배포
- JavaScript
- jQuery
- Spring
- EC2
- Servlet
- websocket
- CSS
- docker
- 비트코인
- HTML
- 도커
- tiles.xml
- 암호화
- 웹소켓
- Today
- Total
목록Computer language/JAVA (20)
記錄
기존 포스팅에서 JDBC만 따로 빼서 재 업로드 forName public static Class forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException Returns the Class object associated with the class or interface with the given string name, using the given class loader. Given the fully qualified name for a class or interface (in the same format returned by getName) this method attempts to locate, l..
serverpackage Practice; import java.util.*;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.*; public class server { public static void main(String[] args) { try { ServerSocket serversocket = new ServerSocket(9000); /* * ServerSocket * public ServerSocket(int port) throws IOException * * Creates a server socket, bound to the specified port..
package Practice; import java.util.*; public class test { public static void main(String[] args) { Map quiz1 = new HashMap(); Map quiz2 = new HashMap(); quiz1.put(1, "프랑스"); quiz1.put(2, "한국"); quiz1.put(3, "미국"); quiz1.put(4, "아랍에미리트"); quiz1.put(5, "일본"); quiz2.put(999999999, "프랑스"); quiz2.put(2, "한국"); quiz2.put(3, "미국"); quiz2.put(4, "아랍에미리트"); quiz2.put(5, "일본"); for (Map.Entry e : quiz1.en..
ArrayListpublic ArrayList(Collection
CPU의 스케줄링 Priority 설정으로 간섭할 수는 있으나전체적인 컨트롤은 불가능하다 //Thread : 프로세스에서 하나의 최소 실행단위 (method) //Thread 생성방법//1. Thread 클래스를 상속//2. implements Runnable 구현//두 방법 다 반드시 run() 추상함수 재정의 /*Thread구현 방식이 둘 인 이유는다중상속과 관련이 깊다 특정 클래스를 상속하면서도 Thread 기능을 구현하고 싶을 때extends Thread만으로는 원하는 상속을 다 하지 못하므로Runnable interface로도 Thread를 구현할 수 있게 한 것이다 또, 이와 연관되어Thread 클래스가 추상클래스가 아니라 일반클래스인 이유는Runnable 사용시 Thread 를 생성하고 파라..
/* * 객체를 네트워크, 파일, 프로세스 간에 통신하기 위해 필요한 것이 직렬화다 * * 직렬화는 객체를 분해해서 말 그대로 줄을 세워서 보내는 과정이다 * 객체를 문자열로 바꿔서 문자열을 직렬로 전송하는 것이다 (객체 -> 문자열) * * 반대로 받는 쪽에서는 분해되어 받았기 때문에 데이터를 활용하려면 역직렬화가 필요하다 * 직렬로 받은 문자열을 다시 객체로 전환하는 것이 역직렬화다 (문자열 -> 객체) * */ public class UserInfo implements Serializable { public String name; public String pwd; public int age; public UserInfo() {} public UserInfo(String name , String pw..
package MakeDos; import java.io.*;import java.util.*; public class Functions { List dirNames_arr; public void showTree(File f) { List dirindexlist = new ArrayList(); dirNames_arr = new ArrayList(); List dirNames = new ArrayList(); List dirFiles = new ArrayList(); File[] files = f.listFiles(); // 파라미터로 받은 디렉토리 하위의 모든 폴더에 대한 인덱스값 catch int tempindex = 0; for (File temp : files) { if (temp.isDirect..
package Test; import java.util.*;import java.util.Map.Entry; public class test{ public static void main(String[] args) { Map hashmap = new HashMap(); hashmap.put("1", "프랑스"); hashmap.put("2", "한국"); hashmap.put("3", "미국"); hashmap.put("4", "아랍에미리트"); hashmap.put("5", "일본"); System.out.println(); System.out.println("변경전"); for (Map.Entry m : hashmap.entrySet()) { System.out.printf("[번호 : %s\t국가 :..
Stream 개요Stream은 연결통로, 입출력통로, 중간매개체와 '빨대'에 비유하면 이해하기가 쉽다. 빨대의 지름보다 작은 것은 쉽게 빨대를 통해서 섭취할 수 있다. 즉, 빨대 내를 이동할 수 있는 것은 빨대의 지름보다 작은 것에 한정된다. 그런 의미에서 Stream은 기본적으로 1Byte의 크기까지만 다룰 수 있는 제한된 크기를 갖고 있다. 쉽게 말해서 1Byte단위로 Byte 배열을 보내고 받을 수 있다는 것이다. I/O (InputStream / OutputStream)InputStream과 OutputStream은 모두 API내에서 추상 클래스로 저장되어 있다. 따라서 혼자 힙에 올라갈 수 없고 반드시 상속 후 Override를 한 뒤에 힙에 올라갈 수 있다. 그래서 사용을 할 때에는 입출력 용..
/* '.equals' vs '==' public boolean equals(Object anObject) Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object. => ((파라미터 ! = null) && (same sequence of characters)) 일때 true를 반환. 그 외에는 false. ' == '의 왼쪽과 오른쪽의 operand를 비교하여 값이 같으면 true를 반환한다 주의할 것은 참조형..
class Parent { int a = 1;} class Child extends Parent { int b = 2;} public class main { public static void main(String[] args) { // Down casting 두 가지 경우 // 컴파일은 되지만 error가 발생한다 // Child 타입이 뭔지 모르기 때문에 casting을 하지 못하는 것 // 기본 자료형에서의 형변환의 경우 크기를 이미 알기 때문에 // JVM이 추측을 할 수 있지만 // 참조형인 경우 추측이 불가하므로 JVM이 강제로 casting을 못한다 // 즉, 참조형을 선언하고 초기화 할 경우(힙에 올릴 경우) // 다형성(부모클래스 변수가 자식클래스를 참조가능)을 제외하고 // 클래스가 불일..
ArrayList ac Vector 차이 둘이 결정적으로 다른 점은 동기화Syncronized 되어있냐 아니냐의 차이이다. ArrayList는 동기화가 되어있지 않아 멀티 스레드로 동시 접근이 가능하다. 따라서 여러곳에서 동시에 데이터를 막 바꿀 수 있는데 그만큼 속도가 빠르다. 주로 웹에서 사용하는 JAVA의 특성상 멀티 스레드로 동시 작업이 가능한 어레이리스트가 더 선호되는 게 아닌가 한다. 반대로 Vector는 동기화가 되어있어서 좀 더 데이터를 바꾸는것에 안전하지만 한번에 한 스레드밖에 접근을 못한다. 제네릭스를 사용할 수 있는건 둘이 동일하다. 딱 동기화가 되어있냐 아니냐의 차이정도만 알면 될것같다. 출처 : https://blog.naver.com/slayra/221201814398 Vecto..
1)public class Q1 { static int cv = 1; int iv = 1; static { cv = 2; } { iv = 2; } Q1() { iv = 3; } public void main(String args[]) { Q1 i = new Q1(); System.out.println(cv); System.out.println(i.iv); }}
Main Ex)public class MemoryStructure { public static void main(String[] args) { int lv = 500; System.out.println("iv 변수값 : " + lv); Test t = new Test(); t.write(); }} // class end /* * 1. main 영역(프레임)이 stack영역에 할당된다 * 2. stack영역 안에 main 영역(프레임)에 int lv = 500이 선언과 초기화 된다 * 3. stack영역 안에 main 영역(프레임) 위에 System.out.println을 위한 영역(프레임)이 할당되고 * 그 곳에서 파라미터 받아서 실행 뒤 pop * 4. Test t = new Test(); 를 통해서 ..
String 에서 기본 변수에 추가로 String을 붙이는 경우에 주소값이 계속 바뀐다. 예를 들어, String str = "가"; // 주소값이 0xAA 라고 한다면 str += "나"; // 여기서 주소값은 0xAA에 "나"가 붙는 것이 아니고 // 아예 새로운 주소 0xBB에 "가나"를 할당한다 str += "다"; // 여기서도 마찬가지로 0xBB에서 "다"를 붙이지 않고 // 새로운 주소 0xCC에 "가나다"를 할당한다 str = "가"; // 여기서 다시 "가"를 할당할 경우 새로운 주소를 만드는 것이 아니고 // 기존에 힙에 올렸던 0xAA가("가"가 할당 되어있는) str에 담기게 된다 하지만 new를 이용해서 String 객체를 생성하게 되면 기존의 주소를 사용하지 않는다여기서 '=='..
throw와 throws의 차이점을 이해하고 각각의 쓰임새에 대해서 알아본다 throw강제로(의도적으로) 예외를 발생시킨다. 개발자가 예외 객체를 직접 new로 만들어서 실행 엔진으로 들어가게 만들고 이것이 catch문에서 Exception에 담겨서 처리되도록 한다. 주로 if절에 의해 발동되도록 하여 특정 상황하에 예외처리를 원하는 경우 사용된다. 아래 예시에서는 if절은 없다. 선언 방식은 아래 주석처리 된 것처럼 변수명을 설정하여 'throw 설정한 변수명;' 으로 해도 되고 바로 무명 클래스를 만들어 예외를 throw 해버려도 된다. 실무에서는 주로 후자의 방식이 사용된다고 한다 public static void main(String[] args) { try { copyFiles(); startI..
class Pbase { } class Cbase extends Pbase { // 같은 부모 String str = "abc";} class Dbase extends Pbase { // 같은 부모 } public class Ex11_Inherit_Poly { public static void main(String[] args) { Cbase c = new Cbase(); Pbase p = c; c.str = ""; // visible p.str = ""; // invisible
주의할 점은 일차원 배열에서는 배열 변수의 주소값과 배열의 첫번째 요소의 주소값이 일치하지만 다차원 배열에서는 그렇지 않다는 점이다. (슬라이드 참고) 이유는 둘 이상의 주소값을 메모리의 한 공간에 담을 수 없고, 다차원 배열의 원리 자체가 '행의 집합'이기 때문이다. 즉, '행의 집합'을 실현하기 위해서 그 이전에 각 행의 주소값을 담아줄 공간이 필요하고 이것 때문에 다차원 배열 변수와 첫번째 요소(index: [0][0])의 주소값이 다른 것이다. EX1) 클래스를 담는 배열 1//EX) 클래스를 담는 배열 1 Employee[] emplist = {new Employee(1,"A","IT"), new Employee(2,"B","IT"), new Employee(3,"C","IT")}; EX2) 클..
예제를 통해 알아본다 //리터럴(literal)의 범위와 리터럴(literal)의 의미에 대해 알아보자 long number1 = 1000000000; // vs long number2 = 10000000000; > 리터럴은 말 그대로 '문자 그대로의' 값을 말한다. 그런데 문제는 자바 내에서 리터럴의 범위가 int로 한정되어 있다는 것이다. 즉, 후자는 100억을 넘어가면서 int가 포함할 수 있는 범위를 넘어서므로 소화를 못해내어서 에러가 나는 것이다. 즉, type인 long이 100억을 못받아서가 아니고 100억이 리터럴 자체의 표현 범위를 벗어났기에 에러가 난 것이다. 따라서 100억 뒤에 접미사인 L을 붙여 줌으로써 100억인 리터럴을 long type으로 만들면 된다. 결국 long numb..