Develop 28

[Java] JVM 구조 및 동작원리 - 1

지난번 String Pool 관련하여 작성하면서 JVM 구조와 동작원리에 대해서 궁금해서 조금 찾아본 내용을 글로 줍줍..인데 제목이 1인 이유는 깊게 봐야할 내용이 많아서 이해한 내용 먼저 작성하고 추가적으로 버전 2, 3 .... 을 만들 예정이기 떄문이다. (혹시 틀리거나 모호한 부분, 궁금한 부분이 있다면 댓글 남겨주세요😃) JVM(Java Virtual Machine) JVM이란 Java 언어로 개발한 프로그램을 컴파일하여 바이트코드로 실행시키기 위한 가상머신이다. 왼쪽 그림과 같이 운영체제와 Java Application 사이에 존재하며 개발자가 작성한 Java 코드를 기계어로 번역하는 역할을 한다. 그렇게 때문에 운영체제와 상관없이 JVM 실행 가능한 환경이라면 어디서든 Java 프로그램 실..

Develop/Java 2023.01.03

[Java] 스트링풀(String Pool)

회사 동기가 문자열 비교 중 어떤건 equals를 쓰고 어떤건 ==를 쓰는데 똑같이 동작한다며 뭐가 다른건지 물어봤다. 내가 알기론 문자열에서 == 는 주소값을 비교하며 equals를 사용해야 문자가 실제로 일치하는지 여부를 판단하는 걸로 알고 있다. ==를 사용했음에도 동일하게 동작한 이유는 자바 string의 특징이 immutable하고 객체 선언을 하지 않는다면 String Pool에서 동일한 값을 가져와 사용하는 것으로 알고 있는데 이게 맞는지 확인 겸 다시 찾아봤다. 코드 결과값 비교 문자열 선언 방법에는 2가지가 있다. 문자열을 그대로 선언하는 리터럴 선언 new String()을 사용한 객체 선언 이 두가지의 내용을 코드로 작성하여 ==과 equals가 나타내는 결과값을 확인하면 아래와 같다..

Develop/Java 2022.12.31

[Jenkins] Docker에서 Jenkins 실행하기 - 1

1. Docker Desktop 다운 2. Docker 홈페이지에 있는 Jenkins 이미지 받아오는 명령어 실행 docker pull jenkins/jenkins 3. Jenkins Documents에서 실행 명령어 Documents에서는 여러 명령어가 있는데 그 중 백그라운드에서 실행하는 -d가 포함된 명령어를 사용한다. docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk11 여기에 이름을 지정해주면 편하기 때문에 --name jenkins-server을 추가해준다. docker run -d -v jenkins_home:/var/jenki..

Develop/DevOps 2022.12.20

[Git] Support f or password authentication was removed on Agust 13, 2021. Please use a personal access token instead 에러

AWS에서 git clone을 하다가 다음과 같은 에러를 만났다. 2021년 8월 13일부터 비밀번호로는 보안문제로 로그인이 안된다고 한다. 해결법을 찾아보니 비밀번호 대신 Personal Access Tokens를 만들어서 넣으면 된다고 한다! Github Personal Access Tokens 1. 아래와 같이 Settings>Developer settings>Personal access token에 들어가서 우측 상단에 Generate new token을 눌러준다. 2. 이름과 Token의 기간을 설정해준다. 3. 아래와 같이 필요한 것을 다 선택해준다. 4. Generate token을 눌러서 생성하면 끝! 생성하기를 누른 뒤에 Token이 생성되어 있는 것을 볼 수 있다. 이 페이지에서 나가면..

Develop/Git 2021.09.20

[AWS] Docker 설치 및 MySQL 실행하기/Docker-MySQL-Workbench/permission denied

Docker 아래 명령어 순서대로 도커를 설치해줍니다. 1. 업데이트 sudo apt update 2. 도커 설치 sudo apt update 3. 버전확인 sudo apt update 4. 도커 실행 sudo service docker start ⚠ Got permission denied while trying to connect to the Docker daemon socket 위와 같은 에러가 뜬다면 root 계정이 아닌 계정으로 도커 실행 시에 발생하는 권한 문제라고 한다. 이 에러가 유저 권한을 추가해주고 재실행해주면 된다! 1. 유저 권한 추가 sudo usermod -a -G docker $USER 2. 도커 재실행 sudo service docker restart MySQL 1. MySQL..

Develop/AWS 2021.09.17

[Block Chain] Truffle Framework/개발 환경 구축

로컬 환경에서 Solidity(Smart Contract)를 쉽게 컴파일하고 배포할 수 있는 프레임워크 Truffle Framework 시작하기 1. node.js를 설치합니다. 2. vscode를 설치합니다. (꼭 vscode일 필요는 없습니다!) 3. truffle을 아래 명령어로 설치합니다. npm -g install truffle 4. ganache-cli를 아래 명령어로 설치합니다. npm i ganache-cli 5. init & tutorial ganache-cli -d -m tutorial truffle init truffle init init 후에는 아래 contracts/migrations/test가 나오는데 contracts는 Solidity Contract 디렉토리 migration..

Develop/Block Chain 2021.09.10

[Python] Django 설치 에러/Python 3.5

PyCharm 터미널에 'pip install Django==3.15' 입력 시에 하단과 같은 문제가 발생했다. pip 업그레이드를 해달라기에 해줬지만 똑같은 에러가 발생했다. 그래서 Edit > Setting > Proejct > Project Interpreter에서 설치를 해줬는데 아래와 같은 에러가 발생했다 ㅠㅠ ERROR: Could not find a version that satisfies the requirement Django==3.1.5 구글링 결과 pip에서 특정 기능을 지원 중단하고 업그레이드했는데, 이 업그레이드를 못따라가서 발생한 문제라고 한다. 그래서 터미널 창에 아래 명령어를 작성하여 해결했다. curl https://bootstrap.pypa.io/pip/3.5/get-pi..

Develop/etc 2021.09.01

[AWS] Ubuntu 20.04 LTS/MariaDB 설치/Workbench 연결

1. MariaDB 설치 아래 명령어로 mariadb를 설치해줍니다. sudo apt update sudo apt-get install -y mariadb-server 설치가 완료되면 아래 명령어로 DB에 들어갑니다. sudo mysql MariaDB 10.0 버전부터 sudo 명령어 자체가 root를 인증하므로 mysql -u root -p 보다 위의 명령어를 사용해야한다고 합니다. 물론 쳐도 권한 어쩌구 뭐시깽이로 거절되니까 그냥 위에 명령어로 들어가시면 됩니다. 2. 모든 IP 접속 가능한 계정 생성 먼저, 모든 IP로 접속을 허용할 수 있는 계정을 만들어줍니다. create user '{ID}'@'%' identified by '{PASSWORD}'; grant all privileges on *..

Develop/AWS 2021.08.26

[AWS] Certbot/HTTPS/Spring Boot , Nginx, SSL 요청 및 설치

프로젝트를 하면서 API 요청을 http가 아닌 https로 받아와야 했다. 진짜 멘붕이었는데 다행히 어떤 분이 잘 정리해둔 자료를 보내주셔서 해결할 수 있었다! 최고...👍🏻 우선은 하는 법만 정리해두고 추후에 각 개념들을 정리해봐야겠다. 1. AWS Nginx 설치 sudo apt-get install nginx ps -ef|grep nginx 위의 명령어로 설치해주고 아래 명령어로 nginx가 잘 실행되고 있는지 확인해 준다. 잘 실행 중이라면 아래와 같이 뜰 것이다! ip주소 확인명령어로 자신의 ip 주소를 확인한다. 그럼 X.X.X.X로 나온다! curl ifconfig.me nginx가 잘 깔린 상태로 ip주소를 크롬창에 입력하면 다음과 같은 화면이 뜬다. 2. Spring Boot - Ngi..

Develop/AWS 2021.08.22

[Git]Git Flow/Github Flow/GitLab Flow

Git 브랜칭 전략 ▶ 참고링크 Git-flow 브랜치 필수 master develop 서포트 feature release hotifx 장점 명령어가 있다. 데이터와 IDE에 플로그인으로 존재 단점 브런치가 많아 복잡 안쓰는 브런치 존재 ▶ 배달의 민족 - git flow 사용법 Github-flow 요약 master 브런치에 대한 role만 정확하다면 나머지 브런치들에는 관여 X pull request 기능을 사용하도록 권장 장점 branch 구성 전략이 단순하다. 처음 git에 대해 접하는 사람에게는 좋은 시스템이 되어준다. Github사이트에서 제공해주는 기능을 모두 사용해 작업을 진행하게 도와준다. 코드 리뷰를 자연스럽게 사용할 수 있다. CI가 필수적이며 또한 배포를 자동으로 진행할 수 있다. ..

Develop/Git 2021.07.19