1.2 IoC_DI를 위한 빈 설정 메타정보 작성
·
프로그래밍/기타
@Component 빈 스캐너가 @Component가 붙은 클래스를 빈으로 등록한다. 아래 클래스는 annotatedHello라는 아이디로 빈 등록된다. @Component public class AnnotatedHello { ... }빈의 아이디는 임의로 설정할 수 있다. @Component("myAnnotationHello") public class AnnotatedHello { ... } @Component는 메타 애노테이션으로도 사용가능하다. 즉, 다음과 같이 커스텀 애노테이션을 정의할 수 있다. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Compenent public @interface MyComponent { String..
스프링 시큐리티 기본 user/password 안먹힐때 인코더 확인해라!
·
프로그래밍/기타
스프링 시큐리티에 비밀번호 암호화를 위한 인코더를 설정했을땐 application.yml이나 application.properties에 있는 비밀번호도 암호화된 해시 값 이여야 한다. BCryptPasswordEncoder는 아래 주소에서 쉽게 암호화 할 수 있다. https://bcrypt-generator.com/
2022 서울사이버대학교 프로그래밍 경진대회 (SCUPC) 회고
·
프로그래밍/코테 회고
대회에서 푼 문제 문제는 A, B, C까지 풀었다. 350명 중 80등이다. 난이도와 최종으로 푼 문제 대회가 끝나고 D와 E를 추가로 더 풀었다. 플레티넘 문제까지는 다 풀려고 했지만 에디토리얼이 없어 나 혼자서 풀 수 있는 문제까지 풀었다. 🧩 D. 은?행 털!자 1 실버로 랭크되었지만 풀이를 생각해 내는 데 까지 오래걸렸다. X 증가 순으로 탐색해야 하면서 동시에 T도 증가 순으로 탐색해야 하는 어려움이 있었다. 그래서 처음엔 DP로 생각했다가 포기했다. 보통 이렇게 탐색 기준이 2가지인 경우에는 max-heap이나 segtree를 쓰던것 같다는 생각이 바로 들었다. 결국 가장 잘 맞는것이 segtree라고 생각했다. 근데 진짜 문제 난이도가 "실버"인 것이 정말 이상하게 느껴졌다. 누가 난이도 테..
코테 회고 작성기 (0/10)
·
프로그래밍/코테 회고
"개발 공부 중 가장 재미있는 게 무엇이냐" 라고 묻는다면 지금 당장은 알고리즘 문제 풀이 라고 할 것이다. 개발 능력도 커뮤니케이션 능력도 많이 부족하지만 그나마 알고리즘이 가장 자신있기 때문이다. 그렇다고 엄청 잘하는 것도 아니고 어디가서 개모태~ 라는 소리 안들을 법 한 실력이다. 🚀 코테 회고 작성 아무튼 이번에 코테를 여러개 보았는데 성적이 시원찮았다. 기업코테는 쉬운문제 였는데도 두번이나 떨어지고 백준에서 열리는 코테도 1,2 솔브 정도가 최선인것 같다. 어쩌면 좋을까 싶어 코테를 보고나면 복기를 해보고(할 수 있는 데 까지만!), 회고를 작성해 보려 한다. 💬 회고의 범위 회고는 문제풀이법을 작성하지 않는다. 애초에 에디토리얼을 제공하는 문제 위주로 풀 것이고 어려웠던 점, 아쉬운 점, 재밌..
N+1 쿼리 문제를 이해하고 해결하기 (번역) (비공개)
·
프로그래밍/DB
보호되어 있는 글입니다.
다 쓴 객체 참조를 해제하자!
·
프로그래밍/끄적끄적
GC는 참조하지 않는 객체를 알아서 회수해준다. 하지만 그렇다고 해서 메모리 관리에 신경을 안 쓸 수는 없다. 사용은 안하지만 참조를 해제하지 않는 코드는 주의해야 한다. 아래는 메모리 누수가 일어나는 스택 예제다. class Stack { private Integer[] numbers; private int size = 0; public Stack() { numbers = new Integer[10000]; } public void push(Integer number) { numbers[size++] = number; } public Integer pop() { return numbers[--size]; } } 문제가 없어 보이지만, pop()함수는 numbers에서 들어있는 객체를 해제하지 않는다. ..
세마포어 vs 뮤텍스
·
프로그래밍/운영체제
프로그래밍을 한다는 사람이라면 한번쯤은 세마포어와 뮤텍스에 대해서 들어 보았을 것이다. 대충 공유자원을 관리한다는 것만 알텐데 정확히 이것들은 뭘까? 결론부터 말하자면 공유자원을 관리하는 방식의 차이다. 뮤텍스 뮤텍스(Mutex)는 상호배제(Mutual Exclusion)의 약자다. 일단 상호배제라는 것이 왜 필요한지 알아보자. 아래와 같은 프로그램을 보자. #include #include #include int num = 0; void *func(void *t) { for (int i = 0; i < 100000; i++) { num = num - 1; num = num + 1; } return NULL; } int main() { pthread_t th[10]; int the; void *result..
RuntimeError: dictionary changed size during iteration
·
프로그래밍/기타
⚒RuntimeError: dictionary changed size during iteration 아래와 같은 코드를 돌리다가 위와 같은 오류가 발생했다. 키값을 순회하다 키가 사라져서 생기는 문제다. graph = {1: 2, 2: 3} for key in graph.keys(): if graph[key] == 2: del graph[key] ✔해결법 다음과 같이 key를 list로 할당해놓고 삭제하면 해결된다. (items()도 가능하다) graph = {1: 2, 2: 3} for key in list(graph.keys()): if graph[key] == 2: del graph[key]
2jun0
2jun0의 블로그