binaryshao
码龄9年
关注
提问 私信
  • 博客:150,410
    150,410
    总访问量
  • 71
    原创
  • 1,635,476
    排名
  • 52
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2016-03-17
博客简介:

binaryshao

博客描述:
学习成长,永不止步 >>>
查看详细资料
个人成就
  • 获得62次点赞
  • 内容获得36次评论
  • 获得72次收藏
创作历程
  • 8篇
    2019年
  • 19篇
    2018年
  • 13篇
    2017年
  • 32篇
    2016年
成就勋章
TA的专栏
  • MVVM 架构解析
    2篇
  • Android开源库/项目
    9篇
  • Android源码分析
    5篇
  • Android
    39篇
  • MySQL
    4篇
  • Java源码分析
    1篇
  • Java
    4篇
  • Python
    3篇
  • 数据结构和算法
    5篇
  • 计算机网络
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

176人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

开源项目【WanAndroid_Flutter】玩安卓 Flutter 版

WanAndroid_Flutter项目地址玩安卓客户端 Flutter 版,可以查看各种开发相关的知识,适配了 Android 和 iOS,内容比较完整封装了加载中、空数据、错误、到达最底部等不同状态的视图,在错误时可以点击重新加载,具有较好的用户体验如果觉得项目还不错,点个 star 鼓励下作者吧 o(╥﹏╥)o也欢迎大家发起 issue 或提交 PR业务内容几乎对接了玩安卓的所...
原创
发布博客 2019.08.19 ·
631 阅读 ·
0 点赞 ·
2 评论 ·
1 收藏

开源项目【WanAndroid_RN】玩安卓 React Native 版

WanAndroid_RN玩安卓客户端 React-Native 版,可以查看各种开发相关的知识,适配了 Android 和 iOS,内容比较完整封装了加载中、空数据、错误、到达最底部等不同状态的视图,在错误时可以点击重新加载,具有较好的用户体验如果觉得项目还不错,点个 star 鼓励下作者吧 o(╥﹏╥)o也欢迎大家发起 issue 或提交 PR业务内容几乎对接了玩安卓的所有 API...
原创
发布博客 2019.07.31 ·
495 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

MVVM 架构解析及 Jetpack 架构组件的使用

谈到 MVVM 架构,不得不祭出官方的架构图,如下所示:在实践中,根据对架构组件 paging 的使用和理解,笔者又将架构图扩展成下面这样:.png有背景颜色的3处是使用 paging 组件需要多用到的MVVM 和 MVP 的区别MVP 中 V 层和 P 层互相持有对方的引用,在V 层调用 P 层逻辑后,P 层回调V 层的相应方法更新 UI。而在 MVVM 中,上层只依赖直接下层,...
原创
发布博客 2019.05.21 ·
10038 阅读 ·
8 点赞 ·
2 评论 ·
17 收藏

开源项目【WanAndroid-MVVM】玩安卓 Kotlin 版 (MVVM 架构)

WanAndroid-MVVM玩 Android 客户端,采用 kotlin 语言,Material Design 风格,根据 MVVM 架构使用 Jetpack 架构组件搭建了整套框架持续更新ing~后续有时间再根据本项目分析 MVVM 架构,敬请关注~Jetpack 使用情况DataBindingNavigationLiveDataViewModelPagingRoom ...
原创
发布博客 2019.04.29 ·
1476 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

算法的复杂度分析到底是什么?

数组它可以说是最基础、最简单的数据结构了数组用一块连续的内存空间,来存储相同类型的一组数据最大的特点就是支持随机访问,时间复杂度为 O(1)但插入、删除操作也因此变得比较低效,平均情况时间复杂度为 O(n)在平时的业务开发中,我们可以直接使用编程语言提供的容器类,但是,如果是特别底层的开发,直接使用数组可能会更合适,因为容器类无法存储基本类型,对包装类的装箱拆箱会有一定的性能损耗为什...
原创
发布博客 2019.03.19 ·
742 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

使用 AIDL 进行 IPC 的流程解析和其他要点

AIDL 文件并不是必需的,只是有了这个文件,系统会帮助我们自动生成 IRemoteService.java 这个类AIDL 的包结构在服务端和客户端要保持一致,否则反序列化将会失败!IRemoteServiceStub抽象内部类,继承了 Binder,实现了 IRemoteServicestatic abstractProxystatic内部类代理,实现了 IRemoteSe...
原创
发布博客 2019.02.12 ·
421 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

序列化接口 Serializable 和 Parcelable

Serializable反射?serialVersionUID确保反序列化成功的关键 ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; * It is also strongly advised that explicit * serialVersionUID declarations use the <...
原创
发布博客 2019.01.17 ·
485 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Gradle 在 Android 中的应用

Gradle 是什么Gradle 是 Android 项目的默认构建系统,它以领域特定语言 (DSL) —— Groovy 语言描述和操作构建逻辑。Groovy 是一种适用于 Java 虚拟机 (JVM) 的动态语言,它的语法和Java非常相似,并且完全兼容Java。Android APK 的构建流程如下所示,Gradle 就是帮助我们自动实现这一流程的工具。需要注意的是,Gradle ...
原创
发布博客 2019.01.05 ·
768 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Flask 个人网站重构上线

之前在服务器上部署了几个 Python 项目,个人网站也已经运行一年多了最近抽空整理了几个项目,重新写了网站项目,又部署上线了网站地址点这个说实话,是个相对单调的网站:自我介绍 + 一个博客项目值此重构上线之际,记录点心得系统架构nginx反向代理 、静态文件、负载均衡当有n个项目运行在同一服务器的不同端口时,通过配置 nginx,能以下列两种方式进入这些不同的项目:以不同的域...
原创
发布博客 2018.12.26 ·
395 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Fragment返回栈的手动管理

如何回到上一个Fragment项目开中需要经常在不同的Fragment之间跳转,随时可能从一个Fragment页面跳到另一个Fragment页面。这些页面的切换还是比较简单的,根据业务需求,相应地调用FragmentTransaction的show()、add()、hide()、replace()等方法,再提交事务就可以了。当页面不是很多时,这种方法足以应付了。但“返回上一页”这种需求随着...
原创
发布博客 2018.10.25 ·
1710 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

RoundingMode——Java中小数的舍位

RoundingMode 在 Java 中是一个枚举类,用来指定小数的舍位方式,共有8种对于这些舍位方式,之前用过却理解地很模糊最近一研究,又顿悟了!那一瞬间,我知道该把这些理解封印在这篇博客里了先来看一下常用的两种舍位写法,直接上代码两种舍位写法DecimalFormatDecimalFormat myformat = new DecimalFormat();myformat.s...
原创
发布博客 2018.09.21 ·
3644 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

HTTP / HTTPS 的一些相关理解

7层模型应用层HTTP、FTP、SMTP、POP3、DNS、DHCP 等表示层加密解密、转换翻译、压缩解压缩等会话层SSL(安全套接字层协议)、TLS(传输层安全协议)、RPC(远程过程调用协议)传输层端口到端口、端口(16位二进制,0到1023被系统占用)、TCP (传输控制协议)、UDP(用户数据报协议)网络层主机到主机、IP...
原创
发布博客 2018.09.19 ·
629 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Python项目模块命名问题

Python项目中模块名不要和别的库名相同,以免想导入别的库时却导入了自己项目中的模块,表面上还看不出问题所在!!!
原创
发布博客 2018.08.07 ·
3112 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

常用查找算法总结

静态查找和动态查找这是针对查找表而言的动态表指查找表中有删除和插入操作的表无序查找和有序查找无序查找:被查找数列有序无序均可有序查找:被查找数列必须为有序数列平均查找长度(Average Search Length,ASL)顺序查找适用于存储结构为顺序存储或链接存储、数据量大不的线性表时间复杂度:O(n)二分查找也称为折半查找,这是一种有...
原创
发布博客 2018.08.06 ·
406 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

常用排序算法总结

排序算法的稳定性当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一在待排序记录中,若存在多个关键字相同的记录,若排序前后这些具有相同关键字的记录之间的相对次序保持不变,则该排序方法是稳定的;否则就是不稳定的算法的就地性在运行过程中临时占用的存储空间随算法的不同而异,有的算法只需要占用少量的临时工作单元,而且不随问题规模的大小而改变,这是节省存储的算法...
原创
发布博客 2018.07.03 ·
381 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Java集合框架(JCF)归纳总结

HashSet底层用`HashMap`实现允许`null`值不重复原理:HashMap.keySet(),`HashSet`的值用作`HashMap`的键TreeSetTreeMap排序,插入时比较次序,红黑树为了实现排序,须满足以下1条:TreeSet中的元素须实现Comparable接口或者构造TreeSet时须传入实现Comparable接口的类的对象...
原创
发布博客 2018.06.21 ·
5863 阅读 ·
1 点赞 ·
0 评论 ·
16 收藏

“数据结构”的个人理解

数据结构的实现可以分为3个层次: 1. 抽象出某种结构中数据的组织方式和该结构操作数据的方式, 可使用图形表示,但不涉及具体如何实现具体到某种编程语言中(比如java),根据某种数据结构抽象出接口, 以展现出该结构操作数据的方式,比如java集合框架中的Collection、LIST等接口 此时的抽象可以再将某种数据结构抽象出几种不同特性的结构,比如SET和LIST接口编写...
原创
发布博客 2018.06.12 ·
806 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

从源码看ThreadLocal的底层结构

引言set()get()总结
原创
发布博客 2018.05.27 ·
1317 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

MySQL——查

子句总结组合查询组合查询是指利用UNION,将多条SELECT查询语句组合在一起,并将结果作为单个结果集返回。它可以简化复杂的WHERE子句、多表查询工作,有以下要求或特性:每个查询必须包含相同的列、表达式或聚集函数(各个列的列出次序可以不同)返回结果为每个查询的WHERE子句过滤后的或集,并且和单条SELECT语句一样,去除了重复的行ORDER BY排序子句只能放在...
原创
发布博客 2018.04.14 ·
371 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL——增改删

MySQL——增可以省略表定义中允许NULL值(无值或空值)或给出默认值的列,其他列不能省略,否则插入将失败并报错。INSERT [LOW_PRIORITY] INTO table_name(c1, c2, c3, c4, c5)VALUES('a', 'b', 'c', 'd', 'e'),('1', '2', '3', '4', '5');LOW_PRIORITY 表示降...
原创
发布博客 2018.04.14 ·
503 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多