본문 바로가기

전체 글

(47)
API 개념 이해하기 오늘은 API에 대해 정리를 해보려고 한다. API란? application programming interface의 약자로, 굳이 풀이한다면 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스라고 풀면 되겠다. 다른 블로그를 찾아보니 자판기에 비유해서 표현하니 이해가 쉬웠다. 우리가 자판기를 사용할때 어떤 원리로 작동하는지는 모르지만 사용하기 편하게 직관적일수록 사용하기 더 좋은 기계라고 볼 수 있는것처럼 인터페이스를 통해 쉽고 편하게 만들어진 규격이라고 생각하면 된다. API의 종류? 지금 내가 사용하는 API는 가장 대표적인 두가지 방식인 SOAP와 REST인데, 찾아보니 두 방식은 비슷하지만 본질적으로 다른 기술이라고 한다. 그래서 비교를 해보려고 한다. 차이 SOAP REST..
JWT vs OAuth JWT이란 무엇인가? Json Web Token의 약자로, 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미한다. 즉 Token의 종류이다. OAuth란 무엇인가? Token을 발급하고 인증하는 오픈 스탠다드 프로토콜이다. HTTP 서비스에 대한 제한된 액세스를 얻기 위한 애플리케이션 승인 상호 작용을 조정하여 리소스 소유자를 대신하여 리소스 소유자와 HTTP 서비스 간에 또는 타사 응용 프로그램이 자체적으로 액세스 권한을 얻을 수 있다. 즉, 고객이 자신의 네이버 아이디/비밀번호를 알려주지 않아도, 네이버에 있는 고객정보를 우리 서비스에서 안전하게 사용하기 위한 방법이다. 이때 Token이 JWT 유형의 Token이 될 수도 있다고 한다. JWT vs OAuth OAuth Token 명..
[SPRING]스프링 입문을 위한 자바 객체 지향의 원리와 이해(1) 책을 시작하자마자 작가가 의문을 던진다. 스프링을 이해하려면 이전의 어떤 기술을 이해하고 있어야 하는가? 나는 당연하게 OOP라고 생각했다. 하지만 작가는 다양한 답변을 내놓았고 그중 물론 OOP라는 답변이 있었다. 작가가 원했던 답변은 아래와 같다. SOA CBE OOP 절차적/구조적 프로그래밍 기계어/어셈블리어 5 로 갈수록 작가의 만점과 가까워지는 것 같은데 나는 아쉽게도 OOP만 생각해냈다. 그다음 장으로 넘어가서 작가는 T 메모리 구조를 보여주면서 static, stack, heap 영역들의 역할과 구조 등을 알려 주었는데 정리를 하자면 아래와 같다. 스태틱 영역 스택 영역(메서드들의 놀이터) 힙 영역 스레드 스레트 스태틱 = 클래스의 놀이터 스택 = 메스드의 놀이터 힙 = 객체의 놀이터 위의 ..
[JAVA] 전화번호 목록(프로그래머스) - 배열 비교하기 문제 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두어입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예제 phone_..
[EFFECTIVE JAVA] 이펙티브 자바 독서스터디 - 12장 직렬화 12장 직렬화 아이템 85. 자바 직렬화의 대안을 찾으라 아이템 86. Serializable을 구현할지는 신중히 결정하라 아이템 87. 커스텀 직렬화 형태를 고려해보라 아이템 88. readObject 메서드는 방어적으로 작성하라 아이템 89. 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라 아이템 90. 직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라 읽고 느낀 점 그 동안 Serializable 에 대해 많이 말했는데 본론부터 알려주지 마지막에 어려운걸로 마무리 하다니 아직 공부해야할 산이 높고도 높다는 걸 깨달았다. 다들 정말 이렇게 코드를 짜고 있는건가? 내가 온전하게 자바에 대해 논의할 수 있을때 다시 한번 읽어보면 좋은 책이다. 아이템 85. 자바 직렬화의..
[EFFECTIVE JAVA] 이펙티브 자바 독서스터디 - 11장 동시성 11장 동시성 아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라 아이템 79. 과도한 동기화는 피하라 아이템 80. 스레드보다는 실행자, 태스크, 스트림을 애용하라 아이템 81. wait와 notify보다는 동시성 유틸리티를 애용하라 아이템 82. 스레드 안전성 수준을 문서화하라 아이템 83. 지연 초기화는 신중히 사용하라 아이템 84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라 읽고 느낀 점 스레드는 멀티코어 프로세서의 힘을 제대로 활용하려면 반드시 내 것으로 만들어야 하는 지식이다. 스레드부터 공부하다보면 이해하지 않을까? 아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라 동기화는 배타적 실행뿐만 아니라 스레드 사이의 안정적인 통신에도 필요하다. 단, Thread.stop 은 사용..
[EFFECTIVE JAVA] 이펙티브 자바 독서스터디 - 10장 예외 10장 예외 아이템 69. 예외는 진짜 예외 상황에만 사용하라 아이템 70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 아이템 71. 필요 없는 검사 예외 사용은 피하라 아이템 72. 표준 예외를 사용하라 아이템 73. 추상화 수준에 맞는 예외를 던지라 아이템 74. 메서드가 던지는 모든 예외를 문서화하라 아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라 아이템 76. 가능한 한 실패 원자적으로 만들라 아이템 77. 예외를 무시하지 말라 읽고 느낀 점 예외에 대해서 기억나는 것은 모든 메시지를 다 담으라는 것 뿐. 표준 예외를 외우도록 하자. 그 외에는 왜 프로그래밍 오류들이 다 런타임예외를 뱉어내는지 알아냈다는 점과 사수님도 이 책을 읽으셔서 그렇게 만..
2022_02_15 while(startDate.compareTo(endDate) > 0){ ... startDate++ } 사수님이 자바 날짜 비교 while문을 보고 감탄을 한지 일주일 나는 또 if문 + for문을 싸질렀다.... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 당당한 while문을 보고 감탄한지 일주일도 안지났는데 왜 나의 머리속에는 if + for만 떠오르지? 매번 이렇게 코드의 벽에 부딧치는 것 같다. 사실 공부를 안해서 그렇다. (노는게 좋은 걸 어떡해) (아무것도 안하는게 너무 좋아) 오늘의 기쁜 소식은 2주 넘게 잡고 있던 일감이 드디어 끝났다. 그리고 새 일감이 들어왔다... ....ㅎㅘ이팅 그리고 명함을 신청했다. 별 다른 이유는 없다. 과연 여기 명함은 어떻게 생겨먹었길래 아무도 신청을 안한거지? 그리고 ..