miracle_cat의 등록된 링크

 miracle_cat로 등록된 네이버 블로그 포스트 수는 51건입니다.

[알고리즘] 너비 우선 탐색 BFS (Java) [내부링크]

깊이 우선 탐색 DFS 그래프 탐색 알고리즘 중 하나입니다. 너비 우선 탐색 BFS(Breadth First Search)는 탐색 과정에서 인접한 것을 우선적으로 탐색하는 알고리즘입니다. 깊이 우선 탐색 DFS는 스택 구조를 사용하는데 반해 BFS의 경우엔 큐를 사용합니다. 먼저 그림으로 BFS 과정을 확인해 보겠습니다. 시작점 1을 시작으로 인접 노드 2, 6, 7을 큐에 담고 1은 방문처리 합니다. 큐에 값을 하나씩 꺼내면서 방문하지 않은 인접 노드를 큐에 추가합니다. 여기선 노드 2를 방문처리하고 인접노드 3, 4를 큐에 담습니다. 다음 노드 6을 꺼내면서 방문처리하고 인접 노드가 없으므로 다음 노드 7을 꺼냅니다. 노드 7을 방문처리하고 인접 노드 8, 9를 큐에 담습니다. 다음 큐인 노드 3을 방문처리하고 인접 노드가 없으므로 다음 노드 4를 꺼냅니다. 노드 4를 방문처리하고 인접 노드 5를 큐에 담습니다. 남은 큐값들을 하나씩 방문처리 하며 (노드 8 > 노드 9 > 노드

[Spring] 타일즈3 (Tiles3) 적용 [내부링크]

Apache Tiles? Apache Tiles는 Layout Template Engine 중 하나입니다. 레이아웃에 정해진 틀에 따라 페이지들을 조합하여 하나의 완전한 페이지로 만들어줍니다. 예를 들어 body를 만들 때 html의 header, footer 등은 동일하여 매 body마다 include 하여 사용거나 최악엔 각 페이지마다 직접 입력되게 되는데, Layout Template Engine은 이런 공통부분을 레이아웃으로 만들어 틀을 만들고 body만 바꿔주면서 하나의 페이지를 만들 수 있게 하는 프레임워크입니다. 추상화하는 것 같네요. ㅎㅎ 장점으로는 역시 공통부분을 합치는 것이기에 중복 코드를 줄일 수 있고요, 재사용성이 높습니다. 유지 보수 또한 용이합니다. Tiles3 적용 먼저 라이브러리를 추가해 줍니다. / Gradle / implementation "org.apache.tiles:tiles-extras:3.0.8" / Maven / <dependency> <g

[AWS] AWS 무료 서버 사용 / 프리티어 생성 [내부링크]

AWS AWS (amazon web services)는 아마존에서 제공하는 클라우스 서비스로 네트워크 구성 및 서버, 각종 소프트웨어, 저장 장치 등을 클라우드로 사용할 수 있습니다. 국내에는 KT 클라우드 등이 있습니다. AWS는 처음 카드 등록 시점부터 1년 동안 서버를 무료로 제공해 줍니다. 하지만 모든 서비스가 무료는 아니기에 모니터링해서 원하지 않는 요금이 발생하지 않도록 주의해야 해요! https://aws.amazon.com/ko 클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services Amazon Web Services는 안정성이고 확장 가능하며 저렴한 클라우드 컴퓨팅 서비스를 제공합니다. 무료로 가입할 수 있으며 요금은 사용한 만큼 지불하면 됩니다. aws.amazon.com 먼저 AWS 홈페이지에서 계정을 만듭니다. 카드 등록 시 0.1달러가 결제되는데 확인 용이라 다시 돌려받기 때문에 걱정하지 않아도 됩니다. 인스턴스 생성 먼저 웹서비스 서

[AWS] AWS DB 사용 / 프리티어 생성 (1년 무료) [내부링크]

Amazon RDS 지난 EC2 프리티어 서버 생성 이후 데이터베이스 생성을 이어서 해보도록 하겠습니다. 먼저 RDS 메뉴로 들어가야 하는데 상단 검색창에 rds를 검색하여 접근하도록 해볼게요 접근했다면 대시보드 가운데 있는 데이터베이스 생성 탭에서 데이터베이스 생성 버튼을 선택합니다. 생성 폼이 로딩되면 표준 생성 > 원하는 DB > 프리티어 순으로 선택합니다. 저는 MySQL을 선택했어요! 이름 설정과 DB 로그인 설정입니다. 적당히 설정해 줍니다. 서버 스펙과 스토리지 설정입니다. 프리티어의 경우 db.t2.micro / db.t3.micro / db.t4.micro 이고 스토리지는 최대 20GB입니다. (과금 되는 설명이 바뀔 수도 있으니 확인하고 선택하세요! 보통 t클래스에 mircro 면 프리티어입니다.) 그리고 스토리지 자동 조정 활성화를 해제해 주었습니다. 모두 기본값으로 설정하고 다음 퍼블릭 액세스는 외부에서 접근 가능하도록 하기 위해 선택하였습니다. VPC 보안 그

[알고리즘] 삽입 정렬 (Java) [내부링크]

삽입 정렬 정렬 알고리즘의 한 종류인 삽입 정렬입니다. 주어진 리스트 중 앞에서부터 정렬된 부분을 비교하여 적절한 위치에 넣습니다. 앞서 설명한 선택 정렬이나 버블 정렬이 무조건 위치를 교체하였다면 삽입 정렬은 필요시에만 교체합니다. 삽입 정렬의 시간 복잡도는 O(n^2)입니다. 시간 복잡도는 선택 정렬이나 버블 정렬과 동일하지만 정렬이 어느 정도 되어 있을 때는 굉장히 빠른 속도를 자랑합니다. 다음 숫자 리스트를 오름차순 선택 정렬을 하려고 합니다. Index 0 1 2 3 4 5 6 7 8 Value 9 1 6 2 4 8 3 5 7 먼저 index 1에서 하위 index를 비교하여 제값을 찾아갑니다. 여기선 index 0보다 작으므로 교체합니다. Index 0 1 2 3 4 5 6 7 8 Value 1 9 6 2 4 8 3 5 7 다음 index 2에서 하위 index를 비교하여 제값을 찾아갑니다. 여기선 index 1보다 작고 index 0보단 크므로 사이로 들어갑니다. Ind

[Redis] Windows RedisDB 설치하기 [내부링크]

Redis 란? Redis란 Remote Dictionary Server의 약자로 기본적으로 Key - Value와 같은 Map 형태로 데이터를 저장하고 관리하는 비관계형 데이터베이스 관리 시스템입니다. 기본적으로 메모리에 데이터를 저장 및 읽기 때문에 속도가 빠른 장점이 있습니다. 메모리에 데이터를 저장하기에 Redis가 정지되거나 서버 전원이 꺼졌을때 데이터가 날라가게 되는데 데이터 영속화를하여 손실을 최소화할 수 있습니다. Redis는 보통 단독으로 사용하진 않고 메인 DB (RDBMS 같은 ...)의 값을 캐싱하여 서브 DB로 많이 사용 하는것 같다. Redis Window 설치 Redis공식 사이트에서 Windows 설치 지원을 하지않지만 MS에서 설치할 수 있돌고 Github에 올려져있습니다. https://github.com/microsoftarchive/redis GitHub - microsoftarchive/redis: Redis is an in-memory data

[알고리즘] 퀵 정렬 (Java) [내부링크]

퀵 정렬 정렬 알고리즘의 한 종류인 퀵 정렬입니다. 리스트 가운데서 하나의 값을 고릅니다. 이를 피벗(Pivot)이라고 하며 보통 제일 처음이나 마지막 값을 선택합니다. 피벗을 기준으로 왼쪽에는 작은 값을 오른쪽에는 큰 값이 오도록 교환합니다. 이렇게 나누어진 왼쪽 값들과 오른쪽 값들을 다시 정렬합니다. 정렬할 때 동일하게 다시 피벗을 정하고 피벗을 기준으로 양쪽을 나눕니다. 최종적으로 나누어진 값의 크기가 0이나 1이 될 때까지 반복합니다. 버블 정렬의 최악 시간 복잡도는 O(n^2)이지만 평균 시간 복잡도는 O(nlogn)입니다. 기준 피벗에서 오른쪽으로 높은 값을 찾고 왼쪽으로 낮은 값을 찾습니다. 4 1 9 2 6 8 3 5 7 피벗 -> High <-Low 높은 값 9의 인덱스보다 낮은 값 3의 인덱스가 높으므로 교체합니다. 4 1 3 2 6 8 9 5 7 피벗 -> High <-Low 다음을 보면 높은 값 6의 인덱스가 낮은 값 2의 인덱스 보다 높으므로 교체하지 않습니다

[알고리즘] 합병 정렬 (Java) [내부링크]

합병 정렬 정렬 알고리즘의 한 종류인 합병 정렬입니다. 합병정렬의 기본 개념은 n 개의 부분 리스트로 분할하는 것입니다. 흔히 쓰이는 하향식 2-way 합병 정렬에서의 과정입니다. 리스트 길이가 1이하면 이미 정렬된 것으로 봅니다. 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분을 리스트로 나눕니다. 각 부분 리스트를 재귀적으로 합병 정렬을 이용 정렬합니다. 두 부분 리스트를 다시 하나의 리스트로 합병합니다. 합병 정렬의 시간 복잡도는 O(nlogn)입니다. 합병 정렬 과정입니다. 먼저 최소 배열 단위까지 분할 후 합병 과정에서 분할된 두개의 배열의 각 인덱스를 비교하여 정렬을 합니다. 이 과정에서 임시 배열에 정렬된 배열을 저장하고 정렬 후에 기존 배열에 임시 배열을 복사합니다. 다음은 Java를 이용하여 구현해 보겠습니다. public static void main(String[] args) { int[] arr = {30, 15, 20, 25, 40, 45, 35,

[Jenkins] Windows 젠킨스 설치하기 [내부링크]

Jenkins 란? 젠킨스란 소프트웨어 개발 시 CI (Continuous Integration) : 지속적인 통합과 CD (Continuous Delivery) : 지속적 배포 환경을 구축하기 위한 도구입니다. 빌드, 테스트, 배포 프로세스를 자동화함으로써 소프트웨어 품질과 개발 생산성을 높일 수 있습니다. MIT 라이선스를 따릅니다. Jenkins Window 설치 https://www.jenkins.io/ Jenkins Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software www.jenkins.io 먼저 위의 Jenkins 공식 홈페이지로 접속하여 Download합니다. 왼쪽은 LTS Version은 안정화된 버전이고 오른쪽은 현재 최신 버전입니다. 22.12.01 기준 LTS 최신 버전은

[알고리즘] 힙 정렬 (Java) [내부링크]

힙 정렬 정렬 알고리즘의 한 종류인 힙 정렬입니다. 힙 정렬을 하기전에 먼저 힙에 대해 알아보겠습니다. 힙 이란? 힙은 완전 이진 트리에 가까운 형태입니다. 이진트리란 각 노드의 자식수가 2이하인 경우입니다. 완전 이진트리란 Root 노드부터 Leaf 노드까지 모두 값이 있는 형태입니다. 최대힙 루트 노드에 있는 키는 모든 자식 노드보다 가장 커야합니다. 각 노드의 자식 노드와의 관계도 마찬가지입니다. 최소힙 루트 노드에 있는 키는 모든 자식 노드보다 가장 작아야 합니다. 각 노드의 자식 노드와의 관계도 마찬가지입니다. 다음은 최대힙 구조입니다. 최대힙에 삽입시 데이터 변환 구조 입니다. 기존 힙에 65 노드를 추가 하였습니다. 65는 차례로 부모 노드와 비교하여 스왑합니다. 비교 스왑을 통하여 최종적으로 제일 상위 노드가 되었습니다. 최대힙에 삭제시 데이터 변환 구조 입니다. 최대힙에서 삭제시 최댓값인 60이 삭제됩니다. 제일 마지막 노드인 30이 최상위 루트 노드가 되고 다시 자

[알고리즘] 깊이 우선 탐색 DFS (Java) [내부링크]

깊이 우선 탐색 DFS 그래프 탐색 알고리즘 중 하나입니다. 깊이 우선 탐색 DFS(Depth First Search)는 탐색 과정에서 깊은 것을 우선적으로 탐색하는 알고리즘입니다. 깊이 우선 탐색은 모든 노드를 방문하고자 하는 경우에 사용됩니다. 깊이 우선 탐색에서는 스택 구조가 사용되며 재귀 형식으로도 표현할 수 있습니다. 먼저 그림으로 DFS 과정을 확인해 보겠습니다. 시작점 1을 시작으로 인접 노드 중 좌측 노드인 2를 방문합니다. 노드 2에서 인접 노드 중 방문하지 않은 노드 3을 방문합니다. (한번 방문한 노드는 재방문 하지 않습니다.) 노드 3에서 방문하지 않은 인접 노드가 없으므로 노드 2로 되돌아갑니다. 노드 2에서 방문하지 않은 노드 4를 방문합니다. 노드 4에서 방문하지 않은 인접 노드가 없으므로 노드 2로 되돌아갑니다. 노드 2또한 인접 노드를 모두 방문했으므로 노드 1로 돌아갑니다. 노드 1에서 방문하지 않은 인접 노드 노드 5를 방문합니다. 노드 5에서 좌측

[가평 춘천] 남이섬 가을 나들이 [내부링크]

안녕하세요. 지지난 주에 다녀온 남이섬 리뷰에요! 지금은 낙엽이 많이 떨어졌겠죠...? ㅠ 그래도 어느 시점에 가던지 매력 있는 남이섬인 것 같아요! 가평역 남이섬 남이섬 강원도 춘천시 남산면 남이섬길 1 남이섬 장소 : 강원 춘천시 남산면 남이섬길 1 영업시간 : 평일 08:00 ~ 21:00, 주말 07:30 ~ 21:30 Previous image Next image 남이섬에 가려면 남이섬 선착장에서 배를 타야 해요 ㅎㅎ 가평역에서부터 약 2km 정도 걸어가면 매표소가 보여요 Previous image Next image 네이버에서 예약하신 분들은 가운데 입구에서 확인 후 바로 입장하면 되고 다른 예약이나 현장 구매는 오른편 매표소에서 구매 후 입장하시면 돼요~ 네이버로 미리 예약 시 1인 16,000원, 2인 29,000으로 조금 할인받았어요!! Previous image Next image 표 확인 후 배 승선! Previous image Next image 꼬미랑 사진도

[JPA] JPA Hibernate CRUD 사용 정리 [내부링크]

[JPA] JPA란? JPA Hibernate XML 설정 및 조회 [JPA] JPA란? JPA Hibernate XML 설정 및 조회 JPA란? 1. JPA란 Java Persistence API의 약자이다. 2. 자바의 ORM을 위한 표준 기술로 Hib... blog.naver.com JPA 등록 JPA 등록입니다. 기존 만들어 놓은 파일에서 추가 및 수정합니다. 추가 MemberVO.java 수정 MemberCtl.java MemberService.java MemberServiceImpl.java MemberEntity.java 추가 / MemberVO.java / @Data public class MemberVO { private Long memberId; private String email; private String password; private String authority; private String name; private String address; privat

[알고리즘] 선택 정렬 (Java) [내부링크]

선택 정렬 정렬 알고리즘의 한 종류인 선택 정렬입니다. 주어진 리스트 중에 최솟값을 찾습니다. 최솟값을 맨 앞의 값과 교체합니다. 맨 앞의 최솟값을 빼고 다음 최솟값을 찾습니다. 반복 하여 정렬합니다. 결국 선택 정렬이란 배열의 최솟값을 맨 앞으로 하나씩 보내는 정렬이라 할 수 있습니다. 선택 정렬의 시간 복잡도는 O(n^2)입니다. 다음 숫자 리스트를 오름차순 선택 정렬을 하려고 합니다. Index 0 1 2 3 4 5 6 7 8 Value 9 1 6 2 4 8 3 5 7 먼저 index 0부터 index 8까지 최솟값을 찾았을 때 제일 작은 값은 1입니다. Index 0 1 2 3 4 5 6 7 8 Value 9 1 6 2 4 8 3 5 7 찾은 최솟값 1을 제일 앞의 index 0의 값 9와 교체합니다. Index 0 1 2 3 4 5 6 7 8 Value 1 9 6 2 4 8 3 5 7 index 0은 고정이 되고 다음 index 1부터 index 8까지 최솟값을 찾으면 작은

[MySQL] Windows MySQL 설치 [내부링크]

안녕하세요.! 이번 포스팅에선 관계형 데이터베이스 중에 익숙한 MySQL 윈도우 설치방법입니다. 먼저 아래 MySQL 홈페이지에 접속하여서 Windows 설치 파일을 다운로드합니다. https://dev.mysql.com/downloads/windows/installer/8.0.html MySQL :: Download MySQL Installer General Availability (GA) Releases Archives MySQL Installer 8.0.31 Looking for previous GA versions? Select Operating System: Windows (x86, 32-bit), MSI Installer 8.0.31 5.5M Download (mysql-installer-web-community-8.0.31.0.msi) MD5: 7a83203e24f873b49fa2df2f1a58eca6 | Signature Windows (x86, 32-bit)... d

[알고리즘] 버블 정렬 (Java) [내부링크]

버블 정렬 정렬 알고리즘의 한 종류인 버블 정렬입니다. 배열 앞의 두 수(a, b)를 선택한 뒤 b가 a보다 작으면 (a>b) 교체합니다. 다음 두 수(b, c)를 비교하여 c가 b보다 작으면 (b>c) 교체합니다. 이렇게 배열의 마지막 두 수까지 비교하여 교체 작업을 합니다. 마지막까지 비교하면 맨 뒤의 값은 최댓값이 됩니다. 마지막 값을 제외하고 다시 배열 앞의 두 수(a, b)를 선택 비교하고 반복합니다. 결국 버블 정렬이란 배열을 비교하여 작은 값을 앞으로 보내는 정렬이라 할 수 있습니다. 버블 정렬의 시간 복잡도는 O(n^2)입니다. 다음 숫자 리스트를 오름차순 버블 정렬을 하려고 합니다. Index 0 1 2 3 4 5 6 7 8 Value 4 1 9 2 6 8 3 5 7 먼저 index 0과 index 1을 비교하고 index 0 > index 1이라면 두 값을 교체해 줍니다. 여기선 (4 > 1)로 index 1 이 더 작으므로 교체해 줍니다. Index 0 1 2 3

이클립스[Eclipse] - 롬복(Lombok) 설치 및 추가 [내부링크]

롬복 Lombok 롬복은 Entity, VO 등 환경에서 보통 반복 작성하게 되는 getter, setter, toString 등을 대신 작성해 주는 라이브러리입니다. (노가다 대신해 줌!) Lombok 미적용, 적용 코드 비교 일반적인 Java코드 public class Lombok { private String lombok; private int level; // 노가다 public String getLombok() { return this.lombok; } // 노가다 public void setLombok(String lombok) { this.lombok = lombok; } // 노가다 public int getLevel() { return this.level; } // 노가다 public void setLombok(int level) { this.level = level; } } Lombok 사용 시 @Getter @Setter public class Lombok { p

[Git] .gitignore가 안 먹힐 때 해결하기 [내부링크]

처음 default 설정 파일들을 최초 푸시 하고 gitignore의 주석을 해제하였는데 gitignore의 설정이 적용이 안되고 설정 파일들이 수정되면 다시 unstaged changes에 올라가는 일이 발생했어요. 확인해 보니 파일들이 이미 추적 중이라 ignore가 제대로 먹히지 않은 것인데..... 이와 같이 여러 상황에서 해결할 수 있는 방법을 알아볼게요. 1. 이미 추적 중인 폴더/파일 중 일부만 무시하고 싶은 경우 2. 모든 파일이 추적 중이라 일부만 선택하기 힘든 경우 3. 반대로 추적 해제한 파일을 다시 추적하고 싶을 경우 1. 이미 추적 중인 폴더/파일 중 일부만 무시하고 싶은 경우 gitignore를 사용 중 gitignore에 무시할 폴더/파일을 추가했을 경우 이미 해당 폴더/파일이 등록되고 추적 상태여서 gitignore 설정이 안 먹힐 때 사용하면 된다. 1. 일단 현재 unstaged changes에서 무시하려는 파일을 제외하고 모두 commit을 해준다.

[Git] GitHub 등록 이후... branch 사용법 [내부링크]

안녕하세요! 지난번에 Git과 GitHub 최초 등록 이후 추가로 branch를 사용하여 개별 history를 쌓고 이를 메인 master branch에 병합하는 기본적인 과정을 해볼까 합니다. GitHub 등록 [Git] Git이란?, GitHub 소스 최초 등록 GIT 이 란 Git은 소프트웨어 형상관리 툴중 하나로 최근 현직에서 가장 대중화 된 툴이 아닐까 한다. ... blog.naver.com 지난 번 master 최초 푸시 이후입니다. 현재 Branch 확인 / CMD창 C:\hellogit 폴더 / > git branch * master 최초에 등록된 master 하나가 있는걸 확인할 수 있습니다. Branch 생성 / CMD창 C:\hellogit 폴더 / > git checkout -b firstBranch > git branch * firstBranch master git checkout -b [브랜치 이름] 으로 브랜치를 생성하고, git branch로 현재 브랜

[디자인 패턴] 팩토리 패턴 - 심플 팩토리(Simple Factory) [내부링크]

팩토리 패턴 팩토리 패턴은 객체 생성을 떼어내어 상속 관계에 있는 상위클래스에는 기준이 되는 틀을 만들고 하위 클래스가 어떤 객체를 생성 할지를 결정 하는 패턴입니다. 사용자가 객체에 직접 관여하지 않으므로 유지보수가 용이합니다. Simple Factory 심플 팩토리는 디자인 패턴으로 분류되지 않지만 추후 설명할 팩토리 메서드와 추상 팩토리의 기본이 된다고 볼 수 있습니다. 보통 심플 팩토리는 객체를 생성하는 부분을 떼어낸 것입니다. 여기서 객체 생성하는 부분을 왜 떼어낼까요? 객체를 사용자가 직접 호출해 보는 예제를 만들어 보겠습니다. / 아이스크림 InterFace / public interface IceCream { public String getName(); // 아이스크림 이름 public int getPrice(); // 아이스크림 가격 } / 딸기 아이스크림 / public class StrawberryIceCream implements IceCream { @Overr

[디자인 패턴] 팩토리 패턴 - 팩토리 메서드(Factory Method) [내부링크]

Factory Method 팩토리 메서드는 객체생성시 어떤 클래스의 인스턴스를 만들지 서브 클래스에서 결정하게 합니다. 부모 클래스에서 직접 객체의 인스턴스를 결정하지 않고 하위 클래스에서 결정하니 새로운 구현 클래스가 추가되어도 기존 클래스 수정없이 새로운 팩토리 클래스만 추가하면 됩니다. 지난번 Simple factory에서 작성한 코드를 그대로 사용하겠습니다. / 아이스크림 공장 기존 / public class IceCreamFactory { // 아이스크림 객체 생성 private static IceCream createIceCream(String taste) throws Exception{ if("Strawberry".equals(taste)) return new StrawberryIceCream(); else if("Vanilla".equals(taste)) return new VanillaIceCream(); else throw new Exception("Taste no

[디자인 패턴] 팩토리 패턴 - 추상 팩토리 (Abstract Factory) [내부링크]

Abstract Factory 추상 팩토리 패턴의 구조 자체는 팩토리 메서드 패턴과 유사하지만 팩토리 메서드 패턴에서 객체 생성에 중점을 두었다면 추상 팩토리 패턴 에서는 객체의 구성요소의 집합에 중점을 둔 패턴입니다. 여러 구성별로 객체를 모아야 할 때 유용합니다. 기존 아이스크림 공장이 확장되어 과자 공장이 추가되었고, 생산을 늘리기 위하여 두번째 공장이 추가되었습니다. public interface MiracleFactory { // 아이스크림 만들기 default IceCream createIceCream(Main.ICECREAM type) throws Exception{ IceCream iceCream = orderIceCream(type); System.out.printf("%s 아이스크림은 %d원입니다.\n", iceCream.getName(), iceCream.getPrice()); System.out.println("아이스크림을 포장합니다."); System.out.

[디자인 패턴] 디자인 패턴 정리 [내부링크]

싱글톤 패턴 싱글톤 패턴은 하나의 인스턴스만 가지는 패턴입니다. 인스턴스 생성은 사용자가 객체생성시 메모리에 인스턴스를 올리는게 일반적인데 싱글톤의 경우 미리 메모리에 인스턴스를 올려 해당 자원을 공유하는 방식이라고할 수 있습니다. 팩토리 패턴 팩토리 패턴은 디자인 패턴중 하나로 객체 생성분을 떼어내어 상속관계에 있는 상위 클래스에는 기본 틀을 만들고 하위 클래스에서 어떤 객체를 생성할건지 결정하는 패턴입니다. > 팩토리 메서드 패턴 객체 생성부분을 추상화 하여 그걸 상속 받은 서브 클래스에서 어떤 객체 인스턴스를 생성할지 결정하는 패턴입니다. > 추상화 팩토리 패턴 팩토리 메서드 패턴에서 객체 생성 부분에 중점을 두었다면 추상화 팩토리 패턴에선 객체 구성요소의 집함에 중점을 둔 패턴입니다. 사용 이유 사용자가 직접 객체생성을 하게되면 해당 객체와 의존관계가 형성되고 객체 수정시 그걸 사용하는 사용자들 모두 수정해야 하기 때문에 유지보수 효율이 떨어집니다. 장점 사용자가 객체에 직접

[JPA] JPA란? JPA Hibernate XML 설정 및 조회 [내부링크]

JPA란? 1. JPA란 Java Persistence API의 약자이다. 2. 자바의 ORM을 위한 표준 기술로 Hibernate, Spring JPA, EcliplseLink 등 과 같은 구현체가 있다. 3. ORM 이란 Object-Relational Mapping 약자로 객체와 관계형 데이터베이스를 매핑한다. JPA 장점 1. 기존 Mybatis의 경우 SQL 기본 CRUD에 있어서 반복적이고 중복적인 코드들을 보다 간편하게 작성될 수 있도록 해결하였다. 2. 객체 중심으로 코드가 작성되다 보니 수정/변화에 유리하여 유지 보수성이 좋아진다. 3. 기존 SQL 중심의 개발은 DB 벤더(MySQL, Oracle, PreSQL 등..)에 따라 조금씩 다른 SQL 문법으로 의존도가 강해 해당 DB에 종속될 수밖에 없어서 변화에 민감하지만 JPA는 직접 SQL 작성하는 것이 아니라 DB 벤더에 유연한 개발이 가능하다. JPA Hibernate XML 설정 Java Spring + JP

자바[Java] - String배열을 List 변환, List를 String배열 변환 [내부링크]

String배열을 List 변환 // String 배열 String[] arr = {"A","B","C","D","E","F"}; // String 배열 to List List<String> arrToList = Arrays.asList(arr); // String 배열 to ArrayList ArrayList<String> arrToArrayList = new ArrayList<String>(Arrays.asList(arr)); // String 배열 to List 출력 System.out.println(arrToList.toString()); // String 배열 to ArrayList 출력 System.out.println(arrToArrayList.toString()); String배열 to List : Arrays.asList(arr) 단순히 배열을 리스트화 하는 코드다. 들여다보면 new ArrayList<T> 하여 List<T>로 리턴함을 볼 수 있다. String배열

자바[Java] - Date와 SimpleDateFormat [내부링크]

Date Date 클래스는 Java에서 현재 시간을 구할 수 있는 클래스중 하나이다. new Date()로 객체 생성만 해주면 구할 수 있을 정도로 간편하다. 그러나 날짜 디데이를 구하거나 날짜의 차이등 날짜를 컨트롤하기에는 조금 모자란 클래스이므로 권고사항에 따라 Calendar 클래스를 쓰도록 하자. import java.util.Date; // 현재 날짜 및 시간 가져오기 Date date = new Date(); // 현재 날짜 및 시간 System.out.println(date); // 현재 날짜 및 시간을 밀리세컨드로 변환하여 long 리턴 System.out.println(date.getTime()); /** * getHours()는 현재시간을 가져온다. (Deprecated 됨) * Date 클래스는 getTime setTime외에는 대부분 Deprecated 되어서 * 권고사항대로 날짜를 컨트롤하는 부분은 Calendar 클래스를 사용하도록 하자. */ System.

자바[Java] - Calendar 날짜 비교, 날짜 더하기 날짜 빼기 [내부링크]

Calendar Calendar는 JDK1.1부터 사용 가능한 날짜 관련 클래스이며 이와 동시에 Date 클래스 상당 부분이 Deprecated 되었다. 기본 인스턴스 생성은 getInstance() 이며 set을 통하여 특정일 지정 getTime을 통하여 날짜를 출력할 수 있다. 특이사항으로 월의 경우 (0~11)로 표현한다. set() - 날짜 지정 import java.util.Calendar; Calendar cal = Calendar.getInstance(); // 1. 출력 System.out.println(cal.getTime()); cal.set(Calendar.YEAR, 2021); // 년 cal.set(Calendar.MONTH, 0); // 월 cal.set(Calendar.DATE, 2); // 일 cal.set(Calendar.HOUR_OF_DAY, 4); // 시 cal.set(Calendar.MINUTE, 6); // 분 cal.set(Calendar.S

자바[Java] - 날짜 시간 LocalDate, LocalTime, LocalDateTime, DateTimeFormatter [내부링크]

java.time 기존의 Date나 Calendar클래스의 부족한 부분을 보완한 Java SE 8부터 제공되는 패키지입니다. 날짜, 시간, 날짜 시간 등을 표현할 수 있는 LocalDate, LocalTime, LocalDateTime 클래스 등이 사용됩니다. LocalDate - 날짜 import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; LocalDate ld1 = LocalDate.now(); LocalDate ld2 = LocalDate.of(2022,12,12); // 년, 월, 일 // 날짜 GET System.out.println(ld1); // 현재 날짜 System.out.println(ld2); // 지정 날짜 System.out.println(ld1.getYear()); // 년 System.out.println(ld1.get

Javascript&jQuery - 선택자 [내부링크]

jQuery 선택자 <!DOCTYPE html> <html lang="ko"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> <div class="title"> <input class="title-name" type="text" id="inputTitle" name="inputTitle"/> </div> <div class="sub-title"> <ul class="sub-name"> <li>sub1</li> <li>sub2</li> </ul> </div> </body> <script typ

이클립스[Eclipse] - 윈도우 설치형 설치 [내부링크]

Eclipse 다운로드 안녕하세요. 오늘은 개발 툴 중 하나인 이클립스 설치형 파일을 다운받아 설치해 보겠습니다. 다음 이클립스 공식 홈페이지 다운로드 사이트에서 다운로드하도록 하겠습니다. Eclipse 다운로드 이동 Eclipse Downloads | The Eclipse Foundation The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks. www.eclipse.org 현재 최신 버전은 Eclipse IDE 2021-12 버전이고 이후 버전이 달라도 크게 상관없을 것 같습니다. Eclipse 설치 다운한 파일을 실행해 봅시다! 실행 후 다음 화면에서 표시된 부분을 선택합니다. 설치 정보 화면입니다. 현재 PC에 Java가 있으면 자동으로 경로를 잡아주며

아파치 톰캣[Tomcat] - 윈도우 설치형 설치 [내부링크]

Tomcat (톰캣) 다운로드 안녕하세요. 오늘은 자바로 웹 개발된 소스를 구동하기 위해 거의 필수적으로 설치해야 하는 WAS(Web Application Server)인 톰캣 서버를 설치해보려고 해요. 다음 Tomcat 공식 홈페이지 다운로드 사이트에서 다운로드하도록 하겠습니다. Tomcat 다운로드 이동 Apache Tomcat - Apache Tomcat 10 Software Downloads Tomcat 10 Software Downloads Welcome to the Apache Tomcat 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specificat

이클립스[Eclipse] - 다크모드 플러그인 추가 [내부링크]

Eclipse 다크모드 이클립스의 하얀 바탕의 쨍한 색상의 글씨가 지루하신 분들 다크 모드를 깔아보시라.! 이클립스 자체 다크 모드도 있지만 별로 안 이쁘니... 이클립스 마켓에서 플러그인을 설치하여 다크 모드를 설정해 봅시다.!! 다크모드 플러그인 추가 1. 이클립스 실행 후 Help > Eclipse Marketplace.. 를 선택합니다. 2. 검색창에 dark를 입력하고 Darkest Dark Theme with DevStyle 플러그인을 Install 합니다. 3. 그대로 Confrim > accept 체크(라이선스 동의) 하시고 > Finish를 합니다. 4. 설치가 완료되면 Restart Now 합니다. 5. 재시작 시 간단한 설명문은 Next 해주고, 스타일로 라이트 | 다크 | 클래식 모드가 있는데 나중에 변경 가능합니다. 여기선 다크 모드를 선택 후 Next 합니다. 6. 다음으로 Windows Defender 창이 뜨면서 3가지 선택을 요하는데 Fix Automa

자바[Java] - Random 난수생성, 영문, 숫자 랜덤 [내부링크]

Random 개발을 하다 보면 임의의 숫자나 문자열을 필요로 하는 경우가 있는데 이번에는 Java의 Random 클래스를 사용하여 난수를 생성하고 활용한 랜덤 한 문자, 숫자열을 얻어볼까 한다. Random 기본 사용 Random rd = new Random(); // Int 랜덤 int rdInt = rd.nextInt(); System.out.println(rdInt); // Int 범위 랜덤 int rdIntRange = rd.nextInt(10); System.out.println(rdIntRange); // Double 랜덤 double rdDouble = rd.nextDouble(); System.out.println(rdDouble); // Boolean 랜덤 boolean rdBoolean = rd.nextBoolean(); System.out.println(rdBoolean); Random rd = new Random() Random 클래스를 사용하기위해 객체 인스턴

자바[Java] - java.lang.NullPointerException [내부링크]

java.lang.NullPointerException Java를 하면서 제일 쉽게 볼 수 있는 예외 중 하나이다. 객체가 Null로 초기화되어있어 Null로 인한 객체의 메서드 수행 불가를 나타낸다. public static void main(String[] args){ // null 초기화 String str = null; // null toString System.out.println(str.toString()); } ------------------------------------ // NullPointerException 에러 문구 Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toString()" because "str" is null str 변수를 null로 초기화하고 .toString()을 시도하였다. str은 현재 인스턴스가 생성되지 않은 null로 초기화 되었기 때문에

자바[Java] - java.lang.ArrayIndexOutOfBoundsException [내부링크]

java.lang.ArrayIndexOutOfBoundsException Java를 하면서 제일 쉽게 볼 수 있는 예외 중 하나이다. 중요 포인트는 "IndexOutOfBoundsException" 이 부분으로 인덱스가 범위를 벗어나서 생긴 예외이다. public static void main(String[] args){ // String 배열 String[] arr = {"A","B","C"}; // 배열값 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); } ------------------------------------ // ArrayIndexOutOfBoundsException 에러 문구 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 o

[남양주 진접][카페] 밤섬유원지 & 달빛새 베이커리앤카페 (애견동반 가능 카페) [내부링크]

안녕하세요. 요즘 날씨 너무 이뻐요! 보정 안 해도 색감이 넘 이쁜... 가을이 너무 짧은 것 같은 요즈음 더 추워지기 전에 열심히 돌아다니려 꼬미랑 나왔어요~~ Previous image Next image 밤섬유원지 & 달빛새 베이커리앤카페 (애견동반 가능 카페) 달빛새 베이커리앤카페 경기도 남양주시 진접읍 금강로782번길 292-21 달빛새 베이커리앤카페 장소 : 경기 남양주시 진접읍 금강로782번길 292-21 영업시간 : 매일 11:00 ~ 22:00 Previous image Next image 카페 건물이에요~ 주차장이 넓어서 사람이 많은데도 주차 걱정 x 크루아상을 메인으로 한 빵이 많고 소금 빵, 여러 파운드케이크도 있었어요! 근데 주말이라 사람이 많아서 좀 늦게 갔더니 (오후 2시쯤) 빵이 많이 빠져있어서 아쉬웠어요 ㅠㅠ 그리고 반려견은 건물 안은 불가능하다는 것 ...! 하지만 외부가 너무 잘 되어 있어서 복잡하게 실내에 있지 않아도 될듯해요~~~ 아아 수혈 좀

[Git] Git이란?, GitHub 소스 최초 등록 [내부링크]

GIT 이 란 Git은 소프트웨어 형상관리 툴중 하나로 최근 현직에서 가장 대중화 된 툴이 아닐까 한다. 여러 기능을 보완하며 나왔기 때문에 많은 기능으로 처음 접하는 사용자들이 익숙해지기에는 시간이 좀 필요할 수 있겠지만 그만큼 장점이 많아 현재에 대중화가 된 것이 아닐까 한다. (SVN에 익숙했던 나로선 Git의 장점보단 SVN의 직관성이 상대적으로 편했기 때문에 Git을 사용하면 귀찮은 점이 많았다.) SVN vs GIT SVN SVN은 Git과 달리 commit과 동시에 하나의 마스터 저장소에 소스가 배포되어 공개된다. 때문에 개발자의 개별 history 관리가 사실상 불가하며 commit 기준 모든 개발자가 하나의 history로 버전이 관리된다. commit 실수 시 모든 개발자에게 영향을 줄 수 있다. 한편으론 위 문제점을 해결할? Conflict 및 Merge가 GIt에 비해 간편하다. (익숙해서 그럴지도...) GIT SVN과 달리 개발자의 개별 history 관리가

자바[Java] - Map [HashMap, TreeMap, LinkedHashMap] [내부링크]

Map Map 은 기본적으로 Key와 Value 쌍으로 이루어져 Key값으로 Value를 얻을 수 있다. 하여 Value를 찾기 위한 Key 값은 유니크하다. Map 인터페이스 자료형에는 크게 HashMap, TreeMap, LinkedHashMap 이 있으며 큰 특징으로는 다음과 같다. HashMap TreeMap LinkedHashMap 특징 출력 순서를 보장하지 않지만 성능이 좋다 Key 정렬하여 출력 기본값은 오름차순이다 저장 순서를 보장 저장 순서대로 출력한다 HashMap // 객체 생성 HashMap<String,String> hm = new HashMap<String,String>(); // 데이터 등록 hm.put("강아지","푸들"); hm.put("고양이","렉돌"); hm.put("고래","흰돌고래"); // 1. 데이터 출력 System.out.println(hm.toString()); // 데이터 삭제 hm.remove("고래"); // 2. 데이터 출력 S

자바[Java] - Set [HashSet] [내부링크]

Set Set 의 가장 큰 특징은 중복을 배제한다는 점이다. Set 인터페이스 자료형에는 크게 HashSet, TreeSet, LinkedHashSet 이 있으며 특징으로는 다음과 같다. HashSet TreeSet LinkedHashSet 특징 출력 순서를 보장하지 않지만 성능이 좋다 정렬하여 출력 기본값은 오름차순이다 저장 순서를 보장 저장 순서대로 출력한다 각각의 특징 외 기본적인 등록 출력 등은 동일하니 이번 글엔 HashSet을 중점으로 알아보려 한다. HashSet // 객체 생성 HashSet<String> hs = new HashSet<String>(); // 데이터 등록 hs.add("가"); // 중복 hs.add("나"); hs.add("다"); hs.add("가"); // 중복 // 1. 데이터 출력 System.out.println(hs.toString()); // 데이터 삭제 hs.remove("나"); // 2. 데이터 출력 System.out.printl

자바[Java] - List [ArrayList] [내부링크]

List Java 컬렉션 프레임워크 중 하나인 List중 ArrayList 사용에 대하여 알아보려 한다. 기본적인 배열과 List 의 차이점은 여러 가지가 있겠지만 그중 사용함에 있어서 가장 큰 차이는 배열의 크기 관리에 있다고 생각한다. 일반 배열의 경우 배열의 크기를 정해서 ( String[] str = new String[10] ) 선언을 해주어야 하고 이 크기를 벗어나면 java.lang.ArrayIndexOutOfBoundsException 오류 문구를 빡 띄워주니 조심해서 사용해야 한다. 하지만 List의 경우 이 배열의 크기를 알아서 조정해주니 (일반 배열에 비해 불필요한 메모리가 생길 수 있지만) 얼마나 편리한지 알 수 있다. ArrayList List 클래스중 자주 사용하는 ArrayList사용에 대해 알아보려 한다. // 객체 생성 ArrayList<String> list = new ArrayList<String>(); // 데이터 등록 list.add("이상해씨"

자바[Java] - 정렬 [Sort, Comparator] [내부링크]

정렬 이번엔 Java 정렬에 대해 간단히 알아보겠습니다. 1. 배열의 정렬 2. List 정렬 3. 커스텀 정렬 String[] 배열의 정렬 // String 배열 선언 String[] str = {"기러기","스위스","토마토","별똥별","우영우"}; // 1. 데이터 출력 Arrays.asList(str).forEach(v->System.out.print(" "+v+" ")); // String 배열 오름차순 Arrays.asList(str).sort(Comparator.naturalOrder()); // 2. 데이터 출력 System.out.println(); // 단순한 줄바꿈 Arrays.asList(str).forEach(v->System.out.print(" "+v+" ")); // String 배열 내림차순 Arrays.asList(str).sort(Comparator.reverseOrder()); // 3. 데이터 출력 System.out.println(); //

자바[Java] - 문자 검색&비교 [내부링크]

1. chartAt String msg = "안녕하세요 저는 Java입니다."; // 1. chartAt() System.out.println(msg.charAt(0)); System.out.println(msg.charAt(4)); chartAt() 파라미터로 넣어준 인덱스에 해당하는 단어를 찾습니다. 여기서는 인덱스 0위치의 '안' 과 인덱스 4위치의 '요' 를 찾아서 출력합니다. // 1. 데이터 출력 안 // 2. 데이터 출력 요 2. contains String msg = "안녕하세요 저는 Java입니다."; // 2. contains() System.out.println(msg.contains("안녕")); System.out.println(msg.contains("HI")); contains() 파라미터로 넣어준 문자가 있는지 없는지 찾아서 boolean을 리턴한다. 여기서는 "안녕"의 문자는 있음으로 true를 리턴하고 "HI" 문자는 없으므로 false를 리턴한다.

자바[Java] - Base64 인코딩, 디코딩 [내부링크]

Base64 Base64 암호화는 기본적으로 양방향 암호화로 복호화(암호화된 문자열을 암호화 전 상태로 다시 되돌리는 행위)가 되는 암호화 방식이다. 누구나 복호화할 수 있는 암호화가 무슨 필요가 있을까? 이유야 여러 가지가 있겠지만, 개발 시 GET으로 전달한 URL 경로나 서버 통신 시 특수문자 (/@&등.. )로 인한 문제가 있어 인코딩하여 데이터 전달 후 디코딩하여 사용하는 경우가 큰 부분을 차지하지 않을까 싶다. Java의 기본 Base64 인코딩을 사용해도 좋지만 오픈소스 라이브러리를 사용하여 좀 더 쉽게 인코딩하는 방식을 써볼까 한다. 먼저 아래 사이트에서 라이브러리를 다운받거나 추가해준다 https://mvnrepository.com/artifact/commons-net/commons-net // gradle (버전은 상황에 맞춰서!) implementation "commons-net:commons-net:3.8.0" // Maven (버전은 상황에 맞춰서!) <dep

자바[Java] - SHA-256 암호화 [내부링크]

SHA-256 SHA(Secure Hash Algorithm) 해시 알고리즘의 한 종류로 SHA-256은 256비트 구성 및 64자리 문자열을 반환한다. SHA-256 암호화는 단방향 암호화로 기본적으로 복호화가 안되는 암호화 방식이다. 그래서 보통 웹개발시 비밀번호를 암호화하여 저장하고 비교하는데 자주 사용된다. SHA-256 암호화 try { MessageDigest md = MessageDigest.getInstance("SHA-256"); // MessageDigest SHA-256 StringBuilder sb = new StringBuilder(); // 암호화된 문자열 담기 String iu = "아이유"; // 암호화할 문자열 md.update(iu.getBytes()); byte[] iuMd = md.digest() ; for(byte b : iuMd) { // 10진수 to 16진수 변환 sb.append(String.format("%02x", b)); } Syst

LG 그램 2022 17인치 17Z90Q-EA76K 윈도우11 구매후기 [내부링크]

기존 노트북이 13인치여서 이제는 좀 바꿔보자! 하여 새로운 노트북을 구매하기 위해 검색하다가 눈에 들어온 17인치 노트북! 한 단계 한 단계 올라가다 보니 외장 그래ㅣ픽 까지 갖춘 해당 라인의 제일 높은 노트북을 눈 감고 구매! Previous image Next image 하루 만에 배송받고 택배 뜯뜯!! 스타벅스 리저브 컵과 DIY 스티커 17인치 전용 그램 파우치 마우스, 오피스팩(한컴오피스2022, 산돌구름폰트 1년, 한컴 스페이스 1년), 마우스 패드 Get!!! 노트북이 들어있는 박스를 개봉하고 ...... 영롱한 그 모습을 영접하였따 ...! 박스 안에는 노트북 본체와 노트북 충전기, 간단한 설명서가 있었어요. 덮개에 17인치 윈도우 제품임을 알려주는 17Z 펀칭의 디테일? Previous image Next image 드디어 부팅을 시작하고... gram 로딩이 인상 깊네요 ㅎㅎㅎ 윈도우11의 첫 화면 설정이에요 이번에 윈도우11을 처음 써보게 되었는데, 좀 더 깔끔

엘라스틱서치[Elasticsearch] - 키바나[Kibana] 윈도우 설치 및 실행 [내부링크]

Kibana 설치 이번엔 엘라스틱서치에 이어 키바나를 설치해보겠습니다~~~~ 먼저 아래 다운로드 사이트에 접속해서.... www.elastic.co/kr/downloads/past-releases#kibana 원하는 버전을 선택하여 윈도우 버전을 다운로드합니다. 엘라스틱서치와 동일하게 다운로드한 kibana-[Version]-windows-x86_64.zip 압축을 해제하고 원하는 폴더에 이동하면 설치가 끝납니다. Kibana 실행 Windows cmd창에서 압축을 해제한 폴더로 이동하고 kibana.bat을 실행하면 완료! <엘라스틱서치가 실행되어 있어야 합니다.!!> cd C:\elasticsearch\kibana-7.15.0-windows-x86_64\bin -- 폴더 이동 kibana.bat -- 실행 키비나 콘솔은 REST API로 되어있는 엘라스틱 서치를 좀 더 편하게 명령할 수 있도록 도와줍니다. 키바나 기본 포트는 5601이며 잘 연동됐는지 확인할 겸 index를 생성

엘라스틱서치[Elasticsearch] - 로그스태시[Logstash] 윈도우 설치 및 MySQL 연동 [내부링크]

Logstash 설치 안녕하세요 오늘은 로그스태시 서버를 설치해서 MySQL 연동을 해보겠습니다~~ 지난번과 같이 아래 다운로드 사이트에 접속해서.... www.elastic.co/kr/downloads/past-releases#logstash 원하는 버전을 선택하여 윈도우 버전을 다운로드합니다. 엘라스틱서치와 동일하게 다운로드한 logstash-[Version]-windows-x86_64.zip 압축을 해제하고 원하는 폴더에 이동하면 설치가 끝납니다. Logstash 설정 로그스태시를 실행하기 위해서는 반드시 파이프라인 설정이 필요한데 기존처럼 .bat 파일만 실행시켜서는 동작하지 않아요~~ 아래 사진은 데이터 - 로그스태시 - 엘라스틱서치 간의 데이터 흐름에서 로그스태시 파이프라인 구성을 보여주고 있어요. 출처 (엘라스틱서치 공식홈페이지) 이제 설정을 해보도록 할 텐데 로그스태시 설정에 앞서 동기화하기 위한 테이블을 생성해 볼게요. CREATE TABLE `TB_TEST` ( `

자바[Java] - 윈도우 설치 [내부링크]

Java 다운로드 안녕하세요! 웹 개발을 처음 시작하면 가장 먼저 하게 될 자바 설치를 해보도록 할게요. 개발을 하다 보면 환경에 맞추어 무설치 파일이나 리눅스 환경의 .tar파일 라이선스를 고려한 OpenJDK 등을 설치할 수도 있지만 오늘은 설치형 파일을 받아 보겠습니다! 오라클 자바 다운로드 페이지 21년 12월 기준 최신 버전인 JDK17 받아 볼게요. Java 설치 다운한 파일을 실행해 봅시다! Next버튼을 눌러주세요. 설치하려는 폴더를 변경하시려면 Change 버튼을 통하여 변경해 주세요. 저는 기본으로 잡힌 C:\Program Files\Java\jdk-17.0.1\ 경로에 설치하도록 하겠습니다. 별다른 옵션 설정 없이 간단히 설치가 완료된 모습입니다. 이제 시스템에서 자바를 실행할 수 있도록 환경변수를 입력해 볼게요. Java 환경변수 설정 제어판>시스템 및 보안>시스템 에서 고급 시스템 설정을 선택하면 아래와 같은 창이 나오고 고급 탭에서 환경 변수를 선택합니다.

자바[Java] - 정규 표현식 이해와 자주쓰는 표현식 [내부링크]

정규 표현식 문자열을 일정한 패턴을 이용하여 필터링해야 할 때 유용합니다. 다음 사이트는 정규식을 테스트 해보기 좋은 사이트로 링크 남깁니다. 정규표현식 기본 패턴 표현식 예문 설명 ^ ^Hello Hello로 시작하는 모든 문자열을 매칭 테스트해보기 $ World$ World로 끝나는 문자열과 매칭 테스트해보기 * miracle* miracl 그리고 0회 이상 e가 반복되는 문자열 테스트해보기 + miracle+ miracl 그리고 1회 이상 e가 반복되는 문자열 테스트해보기 . mi. 임의의 문자 하나 테스트해보기 ? mir? 임의의 문자가 없거나 하나 mi 그리고 0개 또는 1개의 r과 매칭 테스트해보기 [] [a-zA-Z] 문자의 범위 [] 제일 처음에 ^ 는 NOT 나타냄 [a-zA-Z] : 영문 전체 테스트해보기 {} [a-zA-Z]{3} 일치하는 문자 횟수 [a-zA-Z]{3} : 영문 3글자 매칭 테스트해보기 () mira(cl)* 그룹 안의 매칭을 한단어로 인식 mi

자바[Java] - 문자열 자르기 [substring, split] [내부링크]

자바 문자열 자르기 개발을 하다보면 원하는 문자를 얻기 위해 문자열을 잘라야 하는 경우가 있는데 이를 위해 자바에서 자주 사용하는 substring, split 메서드를 알아볼께요. substring(int beginIndex) substring(int beginIndex) 는 입력한 인덱스 위치부터 마지막 까지의 문자열을 추출하는 메서드로 return 타입은 String 입니다. String msg = "안녕하세요자바입니다."; String msg_substring = msg.substring(5); System.out.println(msg_substring); mgs 안 녕 하 세 요 자 바 입 니 다 . 인덱스 0 1 2 3 4 5 6 7 8 9 10 여기서 substring(5) 로 풀이하면 "시작 인덱스를 5부터 끝까지 출력" 이 되고 "자바입니다." 가 출력되게 됩니다. 자바입니다. substring(int beginIndex, int endIndex) substring(

엘라스틱서치[Elasticsearch] - 윈도우 설치 및 실행 [내부링크]

Elasticsearch는 무엇인가? Elasticsearch는 자바 언어로 이루어진 Lucene 기반의 검색 엔진이다. 7.10 이전 버전의 경우 Apache v2.0 라이선스 규정에 의한 오픈 소스가 있지만 7.11 버전부터는 Free 요금제의 경우 SSPL 또는 Elastic 라이선스가 적용된다. Elasticsearch 설치 www.elastic.co/kr/downloads/past-releases#elasticsearch 원하는 버전을 선택한다. 윈도우 버전을 다운로드한다. 다운로드한 elasticsearch-[Version]-windows-x86_64.zip 압축을 해제하고 원하는 폴더에 이동하면 설치가 끝난다. Elasticsearch 실행 Windows cmd 창에서 압축을 해제한 폴더로 이동하고 elasticsearch.bat을 실행한다. cd C:\Elasticsearch\elasticsearch-7.15.0\bin -- 폴더 이동 elasticsearch.bat