전체 글130 자바 람다, 스트림 1. 람다식 (Lambda) 메서드를 하나의 식으로 표현한 것 람다식은 함수를 간략함녀서도 명확한 식으로 표현할 수 있게 해줌 메서드의 이름과 반환값이 없어지므로, 람다식을 익형 함수라고도 함 int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1); // 람다식 사용 // 위와 동일한 기능을 하는 함수 int method() { return (int)(Math.random() * 5) + 1; } 람다식은 메서드의 매개변수로 전달되는 것이 가능하고, 메서드의 결과로 반환될 수 있음 람다식으로 인해 메서드를 변수처럼 다룰 수 있음 장점 함수의 이름을 정의하지 않아도 사용 가능 문법이 간결해서 용이함 단점 람다식을 활용해.. Tech/Java 2024. 2. 2. Spring Security 로그인 과정 Sequence Diagram 1. 아이디, 비밀 번호 입력 2. 로그인 요청 3. Authentication 시도 4. 사용자 계정이 Lock 상태인지 검사 (로그인 실패 횟수 5회 -> 계정 잠금) 5a. 만약 Lock 상태라면 LockedExcepion이 발생하고 Authentication 실패 5b. 만약 Lock 상태가 아니라면 다음 검증 단계로 넘어감 6. 비밀번호 일치 검증 7a. 만약 비밀번호가 일치하지 않다면 BadCredentialsException 발생하고 Authentication 실패 7b. 만약 비밀번호가 일치하다면 다음 검증 단계로 넘어감 8. 회원강비 승인 여부 검사 (슈퍼 관리자가 회원가입 승인을 받아줘야 회원가입 가능) 9a. 만약 회원가입 승인이 되지 않았다면 DisabledException 발생하고.. Tech/Spring 2024. 1. 31. 2024 상반기 코오롱베니트 채용연계형 인턴 서류 전형 합격 : 코딩 테스트 및 인적성 검사 후기 총 3문제를 120분간 풀었다. 알고리즘 2문제 SQL 1문제가 출제 되었다. 알고리즘 2문제는 구현, BFS/DFS 문제였고 SQL은 문자열 치환 함수 사용하면 금방 풀 수 있는 문제였다. 난이도가 그렇게 어려운 편은 아니었지만 그렇다고 쉽게 풀리는 문제도 아니었다고 생각한다. (그냥 내 실력이 부족한 거...ㅎㅎ) 좋은 경험이었다고 생각한다. 그리고 코테 준비 더 열심히 해야할 것 같다! 후기와 회고 2024. 1. 29. Spring Security 로그인 동작 원리 1. 로그인 요청 사용자가 Form을 통해 로그인 정보가 담긴 요청을 보냄 2. Authentication 생성 AuthenticationFilter가 요청을 받아서 UsernamePasswordAuthenticationToken(Authentication 구현 객체) 생성 3. Authentication 전달 AuthenticationManager가 Authentication을 전달받음 AuthenticationManager는 실제 인증 역할을 하는 AuthenticationProvider를 관리함 4. 인증을 위한 Authentication 전달 AuthenticationFilter로 부터 Authentication 객체를 받아 인증 처리를 할 수 있는 AuthenticationProvider에게 인.. Tech/Spring 2024. 1. 27. [백준] 2870번: 수학문제 풀이 방법 정규식을 통해 숫자를 걸러낸다. 숫자가 아닌 문자는 " "으로 바꾼다. 빈칸을 제거한다. 이 과정에서 split(" "), isBlank()를 사용했는데 ... 먼저 공백을 기준으로 문자열을 나누기 위해 split()을 사용했다. 내가 예상한 결과는 숫자만 배열에 저장되는 것인데 예상치 못하게 빈 문자("")도 같이 저장되었다. 그래서 isBlank를 사용해서 추가 검증을 해주었다. 숫자만 골라내 리스트에 저장하고 이를 정렬한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.ArrayList;.. CS/자료구조&알고리즘 2024. 1. 24. MVC, MVP, MVVM 비교 1. MVC MVC 패턴은 Model + View + Controller를 합친 용어 1) 구조 Model: 애플리케이션에서 사용되는 데이터와 비즈니스 로직을 처리하는 부분 View: 사용자에게 보여지는 UI 부분 Controller: 사용자의 입력(Action)을 받고 처리하는 부분 2) 동작 사용자의 Action들은 Controller에 들어온다. Controller는 사용자의 Action을 확인하고, Model을 업데이트 한다. Controller는 Model을 나타내줄 View를 선택한다. View는 Model을 이용하여 화면을 나타낸다. 참고 - MVC에서 View가 업데이트 되는 방법 - View가 Model을 이용해 직접 업데이트 하는 방법 - Model에서 View에게 Notify 하여 업.. CS/디자인 패턴 2024. 1. 18. 2024 상반기 농협 6급 IT 1차(서류)전형 합격 : 코딩 테스트 및 필기시험 후기 1. 코딩 테스트총 5문제가 출제 되었고 알고리즘 3문제, SQL 2문제였다. 제한시간은 3시간이었던 걸로 기억한다. 알고리즘 3문제의 유형은 (정확하진 않지만) 구현, 문자열, bfs였다. 세번째 bfs 문제 나는 그리디라고 생각했는데 다른 지원자들 얘기 들어보니까 bfs 였다고 한다. SQL 2문제 중에 첫번째 문제는 무난하게 풀었는데 마지막 문제는 어려웠다. 3솔 했는데 이게 다른 테스트 코드도 확실하게 통과했다는 보장이 없어서 ... 확실한 3솔이라고 말하기가 애매하다.다른 분들 보니까 5솔도 꽤 있었고 4솔도 꽤 많았다. 그런 거 보면 난이도가 엄청 어려웠던 건 아닌 것 같다. 2. 필기 시험(인/적성 평가, 직무 능력 평가, 직무 적성 평가)NCS 준비는 아예 안 했기 때문에 기대하진 않았다.. 후기와 회고 2024. 1. 16. [프로그래머스] 문자열 다루기 기본 class Solution { public boolean solution(String s) { return isValidLength(s) && isMatchPattern(s); } private boolean isValidLength(String s) { return s.length() == 4 || s.length() == 6; } private boolean isMatchPattern(String s) { try { int n = Integer.parseInt(s); return true; } catch (Exception e) { return false; } } } 개인적으로 깔끔하게 풀었다고 생각해서 기록하는 중 ᜊʕ ྀི ܸ. . .ܸ ྀིʔᜊ CS/자료구조&알고리즘 2024. 1. 12. [프로그래머스] 파일명 정렬 : JAVA 초기 제출 코드 import java.util.*; class Solution { public String[] solution(String[] files) { Arrays.sort(files, new Comparator() { @Override public int compare(String s1, String s2) { FileName fileName1 = exportFileName(s1); FileName fileName2 = exportFileName(s2); if (fileName1.getHead().toLowerCase().compareTo(fileName2.getHead().toLowerCase()) > 0) { return 1; } else if (fileName1.getHead().toLow.. CS/자료구조&알고리즘 2024. 1. 11. RESTful API vs GraphQL RESTful API와 GraphQL은 모두 API 구조를 설계하고 데이터를 처리하기 위한 방식 1. RESTful API HTTP 메서드(GET, POST 등)을 사용해 API를 구축하기 위한 아키텍처 스타일 일반적으로 URL을 통해 사용자가 요청한 주소를 식별하고 JSON의 형태로 데이터를 반환함 클라이언트에서 서버로 각 요청을 보낼 때 필요한 모든 정보 포함 2. GraphQL 페이스북이 개발한 API용 쿼리 언어 클라이언트가 정확히 필요한 데이터를 명시해 요청하고, 서버는 요청된 특정 데이터만을 응답하는 방식 보다 효율적인 데이터 송수신이 가능하게 만든다는 장점 RESTful API 장점 개발자 친화적이며 단순함 캐싱 지원 캐싱을 지원하므로 서버에 대한 요청 수를 줄임으로써 API의 성능을 향상시.. CS/Network 2024. 1. 5. 예외와 트랜잭션 커밋/롤백 예외가 발생했는데, 내부에서 예외를 처리 못 하고 트랜잭션 범위 밖으로 예외를 던지면 어떻게 될까? 예외 발생 시 스프링 트랜잭션 AOP는 예외 종류에 따라 트랜잭션을 커밋하거나 롤백한다. 언체크 예외인 RuntimeException, Error와 그 하위 예외가 발생하면 트랜잭션을 롤백한다. 체크 예외인 Exception과 그 하위 예외가 발생하면 트랜잭션을 커밋한다. 물론 정상 응답(리턴)하면 트랜잭션을 커밋한다. 테스트 코드 @SpringBootTest public class RollbackTest { @Autowired RollbackService rollbackService; @Test void runtimeException() { assertThatThrownBy(() -> rollbackSe.. Tech/Spring 2024. 1. 3. @Transactional의 타입 : readOnly readOnly 트랜잭션은 기본적으로 읽기 쓰기 모두 가능한 트랜잭션이 생성된다. readOnly=true 옵션을 사용하면 읽기 전용 트랜잭션이 생성된다. 이 경우 등록, 수정, 삭제가 안되고 읽기 기능만 작동한다. readOnly 옵션을 사용하면 읽기에서 다양한 최적화가 발생할 수 있다. [readOnly 옵션이 적용되는 3곳] 프레임워크 JdbcTemplate은 읽기 전용 트랜잭션 안에서 변경 기능을 실행하면 예외를 던진다. JPA(하이버네이트)는 읽기 전용 트랜잭션의 경우 커밋 시점에 플러시를 호출하지 않는다. 읽기 전용이니 변경에 사용되는 플러시를 호출할 필요가 없다. 추가로 변경이 필요 없으니 변경 감지를 위한 스냅샷 객체도 생성하지 않는다. 이렇게 JPA에서는 다양한 최적화가 발생한다. JDB.. Tech/Spring 2023. 12. 27. 이전 1 ··· 5 6 7 8 9 10 11 다음 728x90 반응형