본문 바로가기
반응형

🖥Web38

[Java] java Enum 적용하기, java Enum 왜 써야할까? Enum의 기본적인 장점들 문자 열과 비교해 IDE의 적극적인 지원을 받을 수 있습니다. 자동완성, 오타검증, 텍스트 리팩토링 등등 허용 가능한 값들을 제한 할 수 있습니다. 리펙토링 시 변경 범위가 최소화 됩니다. 내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없습니다. Enum을 사용하는 이유는 지저분한 코드들을 모두 지우고(예를들면 if(any || any || ... ) 등등의 긴 문장) 한 곳에서(Enum) 모든 정리를 끝내고 값을 내주는것, 확실하게 명시된것만 사용할 수 있도록 하는것이 유용한것같습니다. 값이 변하는것들을 사용 할 용도는 절대 아닌것으로 보이고 setter는 사용하지않고 getter만 사용하는것이 바람직해보입니다. Enum을 사용해보도록 하겠습니다. 생성시에는 .. 2021. 1. 15.
[SpringBoot] AOP AspectJ @Aspect 적용하기 @Pointcut, @Around, @Before, @AfterReturning, @After, @AfterThrowing, example code AOP 주요 개념 AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점지향은 쉽게말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들을 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드 상에서 다른 부분에 계속 반복해서 쓰는 코.. 2021. 1. 14.
[SpringBoot] Filter(필터) OncePerRequestFilter간단히 사용하기 Filter란 서블릿의 ServletContext 기능으로 사용자에 의해 서블릿이 호출 되기 전/후로 사용자 요청/응답의 헤더 정보 등을 검사 및 설정할 수 있다. Servlet Filter와 HandlerInterceptor의 차이 Filter와 Interceptor 비교 필터는 DispatcherServlet 앞에서 먼저 동작하고, 인터셉터는 DispatcherServlet에서 Controller(Handler) 사이에서 동작한다. 필터 웹 어플리케이션의 Context의 기능 스프링 기능을 활용하기에 어려움 일반적으로 인코딩, CORS, XSS, LOG, 인증, 권한 등 을 구현 인터셉터 스프링의 Spring Context의 기능이며 일종의 빈 스프링 컨테이너이기에 다른 빈을 주입하여 활용성이 좋음 .. 2021. 1. 13.
[SpringBoot] Interceptor(인터셉터) HandlerInterceptor로 간단히 intercept하기 HandlerInterceptor : 세션이나 쿠키, 검증 등을 위하여 사용한다. 일반적인 요청흐름이 흐르기전에 controller 전에 가로채서 처리한다. Servlet Filter와 HandlerInterceptor의 차이 Filter와 Interceptor 비교 필터는 DispatcherServlet 앞에서 먼저 동작하고, 인터셉터는 DispatcherServlet에서 Controller(Handler) 사이에서 동작한다. 필터 웹 어플리케이션의 Context의 기능 스프링 기능을 활용하기에 어려움 일반적으로 인코딩, CORS, XSS, LOG, 인증, 권한 등 을 구현 인터셉터 스프링의 Spring Context의 기능이며 일종의 빈 스프링 컨테이너이기에 다른 빈을 주입하여 활용성이 좋음 다른 빈.. 2021. 1. 13.
[Sql] Tablespace(테이블스페이스)란? 테이블 스페이스란 테이블, 인덱스, 프로시저, 뷰 등의 객체들을 저장해놓은 오라클의 논리적인 공간을 말합니다. 실제 물리적인 공간은 데이터파일(확장자가 dbf 혹은 ora인 파일)입니다. 테이블 스페이스의 관리는 관리자만 가능합니다. 오라클(oracle)은 데이터베이스 관리시스템이고 말 그대로 데이터들을 관리합니다. 관리란 데이터들을 저장, 추출, 삭제, 변경하는 작업을 말합니다. 오라클 데이터베이스는 데이터 파일들을 가지고 있으며, 이 파일들에 데이터가 저장됩니다. 테이블 스페이스(Tablespace)는 데이터베이스에서 데이터를 물리적으로 저장하는 단위입니다. 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)에서 사용되며, 테이블 스페이스는 하나 이상의 데이터 파일로 구성되어 있습니다. 이러한 파일.. 2020. 6. 7.
[Java] String, StringBuilder, StringBuffer의 차이 String, StringBuffer, StringBuilder.. 모두 문자열을 저장하고, 관리하는 클래스입니다. 굳이 여러가지를 만들어놓은 이유는 무엇일까요. 1) String 먼저 String과 다른 클래스(StringBuffer, StringBuilder)의 차이점은 두 문자열 클래스의 아주 기본적인 차이는 String은 immutable(불변), StringBuffer는 mutable(변함)에 있습니다. String은 문자열을 대표하는 것으로 문자열을 조작하는 경우 유용하게 사용할 수 있습니다. 문자열, 숫자, char 등은 concat할때는 StringBuffer, StringBuilder를 사용할 수 있습니다. 단, 복잡한 경우 의미가 있고, 단순한 경우에는 굳이 StringBuffer, S.. 2020. 6. 5.
[JAVA] 추상클래스와 인터페이스의 차이 추상클래스 인터페이스 생성자 O X 일반메소드 O X 추상메소드 O O 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 내 '추상 메소드' 가 하나 이상 포함되거나 abstract로 정의된 경우를 말합니다. 반면 인터페이스는 모든 메소드가 추상 메소드인 경우입니다. (자바 8에서는 default 키워드를 이용해서 일반 메소드의 구현도 가능합니다.) 두 개념의 차이는 너무 명확합니다. 일단 생김새도 다르고, 사용하는 방법도 다릅니다. 그렇지만 하는일은 비슷합니다. 추상클래스와 인터페이스는 상속받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상 메소드를 구현하도록 강제한다. 이 '하는 일' 을 한번 생각해보면 결국 추상메소드를 구현하는 거네요? 그렇다면 추상 클래스 하나만 존재하되.. 2020. 5. 25.
[Sql] SQL Cursor SQL에는 내부적으로 DBMS라는 애가 산다. 매니저 역할을 한다. 파싱하고 순서는 open cursor fetch = true => RAM에 올린다. 그리고 닫아주어야한다 close 옵티마이저가일을 해준다. 하단의 Explain Plan(Ctrl + E)에 들어가면 옵티마이저가 할일 또는 하는일을 볼 수 있다. CREATE OR REPLACE PROCEDURE Implicit_Cursor (p_empno IN emp.empno%TYPE) IS v_sal emp.sal%TYPE; v_update_row NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno = p_empno; -- 검색된 데이터가 있을경우 IF SQL%FOUND THEN DBMS_OUTPUT.. 2020. 3. 20.
[SQL] SQL의 예외처리 create or replace procedure porc_exception1 is n_i number(10):=0; begin n_i:='김유신'; exception when invalid_number then DBMS_OUTPUT.PUT_LINE('잘못된 숫자값에 대한 에러 이다.'); when value_error then DBMS_OUTPUT.PUT_LINE('잘못된 데이터값에 대한 에러 이다.'); when others then DBMS_OUTPUT.PUT_LINE('잘못된 숫자나 데이터값은 아니다.'); end; xec porc_exception1; 실행시 '잘못된 데이터값에 대한 에러 이다.' 가 출력된다. create or replace procedure proc_errormsg is er.. 2020. 3. 20.
[SQL] 프로시저(procedure)와 declare 차이 프로시저(procedure)와 declare 차이 PL/SQL declare 변수 선언 프로시저 PL/SQL procedure(프로시저)와의 차이점은 procedure는 이름을 저장하여 나중에도 사용할 수 있지만 declare는 한번 실행 후 소멸한다는 점이다. 디클리어 만드는 방법 declare v_no number(5); begin v_no:=10;--변수초기화 dbms_output.put_line('v_no = '|| v_no); end; PL/SQL의 결과는 하단의 DBMS Output(disabled)에서 확인할 수 있다. 출력정보가 쌓이기때문에 DBMS Output(disabled) 에서 새페이지를 눌러주는것이 좋다. declare v_no number(5); v_name VARCHAR(20).. 2020. 3. 20.
[JAVA] URL 코드보기 package book.chap15; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; public class ViewURL { public ViewURL() {} public ViewURL(String strURL) { URL myURL = null; URLConnection urlCon = null; InputStream is = null; BufferedReader br = null; String data = null; String headerType = null; try { myURL = n.. 2020. 3. 18.
[JAVA] 스레드 기본상식, 데몬스레드 package book.chap15; /* 상황에 따라 분리된 스레드로 백그라운드 작업을 해야하는 경우가 있다. JVM안에 가비지 컬렉션과 같은 작업이 대표적이다. 이런 백그라운드 작업이 일반 스레드로 설정되어 있다면 전원이 종료되거나 사용자가 강제종료 하지 않는 한 애플리케이션은 영원히 정지 하지 않을 것이다. */ public class DaemonThreadTest { public static void main(String[] args) { Thread th = new Thread() { public void run() { try { while (true) { Thread.sleep(5000);//milisecond 5초 정지 System.out.println("INNER Thread종료"); } .. 2020. 3. 18.
[JAVA]StreamReader , BufferedReader package book.chap15; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Random; import javax.swing.JFrame; import javax.swing.JOptionPane; public class RandomGame extends JFrame{ public static void main(String[] args) { RandomGame rg = new RandomGame(); Random r = new Random(); int dap = r.nextInt(10); String user = "-1"; JOptionPane.showMessageDialog(rg, "0부터 9주에서.. 2020. 3. 18.
[SQL] 프로토콜에서 procedure 생성 Tord와 명령 프로토콜 창에서 실행가능하다 tord의 경우 접속되어있는 계정으로 실행하면되고 명령프로토콜의 경우 계정컨넥 해주어야한다. 컨넥하는방법은 sqlplus 계정이름/계정비번@ip주소:포트번호/오라클관리자이름 sqlplus yellow/tiger@???.???.???.???:1521/orcl11 도중에 conn 타계정이름/계정비번 을 작성하면 타계정으로 컨넥된다. SQL> conn scott/tiger 연결되었습니다. SQL> CREATE OR REPLACE procedure proc_deptList(p_rc OUT SYS_REFCURSOR) 2 IS 3 BEGIN 4 open p_rc5 for select deptno, dname from dept; 6 END; 7 /프로시저가 생성되었습니다... 2020. 3. 17.
[JAVA] 접근제어자 public > protected > default > private public = 공공의, 다른 패키지, 같은 패키지 모두 사용 가능함. protected = 다른 패키지인데 접근 불가함. 하지만 상속하는경우 또는 임포트하는 경우 둘다 사용이 가능하다. default = 다른 패키지인데 상속이여도 접근 불가함. private = 같은 패키지인데 상속이여도 사용 불가함. 어떤 변수가 private으로 접근제어자가 설정되어있는경우 직접 접근은 불가하나 메소드를 사용하여 접근은 가능하다.(메소드가 private로 되어있으면 이또한 접근 불가하다.) 1번 package hiding; public class Student{ int studentID; private String studentName; int g.. 2020. 2. 10.
[SQL]MySql - 2 고급 CREATE TABLE city2 AS SELECT * FROM city; = city2라는 데이터를 만들어줘 SELECT * FROM city로 SELECT * FROM city2; = 모든 정보를 보여줘 city2로부터 CREATA TABLE AS SELECT = city테이블과 똑같은 city2 테이블 생성 CREATE DATABASE suan CREATE DATBASE = CREATE DATABASE 문은 새로운 데이터베이스를 생성 USE suan = USE문으로 새 데이터베이스를 사용 GUI로 만드는 방법은 해당데이터베이스의 Tables 오른쪽버튼 Create Table CREATE TABLE test2 ( id INT NOT NULL PRIMARY KEY, = 고유의 키값부여, 인트이고 빈공간.. 2020. 1. 5.
[SQL]MySql - 1 초급 DML = Data Manipulation Language 데이터 조작 언어, 데이터를 조작(선택, 삽입, 수정, 삭제)하는데 사용되는 언어 DML 구문이 사용되는 대상은 테이블의 행 DML 사용하기 위해서는 꼭 이전에 테이블이 정의되어 있어야함 SQL문 중 SELECT, INSERT, UPDATE, DELETE가 이 구문에 해당 트랜잭션이 발생하는 SQL도 이 DML에 속함 -테이블의 데이터를 변경(입력/수정/삭제)할때 실제 테이블에 완전히 적용하지 않고, 임시로 적용시키는것 -취소가능 DDL = Data Definition Language 데이터 정의 언어 데이터 베이스, 테이블, 뷰, 인덱스 등의 데이터 베이스 개체를 생성/삭제/변경하는 역할 CREATE, DROP, ALTER구문 DDL은 트랜잭션.. 2020. 1. 5.
반응형