정렬 알고리즘(Bubble, Insertion, Selection, Merge, Quick) Feat. Java

이미지
요즘, 프레임워크나 라이브러리에 대한 공부위주로 하다보니까 기본기가 많이 부족하다고 느껴서 정렬알고리즘을 공부하고 한 번 정리해보았다. 1. Bubble 시간복잡도 O(n²), 가장 기본적인 정렬 알고리즘. 시작 :   [ 5, 2, 4, 3, 1] 1회전 : [ 2, 4, 3, 1, 5] 2회전 : [ 2, 3, 1, 4, 5] 3회전 : [ 2, 1, 3, 4, 5] 4회전 : [ 1, 2, 3, 4, 5] 2. Selection 시간복잡도 O(n²), 가장 작은 값 차례대로 배열의 맨 마지막으로 보낸다. 시작 :    [ 5, 2, 4, 3, 1 ] 1회전 :  [ 5 , 2, 4, 3, 1 ] => [ 1 , 2, 4, 3, 5 ] => i 는 0, min_Val 은 4 ----> swap( 0 , 4 ) 2회전 :  [ 1, 2 , 4, 3, 5 ] => [ 1, 2 , 4, 3, 5 ] => i 는 1, min_Val 은 1 ----> swap( 1 , 1 ) 3회전 :  [ 1, 2, 4 , 3 , 5 ] => [ 1, 2, 3 , 4 , 5 ] => i 는 2, min_Val 은 3 ----> swap( 2 , 3 ) 4회전 :  [ 1, 2, 3, 4 , 5 ] => [ 1, 2, 3, 4 , 5 ] => i 는 3, min_Val 은 3 ----> swap( 3 , 3 ) 3. Insertion 시간복잡도 최선의 경우에는 O(n) 인데 이미 정렬이 되어있는 경우이다. 나머지는 Bubble, Selection과 마찬가지로 O(n²)이다. 시작 :    [ 5, 2, 4, 3, 1 ] 1회전 :  [ 5, 2 , 4, 3, 1 ] => [ 2, 5, 4, 3, 1 ] => i 는 1 2회전 ...

Spring boot - ajax 통신시 발생하는 문제 - SOP(Same Origin Policy) Feat. Synology NAS

이미지
우선, SOP가 뭐냐? wiki 백과 왈 ~ In  computing , the  same-origin policy  is an important concept in the web application  security model . Under the policy, a  web browser  permits scripts contained in a first web page to access data in a second web page, but only if both web pages have the same  origin .  same-origin policy는 웹어플리케이션 보안 모델에서 중요한 개념이라고 한다. 웹 브라우저는 첫 번째 웹 페이지에 포함 된 스크립트가 두 번째 웹 페이지의 데이터에 접근하는 것을 허용하지만 두 웹페이지 모두 동일한 출처 를 갖는 경우에만 허용된다고 한다. 그렇다면 , 동일한 출처가 뭐냐? 프로토콜/호스트/포트 가 동일한가 라고 한다. 예를들어, http://abc.dfg.com/temp/index.html 과 동일한 출처를 알아보자. http://abc.dfg.com/temp/login.html    =>  동일한 출처. http://abc.dfg.com/temp2/fake.html   =>  동일한 출처. https://abc.dfg.com/temp/real.html    =>  프로토콜 이 다르다. 따라서 동일한 출처가 아니다. http://abc.dfe.com:123/temp/isReal.html   => 포트 가 다르다. 따라서 동일한 출처가 아니다. http://dfe.abc.com/temp/good.html   =>    호스트 가 다르다.  ...

ECMAScript6 - Object

이미지
Object에 대해서 공부해 본 것,, 1. 같은 키를 사용하는 경우 나중에 작성된 키값으로 대체된다. 2. Object에 function 작성의 차이 es5, es6 3-1. 프로퍼티 디스크립터 - Object 'book' 프로퍼티에 대해서 아래와 같은 속성을 포함하여 get, set 속성을 설정 할 수 있다. 3-2. get, set 속성 ==> ES5 get, set 속성으로 getter 와  setter를 정희 3-3. ES6에서 getter와 setter 선언 형태 4. Object.is()     ===           :  값과 값 타입을 모두 비교     ==             :  값 타입은 비교하지 않고 값만 비교     Object.is() :  값과 값 타입을 모두 비교    === , Object.is() 차이점은    +0 과 -0을 비교할 경우 ===는 true,  Object.is()는 false를 반환    NaN 과 NaN을 비교할 경우 === false, Object.is()는 true를 반환 5. assign(): 오브젝트 프로퍼티 복사  파라메터들은 enumerable 오브젝트여야 한다. null, undefined의 경우 프로퍼티 값으로만 복사가 가능하다. assign()의 필요성 let dup = sports; 의 경우 얕은 복사가 발생한다. dup과 sports는 같은 object를 바라보는 문제가 발생한다. dup의 프로퍼티 값을 변경할 경우 sports의 프로퍼티 값에도 영향을 끼친다. 이러한 문제를 해결하기 위해서 as...

Java EUC-KR text File Convert to UTF-8 text File

윈도우에서 euc-kr로 작성한 파일을 맥에서 열어보니 온통 ???천지라서 변환할 일이 있어서 그냥 끄적여봤다. 아래는 소스이다. 버퍼드리더를 euc-kr로 생성하여 한줄 씩 읽으면서 동시에 utf-8로 변환해서  utf-8로 생성해준 버퍼리라이터를 통해서 새로운 text파일에다가 써준다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Convert { public static void main(String[] args ) throws IOException { String path = Convert. class .getResource( "" ).getPath(); BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream( path + "개인가계부.txt" ), "EUC-KR" )); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( "utf8.txt" ), "utf-8" )); String line ;         while (( line = br .readLine()) != null ) { //           System.out.println...

대학생 코딩 과제 대행 java, python, oracle 스물 여섯 번째

이미지
https://open.kakao.com/o/s3aMpbA 오라클 모델링하고나서 쿼리짜는 과제이다. 모델링이라고 하기도 웃기지만 ㅎㅎ 과제 요구사항이다. DROP TABLE ACCOUNT PURGE; DROP TABLE BRANCH PURGE; DROP TABLE CUSTOMER PURGE; DROP TABLE LOAN PURGE; DROP TABLE BORROWER PURGE; DROP TABLE DEPOSITOR PURGE; DROP VIEW ALL_CUSTOMER; CREATE TABLE ACCOUNT(     ACCOUNT_NUMBER VARCHAR2(20) PRIMARY KEY,     BRANCH_NAME VARCHAR2(20),     BALANCE NUMBER ); insert into account values('A-101','Downtown',500); insert into account values('A-102','Perryridge',400); insert into account values('A-201','Brighton',900); insert into account values('A-215','Mianus',700); insert into account values('A-217','Brighton',750); insert into account values('A-222','Redwood',700); insert into account values('A-305','Round Hill',350); select * from account; CREATE TABLE BRANCH(     BRANCH_NAME VARCHAR...

대학생 코딩 과제 대행 java, python, oracle 스물 다섯 번째

https://open.kakao.com/o/s3aMpbA 이번에는 지난번에 했던 파이썬으로 소켓통신을 하는 과제를 의뢰받았다. 소켓을 통해서 파일을 서버에 업로드 하는 간단한 과제였다. 먼저 서버 #-*- coding: utf-8 -*- import socket #서버 소켓 오픈 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) port = 12345 server_socket.bind(("", port)) server_socket.listen(5) print ("TCP Upload Server Waiting for client on port " + str(port)) while True:     client_socket, address = server_socket.accept()     print("I got a connection from ", address)     req = client_socket.recv(1024)     print("Request :  ", req)     decodedReq = req.decode("utf-8")     print("decode : ", decodedReq)     fileTitle = decodedReq.split('!@#$%^&*')[0]     fileContent = decodedReq.split('!@#$%^&*')[1].encode("utf-8")     print('title : ', fileTitle)     print('content : ', fileContent)     uploadFile = open(fileTitle, "wb")     uploa...

대학생 코딩 과제 대행 java, python, oracle 스물 네 번째

이미지
https://open.kakao.com/o/s3aMpbA 요즘 학기 말이긴 한가 보다 ㅇㅅㅇ.. 의뢰가 없다가 최근에 3개가 들어왔었다. 차례대로 포스팅을 오랜만에 해보려고 한다. 먼저 과제는 2문제이다. 1번은 WITH RECURSIVE문과 같은 기능을 하는 stored procedure를 구현하라는 내용의 문제였다. WITH RECURSIVE문은 mysql 8버전 이후부터 사용이 가능하다. 하지만 과제에 사용하는 mysql 버전은 5.5로 해당 구문을 쓸 수 없게 되있었다. 따라서 1번은 계층형 쿼리를 사용해야 됬다. oracle의 경우 계층형 쿼리를 start with, connect by 문을 사용해서 짜본적은 있었지만, mysql로 계층형 쿼리를 짜본적이 없어서 당황하지 않을 수 없었다. 그래서 찾다보니 계층형 쿼리를 사용하지 않고도 left self join을 통해서 계층형 쿼리를 구현할 수 있었다. 뭐 완벽하진 않지만,, 제출 전날 의뢰를 해주어서 시간이 부족해서 꼼수를 부려서 그냥 돌아가게끔만 구현했다 ㅎㅎ 변명이지만 ㅎㅎ 2번은 프로시져를 사용하지 않고 쿼리를 통해서 문제해결을 요하는 문제였다. 과제에 사용 되는 테이블 내용 먼저 프로시져를 생성.. CREATE DEFINER=`s201403658`@`%` PROCEDURE `findBySSN`(essn INT) BEGIN DECLARE cnt INT DEFAULT 0; SELECT COUNT(*) INTO cnt FROM EMPLOYEE WHERE Superssn = essn; IF cnt > 0 THEN SELECT lv1.ssn as lv1, lv2.ssn as lv2, lv3.ssn as lv3 , lv4.ssn as lv4, lv5.ssn as lv5, lv6.ssn as lv6, lv7.ssn as lv7, lv8.ssn as lv8, lv9.ss...