10 工匠若水

尚未进行身份认证

我要认证

代码手艺人,秋名山老司机,开车小能手。专注于移动互联网及嵌入式领域。 微信公众号:码农每日一题 个人微信号:yanbo373131686 写博客不赚钱,就图交个朋友,欢迎来撩。

等级
TA的排名 2k+

还在因 JDK 兼容问题发不同 JAR 包做兼容?MRJAR 了解一下?

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景Java 9 版本中增强了Jar 包多版本字节码文件格式支持,也就是说在同一个 Jar 包中我们可以包含多个 Java 版本的 class 文件,这样就能做到 Jar 包升级到新的 Java 版本(新特性 API 使用)时不用强迫使用方为了使用新 Jar 包而升级自己的业务模块 Java 版本,也不用针对不同最低支持 Java 版本提供不同的 Jar,真正的做到了一个 Jar 包兼容所有的目的。这样的 Jar 称为 MRJ

2020-10-22 13:18:04

推荐一波代码量、行数、提交量、作者等全维度统计神器

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景代码各种维度的统计在有些时候是很重要的,这里总结一些常用的牛逼的代码统计工具,着重介绍了个人使用的 Statistic 插件。但是如果你是想统计团队维度的数据,推荐后面介绍的 git_stats 神器工具。Statistic IDEA 插件IDEA 的 Statistic 插件官方地址为 https://plugins.jetbrains.com/plugin/4509-statistic ,大家可以直接通过 IDEA

2020-10-11 20:50:17

WEB 前端模块化方案完全总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景JavaScript 的模块系统主要是在解决大中型前端应用脚本管理与加载问题。在前端模块化进程中主要经历了下面几种 JavaScript 模块化解决方案:石器时代IIFECJS,CommonJS 模块规范AMD,CMD,异步模块定义UMDESM,ECMAScript 模块系统(ES6)石器时代HTML <script>元素用于嵌入或引用可执行脚本。互联网早期,页面比较简单,使用内嵌的方式或者

2020-09-26 19:51:53

git hook 的无限畅想与简单落地总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景好的 commit message 是至关重要的,如果随意编写 log,带来的后果可小可大,但是无论大小都影响了开发的效率和回朔的难度,所以有必要进行 log 规范化检查。而检查的入口可以从 git hook 切入,而 git hook 却又有无限的遐想。关于 git commit 问题可以参考下面几个帖子:Augular git commit 提交规范如何写好 Git commit log?跑远了,我们下面先介绍

2020-09-26 19:45:45

让 CheckStyle 支持增量检查的一次落地经验总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景大家都知道静态代码检查工具有很多,譬如阿里的 p3c、sonar 挂钩的一堆插件等。但是这些东西对于一个已存在的项目不够友好,因为旧代码一扫描会出现一堆问题,修复带来的成本又很高,所以这些工具都比较适合新项目或者初期介入,对于老项目就显得很蛋疼了。因此有必要做到增量检查;一种就是针对版本控制的 changed 进行增量,这种情况会涉及到老文件修改一处全部问责的问题;另一种是针对新增文件进行增量,这种情况保证了从此刻开始新

2020-09-21 21:15:13

git hook 的无限畅想与简单落地总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景好的 commit message 是至关重要的,如果随意编写 log,带来的后果可小可大,但是无论大小都影响了开发的效率和回朔的难度,所以有必要进行 log 规范化检查。而检查的入口可以从 git hook 切入,而 git hook 却又有无限的遐想。关于 git commit 问题可以参考下面几个帖子:Augular git commit 提交规范如何写好 Git commit log?跑远了,我们下面先介绍

2020-09-21 21:08:56

JDK tools.jar 中 javadoc 自定义 doclet 的妙用

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~缘由相信大家都用过 javadoc 命令或者 IDE 封装命令生成 java api doc 文档吧,但是你有没有反思过 javadoc 命令是怎么解析文件生成的呢?其实 javadoc 在 jdk 目录下只是一个可执行程序,但是这个可执行程序是基于 jdk 的 tools.jar 的一个封装,也就是说 javadoc 实现在 tools.jar 中。很多时候我们可能会有一些奇葩的需求,譬如获取 java 文档注释进行搞事情

2020-09-19 21:05:32

你需要知道的神器之 editorconfig

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景经常在全球最大的男性社交平台 github 上看别人项目时,会发现好多顶级牛逼的项目目录下都会有个.editorconfig文件,出于好奇查了下才发现真特么香。恰巧最近在研究团队一致的 customer IDE format config file 场景,所以就深入品尝了下.editorconfig,发现他的这个真香只适合那些新立项项目或者强制全局执行的项目,因为深入研究后发现其不支持增量配置,略可惜,不过丝毫不影响我写篇

2020-09-19 20:59:32

大规模项目完全 gradle 化的一次落地总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景项目规模航母级庞大,年代久远,导致很多模块迟迟没有完全 gradle 化,所以浪费了一定的开发效率。由于构建采用了类似 c 语言的宏定义概念控制,加上自定义的拆 dex 构建,对部分大型模块不熟悉,所以整个构建无比复杂,从而对完全 gradle 化带来了一些坑。本文仅以总结记录自己的落地经验,以便后续回忆分析。落地过程中的坑与解决方案整体迁移的思路是先依据各种 ant 构建自定义的 build.xml 翻译成对应规则的

2020-09-14 21:04:36

Android Native Crash 捕获之 BreakPad

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景Android Native Crash 的捕获其实是有好几种方案的,譬如 coffeecatch、crash 后新进程过滤 logcat、google BreakPad 等,系统层面就另当别论了,系统有那么强大的墓碑机制,所以不讨论墓碑情况。应用层方案来说,其各自都存在一些利弊或者兼容问题,综合来看,Android 系还是推荐使用 google BreakPad 实现,本文就抛开其他方案来聊聊 BreakPad 在 An

2020-09-14 20:14:22

Python3.X 爬虫实战(动态页面爬取解析)

【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我】1 背景不知不觉关于 Python 3.X 爬虫系列已经介绍了如下系列:《正则表达式基础》 《Python3.X 爬虫实战(先爬起来嗨)》 《Python3.X 爬虫实战(静态下载器与解析器)》 《Python3.X 爬虫实战(并发爬取)》 《Python3.X 爬虫实战

2017-07-02 20:08:34

Python3.X 爬虫实战(缓存与持久化)

缓存与持久化简单说就是 Cache 或者 Persistence 了,这玩意和爬虫有啥关系呢?想象一下如果我们需要对同一个页面进行多次解析,我们前面的代码都会重新发起真实网络请求,这是不合理的,因为短期之内这个页面是不可能有更新的,我们重复拉取是没有意义的;其次我们很多时候爬虫的输出器其实就是需要把爬取的数据依据需求多元化的持久化下来,所以我们有必要先掌握常见的爬虫相关缓存及持久化。

2017-06-27 19:04:00

Python3.X 爬虫实战(并发爬取)

这一篇一下搞得有点不像在介绍并发爬虫,而成了 Python3 并发编程基础了,坑爹啊,无论怎样最后我们还是给出了两个基于 Python3 线程池、进程池的并发爬虫小案例,麻雀虽小,五脏俱全。虽然本篇对并发爬虫(Python3 并发)没有进行深入介绍,但是基本目的达到了,关于并发深入学习不是一两天的功夫,并发在大型项目中是个很有学问的东西,要走的路还有很长。

2017-06-25 16:37:31

Python3.X 爬虫实战(静态下载器与解析器)

这一篇内容主要延续上一篇[《Python3.X 爬虫实战(先爬起来嗨)》](http://blog.csdn.net/yanbober/article/details/73162298),重点偏向于爬虫爬取静态页面的下载器与解析器常用套路引导,主要适用于理解爬虫流程和自己编写小爬虫程序,对于大型爬虫这些介绍是十分不健壮的,我们一般会采用第三方爬虫框架,对于框架和动态页面爬取我们后面系列会进行介绍的。

2017-06-17 01:05:34

Python3.X 爬虫实战(先爬起来嗨)

爬虫的价值就不多说了,Python 的便捷与强大也就不 BB 了,在这个数据泛滥、追求效率的时代,使用 Python 可以为我们创造相当多的便捷,Web 开发、桌面小工具开发、粘性脚本编写、大数据处理、图像处理、机器学习等等,能做到的事情实在太多。

2017-06-13 22:32:32

Gradle 庖丁解牛(构建生命周期核心委托对象创建源码浅析)

上一篇《Gradle 庖丁解牛(构建源头源码浅析)》我们分析了 Gradle 框架自身初始化(非构建生命周期初始化)的核心流程,这一篇我们续着前面的分析继续(如果没看过前一篇的建议先去看前一篇,因为这一系列存在非常高的关联性)。

2017-04-06 19:59:23

Gradle 庖丁解牛(构建源头源码浅析)

总是有人问 Gradle 构建,总是发现很多人用 Gradle 是迷糊状态的,于是最近准备来一个“Gradle 庖丁解牛”系列,一方面作为自己的总结,一方面希望真的能达到标题所示效果,同时希望通过该系列达到珍惜彼此时间的目的,因为目前市面上关于 Gradle 的教程都是在教怎么配置和怎么编写插件,很少有说明 Gradle 自己到底是个啥玩意的,还有是如何工作的,本系列以官方 release 3.4 版本为基础。

2017-03-24 17:54:57

Android 应用层开发 Drawable 的一些叨叨絮

Drawable 是一个抽象类,提供了一些 API 方法去处理各种资源的绘制,但是又不具备 View 的事件与交互处理能力。额,再简单粗暴一点认为就是一个辅助绘制工具类,把各种东西都封装搞好以后直接给Canvas去画。既然是工具类,说白了就是个模板,你就把它类比 View 或者 Paint 来看吧。

2017-02-28 19:25:38

React Native Android 应用层实战沦陷记

一眨眼又一年快要过去了,原计划今年的最后一个小目标(React Native)看样子要留尾巴到明年了,React Native 想说爱你不容易。怎么评价你呢?应用层 JSX 编写还是很友好的,尼玛框架接入的各种锅却让人痛哭不已,万事开头难,对于 React Native 的接入可以说大量工作可能都需要投入到框架接入中(各种灰度实验的兼容性、各种锅),一旦接入稳定以后真的就是尝到甜头了。

2016-12-13 23:14:28

React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

理解 RN 框架的一些东西,以便裁剪和对 RN 有个更深入的认识,所以本篇总结了我这段时间阅读源码的一些感触,主要总结了 React Native 启动流程、JS 调用 Java 流程、Java 调用 JS 流程。

2016-11-21 22:06:02

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。