프로그램이 실행될 때 일어나는 일(컴퓨터의 저장공간)
2023. 4. 8. 16:33
카테고리 없음
구구단을 출력하는 소스코드를 짯다고 가정해보자. 이 소스코드를 실행하면 "콘솔에 구구단을 출력한다" 라는 결과가 나올 것이다. 눈에 보이는 과정은 간단하지만 코드를 돌린 컴퓨터에서는 안보이는 수많은 과정을 통해 결과가 나타나는 것이다. 먼저 프로그램이 실행되기 위해서는 프로그램이 메모리에 로드되어야 한다. 그리고 해당 프로그램 내에서 필요한 여러 변수를 위한 메모리 공간도 필요하다. 이 예시에서 '프로그램'의 주체는 '구구단 출력 소스코드'가 되고 '메모리'는 RAM이다. 소스코드로 작성된 프로그램이 메모리에 적재되고 실행되는 방법과 순서는 다음과 같다. 소스코드와 변수들이 메모리에 적재되는 과정 코드 영역(프로그램 시작->끝까지) 실행할 프로그램 코드가 메모리에 로드된다. 메모리에 적재된 프로그램을 프..
java- IEEE 754 부동 소수점 방식
2023. 2. 2. 11:34
Java
자바에서 소수의 계산시에 값이 3.02 + 1.06 = 4.08 이렇게 정확하게 떨어지지 않고 3.0800003 이런식으로 나오는 경우가 있다. 이는 자바의 소수점 계산방식 때문이다. 각종 프로그래밍 언어에서는 소수를 표현할 때 IEEE 754 부동 소수점 방식으로 소수를 표현하게 되는데, java에서도 이 방식으로 소수를 계산한다. 🔎부동소수점(floating point) 방식 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 위치를 나타내는 수를 따로 적는 방식 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현 컴퓨터에서는 고정 소수점 방식보다 넓은 범위의 수를 나타낼 수 있어 많이 이용되지만, 근삿값으로 표현되며, 비교적 연산 속도가 느리다. 고정소수점과는 ..
[BigDecimal] java 소숫점 계산 정확하게 하기
2023. 1. 19. 14:04
Error
😮문제상황 public void calculateFuelTank(List checklists,Yata yata){ int positiveCount = (int) checklists.stream().filter(Checklist::isCheckpn).count(); int negativeCount = checklists.size() - positiveCount; if(positiveCount>negativeCount) yata.getMember().setFuelTank(yata.getMember().getFuelTank() + 0.1); else yata.getMember().setFuelTank(yata.getMember().getFuelTank() - 0.1); } } 프로젝트로 카풀 서비스를 만들던 ..
[IllegalArgumentException] urlTemplate not found
2023. 1. 17. 00:49
Error
@Test @WithMockUser(username = "test@gmail.com", roles = "USER") @DisplayName("야타 게시글 업데이트") void updateYata() throws Exception { //given long yataId = 1L; YataDto.Patch patch = createYataPatchDto(); String json = gson.toJson(patch); //json으로 보낼 patch요청 Yata expected = YataFactory.createYata(); YataDto.Response response = createYataResponseDto(expected); given(mapper.yataPatchToYata(any())).will..
Unparseable date /date <-> string 변환하기
2023. 1. 11. 17:15
Spring
기호 의미 G 연대(BC, AD) y 년도 M 월 w 년의 몇 번째 주(1~53) W 월의 몇 번째 주(1~5) D 년의 몇 번째 일(!~366) d 월의 몇 번째 일(1~31) F 월의 몇 번째 요일(1~5) E 요일 a 오전/오후 H 시간 (0~23) h 시간 (1~12) K 시간 (0~11) k 시간 (1~24) m 분 (0~59) s 초 (0~59) S 1/1000 초 (0~999) z TimeZone (General time zone) ex) GMT+9:00 Z TimeZone (RFC 822 time zone) ex) +0900 string타입으로 받은 데이터를 date 형식으로 변환하여 저장할 수 있다. 처음에는 new Date(Sysem.curruntTimeMillis())를 이용하여 나온..
자바 Date <-> String 형변환
2023. 1. 10. 21:29
카테고리 없음
String to Date String from = "2023-01-10 11:11:00"; SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date to = transFormat.parse(from); Date to String Date from = new Date(); SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String to = transFormat.format(from);
@MapStruct 이 제대로 작동하지 않는 오류
2022. 12. 11. 00:25
Error
❗오류 ToDoApp을 만들어보던 중 Mapper 인터페이스에 MapStruct를 적용하여 mapperImpl을 구현하려고 하니 다음과 같은 오류가 발생하며, 빈 DTO와 Entity를 반환하였다. reason: actual and formal argument lists differ in length 이와 비슷한 오류는 전에도 발생하였으며 Getter와 Setter애너테이션을 삭제하고 직접 코드로 작성하여 해결한 적이 있었다. 이번에는 좀 더 근본적인 원인을 찾아 해결해 보고 싶어 구글링을 해보았다. ❗원인 Mapstruct는 우선 순위가 높은 순으로 구현함 MapStruct에서 @AllArgsConstructor, @Setter를 사용하는데 있어 Lombok이 정상적으로 작동하지 않고 있다고 추측 bu..
E2C 인스턴스 연결 후 bash shell에서 git clone 시 실패하는 오류
2022. 12. 2. 14:58
Error
https://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/troubleshooting-ssh.html 와의 SSH 연결 문제 해결AWS CodeCommit - AWS CodeCommit SSH 키 ID를 두 개 이상 업로드한 경우, 키가 업로드 날짜가 아니라 키 ID를 기준으로 영문자순으로 나열됩니다. 올바른 업로드 날짜와 연결된 키 ID를 복사했는지 확인하십시오. docs.aws.amazon.com E2C 인스턴스 연결 후 bash shell에서 git clone 시 실패하는 오류가 남 시작 전 먼저 bash shell 환경에서 실행해 줄 것이다. 바로 진행시 기본 위치도 안뜨고 평소 쓰는 명령어들이 안먹히는 경우도 있다. ->우리가 평소 쓰는 쉘이..
백준 10814 - 나이순 정렬 JAVA
2022. 11. 19. 15:48
Algorithm
StringBuilder객체배열을 생성한 후 카운팅 정렬을 이용하여 풀어주었다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Baek_10814 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); // 입력되는 나이의 범위 : 1 ~ 200 /..