분류 전체보기 (318) 썸네일형 리스트형 [Java] JVM 메모리 구조 탐구 자바 메모리와 컴퓨터 메모리자바 메모리와 컴퓨터 메모리는 같은 물리적 메모리를 가리키지만, 이 두 개념은 다른 레벨에서 다루는 메모리 관리 방식이다.자바 메모리는 컴퓨터 메모리를 관리하는 소프트웨어적 관점을 반영한 것이고, 컴퓨터 메모리는 하드웨어적인 관점에서 메모리 구조와 작동 방식을 설명한다.이제 자바 메모리와 컴퓨터 메모리의 관계와 차이점에 대해 알아보자. 1. 컴퓨터 메모리 (하드웨어 관점)컴퓨터 메모리는 물리적인 하드웨어 자원으로, 데이터와 명령을 저장하고 처리하기 위해 사용된다.컴퓨터 메모리는 크게 주기억 장치(RAM)와 보조기억 장치(HDD, SSD)로 나눌 수 있습니다. RAM (Random Access Memory):주기억 장치로, 데이터를 일시적으로 저장하고, 컴퓨터가 실행 중인 프로.. [자료구조] 배열 리스트, 연결 리스트 배열의 경우 2가지 불편함이 있었다.배열의 길이를 동적으로 변경 불가.데이터를 추가하기 힘들다.(데이터를 추가하는 경우 직접 오른쪽으로 한 칸씩 데이터를 미는 코드를 직접 작성해야 하기 때문)배열의 이런 불편함을 해소하고 동적으로 데이터를 추가할 수 있는 자료 구조를 List(리스트)라 한다. List 자료 구조순서가 있고, 중복을 허용하는 자료 구조를 리스트라 한다.일반적으로 배열과 리스트는 구분해서 이야기한다. 리스트는 배열보다 유연한 자료 구조로, 크기가 동적으로 변할 수 있다.(데이터가 추가되면 배열이 꽉 찰 때마다 자동으로 더 큰 배열을 할당하고 기존 데이터를 복사하는 방식으로 크기를 늘린다.)배열: 순서가 있고 중복을 허용하지만 크기가 정적으로 고정된다. 리스트: 순서가 있고 중복을 허용하지만.. [자료구조] 배열의 특징, 한계 배열(Array)과 리스트(ArrayList, LinkedList)는 데이터 구조에서 매우 중요한 역할을 한다.각각의 데이터 구조는 메모리 관리 방식과 시간 복잡도가 다르기 때문에, 적절한 상황에 맞게 선택하는 것이 중요하다.배열의 메모리 관리와 주소 참조, 그리고 ArrayList와 LinkedList의 개념, 각 연산의 시간 복잡도, 장단점에 대해 설명하겠다.먼저 자료 구조의 가장 기본이 되는 배열의 특징을 알아보자. 배열(Array) 배열은 같은 타입의 데이터가 연속적인 메모리 공간에 저장되는 자료 구조이다.각 요소는 인덱스를 사용해 빠르게 접근할 수 있으며, 고정된 크기를 가지는 데이터 구조이다. 배열의 특징1 - 배열과 인덱스 1. 연속된 메모리 공간 할당 배열은 메모리에서 연속된 공간을 할당받.. [자료구조] 시간복잡도와 공간복잡도 시간복잡도개념시간 복잡도는 알고리즘이 실행되는 시간이 입력 크기에 따라 어떻게 변하는지를 나타낸다.일반적으로 입력의 크기(n) 에 대한 함수로 표현되며, 가장 널리 사용되는 표기법은 빅오 표기법(Big-O Notation)이다.시간 복잡도는 최악의 경우를 기준으로 측정하며, 알고리즘의 성능을 비교할 때 중요한 지표이다.우리는 변수와 배열을 사용해서 각각에 맞는 알고리즘으로 해결할 수 있다는 걸 알고있다. 평균을 구하는 문제 예시)변수는 변수에 맞는, 배열은 배열에 맞는 알고리즘을 이용.같은 자료구조를 쓰더라도 알고리즘을 여러가지가 될 수 있음.1. 배열의 모든 숫자를 더하고 원소의 개수만큼 나눠라.2. 배열의 첫 번째 원소와 두 번째 원소, 세 번째 원소를 더하고 3을 나눠라. 더 좋은 알고리즘은 사용.. [자료구조] 비트(Bit), 바이트(byte), 자료형의 종류 비트먼저 메모리 단위를 알아보자.컴퓨터가 조작하는 정보의 가장 작은 처리 단위를 비트(Bit)라고 한다. - (0과 1)의 집합으로 구성된 기본 단위. 보통 정보표현의 최소단위라고 표현을 한다. 사용자가 작성하고 실행하는 모든 프로그램들은 보조기억장치인 하드디스크에 저장을 하게 된다. 실행 명령을 내리게 되면 하드디스크 즉, 보조기억 장치에 있던 프로그램 코드를 주기억 장치에 적재시켜 하나하나 순차적으로 실행시켜 결과를 보여준다. 이때 사용하는 주기억장치를 RAM이라고 부른다. 전원이 꺼지면 기억된 내용이 지워져서 휘발성 메모리라고도 한다. 주기억 장치주기억 장치는 RAM(Random Access Memory)으로, CPU가 즉시 액세스해야 하는 프로그램 코드와 데이터를 저장한다.RAM은 휘발성 메모.. [자료구조] 자료구조와 알고리즘이란? 자료구조데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타내는 것데이터를 저장하고 관리하는 방식 예시)변수배열데이터: 'A'데이터: 15데이터: "hp"알고리즘어떤 문제를 해결하기 위한 확실한 방법 예시)평균을 구하는 문제알고리즘은 자료구조에 따라서 달라지기도 하고 같은 자료구조에 대해서도 여러가지 알고리즘이 있을 수 있다.따라서 프로그램을 작성할 때, 먼저 자료구조를 선택해 데이터를 어떻게 저장하고 사용할지 결정하고,이에 맞는 알고리즘을 통해 데이터를 가공하고 원하는 결과를 얻는 과정을 거쳐야 한다. 위에서도 말했듯이 배열이라는 자료구조에도 여러개의 알고리즘이 있을 수 있다.하지만 알고리즘을 동시에 사용할 수는 없기 때문에 둘 중에 더 좋은 알고리즘을 사용하는 것이 좋을 것이다. 예시)1. 배열의 .. [Java] Jshell 을 아시나요? 목차JShell JShell 사용법 JShell자바(Java) 언어에서 제공하는 REPL(Read-Eval-Print Loop) 도구로, Java 9부터 도입되었습니다.REPL은 명령어를 입력하고 그 결과를 즉시 확인할 수 있는 대화형 환경을 의미합니다.이를 통해 복잡한 Java 프로그램을 작성하지 않고도 간단한 코드 실험, 테스트, 학습을 수행할 수 있습니다.JShell사용법1️⃣ 명령 프롬프트 이동 2️⃣ 명령어 jshell 입력 3️⃣ 사용해보기즉각적인 응답을 얻을 수 있고 문법 오류가 생겼을 때 피드백까지 줍니다.자바를 배우는 사람에게는 유용한 도구일 것 같습니다. 4️⃣ 종료 /exit 입력종료할 때는 /exit 명령을 입력해주면 됩니다.친절하게 작별 인사까지 해주네요! [Spring] 스프링 AOP - 실무 주의사항 목차프록시와 내부 호출 - 문제프록시와 내부 호출 - 대안1 자기 자신 주입프록시와 내부 호출 - 대안2 지연 조회프록시와 내부 호출 - 대안3 구조 변경프록시 기술과 한계 - 타입 캐스팅프록시 기술과 한계 - 의존관계 주입프록시 기술과 한계 - CGLIB프록시 기술과 한계 - 스프링의 해결책 프록시와 내부 호출 - 문제스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상 객체(Target)을 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하고, 이후에 대상 객체를 호출한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는다. AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링.. [Spring] 스프링 AOP - 로그 출력 AOP 만들기 목차예제 만들기 로그 출력 AOP 재시도 AOP 예제 만들기@Trace 애노테이션으로 로그 출력하기 @Retry 애노테이션으로 예외 발생시 재시도 하기먼저 AOP를 적용할 예제를 만들자. ExamRepository@Repositorypublic class ExamRepository { private static int seq = 0; /** * 5번에 1번 실패하는 요청 */ public String save(String itemId) { seq++; if (seq % 5 == 0) { throw new IllegalStateException("예외 발생"); } return "ok"; }}5번에 1.. [Spring] 스프링 AOP - 포인트컷 목차포인트컷 지시자예제 만들기execution1execution2withinargs@target, @within@annotation, @argsbean매개변수 전달this, target 포인트컷 지시자포인트컷 표현식을 포함한 포인트컷에 대해서 자세히 알아보자. 애스펙트J는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공한다.포인트컷 표현식은 AspectJ pointcut expression 즉, 애스펙트J가 제공하는 포인트컷 표현식을 줄여서 말하는 것이다. @Pointcut("execution(* hello.aop.order..*(..))") 포인트컷 지시자포인트컷 표현식은 execution 같은 포인트컷 지시자(Pointcut Designator)로 시작한다.줄여서 PCD라 한다. 포인트컷 지.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 32 다음