목록전체 글 (24)
그리미
직장 생활 1주차입니다. 많은 변화가 있었습니다. ROS 와 각종 패킷들을 분석했습니다. 입사 전, C++을 공부한 건 좋은 선택이였습니다. 입사 첫날, 과제를 제대로 못하여 밤새 고민했습니다. 다음 날에 모든 걸 해결했습니다. 회사는 마음에 듭니다. 회사 가는 게 행복합니다.우리 회사는 개인에게 굉장한 자율성을 주는 조직입니다. 그 덕인지 회사 일이 내 일처럼 느껴집니다.업무 개선을 위해 고민하고 실행에 옮겼던 게 기억에 남네요. 직장 동료분들도 굉장히 똑똑하시고, 존중을 통해 서로를 배려하는 게 느껴졌습니다. 부드러운 카리스마를 보여주신 선임분도 만났습니다. 엄청 멋지다 생각했습니다. 또한 웹과는 안녕일 줄 알았으나, 웹을 하게 되었습니다. 그것도 풀스택으로. 특정 내용을 파고는 시간을 가지고 ..

안정적인 프로그래밍을 위해선 불변 객체가 중요하다. Record 를 활용하면 이러한 불변 객체를 만들 수 있으며, 개발자가 별도의 toString, hashcode, equals 와 같은 메서드를 만들지 않아도 되는 장점이 있다. 사전에 정의된 메서드를 INVOKEDYNAMIC 하기 때문이다. 간단히 작성된 학생 클래스로 클래스와 레코드를 비교해보겠습니다.public class Student { private String name; private Integer age; public Student(String name, Integer age) { this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (thi..
어느새 한 해의 절반이 갔다. 공부하며 즐거웠던 적 아쉬웠던 적 지친 적 많았는데 그래도 잘해온 반년이었다. 운동은 좀 아쉬웠다. 취업 일정 등등으로 비교적 집중하기 힘들었기 때문이다. 좀 더 신경 써야 할 부분이다. 그래도 꾸준히 운동을 간 건 칭찬할 만하다. 개발 관련 공부는 등락이 많았다. 탄탄하게 기본기를 다지고자 공부했다. 중간중간 슬럼프가 왔지만 열심히 공부했다. 좋은 인연들을 많이 만들었다. 덕분에 잘 산 거 같다. 특히 학습에서도 서로 끌어줄 사람들을 만났다. 취업은 얼마 전에 됐다. 정말 바래왔었고 열심히 달린 거 같다. 최근 다양한 전형들 (코테나 필기와 같은) 통과를 점점 하더니 정신 차려보니 면접이 우수수 잡혔다. 또 이 중 몇몇 기업에서 합격 연락을 감사히 주셨다. 가기로 한 기업..

MySQL 서브 쿼리 성능 저하에 관하여 라고 썼지만 사실 아래 내용은 Join 연산에도 적용되는 문제다 https://dev.mysql.com/doc/refman/8.0/en/subquery-materialization.html MySQL :: MySQL 8.0 Reference Manual :: 10.2.2.2 Optimizing Subqueries with Materialization10.2.2.2 Optimizing Subqueries with Materialization The optimizer uses materialization to enable more efficient subquery processing. Materialization speeds up query execution by g..

동적으로 배열 크기를 조절할 수 있는 자료 구조의 경우 Load factor 에 도달하면 배열이 확장됩니다 https://docs.oracle.com/en%2Fjava%2Fjavase%2F21%2Fdocs%2Fapi%2F%2F/java.base/java/util/Hashtable.htmlHashtable을 보면 load factor 에 도달하면 rehash 합니다. 즉, 더 큰 배열을 만들어 기존 데이터들을 적제하는 방식을 취합니다. 본 글에서는 rehash 에서 발생하는 오버헤드는 얼마인지와 유의미 한지를 알아보겠습니다. public class HashTableTest { static int SETTING = 66_667_000; static int CNT = 50_000_000; publ..

https://dev.mysql.com/doc/refman/8.4/en/delete.html MySQL :: MySQL 8.4 Reference Manual :: 15.2.2 DELETE StatementMySQL 8.4 Reference Manual / ... / SQL Statements / Data Manipulation Statements / DELETE Statement DELETE is a DML statement that removes rows from a table. A DELETE statement can start with a WITH clause to define common table expressionsdev.mysql.com The DELETE statement d..
코드는 https://github.com/C4-ComeTrue/my-storage/pull/12 에서 확인하실 수 있으십니다. 파일 공유 시 중요하게 생각했던 것은 링크 관리였습니다. String shareLink = LocalDateTime.now() + UUID.randomUUID().toString(); 위와 같이 링크를 구성하면 높은 확률로 링크가 중복될 가능성이 줄어듭니다. https://stackoverflow.com/questions/1155008/how-unique-is-uuid How unique is UUID?How safe is it to use UUID to uniquely identify something (I'm using it for files uploaded to the ..
문법적 측면추상 클래스모든 접근 제어자가 가능하고, 인스턴스 변수를 선언할 수 있다.람다 표현식을 사용할 수 없다.인터페이스public, static, final 변수만 가능하고 인스턴스 변수를 선언할 수 없다.람다 표현식을 사용할 수 있다. (람다는 함수형 인터페이스를 통해서만 가능하다) 추상 클래스의 일반 메서드 vs 인터페이스의 디폴트 메서드인스턴스 변수 접근 가능 차이상태에 접근할 수 있다는 점에서 차이가 존재한다.public abstract class CircleClass { private String color; private List allowedColors = Arrays.asList("RED", "GREEN", "BLUE"); public boolean isValid() ..