반응형

전체 글 414

[개발관련] @ForceInline 테스트

들어가며Properties.java를 들여다보던 중 Objects의 requiredNonNull 메서드에 붙어있는 @ForceInline 어노테이션을 살펴보게 되었습니다. 메서드 인라인을 강제하는 어노테이션 정도로 이해하였고, 이것이 성능을 위한 조치인 지 잘 이해가 되지 않았습니다. 문의를 해보니 스택트레이스 출력 때문인 것 같다는 의견이 있었습니다. 그래서 검증을 해보고자 테스트해보았습니다.메서드가 인라인화 되어 메서드의 본문이 참조되니까 스택트레이스에는 해당 메서드를 호출한 스택 상위의 메서드까지만 스택 트레이스가 출력될 것으로 예상하였습니다. 문제의 @ForceInline 어노테이션이 붙어있는 requireNonNull 메서드입니다. 1. 어노테이션을 붙이지 않고 예외를 던져 스택 트레이스를 확인..

개발/개발 2024.07.03

[개발관련] JAVA_ IPv4 String to Int 변환 (2의 보수, 비트 연산)

들어가며네트워크 스캔 기능이 필요하여, DB에 저장된 특정 네트워크("192.168.0.0/24"), 또는 IP 범위("192.168.0.34/24~192.168.0.100/24") 내의 Host IP 문자열 리스트를 반환하는 간단한 메서드를 만들어 보았습니다. 만들면서 비트 연산자, 2의 보수 등도 복습하게 되어 함께 정리합니다. 목표1) 특정 네트워크 내의 모든 Host IP의 List 을 반환하는 메서드 만들기2) IP 범위 내의 모든 Host IP의 List 을 반환하는 메서드 만들기 IPv4 주소와 Java의 intIPv4주소는 32bit로 표현합니다. 따라서 2³²개인 총 4,294,967,296 개의 IPv4 주소가 존재합니다.  이는 Java의 4byte 정수형인 int로 표현할 수 있는 ..

개발/개발 2024.06.22

[개발관련] Docker_ MariaDB Container 만들기

들어가며Database(MariaDB)가 필요할 때 다음과 같은 절차로 서버에 직접 설치하곤 하였습니다.1) MariaDB설치 (패키지매니저 설치, 오프라인 환경에서는 준비한 RPM으로 설치)2) my.cnf세팅3) 데이터디렉터리 변경4) 데이터베이스 생성5) 유저생성6) 스키마 및 코드데이터 세팅만약 설치한 데이터데이스를 다른 서버에 옮겨야 한다거나, 여러 대의 서버에 위의 작업을 반복한다고 하면 귀찮고 힘든 작업이 될 것입니다. 목표MariaDB 설정, 유저 및 데이터 베이스 생성, 스키마 및 코드데이터가 세팅된 도커 이미지를 만들어보겠습니다. 이 이미지의 컨테이너를 가동하기만 하면 서버에 직접 MariaDB를 설치할 때의 번거로운 절차가 한 번에 해결됩니다.  Dockerfile아래와 같이 도커파일..

개발/개발 2024.06.01

[개발관련] JAVA_ SLF4J와 Logback에 대한 이해(+ServiceLoader)

들어가며실무에서 로그의 중요성을 체감하고 있습니다. 이번에 개발한 스케줄러에 예외 및 로깅을 보완하는 김에 로그의 기본적인 개념과 Java진영의 로그 라이브러리인 SLF4J, 그리고 LogBack 대하여 알아보았습니다. 로그(Log)의 의미과거 항해일지 등을 통나무(Log)에 기록한 것에서 유래하여 기록하는 것을 로그라고 칭한다고 합니다.개발 분야에서는 시스템이나 애플리케이션 등이 남긴 기록을 로그라고 부릅니다. 로그는 문제 해결의 단서가 되기 때문에 트러블 슈팅을 할 때 로그를 잘 보는 것과 개발을 할 때 로그를 잘 남기는 것이 굉장히 중요합니다.로그의 예로는 OS에서 기록하는 Syslog, Apache Tomcat이 기록하는 catalina.out 등이 있습니다. 그리고 이클립스나 인텔리제이 IDE에..

개발/개발 2024.05.24

[개발관련]JAVA_ Getter/Setter vs Field Direct Access 비교

회사에서 필드의 접근제한자를 private 가 아닌 public으로 사용하고, Getter/Setter 없이 직접 필드에 접근하여 연산처리하는 소스를 만났다. 아무래도 Getter/Setter 메서드를 호출할 때마다 Call Stack에 메서드가 쌓였다가 사라질 테니 필드에 직접 접근하여 연산하는 것보다 성능이 좋지 않을 것이라고 생각했다. 하지만, 은닉, 캡슐화를 위반하는 듯하여 이를 Getter/Setter로 변경하였을 때 성능이 얼마나 안 좋아질지 시간을 측정해보고자 하였다. 대략 간단하게 필드 직접 접근 10억번 반복 vs Getter/Setter 10억 번 반복을 비교해 보았다.package practice; public class GetterDirect { public static void m..

개발/개발 2024.05.17

[개발관련] firewall-cmd, zone, service

보안 조치 때문에 firewall-cmd 명령어를 이것 저것 사용해보고 있다.목적은 기본적으로 모든 인바운드를 드랍하고 특정IP:특정서비스(port)만 허용하는 것.TCPWrapper인 경우 /etc/hosts.allow, /etc/hosts.deny 파일을 편집하여 설정하라고 하는데, Rocky8버전인지라 firewall-cmd 를 이용하여 ACL(Access Control List, 접근제어리스트) 을 설정해주어야 한다.firewall-cmd 를 사용해보면서 조금 알게된 부분을 기록한다.[이해]1. zone: 방화벽 정책 그룹 정도로 이해. public, dmz, drop, internal, external, home 등이 있다. NIC에 매핑할 수 있다. -> 공용 네트워크에서 갖추어야 할 보안 정..

개발/개발 2024.05.06

[개발관련] Rocky8 비밀번호 5회 틀림 잠김 처리 (authselect, pam.d, faillock)

리눅스 보안 조치 중 비밀번호를 5회 이상 틀릴 경우 해당 계정이 잠기도록 설정할 일이 생겼다.이해 -> 조치 -> 실패 -> 다른 조치 -> 성공의 과정을 겪었다.결론은 rocky8 버전에서 직접 pam.d 디렉터리 하위의  파일을 수정하였을 때 제대로 동작하지 않았다.authselect를 이용하여 faillock 모듈을 enable 처리하고, faillock 모듈의 설정을 /etc/security/faillock.conf 에서 세팅해 주면 그대로 동작하게 된다.직접 설정 파일을 변경해주던 것에서 점점 전용 명령어(인터페이스)를 사용하게 되는 것 같다. EX) network-script -> nmcli 이해아래의 글을 보고 리눅스 PAM 모듈에 대해 이해하였다.출처:이글루 Security Issue리눅..

개발/개발 2024.05.04

[개발관련] RTSP 응답 확인 중 3WHS ( tcpdump )

rtsp가 잘 되는지 확인하고자 tcpdump 를 켜두고 curl 요청을 날려보았다. rtsp 도 tcp 기반이었는지 seq, ack 같은 정보가 보인다. 3WHS 과정으로 보인다. tcpdump 를 이용하여 3WHS, 4WHS, SSL HS 등을 볼 수 있는 기회다. (터미널 2개 열고 아래 명령어) tcpdump -i any -nn -X port 554 curl -v rtsp://172.20.123.51:554 Flags[S] : Sync Flags[S.] : Sync+Ack Flags[.] : Ack RTSP 되는거 안되는거 차이

개발/개발 2024.04.19
반응형