전체 글36 IP 주소 IP로 통신할 때 "IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신"합니다. ARP(Address Resolution Protocol)란? 주소 결정 프로토콜이란 뜻으로, 네트워크 상에서 IP주소를 MAC주소와 매칭 시키기 위한 프로토콜 입니다. MAC 주소는 데이터 링크 계층(Data Link Layer)에서 사용되는 주소로, LAN(Local Address Network)에서 목적지와 통신하기 위한 실질적인 주소입니다. MAC 주소 예시 : 1A-2F-BB-76-09-AD 그런데 IP 주소가 있는데 MAC 주소가 따로 필요한 이유는 무엇일까요? IP 주소는 논리적 주소이며 MAC 주소는 물리적 주소입니다. IP 주소가 마치 배송지 주소라면, MAC 주소는 주민번호라고 할 .. 2024. 3. 21. OSI 7계층 OSI 7계층이란? OSI (Open Systems Interconnection) 모델은 컴퓨터 네트워크 프로토콜 디자인과 통신을 위한 참조 모델입니다. 이 모델은 네트워크 통신을 일곱 개의 계층으로 나누어 설명합니다. 각 계층은 특정한 역할을 수행하며, 상위 계층은 하위 계층을 기반으로 작동합니다. OSI 모델의 일곱 개의 계층은 다음과 같습니다. 1. 물리 계층(Physical layer) 이 계층은 데이터를 전기 신호, 광 파장 또는 무선 신호 등과 같은 물리적인 형태로 전송하는 역할을 합니다. 네트워크 장치 간의 연결 방식, 전압 수준, 케이블 유형 등을 다루며, 예를 들어 이더넷, Wi-Fi, 광섬유 케이블 등이 여기에 해당합니다. 이 계층에서는 단지 데이터를 전달할 뿐, 전송하려는 데이터가 무.. 2024. 3. 19. 2. 프로그래밍 패러다임 프로그래밍 패러다임이란? 말그대로 프로그래밍의 패러다임 형태입니다. 프로그래머에게 프로그래밍의 관점을 갖게 도와주는 개발 방법론입니다. 크게 선언형의 함수형, 명령형의 객체지향형과 절차지향형으로 나뉩니다. 각각 살펴봅시다. 1) 선언형과 함수형 프로그래밍 선언형 프로그래밍은 프로그램이 어떤(무엇을) 동작을 하는지에 중점을 두고 풀어내는지에 집중하는 패러다임이고 그 일종에 함수형 프로그래밍이 있습니다. 함수형 프로그래밍은 입력에 의해서만 출력이 결정되고 외부요인에 영향을 받지않게 순수 함수들로만 쌓아 로직을 구현하는 패러다임입니다. 또한 함수를 함수에서 반환이 가능하고, 변수나 메소드에도 할당 될 수 있는 일급 객체로 취급하는 고차함수를 활용해서 재사용성을 높이는 프로그래밍 방법입니다. 일급 함수(Firs.. 2024. 3. 17. 1.디자인 패턴(Design Pattern) 디자인 패턴이란? : 프로그램을 설계할 때 나타나는 문제들을 해결하기 위해 일반적인 '규약'의 형태로 만들어 놓은 것을 의미합니다. 어떤 문제가 발생했을 때 이런식으로 해결하자! 라고 정해진 약속이라 라이브러리와는 다르게 추상적인 느낌이 있습니다. 디자인패턴을 이용해 라이브러리, API, 프레임워크 등을 만든다고 생각하면 되겠습니다. 예시를 통해 이해해보겠습니다. 1) 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴이란 "생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다." (위키백과 발췌)라고 하는데 무슨말일까요? Java를 사용하셨거나 공부해보셨다면 한번쯤 들어봤을 패턴입니다. 먼저 코드를 보시죠. cl.. 2024. 3. 17. 문자열 압축 설명 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다. 입력 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 줄에 압축된 문자열을 출력한다. import java.util.Scanner; class Main { public String soulution(String st) { String answer = ""; st = st + " "; int p = 1; for (int i = 0; i < st.length()-1; i++) { char ch1 = st.charAt(i); char ch2 = st.charAt(.. 2024. 2. 8. 가장 짧은 문자거리 설명 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요. 입력 첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다. import java.util.Scanner; class Main { public int[] soulution(String st, char c) { int[] answer = new int[st.length()]; int p = 1000; for (int i = 0; i < st.length(); i++) { if (st.charAt(i) == c) { a.. 2024. 2. 8. 영속성 관리 JPA는 DB에 반영하는 방식이 다음과 같다. 먼저 JPA는 트랜잭션이 필수이다. 트랜잭션이 시작한 다음 JPA문, 예를 들어 persist같은 JPA구문 실행 시 바로 DB에 반영하는 것이 아니라 1차 캐시 저장소에 먼저 저장한다. 1차 캐시 저장소에 저장을 하고 트랜잭션이 끝나기 전에 조회를 하면 먼저 1차 캐시에서 조회를 한다음 없다면 DB에서 조회한다. DB에는 트랜잭션 커밋 시 1차 캐시에 반영된 내용을 일괄 DB에 반영한다. 전에 회사에서는 JPA대신 MyBatis를 사용했었다. 그래서 트랜잭션을 걸어도 DB에 값이 반영되거나, 오류가 생기는 경우가 잦았는데 JPA는 그런점에서 신뢰감이 더 가는것 같다.JPA는 수정기능 사용 시 MyBatis보다 더 큰 이점이 있다.Mybatis는 update.. 2024. 2. 3. 영속성 컨텍스트란? 영속성 컨텍스트: '엔티티를 영구 저장하는 환경' 이라는 뜻으로, 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 엔티티에는 4가지 상태가 존재한다 1. 비영속 : 영속성 컨텍스트와 전혀 관계까 없는 상태 2. 영속 : 영속성 컨텍스트에 저장된 상태 3. 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태 4. 삭제 : 삭제된 상태 영속성 컨텍스트의 특징 - 식별자 값 : 영속상태는 식별자 값(@id로 테이블의 기본 키와 매핑한 값)이 반듯이 있어야 한다. - 데이터베이스 저장 : 트랜잭션을 커밋하는 순간 데이터베이스에 반영(flush) - 장점 1) 1차 캐시 2) 동일성 보장 3) 트랜잭션을 지원하는 쓰기 지연 4) 변경 감지 5) 지연 로딩 2024. 2. 1. 문장 속 단어찾기 설명 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분됩니다. 입력 첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 합니다. import java.util.Scanner; public class Main { public String soulution(String input) { String answer = ""; String[] arr = input.split(" "); answer = arr[0]; for (int i=1; i 2024. 1. 31. ==와 equals의 차이점은 무엇일까? 자바에서 객체비교를 할 때 자주 사용하는 것 중 == 연산자와 equals가 있다. 두 객체가 같은 객체인지 비교할 때 쓰는것인데, 쓰임새가 약간 다르다. == 은 두 객체의 주소값을 비교하는것이고, equals는 String객체의 실제 값을 비교하는것이다. 처음 듣고 이게 무슨말이지? 라고 생각할 수 있다. 자바에서는 객체를 생성할 때 메모리상에 생성을 하게 되는데, 그 방식이 2가지가 있다. 리터럴을 이용하는 방식과 new 연산자를 이용해 생성하는 방식이 있다. String test1 = "test"; String test2 = new String("test"); test1이 리터럴, test2가 new 연산자로 객체를 생성한 방식이다. 두 객체의 실제 값은 test로 동일하지만, 다른게 있다. 바로.. 2024. 1. 24. JDK와 JRE의 차이점은 무엇일까? 자바를 처음 접하고 공부하기위해 이런저런 환경세팅을 하다보면 만나는 것 중 하나인게 바로 JDK와 JRE이다. 대부분의 학생 혹은 취준생이라면 아마 선생님이나 검색을 통해 설치해서 사용할 것이다. 하지만 두개의 차이에 대해서 궁금해보는 사람은 많지 않을것이다. 둘의 차이는 무엇일까? 우선 약자를 풀어서 쓰면 다음과 같다. JDK : Java Developement Kit JRE : Java Runtime Environment 해석하자면 JDK는 자바 개발 키트, JRE는 자바 실행 환경인데 언뜻보면 비슷하게 보일 수 있다. JDK는 자바를 사용할 때 필요한 모든것들이 담겨있지만, JRE는 자바를 실행할 수 있게만 해주는 파일, 즉 실행에 필요한 API와 가상머신같은 것들만 포함하고있다. 따라서 JDK안에.. 2024. 1. 24. @AuthenticationPrincipal 사용시 주의점 컨트롤러에서 유저정보를 컨트롤할 때 @AuthenticationPrincipal 어노테이션을 통해 유저정보를 파라미터로 받아 주로 사용한다. 아주 유용한 어노테이션이 아닐 수 없다. 인증된 사용자의 정보가 있다면 쉽게 유저정보를 받아서 사용할 수 있다. 따라서 개발을 할 때 자주 쓰는 어노테이션 중 하나인데, 그러다보면 아주 간단하지만 놓치면 치명적인 실수를 할 때가 있다. 바로 null 체크인데 예를 들어 어떤 게시판에서 해당 게시물을 등록한 유저인지 그 외의 유저인지 체크해서 수정버튼을 보여주거나 가린다고 가정해보자. @GetMapping("/test") public ModelAndView pageTest(@AuthenticationPrincipal DtoAccount user) { ModelAndV.. 2023. 5. 9. 이전 1 2 3 다음