분류 전체보기209 [OS] 동기화(Synchronization) | 스핀락, 뮤텍스, 세마포어 [ 데이터 접근 ] 데이터가 저장되어 있는 위치로부터 데이터를 읽어와서 연산한 뒤, 연산한 결과를 이전에 저장되어 있던 그 위치에 다시 저장한다. 데이터를 읽기만 하면 문제가 없는데, 데이터를 연산하고 수정하게 되면 누가 먼저 읽어 갔는지에 따라 결과가 달라질 수 있다. 이때 발생할 수 있는게 Synchronization(동기화) 문제이다. load X, reg1 inc reg1 store X, reg1 🤼♂️ Process Synchronization 공유 데이터(shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다. 따라서 일관성(consistency) 유지를 위해서는 협력 프로세스(cooperating proce.. 2023. 2. 2. [OS] Process | Context Switching (컨텍스트 스위칭) 0. 개요 개발은 프로그램을 만드는 것이다. 그리고 그렇게 만들어진 프로그램이 컴퓨터에서 실행되면, 실행 중인 프로그램을 프로세스라고 부른다. 프로그램 (program) : 컴퓨터가 실행할 수 있는 명령어들의 집합 ✔️ 프로세스 (process) “Process is a program in execution” / 컴퓨터에서 실행 중인 프로그램 : 각각의 프로세스는 독립된 메모리 공간을 할당받는다. 그리고 명령어들과 데이터를 가진다. CPU (central processing unit) : 명령어를 실행하는 연산 장치 메인 메모리 (main memory) : 프로세스가 CPU에서 실행되기 위해 대기하는 곳 I/O (input/output) : 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고받는 것 :.. 2023. 1. 24. [OS] 교착상태 (Deadlock) 락(lock)은 동기화를 보장하는 툴(tool)이다. 락을 사용하여 동기화를 수행하다 보면 필연적으로 데드락(Deadlock)이라는 부작용이 생길 수 있다. 데드락 상태가 되면 더 이상 프로세스나 스레드가 진행하지 못하기 때문에 이를 잘 파악하는 것은 중요하다. + 또한 데드락 개념은 DB에서 '분산 서버 동시성 이슈 해결 방안'으로 비관적인 락을 사용할 때 등장하기도 한다. 비관적인 락 : 동시에 연산이 실행되지 않도록 Lock(잠금)을 걸어서 다른 연산이 끼어들지 못하도록 한다. 단점으로는 성능이 느려지고, 데드락 상태에 걸릴 수 있다. 🚗 교착상태 (Deadlock) (두 개 이상의) 일련의 프로세스 혹은 스레드들이 서로가 가진 자원(resource)을 기다리며 block된 상태 자원(resourc.. 2023. 1. 21. [Network] 웹 통신의 흐름 ✔️ Point 1 : DNS 사람은 고정 길이의 주민등록번호와 이름으로 식별할 수 있다. 컴퓨터는 주민등록번호를 선호할 것이고, 일반 사람들은 이름을 선호할 것이다. 이와 같이 www.google.com와 같은 호스트 이름은 사용자들이 기억하기 좋아 선호한다. 하지만 이 호스트 이름으로는 호스트 위치에 대한 정보도 얻을 수 없고, 가변 길이로 라우터가 처리하는 데도 어려움이 있다. 그래서 IP 주소로 식별된다. 즉, 호스트를 식별하는 방법은 호스트 이름과 IP 주소로 두 가지이다. [ DNS (Domain Name System Server) ] 사람과 라우터는 서로 선호하는 식별자가 다르다. 이를 절충하기 위해서 호스트 이름을 IP 주소로 변환해줄 필요가 있는데, 이때 DNS를 이용한다. DNS는 도메.. 2023. 1. 2. 실패에 대처하는 자세 나는 두 달간의 도전에서 결국 실패했고 극복한 경험을 가지게 되었다. 작은 실패로 보일 수 있다. 하지만 그 작은 실패에서 '넘어지고 상처 입었지만 다시 일어날 용기를 가진 경험'은 나에게는 특별하다 생각한다.여기서 말하는 실패: [우아한테크코스 5기 백엔드] 지원 및 최종테스트 후기 [ 체력 ] 나는 개발을 하면서 체력의 중요성을 깨달았다. 안 되는 것에도 포기하지 않는 강한 마음. 그것이 체력이라고 생각한다. 살다 보니 모든 일이 물 흘러가듯 쉽게 흘러가지 않는다. 2022년. 열심히 한 결과를 돌려받은 해라고 생각했고 내 계획대로 탄탄대로일 줄 알았다. 하지만 2023년 계획이 사라졌다. 개발에서 배운 포기하지 않는 자세를 떠올리자. 지금까지 키운 체력으로 다시 일어나자. 후회 없이 했으니 결과도 .. 2022. 12. 29. [우아한테크코스 5기 백엔드] 지원 및 최종테스트 후기 우아한테크코스 5기 (백엔드) 📝 자소서: 2022.10.17 ~ 10.24 🤸♀️ 프리코스: 2022.10.31 ~ 11.23 🏋️ 최종 테스트 대비: 2022.11.24 ~ 2022.12.16 🎉 최종 테스트(오프라인): 2022.12.17 + 해당 과정을 정리한 Repo 결론부터 말하자면 나는 두 달간의 여정 끝에 최종 코딩테스트를 보았고 모든 구현을 완료했지만 결국 '탈락'이라는 결과를 받았다. 비록 결과는 '탈락'으로 남겠지만 두 달간의 나의 '과정'은 사라지는 것이 아니기 때문에 그동안의 나의 도전을 기록하고 마무리해보고자 한다. 1. 자기소개서 문항은 총 6가지로 핵심은 4문항이다. 1. 고등학교/대학교 전공을 포함하여 프로그래밍 교육 이력을 작성해 주세요. (200자 이내)* 전공, 부전.. 2022. 12. 29. [웹개발자 필수] HTTP 진화 과정 (HTTP/1.0부터 HTTP/3까지)(+관련 면접 질문) 기본적으로 HTTP는 전송 계층 위에 있는 애플리케이션 계층으로서 웹 서비스 통신에 사용된다. 이런 웹은 어떻게 시작되었을까. [ World Wide Web의 발명 ] HTTP는 World Wide Web에 내재된 프로토콜이다. 팀 버너스리가 1989년부터 1991년에 발명하였고 초기에 Mesh라고 불리다가 1990년에 구현 과정에서 World Wide Web(WWW)으로 이름을 바꿨다. World Wide Web(WWW) : HTTP라는 프로토콜을 이용해 HTML 파일을 주고받을 수 있는 공간 HTTP/0.9 원-라인 프로토콜 HTTP/0.9는 정말 단순한 서버-클라이언트 구조를 따른다. 요청: 단일 라인으로 구성 리소스 경로: GET 메서드만 가능 GET /mypage.html Simple HTML .. 2022. 12. 3. [우아한테크코스] 숫자 야구(baseball) 리팩토링 확실히 4주 프리코스 뒤 다시 2주 차 미션을 보니 더 좋은 방식으로 구현할 수 있을것 같다. 그렇다는 건 내가 발전하고 있다는 시그널🌟 📌 리팩토링할 미션 [우아한테크코스] 프리코스 2주차 : 숫자 야구(baseball) 1. 리팩토링 필요한 부분 분석 📂 기존 폴더 구조 ├─main │ └─java │ └─baseball │ │ Application.java │ │ │ ├─controller │ │ BaseBallGame.java │ │ │ ├─domain │ │ GameLogic.java │ │ RandomNumbers.java │ │ │ ├─validator │ │ NumbersValidator.java │ │ NumberValidator.java │ │ │ └─view │ InputView.ja.. 2022. 11. 28. [우아한테크코스] 객체를 객체스럽게 사용하도록 리팩토링해라. 우테코 프리코스가 끝나고... 평화가 찾아온 정윤's 자바 마을에는.. (물론 아직 학기 중인 게 흠이지만) 리팩토링 열풍이 부는데... 3주차 로또를 리팩토링하며 4주 차 구현에 바빠 제대로 반영 못한 3주 차 피드백을 펼쳐 보는데.. 피드백 한 번 보고 내 코드 한 번 보고 뜨아익.. 순살 공격 그때 생각난 과거.. 어릴 때 로마 여행을 간 적이 있는데 그때 박물관이나 미술관에 가는 길에 가이드 분이 아는 만큼 작품이 보일 거라며 역사(?)를 엄청 재밌게 들려주셨다. 그리고 정말로 알고 보니 유적지나 미술관 갈 때 설명이 떠오르면서 보이더라.. 그렇다.. 아는만큼 보인다. 알고 보니 눈물난다. 이 코드 과거의 너? 누가 쓴 거냐 와 서론이 길다. 시작해보자. 리팩토링 오늘 리팩토링할 내용은 ' [우아.. 2022. 11. 26. [우아한테크코스] 프리코스 4주차 : 다리 건너기 (bridge) 이 글은 '프리코스' 과정에 작성한 글이며 현재 레포지토리에 있는 코드와 다를 수 있습니다. (리팩토링함) 🚩 4 주차 목표 1. 클래스(객체)를 분리하는 연습 2. 리팩터링 이 두 가지에 익숙해지는 것을 목표로 하고 있다. [4주 차] 미션 - 다리 건너기 🪜 🏃 리팩토링 전 프리코스 제출 코드 시점 👉 미션 저장소 📎 Source Code (PR) 📆 기간: 2022.11.16(수) 15:00 ~ 2022.11.22(화) 23:59 1. 구현 과정 ⚙️ 기능 구현 목록 작성 👉 기능 구현 목록 박굴렁쇠... 일단 코드가 돌아가게 구현해보자. 그런데 행복하지 않다.. 찝찝해 찝찝한 부분을 확인해보자. 1️⃣ 인스턴스 변수의 수를 줄이기 위해 노력한다. 현재 BridgeGameController에서 생성.. 2022. 11. 19. [우아한테크코스] 프리코스 3주차 : 로또 (lotto) 이 글은 '프리코스' 과정에 작성한 글이며 현재 레포지토리에 있는 코드와 다를 수 있습니다. (리팩토링함) 🚩 3 주차 목표 1. 클래스(객체)를 분리하는 연습 2. 도메인 로직에 대한 단위 테스트를 작성하는 연습 이 두 가지에 익숙해지는 것을 목표로 하고 있다. [3주 차] 미션 - 로또 🎰 🏃 리팩토링 전 프리코스 제출 코드 시점 👉 미션 저장소 📎 Source Code (PR) 📆 기간: 2022.11.09(수) 15:00 ~ 2022.11.15(화) 23:59 + 프리코스 이후 리팩토링 포스팅 객체를 객체스럽게 사용하도록 리팩토링해라. 1. 구현 과정 미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다. 일단 처음엔 기능 요구 사항을 채우는데 집중한다. .. 2022. 11. 13. [Java] 람다와 스트림 (Lambda & Stream) 람다식 (Lambda Expression) 함수(메서드)를 간단한 '식(expression)'으로 표현하는 방법 익명 함수(이름이 없는 함수, anonymous function) 함수와 메서드의 차이 근복적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어 함수는 클래스에 독립적, 메서드는 클래스에 종속적 // 반환 값이 있는 경우 (int a, int b) -> a > b ? a : b // 매개변수의 타입이 추론 가능하면 생략가능(대부분 경우 생략가능) (a, b) -> a > b ? a : b ✔️ 함수형 인터페이스 단 하나의 추상 메서드만 선언된 인터페이스 함수형 인터페이스 타입의 참조변수로 람다식을 참조할 수 있음 MyFunction f = (a, b) -> a > b ? a : b; .. 2022. 11. 13. [Java] 코딩테스트 대비 정리 (2) 처음부터 다 알려고 하지 말자! 문제 풀면서 새로 알게 된 개념. 기억하고 싶은 개념을 기록하자. 형변환 ✔️ String -> int 1) Integer.parseInt(String s) int 타입을 리턴한다. 2) Integer.valueOf(String s) parseInt와 다르게 Integer Object를 리턴한다. 그리고 .intValue()를 사용하여 int 타입으로 형변환할 수 있지만 붙이지 않아도 자동으로 형변환이 된다. ✔️ String -> char[] 1) str.toCharArray() 이때 str은 String 타입이다. ✔️ int -> String 1) Integer.toString(int i) 2) String.valueOf(int i) 3) i (int타입의 값) + .. 2022. 11. 7. [우아한테크코스] 프리코스 2주차 : 숫자 야구(baseball) 이 글은 '프리코스' 과정에 작성한 글이며 현재 레포지토리에 있는 코드와 다를 수 있습니다. (리팩토링함) 🚩 2 주차 목표 1. 함수 분리 2. 각 함수 별로 테스트를 작성하는 것 이 두 가지에 익숙해지는 것을 목표로 하고 있다. [2주 차] 미션 - 숫자 야구 ⚾ 🏃 리팩토링 전 프리코스 제출 코드 시점 👉 미션 저장소 📎 Source Code (PR) 📆 기간: 2022.11.02(수) 15:00 ~ 2022.11.08(화) 23:59 + 프리코스 이후 리팩토링 포스팅 [우아한테크코스] 숫자 야구(baseball) 리팩토링 1. 구현 과정 1주 차 과제에서는 한 클래스 내에 필요한 메서드와 클래스를 구현해서 사용했다. 이때 메서드를 수정 및 테스트 하기가 불편했고 비슷한 역할을 하는 메서드끼리, 클.. 2022. 11. 7. [Java] 코딩테스트 대비 정리 (1) 동적 타입 언어인 파이썬과 자바스크립트에 적응한 나란 몸.. 정적 타입 언어 자바를 쓰려니 참 어렵다... 휴 자바 미션과 코딩테스트를 대비해서 헷갈렸던 개념을 정리하면서 공부해보자! List 클래스 자바에서 List를 만들때 List 인터페이스를 구현한 ArrayList나 LinkedList와 같은 객체를 생성하게 되는데 Arrays.asList()와 List.of() 메소드로도 생성할 수 있다. 1) Arrays.asList() List strList = new ArrayList(Arrays.asList(splitArray)); 2) List.of() List.of() 메서드는 JAVA 9 부터 지원하는 메서드이다. char 배열과 String 클래스 차이 코드를 짤 때 문자열 저장은 String 타.. 2022. 10. 29. 이전 1 2 3 4 5 6 7 ··· 14 다음 반응형