전체 글
0년차 백엔드 개발자 회고록
👋 안녕하세요. 0년차 백엔드 개발자 묘묘입니다. 토르의 무기 묠니르를 부르는 애칭? 묘묘가 마음에 들어서 선택했습니다. :) 저는 '여유로움'을 추구하고 있습니다. 개발자랑 반대일 것 같은 '여유로움'은 개발자한테도 필요한 가치가 아닐까 싶습니다. 이게 무슨 뚱딴지같은 소리일지 모르겠지만 조급해질수록 시야가 좁아지고 급할수록 실수가 많아지는 것이 개발자라고 생각합니다. 이러면 유지보수하기 힘든 코드가 나와서 추후 프로젝트를 갈아엎고싶을 정도로 엉망이 되어 있는 경험을 해보았기에 여유를 가지되 깊은 고민을 하고 코드를 작성하는 것을 추구하게 되었습니다. 추구하는 것과는 다르게 현재 저는 '여유로움'을 즐기지 못하고 있습니다. 왜냐하면 너무 재밌고 신기한 것들로 세상이 가득차있기 때문입니다. 개발자에 들어..
자바에서 String을 조심해야하는 이유
String 클래스는 잘 사용하면 상관없지만, 잘못 사용하면 메모리에 많은 영향을 주기 때문이다. 그렇다면 잘못 사용한 사례를 살펴보자. String 클래스를 잘 못 사용한 사례 보통 서버에서는 DB 데이터를 갖고와서 그 데이터를 화면에 출력하는 시스템을 가지고 있다. 쿼리 문장을 만들기 위해 String 클래스 결과를 처리하기 위한 Collection 클래스 위 두 클래스를 가장 많이 사용하게 된다. 일반적으로 사용되고 가장 단순하게 만드는 쿼리 작성 문장을 살펴보자. String sql = ""; sql += "select * "; sql += "from ( "; sql += "select A_column, "; sql += "B_column ,"; // 생략된 쿼리 (약 400라인) ... ... ..
JVM(자바가상머신)이란? - Part5, Garbage Collection
22/10/14 게시글 등록 22/10/15 내용 수정 및 추가 JVM(자바가상머신)이란? - Part 1, 소개 JVM(자바가상머신)이란? - Part 2, Execution Engine JVM(자바가상머신)이란? - Part 1 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을.. ssdragon.tistory.com JVM(자바가상머신)이란? - Part 2, Execution Engine JVM(자바가상머신)이란? - Part 1, 소개 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을 하는데, 이 JRE에서 가장 중..
스프링부트 - 하루에 한 번 쿠키 기반 조회수 증가 구현
조회수 어뷰징은 어떻게 막아야 할까? 어뷰징 (Abusing) : 의도적인 조작을 통해 조회수나 클릭수를 높이기 위한 일련의 행위 CRUD 커뮤니티 프로젝트를 하면서 고민했던 주제입니다. 다른 프로젝트에서는 커뮤니티 부분을 개발하지 않 ssdragon.tistory.com 조회수 어뷰징은 어떻게 막아야 할까? 라는 의문에서 시작된 조회수 증가 로직 구현하기입니다. 제일 간단하면서도 생각보다 많은 처리를 할 수 있는 쿠키 기반으로 구현해봅니다. 다음과 같은 전제조건이 있습니다. 쿠키 기반 하루에 1번 조회수 증가 비회원도 조회수 증가 구글에 검색해본 결과 하루에 1번 조회수 증가하는 로직을 살펴보았는데 막연히 현재 시간에서 24시간동안만 유지하는 쿠키부터해서 다른 게시글을 들어갈때마다 쿠키 유지시간이 다시..
JVM(자바가상머신)이란? - Part4, Runtime Data Area
22/09/29 - 게시글 등록 22/10/13 - PermGen에 관한 Heap 영역 수정 및 추가 JVM(자바가상머신)이란? - Part 1, 소개 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을 하는데, 이 JRE에서 가장 중요한 요소는 자바 바이트코드를 해석하고 실행하 ssdragon.tistory.com JVM(자바가상머신)이란? - Part 2, Execution Engine JVM(자바가상머신)이란? - Part 1 자바를 쓰는 개발자라면 누구나 들어봤을 JVM(Java Virtual Machine)을 알아보려고 한다. 자바 바이트코드가 JRE에서 동작을 하는데, 이 JRE에서 가장 중요한 요소는 자..
[토비의 스프링] 1장 오브젝트와 의존관계
스프링은 자바를 기반으로 한 기술이다. 따라서 스프링이 가장 중요하게 가치를 두는 것은 객체지향 프로그래밍이 가능한 언어라는 점이다. 🧐 객체지향 프로그래밍(OOP, Object Oriented Programming)란? 객체(클래스) = 속성(변수) + 기능(메소드) '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 개념으로 시작된다. 따라서 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메소드를 활용하는 방식이라 볼 수 있다. 특징으로는 추상화, 캡슐화, 상속성, 다형성이 있다. 스프링이 가장 관심을 많이 두는 대상은 오브젝트(객체)이다. 오브젝트 생성, 관계, 사용, 소멸까지의 전 과정 및 어떻게 설계할..
[Java] sort와 parallelSort 비교
백기선님의 자바 8 강의에서 정렬을 학습하다가 궁금해서 적게되었다. (정리한 깃허브) 자바 8 이전에는 Arrays.sort()를 사용하여 정렬을 하였다. 자바 8 이후 sort()를 개선한 새로운 메소드인 Arrays.parallelSort()가 나왔다. 특히 parallelSort에 대해 간단하면서도 내부적으로 동작하는 설명이 없어서 직접 찾아보고 작성하게 되었다. 1. Arrays.sort()란? 객체 또는 기본타입의 배열(array of objects or primitives)을 정렬하기 위해 나왔다. 여기에 사용된 정렬 알고리즘은 Dual-Pivot Quicksort 이다. 즉, 더 좋은 성능을 내기위해 Quicksort 알고리즘을 커스터마이징한 것이다. 이 방법은 싱글 쓰레드(Single-Th..
조회수 어뷰징은 어떻게 막아야 할까?
어뷰징 (Abusing) : 의도적인 조작을 통해 조회수나 클릭수를 높이기 위한 일련의 행위 CRUD 커뮤니티 프로젝트를 하면서 고민했던 주제입니다. 다른 프로젝트에서는 커뮤니티 부분을 개발하지 않아서 생각하지도 않았던 문제인데, 개인적으로 따로 해보려니 많은 고민이 필요했습니다. 🧐 조회수는 무엇일까? 게시글을 1명의 사용자가 여러번 접속해도 카운트하는 것? 게시글을 1명의 사용자가 여러번 접속해도 한 번만 카운트하는 것? 게시글에서 1명의 사용자는 하루에 1번만 카운트하는 것? 비회원의 경우에도 게시글 접속하면 카운트하는 것? 1명의 사용자가 여러 장소(여러 IP)에서 접속했을 때, 조회수 증가는 어떻게 할까? 쿠키 기반이라면 고의로 삭제했을 때 어떻게 해야할까? ... 위와 같이 조회수 증가에 대한..