[Java] 백준 1015 (수열 정렬) 자바 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/1015  알고리즘 분류정렬 똑같은 두개의 배열을 두고 하나는 비내림차순(오름차순) 으로 정렬할 때순서에 맞게 index 번호를 출력하는 문제이다.  우선, StringTokenizer를 사용하여 입력된 수들을 배열에 하나씩 저장하였다. StringTokenizer st = new StringTokenizer(br.readLine()); for (int i = 0; i     그 다음, 배열을 복사한 뒤 원본 배열은 Arrays.sort() 함수를 사용하여 오름차순으로 정렬해주었다 int [] arr = temp.clone(); Arrays.sort(temp);   이제 두 개의 배열을 비교하며 원래 배열의 각 요소가 정렬된 배열에서 어떤 ..
서블릿과 멀티쓰레드 이해 및 HTTP API, CSR/SSR 개념 정리
·
Web
[서블릿]A. 서블릿이란?서블릿(Servlet)은 자바 기반의 웹 애플리케이션을 개발하기 위한 기술로, 웹 서버에서 실행되며 클라이언트의 요청을 처리하고 동적인 웹 콘텐츠를 생성한다.HTTP 프로토콜을 지원하며, 클라이언트의 요청에 따라 다양한 응답을 생성할 수 있다.웹 애플리케이션를 직접 구현을 해야한다면?위 사진에 나와있는 목로과 같이 서버 TCP/IP 연결대기 및 소켓을 연결, HTTP 메시지를 모두 파싱해서 읽기 등등 모든것을 구현을 해야한다.서블릿을 사용함으로써 개발자는 비즈니스 로직만 개발하면 된다.   서블릿 특징:플랫폼 독립성: 자바로 작성되어 어떤 운영체제에서도 실행 가능하다.성능 향상: 초기화 후 싱글톤으로 관리되어 반복적인 객체 생성 비용을 절약한다.확장성: 다양한 기능을 추가하여 웹..
[Java] 원시 타입과 참조 타입 정리: 오토박싱과 언박싱 쉽게 이해하기
·
Java
자바에서는 데이터 타입을 크게 원시 타입(Primitive Type)과 참조 타입(Reference Type)으로 나눌 수 있다.이 두 타입은 메모리 관리와 작동 방식에서 중요한 차이가 있으며, 오토박싱과 언박싱은 이 두 타입 간의 상호작용을 돕는 중요한 개념이다. 이 글에서는 원시 타입과 참조 타입의 차이, 그리고 오토박싱과 언박싱에 대해 자세히 살펴보겠다. 1. 원시 타입 (Primitive Type)원시 타입(Primitive Type)은 자바에서 기본적으로 제공하는 타입으로, 가장 간단한 형태의 데이터를 저장하는 데 사용된다. 이 타입은 메모리에서 값 자체를 직접 저장하며, 성능이 뛰어나다. 자바의 원시 타입은 총 8가지이며, 각각의 타입은 고유한 크기와 범위를 가지고 있다. 자바의 원시 타입 8..
@Transactional을 선언해도 내부 메서드를 실행 시 ROLLBACK이 되지 않는 문제
·
Spring Framework
문제- @Transactional을 애노테이션을 선언해도 this를 통한 내부 메서드를 호출시 롤백이 되지 않았다.아래는 문제의 코드이다. 같은 클래스안에 INSERT할 수 있는 서로 다른 메서드를 생성 뒤이 두개의 INSERT 메서드를 this로 내부의 메서드들을 한번에 호출하는 메서드를 생성하였다.(참고로 insert1 메서드를 실행 시 'INSERT INTO BOOK VALUES ('18', 'TEST1', 'TEST_WRITER1', 100, 1)' 라는 SQL 쿼리가 실행 )insert2() 메서드는 예외를 던지고 allInsert() 메서드는 insert1()와 insert2() 내부 메서드를 한번에 호출하는 메서드다. 그 후 테스트 클래스를 생성뒤 한번에 Insert 하는 메서드 실행 아래의..
[Java] 백준 14501 (퇴사) 자바 문제풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/14501 14501번: 퇴사첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.www.acmicpc.net 알고리즘 분류다이나믹 프로그래밍 풀이    public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int [] day = new int[n]; int [] money = new int[n]; ..
내외부 연계 모듈 구현
·
나의 공부방
1. 연계 모듈 구현 환경 구성 및 개발 (1) 연계 모듈 기능 구현 - 개발하고자 하는 응용 소프트웨어가 연계 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 연계 기능을 구현할 수 있다.- 연계 모듈 기능 구현은 주로 EAI / ESB 방식과 웹 서비스 방식으로 구분된다. (2) EAI  방식 1. EAI (Enterprise Application Integration) 개념- EAI는 기어벵서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션이다.- EAI를 사용함으로써 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높여줄 수 있으며 각  시스템 간의 확장성을 높여줄 수 있다. 2. EAI 구성요소- EAI Platform 기반 위에 각 ..
[Spring](도서관/열람실 프로젝트) 좌석 예약 서비스 개선기
·
Projects/열람실 & 도서관 프로젝트
좌석 서비스를 예약 도중 버그를 발견을 해서 기록을 남기고자 작성한 글입니다. ​ 예시 상황을 들겠습니다. A라는 사용자와 B라는 사용자가 있습니다. ​ 둘다 좌석 예약 페이지를 보고 있습니다. ​ 만약 A 사용자가 1번 좌석을 예약 했지만 B 사용자는 페이지 새로고침이 안되어 있는 상황이라 1번 좌석이 비어있는 것으로 나오고 있습니다. ​ 이 상황에서 B사용자가 1번 좌석을 예약하면 똑같은 좌석이 동시에 두번 예약이 되는 상황이였습니다. 위 gif 파일을 보시면 알 수 있듯이 좌석테이블에 예약테이블을 JOIN 해서 갖고오기 때문에 하나의 좌석이 두번 표시되고 있었습니다. ​ 그래서 검증 프로세스를 하나 더 추가했습니다 로그인을 했는지 예약을 할 그 자리가 비어 있는지(추가) 로그인한 사람이 이미 다른 ..
[Spring](도서관/열람실 프로젝트) 좌석 예약 서비스 구현
·
Projects/열람실 & 도서관 프로젝트
​Restful API 방식으로 좌석 예약 서비스를 구현해보겠습니다. ​ 사용가 요청 보내는 방식은 "/seat/{좌석번호}" URI로 보냅니다. ​ 사용자가 위의 URI 형식으로 요청을 보낼 시, GET 요청을 하면 좌석정보(예약 정보까지) 갖고오고, POST 요청을 보내면 좌석 예약, PUT 요청을 보내면 좌석 연장, DELETE 요청을 보내면 좌석반납을 진행합니다. ​ 먼저 Controller 코드 입니다. 이 Controller 에는 RestController라는 어노테이션을 붙였습니다. ​ 먼저 좌석 예약을 하는 메서드 입니다. Post방식으로 받기 때문에 어노테이션을 PostMapping 을 선언해줬습니다. URI에 좌서번호가 담겨오기 때문에 @Pathvariable를 통해 seatId를 갖고..
소프트웨어 개발 보안 설계
·
나의 공부방
1. 소프트웨어 보안 설계 (1) SW 개발 보안의 개념 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안활동을 말한다. SW 개발 보안 생명주기 요구사항 명세 설계 구현 테스트 유지보수 요구사항 중 보안 항목 식별 위협원 도출을 위한 위협모델링 표준 코딩 정의서 및 SW 개발 보안 가이드를 준수해서 개발 모의침투 테스트 또는 동적 분석을 통한 보안 취약점 진단 및 개선 지속적인 개선 보안 패치 (2) SW 개발 보안의 구성요소 정보보안의 세 가지 요소인 기밀성, 무결성, 가용성을 지키고 서버 취약점을 사전에 방지하여 위협으로부터 위험을 최소화하는 구축 방법을 말한다. 3대요소 설명 기밀성 인가되지 않은 개인 혹..