기존 이클립스에서 개발하던 프로젝트를 인텔리제이에서 사용하려고, 환경설정 중이었는데
인텔리제이 커뮤니티에서는 내장톰캣 지원 안된다.

그래서 기존에 사용하던 아파치 톰캣7을 직접 설치 후 연동해서 사용하려고 함.

※ 요약
- CATALINA_HOME, JAVA_HOME 환경변수 생성(톰캣 설치위치)
- service.bat install 이후 startup.bat 실행
- 콘솔에서 한글 깨질경우 아래 가이드 보고 설정 후 cmd 종료 후 재실행

 

1. Apache Tomcat 9 다운 / JDK 11 기존거 그대로 사용

> 기존에 톰캣 7사용중이었는데, JDK 11이랑 호환이 안되어서 톰캣 9로 올림
   톰캣7으로 환경설정 후 startup.bat 실행하면, 실행하다가 갑자기 혼자 종료 됨 - 9로 버전 올린 후 사용결과 정상동작     확인

 

 

2. 톰캣 환경변수 CATALINA_HOME 환경변수 추가

사진 1. CATALINA_HOME 환경변수 추가

 

 

3. JAVA_HOME 환경변수 추가

사진 2. JAVA_HOME 환경설정

 

 

4. 실행 후 설치 폴더로 들어가서 cmd : service.bat install  실행해서 설치

 

 

5. cmd로 CATALINA_HOME/bin로 이동 후 startup.bat 실행.
정상 실행되지만 한글 깨짐

log폴더 들어가서 catalina.log 파일 확인결과 log파일 내 한글은 안깨짐

구글링해서 regit 등록 후 정상 실행 확인

5.1 window+R 키 누르고 regedit 실행

사진 3. regedit 실행

 

 

5.2 HKEY_CURRENT_USER / Console 폴더에서 마우스 오른쪽 클릭 후 새로만들기 > Key 선택
   > 이름 'TomCat'으로 생성 함

사진 4. 레지스트리 편집기  

 

 

5.3 새로 생긴 Tomcat 폴더 클릭 후 안에 오른쪽 클릭 후 새로만들기 > DWORD(32비트) 값(D) 선택 후 생성 > 이름은 CodePage로 생성함

사진 5. 32비트 생성

5.4 값 데이터 65001, 10진수 선택 후 확인버튼 클릭

사진 6. 값 설정

 

 

6. 5번 설정 완료 후 cmd 종료 후 새로 킨 다음 다시 startup.bat 실행시켜서 콘솔 한글 안깨짐 확인!

사진 7. 정상 실행 확인

 

완료!

 

0을 root로 둔 트리에서
leaf 노드를 출력 해보기

n개의 노드를 담은 배열 n, 각 노드간 연결정보를 가지고 있는 배열 edges를 제공

1. 각 노드별 간선정보를 저장한 배열 link 만들기
2. 탐색 시작 (stack 구현)
3. 방문한 노드와 연결된 노드를 방문하지 않았으면 push
4. 현재 노드와 연결된 노드가 1개일 경우 Leaf Node

 

 

    public void solution(int[] n, int[][] edges){
        boolean[] ck = new boolean[n.length];
        List[] link = new List[n.length];
        Stack<Integer> st = new Stack<Integer>();
        int cur =0;
        int next = 0;

        for(int i=0; i<link.length; i++){
            link[i] = new ArrayList<Integer>();
        }
        for(int i=0; i<edges.length; i++){
            link[edges[i][0]].add(edges[i][1]);
            link[edges[i][1]].add(edges[i][0]);
        }
        //1. 0부터 시작
        st.add(0);
        while(!st.isEmpty()){
            cur = st.pop();
            //System.out.println(cur+" 방문");
            ck[cur] = true; //방문처리
            //연결지점 탐색
            for(int i=0; i<link[cur].size(); i++){
                next = (int) link[cur].get(i);
                if(ck[next]){
                    if(link[cur].size() == 1){
                        System.out.println(cur+" is leafNode");
                    }
                    continue;
                }else{
                    st.push(next);
                }
            }
        }

/*
        for(int i=0; i<link.length; i++){
            System.out.println(link[i]);
        }
*/
    }

    public static void main(String[] args) {
        test06 tc = new test06();

        int[] n = {0,1,2,3,4,5};
        int[][] edges = {{0,1},{2,0},{4,5},{1,3},{1,4}};

        tc.solution(n,edges);

    }

웹프로젝트로 포스 시스템을 한번 구현해 보려고 한다.

1. 개발 목적
- 개인 도매상에서 사용할 수 있는 간단한 웹 어플리케이션 개발
- 내가 필요해서

2. 프로젝트 환경 :
SpringFramework - 4.2.3Release
JavaScript - 화면단 기능 개발용도
Mybatis - 3.4.1
DB - MySQL 5.1.41
Server - Apache7.0
형상관리 - Git
Base Source - SpringWebBase (Git)

3. 주요 기능
- 상품 정보 등록 : 바코드를 key로 상품 정보를 등록하는 기능
- 상품 계산 : 바코드를 통해 상품을 계산해주는 기능
- 상품 관리 : 입고/출고/재고상태를 확인하는 기능
- 유통기한 관리 : 상품들의 유통기한을 관리해주는 기능
- 발주 관리 : 1주일 단위로 추가 주문해야 하는 리스트를 보여주고, 필요시 카카오톡 혹은 문자로 자동 주문 해주는 기능

4. 프로젝트 기간 (2달)

 

 

 

 

1. 사용법

 1) IF 조건 THEN

 2) ELSIF 조건 THEN

 3) ELSE 조건

 4) END IF;

2. 예시

DECLARE 

   v_ANSWER        NUMBER(5); 

BEGIN 


   SELECT COUNT(1) 
   INTO v_ANSWER 
   FROM DUAL; 
    
   IF v_ANSWER > 0 THEN 
      DBMS_OUTPUT.PUT_LINE('0보다 큼 v_ANSWER = '||v_ANSWER);  
   ELSIF v_ANSWER = 0 THEN 
      DBMS_OUTPUT.PUT_LINE('0 v_ANSWER = '||v_ANSWER); 
   ELSE 
      DBMS_OUTPUT.PUT_LINE('0보다 작음 v_ANSWER = '||v_ANSWER); 
   END IF; 
    
END;

 

- 강제 Pull
git fetch --all
git reset --hard origin/master
git pull origin master

- 강제 Push
git push origin master --force

'IT > Git' 카테고리의 다른 글

Intelij 기존 프로젝트 Github repository 생성하기  (0) 2022.01.14
reset, revert, stash  (0) 2020.05.03
Git submodule?  (0) 2020.03.07
Git - tag 긋기  (0) 2019.06.21
Git 개념 (2) - pull / commit / push  (0) 2019.05.22

1. 오라클 컬럼명으로 테이블 찾기 -  ALL_TAB_COLUMNS 활용

SELECT *
FROM ALL_TAB_COLUMNS
WHERE COLUMN_NAME = {컬럼명 입력};

 

2. 일부 소스로 프로시저명 찾기

SELECT *
FROM ALL_SOURCE
WHERE TEXT LIKE '%{일부 소스}%';

 

3. OBJECT 검색

SELECT *
FROM ALL_OBJECTS;

SELECT *
FROM USER_OBJECTS;

 

'DataBase > Oracle' 카테고리의 다른 글

PLSQL IF/ELSE 사용  (0) 2020.12.02
오라클 프로시저 실행방법  (0) 2020.10.15
Oracle PL/SQL CURSOR 반복문 사용하기  (0) 2020.10.14
Oracle 실습 환경 구축하기  (0) 2020.02.23

Date Type 변경
- format 변경 = .format
- Type 변경 = .parse


1. 소스 코드

 

String time = "2020/10/15 17:37:15"  // 시간
int minute = 30;  // 분

SimpleDateFormat fm1 = new SimpleDateFormat("yyyy/mm/dd HH:mm:ss");


//1. String to Date
Date StringToDate;
StringToDate = fm1.parse(time);
System.out.println("1. String to Date");
System.out.println("String -> Date : "+StringToDate);
System.out.println("String -> Date : "+StringToDate.getClass()+"\n");

//2. Date to String
String DateToString;
DateToString = StringToDate.toString();
System.out.println("2. Date to String");
System.out.println("Date -> String : "+DateToString);
System.out.println("Date -> String : "+DateToString.getClass()+"\n");

//3. String change Format
String chg_dateFormat;
chg_dateFormat = fm2.format(StringToDate);
System.out.println("3. String change DateFormat");
System.out.println("String Change DateFormat : "+chg_dateFormat);
System.out.println("StringToDate Type : "+chg_dateFormat.getClass());

//4. Time Add           
String beforeTime ="2020/09/30 17:30:15";
String afterTime ="";

int minute = 30;
int hour = 1;
int day = 2;

Date D;
Calendar cal = Calendar.getInstance();
D = fm1.parse(beforeTime);
cal.setTime(D);
cal.add(Calendar.DAY_OF_WEEK, day);
cal.add(Calendar.MINUTE, minute);
cal.add(Calendar.HOUR, hour);
afterTime = fm1.format(cal.getTime());

System.out.println("4. Time Add");
System.out.println("before : "+beforeTime);
System.out.println("after  : "+afterTime);

t

2. 실행 결과

사진 1. 이클립스 실행결과

'IT > Java' 카테고리의 다른 글

Map Value에 LIST / MAP / 자료형 배열 생성  (0) 2022.03.19
Eclipse java Working Set 설정  (0) 2020.03.07
interface와 상속 차이 (미완)  (0) 2019.12.22
Java 다중 반복문 빠져나가기  (0) 2019.10.05
02. 상속  (0) 2019.01.15

1. 프로시저를 보면 프로시저 상단에 변수설정을 확인
2. 해당 변수를 파라미터를 넣어서 실행
참고) 아래 예제 커서 내 변수 I_로 시작하면 insert parameter / O_로 시작하면 프로시저 실행 후 return값

실행 예제1) BATCHTEST_C_01 프로시저 실행하기

------------------------------------------------------------------------------- 
프로시저 : BATCHTEST_C_01
------------------------------------------------------------------------------- 
CREATE OR REPLACE PROCEDURE test01."BATCHTEST_C_01" ( 
   I_WRK_DT IN VARCHAR2 --작업일자    
) IS
BEGIN
...
END;
------------------------------------------------------------------------------- 


-> 이 경우 i_wrk_dt라는 varchar 파라미터 1개가 필요

DECLARE    


BEGIN 

     DBMS_OUTPUT.PUT_LINE('START');   --로그찍기

      test01.BATCHTEST_C_01('20200406'); 
      
     DBMS_OUTPUT.PUT_LINE('END');    --로그찍기 

END; 

-> 이렇게 SQL에 두고 실행 후 메세지 뜨는거 보고, 에러 메세지 없으면 정상실행한것.


실행예제2) return값에 cursor types가 있는경우

-------------------------------------------------------------------------------  
프로시저 : RETRIEVE_R_01
-------------------------------------------------------------------------------  

CREATE OR REPLACE PROCEDURE test01."RETRIEVE_R_01" ( 
    I_USER_ID               IN VARCHAR2, 
    O_RESULT              OUT TYPES.CURSORTYPE, 
    O_RTNCD               OUT VARCHAR2, 
    O_RTNMSG             OUT VARCHAR2 
) IS
BEGIN
...
END;

CURSORTYPE 변수 지정 후 실행

DECLARE    
rtn_cd1  varchar2(10); 
rtn_msg1 varchar2(1000); 
O_RESULT TYPES.CURSORTYPE; 

BEGIN 

     DBMS_OUTPUT.PUT_LINE('START!');   
      
     test01.RETRIEVE_R_01('test01',O_RESULT,rtn_cd1,rtn_msg1); 
      
     DBMS_OUTPUT.PUT_LINE('END!');    
END; 



'DataBase > Oracle' 카테고리의 다른 글

PLSQL IF/ELSE 사용  (0) 2020.12.02
오라클 컬럼명으로 테이블 찾기  (0) 2020.10.21
Oracle PL/SQL CURSOR 반복문 사용하기  (0) 2020.10.14
Oracle 실습 환경 구축하기  (0) 2020.02.23

+ Recent posts