언어

· 언어/java
작성 계기우리는 자바를 배울 때 javac로 컴파일 하고 java 파일로 실행하는 단계를 먼저 배운다우리가 처음 배울 때 고생했던 Java 프로퍼티가 왜 사용되는거고, Java에서 이를 어떻게 인식해서 사용하는걸까?또한, Java라는 언어는 OS 독립적으로 사용될 수 있다고 하는데, 어떻게 그게 가능한걸까?이러한 근복적인 시스템 프로그래밍적인 질문이 문득 머릿속을 지나치게 되었고 어쩌면 다른 오픈소스 라이브러리들보다 먼저 분석했어야할 Open JDK 라이브러리 내에서 JVM이 어떻게 동작하는지에 대한 분석을 시작하게 되었다 방대한 JDK 중에 무엇을 알아볼 것인가?우리가 Java 파일을 실행할 때, JVM이 어떻게 이를 인식하는지 실행흐름을 대략적으로 살펴보려한다소제목에서 말했듯이 JDK 자체가 너무 방..
· 언어/GO
context.Context작업을 취소하고, 타임아웃을 설정하며, 값들을 전달하는 기능을 제공하는 표준 인터페이스고루틴 간의 작업을 관리하고 조정하는 데 사용된다주요 기능취소 신호 전파:작업을 취소할 수 있는 기능을 제공하여, 하나의 작업이 취소되면 관련된 모든 작업이 취소될 수 있다.타임아웃 설정:작업의 최대 실행 시간을 지정하여, 지정된 시간이 초과되면 자동으로 작업을 종료한다값 저장 및 전달:컨텍스트를 통해 값들을 저장하고, 이를 다른 함수나 고루틴에서 사용할 수 있다주요 메서드Done(): 컨텍스트가 취소될 때 닫히는 채널을 반환한다Err(): 컨텍스트가 취소된 이유를 반환한다Deadline(): 컨텍스트가 작업을 완료해야 하는 시한을 반환한다Value(key interface{}): 컨텍스트에 ..
· 언어/GO
고루틴(goroutine)Go 언어에서 제공하는 경량 스레드동시성과 병행성을 쉽게 구현할 수 있도록 설계된 기능으로, Go 언어의 주요 특징 중 하나운영 체제의 스레드보다 훨씬 가볍고, 더 적은 메모리로 많은 고루틴을 실행할 수 있다.고루틴의 초기 스택 크기작은 초기 스택 크기: Go 1.4 이후의 고루틴은 약 2KB의 초기 스택 크기를 가지고 시작한다.스택 크기 조절: 고루틴이 더 많은 스택 공간을 필요로 하면 자동으로 스택이 확장되며, 필요하지 않으면 축소한다.사용자 수준 스케줄링M스케줄링 모델 : Go 런타임은 많은 수의 고루틴을 소수의 운영 체제 스레드에 매핑하는 M스케줄링 모델을 사용한다경량 컨텍스트 스위칭: 고루틴 간의 컨텍스트 스위칭은 운영 체제의 스레드 간 컨텍스트 스위칭보다 훨씬 가볍다...
· 언어/GO
Java와의 차이점Java의 참조 타입과 값 타입Java에는 원시 타입(primitive type)과 참조 타입(reference type) 존재모든 객체는 참조 타입이며, 메서드 호출 시 객체를 참조로 전달한다Java의 객체는 명시적으로 포인터를 사용할 필요가 없다. 모든 객체 변수는 자동으로 참조 타입으로 동작한다Go값 타입과 포인터 타입값 타입은 변수의 값을 직접 저장하고, 포인터 타입은 변수의 주소를 저장한다포인터 타입은 메모리의 특정 위치를 가리키며, 이를 통해 원본 데이터를 수정할 수 있다Go에서 포인터 타입의 사용 예원본 데이터 수정포인터를 사용하면 함수나 메서드에서 원본 데이터를 수정할 수 있다값 타입을 사용하면 데이터의 복사본을 전달하므로 원본 데이터는 수정되지 않는다메모리 사용 효율큰 ..
AWS 생성 및 접속 방법 AWS EC2 생성 및 접속 AWS 인스턴스 생성 기본 설정 위 사진의 순서에 맞게 서버의 이름 / OS / AMI를 선택한다 개인적인 프로젝트라면 3 번 항목을 참고하여 프리티어로 사용해야 과금이 덜 나가게 된다 키 페어 생성 [키 iron-jin.tistory.com Github Push 전 점검 사항 package 목록 뽑아서 txt 파일로 만들어준다 명령어 ) pip3 fressze >> packages.txt 생성 된 파일 정보 pip로 install했던 라이브러리 정보들이 생성된다. Github 연동 및 받기 Repository 생성 및 커밋 Github에 Repository를 생성하고, 프로젝트를 Push한다. 해당 내용에 대한 추가 글 작성 필요 EC2에 접속하여..
UWSGI는 왜 필요할까? - Django는 Web Application Server가 아닌 Web Server Framework - 배포 관련은 이전 글 참고 [Python Djnango] - AWS EC2 기반 배포 AWS 생성 및 접속 방법 AWS EC2 생성 및 접속 AWS 인스턴스 생성 기본 설정 위 사진의 순서에 맞게 서버의 이름 / OS / AMI를 선택한다 개인적인 프로젝트라면 3 번 항목을 참고하여 프리티어로 사용해 iron-jin.tistory.com UWSGI 설치 설치 명령어 ) pip3 install uwgi CLI를 통한 실행 CLI 명령어 uwsgi --http :[포트 번호] --home [가상 환경 루트] --chdir [프로젝트 경로] -w [wsgi 모듈] 포트 번호: ..
1. Python 설치 https://www.python.org/ 3.x 버전 사용 2. 가상환경 설정 설정하는 이유 pip로 설치한 패키지들은 파이썬 설치 폴더 안에 저장된다 이는 결국 모든 파이썬 프로젝트에서 사용할 수 있다는 의미 단점은, 프로젝트 이식성이 떨어진다 프로젝트마다 파이썬 버전이 다를 경우 패키지 버전에 대해 호환이 안 될수도 있다 설정 방법 python3 -m venv {myenv} source {myenv}/bin/activate 3. Django 설치 pip3 install django django-admin startproject {projectName} 4. Django 실행 python3 manage.py runserver
· 언어/java
특징 인터페이스 기반으로 만들기 때문에 인터페이스가 필수 런타임에 동적으로 프록시 객체를 만들어줌 사용 예시 public static void main(String[] args) { TestInterface ref = (TestInterface) Proxy.newProxyInstance( TestInterface.class.getClassLoader(), new Class[]{TestInterface.class}, handler); ref.call(); } } Proxy.newProxyInstance 동적 프록시 생성 함수 인자 값 프록시 인터페이스의 클래스 로더 인터페이스 클래스에 대한 배열 입력 프록시 동작을 수행하기 위한 InvocationHandler 인터페이스만으로 프록시를 사용할 수 있을까? ..
iron_jin
'언어' 카테고리의 글 목록