목록분류 전체보기 (28)
지석이의 일기
Redis를 CentOS 서버에 설치하고 Spring Boot에서 사용하기 안녕하세요, 오늘은 CentOS 서버에 Redis를 설치하고, Spring Boot 애플리케이션에서 이를 사용하는 방법에 대해 알아보겠습니다. CentOS 서버에 Redis 설치하기 먼저, CentOS에서 추가 패키지를 설치할 수 있는 EPEL(Extra Packages for Enterprise Linux) 저장소를 설치합니다. sudo yum install epel-release EPEL 저장소를 설치한 후, Redis를 설치합니다. sudo yum install redis 설치가 완료되면, Redis 서비스를 시작합니다. sudo systemctl start redis Redis가 정상적으로 작동하는지 확인합니다. redis..
간단한 프로젝트를 테스트 하기 위해 DB를 설치하고 설정하기가 여간 귀찮지 않을 수 없다. 물론 추후에 배울 도커를 사용한다면 바로 DB환경을 만들 수 있겠지만, 그건 또 서버가 있어야 가능한 소리이다. 그래서 바로 설정이 가능한 H2 데이터 베이스를 사용 하자. H2 데이터 베이스는 간단하게 말하자면 내가 지금 작동중인 프로젝트 메모리 안에 작은 경량 DB를 만들어 그 안에서 사용하는것이다. 그러므로 매우 가볍고(경량화), 매우 빠르고(고성능) 라는 장점이 있다. 물론 단점으론, 큰 프로젝트에는 사용하지 못하고, 일관성이 유지 되기 힘들다는 점이 있다고 한다. 그러므로 테스트로만 사용하고 실질적인 프로젝트에는 다른 DBMS를 사용하자! 아래는 인터넷에서 찾아 검색한 H2의 장단점 요약이다. 장점: 경량..
아래의 Person 클래스를 이용해서 아래 17개의 구문을 Stream API로 구현하면 되겠다. class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; } } 1.나이가 20세 이상인 사람들만 필터링하여 새로운 리스트를 만드세요. 2.모든 사람의 나이 합계를 구하세요. 3.이름에 '5'가 포함된 사람을 찾으세요. 만약 없다면 적절한 처리를 하세요. 4.사람들을 나이 순으로 정렬한 새로운 리스트를 만드세요. 5.각 사람의 이름 길이를 담은 리스트를 만드세요. 6.가장 나이가 많은 사람을 찾으세요. 만약 동일한 나이가 있다면 그 중 아무나 한..
for 만 사용하다가 정렬건때문에 더이상 방관하기 힘들어졌다. stream에 익숙해 지기 위해 예제를 설정하고 문제를 풀어보자. 문제는 아래와 같다. Product 객체를 여러 개 포함하는 List를 생성하세요. (최소 5개 이상의 Product 객체를 포함하도록 합니다.) Stream을 이용하여 가격이 5000원 이상인 제품들만 골라서 리스트로 만드세요. Stream을 이용하여 제품들의 이름만 추출하여 리스트로 만드세요. Stream을 이용하여 제품들의 평균 가격을 계산하세요. Stream을 이용하여 가장 비싼 제품을 찾으세요. 클래스 모델은 아래와 같다 public class Product { private String name; private int price; public Product(Strin..
처음부터 이클립스를 쓰면 된다는 말에 이때까지 이클립스 무료툴을 써왔다. 이번에 일이 있어서 1년치를 받았다. 이제부터 이클립스 대신에 인텔리를 써보자. 각 툴의 장단점은 아래와 같다. Eclipse 장점 오픈 소스: 무료임. 플러그인 시스템: 다양한 플러그인을 설치 및 기능을 확장가능. 넓은 언어 지원: Java 외에도 C, C++, Python 등 여러 언어 지원. 산업 표준: 장기간 업계를 독주한 탓에 대부분의 기업이 그냥 이클립스 씀. 단점 UI/UX: 인터페이스가 낡았다는 평가를 받기도 하며, 때때로 비직관적일 수 있음. 성능 문제: 큰 프로젝트에서는 성능 저하가 발생할수있음. IntelliJ IDEA 장점 직관적인 인터페이스: 깔끔하고 직관적인 UI/UX를 제공. 스마트 코드 완성 및 리팩토링..
요즘 mybatis외에 다른 tool을 사용해서 DB작업을 한다고하여 JPA를 사용해보기로 하자. 결론적으로 말하자면, CRUD 쿼리 없이 메소드명으로 쿼리를 예상(?)하여 api통신을 한다고 보면 된다. mybatis에 특화 되어있고, 쿼리작성에 능숙하면 솔직히 mybatis가 더 편하기도 하다... 또한 복잡한 통계나 계산 쿼리에는 오히려 성능이 떨어질수도 있다. 1. JPA(Java Persistence API)란 반복적으로 수행되는 CRUD 기능 처리에 특화되어있다. 자바 개발자들이 데이터베이스를 더 쉽게 다룰 수 있도록 도와주는 자바 기반의 ORM(Object-Relational Mapping) 기술 ORM은 개체(객체)와 관계형 데이터베이스 간의 매핑을 처리하는 기술로, 개발자가 SQL 쿼리를..
이전 시간에 nginx과 tomcat 을 연계하는 기능을 배웠다. nginx가 WEB서버 역활을 하고, tomcat 이 WAS 역활을 한다. 그런데 http가 아닌 https를 이용한다면 WEB서버에 추가 작업을 해줘야한다. 1. https 란 쉽게 말해서 SSL/TLS 통신 (Secure Socket Layer/Transport Layer Security) 라고 한다. SSL은 인터넷 기반 암호화 프로토콜이라고 하는데, 말은 거창하지만 쉽게 말해서 클라이언트 => 서버 간의 요청 통신 중 암호화해서 서버로 데이터를 넘기는 방식이다. 당연히 서버에서는 해당 통신을 복호화해서 데이터를 수령받아 요청을 처리한다. 이러는 이유는 클라이언트 => 서버 간의 통신중 중간에 통신을 하이젝킹? 가로채는 해킹이 있다고..
로컬에서는 정상적으로 구동되다가, 서버에 올려서 톰캣 구동시 이렇게 어플리케이션 구동 실패에러 와 및에 내려보면 어디서 뜬 에러인지 보인다. 맨 아래 보면 Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/json/JSONException 에러가 존재하는데, NoClassDefFoundError 에러의 경우, 종종 몇몇 라이브러리가 개발=>운영으로 서버 올리는 과정에서 인식이 되지 않는다고 한다. 그중에 하나가 JSON 라이브러리인데 maven의 정상적인 org.json 을 설치하고 해당 컨트롤러의 import를 바꿔주면된다. pom.xml에 org.json json 20230227 을 넣고 ..
nginx 첫 생성후 다음과 같은 에러가 발생했다. Request Entity Too Large 라고 하는데, 한번의 요청에 길이 제한이 있는데 기본은 1MB이다. 요청을 길게 만들어보자. nginx.conf 로 가서 http 혹은 server location 객체 안에 설정을하자. 필자의 nginx 는 /var/etc/ 폴더에 있다... vi /etc/nginx/nginx.conf http 안에 client_max_body_size 0; 을 입력하면 객체 길이에 상관없이 요청을 받는다. nginx.conf 파일을 수정해주고 재시작 하면 된다. nginx -s reload
이때까지 서버에 단 하나의 톰캣만 설치하고 iptables -t net -A PREROUTING -p tcp --dprot 80 -j REDIRECT --to-port 8080 위의 명령어 "80 PORT로 들어오는 요청을 8080으로 전환" 을 사용해 왔다. IPTABLES 의 REDIRECT 를 사용해놨으면 다음과 같은 흐름이다. (AS-IS) 이렇게 하면 하나의 톰캣으로 도메인에 8080포트를 사용하지 않고 평상 도메인을 사용한 것처럼 보이긴 한다. 필자는 WEB서버를 붙혀 HTTPS를 사용해야할 일이 생겨 IPTABLES를 뜯어내고, 저기 위치에 NGINX를 붙히도록 하겠다. 아래과 같은 형식으로 수정하면 된다. (TO-BE) 기본 도메인 포트(80)으로 들어왔을 경우, 서버내의 PORT 8080..