본문 바로가기
4G vs. 5G. 4G 와 5G 의 특성과 차이점을 알아보자. -사실 개인적으로 일반인들을 대상으로 한 모바일 통신기술은 4G 로 이미 충분히 만족감을 주었다고 생각한다. 이는 5G 가 스펙만큼 성능을 못 내고 있고, 핸드폰 베터리도 더 많이 소모하며, 커버리지도 넓지 않기 때문이다. - 4G 는 LTE, LTE-A, LTE-A pro (4.5G) 등으로 발전해 왔고, 모바일에서의 일반 사용성에서는 충분한 속도를 보장한다. - 5G 는 한마디로 정의하면 "초고주파" 를 사용한 통신이다. - 4G vs. 5G 4G max 2.6GHz 주파수 대역 사용 상대적으로 low frequency 로 장애물이 있어도 잘 통과한다. 따라서 한 개의 기지국으로 넓은 범위를 커버 가능하며, 실내 커버도 유용한 편이다. 대신 고주파에 비해 직선적 성격이 약하여 traffic 이 분산되.. 2020. 2. 15.
[도서 정리] 사용자를 생각하게 하지마 - 기본예절로서의 사용성, 웹 사이트가 예의를 지켜야 하는 이유 [도서 정리] 사용자를 생각하게 하지마 - 기본예절로서의 사용성, 웹 사이트가 예의를 지켜야 하는 이유 -"사용자를 생각하게 하지마” 라는 책의 핵심 내용 정리 내용입니다. 구체적 내용과 예시 등은 책을 구매해서 보세요~ -"내 사이트가 이해하기 쉬운가?” 라는 질문뿐 아니라 “내 사이트가 예의 바르게 작동하고 있는가?” 라는 질문도 해야 한다. -우리가 웹 사이트에 호감 저장고를 가지고 들어간다고 상상하는 방법을 활용하면 좋다.사이트에서 문제를 마주할 때마다 저장고의 비축량이 줄어든다. -저장고의 크기는 사람마다 다르다. 모든 사람의 저장고가 매우 클 것이라고 기대해서는 안 된다. 상황의 영향을 받는다. 매우 급한 상황에 있거나 막 다른 사이트에서 좋지 않은 경험을 하고 온 상황이라면 원래 저장고가 큰.. 2018. 6. 18.
[대흥동] 착한치과 '그린서울치과' 다녀왔습니다~ 후기입니당~~ [대흥동] 착한치과 '그린서울치과' 다녀왔습니다~ 후기입니당~~ 시작 : 0118끝 : 0139 사실 방문한 시기는 조금 되었지만, 아마도 정책에는 변화가 없을 것 같아 방문 후기를 공유드립니다. 우선 아침잠이 많아서 & 집이 강북 저 멀리인 관계로3번째 도전에 성공하게 되었습니다. 우선 이 치과의 특이한 점은 진료시작은 8시부터 하는데,사람들이 줄을 새벽부터 서고, 7시 40분쯤 되면 선착순 총 19명까지 번호표를 나누어줍니다.번호표에는 번호와 진료시간이 써 있는데, 해당 진료시간에 재방문하면 됩니다 ㄷㄷㄷ 처음에는 여러 후기들을 읽고 7시까지 가면 되겠지 하고 7시까지 갔더니 이미 사람이 꽉 차 있었습니다.실패.... 회사가 10시까지 출근인데... 그날은 그냥 회사에 일찍 가서 일이나 했습니다. 두.. 2017. 7. 15.
[Java Concurrency] 성능, 확장성 #1 [Java Concurrency] 성능, 확장성 - 스레드를 사용하는 가장 큰 목적은 바로 성능을 높이고자 하는 것이다. 스레드를 사용하면 시스템의 자원을 훨씬 효율적으로 활용할 수 있고, 앱으로 하여금 시스템이 갖고 있는 능력을 최대한 사용하게 할 수 있다. 그와 동시에 기존 작업이 실행되고 있는 동안 새로 등록된 작업을 즉시 실행할 수 있는 준비를 갖추고 있기 때문에 앱의 응답 속도를 향상시킬 수 있다. - 성능을 높이는 방법은 대부분 앱의 내부 구조를 복잡하게 만들어야 하는 경우가 많고, 따라서 안전성과 활동성에 문제가 생길 가능성도 적지 않다. 최악의 경우에는 성능을 높이기 위해 적용한 프로그래밍 기법 때문에 프로그램의 다른 부분에서 역효과를 가져오거나 성능상에 문제를 일으킬 수도 있다. - 성능.. 2017. 5. 3.
[Effective Java] 늦 초기화를 분별력 있게 사용하자 [Effective Java] 늦 초기화를 분별력 있게 사용하자 - 늦 초기화는 양날의 검이다. 클래스를 초기화하거나 인스턴스를 생성하는 비용은 줄여주지만, 그 대신 늦게 초기화되는 필드의 접근 비용은 증가시킨다. 늦 초기화는 실제로 성능을 저하시킬 수 있다. ( 다른 많은 최적화 처럼 ) - 늦 초기화는 나름의 용도가 있다. 만일 어떤 필드가 어떤 클래스 인스턴스의 일부로만 사용되고, 그러면서 그 필드의 초기화 비용이 많이 든다면 늦 초기화가 좋을 수 있다. 확실히 하기 위해서는 역시나 성능을 측정하는 것이 좋겠다. - 다중 스레드의 경우에는 늦 초기화가 쉽지 않다. 만일 두 개 이상의 스레드가 늦게 초기화되는 필드를 공유한다면, 어떤 형태로든 동기화 하는 것이 중요하며, 동기화를 하지 않으면 심각한 .. 2017. 3. 16.
[Effective Java] 스레드 안전을 문서화 하자. [Effective Java] 스레드 안전을 문서화 하자. - 클래스 행동을 문서화하지 않으면, 프로그래머는 가정에 의존해서 그 클래스를 사용해야 한다. 만일 그런 가정들이 잘못되면, 그로 인한 프로그램은 불충분한 동기화나 과도한 동기화를 하게 될 것이다. 어떤 경우든, 심각한 에러가 유발될 수 있다. - 메소드 선언부의 synchronized 변경자는 메소드의 상세 구현 부분이지 외부로 제공되는 API 가 아니다. 즉 Javadoc 에 synchronized 가 공개되지 않는다. synchronized 변경자가 있다는 것이 스레드 안전을 문서화하기에 충분한 것은 아니다. 동시적 사용을 안전하게 하려면, 해당 클래스가 어떤 수준의 스레드 안전을 지원하는지 명확하게 문서화해야 한다. - 다음은 스레드 안전.. 2017. 3. 14.
[Effective Java] 지나친 동기화는 피하자 [Effective Java] 지나친 동기화는 피하자 - 지나친 동기화는 성능을 저하시키고 교착상태(dead lock)을 유발시키며, 심지어 예기치 않은 행동을 초래할 수 있다. - 동기화된 메소드나 블록 안에서 절대로 클라이언트에게 제어권을 넘기면 안 된다. 즉, 동기화된 영역 내부에서는 오버라이딩된 메소드를 호출하지 않아야 하며, 함수 객체의 형태로 클라이언트가 제공하는 메소드도 호출하지 말아야 한다. 동기화된 영역을 갖는 클래스의 관점에서 그런 메소드들은 매우 이질적인 녀석들이다. 그 메소드가 무슨 일을 하는지 알지 못하며, 이질적인 일을 하는 것을 제어하지도 못한다. 외계인 메소드가 하는 일에 따라 다르겠지만, 동기화된 영역에서 그 메소드를 호출하면 예외나 dead lock 또는 데이터 손상까지 .. 2017. 3. 9.
[Effective Java] 실패 원자성을 갖도록 노력하자 [Effective Java] 실패 원자성을 갖도록 노력하자 - 일반적으로 호출된 메소드가 실행에 실패하더라도 객체 상태는 메소드 호출 전과 같아야 한다. 이런 특성을 갖는 메소드를 실패 원자성(failure atomic) 메소드라 한다. - 가장 간단한 방법은 불변 객체로 설계하는 것이다. 객체가 불변이면 실패 원자성과는 아예 무관하다. - 가변 객체를 처리하는 메소드의 경우에 실패 원자성을 성취하는 가장 보편적인 방법은 연산 수행 전에 매개 변수의 유효성을 검사하는 것이다. - 실패 원자성을 성취하는 더 좋은 방법은, 객체를 변경하는 코드 부분에 앞서 실패할 수 있는 코드 부분이 실행되도록 연산 순서를 조정하는 것이다. - 또 다른 방법은 ( 흔하지 않지만 ) 연산 도중에 발생하는 실패를 가로채는 복.. 2017. 3. 3.
[Effective Java] 정확한 계산에는 float 이나 double 타입을 쓰지 말자. [Effective Java] 정확한 계산에는 float 이나 double 타입을 쓰지 말자. - float, double 은 이진 부동소수점 연산을 수행하는데, 넓은 범위의 수에 대해 정확한 근사치를 빨리 산출하기 위해 설계되었다. 그러나 정확한 결과를 제공하지 않으므로, 근사치가 아닌 정확한 결과가 필요한 곳에 사용하면 안된다. float 과 double 타입은 돈 계산에는 특히 부적당하다. - 돈 계산할 때 올바른 답을 구하려면 BigDecimal, int, long 타입 중 하나를 사용해야 한다. - BigDecimal 은 정확한 연산을 제공하지만 두 가지 단점이 있다. 1. 기본 데이터 타입을 사용할 떄보다 불편하다. 2. 실행 속도가 느려진다. - BigDecimal 을 사용하지 않으려면, i.. 2017. 1. 31.
반응형