0. 왜 이걸 파보기 시작했는가 Annotation을 잘 사용하고 있고 springboot나 lombok을 사용하는 경우 정말 빼놓을 수가 없습니다. 근데 이게 어떻게 동작하는지 갑자기 의문이 생겼습니다. @RestController public class HelloController { @GetMapping("/hello") public String hello(String name) { return "hello " + name; } } @Override는 그렇다 치고 스프링부트 다루다 보면 정말 다양한 어노테이션들을 보게 되는데 그거 진짜 어떻게 동작하는 걸까요 1. 아무튼 그래서 Annotation이란? https://docs.oracle.com/javase/tutorial/java/annotatio..
JAVA
1. 환경설정 h2랑 maven 사용안하고 gradle과 mariadb로 진행하는 경우 아래처럼 설정 build.gradle implementation 'org.hibernate:hibernate-entitymanager:5.6.14.Final' implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.3' persistence.xml hellojpa.Member show_sql : query가 콘솔에 보임 format_sql : 콘솔에 보이는 query를 포맷팅 해줌 use_sql_comments: 왜 이 query가 호출되었는지 적어줌 jpa특징 Table, Column annotation으로 명시없이 사용하면 클래스의 이름을 table로, 필드의 이름을 ..
https://board.f-lab.kr/articles/1 🧑💻 자바 백엔드 기술 면접 대비하기 - 1편 🧑💻 자바 백엔드 기술 면접 대비하기 - 1편 board.f-lab.kr 자바의 모든 클래스는 Object 클래스를 상속받습니다. 그리고 Object클래스에는 equals() 와 hashCode() 라는 메소드가 선언되어 있습니다. 이 메소드들은 각각 어떤 역할일까요? 이 둘의 차이점은 무엇일까요? 답 : equals는 두 객체가 정말 동일한지를 확인합니다. 내부 값이 아닌 정말 참조하는 메모리가 같은지 확인합니다. hashCode는 참조하고 있는 메모리의 주소를 반환합니다. 즉 equals는 hashCode끼리 비교하는 것과 동일합니다. hashCode는 객체의 메모리 주소를 리턴합니다. 반론..
코틀린하다가 데이터 타입에 Number도 있고 Int도 있길래 3분정도 혼란이 왔다가 코드로 확인하니 바로 이해가 되더라. 코틀린에서 숫자 관련된 모든 데이터 타입들은 Number클래스를 상속받은 클래스들이였다. Int 타입을 확인하면 아래와 같이 Primitive.kt 파일에 정의가 되어있다. Number클래스를 상속받고 있는데 Number는 아래와 같이 구현되어있다.
뷰 바인딩 공식 도큐먼트 : https://developer.android.com/topic/libraries/view-binding?hl=ko 뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com 뷰 바인딩이란? 쉽게 생각하면 View를 Object화 시켜서 바인딩한다고 생각하면 된다. 이렇게 바인딩한 Object는 코드 내에서 쉽게 접근할 수 있다. findviewbyid와의 차이는? 뷰 바인딩으로 findviewbyid를 대체할 수 있고 findviewb..
구버전 안드로이드OS(4.4 Kitkat)에서 TLS쪽 문제가 발생했다. 4.4 버전에서는 TLS 1.1까지를 지원한다고 되어있었다. 문제는 나는 TLS 1.2와 통신을 해야한다. TLS(Transport Layer Security)란? SSL(Secure Socket Layer)의 표준화된 단어 라고 생각하면 된다. SSL 3.0부터 표준화가 되어 SSL3.0 = TLS1.0 이라고 생각하면 편하다. HTTP통신은 별도의 인증없이 서로간 프로토콜만 맞으면 통신이 가능하지만 HTTPS부터는 서로간의 인증서가 맞아야 통신이 가능하다. 통신을 하며 메시지를 주고 받는 과정을 Handshake라고 하는데 인증서가 맞지 않는 경우 SSL Handshake 에러가 발생한다. 요즘 나오는 대부분의 서버는 기본값이 ..
회사에서 하던 업무를 다시 복기해볼 겸 간단한 예제를 만들어 정리해본다. 0. 목적 아무튼 서버에 있는 JsonData를 읽어오기 1. 서버 FastAPI에서 요청이 들어왔을때 Json을 반환하게 해 주었다. @app.get("/user-data") def user_data(request : Request): print(request) file_path = "./static/Sample.json" f = open(file_path, 'r') data = json.loads(f.read()) return JSONResponse(content = data) 서버에 static디렉토리에 json파일을 만들어 넣어두고 다 읽어서 반환하게 했다. 2. 데이터 간단하게 만들었다. [{ "ID": "KR-203424..
0. 들어가며 이직한 회사에서 안드로이드 라이브러리를 만드는 업무를 맡게 되었다. 실은 안드로이드 안 해봤다. 자바는 적당히 해봤다고 생각했는데 이번에 사용하는 오픈소스 라이브러리 하나가 코틀린으로 되어있었다. 이렇게 된 이상 간단하게 만들어가며 적응을 좀 해보려고 한다는 것은 반은 맞는 말이고 실은 할거 없어서 하나 만들어보려고 했다. 1. 왜 popcat인가 이유는 진짜 간단하다. 이미지 2개만 터치 이벤트 넣으면 끝난다. 2. 구현 일단 popcat이미지 2개를 구했다. 그리고 입을 다물고 있는 이미지를 이미지뷰로 넣어 기본값으로 하고 배경은 검정색으로 만들었다. 저 화면은 이미 내가 전체 화면을 적용해놓은 상태인데 appbar와 맨 위에 상태 표시줄을 없애기 위해서는 thems.xml에 다음 코드..
내 코드 바꿔보기, 근데 함수형을 곁들인 시리즈 함수형 프로그래밍을 조금씩 이름만 듣고 검색만 해보다 이제 회사 코드에 적용을 해보고 있다. 틈틈이 기존 코드 스타일을 함수형 프로그래밍으로 바꾸는 방법을 올려보려고 한다. 간단하게. 최대한 간단하게 올리려고 한다. 시간이 된다면 함수형 프로그래밍의 패러다임과 구조를 정리해서 올려봐야겠다. 우선 다음 코드와 같이 Person이라는 클래스를 정의합니다. public class Person{ private String name; private int age; public Person(String name, int age){ this.name = name; this.age = age; } public int getAge(){ return this.age; } ..
0. Introduction 자바를 공부하면서 이제 막 졸업한 학부생이 기존 지식에서 벗어나 조금 더 잘 사용하기 위해 어떤 걸 공부하면 좋을지 개인적으로 생각해봤습니다. 어디까지나 개인의 경험과 생각으로 모두에게 적합하다고는 할 수 없습니다. 피드백은 댓글로 부탁드립니다. 1. 자바의 버전 학부생때는 개발을 하면서 자바의 버전에 크게 신경을 쓰지 않았습니다. 왜냐하면 책이나 교수님이 받으라는 버전만 받으면 되는 거였거든요. 근데 왜 그 버전을 사용해야 할까요? 그건 자바의 버전에 따라 책이나 수업에서 사용하는 API가 변하기 때문입니다. 즉 우리는 자바의 버전에 따라 더 좋은 API를 사용할 수 도 있습니다. 하지만 우리는 회사에서 일을 하죠. 자바의 버전은 정해져있고 그 버전에 맞춰서 개발을 해야 하..