본문 바로가기

분류 전체보기

(29)
[CS] 캐시 메모리란? 캐시 메모리란? : 데이터의 임시 보관소로 CPU와 메모리 사이의 속도차이를 해결하기 위한 것이다. CPU는 메모리(RAM)에서 데이터를 가져와서 처리하는 역할을 하기 때문에 CPU가 아무리 빠르더라도 메모리 속도가 느리면 무용지물이다. 이렇게 CPU와 메모리 사이의 속도차이를 해결하기 위한 것이 바로 캐시 메모리다!! 캐시 메모리는 메모리(RAM)보다 속도가 약 5배~10배정도 빠르다고 한다. 그렇기 때문에 자주 사용하는 데이터는 캐시 메모리에 저장하여 메모리가 아닌 캐시 메모리에서 가져오게 되면 빠르게 가져올 수 있어 컴퓨터의 전체적인 성능이 향상될 수 있다. 캐시 메모리의 경우 메모리(RAM)과 다르게 저장할 수 있는 공간이 매우 작기 때문에 최대한 공간을 효율적으로 사용해야하므로 자주 사용하는 데..
[DB] AUTO_INCREMENT 값 초기화/재정렬 하기 AUTO_INCREMENT 값 초기화/재정렬 필요성을 느낀 이유 key 값이 AUTO_INCREMENT로 정해져있는데 중간에 열을 삭제하거나 했을 경우 숫자가 다시 재정렬되지 않고 그대로 되어있느느 걸 볼 수 있다. 예를 들면 1, 2, 3, 4, 5 에서 3을 삭제했다면 1, 2, 4, 5 이런식으로 입력 되어있다.. 보기 매우 불편.. 그렇게 해당 부분을 재정렬 할 수 있는 방법을 찾아보았다! 재정렬 ALTER TABLE `table_name` AUTO_INCREMENT=1; SET @COUNT = 0; UPDATE `table_name` SET auto_increment_column_name = @COUNT:=@COUNT+1; SET @COUNT = 0; 이 부분은 SQL에서 변수를 선언하는 것으로..
[Git] error: Your local changes to the following files would be overwritten by checkout: 발생 원인 : 다른 브랜치로 이동하기 전 작업하고 있던 브랜치에서 변경사항이 있는데, 제대로 커밋(저장)하지 않아 발생하는 오류 해결 방법 1) 수정된 부분을 커밋해주거나 2) stash를 이용해서 파일을 임시저장 하는 방법 2번의 경우 git stash를 통해 파일을 임시 저장하고 난 후 branch 변경해서 내가 하려던 거 하고 난 후 브랜치로 돌아와서 git stash pop을 진행해주면 임시 저장한 파일을 불러올 수 있다. stash : 파일의 변경 내용을 일시적으로 기록해두는 영역 git stash list : 스태시 목록 불러오기 git stash show: 스태시 저장된 내용 확인, -p 뒤에 붙이면 더 상세한 내용 확인가능 [참고한 사이트] https://kgw7401.tistory.com..
[Git] 협업시 branch 활용 브랜치 생성 git branch [브랜치명] [분기해 나올 브랜치명] ex) git branch test main 이렇게 하면 main 브랜치에서 test라는 브랜치를 생성하게 된다. 브랜치 이동하기 git checkout [브랜치명] 브랜치로 push 진행하기 위와같이 해당 브랜치로 이동한 후에 작업을 하고 난 후 push 진행하기 git add . git commit -m "comment" git push origin [브랜치명] (원하는 브랜치로 git push) main에 변경된 내용이 있을 경우 main으로 브랜치 변경 후에 git pull origin main 진행해 변경 사항 가져오기 그런 다음에 자신의 branch로 변경한 다음에 git merge main으로 main을 병합해주기!! pu..
[TodoList] 해당 프로젝트의 배포를 진행하면서 겪었던 오류들 AWS EC2를 이용해 스프링 부트, 리액트를 Nginx를 통해 배포 https://velog.io/@ryusuz/AWS-로-서버-구축하기-맥-터미널에서-EC2-인스턴스-접속하기-pem-파일 위의 사이트를 참고해 EC2 인스턴스에 접속했다. ssh는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜, 시큐어 셸은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. https://www.lesstif.com/lpt/sudo-echo-permission-denied-89556053.html echo 명령시 >> 이거를 tee -a 로 바꿔줘야 실행된다 위에..
[React] 삭제나 수정시 이상하게 렌더링 되는 오류 발생 원래는 input의 값을 입력하게 되면 state 변수에 값이 입력되도록 만들고 엔터를 누르면 DB에 인서트 되도록 만들었다. 그리고 처음 Todolist에 들어오게 되면 DB에 있는 모든 할일 들을 가져와서 배열로 만든 state 변수에 담아주고 그 배열을 map을 이용해서 List라는 컴포넌트를 배열의 요소 개수만큼 만들어주었다. 문제 TodoList 프로젝트 진행중에 새로 생성한 후에 삭제를 하면 삭제가 되긴하는데 삭제한 데이터가 사라지는게 아니라 마지막 데이터가 사라지는 현상이 발생, 그런데 새로고침하면 제대로 삭제가 되어있다. => 데이터베이스에는 제대로 삭제가 되어있는데 화면에서만 제대로 렌더링이 안되었다. 해결 List 를 map으로 돌릴때 key값과 연관이 있다는 것을 알았다. 나는 처음에..
클라이언트가 서버에 요청 중 발생한 CORS 이슈 CORS (Cross Origin Resource Sharing) 다른 출처 리소스 공유 : 웹 애플리케이션은 자신의 출처와 동일한 리소스만 불러올 수 있다. 이것은 SOP(Same Origin Policy) 정책 때문인데 이 정책은 '동일한 출처에서만 리소스를 공유할 수 있다.'라는 법률을 가지고 있다. 여기에서 출처란? 출처(Origin) 라는 것은 Protolcol 과 Host 그리고 Port 까지 모두 합친 URL을 의미 ex) https://localhost:3000 https 가 protocol 이고 localhost 또는 naver.com이 들어가면 그 부분이 Host 이고 :3000이 포트를 의미한다. 여기서 하나라도 다를 경우 다른 출처로 구분된다. 다른 출처의 리소스를 불러오려면 그 출..
[부부개발단] 즐거운 자바 [섹션09] 쓰레드(Thread)와 네트워크 프로그래밍 병렬화 할 때 고려해야할 것들 메모리의 속도 CPU 캐시 메모리 디스크 네트워크 컨넥션 순차적 실행이 병렬 실행보다 빠른 경우도 있다. 동시 실행에 따르는 오버헤드가 없고, 단일 CPU 알고리즘은 하드웨어 작업에 더 친숙할 수 있기 때문이다. ... 암달의 법칙(Amdahl's Law) : 암달의 법칙은 암달의 저주라고도 불리며 컴퓨터 시스템의 일부를 개선할 때 전체적으로 얼마만큼 최대 성능 향상이 있는지 계산하는 데 사용된다. 병렬 vs 병행 병행(Concurrent)은 멀티스레드 프로그래밍(동시성 프로그래밍)을 의미 병렬(Parallel)은 멀티코어 프로그래밍 --> CPU 여러개를 동시에 사용하는 것 각각의 프로세스들은 자신만의 메모리 영역을 확보한 상태로 실행되고 있다. 시간을 쪼개서 특정 시간에..
[부부개발단] 즐거운 자바 [섹션06] 주석문, 예외처리, enum 인프런에 있는 부부개발단 즐거운 자바라는 강의를 듣고 필요한 부분을 필기한 내용입니다. IntelliJ에서 JavaDoc 생성 shift키 2번 연속 누르기 generate javaDoc 을 입력 custom scope를 선택 후 JavaDoc을 생성할 패키지, 클래스, 인터페이스 등을 선택한다. exclude를 선택해서 생성하지 않을 것들도 지정할 수 있다. output directory에서 JavaDoc이 생성할 경로를 지정한다. other command line arguments에는 다음을 입력한다. -enncoding UTF-8 -charset UTF-8 -docencoding UTF-8 ASCII Art 예외처리 Error와 Exception : 비정상적으로 프로그램을 종료되게 하는 원인 Err..
[부부개발단] 즐거운 자바 [섹션05] 03강 제네릭(Generic)과 컬렉션 프레임워크(Collection Framework) 인프런에 있는 부부개발단 즐거운 자바라는 강의를 듣고 필요한 부분을 필기한 내용입니다. GenericBox public class GenericBox { private T t; public void add(T obj){ this.t = obj; } public T get(){ return this.t; } } ObjectBox는 어떤 Object든 저장할 수 있고, 어떤 Object를 꺼낼 수 있다. 꺼내서 사용할 때는 원래 타입으로 변환시키는 번거로운 과정 필요 이걸 해소해보자 해서 나온게 제네릭이다. 아직 정해져있지 않은 어떤 type을 쓰겠다라는 것 T는 제네릭과 관련된 부분 제네릭은 클래스이름 뒤나, 메소드의 리턴타입 앞에 붙을 수 있다. 부분은 T라는 이름의 제네릭 타입을 선언한다는 것을 의미 ..