전체 글

여러분 안냐세욤
· 기타
이번에는 CPU의 작동원리 및 성능향상 기법을 공부했다. ■ 작동원리: 명령어 사이클이 도는 것(fetch, decode, execute, access memory...)과, 도중에 발생할 수 있는 interrupt 사이클의 개요를 학습했다. ■ 성능향상: CPU 설계측면(클럭, 멀티코어, 멀티스레드)에서 본 다음에, 명령어 병렬처리 기법을 공부하면서 명령어 파이프라이닝의 중요성을 실감했다. 그리고 ARM ISA가 매력적인 이유 중 하나가 파이프라이닝의 장점을 적극 취하는 RISC가 큰 몫 하지 않을까 싶기도! (난 언제 써보지? ㅎㅅㅎ) 🪄기본 미션 ■ p125) 확인문제 2번 - 플래그 레지스터: 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터 - 프로그램 카운터: 메모리에서 가져올..
· 기타
시뮬레이션 문제 풀기 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 나는 백트래킹1: N_C_2/N 조합 찾음 (halfCombination) 백트래킹2: 각 조합의 A, B 그룹 각각에서 2개씩 짝지어진 조합을 얻음 (getPairs) 그리고 점수를 계산해서 min값을 찾는 방법으로 했다. 그런데 또 다른친구 코드랑 비교해보니까.. splitTeam 백트래킹 안에서 모든 과정을 원콤에 끝낸다. (원래 이런건 그렇게 하는 거라고 함) 메모리 10배이상, 시간 6배..
· 기타
시뮬레이션 문제 풀기 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 구현이 꽤 오래 걸렸다. 그리고 매우 느린 코드를 작성했다. import java.util.*; public class Main { public static int minimum = Integer.MAX_VALUE; public static String[][] originMap; public static int N, M; pu..
· 기타
잊지 않도록 컴운 슈우욱 보기 시작 아래는 혼공단 활동에 따른 미션 인증이다. . . 기본미션 - p51 문제3: 프로그램이 실행되려면 반드시 ~~ 에 저장되어 있어야 합니다. 답: 메모리 - p65 문제3: 1101(2)의 음수를 2의 보수 표현법으로 구해 보세요 답: 0011 (1101에서 모든 0, 1을 뒤집은 0010에서 1을 더해서 0011)
· Database
🪄 [1단계] mysql 컨테이너의 sql 백업파일 생성 아래 예시코드를 통해 mysql 컨테이너의 sql 백업파일을 생성할 수 있다. (경로는 맘대루..) docker exec mysql mysqldump -u"유저" -p"패스워드" mysql > ~/backup/backup-db-$(date +%Y-%m-%d).sql 이 코드를 담은 backup.sh를 만들면, backup.sh 실행만으로 mysql 컨테이너의 데이터파일인 .sql을 생성해낼 수 있다. 매일 꾸준히 백업하고 싶으니까 스케줄러를 등록해두자. 🪄 [2단계] cron 스케줄러 등록 다음과 같이, 방금 만든 backup.sh 실행하는 크론탭을 등록하자. crontab -e 명령으로 편집하자. *편집창이 뜨면 아래 스케쥴을 추가하면 된다. *..
✨ 상수 인터페이스를 사용하지 말자 인터페이스는, 구현체 인스턴스를 참조할 수 있는 타입 역할을 한다. 오직 이 용도로만 사용해야 한다! 이 지침에 맞지 않는 안티패턴은 '상수 인터페이스'이다. 상수 인터페이스는 내부 구현에 static final 필드로만 가득 찬 인터페이스다. 자바 플랫폼에도 java.io.ObjectSteamConstants 등 상수 인터페이스가 몇 개 있지만, 따라해서는 안된다. 잘못 활용한 것이므로.. 구현체가 이런 상수 인터페이스를 implements 하면 이 상수들에 종속된다. 만약 다음 릴리즈에서 상수들을 사용 안 할 거여도, 호환성을 위해 여전히 상수 인터페이스를 구현하고 있어야 한다는 문제가 생긴다. final이 아닌 클래스가 상수 인터페이스를 구현한다면, 모든 하위 클..
솔직히 이번에 공부한 내용이 와닿지 않는다. 이번 Item은 다시 학습해야 한다. 그런데 일단 래퍼클래스의 이점을 취하는 이야기가 또 나와서 좀 이 래퍼 클래스에 대해 알고 싶고, 자바의 AbstractXXX가 골격 구현 개념과 관련 있다는 것을 인지했다. 일단 내가 전체적으로 잘 모르는 것 같고, 아래 설명 중 Object 메서드들은 디폴트 메서드로 제공해서는 안 되므로, 해당 메서드들은 모두 골격 구현 클래스에 구현한다는 것도 와닿지 않는다. 재학습 대상 아이템으로 두자! ✨ 추상 클래스보다는 인터페이스를 우선하라. 자바8부터 인터페이스도 default method를 제공하므로, 인터페이스와 추상클래스 모두 '구현 메서드'를 제공할 수 있다. 다만 추상 클래스 방식은 좀 제약이 걸리는 것이, 자바는 ..
· 미분류글
✨ INTRO 우리 서비스에 계정이 필요해서 이참에 카카오로그인을 연동해보자고 했다. *참고로 SpringBoot 백엔드와 React 프론트엔드로 이루어진 전형적인 웹서비스다. 처음 해보는거라 가장 전체적인 과정을 이해해나갔다. 카카오 로그인 과정에서 가장 먼저 생각해야 할 것은 당연히 사용자의 카카오 로그인일 것이다. 즉 프론트 측에서 이루어져야 하는 과정을 먼저 이해하는 것이 자연스러울 것 같다. 요약하자면 '인가 코드'와 '토큰'을 받아와서 🪄 큰 흐름 알기 서버에 카카오 로그인 요청이 들어오면 아래 흐름대로 로그인을 처리한다. 프론트엔드 / 백엔드로 구분하자면 우리팀은 이렇게 구현했다. 1) 인가 코드 받기 (프론트엔드) 서버가 카카오에 인가코드 받기를 GET 요청하면, 카카오가 사용자에게 카카오..
· 미분류글
✨ ./gradlew: not found chmod +x를 해도 gradlew를 인식하지 못했다. 해결하던 중 캐리지리턴이 문제라는 글을 발견했다 ㅇ_ㅇ! 그래서 gradlew를 열어보니까 마지막에 빈 줄 하나가 있었는데, 아싸리 빈 줄을 제거해주는 방식으로 해결했다. 그랬더니 도커파일의 RUN ./gradlew bootJar가 동작한다. ✨ 원인 - 나 windows다. - windows에서 직접 bootJar 하면 된다. 컨테이너에서 안되는 이유는 복사해온 gradlew에 windows의 CRLF이 반영되어있기 때문일 것이다. 팀원들은 mac이라서 또 나만 겪은 문제가 아닐까 싶기도 ㅇv ㅇ
· JAVA
https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 단순한 Set 문제다. 근데 시간 초과! 25% 시간초과 25%에서 28%까지 뚫었던 방법은, 새로운 객체 생성을 줄이는 방법으로 했다. // set과 initSet을 두고 Set set = new HashSet(); Set initSet = new HashSet(); for(int i=1; i
히어로맛쿠키
자꾸 생각나는 체리쥬빌레