일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- RDS
- EC2
- express
- websocket
- 웹게임
- tiles.xml
- 배포
- AWS
- 암호화
- Cookie
- 블록체인
- CSS
- JSP
- 웹소켓
- Spring
- docker
- phaser
- SQL
- PL/SQL
- 도커
- Ajax
- node.js
- JavaScript
- 알고리즘
- 비트코인
- autowired
- Servlet
- HTML
- jQuery
- Today
- Total
목록Computer language (39)
記錄
desc table_name;-- table 정보 보기 select ename, comm, nvl(comm,0)from emp;-- nvl(a, b) => a가 null 이라면 b로 처리 select 95.456789, round(95.9), trunc(95.9)from dual;-- round(a,b) => a를 b+1 째자리에서 반올림-- trunc(a,b) => a를 b+1 부터 버림 select mod(10,3)from dual;-- mod(a,b) => a를 b로 나눈 나머지를 반환 select ename, deptno, decode(deptno, 10, 'a', 20, 'b', 30, 'c', 40, 'd') from emp;-- decode(a, var1, var2, var3, var4) =..
$(document).on("click","#testbtn",function(){ setTimeout(function(){ alert('hello'); }, 2000); }); 자바스크립트에 내장된 setTimeout() 을 활용하여 시간 지연을 한다. 두번째 파라미터에 시간을 넣게 되며 첫번째 파라미터인 함수가 두번째 파라미터에 넣은 gap 만큼 뒤에 실행된다
$('#projectinfo_Task_Situation_Table_selectbar').on('change', function() { alert(this.value); $.ajax( { type : "post", url : "getTasksByStepForSituation.htm", data : "sid="+this.value, success : function(rdata){ console.log(rdata); } }); // end-ajax }); 이렇게 처리하면 Select Box 태그 자체에는 onchange를 걸어줄 필요가 없다 + a셀렉트 박스에 onchange 이벤트를 걸어줬다는 것은 변화시에 뭔가가 발생하도록 했다는 것인데 페이지가 로드되자 마자 selected 된 옵션에 대해 이벤트가 작동..
function serverToday(){ var xmlHttp; //분기하지 않으면 IE에서만 작동된다. if (window.XMLHttpRequest) { // IE 7.0 이상, 크롬, 파이어폭스일 경우 분기 xmlHttp = new XMLHttpRequest(); xmlHttp.open('HEAD',window.location.href.toString(),false); xmlHttp.setRequestHeader("Content-Type", "text/html"); xmlHttp.send(''); }else if (window.ActiveXObject) { xmlHttp = new ActiveXObject('Msxml2.XMLHTTP'); xmlHttp.open('HEAD',window.locat..
데이터베이스 트리거(Database Trigger)는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 트리거는 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용된다. 트리거를 사용하여 데이터 작업 제한, 작업 기록, 변경 작업 감사 등을 할 수 있다. 트리거에는 크게 나누어 행 트리거와 문장 트리거의 두 종류가 있다. 행 트리거: 테이블 안의 영향을 받은 행 각각에 대해 실행된다. 변경 전 또는 변경 후의 행은 OLD, NEW라는 가상 줄 변수를 사용하여 읽을 수 있다.문장 트리거:INSERT, UPDATE, DELETE 문에 대해 한번만 실행된다.또한 트리거는 다음과 같은 속성을 갖는다. BEFORE 또는 AFTER트리거가 실행되는 시기를 지정한다.INSTEAD O..
-- procedure-- 내가 위에서 만든 커서를 영속적으로 저장 (객체)-- 객체 형태로 저장 해놓으면 그 다음번에 코딩하지 않고 불러 사용 -- Oracle : subprogram(= procedure)-- Ms-sql : procedure -- 자주 사용되는 쿼리를 모듈화 시켜서 객체로 저장하고-- 필요한 시점에 불러(호출) 해서 사용하겠다-- procedure는 자동 커밋, 롤백이 되지 않으므로 사용자가 제어해줘야 한다 --기존 : APP(emp.java > select .... 구문) ->네트워크 > DB연결 > selet... > DB에--지금 : APP(emp.java > usp_emplist 구문) ->네트워크 > DB연결 > usp_emplist > DB에 -- 장점 1) 네트워크 트래..
--[ 커서 ]--지금까지 집합 단위의 데이터 처리 (전체 row를 대상으로) --[CURSOR]--1. [행단위]로 데이터를 처리하는 방법을 제공--2. 여러건의 데이터를 처리하는 처리하는 방법을 제공 (한 건이상의 row가지고 놀기) -- --------------------------------------- 사원급여테이블(건설회사)-- 정규직 , 일용일 ,시간직 --사번 , 이름 , 직종명 , 월급 , 시간 , 시간급 , 식대-- 10 홍길동 정규직 120 null null null-- 11 김유신 시간직 null 10 100 null-- 12 이순신 일용일 null null 120 10 --정규직--월급 --일용직--시간 , 시간급 --시간직--시간급 , 식대 --한 행식씩 접근해서 직종을 기준으..
PL/SQL- SQL을 확장한 절차적 언어(Procedural Language)- 코드 실행 단위에서 블록 구조를 제공. 잘 정의된 구조로 코드 유지 관리가 쉽다. --PL-SQL --PL/SQL 은 Oracle's Procedural Language extension to SQL. 의 약자 --SQL문장에서 변수정의, 조건처리(IF), 반복처리(LOOP, WHILE, FOR)등을 지원하며, --오라클 자체에 내장되어 있는Procedure Language --DECLARE문을 이용하여 정의되며, 선언문의 사용은 선택 사항. --PL/SQL 문은 블록 구조로 되어 있고 PL/SQL 자신이 컴파일 엔진을 가지고 있다. --SQL DEVELOPER 에서 접속 방법 --Tool > 보기 > DBMS 출력창 > ..
--1> 부서테이블의 모든 데이터를 출력하라.SELECT *FROM EMP --2> EMP테이블에서 각 사원의 직업, 사원번호, 이름, 입사일을 출력하라.SELECT JOB, EMPNO, ENAME, HIREDATEFROM EMP --3> EMP테이블에서 직업을 출력하되, 각 항목(ROW)가 중복되지 않게 출력하라.SELECT DISTINCT JOBFROM EMP --4> 급여가 2850 이상인 사원의 이름 및 급여를 표시하는 출력하라.SELECT ENAME, SALFROM EMPWHERE SAL >= 2850 --5> 사원번호가 7566인 사원의 이름 및 부서번호를 표시하는 출력하라.SELECT ENAME, DEPTNOFROM EMPWHERE EMPNO=7566 --6> 급여가 1500이상 ~ 2850..
/*[1일차 수업]1. 오라클 소프트웨어 다운로드>> http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html 2. 11g express 버전 (무료버전) 설차 3. 설치 (관리자 권한 : SYSTEM , SYS 계정 : 암호설정 >> 1004 4. sqlplus 기본 프로그램 접속확인 5. SqlDeveloper 무료툴을 설치 >> 유료툴 > 토드 , 오렌지 , sqlgate 6. Tool을 통해서 Oracle 접속 >> HR 계정 암호 1004 >> unlock >> BITUSER , 1004 >> 계정 생성 -- USER SQLCREATE USER bituser IDENTIF..
기존 포스팅에서 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..