분류 전체보기196 String vs StringBuffer vs StringBuilder 사실 String vs StringBuffer / StringBuilder라고 적는 편이 더 나을지도 모른다. String과 나머지 두 클래스 사이에는 큰 차이가 있지만, Buffer와 Builder사이에는 큰 차이가 없다. String은 불변 객체고, 나머지 두 객체는 가변 객체다. 여기서 두 객체 사이의 큰 차이가 만들어진다. 문자열을 더하는 단순한 연산을 생각해보자. String a = "Hello"; a += " World"; System.out.println(a); // "Hello World" 불변 객체는 말 그대로 한 번 선언되면 변하지 않는다. 예를 들어 final int num = 1;에 ++연산을 하면 수행되지 않는다. final키워드를 통해 불변으로 선언했기 때문이다. 그런데 불변 객.. 2024. 1. 19. 0.1 + 1.1 != 1.2 제목에 쓰여진 수식은 참이다. 최근 면접에서 왜 저 수식이 참인지를 질문 받았었다. 아주 예전에 코딩애플님 유튜브 영상에서 봤었는데, 너무 당연한 거라고 생각해서 그냥 재밌게 보고 말았었다. 문제는 면접 때 왜 당연한지 기억을 못해냈다는건데... 게임 내 화폐나 비트코인들이 실물 화폐와 비슷한 혹은 그 이상의 가치를 지니는 경우가 종종 있다. 이런 경우를 보고 조롱 섞인, 혹은 걱정 어린 목소리를 내는 사람들이 주로 '그래서 10100110이 그렇게 비싸다 이거지?'와 비슷한 결의 말들을 하곤 한다. 이는 컴퓨터가 어떻게 데이터를 저장하는가에 대한 정확한 이해를 기반으로 하는 말이라고 할 수 있다. 컴퓨터 내의 데이터는 모두 0또는 1로 이루어져 있다. 이는 컴퓨터가 비트 단위 연산을 하기 때문이다. 비.. 2024. 1. 18. <1/16> 말아먹기 전문가 취업 준비를 시작한 이래로, 오늘 세 번째 면접을 볼 수 있었다. 그리고 의심의 여지 없이 시원하게 말아먹었다. 긴장했다는 변명을 하기 민망할 정도로 너무 답변을 못했다. 일단은 오늘 면접을 돌아보면서 앞으로의 방향성을 다시 생각해보는 시간을 가져보자. 첫 면접은 스타트업, 두 번째 면접은 대기업, 이번 면접은 다시 스타트업 회사였다. 첫 면접은 기술 관련 질문을 많이 물어보셨고, 두 번째 면접에서는 기술 관련 질문은 하나도 없었다. 이번 면접에서는 특이하게 코딩 테스트 코드를 어떻게 개선할 수 있을지를 물어보심에 더해 자료구조, 객체지향, 자바에 대한 기본적인 지식, 팀 프로젝트에서의 역할과 갈등 해결 방법 등에 대해 물어보셨다. 1시간 이상 면접을 진행했고 더 많은 이야기를 나눴던 것 같은데 긴장 상.. 2024. 1. 16. Pull Request 027. 로그인 / 로그아웃 로직 리팩토링하기 - Http Header 대신 Cookie를 사용해보자 이전 글에서 JWT의 적절한 사용 방법을 고민했었다. 그 결과 인증은 Stateful하게, 인가는 Stateless하게 사용하자!는 결론을 내렸다. 중복 로그인 방지나 로그아웃을 구현하기 위해서는 Stateful한 방식을 사용하는 것이 불가피했기 때문이다. 반면 인가는 어떤가? 상대방이 보낸 토큰이 내가 만든 토큰이 맞는지만 검증할 수 있으면 굳이 서버에서 어떤 토큰이 발급되었고, 만료 시간은 얼만지는 알 필요가 없다. 따라서 JWT가 지닌 Stateless한 성질을 야무지게 사용할 수 있다. 이 방식을 구현하기 위해 다른 분의 글을 참고하여 리팩토링을 진행했다. 이번 포스팅에서는 내 코드에서 수정된 부분만을 기록할 예정이며, 큰 틀은 링크를 타고 들어가 확인하길 바란다. 로그인 JwtAuthentica.. 2024. 1. 9. JWT 이대로 괜찮은가? 인증 / 인가에 JWT를 사용하여 구현하는 경우가 상당히 많다. JWT를 사용하는 이유는 Stateful해서 서버에 부하가 걸릴 수 있는 세션과 달리 Stateless하며, 중요한 식별값(아이디, 비밀번호 등)이 그대로 넘어가는 쿠키에 비해 안전하다는 것이다. 그런데 순수하게 Stateless한 JWT를 사용하는 것이 과연 옳은가? 이 부분에 대해서 의구심이 든다. Stateless하다는 것은 달리 말하면 서버가 해당 토큰에 대해 모른다는 것이다. 즉, 토큰을 사용한 공격에는 취약한 점이 있다. 동시에, 로그아웃을 명확히 구현해내기 굉장히 어렵다. 가장 널리 알려진 경우가 다중 로그인일 것이다. 순수 JWT를 사용하면 한 계정으로 여러 번 로그인 하는 것을 막을 수 없다. 그렇다고 이미 로그인한 사용자의.. 2024. 1. 2. 이전 1 2 3 4 5 6 7 8 ··· 40 다음 반응형