반응형

◎ 라운드로빈 자바예제 파일

▼ 쓰레드를 만들고 작업시간 분할시간을 정해서 출력해서 보여주게끔 간단하게 잔 예제이다.

package javaSchedule; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Round_Robin { // WT (Wait Time) : 기다린 시간 // TT (Total Time ) : 총 걸린 시간 public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Time Quantum 시분할시간을 정하세요(숫자입력): "); int q = Integer.parseInt(br.readLine()); System.out.println("작업할 프로세스의 수를 정하세요 (숫자입력): "); int n = Integer.parseInt(br.readLine()); int proc[][] = new int[n + 1][4];//proc[][0] AT array, [][1] - RT , [][2] - WT , [][3] - TT for(int i = 1; i <= n; i++) { System.out.println(i + " 번쨰 프로세스의 작업시간은? (Burst Time) (숫자입력): "); proc[i][1] = Integer.parseInt(br.readLine()); } System.out.println(); //total_time 계산 및 time_chart 배열 초기화 int total_time = 0; for(int i = 1; i <= n; i++) { total_time += proc[i][1]; } int time_chart[] = new int[total_time]; int sel_proc = 1; int current_q = 0; for(int i = 0; i < total_time; i++) { //선택한 프로세스를 time_chart의 현재 시간에 할당 time_chart[i] = sel_proc; //1 단위 시간당 CPU가 할당되었으므로 선택한 프로세스의 남은 시간을 1 씩 감소시킵니다. proc[sel_proc][1]--; //WT 와 TT 산출 for문 for(int j = 1; j <= n; j++) { if(proc[j][1] != 0) { proc[j][3]++;//만약 프로세스 실행이 완료되지 않은 경우 TT는 1씩 증가함 if(j != sel_proc)//프로세스가 현재 CPU에 할당되지 않은 경우 WT는 1씩 증가함 proc[j][2]++; } else if(j == sel_proc)//이는 프로세스에 CPU가 할당되어 실행이 완료된 특수한 경우 proc[j][3]++; } //Time_Chart 출력 if(i != 0) { if(sel_proc != time_chart[i - 1]) //CPU가 다른 프로세스에 할당된 경우 현재 시간 값과 새 프로세스의 이름을 프린트 { System.out.print("--" + i + "--P" + sel_proc); } } else//현재 시간이 0인 경우, 즉 인쇄가 막 시작되면 첫 번째 선택된 프로세스의 이름을 프린트 System.out.print(i + "--P" + sel_proc); if(i == total_time - 1)//모든 프로세스 이름이 인쇄되었으므로 실행이 끝나는 시간을 프린트 System.out.print("--" + (i + 1)); //다음 번 반복을 위해 sel_proc 값 업데이트 current_q++; if(current_q == q || proc[sel_proc][1] == 0)//시간이 만료되었거나 현재 프로세스가 실행이 완료된경우 { current_q = 0; //sel_proc에 대해 다음 유효한 값을 선택 for(int j = 1; j <= n; j++) { sel_proc++; if(sel_proc == (n + 1)) sel_proc = 1; if(proc[sel_proc][1] != 0) break; } } } System.out.println(); System.out.println(); //각 프로세스의 WT 및 TT 인쇄 System.out.println("P\t WT \t TT "); for(int i = 1; i <= n; i++) { System.out.printf("%d\t%3dms\t%3dms",i,proc[i][2],proc[i][3]); System.out.println(); } System.out.println(); //WT & TT 평균시간 인쇄 float WT = 0,TT = 0; for(int i = 1; i <= n; i++) { WT += proc[i][2]; TT += proc[i][3]; } WT /= n; TT /= n; System.out.println("The Average WT is: " + WT + "ms"); System.out.println("The Average TT is: " + TT + "ms"); } }


반응형

'프로그래밍 > Java' 카테고리의 다른 글

[JAVA] 리터럴과 형변환  (0) 2022.01.04
JAVA - 인스턴스, 힙 메모리  (1) 2022.01.01
반응형


◎ 오라클 설치 환경

OS : CentOS6.9 x64 (정확힌 Yum update 를 해서 6.10 final 이다. 6.9도 된건 확인함) Oracle : 11gR2

◎ 오라클 설치방법

1. Oracle 설치에 필요한 rpm 패키지 설치(없으면 깐다)

아래 명령을 복붙해서 설치

yum -y install setarch make glibc libaio compat-libstdc++-33 compat-gcc-34 gcc libXp openmotif compat-db glibc-devel libstdc++-devel xscreensaver binutils compat-libcap1 gcc-c++ libaio libaio-devel sysstat

2. Oracle 설치 위한 환경 설정

# vi /etc/sysctl.conf   //아래값보다 큰 경우에만 적용

# add parameter ##################################################### fs.aio-max-nr = 1048576 fs.file-max = 6815744 #kernel.shmall = 2097152 ## 원래 있던 값이 더 커서 주석 처리 #kernel.shmmax = 536870912 ## 원래 있던 값이 더 커서 주석 처리 kernel.shmmni = 4096 # semaphores: semmsl, semmns, semopm, semmni ######################## kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default=4194304 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048586

# /sbin/sysctl -p // 상위 설정 변경값 반영(필수) 아래와같이 뜰꺼임 (확인용도)

net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key error: "net.bridge.bridge-nf-call-iptables" is an unknown key error: "net.bridge.bridge-nf-call-arptables" is an unknown key kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586

3. JAVA 설치 (Root 계정 사용 7,8버전 추천)

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

(자바파일 설치 링크)

Aceept 체크 후 linux x86 ,64 자기의 OS의 맞춰서 Tar 로 다운 ( 저는 tar가 편해서 이렇게함)

# gunzip jdk-8-linux-i586.tar.gz # tar -xvf jdk-8-linux-i586.tar

그후 압축을 압축을 풀면 jdk1.8.0_211 폴더가 생겼을 거임 그 폴더를 원하는 경로에 넣어주고 JAVA 폴더로 심볼릭 링크를 생성하면됨. 전 /usr/ 에 옮기고 JAVA 심볼릭 링크를 만듬

# mv jdk1.8.0_211 /usr/ # cd /usr # ln -s jdk1.8.0_211 java

위와 같이 명령어를 치면 아래 처럼 구조가 되있을거임

P.S 심볼릭 링크를 만드는 이유는 여러가지가 있겠지만 나중에 JDK 버전이 업데이트 됬을 시 환경 설정을 변경하지 않고 심볼릭 링크의 내용만 수정해 주면 된답니다.

이제 설치된 JAVA 파일을 계정에 등록해줘야 사용할수 있어서 등록해줌.

# vi /etc/profile //아래 구문을 복붙 해도 됨 #javapath JAVA_HOME=/usr/java CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH PATH

그리고 리눅스에 기본적으로 설정된 java 명령어 위치의 인식을 피하기 위해 /usr/bin 디렉토리의 java 파일 이름을 바꿔줍시다. 그 후 source 명령어를 사용해 /etc/profile의 내용을 현제 쉘에 적용시킵니다. 그리고 java, javac 명령어로 버전을 확인해서 설치된 버전이 출력되면 제대로 설치 된겁니다.

# mv /usr/bin/java /usr/bin/java-old # source /etc/profile # java -version # javac -version

이렇게하면 자바 설치는 완료됬습니다. 오라클설치파일은 자바로 돌아가서 자바를 설치해야 설치가 가능합니다.

4. Oracle 관리자 계정 생성 (필수)

- 그룹 생성 # groupadd oinstall # groupadd dba - 계정 생성 # useradd -g oinstall -G dba -d /home/oracle oracle - 패스워드 설정 # passwd oracle - 패스워드 정책 변경 # pwconv - 그룹 및 계정 확인 # vi /etc/group oinstall:x:501: dba:x:502:oracle # vi /etc/passwd oracle:x:501:501::/home/oracle:/bin/bash

5. Oracle 계정 Profile 수정 ( oracle 계정 사용 , 필수)

# su - oracle $ vi /home/oracle/.bash_profile // 아래와 같이 입력 ## 아래는 11g 설정 export ORACLE_HOME=/oracle export ORACLE_HOME=$ORACLE_HOME/product/11gr2 export ORACLE_SID=INFRAORA export PATH=$PATH:$ORACLE_HOME/bin # export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601 // oracle 계정이 클라이언트로 언어문제 발생시 # export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949 // 에만 세팅 수정.. 설치시 아예 빼자!!

6. Oracle 11gr2 Release 2 다운로드 및 압축 풀기(Root 계정 사용, 필수)

▼ 오라클 홈페이지 11gR2 설치링크

https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

리눅스 버전에 맞는 파일을 설치하면 되겠습니다.

이렇게 아무 폴더나 다운받으시고 2 파일의 압축을 풀어주시면 database 라는 폴더가 생길겁니다.

# unzip linux.x64_11gR2_database_1of2.zip # unzip linux.x64_11gR2_database_2of2.zip //압축이 다풀리면 원하는 경로에 database 를 가져다 놓으면 됩니다. 전 /oracle 에 옮겨놨습니다. # mv database /oracle/

7. 압축 푼 파일 database 폴더 oracle:oracle 권한 부여 (Root 계정 사용 , 필수)

# chown -R oracle.oinstall /oracle/database

8. 화면 권한 부여 (Root 계정 사용 , 필수)

# xhost + //만약 여기서 에러가 나면 터미널을 껏다가 다시 한번 시도해보시기 바랍니다. //그 이후도 안되면 에러 문구 구글 검색 하셔야 합니다 XHOST 화면권한이 안먹히는겁니다.

9. oracle 계정 선택 (필수)

- oracle 계정 사용 # su - oracle. - 한글 깨짐 방지(필요시) $ export LANG=C

10. runInstaller 실행(Oracle 계정 사용, 필수)

- 실행 $ cd /usr/local/src/database $ ./runInstaller






















11. 이메일 설정

- 이메일 설정 체크박스 해제/메시지 박스 나오면 OK.


12. 설치 옵션 선택

- Database 생성 및 구성 선택.



13. Desktop vs. Server Class 선택

- Server Class 선택.



14. DB 운영 선택

- 단독 인스턴스 DB 선택.



15. Typical vs. Advanced install 선택

- Advanced install 선택.



16. 언어 선택

- Korean 추가.



17. 에디션 선택

- Standard Edition 선택.



18. $ORACLE_HOME, $ORACLE_BASE 확인

- .bash_profile과 동일한지 확인.



19. 인벤토리 설정

- /oracle/oraInventory로 경로 설정.

- oinstall로 그룹 설정.

- 메시지 박스에서 Yes 선택.



20. 데이터베이스 타입 선택

- General Purpose / Transaction Processing 선택.



21. DB명 및 SID 설정

- 다른 인스턴스 추가가 아니라면 동일하게 입력.



22. 메모리 설정

- Enable Automatic Memory Management 체크.


23. 문자셋 선택

- KO16WIN949 선택.



24. 보안 설정

- Assert all new security settings 체크.



25. Oracle Enterprise Manager 11g Grid Control 선택

- 그냥 다음으로 PASS.



26. File Storage 선택

- File System 선택.

- /oradata 입력.



27. 자동 백업 선택

- Do not enable automated backups 선택.



28. 계정 암호 설정

- Use the same password for all accounts 선택 후 암호 입력.



29. SYSDBA, SYSOPER 그룹 선택

- 둘다 dba로 선택.



30. 설치 요구사항 체크

- 패키지가 상위버전이 깔린 경우 Failed가 뜨는 건지도...

- pdksh은 직접 받아서 깔아야 한다고도...

(http://rpm.pbone.net/index.php3/stat/4/idpl/2398776/com/pdksh-5.2.14-8.i386.rpm.html)

※ 이후 진행은 시키는 대로...


◎ 오라클 원격(외부) 접속 허용

▼ 내용

보통 linux (CentOS 6.9) 설치하면 방화벽은 따로 안막혀있다. 그런데 오라클 설치하고 원격으로 접속하려 하면 자꾸 접속이 안되있다. 리스너도 start 했고 db도 startup 했는데 원격으로 접속이 안된다면.

Port 번호가 막혀있는거다. 그래서 port번호를 열어줘야한다.

lsnrctl start //리눅스의 oracle 계정으로 실행 startup // "sqlplus / as sysdba" --db 접속후 start up //이렇게 하고도 원격으로 접속이 안된다면 방화벽 확인 후 방화벽도 정상이라면 iptables -I INPUT 1 -p tcp --dport 1521 -j ACCEPT //1521 PORT를 열어준다


반응형
반응형





◎ => (애로우 함수)

▼ 내용

ECMA6 들어서면서 => 애로우 함수를 사용할수 있따.

const handleListening = () =>{ console.log('ㅎㅇ'); } // 위에 는 const handleListening = function () { console.log('ㅎㅇ'); } //이거랑 같다

◎ import , export

▼ 내용

import 문은 외부 모듈이나 다른 스크립트 등으로부터 export 된 기능을 가져오는데 사용됩니다.

(함수,변수 모듈화 class화?)

자바스크립트는 호이스팅이 되는 관계로 변수나 함수가 전역에서 사용할 수 있었기 때문에 이름으로 충돌을 일으키는 경우가 많아서 이용하기 어려웠다. (CommonJS로 사용할 수는 있었음)

ES6부터는 모듈 시스템을 사용할 수 있게 만들었다.

하지만 브라우저에서 지원이 되지 않고있기때문에 webpack같은 모듈 번들러를 사용해야만 모듈시스템(import, export)을 사용할 수 있다.

문법.. import name from "module-name"; import * as name from "module-name"; import { member } from "module-name"; import { member as alias } from "module-name"; import { member1 , member2 } from "module-name"; import { member1 , member2 as alias2 , [...] } from "module-name"; import defaultMember, { member [ , [...] ] } from "module-name"; import defaultMember, * as alias from "module-name"; import defaultMember from "module-name"; import "module-name";

export const pi = Math.PI; export function square(x) { return x * x; } export class Person { constructor(name) { this.name = name; } }

export 키워드로 변수, 함수, 클래스를 외부의 스크립트로 모듈화 시킬 수 있다.

외부로 보내고 싶은 것들에 일일이 키워드를 붙여도 되고 아래처럼 한번에 export해도된다.

const pi = Math.PI; function square(x) { return x * x; } class Person { constructor(name) { this.name = name; } } export { pi, square, Person };
import {userRouter} from "./router"; //export const userRouter = express.Router(); import app from "./app"; //export default app;

또한 export default app; 이렇게 할경우엔 바로 import app 할수 있지만

(export default 파일명 한다는건 안에있는 모든걸 export 해준다는것)

export const userRouter 이렇게 할경우엔 가져올때 {} 를 붙혀서 써줘야한다.

// main.js import { pi, square, Person } from './lib'; console.log(pi); // 3.141592653589793 console.log(square(10)); // 100 console.log(new Person('Lee')); // Person { name: 'Lee' }

반대로 가져오는 방법은 위와 같이 "import" 키워드를 사용하고 from 으로 해당 모듈의 js파일을 가리키면 된다.

import * as lib from './lib'; console.log(lib.pi); // 3.141592653589793 console.log(lib.square(10)); // 100 console.log(new lib.Person('Lee')); // Person { name: 'Lee' }

위와 같이 "as"를 사용해서 일일이 모듈을 불러오지 않고 한번에 사용할 수 있다.


◎ 구조 분해 할당 ( destructuring assignment )

▼ 내용

객체 또는 배열을 소인수분해 하듯이 분해하여 할당할수 있다.

const searchingBy = req.query.term //기존방식 const { query: {term : searchingBy} //req.query.term 의값을 searchingBy 할당 } = req;

솔직히 이걸 작성하면서 대략적인 느낌만 이해가간다.. 하지만 왜 구지 보기힘들게 이렇게쓰나 싶다.. 나중에 이해더가면 추후작성하기로하고 mdn 주소를 남긴다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

새로운 변수 이름에 할당

객체 구조분해를 사용하여 새로운 변수 이름에 값을 할당할 수 있습니다.

var o = {p: 42, q: true}; var {p: foo, q: bar} = o; console.log(foo); // 42 console.log(bar); // true






반응형
반응형

◎ <li> 태그

▶ UL OL DL 의 각 리스트들을 li 로 표시한다


◎ <ul> 태그

▶ 비순서형 목록 Unordered List

▶ <li> 요소 마다 블릿이 제공됨 ( 블릿 : 특수문자)

▶ 연속으로 나열된 콘텐츠를 표현

▶ 순서가 정해져있지않아 홈페이지 대메뉴 또는 소메뉴 등이 적합하다.

▼ CSS 특징

왼쪽과 오른쪽 여백이 있다.

<ul> 과 <li> 사이에는 그어떤 문자도 태그도 올수가 없다. 와도 표현이 안된다 (ul 과 li 는 1set)

<li> 와 </li> 사이에만 사용할수 있고 li 와 li 사이에는 사용할수 없다.

<li>와 </li> 사이엔 다른 <ul> 이 올수도 있다.

ex)

<ul> <li> <ul> <li>자유게시판1</li> <li>자유게시판2</li> <li>자유게시판3</li> </ul> </li> <li>길드홍보게시판</li> <li>스크린샷</li> <li>팬아트</li> </ul>

<ul> <li>자유게시판</li> <li>길드홍보게시판</li> <li>스크린샷</li> <li>팬아트</li> </ul>




◎ <ol> 태그

▶ 순서형 목록 Ordered List

▶ <li> 요소 마다 숫자 블릿이 제공됨

▶ 순위 또는 연속된 숫자의 리스트를 표현

▼ CSS 특징

왼쪽과 오른쪽 여백이 있다.

ol태그도 ul태그와 마찬가지로 ol과 li 사이에 다른태그는 올수없다.

또한 li태그 안에 또 ol과 ul 등의 리스트를 표현할수있다.

<ol> <li>대마도여행</li> <li>정글의법칙</li> <li>슈퍼스타k</li> <li>열혈강호</li> </ol>



<ol> <li>대마도여행</li> <ol> <li>1일차 비행기타기</li> <li>2일차 배타기</li> </ol> <li>정글의법칙</li> <li>슈퍼스타k</li> <li>열혈강호</li> </ol>



◎ 정의형 목록 태그

▶ <dl> 정의형 목록 지정 ( Defines a description List.)

▶ <dt> 용어 정의 (Defines Terms/names)

▶ <dd> 지정 정의 설명 (Describes each Term)

낱말 등 특정 단어를 정의할때 사용하는 요소 (국어사전 등)

제목 + 내용 형태로 범용적으로 사용하곤 한다.

▼ CSS 특징

dt는 있는그대로 나타나고 dd는 들여쓰기로 나타난다.

반드시 순서대로 표시 dl > dt > dd 무조건 3가지가 다 나타나야한다.

각 서로다른 태그 사이에는 ul ol 과 마찬가지로 다른태그를 넣을수는 없다.

<dl> <dt></dt> <dd>=월드 와이드 (Web)</dd> <dd>[명사]Web</dd> <dt></dt> <dd>=월드 와이드 (Web)</dd> <dd>[명사]Web</dd> </dl> //dt 두번 사용도 가능




반응형

'프로그래밍 > HTML' 카테고리의 다른 글

HTML4 - 온라인 서식 (FORM 태그)  (0) 2022.01.05
HTML4 - Table (테이블)  (0) 2019.04.16
HTML4 - form 태그의 enctype 속성 (파일 업로드)  (3) 2019.04.16
HTML4 - Entity Code  (0) 2019.04.15
HTML4 - <IMG> 태그 , <a> 태그  (0) 2019.04.02
반응형



◎ :NOT 선택자

▼ 내용

:NOT() 선택자는 ( ) 안에 있는 조건이있는놈만 빼고 CSS 문법이 적용된다.

--CSS-- p:not(.classy) { color: red; } body :not(p) { color: green; } --HTML-- <p>Some text.</p> <p class="classy">Some other text.</p> <span>One more text<span>




◎ input::placeholder

▼ 내용

input의 placeholde의 css를 적용시킬수있다.

input::placeholder { font-weight: 300; color: rgba(0, 0, 0, 0.7); }

◎ CSS 의 대문자 , 소문자

▼ 내용

text-transform 을 쓰면 그 태그의 글자는 대문자 또는 소문자로 변환할수있다.

text-transform: uppercase; // 대문자 text-transform: lowercase; // 소문자



반응형

+ Recent posts