| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 스프링부트
- 스프링
- jpa
- 정리
- 코드 테스트
- BACK-END
- 오라클
- 알고리즘
- 자바스크립트
- 프런트엔드
- MySQL
- 서버
- java
- web
- 백엔드
- JavaScript
- 디자인 패턴
- 자바
- jsp
- 프론트엔드
- spring
- 데이터베이스
- 프로그래머스
- 쿼리
- SQL
- 미니정리
- oracle
- 코드테스트
- node.js
- Next.js
- Today
- Total
목록분류 전체보기 (357)
참치코더의 꿈 메모장
@Configuration 내부의 코드 조작 - AnnotationConfigApplicationContext("입력 클래스")에 파라미터로 넘긴 값은 스프링 빈으로 등록된다. - ac.getBean("입력 클래스").getClass( )하면 순수한 클래스 명이 출력이 되는 것이 아니라 X.CGLIB이 붙으면서 복잡한 클래스명이 출력이 되는데, 내가 만든 입력 클래스가 아니라 스프링이 CGLIB이라는 바이트코드 조작 라이브러리를 사용해서 입력 클래스를 상속받은 다른 클래스를 만들고, 그 다른 클래스를 스프링 빈으로 등록한 것이다. - 새로 스프링이 만든 그 클래스가 바로 싱글톤이 보장되도록 해준다. - @Configuration을 사용하지 않고 @Bean만 사용하면 사용은 가능하지만, 싱글톤을 보장하지는..
- n과 m의 최대공약수 최소공배수를 구하는 문제이다. - 최대공약수는 n과 m의 유클리드 호제법 작은 수를 큰수로 나눈 나머지가 0이 될때까지 나누어서 0이된다면 0으로 만든 수가 최대공약수가 된다. - 자바 버전 9 이상에서는 Math 함수에 Math.getgcd()를 사용하면 최대공약수를 구하는 메서드가 있지만 해당 실습환경은 자바 버전 9 이하이니 코드를 직접 작성해야 한다. - 이렇게 유클리드 호제법을 이용하면 최대공약수가 나오는데 최소공배수는 n*m을 한 수를 최대공약수로 나눠주면 값을 얻을 수 있다. - 리턴값으로 배열을 요구했으므로 배열로 만들어 return 해주었더니 정답을 얻을 수 있었다. ^^ https://school.programmers.co.kr/questions/8..
- n의 1의 개수가 같은 최소값의 큰수를 출력하는 문제이다. - 처음 Stream을 이용해서 1의 비트수를 힘들게 구했는데, 성능 문제 오류가 났다...- 찾아보니 Integer.bitCount를 하면 숫자로 된 값의 1의 개수를 구하는 메서드가 존재했다. - 이렇게 입력값의 비트수를 구하고 while문을 돌리면서 n보다 큰 수를 차례로 비교해가며 만약 1의 개수가 같을때 n의 값을 반환하면 정답을 얻을 수 있다. ^^ * 빅오 표기법으로 표시하면 위 코드는 O(1) 성능 아래 코드는 O(n) 성능을 보인다. (메서드의 소중함을 느끼게 됐다....) https://school.programmers.co.kr/questions/89752 프로그래머스SW개발자를 위한 평가, 교육의 Total S..
- 문자열로 주어진 값의 바로 앞뒤에 있는 값이 같다면 계속해서 삭제하고 문자열이 전부 제거된다면 1 제거되지 않는다면 0이 출력되는 문제이다. - 앞뒤에 있는 같은 문자열을 비교하는 경우라면 Stack을 사용하는 것이 좋다.- stack을 선언하고 forEach를 사용하여 s에 있는 값을 s.toCharArray()메서드를 사용하여 배열로 만든 후 값을 char 값으로 1개씩 받는다.(문자 하나씩)- else문으로 스택에 값을 하나씩 저장하고, if 조건문으로 만약에 stack의 top의 값과 들어오는 문자열 c의 값이 같다면 pop을 해주면 공통되는 값 2개가 제거되고 계속해서 반복을 하게 된다. - 이후 for문이 종료됬을때 값이 없다면 1, 값이 있다면 0을 반환하여 결과를 출력할 수 ..
싱글톤 방식의 주의점 1. 싱글톤 패턴이든, 스프링 같은 싱글톤 컨테이너를 사용하든, 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤 방식은 여러 클라이언트가 하나의 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 유지하게 설계하면 안된다. 2. 무상태로 설계해야 한다. - 특정 클라이언트에 의존적인 필드가 있으면 안된다. - 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다. - 읽기만 가능해야 한다. - 필드 대신에 자바에서 공유되지 않는, 지역변수, 파라미터, ThreadLocal등을 사용해야 한다. - 스프링 빈의 필드에 공유 값을 설정하면 정말 큰 장애가 발생할 수 있다. (공유 값 만들지 말기 , 특히 돈 관련되서) - @Configuration을 선언하면 해당하..
- 매개변수 s로 들어온 2진수 문자열이 1이 될때 까지 0을 제거하면서 제거한 0의 개수와 0을 제거한 문자열 길이가 계속해서 1이 될때까지의 횟수를 구하는 문제이다. - 일단 2진수를 변환했을때의 count 숫자와 0의 개수를 세는 int 변수를 선언해 주었다. - while문을 사용해 문제에서 1이 되었을때 종료되도록 만들라고 했으므로 s값이 1이 아닐때에만 계속해서 돌도록 했고 Stream을 사용해서 문자열 0의 개수를 구해주었다. - 그리고 s의 0의 값을 replace 메서드를 이용하여 아무것도 없는 ""로 치환을 해주어 0을 다 날려주었고- 변환 횟수를 1증가 시키면서 0을 제거한 s의 길이를 구해 2진수 변환 시켜주었다. - 이렇게 while문이 false가 나올때 까지 반복하면 총 제..
싱글톤 컨테이너 - 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 그러나 조금 불편할 뿐이지 앱이나 데몬 프로그램, 응용소프트웨어도 충분히 개발할 수 있다. - 웹 애플리케이션은 여러 고객이 동시에 요청을 한다 (매초 수천 ~ 수만건 이상) - 스프링 없는 순수한 DI 컨테이너(순수한 자바 코드)로 사용자가 요청을 할 때 마다 객체를 새로 생성한다. - 사용자가 접속하는 트래픽이 수백만건이면 수백만건의 자바 객체 생성이 발생한다. (과도한 JVM 서버 메모리 낭비 발생) -> 추후 하드웨어적으로 서버에서도 메모리 과다 사용 및 서버 메모리 용량 부족 문제 발생, 심하면 서버 다운 - 해결하는 방법은 해당 객체가 메모리에 1개만 생성되고, 공유하도록 설계하면 된다. -> 싱글톤 패턴 사용으..
- 매개변수로 받은 배열 A와 B를 1개씩 뽑아 곱한 값의 전체가 최솟값이 되도록 출력하는 문제이다. - 처음 Stream을 사용해서 Array를 Collection.reverseOrder 하는 식으로 문제를 풀었더니 속도에서 오류가 나서 간단한 배열 형식으로 답을 우회했다;; (Stream이 오류가 난다;;) - 일단 A,B 배열 값을 전부 오름차순 정렬 해주었다. 어떤 문제를 풀던 코딩을 하던간에 일정한 형식을 맞추는게 중요하다.- 다음 for문을 돌려서 A는 그대로 순서대로 곱하고 B를 for문이 0부터 시작하니까 1을 빼고 증가하는 i값 만큼 빼주게 되면 반대로 리버스로 돌수 있기 때문에 해당값을 계산 후 곱해주면 최솟값을 얻을 수 있게 된다. - 마지막으로 계산된 answer값을 리턴..