진짜 내가 본 분들 중에 제일 정리를 잘하신 것 같아.. 퍼와요~

문제 있으면 말해주세요 !!! 바로내릴게요

https://lsh424.tistory.com/37

 

Github README.md 작성 방법 및 요령

안녕하세요! 오늘은 README 작성 방법에 대해 알아볼까 합니다. 이 포스팅을 클릭하셨다는건, README.md가 뭔지 아시는 분들일 테니 README.md 가 뭔지는 생략하겠습니다. 그래도 아쉬우니까.. ㅎㅎ 간

lsh424.tistory.com

'IT etc' 카테고리의 다른 글

[svn: E155004] lock error (DBeaber로 lock 풀기 !)  (0) 2022.03.14
이것저것 ,,  (0) 2022.03.05
[eclipse] 이클립스 validation 끄기  (0) 2021.12.28
[tomcat] tomcat 8.5 ver 설치  (0) 2021.12.26
[eclipse] 이클립스 jdk 버전 변경  (0) 2021.12.23

https://www.latera.kr/blog/2019-07-02-effective-optional/

 

Optional 제대로 활용하기 - Increment

Optional을 올바르게 사용하기 위해 공부한 내용을 정리합니다. 개요 getter에 Optional을 사용하는 것이 좋은지에 대해, Java 언어 아키텍트인 Brian Goetz가 Stackoverflow에 작성한 답변(링크)입니다. 당연히

www.latera.kr

정리 너무 잘해주셔서...

계속 이분 것만 찾게된다 ..

퍼가요 ~

'java > java' 카테고리의 다른 글

[Java] StringBuilder 사용법  (0) 2022.03.07

같은 화면인데 아래에 있는 화면은 목록을 눌러서 조회했을때, 속도가 1.63s

 

해당 화면에 조회버튼을 눌렀을 때 (캐시가 있는 상태), 588ms

이게 무슨 일이야.. 싶어 

로그를 찍어 WinMerge를 해주었다.

그랬더니 차이나는 부분은 이것,,

(목록을 클릭해서 나오는 log)

WHERE 날짜 >= COALESCE(NULL, TO_CHAR(NOW() - interval '1 months', 'YYYY-mm-dd')
  AND 날짜 <= COALESCE(NULL, TO_CHAR(NOW(), 'YYYY-mm-dd')

 

(캐시가 남아있는 상태에서 조회 버튼 클릭했을때 log)

WHERE 날짜 >= COALESCE('2022-02-17', TO_CHAR(NOW() - interval '1 months', 'YYYY-mm-dd')
  AND 날짜 <= COALESCE('2022-03-17', TO_CHAR(NOW(), 'YYYY-mm-dd')

 

아차 싶었다.

프론트에서 처음 조회할 때, 스크립트로 오늘부터 1달 이전~오늘 날짜까지 

날짜 <![CDATA[>=]]> COALESCE(#{선택한 시작 날짜}, to_char(now()- interval '1 months', 'YYYY-mm-dd'))
						 AND occrrnc_de <![CDATA[<=]]> COALESCE(#{선택한 종료 날짜}, to_char(now(), 'YYYY-mm-dd')

 

그래서,,

해당 쿼리를 db관리도구인 DBeaver에서 COALESCE(null, to_char(날짜))실행시켜봤더니 아이디와 조회수만 가져오는데 677ms가 걸렸다.

 

그리고 COALESCE null이 아니라 옳은 날짜가 들어간 상태에서 실행을 해보니 180ms ..

데이터를 파싱해주는 to_char이라는 함수가 좀 느리다는 말을 듣기는 했지만.. 약 5배정도 걸렸다 .. 

 

그리고 혹시나 싶어 COALESCE함수를 제거해봤더니..

16ms ... 조금 배신당한 기분이랄까.....

ㅎㅎㅎ

여튼 이렇게 하나 또 알고 간다.

페이징 로딩 속도를 배이상 줄여서 솔직히 좀 즐겁다 히히

 

페이징 데이터 실행 속도를 줄이려면 자바 단 보다는 쿼리부터 수정하고 그다음에 소스코드를 수정해야겠다..

소스코드만 수정했는데도 이렇게 빨라질수가. ..

'sql > postgresql' 카테고리의 다른 글

[Postgresql] 같은 망일 때, 외부 접속 허용 설정하기  (0) 2022.03.29

ㅎㅎㅎ

락걸렸다..

 

보통

프로젝트 오른쪽 클릭 > Team > Cleanup 하면 된다고 하던데.. 되지 않았다 ..ㅎㅎ

 

1. 우선 'wc.db' 파일 위치를 찾는다.

워크스페이스 안에 lock 걸린 프로젝트를 클릭한다.

그리고 '.svn' 폴더를 찾는다. 아마 '숨긴 항목' 이라고 되어있을 수 있으니까 '숨긴 항목' 버튼을 체크하고 찾으면 보인다 !

해당 위치를 잘 기억한다.

 

2. 'SQLite'를 사용할건데 'DBeaver' 이라는 데이터베이스 관리 도구가 설치되어있어서 해당 툴을 사용했다.

새로운 db 연결 아이콘 클릭 > SQLite 클릭 > 다음버튼 클릭

 

3. Path를 입력하기 위해 Browse... 을 클릭한다.

직접입력해도 되지만 정확도를 위해.. ㅎㅎㅎ

 

4. 'Browse...' 버튼을 클릭 후 들어가면 '숨긴 항목' 버튼이 없을거니까 '.svn' 파일을 못찾을 수도 있다.

그래서 아까 찾은 주소 ctrl+c, ctrl+v 해준 뒤, 'wc.db'를 선택해서 열기 버튼을 클릭해준다.

 

5. '... wc.db' 주소 확인 후 완료버튼을 클릭한다.

 

6. 새로운 스크립트를 만든 뒤, 아래의 코드를 입력 후 프로젝트로 돌아가서 다시 클린 > 실행하면 끝 !

DELETE FROM WC_LOCK ;
DELETE FROM WORK_QUEUE ;

 

'IT etc' 카테고리의 다른 글

[GitHub] README.md 마크업 작성  (0) 2022.03.29
이것저것 ,,  (0) 2022.03.05
[eclipse] 이클립스 validation 끄기  (0) 2021.12.28
[tomcat] tomcat 8.5 ver 설치  (0) 2021.12.26
[eclipse] 이클립스 jdk 버전 변경  (0) 2021.12.23

String 객체를 사용해서 문자열 + 문자열 을 하려면

String answer = "";

String str1 = "Hello ";
String str2 = "World";
String str3 = "!!";

answer += str1;
answer += str2;
answer += str3;

System.out.println(answer);

 

이렇게 작성하면 anwer 의 값은

"Hello World!!"

라고 나온다.

즉, 새로운 객체 answer를 만들어 객체(str1, str2, str3)를 대입한다.

이로써 객체를 더 많이 생성해야 원하는 값을 만들 수 있다.

 

그리고 StringBuilder은 문자열을 다루는 메소드.. 라고 할 수 있다.

객체 한번 만든 뒤, 계속 그 객체를 이용해서 원하는 값을 만들 수 있다.

StringBuilder sb = new StringBuilder();
String answer = "";
String str1 = "Hello ";
String str2 = "World ";
String str3 = "!!";
answer = sb.append(str1).append(str2).append(str3).toString();
System.out.println(answer);

 

StringBuilder을 지원하는 메소드들은 append외에도 아래에 접속하면 확인할 수 있다.

https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

 

StringBuilder (Java Platform SE 7 )

Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by

docs.oracle.com

 

'java > java' 카테고리의 다른 글

[JAVA] Optional  (0) 2022.03.22

spring 디자인 패턴이라고 하면 맨 처음으로 떠오르는 것이 아마 aop가 아닐까.. ㅎㅎㅎ

 

프록시 : 핵심 기능의 실행은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체 !

AOP : 공통 기능 구현과 핵심 기능 구현을 분리하는 것 ..

(여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용을 높혀줌!)

 

스프링 AOP는 프록시 객체를 자동으로 만들어주니까 공통 기능을 구현한 클래스만 맞춰 구현해주면 된다 !

XML 을 이용한  AOP와 어노테이션을 이용한 AOP사용 방법이 있다. 

 

어노테이션이 편하니까 .. 어노테이션을 이용한 AOP 사용 방법 !.!

아, 나는 spring boot + gradle 사용중이다 .. 

(spring + maven 을 이용해서 진행한 적도 있어서 그것도 기록해놔야겠다 !.!)

 

1. 우선 build.gradle의 dependencies에 아래 코드를 입력해준다

implementation 'org.springframework.boot:spring-boot-starter-aop'

 

2. @Aspect 어노테이션 이용

@Aspect 어노테이션은 공통 기능을 제공하는 클래스를 적용할 수 있다.

아래와 같이 코드를 작성해보았다.

@Component 는 @SpringbootApplication 이 처음 실행 될 때 컨테이너를 만들어 실행되기 위해 작성한 것이니, 상황에 따라 생략해도 된다 !

 

우선,,

@Pointcut은 실제 Advice가 적용되는 기점을 말한다.

'*'은 모든 값을 표현할 수 있고, '..'은 0개 이상이라는 의미이다.

그리고 아래 코드와 같이 'public' 수식어를 작성해도 되지만, 어차피 스프링 AOP의 경우, public에서만 적용 가능하기 떄문에 생략해주어도 괜찮다 !!

@Around("execution(public * hello.hellospring..*(..))")

 

아, 그리고 pointcut을 하고 싶은 위치가 한군데 이상이면

@Around("execution(* hello.hellospring..*(..)) || execution(* hello.hellospring..*(..))")

이런 식으로 중간에 연산자를 넣어서 사용할 수 있다.

 

다음번에는 @Around외의 다른 Advice에 대해 기록을 할 예정이다. 

최근에 이클립스에서 intelliJ 툴 사용부터 window에서 오로지 내욕심때문에 mac m1 pro를 사면서 생각보다 너무 들뜬 것 같다.

새로운 툴에 새로운 운영체제라니 !!

사실 그거는 얼마 가지 않고 작은 문제부터 부딪히기 시작했다 ..

윈도우에서 intelliJ를 사용해 서버를 실행할 때는 내가 생성한 프로젝트에서 실행중인 표시

이 표시 !!

가 뜨다가 나중에는 체크로 표시된다 ! 그래서 서버 실행이 완료된 것을 알 수 있었다.

 

하지만 ...

mac은 달랐다 ..

왜 내가 로컬 주소로 접속해보지 않았을까 ...

이틀 가량을 땅을 파다 결국 어느 강좌에 문의글을 남겼다..

회사의 사람들은 intelliJ툴 뿐만 아니라 mac에 익숙하지 않은 사람들이라 물어보기 쉽지 않았다.

 

뭐 여튼..  mac에서는 그냥 console 아니지,, 터미널 창이라고 하나.. 여튼 터미널에 completed라고 뜨면 서버 실행이 완료된 것이다.

계속 도는 표시가 돌아도 계속 실행 중 인것이였다 ..

문의 해본 것 자체가 조금 부끄러웠긴 한데 모르는게 무지는 아니니까 ..

 

이 날 이후로 사실 조금 현타왔던 것 같다.

오히려 갑자기 회사 일을 열심히 하며 공부해오다

더 킹받는 일이 생겨따 ..

아니 월급 동결 무슨일이냐고 ..

그래 이직하쟈 .. 화이팅 !!

 

아 내 맥북 M1 pro 14형이다.

솔직히 너무 좋다.. 

사랑해요 애플.. 

 

이렇게 앱등이가 되어가는 과정인가 

(이직 성공하고 월급 안정적으로 받기 시작하면 워치도 살거다 !! 히힛)

이클립스 밸리데이션 때문에 너무 느리다... 하시면

validation 끄는 방법!!

 

1. window > preferences 접속한다.

 

2. validation 선택 후, Build 칸 안에 체크표시된 부분 모두 체크를 해제해준다.

그런 뒤 apply and close 클릭하면 끝 !!!

 

뭐 했다하면 벨리데이션 왜이렇게 도는지..

귀찮아서 내비뒀더니 한참을 혼자 돌아서 ,, 결국은 포기

'IT etc' 카테고리의 다른 글

[svn: E155004] lock error (DBeaber로 lock 풀기 !)  (0) 2022.03.14
이것저것 ,,  (0) 2022.03.05
[tomcat] tomcat 8.5 ver 설치  (0) 2021.12.26
[eclipse] 이클립스 jdk 버전 변경  (0) 2021.12.23
[eclipse] 이클립스 4.22 버전  (0) 2021.12.22

+ Recent posts