/api/courses/{id}
에서 {id}
는 다른 무언가여도 된다. {abc}
도 괜찮다.
@PutMapping("/api/courses/{id}")
public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) {
return courseService.update(id, requestDto);
}
courseRepository.deleteById(*id*);
는 아무것도 리턴을 하지 않기 때문에 오류가 발생한다. 아래와 같이 바꿔주야 한다.
while(true){
인출,
해석,
실행
}
상충관계: 기능성 ↔ 복잡도 ↔ 전력 소모 정도 ↔ 프로그램 가능성 등
💡 $CPU에서소비되는에너지E∝f^2$
+-------------+------+------+ +---------------+ +--------+
| | I$ | | <-- | | <-- | |
+ Processor +------+ L2 | | Main Memory | | Disk |
| | D$ | | --> | | --> | |
+-------------+------+------+ +---------------+ +--------+
캐시에 달러 기호($)를 사용하는 이유는 캐시(Cache)의 발음이 현금을 뜻하는 'Cash’와 같기 때문.
public classPrac{
public static void main(String[]args) {
int[][] arr = new int[2][5];
int k = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = k;//인덱스를 이용한 초기화
k += 1;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
1 2 3 4 5
6 7 8 9 10
[0,1]
= 2번
[1,2,3,4,5],[6,7,8,9,10]
= 10번
package com.sparta.week1.prac;
public class Prac {
public static void main(String[] args) {
int[][] arr = new int[5][2];
int k = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = k; // 인덱스를 이용한 초기화
k += 1;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
1 2
3 4
5 6
7 8
9 10
[0, 0, 0, 0, 0]
= 5번
[1,2],[3,4],[5,6],[7,8],[9,10]
= 10번
@Benchmark
public void test1() {
long count = 0;
for(long i = 0; i < 10_000_000; i++) {
for(long j = 0; j < 100; j++) {
BigDecimal big = new BigDecimal("1000");
count++;
}
}
}
@Benchmark
public void test2() {
long count = 0;
for(long i = 0; i < 100; i++) {
for(long j = 0; j < 10_000_000; j++) {
BigDecimal big = new BigDecimal("1000");
count++;
}
}
}
test1() 은 외부 10,000,000회 / 내부 100회로 총 10억회의 루프를 돌며
test2() 은 외부 100회 / 내부 10,000,000회로 역시 총 10억회의 루프를 돈다.
루프 내부에 BigDecimal
을 생성하는 부분이 있는데 루프에 약간의 부하를 주기 위한 장치.
*// test1()*Result "bench.ForLoop.test1":
15981.999 ±(99.9%) 1890.234 ms/op [Average]
(min, avg, max) = (15350.046, 15981.999, 16617.751), stdev = 490.888
CI (99.9%): [14091.766, 17872.233] (assumes normal distribution)
*// test2()*Result "bench.ForLoop.test2":
16013.786 ±(99.9%) 520.377 ms/op [Average]
(min, avg, max) = (15836.663, 16013.786, 16182.794), stdev = 135.140
CI (99.9%): [15493.410, 16534.163] (assumes normal distribution)
test1() 메소드의 경우 1.89초
의 수행 시간이 발생했고
test2() 메소드의 경우 0.52
초의 수행 시간이 발생했다.
for
문도 Heap
메모리에 지역변수 선언, 조건 판단&분기, 연산의 과정을 거치는데
이 일련의 과정들이 캐시 되고 속도가 가장 빠른 L1에 100개의 지역변수를 넣는 것이 속도에 유리하기 때문.
https://parksb.github.io/article/29.html
https://ko.wikipedia.org/wiki/누산기
https://shirohoo.github.io/backend/java/2021-05-11-for-loop/
https://ko.wikipedia.org/wiki/병렬_컴퓨팅
https://s-space.snu.ac.kr/bitstream/10371/81522/1/12정보과학회지저전력.pdf