공감하기
본문 바로가기
  • [!] Manual from the past has just arrived

전체 글28

[TIL] 2024-09-19 1. 새로운 지식JVMJVM 구성요소 블록 다이어그램(JVM Spec)각각의 구성요소는 언제까지나 추상적인 spec임. 이걸 어떻게 구현할지는 구현하는 사람이 결정할 문제어떤 구현체던지 상관없이, 표준 스펙에 따르면 JVM에는 다음과 같은 추상적인 구성요소를 가짐class loader subsystemruntime data areasexecution engineJNI (Java Native Interface)-> 다이어그램에는 native method interface라고 적혀있다.Native Method LibrariesJVM에서 프로그램을 실행하게 되면, 바이트코드를 포함해서 메소드의 파라미터, 리턴값, 연산의 중간값과 같은 데이터를 저장할 공간이 필요하다. JVM은 이런 데이터를 저장할 공간을 조직.. 2024. 9. 19.
[TIL] 2024-09-12 1. 새로운 지식Java란 무엇인가Java 표준 스펙과 구현체 graph BT spec["`**자바 표준 스펙** * 컴파일러 * 자바 실행 라이브러리 * JVM`"]; oracle["`**오라클 자바 구현체** * 컴파일러 * 자바 실행 라이브러리 * JVM`"]; adoptium["`**Adoptium 자바 구현체** * 컴파일러 * 자바 실행 라이브러리 * JVM`"]; amazon["`**Amazon Corretto 자바 구현체** * 컴파일러 * 자바 실행 라이브러리 * JVM`"]; oracle --> spec; adoptium --.. 2024. 9. 12.
[TIL] 2024-09-11 1. 새로운 지식Java의 특징플랫폼 독립성JVMJava 프로그램을 실행하기 위한 가상 컴퓨터라고 생각하면 쉽다Java로 프로그램을 만들면 컴파일러(JVM이 아니다!)가 프로그램을 Java 바이트 코드로 변환한다.JVM은 이 바이트코드를 읽어 해당 컴퓨터의 운영체제가 이해할 수 있는 기계어로 번역하고 실행한다.Java 바이트 코드는 JVM을 지원하는 모든 시스템에서 별도의 수정 과정 없이 실행되므로, 어디에서나 Java 코드를 실행할 수 있게 된다. → 이러한 특징을 플랫폼 독립성이라고 함플랫폼 독립성은 Java의 철학과도 연관이 있음 (Write Once, Run Everywhere)2. 내일의 목표추가 학습Java의 동작 원리 이해하기(https://bgpark.tistory.com/141)Java .. 2024. 9. 11.
[내일배움캠프] 스타터 노트 내가 내일배움캠프에 참여한 계기는 무엇인가요?전공자로 졸업을 하고 스스로 독학을 하며 취업을 준비하고 있었지만, 좀처럼 진도가 잘 나가지지 않아서 몰입해서 단기간에 효율적으로 공부를 하고 싶다고 생각한 것이 첫 번째 계기였습니다. 두 번째는 협업 경험을 좀 더 쌓고 싶은데 팀원을 구하는 것이 쉽지 않아 팀 빌딩부터 최종 프로젝트까지 진행할 수 있는 코스를 선택하고자 했습니다.내가 이해한 개발자는 어떤 역할을 하는 사람인가요?일상에서 마주치는 여러가지 크고 작은 문제를 코드로 해결하는 사람프로그래밍을 경험해보셨나요? 해보셨다면 어떤 경험을 하셨는지를 작성해주시고, 아니라면 프로그래밍에 대해 찾아본 것을 작성해주세요.웹 어플리케이션을 만들어본 경험이 있습니다. (프론트엔드, 백엔드 모두 경험)대부분 Rest.. 2024. 9. 11.
Application.persistentDataPath에 대한 고찰 취미로 게임을 하나 만들고 있다.세이브 파일에 대한 경로를 관리해야 하는데, 읽기 쓰기가 가능한 Application.persistentDataPath를 사용하였다. 처음 프롤로그 씬을 불러올 때 세이브파일의 존재 유무에 따른 조건이 필요해서 씬을 불러오는 역할을 하는 함수에서 세이브파일 경로를 직접 지정해주었었다.하지만 파일 경로와 같은 것들은 게임의 전반적인 세팅이나 상태를 관리하는 GameManager만 알고 있어야 한다고 생각해서 GameManager 내부에서 세이브파일 경로를 프로퍼티로 관리하고 필요한 경우 외부에서 접근 가능하도록 하면 어떨까 했다.이 과정에서 알게된 Application.persistentDataPath의 특성에 대해 살펴보고자 한다. GamaManager에서 프로퍼티 변수로.. 2024. 7. 29.
비트를 처리하기 위한 하드웨어 「한 권으로 읽는 컴퓨터 구조와 프로그래밍」 책을 읽고 새롭게 알게 된 부분이나 어려웠던 내용 등을 정리한 포스트입니다.2장 전자 회로의 조합 논리* 비트를 처리하기 위한 하드웨어 - 릴레이, 진공관, 트랜지스터, 집적 회로p. 109 ~ 115이번 시간에는 비트를 다루는 하드웨어를 만드는 방법을 알아본다.복잡한 현대의 기술보다는 비교적 이해하기 쉬운 역사적인 기술을 먼저 살펴보고 이해를 쌓아나가도록 하자. 전기와 자기 사이에는 편리한 관계가 있다.전선을 둥글게 감아서 코일로 만들고 전기를 흘려보내면 코일이 전자석이 된다.이 사실을 한스 크리스티안 외르스테드라는 사람이 발견했다고 한다.전자석은 켜고 끌 수 있기 때문에 스위치를 제어하는 데에 활용할 수도 있는데, 이를 응용한 장치가 릴레이(relay)이다.. 2024. 7. 25.
[BOJ] 2751: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.python이 기본적으로 제공하는 sort() 함수를 이용하여 풀이를 했는데 시간 초과가 떴다.sort() 함수는 기본적으로 최악의 경우에도 nlog(n)을 보장하는 것으로 알고 있는데, 시간초과라 의아해하던 와중 입출력에서 시간을 많이 잡아먹나 하는 의심이 생겼다.그래서 python에서 빠른 입출력을 위한 테크닉을 찾아보았다. sys 모듈을 사용하여 입출력을 더 빠르게 처리할 수 있다고 한다.# 입력import sysdata = sys.stdin.readline().rstrip()# 출력import syss.. 2024. 7. 18.
왜 컴퓨터는 2진수(비트)를 사용할까? 「한 권으로 읽는 컴퓨터 구조와 프로그래밍」 책을 읽고 새롭게 알게 된 부분이나 어려웠던 내용 등을 정리한 포스트입니다.2장 전자 회로의 조합 논리* 디지털 컴퓨터의 사례 - 아날로그와 디지털의 차이, 하드웨어에서 크기가 중요한 이유, 디지털을 사용하면 더 안정적인 장치를 만들 수 있다, 10진 숫자 대신 비트를 사용하는 이유p. 92 ~ 101이번 시간에는 기계적인 계산 장치부터 해서 컴퓨터를 이루는 부품에 이르기까지 컴퓨터에 사용된 기술 진화 과정 중 일부를 다룬다.아울러 비트를 사용하지 않는 계산 장치를 통해 왜 비트가 컴퓨터에 어울리는 올바른 선택인지를 알려준다. 흔히들 요즘의 계산기 하면 디지털 계산기를 많이 떠올리지만 실제로 아날로그 방식으로 동작하는 계산기도 있다.고대에 사용된 계산기 중 하.. 2024. 5. 17.
텍스트 표현(아스키코드, 유니코드, UTF-8, 인코딩) 「한 권으로 읽는 컴퓨터 구조와 프로그래밍」 책을 읽고 새롭게 알게 된 부분이나 어려웠던 내용 등을 정리한 포스트입니다.1장 컴퓨터 내부의 언어 체계* 텍스트 표현 - 아스키 코드, 다른 표준의 진화, 유니코드 변환 형식 8비트* 문자를 사용한 수 표현 - 출력 가능하게 변경한 인코딩, 베이스64 인코딩, URL 인코딩p. 78 ~ 85컴퓨터는 비트를 사용해 수를 표현할 수 있다. 그렇다면 문자는 어떻게 표현할 수 있을까?텍스트를 표현하는 여러 아이디어가 등장했지만, 제일 널리 쓰이게 된건 아스키 코드이다.아스키 코드는 키보드에 존재하는 모든 기호에 7비트의 숫자 값을 할당하였다. 위 표를 보면 NUL, SOH와 같이 특이한 코드가 있는 것을 알 수 있다.이 코드들은 제어 문자로, 글자를 출력하는 데 쓰.. 2024. 5. 1.