聊聊 WebSocket,还有 HTTP (zhuanlan.zhihu.com)
WebSocket 是一种全新的协议,它将 TCP 的 Socket(套接字)应用在了 web page 上,从而使通信双方建立起一个保持在活动状态连接通道,并且属于全双工(双方同时进行双向通信)。WebSocket 协议更好的节省了服务器资源和带宽,并且能够更实时地进行通讯。
by @又拍云 2020-03-26 11:46 分享 查看详情
Java 14 发布了,再也不怕NullPointerException 了!? (mp.weixin.qq.com)
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载。在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 358: Helpful NullPointerExceptions
by @HollisChuang 2020-03-26 10:26 分享 查看详情
类初始化导致死锁 (club.perfma.com)
本文要说的是之前在生产环境上碰到,是类初始化导致的死锁,恩,你没看错,确实是类初始化导致的死锁,本文将这个问题描述的场景更加通用化了。
by @PerfMa社区 2020-03-26 10:22 分享 查看详情
让源码告诉你:Android 不要滥用 SharedPreferences(上) (mp.weixin.qq.com)
本文不是与大家一起探讨关于 SharedPreferences 的基本使用,而是结合源码的角度分析对 SharedPreferences 使用不当可能引发的“严重后果”以及该如何正确的使用 SharedPreferences。
by @SELECT-FROMALL 2020-03-25 10:23 分享 查看详情
硬核科普:携号转网的技术原理分析 (www.huxiu.com)
一个数据冗余,难倒英雄汉。

我们的手机号,实际上有两个,分别是IMSI和MDN。

IMSI的全名是International Mobile Subscriber Identity,国际移动用户识别码。它是一种“永久用户标识”,每一个手机SIM卡,对应一个IMSI号码。

IMSI号码由三部分组成,分别是:
1、MCC (Mobile Country Code) 移动国家码;
2、MNC (Mobile Network Code) 移动网络码;
3、MSIN (Mobile Subscriber Identity) 移动用户识别码;

MCC是3位数字(中国是460),MNC是2-3位数字,MSIN是10-11位数字。加起来的IMSI,一般不超过15位,通常就是15位(例如我们国家)。
by @shengting 2020-03-24 11:28 分享 查看详情
JVM源码分析之javaagent原理完全解读 (club.perfma.com)
本文重点讲述javaagent的具体实现,因为它面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTIAgent(c实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。
by @PerfMa社区 2020-03-24 10:25 分享 查看详情
Android 从 MVP 到 MVVM (mp.weixin.qq.com)
相信大家对 MVP 都比较熟悉了,先简单的回忆下 MVP,它的全称是 Model-View-Presenter,三部分的耦合关系如下:
by @code小生 2020-03-23 22:04 分享 查看详情
新技能:用 Python 写一个安卓 APP (mp.weixin.qq.com)
用 Python 写安卓 APP 肯定不是最好的选择,目前用Java和 kotlin 写的居多,但是肯定也是一个很偷懒的选择,而且实在不想学习 Java,再者,就编程而言已经会的就 Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python 写安卓的 APP 的可能性,还真行。
by @code小生 2020-03-23 22:03 分享 查看详情
写给软件工程师的 30 条建议 (mp.weixin.qq.com)
就在几天前,我的人生迈入了30岁。在过去的十年中,我做了很多事情,也学习了很多东西。在本文中,我将回顾人生的历程,并将软件工程师的工作和生活公之于众。
by @code小生 2020-03-23 22:03 分享 查看详情
Android 锁屏无法继续定位问题 (mp.weixin.qq.com)
产生问题的原因:
手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会将手机进入休眠状态。此时的服务以及线程等都会停止。
by @code小生 2020-03-23 22:02 分享 查看详情
程序员究竟能干多少年? (mp.weixin.qq.com)
今天,我们又来谈这个老话题,因为我看到一篇论文,但是也一定会有很多人都会找出各种理由来论证这篇论文的是错的,无所谓了,我把这篇文章送给那些和我一样准备为技术和编程执着和坚持的人。
by @code小生 2020-03-23 22:02 分享 查看详情
我玩的第一个赚零花钱小项目 (mp.weixin.qq.com)
前几天写过一篇文章《宅在家 玩几个小游戏赚零花钱》,虽然没有详细说明,但还是有很多朋友联系了过来,小编这边把自己在玩的一些小项目都毫无保留都分享了,看每个人的喜好选择不同的来做,虽然不能每天上千上万,但几十还是轻松的。
by @code小生 2020-03-23 22:00 分享 查看详情
YYYY-MM-DD 的黑锅,服务端去背! (mp.weixin.qq.com)
写这篇博文是记录下跨年的bug。
去年隔壁组的小伙伴就是计算两个日期之间间隔的天数,因为跨年的原因计算有误。
by @code小生 2020-03-23 21:59 分享 查看详情
大神碉堡!99 行代码实现的神奇效果 (mp.weixin.qq.com)
只用99行代码,你也可以像《冰雪奇缘》里的艾莎公主一样拥有冰雪魔法。
虽然你不能在现实世界中肆意变出魔法,但却能在计算机的虚拟世界挥洒特效。
by @code小生 2020-03-23 21:59 分享 查看详情
7 个开源的 Spring Boot 前后端分离项目,一定要收藏! (mp.weixin.qq.com)
前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了。即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年,SSH 框架用的滚瓜烂熟,出来却发现自己依然没有任何优势!
by @code小生 2020-03-23 21:58 分享 查看详情
主流的 Python IDE,你选对了吗? (mp.weixin.qq.com)
本文介绍了多个 Python IDE,并评价其优缺点。读者可以参考此文列举的 Python IDE 列表,选择适合自己的编辑器。
by @code小生 2020-03-23 21:58 分享 查看详情
编写高性能 Java 代码的最佳实践 (mp.weixin.qq.com)
本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优化和架构方面的调整。
by @code小生 2020-03-23 21:57 分享 查看详情
使用DDD指导业务设计的一点思考 (insights.thoughtworks.cn)
领域驱动设计(DDD) 是 Eric Evans 提出的一种软件设计方法和思想,主要解决业务系统的设计和建模。DDD 有大量难以理解的概念,尤其是翻译的原因,某些词汇非常生涩,例如:模型、限界上下文、聚合、实体、值对象等。

实际上 DDD 的概念和逻辑本身并不复杂,很多概念和名词是为了解决一些特定的问题才引入的,并和面向对象思想兼容,可以说 DDD 也是面向对象思想中的一个子集。如果遵从奥卡姆剃刀的原则,“如无必要,勿增实体”,我们先把 DDD 这些概念丢开,从一个案例出发,在必要的时候将这些概念引入。
by @ThoughtWorks 2020-03-23 18:37 分享 查看详情
JVM源码分析之堆外内存完全解读 (club.perfma.com)
说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆
by @PerfMa社区 2020-03-19 11:02 分享 查看详情
FIDL:Flutter界的AIDL,不局限于基础数据类型 (mp.weixin.qq.com)
Flutter的产品定义是一个高性能的跨平台的移动UI框架,能够用一套代码同时构建出Android/iOS/Web/MacOS应用。作为一套UI框架,它不具备一些系统的接口,自然还是避免不了跟原生打交道。于是乎,它提出了名为platform channel的东西,用于flutter和原生灵活的交换数据。以下为了描述方便,用Android代指原生。
by @SELECT-FROMALL 2020-03-19 08:44 分享 查看详情