일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 컴포짓패턴
- notification system
- tenneling
- 대규모 시스템 설계
- 클래스 관계
- argocd
- Buffered channel
- Golines
- Kubernetes
- goroutine
- gitops
- AWS
- image resizing
- go
- Bastion Server
- golang
- Infra
- Helm V3
- 디자인패턴
- GoF 디자인패턴
- 알림 시스템
- UnBuffered channel
- Live Template
- 시스템 설계
- Lambda@Edge
- System Design
- AWS Infra
- Logrus
- 컴포지트패턴
- GoF
- Today
- Total
목록Information Technology (294)
Fall in IT.
오늘은 Spring Data JPA 기본키 매핑하는 방법에 대해서 알아보겠습니다. Spring Data JPA 에서는 엔티티의 기본키를 @Id 어노테이션을 사용하여 설정합니다. @Entitypublic class Team{@Id@Column(name = "team_id")private Long id; (이하 생략)} 이때, 기본키를 할당하는 방법으로는 두가지가 있습니다.직접할당 : 기본 키를 어플리케이션에서 직접 할당 해주는 방법 자동생성 : 데이터베이스가 자동으로 할당해주는 방법 (예를들어, 오라클은 sequence, MySQL의 auto_increment)데이터베이스 벤더마다 sequence, auto_increment 등 기본키를 자동생성하는 지원하는 방법이 다릅니다.Spring Data JPA는 ..
오늘은 JPA를 사용하는 이유와 Spring Data JPA에서 연관관계 매핑하는 방법에 대해서 알아보겠습니다. JPA란?JPA는 Java Persistance API의 약자로, 자바 진영의 ORM 기술 표준입니다. ORM이란?ORM은 Object-Relational Mapping의 약자로, 객체와 관계형 DB를 매핑하는 기술 입니다. JPA를 사용하는 이유?생산성 자바 객체를 사용하여, DB 스키마를 생성 및 SQL 처리를 할 수 있습니다. 유지보수 기존에는 DB에 필드를 추가할때, DB뿐만 아니라 관련 코드까지 모두 수정해야 하는데, JPA를 사용하면 엔티티 객체에 멤버변수만 추가해주면 된다. 또한, 기본적인 CRUD의 경우 JPA에서 기본적으로 제공해준다. 성능 어플리케이션과 데이터베이스 사이에서 ..
오늘은 java에서 디렉터리 또는 파일 생성하는 방법에 대해서 알아보겠습니다. java.io.File 클래스 사용. 디렉터리 생성boolean mkdir(); //상위의 디렉터리가 존재하지 않을 경우, 디렉터리 생성 못하고 false를 반환 합니다.boolean mkdirs(); //상위의 디렉터리가 존재하지 않을 경우, 상위 디렉터리까지 모두 생성합니다. sample codeFile file = new File("/opt/test/");file.mkdir(); file.mkdirs(); 파일생성boolean createNewFile(); 같은 이름의 파일이 존재하면 false, 존재하지 않고 파일이 생성되면 true를 반환 합니다. 파일 경로가 존재하지 않을 경우 IOException 발생. No su..
오늘은 static 을 잘 활용하는 방법에 대해서 알아보겠습니다. 자주 사용하고 절대 변하지 않는 변수는 final static 으로 선언합니다. - 템플릿 성격의 객체도 static으로 선언하는 것이 성능 향상에 도움이 됩니다. config 파일 정보도 static으로 관리합니다. - 자바 개발을 할때, 무수히 많은 config 정보들이 있는데 매번 객체를 생성할때 호출 하는 것은 매우 비효율적 입니다. static으로 선언하여 클래스가 로딩될때 한번만 값을 가져오도록 해야합니다. 값이 동시에 변경되는 변수의 경우 static 변수로 사용하면 안됩니다. - 동시에 QuerySample의 query변수를 접근할 경우, 데이터가 꼬이는 현상이 발생할 수 있습니다. public class QuerySampl..
리눅스 운영체제에서 부팅시 자동으로 서비스를 시작시키는 방법에 대해 알아보겠습니다. 리눅스 시스템 서비스 등록 방법 Redhat계열에서는 스크립트를 init.d의 서비스로 등록해서 부팅시 자동으로 시작하게 한다. /etc/init.d/ 하위 경로에 스크립트 파일을 위치 시킨다.부팅과 동시에 실행하기위해 run-level에 등록한다. $ chkconfig --add "스크립트명"부팅시 자동으로 실행, 종료시 자동으로 종료된다.service 스크립트명 (start | stop | status) 가능 test.sh 스크립트를 서비스 등록하기 $ mv test.sh /etc/init.d/$ chkconfig --add test.sh$ service status test.sh등록 완료 리눅스 chkconfig 로..
유닉스계열 운영체제에서 스크립트 작업을 하다보면, 모든 라인 마지막에 ^M 문자가 붙어있는 경우를 볼 수 있다. 이러한 일이 발생하는 경우는 윈도우에서 스크립트를 수정하고 유닉스계열 운영체제로 파일을 옮길경우 생기곤 하는 문제인데, 일일이 수정지울 필요 없이, 아래의 간단한 명령어로 해당 문자를 모두 지울 수 있다. vi command에서 다음과 같이 입력한다.$ :%s/^M//g (^M은 Ctrl + v + m으로 입력) ex) sample 파일에 ^M 문자를 지울 경우 vi 편집기를 통해 파일을 오픈한다. - $ vi sample명령어를 입력한다. - $ :%s/^M//g 모두 즐거운 코딩하세요~
오늘은 StringBuffer와 StringBuilder의 차이점에 대해 아주 간단한 내용만 알아보도록 하겠습니다. String 클래스의 특징 불변하는 클래스이다. 즉, 한번 생성되어지면 변할 수 없다. String 클래스의 메소드 subString(), concat() 등 모두 새로운 객체를 생성하여 만들어진다. StringBuffer 클래스의 특징 변하는 클래스이다. append(), insrt(), delete() 등의 메소드를 통하여 StringBuffer 객체가 가지고 있는 문자열을 변경 할 수 있고, 새로운 객체를 생성하지 않고 기존의 문자열을 변경한다.동기화를 지원한다. 즉, 멀티스레딩 환경에서 동기화가 가능하다. (코드를 보면, 각 메소드 별로 synchronized 키워드가 존재한다.)/..
오늘은 jdk 1.5에서 추가된 enum에 대해 알아보겠습니다. enum의 정의 배열 : 서로 연관된 값들의 집합열거형(enumerated type) : 서로 연관된 상수들의 집합 enum의 특징코드가 단순해진다. 인스턴스 생성과 상속을 방지한다. - enum 객체를 new를 통해 인스턴스를 생성을 막아주고, 생성자의 접근제어자를 private으로 설정 하지 않을 시 컴파일 에러가 발생한다. 의미를 명확히 할 수 있다. - class 대신 enum을 사용함으로써 구현 의도를 명확히 나타낸다. 자바의 enum은 C언어의 열거형보다 더 향상된 개념의 열거형으로 값뿐만 아니라 타입까지 관리하기 때문에 컴파일시 오류를 줄일 수 있다. - 아래의 School.MIDDLE 값과 Level.SILVER 를 비교할 경..
안녕하세요. 오늘은 프로그래밍 할때, 자주(필수?) 사용되는 반복문 사용 시 주의할 점에 대해서 알아보겠습니다.(대단한건 아니고 아주 사소하고 간단한것부터...) "반복문 안에는 불필요한 메소드 호출이 없어야 합니다." 사소하게 많이 실수하는 예제를 한번 보도록 하겠습니다. (저만 했던건지도 모릅니다..) List stringList = new ArrayList();stringList.add("aaa");stringList.add("bbb");stringList.add("ccc"); for(int i = 0; i < stringList.size(); i++){ System.out.println(stringList.get(i));} 현재 예제코드는 stringList라는 ArrayList의 값들을 반복문을..
이미지 파일을 ByteArray로 변환 하는 방법과 ByteArray를 이미지파일로 저장하는 방법에 대해서 알아보겠습니다. 서버와 클라이언트 혹은 서버와 서버간의 통신에서 이미지 파일을 전송 및 수신을 해야 할때가 있습니다.이때, ByteArrayStream을 사용하여 이미지 파일을 전송하고 수신해서 다시 이미지 파일로 저장 할 수 있습니다.(스트림 : 데이터를 운반하는데 사용되는 연결 통로) 예제 코드를 통해 알아보도록 하겠습니다. 메소드 단위 sample codeinput : 이미지파일 경로, output : byteArray(byte[]) (이미지 파일을 바이트 배열로 저장) public byte[] imageFileConvertToByteArray(String imageFilePath) throw..