🟩 개발환경이란 

프로그램 개발에 필요한 컴파일러, 통합개발도구(IDE), 서버 런타임, 편집기 및 유틸리티 등을 개발 컴퓨터에 세팅해 놓은 것.

 

🟩 Eclipse 

자바 기반의 오픈소스 통합 개발 환경(IDE)입니다. 이클립스는 프로그래밍 언어로 자바뿐만 아니라 다양한 다른 프로그래밍 언어와 프레임워크를 지원하며, 코드 편집, 디버깅, 빌드, 테스트 및 프로젝트 관리를 위한 다양한 기능을 제공합니다.


🟩 Web  

  • 정의 : 웹은 인터넷 브라우저를 통해 접근되는 웹사이트나 웹 애플리케이션을 의미합니다.
  • 접근 방식 : URL을 통해 접근하며, 다운로드나 설치 과정 없이 사용 가능합니다.
  • 호환성 : 다양한 브라우저와 기기에서 사용할 수 있어 호환성이 높습니다.
  • 개발 언어 : HTML, CSS, JavaScript 등 웹 표준 기술을 사용합니다.

🟩 Front-end 개발 

 

프론트엔드는 단어에서 예측할 수 있듯이 사용자의 앞에 보이는 화면, 즉 인터페이스를 만드는 작업이라고 볼 수 있다.

프론트에서 사용자가 선택한 요청사항에 따라 데이터나 서비스를 서버에 요청하거나 또는 요청해서 얻은 데이터를 사용자에게 보여주는 것. 보이는 인터페이스에 대한 개발인 만큼 사용자 인터페이스(UI)와 사용자 경험(UX)과 밀접한 관련이 있다.

 

🟩 HTML(HyperText Markup Language)

기능 : HTML 웹페이지의 구조를 정의하는 마크업 언어입니다. 웹페이지의 틀을 만들고, 텍스트, 이미지, 링크 등의 콘텐츠를 웹페이지에 배치합니다.
역할/필요성 : HTML은 웹의 기본 구조를 만드는 데 필수적입니다. 웹페이지의 모든 요소들이 HTML을 통해 정의되며, 이를 통해 사용자에게 정보를 제공하고 상호작용을 가능하게 합니다.

 

🟩 CSS(Cascading Style Sheets)

CSS 적용 전 - 후

기능 : CSS HTML로 만든 웹페이지의 디자인과 레이아웃을 꾸며주는 스타일 시트 언어입니다. 폰트 스타일, 색상, 간격, 레이아웃 및 다양한 시각적 효과를 정의합니다.
역할/필요성 : CSS는 웹페이지의 시각적 매력을 높이는 데 중요합니다. 사용자 경험(UX)을 향상시키고, 웹페이지를 더 읽기 쉽고 접근하기 쉬운 형태로 만듭니다. 반응형 디자인을 통해 다양한 기기에서도 웹페이지가 잘 보이게 할 수 있습니다.

 

🟩 JavaScript

기능 : JavaScript는 웹페이지에 Interactive한 요소를 추가하는 프로그래밍 언어입니다. 사용자와의 상호작용을 가능하게 하고, 데이터를 처리하며, 동적인 콘텐츠를 생성합니다.

 

역할/필요성 : JavaScript는 웹페이지를 동적이고 생동감 있게 만듭니다. 사용자의 입력에 반응하여 웹페이지의 내용을 실시간으로 변경할 수 있으며, 복잡한 사용자 인터페이스와 애니메이션, 게임, 양방향 어플리케이션 등을 구현할 수 있습니다.

 

🟩 AJAX (Asynchronous JavaScript and XML)

 비동기 통신: 서버와의 통신을 위해 XMLHttpRequest 객체를 사용하여, 사용자의 활동에 따라 필요한 데이터만 서버로부터 비동기적으로 요청하고 받아옵니다.

동기 통신(좌), 비동기 통신(우)

 페이지 일부분만 갱신: 서버로부터 받은 데이터를 이용해 웹 페이지의 특정 부분만을 업데이트합니다. 이는 페이지 전체를 새로 고치는 것보다 빠르고 효율적입니다.
 JSON, XML, HTML, 텍스트 데이터 처리: AJAX JSON, XML, HTML, 텍스트 등 다양한 형식의 데이터를 처리하고, 이를 페이지에 동적으로 표시할 수 있습니다.

🟩 Back-end 개발 

 

백엔드 개발(Backend Development)은 웹사이트나 애플리케이션의 서버, 데이터베이스, 그리고 애플리케이션의 핵심 기능적 부분을 구축하는 과정을 말합니다. 사용자가 직접 보거나 상호작용하는 프론트엔드(웹 페이지의 시각적 요소 등)와 달리, 백엔드는 주로 데이터 처리, 보안, 서버 관리 등 사용자에게 직접 보이지 않는 부분을 담당합니다.

백엔드 개발의 주요 구성 요소는 다음과 같습니다:

  1. 서버: 클라이언트(예: 웹 브라우저)의 요청을 받아 처리하고, 필요한 데이터를 응답으로 보내는 시스템입니다.
  2. 데이터베이스: 정보를 저장, 검색, 업데이트, 삭제할 수 있는 구조화된 데이터의 집합체입니다. 백엔드 개발자는 데이터베이스와의 상호작용을 통해 데이터를 관리합니다.
  3. 애플리케이션 로직: 사용자의 요청에 따라 특정 작업을 수행하고, 결과를 사용자에게 전달하는 프로그램의 일부분입니다. 이 로직은 서버에서 실행됩니다.

백엔드 개발자는 주로 서버 사이드 프로그래밍 언어(예: Java, Python, Ruby, Node.js 등)와 데이터베이스 관리 시스템(예: MySQL, PostgreSQL, MongoDB 등)을 사용하여 이러한 기능을 구현합니다. 또한, API(애플리케이션 프로그래밍 인터페이스) 개발, 서버 보안, 데이터 처리 및 저장 최적화 등의 업무도 수행합니다.


🟩 JAVA

 기능 : 자바는 강력한 객체지향 프로그래밍 언어로서, 다양한 플랫폼에서 실행될 수 있는 애플리케이션을 개발하는 데 사용됩니다.

 

 

 역할/필요성 : 자바는 ‘WORA(Write Once, Run Anywhere)'이라는 특징을 가지고 있어, 다양한 환경에서의 호환성과 이식성을 제공합니다.
 

 

 JDK (Java Development Kit) : 자바 애플리케이션 개발을 위한 핵심 도구 모음으로, 소스 코드를 컴파일하고 실행하는 데 필요한 컴파일러와 라이브러리를 포함합니다. 자바 개발자에게 필수적인 환경입니다.
 JRE (Java Runtime Environment) : 자바 애플리케이션을 실행하는 데 필요한 환경을 제공하며, JVM을 포함한 라이브러리와 기타 파일로 구성됩니다. 사용자가 개발된 자바 애플리케이션을 실행할 때 필요합니다.
 JVM (Java Virtual Machine) : 자바 바이트코드를 실행하고, 다양한 운영 체제에서 자바 애플리케이션을 구동할 수 있도록 하는 가상 실행 환경입니다. '한 번 작성하면 어디서나 실행될 수 있음'을 가능하게 만드는 핵심 요소입니다.

 


🟩 Spring

 정의  : 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크

장점 : 다양한 라이브러리를 제공하며 업무 분업화 및 느슨한 결합을 통해 유지보수에 용이하게 할 수 있다.
단점 : 초기 설정 및 러닝커브가 높다.  

🟩 git

 

 기능 : 분산형 버전 관리 시스템의 한 종류이다.

 

 버전 관리란?

  • 각 파일을 이전 상태로 되돌릴 수 있다.
  • 프로젝트를 통째로 이전 상태로 되돌릴 수 있다.
  • 시간에 따라 수정 내용을 비교해 볼 수 있다.
  • 누가 문제를 일으켰는지도 추적할 수 있다.
  • 누가 언제 만들어낸 이슈인지도 알 수 있다.
  • 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.

 

 git의 장점 ?

 

  • 소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬개발이 가능하다.
  • 분산 버전 관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있고, 중앙 저장소가 날라가 버려도 원상 복구할 수 있다.
  • 팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해진다.

 

👇 git 공식사이트

https://git-scm.com/
 

Git

 

git-scm.com

 

👇 pro-git E-book 다운로드

https://github.com/progit/progit2-ko/releases/download/2.1.80/progit.pdf

 


🟩 웹 서버 (Web Server)


클라이언트가 GET, POST 등의 메소드를 이용해 전송한 요청을 받아 HTML이나 오브젝트를 HTTP 프로토콜을 이용해 전송하는 프로그램 입니다. 웹 서버는 웹 페이지, 이미지 등의 정적인 컨텐츠만 제공할 수 있습니다.

 


 Apache 란?

Apache란 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버입니다. Apache는 오픈 소스이기 때문에 누구든지 수정, 재배포가 가능합니다. 게다가 Apache는 다양한 기능을 제공하고 다른 웹 서버들에 구축이 쉽다는 이유로 많이 사용되고 있습니다.

 

 Tomcat 란?


Tomcat이란 아파치 재단에서 만든 오픈 소스 WAS(Web Application Server)입니다. Tomcat은 Java Servlet과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성합니다. 그리고 DB 연결 및 데이터 조작, 다른 응용프로그램들과 상호 작용이 가능합니다.


🟩 App ?

 정의 : 앱은 모바일 기기(스마트폰, 태블릿) 또는 데스크탑에 설치되어 사용되는 소프트웨어 응용 프로그램입니다.
 접근 방식 : 앱 스토어(Apple App Store, Google Play Store )를 통해 다운로드하여 설치한 후 사용합니다.
 호환성 : 특정 운영 체제(iOS, Android)에 최적화되어 있어, 기기 간 호환성이 웹에 비해 제한적일 수 있습니다.
 개발 언어 : Swift, Kotlin, Java 등 특정 플랫폼에 특화된 언어를 사용합니다.

 

🟩 모바일 App 개발 방식 ?

 

 Native App

 정의 : 특정 운영 체제에 최적화되어 개발된 앱입니다.

 개발 언어 : iOS의 경우 Swift Objective-C, Android의 경우 Java Kotlin을 사용합니다.
 장점 : 높은 성능, 운영 체제의 기능을 최대한 활용할 수 있습니다.
 단점 : 각 플랫폼에 대해 별도의 앱을 개발해야 하므로 시간과 비용이 더 듭니다.
 

 Hybrid App

 정의 : 웹 기술을 사용하여 개발되며, 네이티브 앱으로 패키징한 입니다.
 개발 언어 : HTML, CSS, JavaScript 등 웹 기술을 사용합니다.
 장점 : 하나의 코드베이스로 여러 플랫폼에 배포할 수 있습니다.
 단점 : 네이티브 앱에 비해 성능이 떨어질 수 있습니다.
 도구 : Apache Cordova(PhoneGap), Ionic 등이 있습니다.
 

 Cross Platform App

 정의 : 여러 운영 체제에서 실행될 수 있도록 개발된 앱입니다.
 개발 언어 : React Native(JavaScript), Flutter(Dart) 등 특정 프레임워크와 언어를 사용합니다.
 장점 : 하나의 코드베이스에서 여러 플랫폼을 지원하며, 네이티브에 가까운 성능을 제공합니다.
 단점 : 복잡한 기능이나 최신 API 지원에 제한이 있을 수 있습니다.

 

 

 

$ - dollar sign

# - pound sign ( or hash mark )

 

octap@octap-ubuntu:~$

root@octap-ubuntu:~#

 

root 권한 실행(sudo)

 

$ sudo reboot

$ sudo halt

 

root 사용자로 전환

 

$ sudo su - root

$ sudo su - 

$ sudo su 

 

exit - 관리자 권한에서 나가기

 

리눅스 파일 시스템

 

 

디렉토리 이동하기 & 항목들 보기

man - 앞에 붙이고 명령어를 쓰면 상세한 내용을 알려줌

 

cd - 디렉토리 이동

 

../ - 상대경로

/   - 절대경로

 

cd ~ - 홈 디렉토리로 이동

 

ls - 해당 디렉토리에 항목들 보기

 

ls -l - 길게 항목들 보기

ls -l | more

ls -l | less

 

pwd (PrintWorkingDirectory) - 현재 디렉토리 경로를 출력

 

 

파일 관리 명령어

 

mkdir - 디렉토리 생성

 

rmdir - 디렉토리 삭제

 

touch - 빈 파일 생성

 

  • touch test.txt - test.txt 라는 파일을 만든다.

 

mv - 파일 이동/ 변경

  • mv test.txt workspace/

rm - 파일 삭제

  • rm -r workspace/ - 디렉토리 안에 내용까지 다 지워버린다.
  • rm -ri workspace/ - 디렉토리 안에 내용을 확인하면서 지워버린다.

 

rmdir - 디렉토리 삭제( 디렉토리가 비워져 있어야 삭제 가능 )

 

 

cp - 파일 복사

 

mv [기존 폴더명] [바꾸고 싶은 이름] - 폴더명 변경

 

 

파일 편집기

 

 

vi editor (리눅스 편집기) 명령어

i : 입력(편집 모드)

a : 프롬프트 다음칸에 입력 (편집 모드)

dd : 줄 잘라내기 

3dd : 3줄 잘라내기

yy : 줄 복사

3yy : 3줄 복사

p : 붙여넣기

Ctrl g 로 라인 확인 가능

Shift g 단축키로 파일 최하단으로 이동

편집기 작업 중/ 작업 후  esc  # 편집 모드 종료

작업 후 esc / shift + : # 명령 모드 

→(q! + enter : 저장 하지 않고 종료)

→(wq! + enter : 작업 내용 저장하고 vi edit

 
or 종료)

 

nano editor (리눅스 편집기) 명령어

 

nano [파일명] / editor [파일명]

 

 

파일 찾기와 파일 정보 확인

파일 찾기

 

find ./ -name *.java

find ./ -name *.java -size 1

 

whereis [파일명] - 위치를 알려줌

 

파일 내용 확인하기

 

cat Hello.java

cat test | sort

cat test | sort -r - 역정렬

 

파일 정보 내에서 원하는 정보 찾기

 

grep class Hello.java

 

두 개의 파일 비교하기

 

cmp Hello.java Hello1.java

diff Hello.java Hello1.java

 

유용한 명령어

 

history - 내가 사용했던 명령어들의 목록이 나온다.

![명령어 항목 번호] - 해당 번호에 명령어를 실행한다.

 

 

redirect

 

echo - 화면에 출력하게 한다

echo "Hello">test - test라는 파일에 "Hello"를 쓴다.

 

파일 압축 관리

파일 압축 방법

tar(Tape ARchive) + zip

 

파일 압축 하기

tar -cf name.tar a b c ( a,b,c는 묶을 파일 들 )

tar -zcf name.tar.gz a b c ( a,b,c는 묶을 파일 들 )

tar -zcf name.tar.gz * ( 현재 디렉토리에 있는 것들을 다 묶음 )

 

파일 압축 풀기

tar -xvf name.tar

tar -zxvf name.tar.gz

 

-f : 파일 이름을 지정

-c : 파일을 tar로 묶음

-x : tar 압축을 풂

-v : 내용을 자세히 출력

-z : gzip으로 압축하거나 해제함

-t : 목록 출력

-p : 파일 권한을 저장

-c : 경로를 지정

 

압축본 JDK 설치하기

JDK 8 다운로드 ~/download

wget -c --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" 
https://javadl.oracle.com/webapps/download/GetFile/1.8.0_261-b12/a4634525489241b9a9e1aa73d9e118e6/linux-i586/jdk-8u261-linux-x64.tar.gz

 

사용자 추가하기

사용자 추가

useradd testuser

tail -n2 /etc/passwd

chown testuser:testuser /home/testuser

echo "testuser user added"

 

nano useradd (nano editor를 켜준다.)

 

파일과 디렉토리 권한 변경

chmod [OPTION]...MODE[,MODE]...FILE....

 

 

-[rwx][r-x][r-x]

 

위에 예시를 해석해보면

 

[ - ] : 일반 파일

소유자 : 읽기,쓰기,실행가능

그룹 : 읽기, 실행가능

기타 유저 : 읽기, 실행가능

 

권한을 변경하는 방법

 

chmod : 권한을 변경하는 명령어

./ [파일명] : 파일을 실행 시키는 명령어

 

 

Parameter를 이용한 스크립트 파일로 변경하기

useradd $1

tail -n2 /etc/passwd

mkdir /home/$1

chown $1:$1 /home/$1

echo "$1 user added"

 

현재 사용자가 adduser라는 파일을 실행하면 인자가 $1에 들어가게 된다.

 

 

사용자 프롬프트 설정하기

프롬프트 스트링(PS1) 출력하기

PS1 = "[변경하고 싶은 이름]"

 

색상 변경

 

 

 

type [ls,pwd,....]

 

 

컴퓨터 켜고 끄기와 Run Level

 

1) BIOS (Basic Input Output System)

 

 

향상된 패키지 관리 도구 APT를 이용한 OpenJDK 설치하기

소프트웨어 설치 with APT(Advanced Packaging Tool)

 

 

PPA(personal Package Archive)를 이용한 소프트웨어 설치

 

 

 

service --status-all

 

service ssh status

 

service ssh

 

기본형은 공유하지 않는다. 참조형만 자료를 공유함.


6.29(목)

데이터 구조 정의하기.

 

구조를 만들게 되면 "Flat 한 상태에서 -> 계층(layor)"이 생긴다.

 

클래스는 파일당 하다.

 

클래스는 대문자로 시작

 

객체는 new를 통해 만들어서 공간을 만들어야 한다. 

 

객체를 생성하지 않고 사용하게 되면 "NullPointerError뜸!"


 

🟩 재귀함수 

자기가 자기를 부르는 함수

 

stackoverflow errer

(?) Quic Sort(재귀함수를 이용한 정렬) 숙제!!!!!

 

장점 : 병렬작업을 할때는 일을 나눠서 할 수 있어서 좋다.

 

🟩 함수의 재사용

재사용이란? 

  • 소스코드 -> 컴파일 -> 배포코드
  • 위에 3개 중에 재사용한다는 의미는 배포코드를 재사용한다는 의미이다.
  • 자바에서는 ". class " 단위가 재사용되는 단위이다.

private(다른 클래스에서 접근하는 것을 불허함)/ public(다른 클래서에서 쓰는 것을 허가함)/

 

배포단위 : Exam.java/ ExamList.java -> compile -> zip압축 ->. jar(확장자 변경) ->. jar(자바 압축파일)

 

jar파일로 만든 후 라이브러리 추가하는법 다시 해보기 (만약 FileInputStream 같은 파일 경로를 지정하는 class파일이 있으면 경로를 사전에 잘 설정하고 생각해 보기.)

 

🟩 객체지향 프로그래밍(OOP-//Object Oriented Programming)

실 세계(real world)의 일들을 객체를 사용해서 모델링하고, 객체를 사용하지 않으면 불가능 혹은 무지 어려웠을 일들을 쉽게 처리하는 방법을 제공한다는 것입니다.

 

객체지향은 코딩이 아니고, 설계이다.

 

 

캡슐화/ 상속 추상화/ 다형성

 

함수는 외부데이터의 영향을 받지 않기 위해 지역변수를 사용했다.... 근데 문제가 생겼다! 지역변수가 구조화되면 문제가 생긴다. 구조화된 객체를 사용하는 함수는 객체의 구조를 변경에 아주 취약하다.

 

캡슐화를 하면 데이터 구조에 따른 코드의 수정법 위를 캡슐 범위로 한정할 수 있다.(캡슐 범위 내에서 오류가 나서 그 부분만 찾으면 된다.)

 

은닉성

 

객체지향의 캡슐화

데이터구조 + 함수구조

 


🟩 객체와 개체

개체 : 개별적으롤 나눌 수 있는 것 (비행기, 자동차, 사람)/ 종류명(Type)이 개체이다.

객체 : "B747"이라는 개체의 "왼쪽으로 날아가는 비행기" 객체

 

추상화된 이름, 개체, 객체 구분하기

 

객체의 속성이란?

모든 객체는 식별하기 위해 식별코드가 존재한다.

 

 


🟩 static 메서드와 instance 메서드

 

 

class안에 함수는 static 메서드(울타리 안에 있는 함수)

 

객체지향으로 만들어지면 instance메서드

 

 

Static Method는 받아오는 값(매개변수)이 있으니까 This를 사용할 수 없다.

 

Instance Method는 받아오는 값(매개변수)가 없으니까 This를 사용해서 받아온다.(This생략가능)

 


🟩 생성자 : 초기화를 위한 특별한 함수

 

1. 객체가 생성되자마자 무조건 제일 먼저 실행되어야 만 한다.

2. 생성될 때 단 한 번만 실행되어야 만 한다.

new Exam();
new Exam + ();//소괄호는 생성자를 호출했다는 것

//생성자를 안만들어주면 기본 생성자가 생성됨

public Exam{
	private int kor;
	private int eng;
	private int math;
}

 

Exam exam = new Exam();
Exam exam = new Exam(1); //parameter 
Exam exam = new Exam(1,6);

public Exam(){//객체의 초기화(이름이 없어서 여러번 호출 할 방법이 없음)
         kor =3;
         eng = 4;
         math= 5;
     }
    public Exam(int a){//객체의 초기화(이름이 없어서 여러번 호출 할 방법이 없음)
        kor =a;
        eng = 4;
        math= 5;
    }
    public Exam(int a, int b){//객체의 초기화(이름이 없어서 여러번 호출 할 방법이 없음)
        kor =a;
        eng = b;
        math= 5;
    }

 

🟩 생성자 오버로드

 

public Exam(){//객체의 초기화(이름이 없어서 여러번 호출 할 방법이 없음)
     //this.kor=3;//사용한 적이 없어야 한다.
     this(3,4,5);//이름이 없기때문에 this를 사용한다.
 }
public Exam(int kor,int eng, int math){//객체의 초기화(이름이 없어서 여러번 호출 할 방법이 없음)
    this.kor =kor;
    this.eng = eng;
    this.math= math;
}

🟩 캡슐에 역할부여와 플랫폼

 

캡슐화는 함수만 묶는 것이 아니라 역할을 주어지는 것.

Ex) Exam아 국어 성적 저장해~!

 


🟩 상속

객체의 분리와 결합(Has A 관계)

 

UI와 데이터 서비스는 분리하는 것이 바람직 하다.

 

 

 


Getter/Setter

 

용도 : 

 

 


객체지향 프로그램의 구조

 

Dependency 의존성 = 도구라고 부른다

 

c를 b가 만들엇다


객체의 탈부착 관계(Associaton Has a 상속)

 

-------------------------------------------
1. Association: 파트타이머
부품(Exam) 클래스의 속성만 준비한 상태에서
필요에 의해 객체를 주입해야 하는데,

이때 setter(혹은 다른 이름의 만들어주는 메소드도 가능)
또는 생성자의 매개변수로 부품(Exam) 클래스의 객체를 생성하는 녀석


2. Aggregation: 파트타이머
Association이 일대다(배열)의 관계가 되면 이녀석


3. Composition: 정규직
제품 클래스(ExamConsole)의 객체가 만들어지면서
생성자에 의해 부품 클래스(Exam)의 객체가 동시에 만들어지는 녀석
(일대다, 일대일 구분 없음)
-------------------------------------------

 

Composition has a(일체형) : 객체를 A가 만들때 B객체가 같이 있는 것.(한번에 다 준비되어 있는 상태)

 

public class ExamConsole {
	// has a 상속관계/ A(ExamConsole)가 B(Exam)를 가지고 있다.
    // 누군가가 ExamConsole을 만들면 Exam이 자동으로 만들어 진다.
    //Composition has a 관계
    
    private Exam exam = new Exam();
    
}

 


Aggregation has a () : 그때 그때 필요할 때 만들어 두는 관계.(준비만 해두는 상태)

public class ExamConsole {
    private Exam[] exams;
    private int index;

    public ExamConsole() {
        int max = 3;
        exams = new Exam[max];
        index = 0;
    }
}

 

Association has a(분리형) : 

 

 

객체들은 관계가 있는데 다 이용관계이다.

 

Dependency Injection

 

어소시에이션>>어그리게이션   외부생성 장착

컴포지션       자체 내부에서 부품 생성


 

IS A 상속

 

틀을 이용해서(가지고) 만들었다.(프레임워크를 사용하는 관계)

 

 

 

메소드 재정의 Override 하기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

[Java] 제네릭(Generic)  (1) 2023.07.09
[JAVA] ✏️ Boxing과 Unboxing  (1) 2023.07.09
[Java] 컬렉션(Collection) ?  (1) 2023.07.09
[Java] 함수 오버로드(overload)  (1) 2023.07.04
[Java]구조적인 프로그래밍(메서드)  (2) 2023.06.28


SQL(structured Query Language)

  • DBMS에게 질의를 위한 명령어

 

DDL(Data Definition Language) - create/alter/drop

DML(Data Manipulation Language) - select/insert/update/delete

DCL(Data Control Language) - grant/ revoke

 

https://www.oracle.com/database/technologies/xe-downloads.html

 

Oracle Database Express Edition (XE) Downloads

Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Services only provid

www.oracle.com

 

https://www.oracle.com/database/sqldeveloper/

 

SQL Developer

Oracle SQL Developer is a free, development environment that simplifies the management of Oracle Database in both traditional and Cloud deployments. It offers development of your PL/SQL applications, query tools, a DBA console, a reports interface, and mor

www.oracle.com

 

 

DML 항목들은 달달 외우도록 연습한다.

 

오라클에서는 싱글 따옴표 (') 를 사용하고, 더블 따옴표(")는 다른 의미를 가진다.

 

VARCHAR2(size[BYTE | CHAR]) - 가변길이의 데이터 형식

 

NCHAR[(size)] - National character 다국어를 사용할 수 있는 방법.

 

 

CONTENT CLOB

 

 

 

예약어, 명령어를 이름으로 쓰고싶으면 [" "]을 사용하면 된다.

 

 

C - Create : insert

R - Retrieve : select

U - Update : update

D - Delete : delete

 


 

로드 - 연결 - 문장 - 결과집합

 

String url="jdbc:oracle:thin:@데이터베이스 서버 주소/xepdb1";
String sql="SELECT * FROM MEMBER";

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, "ID","PASSWORD");
Statement st = con.createStatement();	
ResultSet rs = st.executeQuery(sql);

		int index = 1;

		while (rs.next()) {
			int id = rs.getInt("ID");
			int age = rs.getInt("AGE");
			String name = rs.getString("name");
			String pwd = rs.getString("pwd");
			String phone = rs.getString("PHONE");

			//테이터 분석 : 집계(평균, 중앙값....),정렬, 필터링, 맵핑.....
			
			//나이가 200살 안되는 회원으로만 선택적으로 출력을 하시오.
			//SELECT * FROM MEMBER
			
			if (age <= 200 && age != 0) {

				System.out.println("ID : " + id);

				System.out.println("Name : " + name);

				System.out.println("Pwd  : " + pwd);

				System.out.println("AGE  : " + age);

				System.out.println("PHONE  : " + phone + "\n");

				index++;
			}
		
rs.close();
st.close();
con.close();

https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html


연산을 통한 데이터 조회

SELECT age+100 age from member;

SELECT age+'100' age from member;

//오라클에서는 +연산자는 숫자로 연산한다.

 

 

문자열 더하기 연산자

 

 

SELECT NAME ||'('||ID||')' NAME  FROM MEMBER ORDER BY ID;

 

 

SELECT *FROM [테이블명] WHERE BETWEEN [숫자] AND [숫자]

 


%를 사용하면 *와 같음.

 

 

010-2345-246[0123456789]			 //뒤에 0~9까지 숫자잇것을 찾음
010-2345-246[0-9]					 //위랑 같은 식
010-2345-[0-9][0-9][0-9][0-9]		 //간단하게 표현한 식
010-2345-\d\d\d\d
010-2345-\d{4}
010-\d{4}-\d{4}
010-\d{3, 4}-\d{4}					 //중간에 3자리 또는 4자리를 찾음
01[016789]-\d{3, 4}-\d{4}			 //예전 번호 양식으로 정규식을 만듦


^\d{1,3}(?:,\d{3})*원$

regular +expression -mdn
(?<=\+)\w+

x

SELECT M.* FROM (SELECT ROWNUM NUM,MEMBER. * FROM MEMBER) M WHERE NUM BETWEEN 6 AND 10 ;--SUB 쿼리

 

SELECT ROWNUM, MEMBER.* FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 5 ;

--SELECT ROWNUM, MEMBER.* FROM MEMBER WHERE ROWNUM BETWEEN 6 AND 10 ;

SELECT * FROM (SELECT ROWNUM NUM,MEMBER. * FROM MEMBER) WHERE NUM BETWEEN 6 AND 10 ;

SELECT * FROM ( SELECT ROWNUM NUM, M.* FROM (SELECT * FROM MEMBER ORDER BY ID DESC) M )WHERE NUM BETWEEN 6 AND 10;

SELECT M.* FROM (SELECT ROWNUM NUM,MEMBER. * FROM MEMBER) M WHERE NUM BETWEEN 6 AND 10 ;--SUB 쿼리

SELECT DISTINCT AGE FROM MEMBER;--중복값 제거

SELECT LENGTH(NAME) FROM MEMBER;
SELECT * FROM MEMBER WHERE LENGTH(NAME)=3;

SELECT * FROM MEMBER ORDER BY NAME DESC;

SELECT  * FROM MEMBER ORDER BY NAME DESC,ID ASC;

UPDATE MEMBER SET NAME='리유진' where ID=15;

 

오름차순 - 낮은수부터 

내림차순 - 큰수부터

 

--문법 작성시 이 순서대로 써야한다.
SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY

 


중복을 제거한 이유  -> 무결성 때문에

 

 


레코드를  확장할 때 쓰는놈임.

 

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

[MS-SQL] 트랜잭션 로그 삭제 쿼리  (0) 2025.01.23
Oracle SQL  (0) 2023.08.30

SQL(structured Query Language)

  • DBMS에게 질의를 위한 명령어

DDL(Data Definition Language)

 

create / alter / drop


DML(Data Manipulation Language)

 

select / insert / update / delete


DCL(Data Control Language)

 

grant / revoke



DDL(Data Definition Language)

 

create 

 

새로운 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성할 때 사용한다.


CREATE OBJECT_TYPE OBJECT_NAME
(
    COLUMN1 DATA_TYPE,
    COLUMN2 DATA_TYPE,
    ...
);
CREATE TABLE MEMBER
(
    ID			NUMBER,
    PWD			VARCHAR2(50),
    NAME		VARCHAR2(50),
    GENDER		VARCHAR2(50),
    AGE			NUMBER,
    BIRTHDAY		VARCHAR2(50),
    PHONE		VARCHAR2(50),
    REGDATE		DATE
)

alter

 

이미 존재하는 데이터베이스 객체를 수정할 때 사용한다. 주로 열 추가, 수정, 삭제 등의 작업에서 활용 됨.


ALTER OBJECT_TYPE OBJECT_NAME
ACTION;
ALTER TABLE MEMBER
ADD EMAIL VARCHAR2(100);

drop

 

이미 존재하는 데이터베이스 객체를 삭제할 때 사용된다. 삭제하면 데이터도 함께 삭제될 수 있다.

 

DROP OBJECT_TYPE OBJECT_NAME;
DROP TABLE MEMBER;

오라클 데이터 형식

 

오라클에서는 싱글 따옴표 (') 를 사용하고, 더블 따옴표(")는 다른 의미를 가진다.

 

Character 형식

  • CHAR : CHAR 데이터 형식은 고정 길이 문자열을 저장하는 데 사용됩니다. 정의된 길이보다 짧은 문자열을 저장하면 나머지 공간이 공백으로 채워집니다.
CREATE TABLE Person (
    ID NUMBER,
    FirstName CHAR(30),
    LastName CHAR(30)
);

 

  • VARCHAR2 : VARCHAR2 데이터 형식은 가변 길이 문자열을 저장하는 데 사용됩니다. 최대 길이를 지정할 수 있으며, 저장된 문자열은 지정된 길이 내에서 저장됩니다.
CREATE TABLE Product (
    ProductID NUMBER,
    ProductName VARCHAR2(100),
    Description VARCHAR2(255)
);

 

  • NCHAR : NCHAR 데이터 형식은 고정 길이의 유니코드 문자열을 저장하는 데 사용됩니다. 문자의 길이는 바이트가 아닌 문자 수로 계산됩니다.
CREATE TABLE InternationalOrder (
    OrderID NUMBER,
    CustomerName NCHAR(50),
    Address NCHAR(100)
);

 

  • NVARCHAR2 : NVARCHAR2 데이터 형식은 가변 길이의 유니코드 문자열을 저장하는 데 사용됩니다. 최대 길이를 지정할 수 있으며, 문자의 길이는 바이트가 아닌 문자 수로 계산됩니다.
CREATE TABLE InternationalProduct (
    ProductID NUMBER,
    ProductName NVARCHAR2(100),
    Description NVARCHAR2(255)
);

 

  • LONG : Character data of variable length up to 2 gigabytes, or 231 -1 bytes. Provided for backward compatibility
  • CLOB : 대용량 텍스트 데이터 타입 (최대 4Gbyte)
  • NCLOB : 대용량 텍스트 유니코드 데이터 타입 ( 최대 4Gbyte)

 

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

[MS-SQL] 트랜잭션 로그 삭제 쿼리  (0) 2025.01.23
[Oracle SQL]  (0) 2023.08.30

✏️ for in 

 

for-in은 자바스크립트에서 객체의 속성을 열거하기 위해 사용되는 반복문입니다. for-in 문은 객체의 속성을 순회하면서 반복 작업을 수행합니다. 각 속성은 반복할 때마다 변수에 할당되어 사용할 수 있습니다.

 

예시:

var obj = { a: 1, b: 2, c: 3 };

for (var prop in obj) {
  console.log(prop + ": " + obj[prop]);
}
 

 

위의 예시에서 for-in 문을 사용하여 obj 객체의 속성을 순회하고, 각 속성과 해당 값이 출력됩니다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...in

 

for...in - JavaScript | MDN

for...in문은 상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복합니다. (Symbol로 키가 지정된 속성은 무시합니다.)

developer.mozilla.org


✏️ for of

 

for-of는 ES6부터 도입된 자바스크립트의 반복문입니다. for-of 문은 배열과 같이 반복 가능한(iterable) 객체를 순회하기 위해 사용됩니다. for-of 문은 각 요소를 순회하면서 반복 작업을 수행합니다.

 

예시:

 
var arr = [1, 2, 3];

for (var element of arr) {
  console.log(element);
}

 

위의 예시에서 for-of 문을 사용하여 arr 배열의 요소를 순회하고, 각 요소가 출력됩니다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...of

 

for...of - JavaScript | MDN

for...of 명령문은 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서 반복하고 각 개별 속성값에 대해 실행되는 문이 있는 사용자 정의 반복 후크를 호출하는 루프를

developer.mozilla.org

 

+ Recent posts