본문 바로가기

개발자 일지120

멀티쓰레드환경,동시성제어 | AtomicInteger 활용하기 멀티쓰레드 환경에서 공유 리소스에 대한 동시성 제어가 필요한 예제를 알아본다. sychronized 등을 통한 동시성제어가 아니라 AtomicXXX 클래스(AtomicIntger)를 통해 동시성제어를 구현해본다. 1.멀티쓰레드 환경에서 item 리소스(공유변수)에 동시에 접근할 때 멀티쓰레드환경에서 2개 이상의 쓰레드가 item 변수에 동시에 접근하여 증가, 감소를 실행할 때 예제를 통해 상황을 구현한다. increase()를 1000번 실행시키고 decrease()를 1000번 실행시키면 item값은 0이 되어야 한다. 그러나 멀티쓰레드 환경에서는 결과가 다르게 나올 수 있기 때문에 동시성 제어가 필요하다. 일반적으로 synchronized 키워드를 메소드에 붙여주거나 임계영역(Critical Sect.. 2023. 10. 14.
모두의 네트워크 정리 PART3 - 모두의 네트워크를 읽고 전반적인 정리 및 요약을 한다.- 이전 포스팅 PART1, PART2는 아래 링크 확인!   모두의 네트워크 정리 PART1- 모두의 네트워크를 읽고 전반적인 정리 및 요약을 한다.- 간단한 책 리뷰는 여기1.네트워크 첫 걸음네트워크는 2대 이상 연결되면 네트워크다. 인터넷은 거대한 네트워크다.네트워크를 통해 전roadofdevelopment.tistory.com   모두의 네트워크 정리 PART2- 모두의 네트워크를 읽고 전반적인 정리 및 요약을 한다.- PART1은 아래 링크 확인! https://roadofdevelopment.tistory.com/102 모두의 네트워크 정리 PART1- 모두의 네트워크를 읽고 전반적인 정리 및 요약을roadofdevelopment.tis.. 2023. 7. 9.
모두의 네트워크 정리 PART2 - 모두의 네트워크를 읽고 전반적인 정리 및 요약을 한다.- PART1은 아래 링크 확인!   모두의 네트워크 정리 PART1- 모두의 네트워크를 읽고 전반적인 정리 및 요약을 한다.- 간단한 책 리뷰는 여기1.네트워크 첫 걸음네트워크는 2대 이상 연결되면 네트워크다. 인터넷은 거대한 네트워크다.네트워크를 통해 전roadofdevelopment.tistory.com 3.물리 계층 : 데이터를 전기 신호로 변환하기데이터를 송수신할 때 0과 1을 전기신호로 변환해야 한다.전기신호에는 아날로그 신호와 디지털 신호가 있다.송신측에서 0과 1의 집합을 전기신호로 변환해서 전송 하고, 수신측에서 전기신호를 0과 1의 집합으로 복원한다.컴퓨터는 네트워크 통해 송수신을 할 수 있도록 랜카드가 있다. 랜카드가 전기신호로.. 2023. 7. 1.
모두의 네트워크 정리 PART1 - 모두의 네트워크를 읽고 전반적인 정리 및 요약을 한다.- 간단한 책 리뷰는 여기1.네트워크 첫 걸음네트워크는 2대 이상 연결되면 네트워크다. 인터넷은 거대한 네트워크다.네트워크를 통해 전달되는 데이터의 작은 조각을 패킷이라고 한다.데이터를 굳이 쪼개서 패킷으로 보내는 이유는 네트워크 대역폭을 너무 많이 차지해 흐름을 방해할 수도 있기 때문이다.패킷들은 송신시 차례대로 안 가기 때문에 패킷에 번호를 붙여 보낸다. 번호에 맞춰 수신측에서 정렬하면 원데이터로 나타낼 수 있다.0과 1의 정보를 나타내는 최소단위를 비트(bit)라고 한다.비트 8개는 바이트다.(8비트=1바이트)컴퓨터는 기본적으로 바이트 단위로 읽고 쓴다.0과 1만 다루는 컴퓨터에서 키보드로 문자를 어떻게 입력할까?숫자와 문자 대응표를 미리 만.. 2023. 7. 1.
[리뷰] 모두의 네트워크 네트워크 기초 서적 모두의 네트워크를 간단하게 리뷰해보려고 한다.   1.책 리뷰 개발자인데 네트워크 공부는 항상 우선순위에 밀렸었다. SI였던 전 회사에서도 사실 네트워크에 대해 심도있게 알 필요도 없었는데 지금 회사에서는 어느정도 네트워크에 대해 알 필요성을 많이 느낀다. 최근에 라우팅 테이블 관련 이슈가 실제로 개발쪽에 영향을 주었는데, 이런 용어들도 낯설고 전반적으로 네트워크의 흐름을 단순히 이해하는 정도가 아니라 상식 수준으로는 알고 있어야겠다는 생각이 많이 들었다. 개인적으로 네트워크는 블로그나 영상 등을 통해 공부했는데, 블로그나 동영상 강의 등은 단점이 머리에 금방 휘발된다는것이다. 아무래도 네트워크에는 시간을 많이 투자하지 않고 짬내서 공부해야지~라는 안일한(?) 생각을 하다보니 쉽게 휘.. 2023. 6. 29.
[C언어]C언어 학습 하려는 이유, c언어 기초 개념 등 -c언어를 학습하려는 이유를 고민한다. -c언어의 기초개념들을 간단하게 정리해본다. 1.C언어 학습 이유 별게 아니라 그냥 궁금한 이유가 제일 크다. 가끔 커뮤니티의 'C언어를 꼭 배워야 하는 이유' 같은 글들이 호기심을 자극한다. 대부분이 굳이 배울 필요 없다이며 특히 지금 자바,스프링을 사용하여 4년 내외로 일을 하고 있으니 더욱 내가 배워야 할 이유가 없는듯하다. 그럼에도 불구하고 이유를 찾아보자면.. 가끔 C언어로 설명하는 글들을 조금이라도 이해하고 싶다 도대체 왜 필요한지, 필요하지 않은지 내가 직접 체험해봐야 속이 후련할듯하다 가끔 실무와 동떨어진 언어공부로 간헐적인 지루함을 달래본다(더 지루해질 수도 있음) 메모리 구조를 이해하는데 좋다고 하는데 1시간 공부해봐서는 잘 모르겠다 프로그래밍 공.. 2023. 4. 7.
Vmware로 리눅스 서버 및 tomcat 설치하기 - Vmware를 사용하여 리눅스 서버를 생성해본다. - Centos7을 설치한다. - apache-tomcat을 설치하여 접속테스트까지 해본다. 잘 설명된 블로그들을 통해 웹서버를 VMware로 구축해보았다. 아래 블로그를 주로 참고하였다. https://nullgoyatten.tistory.com/5 VMware로 CentOS7에 톰캣(tomcat) 서버 구축하기 서버 구축 개요 서버를 만들어 보자 모름지기 서버란 결국 컴퓨터다 서버를 구축하려면 컴퓨터가 필요한데 구매를 하기엔 비용적으로나 공간적으로나 낭비가 크다 따라서 많은 개발자들이 가 nullgoyatten.tistory.com 1.Vmware 설치 버추얼박스로 쓰다가 VMware 써보니 설정 등이 더 간단하고 안 막히는 것 같다. 공식사이트에.. 2023. 2. 5.
[인프런 JPA]자바 ORM 표준 JPA 프로그래밍 정리2 -인프런 김영한님 JPA 강의를 듣고 정리한다. -값타입과 객체지향쿼리언어(JPQL) 파트를 정리한다. -이미지 출처는 인프런 강의 자료를 참고하였다. -가물가물한 상태에서 재정리하고 있는 상태라서 중간중간 틀린 개념이나 어설픈 설명이 많을 수 있다.9.값 타입1.기본 값 타입 JPA의 데이터타입 분류는 크게 엔티티 타입, 값 타입이 있다. 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속 추적 가능 값 타입 1)기본값타입 자바기본타입(int, double) : 생명주기를 엔티티 수명에 의존 / 공유하면 안 됨 / 기본타입은 항상 값을 복사 래퍼 크래스(Integer, Long) : 클래스라 공유가 되지만 변경 안 됨(사이드이팩트 방지) 2)임베디드 타입(embedded type,.. 2023. 1. 31.
[인프런 JPA]자바 ORM 표준 JPA 프로그래밍 정리1 -인프런 김영한님 JPA 강의를 듣고 정리한다. -이미지 출처는 인프런 강의 자료를 참고하였다. -가물가물한 상태에서 재정리하고 있는 상태라서 중간중간 틀린 개념이나 어설픈 설명이 많을 수 있다. 1.JPA 소개 1.JPA 소개 JPA의 특징들은 다음과 같다. JPA는 자바애플리케이션과 JDBC API 사이에서의 역할을 해줌 JPA가 JDBC API를 사용하여 DB에 접근 쿼리를 JPA가 만들어줌 JPA는 패러다임 불일치를 해결해 줌. 자바는 객체지향적이고 DB는 데이터중심적이기 때문에 패러다임이 다른데 이 부분을 어느정도 해결해줌 2.JPA 시작하기 1.프로젝트 생성 및 애플리케이션 개발 예제 진행하며 개념들을 간단하게 정리한다. 1)EntityManagerFactory 해당 객체는 EntityMana.. 2023. 1. 28.
[개인학습]스프링부트 + Swagger + JPA + MySQL 설정 및 테스트 - SpringBoot 2.7.4 + Swagger2 + JPA 하이버네이트 + MySQL8 설정으로 Swagger 테스트와 JPA 테스트를 진행한다. - 빌드툴은 Maven, IDE는 인텔리제이를 사용한다. - Lombok도 사용한다. - 코드는 깃허브에서 관리한다.(https://github.com/coderahn/swagger-demo) 1.Intro 1.Swagger? API들이 갖고 있는 스펙을 관리할 수 있는 프로젝트/문서 프레임워크이다. API별 관리 및 테스트를 각각 하면 번거롭고 관리도 어렵다. 컨트롤러에 명시된 어노테이션을 붙여서 Swagger-ui 화면을 통해 관리 가능하다. 2.JPA(Java Persistence API)? JPA는 자바진영의 ORM 기술 표준 인터페이스 모음이다... 2022. 10. 10.
[TIL]아파치, 톰캣, 리눅스 등 잡다한 개인정리 - 업무 시간에 들은 키워드 관련 및 다 까먹어서 이것저것 찾아보고 다시 뇌에 넣기 위한 정리 등을 한다. 1.Swap Memory 리눅스 시스템에서 실제 메모리가 가득 찬 경우, 더 많은 메모리가 필요하다면 디스크 공간(가상메모리)으로 대처한 메모리를 말한다. 하드디스크를 이용하기 때문에 속도가 떨어지며 안정성 목적으로 둔다. 위에처럼 스왑파티션 확인은 free -m으로 한다. 스왑메모리는 파일로도 존재할 수 있는데 swapon -s로 확인 가능하다. 아무것도 안 나오면 파일도 없는 것이다. 2.리눅스 관련 기타 - ll : ls -l의 축약어. ls는 현재 위치나 특정 경로에서 디렉토리 내용을 리스트로 출력. -l(long)은 옵션. ll은 기본적으로 alias 등록되어 있으나 안 되어 있는 경우도 .. 2022. 10. 1.
[인프런 김영한 로드맵3]모든 개발자를 위한 HTTP 웹 기본 지식3 - 김영한님의 인프런강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 학습하고 정리한 내용이다.- HTTP 웹 기본 지식과 관련된 내용을 학습힌다.- 모든 내용 및 이미지 출처는 인프런 및 김영한님에게 있습니다.- 이전 글은 아래 링크를 클릭해주세요.  [인프런 김영한 로드맵3]모든 개발자를 위한 HTTP 웹 기본 지식2- 김영한님의 인프런강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 학습하고 정리한 내용이다.- HTTP 웹 기본 지식과 관련된 내용을 학습힌다.- 모든 내용 및 이미지 출처는 인프런 및 김영한님에roadofdevelopment.tistory.com 8.HTTP헤더2 - 캐시와 조건부 요청 1.캐시 기본 동작 캐시가 적용되는 흐름은 다음과 같은 예시가 있다. 이미지파일을 요청하고.. 2022. 9. 1.
[인프런 김영한 로드맵3]모든 개발자를 위한 HTTP 웹 기본 지식2 - 김영한님의 인프런강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 학습하고 정리한 내용이다.- HTTP 웹 기본 지식과 관련된 내용을 학습힌다.- 모든 내용 및 이미지 출처는 인프런 및 김영한님에게 있습니다.- 이전 글은 아래에 링크를 클릭해주세요.  [인프런 김영한 로드맵3]모든 개발자를 위한 HTTP 웹 기본 지식1- 김영한님의 인프런강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 학습하고 정리한 내용이다. - HTTP 웹 기본 지식과 관련된 내용을 학습힌다. - 모든 내용 및 이미지 출처는 인프런 및 김영한님roadofdevelopment.tistory.com  6.HTTP 상태코드 1)HTTP 상태코드 소개 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다.1xx(Inf.. 2022. 8. 24.
[인프런 김영한 로드맵3]모든 개발자를 위한 HTTP 웹 기본 지식1 - 김영한님의 인프런강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 학습하고 정리한 내용이다. - HTTP 웹 기본 지식과 관련된 내용을 학습힌다. - 모든 내용 및 이미지 출처는 인프런 및 김영한님에게 있습니다. 1.인터넷 네트워크 인터넷에서 클라이언트와 서버는 서로 통신 함 보내는 쪽(클라이언트)은 서버 정보를 알아야 보낼 수 있음 -> IP IP를 통해 데이터 전달 패킷이라는 통신단위로 데이터 전달 IP패킷에는 출발지IP, 도착지IP, 기타정보로 구성 클라이언트가 도착지IP에 패킷 전달하면 서버는 출발지IP를 확인 후 OK 응답 등을 보냄 IP 프로토콜의 한계 1)비연결성 : 패킷 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 2)비신뢰성 : 중간에 패킷이 사라지거나 패킷 순서가 변경되는.. 2022. 8. 22.
[TIL]토이프로젝트 진행 학습내용 정리 - 학습용 토이프로젝트 진행하며 알게된 점이나 어설프게 알았던 점 등을 정리해둔다. 1.토이프로젝트 시작 단계에서 흐지부지 되지 않기 위한 방어책 토이프로젝트를 시작하는 것은 쉽지 않은 것 같다(적어도 나는). 서비스를 만들려면 DB, 도메인 설계를 하고 어떤 기술을 사용할지 정하고 서비스 스토리보드를 만들어 퍼블구성을 하고..그러기 위해서 보통 팀단위로 많이 하기도 하는 것 같다. 내가 토이프로젝트를 시작하기 어려웠던 점은 위의 설계 단계가 너무 힘들었기 때문이다. 사실 코딩하고 직접 설정 만지면서 실습은 재밌지만, 설계 단계를 하다보면 이게 맞는지 틀린지도 잘 모르겠고 하다보니 질질 시간이 끌리고 흐지부지하게 된다. 이런 적이 몇 번 있었다. 인프런의 김영한 강사님이 학자형 개발자와 야생형 개발자가 .. 2022. 8. 15.
watch를 통해 객체 중첩 값 변경 감지하기 - watch 속성 기능에 대해 살펴본다. - 일반적으로 watch는 객체 내부 데이터 변경 감지를 할 수 없는데, 이를 해결하는 방법을 알아본다. 1.watch Vue.js에서 데이터를 감지할 때 watch 속성을 사용한다. 특정 프로퍼티가 변경될 때 지정한 콜백함수가 실행되는 기능이다. computed랑 비슷하다. 둘을 혼동하는 경우가 많아서 블로그에 찾아봤는데, https://blog.jeongwoo.in/vue-js-watch%EC%99%80-computed-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95-e2edce37ec34 [Vue.js] watch와 computed 의 차이와 사용법 Vue.js에서 computed 프로퍼.. 2022. 8. 12.
[토이프로젝트]토이플젝 시작 이야기 + @pathVariable 한글 깨짐 - 토이프로젝트 관련 잡담을 한다. - 컨트롤러 @PathVariable 한글 깨짐을 처리한다. 1.토이프로젝트(학습프로젝트) 시작 그냥 토이프로젝트라기보다 학습프로젝트가 더 맞겠다. 그냥 네이버 영화 API로 내 영화 리뷰 관리하는 애플리케이션을 만들어보고 있다. - springframework 4.2.4 - java 1.8 - vue2 - bootstrap 회사 프로젝트가 레거시에서 신기술들로 넘어가는 약간 과도기적 레거시(?)다. 아직 업무에 최적화가 안 되어서 일하는데에 에너지를 많이 쏟고 있다. 일단 업무효율을 높이는 것이 단기적, 1차적 목표기 때문에 토이프로젝트도 과도기적 레거시 모드(스프링 MVC, JSP + vue.js)로 설정해서 하고 있는데 상당한 판단 미스같다. 일단 이걸 ver1로.. 2022. 8. 2.
[인프런 김영한 로드맵4]스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(7) -스프링 MVC를 활용한 간단한 웹페이지를 만들어본다. -요구사항 분석 후 알맞은 도메인, HTML, 서비스 로직 등을 개발한다. -모든 소스는 깃허브에서 관리한다.(https://github.com/coderahn/Spring-Lecture4_Item-Service) 7.스프링 MVC - 웹 페이지 만들기 1.프로젝트 생성 우선 프로젝트를 다음과 같이 생성한다.(https://start.spring.io/) 2.요구사항 분석 핵심 요구사항은 상품을 관리할 수 있는 서비스다. 상품도메인 모델은 다음과 같다. 상품ID, 상품명, 가격, 수량 관련된 기능은 다음과 같다. 상품목록, 상품상세, 상품등록, 상품수정 서비스 흐름은 다음과 같다. 클라이언트(사용자)는 상품 목록을 조회한다. 상품 등록 클릭시, 상품.. 2022. 7. 3.
[회고]2022년 상반기 회고 - 2022 상반기 회고를 한다. 1.들어가기 회고라는 것을 쓰는 것은 상당히 부끄러운 것 같다. 뭔가 공개된 곳에 내 히스토리를 적는게 INFJ인 나에게 있어서 상당히 부담이기도 했고, 뭔가 인스타그램마냥 보여주기에 치중이 된 개발자들의 문화같았다. 그래서 구글링을 통해 여러 사람들의 회고록을 구경했다. 회고를 해서 무엇을 얻는지 궁금했다. 근데 뭐 회고라는 게 딱히 정해진 틀은 없는 거 같다. 어쨋뜬 회고에 대해 많은 개발자들이 좋다고 얘기하고 있고 일단 매년 2번씩 상반기, 하반기로 써볼 예정이다. 2.돌고 돌아 개발자가 되기까지 요 근래 왜 개발자 되었냐는 질문을 두어번 받으면서 한 번 정리해보려고 한다. 개발자를 하게 된 가장 큰 이유는 고등학교 친구들이다. 나 포함 3명이서 주기적으로 만나는 .. 2022. 6. 26.
[TIL]학습내용 정리(nslookup, AES256) - 오늘 배운 건 아니지만 기록이 밀린 것들을 정리한다. - nslookup 명령어로 도메인의 ip 찾는 법을 소개한다. -AES-256 암호화 방식을 소개한다. 1.nslookup 외부 API 연동 개발이 거의 끝나고, 운영 api URL을 받았다. ip를 찾아서 outbound 방화벽을 열어야 하는데, 이 때 사용할 수 있다. nslookup 명령어와 도메인명을 입력하면 DNS서버와 해당 도메인의 ip를 확인할 수 있다. 위의 서버와 Address는 ISP의 DNS 서버와 ip이다. KT를 사용해서 kns.kornet.net이 나오고 있다. 회사에서는 자체 dns를 사용해서 일반적인 ISP의 dns 주소가 안 나왔다. 그리고 밑에 '권한 없는 응답' 쪽이 쿼리한 도메인의 주소다. ip를 그대로 입력하.. 2022. 6. 25.