전체 글 93

Spring framework

스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 애플리케이션 프레임워크로, 다양한 기능을 제공하여 애플리케이션 개발을 보다 효율적이고 체계적으로 할 수 있도록 지원합니다. 스프링의 핵심 기능에는 다음과 같은 것들이 있습니다:1. 의존성 주입(Dependency Injection, DI)DI는 스프링의 가장 중요한 기능 중 하나로, 애플리케이션의 컴포넌트 간의 의존성을 관리하는 방법입니다. DI를 사용하면 객체의 생성과 의존성 관리를 스프링 컨테이너가 담당하게 하여, 코드의 결합도를 낮추고, 테스트와 유지보수를 쉽게 할 수 있습니다.설정 방법: XML 설정, 자바 기반 설정, 어노테이션 기반 설정을 사용할 수 있습니다. @Componentpublic class MyService { ..

스프링 2024.09.09

파일 처리

Disk가 있다.(Repository)파일은 disk안에 저장 되어있다.disk는 컴퓨터의 하드웨어에 있다.운영체제가 관리한다. == 운영체제를 반드시 거쳐서 하드웨어 리소스를 사용할 수 있다.그런데 운영체제가 파일 기능까지 전부 갖고 있다면 복잡성이 너무 증가한다. 그래서 File-System을 따로 두어 운영체제가 파일을 관리한다.즉, 파일 처리는 위탁구조이다.커널은 운영체제의 핵심 부분으로, 하드웨어와 애플리케이션 간의 상호작용을 관리한다.커널이 많은 파일 시스템을 처리하기에는 복잡성이 높다.그래서 VFS(가상파일시스템)을 이용하여 커널에서 파일 시스템을 처리한다.

[프로그래머스]디펜스게임 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 배열의 요소들을 순서대로 n에 마이너스 연산을 한다.그러다가 n이 0보다 적어지는 순간! 무적권 발동~~그런데 무적권은 적어지는 순간 그 라운드에 써야할까?아니다 최대한 많은 라운드를 격파해야 함으로 싸워왔던 라운드 중 가장 큰 수의 라운드에서 써야한다.그렇다면 매 라운드 병사의 수를 PriorityQueue에 넣고(오름차순 우선) 무적권 발동 시 poll하여 n에 더해주기만 하면 될 것이다.  i..

[프로그래머스]무인도 여행 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제만 봐도 대번에 느낄 수 있다..이건 dfs or bfs다. X가 아니고 방문하지 않은 곳을 큐에 넣고 상하좌우를 체크해서 다 더해주고list에 넣어주면 될 것이다. import java.util.*;class Solution { static int[] dx = { 1, 0, 0, -1 }; static int[] dy = { 0, 1, -1, 0 }; public Integer..

로그인 처리

1. 레거시 방식 (Legacy 방식)설명: 레거시 방식은 과거에 주로 사용되던 간단한 로그인 방식입니다. 클라이언트가 서버에 로그인 요청을 보내면 서버는 데이터베이스에서 해당 사용자의 정보를 확인하고, 인증이 완료되면 서버 측에 사용자 정보를 저장해 둡니다.특징:사용자가 로그인하면 서버에서 세션이나 쿠키를 사용해 로그인 상태를 유지합니다.대부분 서버 측에서 사용자 상태를 관리하며, 이로 인해 서버의 부하가 커질 수 있습니다.보안 측면에서 취약한 점이 있을 수 있으며, 특히 세션 하이재킹 공격에 노출될 수 있습니다.사용 예: 과거의 웹 애플리케이션, 기본적인 인증이 필요한 내부 시스템 등에서 사용되었습니다.2. 세션(Session) 방식설명: 세션 방식은 서버가 클라이언트의 로그인 상태를 세션을 통해 관..

JAVA 2024.09.02

JPA -I need Method

회원가입 기능을 만드려고 한다. 그런데 사용자가'흠흠 아이디는 java 비밀번호는 1234로 해야겠어'이렇게 흥얼 거리며 돌아다닌다. 그런데 java는 아이디가 분명 있을 것이다.하.. 어떻게 해야하지?난 JpaRepository에서 상속받은  MemberRepository interface가 있지만 테이블을 조회하는 방법은findById, findAll 밖에 없는걸..?username으로 찾아야하는데.. 가능하다.MemberRepository에 Optional findByUsername(String name); 이라는 Method만 만들어주면 된다.엥?아무것도 구현하지 않았는데 어떻게 저런것이 username으로 찾는다는거야?내가 하고 싶은건 SELECT * FROM member WHERE userna..

JAVA 2024.08.30

요청과 응답 흐름 정리

클라이언트는 정보를 요청한다.요청 방식은 URL GET방식, FORM, AJAX 등 다양한 방식으로 요청한다.Dynamic content를 요청하면 Dispatcher Servlet이 핸들러 매핑으로 적절한 Controller에 매핑시킨다.DB 처리하기 위해 Service 단에서 Repository를 통해 DB에 접근하여 데이터를 가공한다.가공된 데이터를 모델에 담아 Template Engine에 보내고 최종적으로 데이터와 Template File을 html에 보내 최종적으로 랜더링한다. 이 과정에서 View Resolver로 논리적인 뷰를 실제 뷰로 변환하는 등 수 많은 작업이 있지만 대강 큰 틀로 정리해보았다.

JAVA/server 2024.08.28

AJAX

브라우저에서 서버에게 요청을 한다.그림이 조금 거지같지만 그려봤다.wait 상태에서는 랜더링 할것이 없기 때문에 빈 화면이다.응답 오는중과 응답 다옴 사이에서는 부분 랜더링하기 시작하고응답이 다 왔을 때 화면에 전부 랜더링한다.1. 요청2. wait3. 응답으로 이루어진다. 네이버 사이트를 가서 새로고침을 해보자화면이 번쩍 거리면서 전부 랜더링된다.일부 광고 같은 경우 부분랜더링으로 먼저 나오기도 한다. 검색창에 단어를 입력하면 연관 검색어가 밑으로 쭉 뜬다.그러나 새로고침처럼 화면이 번쩍거리지 않는다. 원래라면 전체 화면이 번쩍거리면서 새로 랜더링 되어야 할 것이다.이것을 비동기 통신(AJAX)이라 한다. AJAX(Asynchronous JavaScript and XML)는 웹 페이지가 새로고침 없이 ..

JS 2024.08.28

[프로그래머스]베스트앨범 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이 문제는 해시를 이용하여 정렬만 정확히 한다면 어렵지 않은 문제이다. map의 해시를 이용해 장르의 크기를 누적하고 그 값을 기준으로 우선순위 큐에 넣는다. 다시 큐를 하나씩 꺼내어 배열의 요소와 같다면 또 다른 우선순위 큐에 해당 인덱스의 크기를 기준으로 넣는다.최대 2개까지 넣고 list에 넣어주면 끝.import java.util.ArrayList;import java.util.Comparato..

클라이언트와 서버

클라이언트는 서버에 정보를 요청한다.정보는 두 가지로 나눌 수 있다.1.static2.dynamic정적 정보와 동적 정보이다.정적인 정보는 이미지나 텍스트 등 이미 만들어진 정보이기 때문에 서버에서 신경 쓸 것이 없다.하지만 동적인 정보는 다르다. 쇼핑몰에서  기저귀를 검색했을 때 정보들은 어디서 오는가?데이터베이스에서 가져와야 한다.DB working이 되어야 한다.Data를 CRUD해야 한다. Create는 Entity 어노테이션으로 Entity Class를 만든다.  그러면 데이터를 어떻게 보여줘야 할까?어느정도 사용자 편의성을 생각하여 데이터를 가공해 뷰에 뿌려줘야 된다.template engine과 데이터를 이용하여 가공한 데이터를 가져온다.

JAVA 2024.08.26