반응형 분류 전체보기714 [ 아이템 60 ] 정확한 답이 필요하다면 float와 double은 피하라 float와 double 타입은 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 빠르게 정밀한 '근사치'로 계산하도록 섬세하게 설계되었다. 따라서 정확한 결과가 필요할 때는 사용하면 안된다. float와 double 타입은 특히 금융 관련 계산은 맞지 않는다. 0.1, 10의 음의 거듭제곱 수 등은 표현할 수 없다. System.out.println(1.03 - 0.42); 결과 : 0.0610000000001 System.out.println(1.00 - 9*0.10); 결과 : 0.09999999999999 오류 발생! 금융 계산에 부동소수 타입을 사용했다 public static void main(String[] args) { double funds = 1.00; int itemsBought = .. 2021. 2. 10. [ 아이템 59 ] 라이브러리를 익히고 사용하라 무작위 정수를 하나 생성하고 싶을 때 어떻게 코드를 짤 수 있을까? 값의 범위는 0부터 명시한 숫자 사이이다. 흔하지만 문제가 심각한 코드 static Random rnd = new Random(); static int random(int n) { return Math.abs(rnd.nextInt()) % n; } 이 코드는 다음과 같은 문제가 있다. n이 그리 크지 않은 2의 제곱수라면 얼마 지나지 않아 같은 수열이 반복된다. n이 2의 제곱수가 아니라면 몇몇 숫자가 평균적으로 더 잘 반환된다. 무작위 수 백만개를 생성한 다음, 그 중 중간 값보다 작은 게 몇 개인지를 출력한다 public static void main(String[] args) { int n = 2 * (Integer.MAX_VALU.. 2021. 2. 10. [ 아이템 58 ] 전통적인 for 문보다는 for-each 문을 사용하라 이펙티브 자바3판 게시글은 문단별로 핵심 문장만 추려서 정리합니다 내용을 곱씹고 다시 한번 생각해보기 위해서 기록을 남깁니다 일단 전통적인 for문 사용을 먼저 살펴본다. 1. 컬렉션 순회하기 -> 더 나은 방법이 있다. for (Iterator i = c.iterator(); i.hasNext();){ Element e = i.next(); } 2,. 배열 순회하기 -> 더 나은 방법이 있다. for ( int i = 0 ; i < a.length ; i++ ) { //Todo : 해야 할 일 } 전통적인 for문은 while문보다는 좋은 방법이지만, 인덱스 변수는 코드를 지저분하게 하고 있으며 우리가 필요한 것은 결국 원소이다. 반복자 i의 많은 등장은 변수를 잘못 사용할 틈새를 주는 것이다. 또한 .. 2021. 2. 10. [ 아이템 57 ] 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성이 낮아진다. C와 같은 언어에서는 지연변수를 코드의 블록의 첫 머리에 선언하는 경우가 많았는데, 자바는 문장을 선언할 수 있는 곳이면 어디에서든지 선언이 가능하다. '가장 처음 쓰일 때 선언하기'를 통해 지역변수의 범위를 줄여라! 미리 선언하는 것은 가독성을 떨어뜨린다. 또한 지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날때까지 이기 때문에, 범위에 대해 실수하지 않도록 조심한다. '거의 모든 지역변수는 선언과 동시에 초기화' 되어야 한다. 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. try-catch의 경우, 유효성 검사를 위해 try 블록 안에서 검사해야 하는 경우가 .. 2021. 2. 10. [코드숨] 3주차 회고 dal-lab.com/2019/09/18/today-i-learned/ 오늘 나는 무엇을 배웠나? 오늘 나는 무엇을 배웠나? 2019년 9월 18일 - 아샬 초기 스타트업을 위한 컨설팅 업체인 thoughtbot이란 곳이 있습니다. Ruby on Rails가 유행하던 시절에 여러 기술을 공유해서 유명한 곳이죠. Active Storage dal-lab.com 회고를 쓰기 앞서서, TIL ( Today I Leaned)에 대한 내용, 특히 Three FS를 활용하는 방법을 이해해야 합니다. 위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다. * 내맘대로 서론 이번주는 재택이 있었는데, 월요일에는 동기들과 인사 시간도 가졌고, 본가로 가서 그런지 긴장이 풀려 침대와 하나되는 시간들을 많이.. 2021. 2. 8. [코드숨] 2주차 회고 dal-lab.com/2019/09/18/today-i-learned/ 오늘 나는 무엇을 배웠나? 오늘 나는 무엇을 배웠나? 2019년 9월 18일 - 아샬 초기 스타트업을 위한 컨설팅 업체인 thoughtbot이란 곳이 있습니다. Ruby on Rails가 유행하던 시절에 여러 기술을 공유해서 유명한 곳이죠. Active Storage dal-lab.com 회고를 쓰기 앞서서, TIL ( Today I Leaned)에 대한 내용, 특히 Three FS를 활용하는 방법을 이해해야 합니다. 위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다. * 내맘대로 서론 이번주 npm run dev가 제대로 안될 뿐 만 아니라 marko.js로 너무 속이 뒤집혀 암에 걸려있었습니다... ㅠㅠ (심지.. 2021. 1. 31. Java에서 static 사용하면 안되는 이유 PHP, Java와 같은 언어들은 static class를 가지고 있지 않습니다. 하지만, 그 컨셉은 여전히 존재합니다. static methods로만 완벽하게 이루어진 클래스는 static class과 완전히 똑같은 효과를 가지게 됩니다. static class들은 절차지향적으며, 테스트가 불가능합니다. 1. Classes Tend to Go From Big to Huge static methods를 가지고 있는 class들은 객체를 통해서 할 일이 없습니다. 자신들의 정체성도 없으며, 무엇을 해야 하는지, 무엇을 하면 안되는지 정의되어 있는 부분이 없습니다. 경계선이 흐릿하기 때문에 우리는 단지 명령어를 써내려갈 뿐입니다. 우리가 일을 다 마치기 전까지 중간에 정지할 수 없습니다. 불가피하고 객체지향.. 2021. 1. 25. [코드숨] 1주차 회고 dal-lab.com/2019/09/18/today-i-learned/ 오늘 나는 무엇을 배웠나? 오늘 나는 무엇을 배웠나? 2019년 9월 18일 - 아샬 초기 스타트업을 위한 컨설팅 업체인 thoughtbot이란 곳이 있습니다. Ruby on Rails가 유행하던 시절에 여러 기술을 공유해서 유명한 곳이죠. Active Storage dal-lab.com 회고를 쓰기 앞서서, TIL ( Today I Leaned)에 대한 내용, 특히 Three FS를 활용하는 방법을 이해해야 합니다. 위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다. 1. Facts(사실, 객관) - Http, REST API, Json, Jackson 개념 공부하기 - ToDo REST API 만들기 ( CRU.. 2021. 1. 24. [ 백준 / 2580 ] 스도쿠 ( 자바 ) www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 기본적으로 알고 있는 스도쿠의 룰과 완전 똑같다. 게다가 정답이 없는 경우는 주어지지 않는다니, 첫번째로 정답이 나오는 것을 출력하고 종료하면 된다. (0,0)부터 (N,N)까지 계속 DFS로 들어간다. 그 이후, 가로, 세로, 9칸의 정사각형 3개에 대해서 어떤 숫자가 들어갈 수 있는지 검사한다. 이것을 Set에 담는다. Set에 담긴 값들을 하나씩 대입해 보면서 가로, 세로, 9칸의 정사각형에 모두 만족하는.. 2021. 1. 14. 이전 1 ··· 61 62 63 64 65 66 67 ··· 80 다음 반응형