몬그로이

TIL_043 본문

TIL

TIL_043

Mon Groy 2024. 6. 18. 21:10

https://mongroy.tistory.com/105

 

자바의 정석 5. 배열(Array)

int result = add(new int[]{1,2,3,4,5}); //new 를 생략할 수 없다//System.out.println(Arrays.toString(iArr)); //배열을 문자로 바꿔 출력하기//char[] chArr = {'a', 'b', 'c', 'd'};System.out.println(chArr); // abcd 로 출력됨//char[] abc =

mongroy.tistory.com

 

https://mongroy.tistory.com/106

 

현재 상태

두통때문에 9시 땡 하자마자 퇴실 체크도 잊고 약 먹고 자버렸다일어나니 3시반..씻고, 커피내리고, 밥먹고..앉았는데 시야가 뿌옇다안약을 넣어도 효과가 없다아무래도 안경을 다시 맞춰야지

mongroy.tistory.com


 

어제 팀리더가 설명해준 findBy에서 제일 중요하다고 생각했던 부분이 생각나지 않아서 구글링을 해보는데

같은 내용이 보이질 않는다

 

https://priming.tistory.com/114

 

[Java] Spring Jpa Repository 메소드 명명규칙 정리

Jpa Repository를 상속받은 인터페이스에서 findByXXX 형태로 메소드를 만들면 JPA에 의해 WHERE 절이 추가되었습니다.그 외에도 다양한 조건을 사용할 수 있는데, 어떤 조건들을 사용할 수 있는지 정리

priming.tistory.com

찾아보다가 find 나 exist 외에도 사용해보고 싶은게 있어서 데려왔다

중요하다고 생각했던 부분은 도통 찾을 수가 없는걸 보면

나만 그렇게 생각하나 싶다

또 언젠가 마주치겠지_ 할 일이 많아서 일단 지나간다


어제 테스트코드 해설 강의를 보면서 enum 의 필요성을 제대로 느꼈다

그래서 빨리 enum을 공부해보고 싶었다

 

아직 베이스가 많이 부족하기 때문에 메꿔야 가능하다고 생각하여 자바의 정석을 어느정도 더 보기로 했다

보다가 곧 사용해보고 싶은 것들을 적어보았다

- for 문이나 while 문에 이름을 붙이고 이를 사용하여 break 하기

- Math.sqrt() 또는 Math.log() 처럼 Math 의 활용

- for(;;) 처럼 조건문 비운 채 사용하기

- Integer.parseInt();

- printf 활용

https://velog.io/@horang12/println-vs-printf%EC%A4%91%EA%B0%84%EB%B3%80%EC%88%98-%ED%99%9C%EC%9A%A9

 

println vs printf/중간변수 활용

간단한 메서드지만 볼 때마다 대체 무슨 차이가 있는거야? 싶을 때가 있다. 둘 중 뭐가 더 나은 방식의 코드일까? 개발을 배우면서 코드를 짤 때는 간결해야 하고, 가독성이 좋아야 한다는 것을

velog.io

https://cantcoding.tistory.com/37

 

printf,println의 차이와 소수점 자리 출력(백준 4344)

www.acmicpc.net/problem/4344 코드 배운점 printf,println의 차이 printf printf는 c에서 쓰던 것과 방식이 같다. System.out.printf ("출력서식",출력할 내용) ==> %d(정수) %f(실수) %c(문자) %s(문자열)들을 사용해서 표기

cantcoding.tistory.com


개발 공부를 하다보면 꾸준히 들을 수 있는 말이 있다

그건 바로 "비용이 많이 든다" 라는 것

리팩토링 하면서 구조를 다시 잡는게 재미있기야 하지만 비용을 생각한 건 아니다

비용이 많이든다는 것은 제대로 와닿지 않기 때문이다

그래서 튜터님께 질문하려고 가려다가  의문이 떠오른 김에 스스로 생각해 보았다

 

클라우드나 서버를 사용할 때 공간을 많이 차지할 수록 효율은 떨어지고 비용이 들어가긴 하겠으나 얼마나 차이난다고? 

라고 단순하게 생각할 수도 있을 것이나, 개발을 할 때 많이 듣는 말 중 다른 하나는 "10 배, 20배 정도가 아니라 극단적인 상황을 염두해 두어라" 가 있다

 

메서드 하나가 잘 짜여진 것 보다 1을 더 차지한다고 봤을 때조차

프로그램이 메서드 하나로 돌아가진 않을 것이므로 계산을 해 보면 아래와 같다

일단 연습할 때만 사용하는 것만해도 한 클래스당 기본 5개라고 치자

클래스 하나로 프로그램이 돌아가지 않을 것이므로 20개는 기본으로 잡아보면

벌써 100만큼을 더 차지하게 되는 것이다

 

그런데 이는 연습용일때 얘기이므로 더 정교하게 짜여지고 더 큰 프로그램을 짠다면?

한 클래스당 10개, 클래스 개수는 10배로 잡았을 때 2000은 더 들어가게 되고

사용자가 1명일리 없으므로 서버는 최소 2000*n 만큼의 메모리를 더 사용해야 할 것이다

1만큼 더 차지하는 것이 1bit 라고 쳐도 250byte*n 이 될 것인데

이는 글자수로 따지면 클래스 다섯개당 4개의 알파벳을 더 적었다는 것을 의미하므로

절대로 말이 안 된다

 

한 개당 1개의 알파벳이 더 적은 경우로 바꿔 생각해 보면 300byte 이고 이는 0.1MB 정도 된다

0.1MB * n명 이라면 0.1MB 를 더 소모하게 되는데 일반적인  퀄리티로 바꿔 생각해보면 최소 1MB 정도는 되지 않을까?

그렇다면 1000명만 사용해도 최소 1GB, 들락날락하는 걸 고려하면 200명 정도만 사용 가능할 것이다

겨우 200명 사용하게 하려고 복잡한 프로그램을 구사했을리 없으므로

2000명으로 바꿔잡으면 하루 10GB, 한 달 300GB의 메모리를 소비하는 것

이것도 최소단위 가정이므로 조금씩만 추가해도 기하급수적으로 수가 커질 것이다

 

라고 생각을 해보니 비용적 측면이 매우 중요하구나 하고 생각하게 되었다

맞는지는 잘 모르겠지만 아무튼 아까보다는 더 와닿는다

'TIL' 카테고리의 다른 글

TIL_045  (0) 2024.06.21
TIL_044  (0) 2024.06.19
TIL_041, 042  (1) 2024.06.18
TIL_040  (1) 2024.06.16
TIL_039  (1) 2024.06.15