RuntimeError: dictionary changed size during iteration
·
프로그래밍/기타
⚒RuntimeError: dictionary changed size during iteration 아래와 같은 코드를 돌리다가 위와 같은 오류가 발생했다. 키값을 순회하다 키가 사라져서 생기는 문제다. graph = {1: 2, 2: 3} for key in graph.keys(): if graph[key] == 2: del graph[key] ✔해결법 다음과 같이 key를 list로 할당해놓고 삭제하면 해결된다. (items()도 가능하다) graph = {1: 2, 2: 3} for key in list(graph.keys()): if graph[key] == 2: del graph[key]
synchronized, CAS, ABA
·
프로그래밍/기타
멀티 스레드 환경에서는 공유 자원을 신경 써줘야 한다. 왜 그럴까? 아래를 보자. public class Tests { private static int count; @Test void nonMutualExclusion() throws InterruptedException { new Thread(() -> { for (int i = 0; i { for (int i = 0; i < 10000; i++) { count++; } }).start(); Thread.sleep(10000); System.out.println("count : " + count); } } - Result - count : 14699 분..
[MVC] MVC 패턴에서 프론트엔드 vs 백엔드?
·
프로그래밍/기타
나도 MVC패턴에 대해서 의미가 명확하지 않았고 백엔드에선 view라고 할것이 있나? 라는 궁금증이 들어 한번 찾아보다 스택오버플로우에서 재미있는 글을 봤다. 🤔 질문 model-view-controller 패턴에서 프론트엔드와 백엔드가 어떤 것을 의미하는지 모르겠어요. 데이터베이스에 접근권한이 있는 백엔드가 Model이고 프론트엔드는 View인가요? 😁 답변 엄.. 용어 정리를 먼저 해야 겠네요 프론트엔드 - 사용자가 볼 수 있는 부분입니다. HTML, CSS, 클라이언트 부분의 Javascript 처럼요. 데스크탑 앱 같은 경우는 GUI라고 할 수 있겠어요 백엔드 - 사용자가 볼 수 없는 부분입니다. 자바, php, ruby같은 걸로 만드는 서버 사이드 웹 애플리케이션입니다. 트위터를 예로 들자면 아..
[Java] Ant, Maven, Gradle
·
프로그래밍/기타
자바 빌드의 어려움 프로그램을 개발하다보면 여러 라이브러리를 쓰게된다. 그러다 보면 빌드 순서나 라이브러리 버전 등 고려할 사항이 많아지며 빌드가 복잡해진다. 개발자가 개발에 집중하지 못하고 빌드 매뉴얼에 더 신경써야 한다는 것이다. 또, 환경에 따라 빌드가 달라질 수 있어서 이것도 고려를 해야 한다. 유닉스에서 사용되던 C언어 빌드 스크립트 대표주자인 Makefile을 사용할 수도 있지만, 빌드가 더 복잡해짐에 따라 새로운 빌드 툴이 등장하게 된다. Ant 처음 등장한건 아파치에서 만든 Ant 였다. Ant는 당시 막 뜨던 XML을 설정파일로 사용했고, Make와 비슷하다. 근데.. 워낙 유연해서 빌드 과정을 하나하나 XML파일에 정확히 구성해야 했다. 그러다 보니 프로젝트가 진행됨에 따라 XML파일이..
[kubernetes] Error: unknown flag: --image
·
프로그래밍/기타
❗ Error: unknown flag: --image 아래에 있는 미니큐브 예제를 실행하려 했는데, 다음과 같은 오류가 떴다. Hello Minikube 이 튜토리얼에서는 Minikube와 Katacoda를 이용하여 쿠버네티스에서 샘플 애플리케이션을 어떻게 실행하는지 살펴본다. Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다. 참고: 로컬에서 kubernetes.io hello-node 라는 deployment를 생성하는 코드인데, Docker 이미지를 기반으로 컨테이너를 만든다. PS C:\WINDOWS\system32> minikube kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 Error: unkno..
[pgAdmin] Utility file not found. Please correct the Binary Path in the Preferences dialog 오류
·
프로그래밍/기타
❗ Utility file not found. Please correct the Binary Path in the Preferences dialog pgAdmin에서 [DB오른쪽클릭] -> Restore... 기능을 사용하려던 중, 다음과 같은 오류가 떴다. 유틸리티 프로그램을 못 찾고 있다고 한다. bin 디렉터리를 못 찾아서 생긴 오류다. 🛠 해결 방법 postgreSql이 설치된 곳을 찾고 bin 폴더 경로를 복사한 뒤, File -> Preferences -> Paths -> Binary paths 에서 버전 찾아서 넣어주면 끝! 끝! 아래와 같이 잘 나온다!
direct mapped cache / set associative cache
·
프로그래밍/기타
캐시란? 캐시는 일종의 메모리로, CPU에서 메모리에 접근하는데 드는 시간을 줄이기 위해 만들어졌다. 캐시를 사용하는 다양한 방법이 연구되어 왔으며 이 글에서는 direct mapped cache와 set-associative cache를 알아볼 것이다 아래의 글을 읽기 앞서, 캐시와 메모리의 차이점에 대해 조금 알아보자 메모리 VS 캐시 DRAM vs SRAM 하드웨어적으로 SRAM이 DRAM보다 더 빠르기 때문에 캐시는 SRAM, 메모리는 DRAM을 사용한다. 여기서 이 글을 읽으시는 분들은 메모리를 모두 캐시처럼 SRAM으로 대체하면 안될까? 라는 생각이 들것이다. 하지만 SRAM이 더 비싸서.. 그렇게는 할 수 없다. . Address 단위 vs Block 단위 메모리는 byte단위로 주소를 매핑..
밀러-라빈 소수 판정법의 검사 반복 횟수는 얼마나 해야할까?
·
프로그래밍/기타
RSA 암호화 프로그램을 만들던 도중, 고민이 생겼다. 소수를 생성할때, 밀러-라빈 소수 판정을 해야 하는데, 몇번 반복해야 하는지를 모르겠다. 그래서 알아보기로 했다. 일반적으로 알고리즘 문제를 풀때는, 다들 대충 이런 공식을 적용하는 것 같다. 검사하는 값이 $2^{32}$보다 작을때 : a값을 [2,7,61]로 함. $2^{64}$보다 작을때 : a값을 [2, 325, 9375, 28178, 450775, 9780504, 1795265022]로 함. 이 숫자는 miller-rabin.appspot.com/ 여기에도 나와있다. 여기까지는 좋다. 근데 만먁 64비트보다 크다면? RSA 알고리즘에 적용할 키 값은 당연히 64보다 커야한다. 2048 정도로 생각하는데, 어떻게 해야할까? 내가 개발할때 참고..
2jun0
'프로그래밍/기타' 카테고리의 글 목록 (2 Page)