728x90

 기본 환경: IDE: Eclipse, Language: Java

 

발생 Error

Java에서 다음 Source Code를 실행할 경우,

else {
	int index = input.indexOf(repOld);
	int count=0;

	while(index > -1) {
		count++;
		index = input.indexOf(repOld, index + repNew.length());
	} // while: find String
			
	if(index!=-1) {
		String inputNew = input.replace(repOld, repNew);
	} System.out.println(inputNew);
}

inputNew cannot be resolved to a variable

→ java.lang.Error: Unresolved compilation problem 발생

 

 

Error 원인

String inputNew를 if-else 구문 내 선언하여 지역변수화 됨

else 구문 밖 println문에서는 해당 변수를 사용할 수 없음

 

 

해결 방법

else 구문 밖에서 String inputNew 선언 후, else 구문 안에서 값 계산

else {
	int index = input.indexOf(repOld);
	int count=0;
        String inputNew=""; // Initialization

	while(index > -1) {
		count++;
		index = input.indexOf(repOld, index + repNew.length());
	} // while: find String
			
	if(input.indexOf(repOld)!=-1) {
		inputNew = input.replace(repOld, repNew);
	} System.out.println(inputNew);
}

 

 

 

728x90
728x90

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

04강 - 오라클 PDB 서버에 접속하기

1. CDB: Conatiner DB
: 여러개의 PDB를 담을 수 있는 DB

* CDB root Container
: CDB는 하나의 루트 컨테이너를 가지며, CDB 생성 시 루트 컨테이너 자동 생성
: CDB 자체에 대한 시스템 정보와 멀티 테넌트의 핵심이 되는 모든 PDB에 필요한 메타 데이터 저장

 

 

2. PDB
: local user 입장에서는 독립적 DB로 보이는 CDB(Container DB)에서 자유롭게 탈부착이 가능한(Pluggable) DB
: PDB 끼리는 서로 독립적이므로 서로 데이터를 공유하지 못함

 

 

* PDB 접속 전 PDB 존재 확인

1. SQL Plus 실행 또는 consol(cmd)에서 sqlplus sys as sysdba
2. 비밀번호 입력
3. SQL> 에서 select name from v$pdbs; 실행

PDB$SEED: 원본
XEPDB1: 실제 PDB(가상 DB)

 

* SQL Developer를 활용한 PDB server 접속

DB의 메인이 되는 CDB를 직접 다루는 것이 위험할 수 있으므로 가상DB인 PDB를 이용

 

 DB 원격 접속을 위한 설정 변경
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE) 활용

1. cmd: sqlplus sys as sysdba
2. 비밀번호 입력
3. SQL> select name from v$pdbs; 실행
4. SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

5. SQL Developer
6. 호스트 이름: Local DB가 설치되어있는 PC에서 cmd: ipconfig -> IPv4 주소 붙여넣기
7. 테스트 후 접속

⚠️ 포트: 1521가 방화벽 설정에서 닫혀있으면 Local DB에 원격으로 접속하기 위해서 따로 설정이 필요함

 

 

 

참고 자료

📑 Oracle - Mutitenant, PDB, CDB 란?

📑 오라클 멀티테넌트 DB 기본개념 정리 (Oracle Multi-Tenant DB Basics)

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

728x90
728x90

 기본 환경: IDE: Eclipse, Language: Java

 

발생 Error

Java에서 다음 Source Code를 실행할 경우,

public static void main(String[] args) {
	int a; // 4byte(32bit) memory instance 생성
	System.out.println("Local Variable a = " + a);
}

The local variable a may not have been initialized

→ java.lang.Error: Unresolved compilation problem 발생

 

 

Error 원인

int a 선언 후, 초기값을 지정하지 않음

: method 내부의 지역 변수(Local value)의 경우, garbage value가 초기에 저장되어있으므로 초기값 설정이 필요

 

 

해결 방법

int a 선언 후, 초기값 지정

public static void main(String[] args) {
	int a=0; // 4byte(32bit) memory instance 생성
	System.out.println("Local Variable a = " + a);
}

 

 

 

➕ 전역 변수의 초기값 설정

public class Variable02 {
	int a; // Field, Global Variable: Class 내부에서 사용 가능
	// Field는 초기화가 되어있으므로 변수값 지정없이 사용 가능
	double b;
	static int c;
	// static variable의 경우, memory 할당이 필요없이 자동으로 메모리에 공간이 부여되어있음(메모리 할당 선언 필요X)

	public static void main(String[] args) {
		Variable02 v = new Variable02(); // Variable Class memory 생성
		// v: Variable02의 address 보유(Class_name@16진수_참조주소값)
		System.out.println("Variable02: " + v);
		// Variable02: basic.Variable02@515f550a (pkg.Class@ref_address)
		
		System.out.println("Field a = " + v.a); // field 출력: Default 0
		// Variable02의 주소값을 가진 v에서 해당 클래스의 필드값 a를 출력
		System.out.println("Field b = " + v.b); // field 출력: Default 0.0
		System.out.println("Field c = " + c); // field 출력: Default 0
		// Variable02.c와 동일
		// v.c 사용 필요 X
	}
}

class에서 직접 선언되는 전역변수(Global value)의 경우에는 초기값 설정이 되어있으므로 초기값 설정 불요

 

public class Default_value {
	boolean a;
	char b;
	byte c;
	short d;
	int e;
	long f;
	float g;
	double h;
	
	public static void main(String[] args) {
		Default_value dv = new Default_value();
		System.out.println("Default boolean: " + dv.a); // false
		System.out.println("Default char: " + dv.b); // '\0'
		System.out.println("Default byte: " + dv.c); // 0
		System.out.println("Default short: " + dv.d); // 0
		System.out.println("Default int: " + dv.e); // 0
		System.out.println("Default long: " + dv.f); // 0
		System.out.println("Default float: " + dv.g); // 0.0
		System.out.println("Default double: " + dv.h); // 0.0
	}
	
}

 

 

728x90
728x90

 기본 환경: IDE: Eclipse, Language: Java

 

발생 Exception

Java에서 다음 Source Code를 실행할 경우,

public class Exam {
	private char[] ox=null;

	public void compare() {
		for(int i=0; i<JUNG.length(); i++) {
			if(dap.charAt(i)==JUNG.charAt(i)) {
				ox[i] = (char)'O';
			} else {ox[i] = (char)'X';}
		} // for
	} // compare
}

Exception in thread "main" java.lang.NullPointerException: Cannot store to char array because "this.ox" is null

→ NullPointerException 발생

 

 

Exception 원인

char[]를 선언 후, 배열의 크기를 지정해주는 초기화 작업을 진행하지 않음

 

 

해결 방법

public class Exam {
	private char[] ox=null;

	public void compare() {
    ox = new char[JUNG.length()];
    
		for(int i=0; i<JUNG.length(); i++) {
			if(dap.charAt(i)==JUNG.charAt(i)) {
				ox[i] = (char)'O';
			} else {ox[i] = (char)'X';}
		} // for
	} // compare
}

/*
Result
O	X	X	O	O
*/

ox = new char[JUNG.length()];

: ox 배열에 대해 크기 지정

 

 

 

참고 자료

📑 why can't I assign null to a particular index of Char Array?

📑 Primitive Types

📑 charGPT

 

728x90
728x90

이 글은 양주종의 코딩스쿨 리눅스(Linux) 기초 강좌 30강 모음 수강하며 정리한 글입니다.

 

30강 설치 후 할 일

 

(일반 사용자 id: j, pw: j)

(관리자 id: root, pw: r)

 

 

CentOS7

1.  System Time Check

[root@hj0216 ~]# date

 

2. Installed pkg num check

[root@hj0216 ~]# rpm -qa | wc -l
343

➕ pkg install 여부 확인

[root@hj0216 ~]# rdate
-bash: rdate: command not found # uninstalled
[root@hj0216 ~]# gcc
-bash: rdate: command not found # uninstalled
[root@hj0216 ~]# javac
-bash: rdate: command not found # uninstalled
[root@hj0216 ~]# locate
-bash: rdate: command not found # uninstalled

 

3. Network Test

[root@hj0216 ~]# ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=33.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=31.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=54 time=31.7 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 31.442/32.097/33.088/0.712 ms

 

4. ssh server connect

[root@hj0216 ~]# systemctl stop firewalld # 해당 session에서만 방화벽 끄기
[root@hj0216 ~]# systemctl disable firewalld # 모든 session에서 방화벽 끄기
[root@hj0216 ~]# systemctl start sshd # 해당 session에서만 ssh service 실행
[root@hj0216 ~]# systemctl enable sshd # 모든 session에서 ssh service 실행

[설정] -> [네트워크] -> [고급] -> [포트 포워딩]

포트 번호: 22, 80 추가

[파일] -> [환경설정] -> [입력] -> [가상머신] 호스트키 조합: F11 입력

(마우스 포인터를 리눅스에서 꺼내주는 역할)

 

PuTTY login

[root@hj0216 ~]# date
2023. 02. 05. (일) 14:18:32 KST
[root@hj0216 ~]# date -s "2000-12-12 21:30"
# 일자 및 시간 임의 지정

rdate 설치를 통한 시간 자동 설정

[root@hj0216 ~]# yum -y install rdate
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
...
==============================================================================
 Package         Arch             Version                 Repository      Size
==============================================================================
Installing:
 rdate           x86_64           1.4-25.el7              base            19 k

Transaction Summary
==============================================================================
Install  1 Package

Total download size: 19 k
Installed size: 29 k
Downloading packages:
rdate-1.4-25.el7.x86_64.rpm                               |  19 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : rdate-1.4-25.el7.x86_64                                     1/1
  Verifying  : rdate-1.4-25.el7.x86_64                                     1/1

Installed:
  rdate.x86_64 0:1.4-25.el7

Complete!
[root@hj0216 ~]# rdate -s time.bora.net
[root@hj0216 ~]# date
2023. 02. 05. (일) 14:23:05 KST

timeZone 변경

[root@hj0216 ~]# timedatectl
      Local time: 일 2023-02-05 14:23:41 KST
  Universal time: 일 2023-02-05 05:23:41 UTC
        RTC time: 일 2023-02-05 05:23:43
       Time zone: Asia/Seoul (KST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@hj0216 ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...
[root@hj0216 ~]# timedatectl set-timezone "Continent/Country"

 

5. Essential pkg installment

[root@hj0216 ~]# yum -y install vim gcc gcc-c++ tree psmisc bc zip unzip man-pages \
man-pages-ko rdate ntpdate strace mloacte ftp wget dialog lsof bzip2 \
rsyslog ncurses at vsftpd httpd php net-tools mariadb-server mariadb \
java-1.8.0-openjdk java-1.8.0-openjdk-devel tomcat lpr quota

# \ 줄바꿈을 위한 Enter 무시

설치되는 pkg list

vim: Vim: Vi IMproved

Bram Moolenaar가 만든 vi 호환 텍스트 편집기

gcc gcc-c++

c, c++ compiler

tree

dir 하위 구조를 계층적으로 표시해 주는 유틸리티로 전체 구조를 대략적으로 파악할 때 유용

psmisc

fuser 사용을 위한 pkg, 특정 file이나 dir를 사용하고 있는 user or process ID를 찾거나 종료시킬 때 사용

특정 파일 시스템을 umount or service stop할 때 특정 process 때문에 진행이 안 될 경우, 그 process를 kill하기 위해 사용

bc: basic calculator

zip unzip

압축 및 압축해제 pkg

man-pages, man-pages-ko: manual pages
rdate: remote date

원격지의 timeserver에서 시간정보를 가져와 local system의 시간과 동기화를 하는 명령어

ntpdate: network time protocol

NTP server를 이용해서 시간을 동기화할 때 사용하는 명령어

strace

Linux에서 서버 병목을 확인할 수 있도록 system call을 측정하는 tool

리눅스 커널과 프로세스 사이에서 발생하는 시스템 콜, 시그널 전달, 프로세스 상태 변화 등을 모니터링할 수 있음

mloacte

file, dir list를 주기적으로 DB에 저장하고, 편리하게 검색할 수 있도록 도와주는 유틸리티

ftp: File Transfer Protocol

인터넷을 통해 파일을 교환할 수 있게해주는 서비스

wget: web get

웹 상에서 파일을 다운로드 받을 때 사용하는 명령어

dialog

Shell script의 대화 상자를 사용하여 다양한 질문을 제시하거나 메세지를 표시할 수 있는 프로그램

lsof: list open files

system에서 열린 파일 목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일 종류 등 상세한 정보를 출력

bzip2

압축 pkg
rsyslog: Rocket-Fast System for Log Processing

IP network에서 로그 메세지를 전달하기 위해 UNIX, Unix 계열 컴퓨터에서 사용하는 open source

ncurses

terminal graphic lib

at

지정된 시간에 명령어나 프로그램을 실행시키는 명령어

vsftpd: Very Secure File Transfer Protocol Daemon

FTP의 보안을 강조한 파일 전송 프로토콜

httpd: http demon

서비스를 처리해주는 program을 demon이라하며, http를 처리해주는 서비스를 httpd라고 함

php

server pragramming language

net-tools: network tools

ipconfig 명령어 사용 시 필요한 pkg

mariadb-server mariadb

DB server
java-1.8.0-openjdk java-1.8.0-openjdk-devel: Java Development Kit

Java 환경에서 돌아가는 프로그램을 개발하는데 필요한 툴들을 모아놓은 SW pkg

tomcat

동적 페이지를 구현하기 위해 java에서 만든 프로그램이 servlet이며, 이런 servlet들의 실행을 돕는 프로그램이 tomcat

lpr: Line printer Demon

파일 내용 출력

quota

사용자별 디스크 사용량을 제한하는 pkg

 

6. Image Backup(Set restore point)

Essential pkg Install 후,

PuTTY logout

CentOS7 현재 시스템 상태 저장하기

VirtualBox: 파일 -> 가상 시스템 내보내기

 

➕ 가상 시스템 가져오기(기존에 사용하던 CentOS와는 다른 OS로 취급됨)

-> 내문서에 자동 저장된 가상 시스템 Default로 가져오기

-> PuTTY 실행 후, pkg 설치 상태 확인

login as: root
root@127.0.0.1's password:
Last login: Sun Feb  5 14:18:18 2023 from gateway
[root@hj0216 ~]# rpm -qa | wc -l
475

 

 

 

참고 자료

📑 리눅스 fuser 설치 및 사용법

📑 [리눅스 명령어] rdate - 타임서버와 시스템 시간 동기화

📑 strace가 -k 옵션을 만난 날

📑 리눅스 기본명령어 - wget

📑 dialog - display dialog boxes from shell scripts

📑 [Linux] rsyslog을 이용한 history 내역 남기기

📑 리눅스 vsftpd 서정하는 방법과 ftp 서버 만들기에서 파일업로드까지

📑 4. Servlet - Tomcat(WAS)과  Servlet이란?

📑 Linux, 사용자 및 그룹별 디스크사용량제한하기

 

728x90