본문 바로가기

Programming128

[Effective Java] 공통 메서드 정리 - equals() & hashCode() 객체라면 가지고 있는 공통의 메서드에 대한 이해와 활용법을 정리해두려고 한다. 오늘은 equals() 와 hashCode() 메서드에 대해 정리해두도록 하겠다. 1. equals equals는 말그대로 객체가 같은지를 비교하는 메서드이다. 일반적으로 객체가 생성될 때 고유한 해쉬코드가 생성되게 된다. 우리는 이 해쉬코드를 hashCode 라는 공통 메서드를 호출해 가져올 수 있다. 일반적으로 정의된 equals 메서드는 내부에서 이 해쉬코드를 비교한다. 하지만 실무에서는 객체의 해시코드만 비교해서는 안될 경우가 종종 있어 equals를 오버라이딩 해서 사용한다. equals를 오버라이딩 해서 사용하기 위해서는 아래 5가지 조건을 만족해야만한다. 1. 반사성 (reflexivity) e.equals(x) .. 2023. 2. 1.
[Effective Java] Try-finally 대신 Try-with-Resources로 자원 해제하기 오늘은 실무에서 굉장히 많이 사용하는 Try-with-resources 문법에 대해 정리해두려고 한다. Try-with-resources 는 Java 7 부터 도입된 문법인데 기존의 try-finally 에 비해 장점이 있어 실무에서 많이 사용된다. 먼저 기존에 사용하던 try-finally 방법에 대해 말씀드리겠다. 아래 예시를 보자. public static void main(String args[]) throws IOException { FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInputStream("test.txt"); bis = new BufferedInputStream(fis); int dat.. 2023. 1. 31.
[Effective Java] Primitive Type 과 Wrapper Class 자바에는 여러 기본 자료형(Primitive Type) 과 해당 자료형에 대한 Wrapper Class를 제공한다. 우리는 이 Wrapper Class를 이용해 기본형을 객체로 생성해 이용할 수가 있다. 각 기본형에 해당하는 Wrapper Class 와 사용 방법은 아래와 같다. 기본형 Wrapper Class 예시 boolean Boolean Boolean a = new Boolean(true); boolean b = new Boolean("false"); char Character Character a = new Character('a'); byte Byte Byte a = new Byte(3); Byte b = new Byte("100"); short Short Short a = new Short(.. 2023. 1. 30.
[Effective Java] Config 파일에 DI (Dependency Injection) 사용하기 요즘 Spring을 활용한 프로젝트를 많은 사람들이 하고, 실무에서도 많은 프로젝트가 Spring을 이용해서 개발되고 있다. 토이프로젝트를 만들거나 할때는 상관없지만, 실제로 유저에게 제공할 서비스를 만드는 경우라면 여러 환경을 고려해야한다. 개발자의 pc 에서 접근하는 local 영역, 개발 서버인 dev , 테스트 서버인 test, 실제 유저에게 오픈할 live 서버 등 이렇게 많은 환경에서 다른 정보를 제공해야하는 경우가 많다. 아래 특정 프로젝트의 Config 파일을 보자. @Configuration public class ToyPJTConfig { private static final String apiUrl = "https://~~~~~"; ... } api 서버 url 을 이런식으로 상수화 .. 2023. 1. 28.
[Effective Java] 인스턴스 생성을 막기 위해 private 생성자를 이용하자 코드를 작성하다 보면 특정한 기능을 손쉽게 사용하기 위해 특정한 헬퍼 클래스나 유틸리티 클래스를 만드는 경우가 있다. (객체지향적인 관점에서 봤을때 권장하는 방법은 아니나 굉장히 많은 회사에서 이렇게 사용한다.) 예시로 특정한 정보를 체크하기 위한 기능을 모아놓은 CheckManager 클래스가 있다고 가정하자. public class CheckManager { public static boolean isAdult(int age) { // 나이 체크 } public static boolean isPossibleAmount(int amount) { // 사용 가능 금액 체크 } public static boolean isAvailableUser(User user) { // 유저 정책 체크 } } 위의 코드.. 2023. 1. 28.
[Effective Java] 생성자 대신 Static Factory Method를 사용하자 아래 내용은 Effective Java를 읽고 내용을 정리한 것입니다 :) 보통 개발자가 클래스의 인스턴스를 얻기 위해서 생성자를 사용한다. 허나 객체지향 개발자라면 Static Factory Mehtod를 이용하여 인스턴스를 얻는 방법도 알아두어야 한다. 아래 Laptop 클래스를 보자. public class Laptop { private String model; private String company; public Laptop(String model, String company) { this.model = model; this.company = company; } } public 생성자의 아주 간단한 예를 살펴볼 수 있다. 보통 of 나 from 같은 정적 팩토리 메서드를 만들어 아래처럼 대체할 .. 2023. 1. 27.
[js] 브라우저별 동작 웹 작업을 하다보면 브라우저 별로 다르게 작업해야하는 경우가 생긴다. 이는 아래와 같은 JS 함수를 작성해서 이용할 수 있다. function actionPerBrowser() { const agent = window.navigator.userAgent.toLowerCase(); switch (true) { case agent.indexOf("edge") > -1: //엣지 //Action break; case agent.indexOf("edg/") > -1: // 크롭기반 엣지 //Action break; case agent.indexOf("opr") > -1: // 오페라 //Action break; case agent.indexOf("chrome") > -1 && !!window.chrome: //.. 2022. 5. 19.
[jQuery] closest(), parent(), parents() 메서드 정리 오늘은 closest 와 parent, parents 메서드를 정리해 두려고 한다. parent() parent()는 해당 Element 바로 위에 존재하는 부모 요소 하나를 반환한다. 바로 인접한 요소 하나만 반환하는 것이 특징이다. parents() parents()는 해당 Element의 모든 부모 요소를 반환한다. 모든 부모 요소를 반환한다는 점 말고는 parent()와 동일하다. closest() 해당 메서드는 Element에서 파라미터에 입력된 선택자에 만족할 때 까지 탐색을 하고, 이때 가장 가까운 선택자를 선택하여 가져온다. 만약 조건에 만족하는 요소가 없으면 Null을 반환해준다. 이때 자기 자신은 포함된다. 예제코드 X Y A B I J K C Z parent() 예시 $("li.ite.. 2022. 5. 3.
[C#] ASP.NET MVC에서 View로 데이터 보내는 여러가지 방법 하이 ..! 지난번 포스팅에서 MVC의 기본동작 방식과 간단한 예제 코드를 포스팅 했었다. https://devkingdom.tistory.com/337 [C#] ASP.NET에서 MVC 사용하여 프로젝트 구축하기 이직을 하면서 사용하는 기술 스택이 바꼈다. DB는 오라클에서 MSSQL 로 언어는 Java에서 C#으로...! 기본적으로 ASP.NET MVC에 대한 학습이 필요하여 오늘부터 조금씩 정리해 두려고 한다. 이미 mvc패턴 devkingdom.tistory.com 이전 포스팅에서 View로 데이터를 전달할때 파라미터로 모델객체를 넣어 전덜을 했었는데, 이렇게 전달을 하면 Model 하나만 전달이 가능해진다. 여러개의 데이터를 View에 전달하기 위해서는 ViewBag이나 ViewData를 이용하.. 2022. 3. 11.