자바 25

Filter 사용 시 알게된 점 1

필터는 Spring 외부 영역에 있다. 다른 클래스와 다르게 외부 생성자를 @Autowired 통해서 바로 갖고 올수없고 Bean 에 등록된 것만 갖고 올수있다. root-context.xml 에서 이런식으로 있는 bean 을 추가하여 filter 클래스에서 @Override public void init(FilterConfig filterConfig) throws ServletException { ServletContext servletContext = filterConfig.getServletContext(); WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servle..

자바 2025.05.12

JPA @Transactional(readOnly = true)

오늘은 @Transactional(readOnly = true) 이거좀 탐구해보자 일단https://hungseong.tistory.com/74 @Transactional(readOnly = true)를 왜 붙여야 하나요 스프링으로 개발하면서 필연적으로 사용하게 되는 @Transactional. 우리는 스프링의 AOP를 통해 @Transactional 어노테이션만으로 손쉽게 Service Layer에서 트랜잭션을 걸 수 있다. 일반적으로, 조회용 메서 hungseong.tistory.com 이블로그에서 아주 자세하게 잘 설명해주고 있다. ! 성능에 대해서만 얘기해보려 한다. 아직 내가 모르는 단어들도 많이 나와서 다 이해는 가지 않지만 간단하게 보자면 원래 @Transactional 을 쓰면 초기 상태 ..

자바 2024.04.12

Arrays.binarySearch , 이진 검색 알고리즘

알고리즘 문제 풀다가 좋은 함수있나 친구 ( 지피티) 에게 물어봤다. 위에 같은 거 알려주길래 좀 물어봤다 어떻게 작동하는건지 이진 검색 알고리즘은 다음과 같은 단계로 삽입 지점을 결정합니다: 검색 대상이 발견되지 않았을 때, 검색 구간을 반으로 나누어줍니다. 대상 값과 현재 검색 중인 구간의 중간 요소를 비교합니다. 대상 값이 중간 요소보다 작으면, 검색 구간을 좌측 반으로 좁힙니다. 즉, 왼쪽 반구간에서 다시 검색을 시작합니다. 대상 값이 중간 요소보다 크면, 검색 구간을 우측 반으로 좁힙니다. 즉, 오른쪽 반구간에서 다시 검색을 시작합니다. 이러한 과정을 반복하여 검색 대상이 발견되지 않을 때까지 검색을 진행합니다. 이렇게 작동을 한다네 그래서 응용 하면 2번째 이미지 처럼 있는지 없는지 까지 판단..

자바 2024.03.14

티스토리 java 코드 쓸때 주위 블럭 여백 없애기

출처 https://codesyun.tistory.com/329 [CSS] 티스토리 코드블럭 여백, 테두리 없애기 : pre / !important 어느 순간부터 다음 사진처럼 코드블럭에 흰색 여백과 함께 테두리가 함께 생겼는데 거슬려하다 오늘에서야 해결방법을 찾아 없앴습니다 아래 코드블럭 보이시죠? 테두리를 없앴습니다 제가 codesyun.tistory.com 평소 코드 인데 주위에 뭔가 불편한 테두리가 있다. 관리자 메뉴에서 스킨 편집 -> html편집 -> css 탭에서 pre { border: 0px!important; padding : 0px!important; } pre code { padding : 20px!important; } 이 css 코드를 추가해주자 그럼 이렇게 깔끔해진다!

자바 2023.09.05

이클립스 코드 수정 사항 적용 안될 때 해결 방법

이클립스로 학원 초급 프로젝트 작업을 하다가 깃허브에서 코드를 클론 받았는데 이상하게 임포트 한 이후에 수정한 코드가 적용이 안됐다. 예를 들어 print 글씨를 적어도 그 적은 글씨가 나오지 않았다. 그래서 인터넷 검색 막하고 그러다가 여러가지 방법을 쓴 결과 이상한 해결책을 찾았다. 바로 자바 빌드 패스에 들어가고 라이브러리 버전을 바꿔주니까 됐다.! 프로퍼티스 누르고 jre 누르고 edit 누르고 저 자바 버전을 1.8로 바꿔주니까 해결되었다. 그리고 코드를 한번 실행시켜 주고 다시 1.7로 바꿔도 그떄 부터는 잘실행된다.! 왜그럴까??... 이유는 모르겠는데 저렇게 실행이 안되는 원인 중 하나는 아마도? 이 프로젝트가 그냥 임포트 하면 열리지 않아서 Existing projects into Wor..

자바 2023.07.28

2023 -06-29 제네릭 쓰기, interface 쓰기

제네릭 미리 큰 틀은 만들어 놓고 호출 할때마다 타입 이 정해져서 나오게하기 ArrayList al = new ArrayList(); al.add(10); al.add(10); int data0 =(int) al.get(0); 정수형만을 넣었지만 꺼낼때도 이렇게 형변환을 해줘야한다. 이럴때 따로 클래스를 만들어서 정수형만을 넣을수 있게 할수 있겠지만 또 다른 타입을 넣을떄는 또 만들어 줘야한다. 이럴떄 ArrayList al = new ArrayList(); 을 하면 al.add(10); al.add(10); int data0 = al.get(0); 이렇게 따로 변환을 시키지 않아도 된다. interface 여기서 이제 interface 를 써서 이문제를 해결해야한다. 홍길동은 사람클래스를 상속 받으면 ..

자바 2023.06.29

2023-06-28 substring 쓰기

substring 을 써보자 substring은 문자열 변수.substring(시작 인덱스번호,끝인덱스번호); 이런식으로 적으면된다. 그러면 시작 인덱스번호 부터 끝 인덱스 번호 전까지 문자열이 나오게 된다. 위에 예시 처럼 안녕하세요 변수를 갖고 있는 s1 에 (1,3) substring 을하게 되면 1번 부터 3번 전까지인 녕하 가 나오게 된다.!! 문자열의 특정부분을 추출할떄 요긴 하게 쓸것 같다.

자바 2023.06.28

2023-06-27 static, 수동 변환, 자동변환

class 에 필드가 다 static 으로 되어있다면 그 클래스를 바탕으로 객체가 만들어진다고 해도 객체안에 저장된 정보는없다. 그 만들어진 객체에서 정보를 뽑는다고 해도 그정보는 class 안에 있는것이다. 수동 변환, 자동변환 Integer iObj = new Integer(10); // 수동박싱 Integer 타입인 iObj 에 10을 그 타입으로 객체화에서 연결해주었다. 이것을 수동 박싱이라고 한다. int k = iObj.intValue(); // 수동언박싱 이번엔 정수형 타입인 k에 iObj를 정수형 을 시켜서 값을 넣어주었다. 이것을 수동언박싱이라고 한다. 그런데 자바에서는 형변환을 위한 객체 선언이나 함수를 쓰지 않아도 자동으로 되게해준다. 위에 코드 처럼 Integer 타입인 iObj 에..

자바 2023.06.27