전체 글

에베소서 4장 2절모든 겸손과 온유로 하고 오래 참음으로 사랑 가운데서 서로 용납하고오랜만에 일기를 쓴다.학원에서 진행하는 팀 프로젝트가 끝났다.(물론, 스스로 복기하며, 진행해야 할 것이다.) 팀 프로젝트 기간동안 나를 잃어버린 시간을 보내게 되었다.부족한 잠으로, 인내와 오래 참음은 사라졌었으며,겸손은 생각하지 않았다.온유 또한 갖지 못했다. 남의 시선을 의식하여, 스스로 강한자임을 기억하지 못하고, 누군가에게 증명하고 싶어했다.이로 인해, 과시를 하게 되었고, 거짓된 말들로 쓸대없는 말들은 늘어놨었다. 반성한다. 이번 프로젝트로 많은 것을 얻었다. 내가 부족한 것들을 알게 되었으며, 내가 잘하는 것들 또한 알게 되었다.무엇보다, 잠의 부족은 나를 망친다는 것을 알게 되었다.잠의 부족은 어디서부터 왔..
· MySQL
**기본**일반적인 쿼리 실행 순서1. 조인, WHERE2. GROUP BY3. DISTINCT4. HAVING 조건 적용5. ORDER BY6. LIMIT 특수한 경우 쿼리 실행 순서1. WHERE 적용2. ORDER BY3. 조인4. LIMIT(위의 두 실행 순서로 판단하겠습니다.) 조인에 대해 Store/User와 같이 복잡하지 않고, 하나의 레코드에 한명의 유저만 접근하는 도메인에는 굳이 쿼리 최적화/동시성 보장을 할 우선순위가 현저하게 낮은 부분은 제외하겠습니다.1. Feed 쿼리 최적화 public Long countAllByFiltering(boolean isAvailable, Category category, String keyword) { return jpaQueryF..
마태복음 5장 13~14절13 너희는 세상의 소금이니 소금이 만일 그 맛을 잃으면 무엇으로 짜게 하리요 후에는 아무 쓸 데 없어 다만 밖에 버려져 사람에게 밟힐 뿐이니라 14 너희는 세상의 빛이라 산 위에 있는 동네가 숨겨지지 못할 것이요 예수님께서는 우리를 세상의 소금과 빛이라 하셨다.소금과 빛... 무슨 뜻일까? 민수기 6장 24 (아론의 축복 중)주께서 너에게 복을 주시고, 너를 지켜 주시며,라는 말씀이 있다. 이때, '지키다'라는 동사는 '샤마르'이다.'샤마르'는 지키다, 보존하다 라는 뜻을 갖고 있다. 민수기는 광야에서의 말씀이다.광야는 너무나 덥고, 추운 곳이다.즉, 가져온 음식물들은 너무나도 빨리 상했을 것. 이때, 소금으로 염장함으로 음식물을 보존할 수 있었을 것이다.하나님이 너희를..
@Transactionalpublic ModifyFeedRes modifyFeed(Long userId, Long feedId, ModifyFeedReq req) { // 권한 확인 : 본인이 작성한 피드만 삭제 가능 User user = findUser(userId); Feed feed = findFeed(feedId); checkAuthority(user, feed); // feed 정보 갱신 feed.update(req); // 기존 feedFile 정보 제거 List files = feedFileRepository.findAllByFeed(feed); s3Service.deleteMultiFiles(files.stream().map(FeedFile:..
https://icanchangeworld.tistory.com/170 스프링 시큐리티 강의를 듣다가 서블릿 필터 단에서 동작하는 시큐리티 빈 추가 키워드가 나와 정리해본다.1. SpringApplication.run(...) 호출 시 public ConfigurableApplicationContext run(String... args) { Startup s" data-og-host="icanchangeworld.tistory.com" data-og-source-url="https://icanchangeworld.tistory.com/170" data-og-url="https://icanchangeworld.tistory.com/170" data-og-image="https://scrap.kakaocdn..
=> 스프링 시큐리티 강의를 듣다가 서블릿 필터 단에서 동작하는 시큐리티 빈 추가 키워드가 나와 정리해본다.1. SpringApplication.run(...) 호출 시 public ConfigurableApplicationContext run(String... args) { Startup startup = SpringApplication.Startup.create(); if (this.properties.isRegisterShutdownHook()) { shutdownHook.enableShutdownHookAddition(); } DefaultBootstrapContext bootstrapContext = this.create..
· 알고리즘
https://www.acmicpc.net/problem/1365 이 문제는 가장 긴 증가하는 부분 수열만 알면 아주 쉽게 풀리는 문제다.이분 탐색은 항상 인덱스 처리가 너무 어렵다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;public class Main { /** * N - 가장 긴 증가하는 부분 수열의 크기 */ static int N; static int[] nums; static List norma..
1. Nested Loop Join=> 우선, JOIN을 최적화하기 위해서는 NLJ에 대해 알아야 한다.=> Nested Left Join은 2개의 조인된 테이블이 있다고 가정했을 때,=> 인덱스로 조인 조건을 필터링(?)해 더 빠르게 찾도록 최적화한다.=> 아래 쿼리로 NLJ에 대해 조금 더 알아보자.SELECT *FROM employees e, dept_emp deWHERE e.emp_no=de.emp_no;1-1. CREATE INDEX index1 ON employees(emp_no) + CREATE INDEX index2 ON dept_emp(emp_no)=> 두 테이블에 인덱스가 존재한다.=> 이때는, 옵티마이저가 통계 정보를 이용해 적절히 드라이빙 테이블을 선택한다.=> 사용자가 이때, 그리..
쥐4
결국 이기는 개발자