TIL
103
EngineeringTILCo-work
GitHub Actions 으로 간단한 CD 구성하기
본 글이 인기가 좋아 후속편을 작성했다. 아래 간단히 배포하는 것 보다 좀 더 세분화 된 내용을 담았다. 글 보러가기 기본적으로 github action에서 호스트로 push하는 방식이다. ${{ secrets.HOST }}를 비롯한 나머지 4개의 환경변수는 Setting secrets 에서 등록한다. 주요내용은 main 브랜치에서 push가 일어나면 github의 ubuntu 인스턴스에서 ssh를 통해 원격지의 deploy.sh를 실행시킨다는 내용이다. 이 스크립트가 하는 내용은 다음과 같다 저장소에서 코드 가져오기 Maven 빌
Java EcoTILMapper
MyBatis와 Spring Boot (Annotation)
application.properties 보통 insert작업을 하면 0이나 1로 리턴값을 받기 보다는 전체의 값을 반환 받는다. 그러나 id의 경우 DB에서 auto increment기 때문에 별도의 작업이 필요하다. 객체를 그대로 반환하면 입력값 그대로 반환되지만 id는 값이 설정되지 않는다. property를 설정하기 위해 mapper에서 옵션을 지정해줘야한다 @Options를 통해 생성된 키를 가지고 keyProperty를 설정하면, 자동으로 생성된 id값이 객체의 id변수에 설정된 상태로 반환된다. id를 가지고 selec
FundamentalTILOperating System
Virtual Memory
가상 메모리라는 것은 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 이 기법의 주요 장점중 하나는 사용자 프로그램이 물리 메모리 보다 커져도 된다는 점이다. 많은 경우에 프로그램 전체가 한꺼번에 메모리에 늘 올라와있어야 하는것은 아니다 아래의 예시가 있다. 프로그램에는 잘 발생하지 않는 오류 상황을 처리하는 코드가 종종 존재한다. 이러한 오류들은 거의 발생하지 않으므로 실행되지 않는다. 배열, 리스트, 테이블 등은 필요 이상으로 많은 공간을 점유할 수 있다. 실제로 10 by 10만 사용하는데도 불
FundamentalTILOperating System
Memory
프로세스에게 메모리를 할당하는 방법 컴퓨터 시스템에서 페이징의 동작 방법 메모리는 각각 주소가 할당된 이련의 바이트들로 구성된다. CPU는 프로그램 카운터가 지시하는 대로 메모리로부터 다음 명령어를 가져온다. 명령어는 필요한 경우 추가적인 데이터를 더 가지고 올수도 있고 내보낼 수도 있다. 메인 메모리와 프로세서 자체에 내장되어 있는 레지스터들은 CPU가 직접 접근할 수 있는 유일한 범용 저장장치다. 어셈블리 메모리 주소만을 인수로 취하고, 디스크의 주소를 인수로 취하지 않는다. 실행되는 명령어와 데이터들은 CPU가 직접적으로 접근
FundamentalTILOperating System
CPU Scheduling
스레드를 지원하는 운영체제에서는 실질적으로 운영체제는 프로세스가 아니라 커널 수준 스레드를 스케줄 한다. 프로세스 스케줄링과 스레드 스키줄링은 상호교환적으로 사용된다. 일반적인 스케줄링 개념을 논의하는 경우 프로세스 스케줄링을 사용하고 스레드에 국한된 개념을 가리키는 경우 스레드 스케줄링이라는 용어를 사용한다. 단일 프로세서 시스템에서는 한 순간에 오직 하나의 프로세스만이 실행할 수 있다. 다중 프로그래밍의 목적은 CPU 이용률을 최대화 해 항상 실행중인 프로세스를 가지게 하는데 있다. 하나의 프로세스는 전형적으로 어떤 입출력 요청
FundamentalTILOperating System
Process synchronization
협동 프로세스는 시스탬 내에서 실행중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스다. 협동 프로세스에서 데이터 공유는 동시접근에 의한 데이터의 비 일관성을 낳을 수 있다. 협동 프로세스의 질서있는 실행을 보장하며, 이를 통해 데이터의 일관성을 유지하는 기법을 알아보자. 프로세스는 동시 또는 병렬로 실행될 수 있다. CPU 스케줄러가 프로세스 사이에서 빠르게 오가며 각 프로세스를 실행해 모든 프로세스를 동시실행 한다. 프로세스는 다른 프로세스가 스케줄 되기 전에 일부분만 진행 할 수 있다. 다른 프로세스에 속한 두개의
Java EcoTILJava programming
Java; Class
java.lang.*은 컴파일 할때 자동으로 추가된다. Object클래스는 모든 자바 클래스의 최상위 클래스다. 모든 클래스는 Object 클래스로부터 상속을 받는다. 클래스를 만들때 extends Object를 하지 않지만, 컴파일 과정에서 자동으로 들어간다. 모든 클래스가 Object 클래스를 상속 받았으므로 Object의 메소드를 사용할 수 있고 재정의 할 수도 있다 String toString() : 객채를 문자열로 표현하여 반환한다. 재정의하여 객체에 대한 설명이나 특정 맴버변수 값을 반환한다. boolean equals(
Java EcoTILJava programming
Java; Other I/O stream
클래스의 상태를 저장해 전송하거나 저장할 일이 있다. 그럴때 인스턴스의 어느 순간을 저장하는것을 직렬화라고 한다. (Serialization) 인스턴스의 저장된 상태를 다시 복원하는 것을 역직렬화라고 한다. (Deserialization) 직렬화란 간단하게 인스턴스의 내용을 연속 스트림으로 만드는 것이다. 스트림으로 만들어야 파일에 쓸 수도 있고 네트워크로 전송할 수도 있다. 직렬화를 위한 보조 스트림 ObjectInputStream(InputStream in) ObjectOutputStream(OutputStream out) 직렬