만약, root 비밀번호를 잃어버렸을 경우에는 http://aileen93.tistory.com/27 참고
'◼︎ DB' 카테고리의 다른 글
[Mysql] 한글 인코딩 설정 (2) | 2017.05.31 |
---|---|
[Mysql] root 패스워드 분실시 변경방법 (0) | 2017.02.06 |
[Oracle] 오라클 DB 계정 생성 및 사용자 확인 (3) | 2017.01.31 |
[Mysql] Mysql 버전 확인 (0) | 2017.01.31 |
만약, root 비밀번호를 잃어버렸을 경우에는 http://aileen93.tistory.com/27 참고
[Mysql] 한글 인코딩 설정 (2) | 2017.05.31 |
---|---|
[Mysql] root 패스워드 분실시 변경방법 (0) | 2017.02.06 |
[Oracle] 오라클 DB 계정 생성 및 사용자 확인 (3) | 2017.01.31 |
[Mysql] Mysql 버전 확인 (0) | 2017.01.31 |
0. Shell 스크립트 정의
#!/bin/bash
1. 변수 사용법
변수명 = 값
2. 연산자
사칙연산 동일하게 사용가능
3. 관계 연산자
-a : and
-o : or
if [ (조건식) -o (조건식)]
then ...
4. 조건문 (if, case)
if [조건문]
then
elif [ 조건문 ]
then
else
fi
case 단어 in
패턴1)
내용
끝문장;;
패턴2)
내용
끝문장;;
.................
esac
5. 반복문 (for, while, until)
for 변수 in 변수값1 변수값2 변수값3...
do
내용
done
while [조건문]
do
내용
done
until [조건문]
do
내용
done
6. 파라미터
echo "\S0"
7. 사용자값 입력 받기
read -p "값을 입력하세요" val
8. EOF (http://originalchoi.tistory.com/7)
<< EOF
......
EOF
9. PATH 환경설정
http://openwiki.kr/tech/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%89%98_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
Shell 에서 ls 라는 명령어를 사용할 때, 어떻게 Shell이 ls 실행 파일 자체를 찾을 수 있을까?
(ls는 대부분의 시스템에서 /bin 디렉토리 밑에 존재하고 있다.)
Shell은 환경변수 PATH를 사용하여 사용자가 입력하는 명령어들의 실행 파일 위치를 찾는다.
예를 들면 당신의 PATH는 /bin:/usr/bin:/usr/local/bin:. 이렇게 설정되어 있을 것이다.
각 디렉토리는 : 로 구별된다.
사용자가 ls 명령어를 입력할 때, Shell은 먼저 /bin/ls를 찾고, 그리고 /usr/bin/ls 를 찾아가며 마지막으로 현재 디렉토리를 찾는다.
PATH=/sbin:/usr/sbin:$PATH:새로 추가 할 PATH
export PATH
10. Shell의 변수들
변수명 |
내용 |
비고 |
$0 |
script를 실행시킬 때 프로그램의 이름이 포함된 첫 번째 문자열 저장 |
|
$1,…,$N |
매개변수=파라미터 |
|
$* |
스크립트에 전달된 인자들을 모아놓은 문자열로 하나의 변수에 저장됨 |
|
$@ |
자체로는 $*와 비슷하나, $@은 $1,…,$N와 같다. |
|
$# |
위치 매개변수의 갯수가 저장 |
|
[Linux] yum 명령어 정리 (0) | 2017.07.11 |
---|---|
[Linux] 서버 OS 버전, 아파치 버전 확인 (0) | 2017.07.11 |
[Linux] 리눅스 파일 이동, 폴더 디렉토리 이동, 이름 변경 (0) | 2017.05.31 |
[Linux] 특정 서버로 연결 확인하기 (0) | 2017.04.05 |
[Linux] 특정 문자열 갯수 확인하기 (0) | 2017.02.13 |
Oauth 1.0 개념과 예제 (0) | 2017.02.08 |
[Linux] 리눅스 서버 메모리 확인 (0) | 2017.01.31 |
쓰레드(Thread)와 런에이블(Runnable) 2편
[JAVA] 추상(abstract) 클래스와 인터페이스(interface) 클래스 (0) | 2017.05.21 |
---|---|
[JAVA] 쓰레드(Thread)와 런에이블(Runnable) 1편 (0) | 2017.05.21 |
추상(abstract) 클래스와 인터페이스(interface) 클래스
1. 추상 클래스와 추상 메소드란?
추상클래스란 말 그대로 추상적으로 밖에 그려지지 않은 클래스라고 한다. 즉, 클래스가 전체적인 구성을 다 가지지 못한 채 설계만 되어있는 클래스이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스를 생성할 수는 없다. 추상클래스는 상속(Extends)을 통해서 자식 클래스에 의해 완성이 된다. 그래서 추상클래스 자체로는 제 기능을 다하지는 못하지만, 새로운 기능을 정의하는데 있어서 바탕(틀)이 될 수 있다!
package ch7;
// 추상 클래스는 class 선언부 앞에 abstract를 적어준다.
abstract class 클래스명 {
.....
abstract 메소드명(); // 추상 메소드
}
package ch7;
// 추상클래스 선언
// 구현부가 없이 선언부만 존재하는 것을 확인할 수 있다.
abstract class Player{
boolean pause;
int currentPos;
// 생성자로 변수 초기
Player(){
pause = false;
currentPos = 0;
}
abstract void play(int pos);
abstract void stop();
}
class AudioPlayer extends Player{
// play 메소드의 구현부
void play (int pos){
System.out.println("AudioPlayer.play");
}
// void 메소드의 구현부
void stop (){
System.out.println("AudioPlayer.stop");
}
}
class CDPlayer extends Player{
// play 메소드의 구현부
void play (int pos){
System.out.println("CDPlayer.play");
}
// void 메소드의 구현부
void stop (){
System.out.println("CDPlayer.stop");
}
}
class abEx02{
public static void main (String args[]){
AudioPlayer ap = new AudioPlayer();
ap.play(1);
CDPlayer cp = new CDPlayer();
cp.play(1);
}
}
2. 인터페이스(Interface) 클래스란?
인터페이스는 추상클래스처럼 추상 메소드를 갖지만 추상 클래스보다 추상화 정도가 높아서 추상 클래스와 달리 몸통을 갖춘 일반 메소드 또는 멤버 변수를 구성원으로 가질 수 없다. 오직 추상 메소드와 상수만을 멤버로 가질 수 있으므로 그 외의 다른 어떠한 요소도 허용하지 않는다. 추상클래스를 부분적으로 미완성된 설계도라고 했다면, 인터페이스 클래스는 아무 것도 없고 밑그림만 그려져 있는 상태이다.
package ch7;
interface 클래스명{
public static final 변수타입 변수명 = 값;
public abstract 메소드명(매개변수);
}
void autoPlay(I i) {
i.play();
}
}
interface I {
public abstract void play();
}
class B2 implements I {
public void play() {
System.out.println("play in B class");
}
}
class C2 implements I {
public void play() {
System.out.println("play in C class");
}
}
class InterfaceTest2 {
public static void main(String[] args) {
A2 a = new A2();
a.autoPlay(new B2());
a.autoPlay(new C2());
}
}
결과
play in B class
play in C class
인터페이스 클래스의 장점
서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
서로 상속관계에 있지도 않고, 같은 조상 클래스를 가지고 있지 않은 서로 아무런 관계도 없는 클래스들에게 하나의 인터페이스를 공통적으로 구현하도록 함으로써 관계를 맺어줄 수 있다.
독립적인 프로그래밍이 가능하다.
인터페이스를 이용하면 클래스의 선언과 구현을 분리시킬 수 있기 때문에 실제 구현에 독립적인 프로그램을 작성하는 것이 가능하다.
클래스와 클래스 간의 직접적인 관계를 인터페이스를 통해서 간접적인 관계로 변경하면 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않는 독립적인 프로그래밍이 가능하다.
참고링크
[JAVA] 쓰레드(Thread)와 런에이블(Runnable) 2편 (8) | 2017.05.22 |
---|---|
[JAVA] 쓰레드(Thread)와 런에이블(Runnable) 1편 (0) | 2017.05.21 |
쓰레드(Thread)와 런에이블(Runnable) 1편
본 게시물은 jdk 1.8 기준으로 작성되었습니다.
1. 쓰레드(Thread)란?
프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당 받아서 프로그램이 실행된다. 프로그램이 실행된 결과물이 바로 프로세스이다. 예를 들어 윈도우의 Ctrl + Shift + ESC를 하면 탭 부분에 프로세스가 보이는데 클릭해보면 실행 중인 프로세스 리스트가 보인다. 즉, 실행 중인 프로그램 = 프로세스!
2. 쓰레드(Thread) 구현하기
Thread를 이용하여 만들기 : https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
Runnable을 이용하여 만들기 : https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html
자바에서 쓰레드를 구현하는 방식은 Thread를 이용하는 방법과 Runnable을 이용하는 방법 2가지가 있다. Thread 클래스는 상속(Extends)를 받아서 사용해야 하므로 다른 클래스들을 상속받을 수 없다. (자바는 기본적으로 다중상속 금지) 그러나 Runnable 인터페이스는 구현(implements) 받아서 사용하므로 필요하다면 다른 클래스를 상속받아서 재사용성과 코드의 일관성을 높일 수 있다. 또한 Thread 를 한번 사용하면 재사용이 불가능하지만, Runnable 를 이용하여 Thread를 구현하면 재사용할 수 있다.
잘 와닿지 않을테니 아래의 예제를 통해서 내용을 확인하자. 혹시 이 게시물을 읽기전 상속(Extends)와 구현(implement), 인터페이스 클래스 등을 잘 모르겠다면 'http://aileen93.tistory.com/107' 이전 게시물 참고!
[방법 1] Thread로 쓰레드 구현하기
예제 1
package ch13_Thread;
class ThreadEx01 {
public static void main(String args[]) {
ThreadEx2 t1 = new ThreadEx2();
t1.start();
}
}
class ThreadEx2 extends Thread {
// 쓰레드를 통해서 수행할 내용들을 정의
public void run() {
// 작업내용
for(int i=0; 5 > i; i ++)
System.out.println("쓰레드가 실행되었습니다.");
}
}
쓰레드가 실행되었습니다.
쓰레드가 실행되었습니다.
쓰레드가 실행되었습니다.
쓰레드가 실행되었습니다.
쓰레드가 실행되었습니다.
여기서 의문이 생길 것이다. run으로 구현되어있는데, 왜 start로 Thread를 실행 시키는지!
Thread 클래스의 메소드 API 문서를 확인해보자.
void | start() 이 스레드가 실행을 시작하도록합니다. Java 가상 머신 run 이 thread 의 메소드를 호출합니다 . |
void | run() 이 스레드가 별도의 Runnable 실행 객체 를 사용하여 작성된 경우 해당 Runnable 객체의 run 메소드가 호출됩니다. 그렇지 않은 경우, 이 메서드는 아무 것도 수행하지 않고 반환합니다. |
[방법 2] Runnable로 쓰레드 구현하기
class RunnableImplements implements Runnable {
// Runnable인터페이스의 추상메서드 run()을 구현
public void run() {
// 작업내용
}
}
예제 2
package ch13_Thread;
// view-source:https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html
class RunnableEx01 {
public static void main(String args[]) {
Runnable r = new ThreadEx1();
Thread t1 = new Thread(r);
t1.start();
}
}
class ThreadEx1 implements Runnable {
// 스레드를 종료시키기 위한 플래그 변수
private boolean stopped = false;
// 스레드를 통해서 실행시킬 task 로직
public void run() {
while (!stopped) {
System.out.println("Thread is alive :"+ stopped);
try {
System.out.println("active.."+Thread.activeCount());
Thread.sleep(2000);
} catch (Exception e) {
stop();
}
stop();
}
}
// 스레드 종료시키기
public void stop(){
System.out.println(Thread.currentThread().getName()+"가 종료되었습니다.");
stopped = true;
}
}
3. 결론
Thread보다 Runnable이 더 확장성(유연성)있는 코드 작성이 가능하다.
Runnable의 단점은 그럼 무엇일까?..
*쓰레드(Thread)와 런에이블(Runnable) 2편
[JAVA] 쓰레드(Thread)와 런에이블(Runnable) 2편 (8) | 2017.05.22 |
---|---|
[JAVA] 추상(abstract) 클래스와 인터페이스(interface) 클래스 (0) | 2017.05.21 |
[머신러닝] lab 8: Tensor Manipulation
https://www.youtube.com/watch?v=ZYX0FaqUeN4&index=24&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm
1. 텐서플로우의 기본적인 1차원 Array 사용법
t = np.array([0,1,2,3,4,5,6])
pp.print(t)
print(t.ndim) #차원 수 출력
print(t.shape) #행렬
print(t[0], t[1], t[-1])...
print(t[2:5], t[4:-1])...
print(t[:2], t[4:])...
2. 2차원의 Array 사용법
t = np.array([1, 2, 3],[1, 2, 3], [1, 2, 3], [1, 2, 3])
pp.print(t) #(4,3)행렬이 나오게 됨
print(t.ndim) # 차원 수 : 2
print(t.shape) # 행렬
doc2vec (0) | 2017.12.08 |
---|---|
K-means Clustering 예제(1) (0) | 2017.11.14 |
[머신러닝] lec 8-2 : 딥러닝의 기본 개념2 : Back-propagation 과 2006/2007 '딥'의 출현 (0) | 2017.04.21 |
텍스트 유사성을 판단하는 편집거리 알고리즘 (1) | 2017.04.12 |
[머신러닝] lec 8-1 : 딥러닝의 기본 개념 : 시작과 XOR 문제 (0) | 2017.04.11 |
[머신러닝] lab 7-2 : Meet MNIST Dataset (0) | 2017.04.11 |
[머신러닝] lab 7-1 : training/test dataset, learning rate, normalization (0) | 2017.04.04 |
#모두를 위한 딥러닝 강좌 lec 8-2 : 딥러닝의 기본 개념2: Back-propagation 과 2006/2007 '딥'의 출현
https://www.youtube.com/watch?v=AByVbUX1PUI&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=23
Breakthrough
in 2006 and 2007 by Hinton and Bengio
초기값을 잘준다면 신경망이 많아도 학습이 잘 될 수 있다는 이론의 논문 발표
뉴럴넷이라고 하면 사람들이 어려워하고 힘들어하니까 Deep learning 으로 명칭도 바꿔서 말하기 시작함
ImageNet
이미지 넷이라는 사이트에서는 사진을 주고 컴퓨터에게 무슨 사진인지 맞춰보라고 하는 기능이 비약적으로 오류율을 줄이면서 관심을 더 갖게 됨
뿐만 아니라 기술의 발전으로 그림을 설명하기도 했다.
최근 바이두에서는 소음이 많은 곳에서도 사람의 음성을 인식하는 기술을 개발했다..
그러면서 Hinton이 왜 이전에 잘 안됐는지 4가지 원인을 밝혀보았다.
요건 다음 시간에..
데이터 마이닝을 알면 뭐가 좋은가?
비즈니스 환경에서 활용할 수 있다.
ex) 유튜브의 자막, 페이스북의 추천도 모두 AI를 통해서 만들어지고 있는 서비스다.
doc2vec (0) | 2017.12.08 |
---|---|
K-means Clustering 예제(1) (0) | 2017.11.14 |
[머신러닝] lab 8 : Tensor Manipulation (0) | 2017.04.21 |
텍스트 유사성을 판단하는 편집거리 알고리즘 (1) | 2017.04.12 |
[머신러닝] lec 8-1 : 딥러닝의 기본 개념 : 시작과 XOR 문제 (0) | 2017.04.11 |
[머신러닝] lab 7-2 : Meet MNIST Dataset (0) | 2017.04.11 |
[머신러닝] lab 7-1 : training/test dataset, learning rate, normalization (0) | 2017.04.04 |
동영상으로 보는 초평면의 개념
파이썬(Python)에서 hdf5 파일 형식으로 데이터 읽고 쓰기 (0) | 2017.04.14 |
---|---|
hdf5 파일 형식이란? (0) | 2017.04.14 |
데이터마이닝 분석 방법 및 알고리즘 (0) | 2017.02.06 |
데이터마이닝의 개념 (0) | 2017.02.03 |