본문 바로가기

분류 전체보기

(50)
자바 멀티 스레드 프로그래밍 기본적으로 자주 사용하는 스프링도 멀티 스레드 프로그램이다. 멀티 스레드와 싱글 스레드의 성능의 차이를 테스트 해볼 예정입니다.자바에서 멀티 스레드 환경 프로그래밍을 하기 위해 Thread클래스와,  Runable 인터페이스가 존재합니다.Runable 인터페이스 같은 경우 다른 클래스를 상속받을 수 있기 때문에 상속이 필요한 경우 사용합니다. 테스트에 사용할 로직은 단순한 소수 개수를 구하는 로직입니다.싱글 스레드 환경 테스트 로직package Thread;public class SingleThread { public static void main(String[] args) { SingleThread main = new SingleThread(); long startTime = System.curr..
Java float와 double의 부동소수점 연산 차이 프로그래밍 세계에서 1.1 + 0.1 == 1.2 가 참이지 않고 거짓이다.부동소수점 연산 문제 때문에 거짓이 나오게 됩니다.여기까지는 기존에 알고있던 이야기 였는데 float 자료형일때는 부동소수점 문제가 해결? 된 것 처럼보였다.나는 false가 나올 것을 기대하고 연산을 해봤는데 true가 나왔고 부동 소수점 문제가 발생하지 않았다다른 부동 소수점 연산을 해봐도 동일한 현상을 보여줬다.float자료형보다 double 자료형이 더 큰 수를 표현 할 수 있어서 정확도가 더 높은 지 알고 있었는데 예상 외의 결과가 나타났다. 왜그런지 아시는 분 답글 달아주시면 감사하겠습니다!!이유를 알게되는대로 수정하도록 하겠습니다.
C언어 '언젠간 c언어를 쓸일이나 활용할 일이 존재하지 않을까?' 라는 마음에서 c언어를 공부를 시작해보았다. 다른 언어들 예를 들어 Java,Javascript,Python과 같은 언어들이 얼마나 많은 일을 뒤쪽에서 해주고 있는지를 알 수 있었다. 다른 비교적 최근에 나온 언어들에서는 한줄이면 가능 한 것을 c언어에서는 여러줄을 사용해서 구현을 해 줘야한다. 자료구조 또한 표준 라이브러리는 존재하지 않으며 필요할 경우 구현해서 사용하여야 한다. 기본적인 문법에서 c언어와 다른 언어들의 차이점 1. 문자열이 존재하지 않는다 문자열을 저장할때 char타입의 배열에 저장이 되게 된다. int main() { char str[11] = "hello world"; printf("%s",str); return 0; } ..
스프링은 신이고 나는 x신이다. 처음 스프링을 공부할때는 못 느껴봤던 것이었지만 다시 스프링을 보니 이해가 안되는 것이 있었다. "스프링은 어떻게 인터페이스를 객체처럼 사용하는 것인가?" 인터페이스를 활용해서 추상화된 Service 레이어를 사용하는데 어떻게 컨트롤러 단에서 서비스를 호출 할 수 있었던 것인가? 예시를 보자 Controller @RestController public class Controller { @Autowired private Service service; @GetMapping("/") public ResponseEntity Main() throws Exception { String data = service.main(); return ResponseEntity.status(HttpStatus.OK).body(d..
직접 구현하면서 배우는 http 프로토콜 전체 코드 const PORT = 8080; const IP = "localhost"; const net = require('node:net'); //tcp 연결 요청 const client = net.createConnection(PORT, IP, () => { // GET 메소드 client.write('GET /test HTTP/1.1\r\nHost: localhost:8080\r\nConnection: keep-alive\r\n\r\n'); // POST 메소드 client.write('POST /test HTTP/1.1\r\nHost: localhost:8080\r\nContent-Type: application/json\r\nContent-Length: 14\r\n\r\n{"test":"tes..
database mariadb replication 구축 database mariadb 단방향 replication구축을 해볼예정입니다. docker container run -e MARIADB_ROOT_PASSWORD=1234 --name master -d -p 3308:3306 mariadb docker container run -e MARIADB_ROOT_PASSWORD=1234 --name slave -d -p 3309:3306 mariadb vi editor 설치 docker exec -it master /bin/bash apt update apt install -y vim vi /etc/mysql/my.cnf 에 값 추가 [mysqld] log-bin = mysql-bin expire_logs_days = 2 server_id = 1 적용 확인 lo..
서버 이중화 테스트 환경 구축 로컬에서 docker를 통해 테스트 환경 구축 docker-compose.yaml version: '3.3' services: loadbalancer: image: sihyun2/proxy_server ports: - 80:80 - 81:81 working_dir: /etc/haproxy entrypoint: ["/bin/bash","-c"] command: - haproxy -f haproxy.cfg && tail -f /dev/null networks: staticip: ipv4_address: 172.19.0.2 webserver1: image: sihyun2/php-server volumes: - /c/Project/docker/admin:/var/www/html/admin - /c/Project..
Docker를 통해 php + apache 개발 환경 구축 Base image로는 Rockeylinux 9.2 버전을 사용했습니다. docker container run -d -p 80:80 -p 81:81 rockylinux:9.2 sleep infinity yum update 밑 php설치 yum update -y yum install -y php php-common php-opcache php-cli php-gd php-curl php-mysqlnd php-mysqli php-json php-dom php-xml 보통 systemctl명령어를 통해서 아파치(httpd)를 사용하는데 docker는 기본적으로 사용이 불가능 합니다. 아파치 실행 /usr/sbin/httpd 파일 생성 vi /var/www/html/index.php 아파치 컨프 파일 수정 vi ..