CS study (51) 썸네일형 리스트형 [CentOS] 표준 시간대 변경 및 NTP를 사용한 동기화 [Backup posting] 서버 간의 시간을 맞출 때, Network Time Protocol을 사용하여 편리하게 동기화할 수 있다. 리눅스 상에서 표준 시간대를 재설정하고, 동기화하는 명령어를 정리하였다. 1. Timezone 변경 서버의 시간대를 KST 한국 기준으로 변경하려면 다음과 같이 설정하자. sudo timedatectl set-timezone Asia/Seoul 2. NTP(Network Time Protocol) 설치 NTP 프로토콜을 설치하고 적용하여 동기화한다. 1. NTP 서비스 설치 sudo yum install ntp 2. 서비스 시작 sudo systemctl start ntpd 3. 부트 시 NTP 자동 활성화 sudo systemctl enable ntpd 3. NTP .. [디자인 패턴]방문자(visitor) 패턴 설명과 예 설명 방문자 패턴은 알고리즘들을 그들이 작동하는 객체들로부터 분리할 수 있도록 하는 행동 디자인 패턴이다. 방문자(Visitor) 패턴은 객체 지향 디자인 패턴의 하나로, 알고리즘을 객체 구조에서 분리하여, 객체 구조의 클래스를 변경하지 않고도 새로운 연산을 추가할 수 있도록 한다. 이 패턴은 객체 구조 내의 각 요소에 대해 수행할 연산을 별도의 '방문자' 객체에 정의한다. 연산을 추가하는 것이 객체 구조의 클래스들을 변경하는 것보다 훨씬 용이하기 때문이다. 특히, 복잡한 객체 구조를 다룰 때 유용하며, 다양한 연산을 객체 구조에 추가하고자 할 때 활용된다. 내가 직접적으로 느꼈던 직관적인 설명을 서술하자면, "일반적인 로직과 달리 방문자가 로직을 가지고 accept를 통해 파라미터로 받는 방문자 객체에.. [디자인 패턴]어댑터(apdapter) 패턴 설명과 예시 https://refactoring.guru/ko/design-patterns/adapter 어댑터 패턴 / 디자인 패턴들 / 구조 패턴 어댑터 패턴 다음 이름으로도 불립니다: 래퍼(Wrapper), Adapter 의도 어댑터는 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴 refactoring.guru 설명 기존 클래스를 사용하고 싶지만 그 인터페이스가 나머지 코드와 호환되지 않을 때 사용 어댑터 패턴은 구조적 디자인 패턴의 일종으로, 호환되지 않는 인터페이스로 인해 함께 사용할 수 없는 클래스들이 서로 상호 작용할 수 있도록 해준다. 이 패턴은 기존 시스템에 새로운 클래스를 쉽게 통합하고자 할 때 유용하게 사용된다. 어댑터 패턴의 주요 목적은 기능의 재사용과 코드.. [tomcat] catalina.sh (difference between java_opts and catalina_opts) [Backup 240124] 톰캣 내부에 agent 모델을 심을 일이 있었는데, catalina.sh(envset.sh) 안에 코드에서 궁금한 점이 있었다. 1. CATALINA_OPTS 사용 CATALINA_OPTS="$CATALINA_OPTS -javaagent:[scouter agent 경로]/scouter.agent.jar" export CATALINA_OPTS 2. JAVA_OPTS 사용 #Scouter Agent Setting SCOUTER_AGENT_DIR="" COLLECTOR_SERVER_IP="192.168.56.1" export JAVA_OPTS="$JAVA_OPTS -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar" export JAVA_OPT.. [Linux] nohup shell script 실행 불가 [240123 백업] centos nohup 스크립트 실행 불가 문제가 발생했다. 'nohup failed to run command 'java' no such file or directory' 문제. 즉, 자바를 읽지 못하는 문제이다. 문제 상황 1. /etc/progfile에 JAVA_HOME PATH 저장 후 root 계정과 chshin 계정 전부 적용됨을 확인한 상태이다. 두 계정 전부 echo $JAVA_HOME이나, java -version 등을 통해 성공적으로 경로가 등록되었다. 2. root 계정은 ./startup.sh 스크립트가 정상적으로 실행된다 (Scouter). 하지만 chshin의 경우 'nohup: redirecting stderr to stdout nohup: failed t.. [JVM] 실행 엔진(Execution Engine)과 JIT, 인터프리터 참조 : https://inpa.tistory.com/entry/JAVA-%E2%98%95-JVM-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD-%EC%8B%AC%ED%99%94%ED%8E%B8 ☕ JVM 내부 구조 & 메모리 영역 💯 총정리 저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. JVM(자바 가상 머신)은 자바 언 inpa.tistory.com https://coding-factory.tistory.com/828 [Java] 자바 JVM 내부 구조와 메모리 구조에.. [troubleshooting][ClassLoader]동적 클래스로더와 계층 관계 개요와 문제 상황 Instrument API를 사용한 개발 도중, 기본 클래스로더가 아닌, 내가 만든 ClassLoader를 사용하여 동적 클래스를 로드하려고 시도하였다. 이 과정에서 확인차 ForName 등으로 Class 정보를 가져왔는데, 새롭게 얻은 지식을 정리하고자 한다. premain public static void premain(String agentArgs, Instrumentation instrumentation) { Banner.send(agentArgs); //로그 찍기 ConfigRead configRead = new ConfigRead(); //Config Read //CallThread.run(); JMX 쓰레드 생성 및 호출 //새로운 클래스를 생성하는 로직 try { Make.. [JVM]JVM과 ClassLoader 그리고 JIT의 관계 개요 JVM에서 컴파일러에 의해 번역된 Class 바이트코드들은 jar이 빌드되면 '부트스트랩 클래스로더' - '확장 클래스로더' - '시스템 클래스로더'를 읽어가면서 Runtime Area에 메타데이터와 Class 정보들을 저장한다. 이 방식만 보면 Java는 인터프리터라고 할 수 있을 것 같은데 왜 컴파일 방식을 혼합하여 사용한다고 하나? 라는 질문을 보았다. 이에 대해 조사하고, 답변하고자 한다. Java가 인터프리터가 아닌 이유 Java는 "컴파일된 인터프리터 언어"로 종종 설명된다. 이는 Java 프로그램이 바이트코드로 컴파일된 후, Java Virtual Machine(JVM)에서 실행되기 때문이다. Java Virtual Machine(JVM)에서 바이트코드를 처리하는 방식은 실제로 컴파일러.. 이전 1 2 3 4 5 6 7 다음 목록 더보기