본문 바로가기

java

[Java] Call by Value와 Call by Reference [Java] Call by Value와 Call by Reference 프로그래밍 언어에는 Call by Value와 Call by Reference라는 개념이 있습니다. 함수, 또는 메소드에 파라미터를 넘겨주는 방식에 대한 개념인데요. Call by Value는 값에 의한 호출, Call by Reference는 참조에 의한 호출이라고 번역됩니다. 그럼 각각은 어떤 차이가 있을까요? Call by Value Call by Value는 메소드를 호출할 때, 인자로 넣어주는 변수의 값을 복사합니다. plusOne()이라는 이름의 숫자 num을 받는 메소드가 있다고 하겠습니다. 인자로 들어온 num에 1을 더하는 기능을 합니다. 다음 코드와 같이 plusOne() 메소드를 호출하면 어떤 일이 일어날까요? @.. 더보기
[디자인 패턴] 전략 패턴 [디자인 패턴] 전략 패턴 전략 패턴이란? 위키피디아에 따르면 전략 패턴은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 디자인 패턴이라고 한다. 객체가 선택할 수 있는 행위, 즉 전략을 객체로 간주하여 캡슐화 해놓고 동적으로 변경할 수 있게 한다고 풀어쓸 수 있을 것 같다. 더 직관적으로 줄이면 행동을 객체로 만든다고 할 수 있을 것 같다. 사실 풀어썼다고 해도 이런 식으로는 잘 와닿지 않는다. 전략 패턴의 생겨나게 된 배경부터, 구체적인 사례까지 쭉 살펴보겠다. 전략 패턴은 왜 생겼을까? 미션: 게임의 직업 클래스를 만들자 전략 패턴의 가장 직관적인 예시는 역시 게임 캐릭터라고 생각된다. 새로 오픈하는 RPG 게임에서 캐릭터의 각 직업 클래스를 구현하게 됐다고 해보자. 구현해야 될 직업은 총 5개,.. 더보기
[Java] JPA 영속성 컨텍스트 [Java] JPA 영속성 컨텍스트 JPA란? Java Persistence API의 약자. Java도 알겠고, API도 알겠다. 그런데 이 Persistence라는 건 뭘까? persist는 지속된다, 계속된다는 의미이다. 명사형인 Persistence는 무언가가 지속되는 상태 정도라고 볼 수 있다. persistence를 구글링 하면 위키피디아를 연결해주는데, 위키피디아에서는 persistence를 이렇게 말한다. 프로세스가 생성했지만 별개로 유지되는 상태의 특징 중 한 가지. 별도의 기억 장치에 데이터를 보존하는 목적. 이 특징으로 인해 저장 장치로부터 데이터를 전송하는 작업 및 자료구조 등을 이용해 데이터를 보존하는 것이 가능. 여기서 내 마음대로 중요하다고 생각되는 부분을 강조해봤다. 별개로 유.. 더보기
[Java] 객체지향과 SOLID 객체 지향과 SOLID 소프트웨어 공학 내용이지만, 자바와도 연관성도 많으므로 자바 카테고리에 올리는 객체지향 정리. 객체 지향 객체지향은 컴퓨터 프로그램을 객체들의 모임으로 파악하고자 하는 관점. 각각의 객체는 데이터를 주고 받으며 협력한다. 프로그램을 유연하고 변경이 용이하게 만든다는 장점이 있다. 특징과 장점 특징 추상화: 현실세계의 개념을 반영하는 것. 객체들의 공통적인 특징, 데이터와 기능을 도출한다. ex) 요청한 계산을 수행하는 프로그램을 만든다고 했을 때, Calculator라는 이름의 클래스를 만든다. 실제 계산기라고 생각하고 기능을 구현한다. 인간의 사고방식과 프로그램의 동기화. 캡슐화: 객체의 역할을 수행하기 위한 하나의 목적을 위해 데이터와 기능들을 묶는 것 ex) Calculato.. 더보기
[Java] String의 equals()와 hashcode() [Java] String의 equals()와 hashcode() String 생성 방법 1. 리터럴 String a = "12345; 2. new 연산자 String b = new String("12345); 리터럴과 new 연산자 방식의 차이 리터럴로 생성된 객체는 String Constant Pool 영역에 존재 리터럴은 내부적으로 String의 intern() 메소드를 호출. intern()은 해당 문자열이 String Constant Pool에서 검색 후 주소값 반환 또는 생성 new 연산자로 생성된 객체는 Heap 영역에 존재한다. equals()와 ==의 차이 .equals()는 값 비교, ==은 주소값을 비교한다. hashCode 각 객체의 주소값을 변환하여 생성한 고유의 주소값 .equal.. 더보기
[Java] JVM Garbage Collector [Java] JVM Garbage Collector JVM, 자바 가상 머신이란? Java Virtual Machine 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램 메모리 관리, Garbage Collector 수행 GC, Garbage Collector란? 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지 및 해제 하는 기능 Stack 정적으로 할당한 메모리 영역 primative 타입의 데이터가 값과 함께 할당 Heap 영역에 생성된 Object 타입의 데이터의 참조 값 할당 Heap 동적으로 할당한 메모리 영역 모든 Object 타입의 데이터가 할당 Heap 영역의 Object를 가리키는 참조 변수가 Stack에 할당 GC 프로세스 MARK Stack의 모든 변수를 스캔하면.. 더보기
[Java] 윈도우 이클립스 단축키 모음 한 번에 싹 정리하는 건 아니고, 필요할 때마다 찾아서 내가 사용하는 것들만 모아두기 위한 포스팅. For Windows Ctrl + F : 찾기 및 바꾸기 Ctrl + H : 워크스페이스 내 검색 Ctrl + D : 한 줄 삭제 Ctrl + W : 탭 닫기 Ctrl + L : 라인 이동 Shift + Enter : 한 줄 삽입(아래로) Ctrl + Shift + Enter : 한 줄 삽입(위로) Ctrl + Shift + R : 파일명 검색하여 열기 Ctrl + Shift + B : 브레이크 포인트 토글 Ctrl + Shift + L : Quick Search Ctrl + Shift + P : 메소드 괄호 {}의 대응값으로 이동 더보기
[웹] 무료로 쉽게 파이썬 배울 수 있는 점프 투 파이썬 작년에 처음 배운 프로그래밍 언어가 파이썬이다. 왜 배우기 시작했는지는 잘 모르겠다. 지금 파이썬 공부한 책을 다시 보니 6월 5일쯤에 시작했다고 되어있다. 한국 온 게 6월 1일인데. 그 파이썬 교재를 지금 다시 복습하고 있다. 그러다가 문득 점프 투 파이썬 사이트를 들어가보았다. 내용이 완전 똑같다. 인터넷의 점프 투 파이썬 사이트에 올린 강의를 모아서 책으로 낸 건 알고 있었다. 그런데 그냥 그대로 복사 붙여넣기 한 줄은 몰랐다. 어느 정도 편집 등등이 있지 않을까 싶었다. 나는 책 모으는 재미가 좋아서, 그리고 책으로 진도 나가고 한 권을 다 끝내는 재미가 어차피 샀겠지만, 돈을 아끼고 싶다면 점프 투 파이썬에서 쉽게 배울 수 있다. 사실 아무 것도 모르고 처음 배운다면 Codecademy의 파이.. 더보기