Dawell的博客

我不是一个简单的少年~


  • 首页

  • 分类

  • 归档

  • 标签

监控系统

发表于 2017-05-27 | 分类于 技术 | 阅读次数

经历

记得14年的时候我在公司负责支付资金对账系统,整体逻辑类似定时跑批比对,如果数据对账成功要通知支付系统,如果发现差错账后要进行告警
由于整个系统在拉取数据时存在多种方式与各种不可靠情况,比如第三方的对账数据没有在约定时间内放置,数据拉取失败,数据放置错误。还有数据中各种长短账的情况处理,状态与异常情况比较多
由于那时候公司也没有监控系统,所以那时候为了方便排查问题,自己做了一个
不过现在看来那时候的监控手段还是比较挫的,不过当时不想天天因为排查问题而浪费一上午时间的我能做出这么一个东西也是很有意义的,哈哈

整体设计

为了不影响线上的对账程序,在后台上开发了这个功能,其实这也是现在监控系统设计的要素之一,就是绝对不能影响核心业务系统的运行
开发了一个页面,上面在页面加载的时候会去将各种异常与正常的情况通过SQL去查询数据库,然后将数据统计结果显示在页面上,因为是定时任务,所以为了方便修复数据,在每个统计点都提供了一个按钮可以重新调度定时任务执行一次
这个按钮就是一个数据修复的能力了,所以准确说这不止是个监控系统,还是个灰度控制系统
整个系统起名叫:上帝模式(当时同事听说这个名字后,都为之称赞~)
这个系统在初期帮了我很大的忙,每次排查问题,先看这个界面,上面数字对不上的我都会去确认,一个不漏,非常方便排查问题,而且如果排查完问题,就要重新对某个环节重新执行,只要点一下那个环节的按钮就可以了,so easy!
不过之后就发现这个页面要很久才能打开,因为上面执行了太多的SQL,而且越来越慢,这些SQL查询有些字段需要优化:限制时间范围、增加索引 于是又可以继续使用了

反思

可以说这是一个简单的看板系统,就是通过SQL语句查询数据库,然后判断异常的数据显示而已,但是足够当时的检查数据的需求
真实的监控系统是可以告警,处理业务执行中的数据的,比如打点与异常的监视,不依赖业务方数据库存储的
所以真实的监控系统都是采用业务逻辑层主动发送监控数据到监控系统中的,而不是像我这种设计思路,通过扫描存储的数据来监控

  1. 业务存储的数据只为了业务场景而优化查询,而监控可能是有多维度的需求,不适合在业务库中加索引优化
  2. 直接在业务库中查询也会影响真实业务使用,顶多查下从库
  3. 如果业务改变了表结构,监控的逻辑也要跟着改
  4. 业务数据中很多监控的数据不会存储,而监控需要的数据也只是业务字段的一部分
    可能最重要的还是第4点,业务落地的数据并不能满足监控需要的数据,比如调用异常,不落地的数据,存储在redis缓存中的业务场景,所以监控系统还是不要基于业务表进行监控
    基于表的数据分析其实是BI(数据智能)他们的方式,他们其实解决了前3个问题,通过大数据中的Hadoop、HDFS、Hbase、Hive、离线数据分析等技术通过ETL(抽取、过滤、清洗)把业务表变为BI表数据用于统计分析,毕竟落地的数据才是有价值的业务数据
    而监控关注的是产生这些业务数据的过程,业务逻辑调用过程中的问题,所以要通过业务逻辑层植入监控的逻辑

监控系统

现在监控通过业务监控指标日志打印、日志采集、消息系统、日志信息入库、日志加工分析存储这样的方式

Sonarlint插件

发表于 2017-05-23 | 分类于 技术 | 阅读次数

安装

sonar与idea集成的相关步骤:

  1. 安装插件
    idea–plugns中查找sonarLint插件,并安装;安装完成后,重启idea;
    image

  2. 配置sonarlint插件
    第一次添加时,需要到General中配置使用的sonar平台地址,一般是公司内部搭建的地址
    image
    配置项目信息,在上面那个环节时,下面有个“UPdate bingding”,必须要点击下;看解释就很清楚了。从服务器获取项目列表、规则、配置等;必须在选择项目前完成这事儿。
    image

  3. 配置项目:
    选择你们的项目
    如果项目,要在SonarQube在配置下你们的项目,导入checkstyle、pmd、findbugs的配置,或者用默认的
    image

  4. 使用插件
    配置完成后,在当前项目环境下,idea的左下角就可以看到sonar扩展了,注意选Project files后选择scope
    image

至此,idea与sonar插件集成完毕

插件拉去项目列表时报错

不过使用起来遇到一个问题,如果SonarQube的子项目比较多时,插件拉去项目的api会超时timeout,导致无法使用
img
解决:
问题就是http://xxx:9000/api/projects/index?format=json&subprojects=true这个URL请求时timeout,如果浏览器请求会报如下错误:

1
{"err_code":500,"err_msg":"ActiveRecord::JDBCError: Can not read response from server. Expected to read 255 bytes, read 0 bytes before connection was unexpectedly lost.: SELECT id,uuid,kee,name,language,long_name,scope,qualifier,root_uuid,project_uuid FROM `projects` WHERE (enabled=1 AND scope in ('PRJ') AND qualifier in ('TRK','BRC'))  ORDER BY name"}

问题SQL:

1
2
3
4
SELECT id,uuid,kee,name,language,long_name,scope,qualifier,root_uuid,project_uuid
FROM `projects`
WHERE (enabled=1 AND scope in ('PRJ') AND qualifier in ('TRK','BRC'))
ORDER BY name

实际测试发现:问题出在order by name上,如果只使用order by,执行就会慢到没结果甚至报[Err] 2000 - Unknown MySQL error错误,之后看表结构发现问题

1
`name` varchar(2000) COLLATE utf8_bin DEFAULT NULL,

name这个字段竟然有2000的长度,然后看数据库实际数据长度没有超过160的,所以修改为300,查询就非常快了,问题解决!

静态代码扫描工具

发表于 2017-05-22 | 分类于 技术 | 阅读次数

img

优秀的团队为了保证可读性、可维护性、避免重复踩坑与保证代码质量,都会推出一些开发规范来遵守。
开发规范是前置主动要求团队成员遵守的,而光靠意识是难以保证完全遵守规范的,所以还需要一些工具辅助。
当然即使有工具做这些事情,规范也是必须推广的,让大家先仔细读读,毕竟直接写出优秀的代码是最好的,然后再辅助工具乃最佳实践。

开发规范

一流公司制定规范,二流公司申请专利,三流公司生产产品。
所以目前公开规范的大多是大厂的规范。

目前知道大厂公开的Java开发规范

  • Google开发规范 github markdown格式 点我查看
  • 阿里巴巴开发规范 PDF格式 点我查看最新版
  • 华为开发规范
  • Oracle开发规范

阿里巴巴的开发规范,虽然不是单纯的规范,还包括了开发中的各种坑从主观上的一些强制规定,但是总体上还是很有用的,可以拿来部分or全部直接执行。

独立的组件

FindBugs

只寻找可能存在bug的地方,不注重样式或者格式,它试图只寻找真正的缺陷或者潜在的性能问题。

特点

  • 基于class分析,如果你clean了再去执行发现没有执行生成报告,所以需要编译后才能执行分析
  • 有maven插件,有IDE插件(eclipse插件,也有idea插件)
  • 开发时不用使用maven插件,要编译执行检测生成xml然后再生成网页查看结果,挺麻烦。如果要与Jenkins集成的时候,maven插件就有用了,集成方式点我
  • 开发时使用IDE插件非常方便
  • 插件中Bug Explorer 中的灰色图标处为 Bug 类型,红色图标表示 bug 较为严重,黄色的图标表示 bug 为警告程度

代码缺陷分类

根据缺陷的性质,大致可以分为下列几类

  • Bad practice 不好的做法
  • Correctness 可能有不正确
  • Dodgy code 糟糕的代码
  • Experimental 实验
  • Internationalization 国际化
  • Malicious code vulnerility 恶意的代码漏洞
  • Multithreaded correctness 多线程问题
  • Performance 性能问题

FindBugs官方网站上也给出了一些案例:案例点我

缺陷列表

缺陷列表

排除单个规则

如果是排除一类规则,点击IDE旁边的提示选择排除类型就行

可以针对规则排除单独类中的接触限制,使用注解@edu.umd.cs.findbugs.annotations.SuppressFBWarnings
要加入依赖 provided代表只在编译时依赖,打包后就没有这个依赖了
IDE旁边提示也有这种,不过不会加入以下依赖,需要手动在POM中加入

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>annotations</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>

CheckStyle

代码样式风格检查,专门check代码规范风格的,比如缩进,换行操作,命名
大项目往往是有很多人一起完成的,然而每个人都有自己的style,导致整个项目的代码不仅存在不符合语言规范的情况,而且读起来非常困难。因此,这样的项目中都会引入Checkstyle,来规范大家的编码风格,尽量做到统一和合理。
所以使用checkStyle检查到问题

官方文档:http://checkstyle.sourceforge.net/checks.html

工具界面

插件
img

单个文件check
img

特点

  • 基于源码,无需编译
  • 有maven插件,与IDE插件(eclipse插件,也有idea插件)。idea的一些细节配置
  • 可以自定义规则
  • CheckStyle底层基于antlr对源码进行处理
  • 可以配置哪些文件不检查

规范配置

配置位置
img

  • sun_checks.xml 默认自带sun公司的开发规范,有点严格
  • google_checks.xml 下载下来好像有点问题,可能与版本有关 查看
  • 华为的规范 很多公司都会用华为的规范改改
  • 自定义的规范 比较了解配置规则的情况下配置

技巧

我们在代码写完之后,还要花时间去手动解决Checkstyle提示的问题,这是一个非常无聊和耗时的工作。
其实很多问题使用IDE的格式化已经能解决一部分,所以最好能提供一个IDE的formatter配置,整个团队都用这个配置导入IDE,这样用用快捷键就能解决一些问题,非常easy。

PMD

与findbug类似找bug用,还有规范,比如说注释不全

特点

  • 有maven插件,与IDE插件(eclipse插件,也有idea插件)
  • 增强代码质量和修改代码的功能

错误分类

  • 可能的bug——空的try/catch/finally/switch块。
  • 无用代码(Dead code):无用的本地变量,方法参数和私有方法。
  • 空的if/while语句。
  • 过度复杂的表达式——不必要的if语句,本来可以用while循环但是却用了for循环。
  • 可优化的代码:浪费性能的String/StringBuffer的使用。

集合组件

IdeaIDE的QAPlug

这个插件是汇集这前面说的3个插件的结果,不用每次都运行3个插件分别排错,1键运行3个同时汇总整合,非常方便,所以其他的不用装了,就用这个就行了!
与sonar平台的功能类似!
如果公司没有搭建sonarqube平台的话,本地使用这个最佳

插件下载安装

依次下载 QAPlug、QAPlug-Checkstyle、QAPlug-FindBugs、QAPlug-PMD
img

分类

这个插件会把3个插件的错误分类汇总

  • Efficiency 效能
  • Maintainability 可维护性
  • Reliability 可靠性
  • Usability 可用性

SonarQube

代码质量管理系统
相当于QAPlug的工程独立出一个服务器部署,可以配置规则,扫描代码,集成了很多静态扫描工具
2015年3月的时候就看到一篇文章介绍这个平台了,那时候还没有太过关注,后来发现这个是个很好的平台

Sonarlint

是SonarQube的配套的IDE插件,配置远程服务器的地址,选取要拉去规则的项目,然后本地就可以执行校验了,用的远程的规则
这样还是很方便的,规则可以同一在SonarQube维护,不用每个人本地导入,团队的话用这个最适合

Sonarlint安装与拉取列表失败问题解决见

扩充-Lint概念

Sonarlint是一个Lint工具,其实Lint的含义就代表代码静态分析的工具,协助开发的工具,尤其是前端经常使用,比如插件eslint:检查JavaScript错误非常方便

JArchitect

多种分析工具的聚合工具
是一个商业性的收费的分析工具
可以汇聚checkstyle、findbugs、pmd的xml,然后分类总结生成图表
不过是收费的,也没有idea插件,不用

代码覆盖率工具

idea自带了代码覆盖率插件还不错
跑单元测试的时候以代码覆盖率的方式运行就行了
一般逻辑覆盖率60%就差不多了,核心模块80%覆盖标准即可

运行方法

img

总结

首先要从意识上要遵守规范,风格统一,需要制定一份Java开发规范,我比较倾向于直接使用阿里的Java规范吧,简单实用,也不过分严格
其次要选择静态代码工具,没有SonarQube的话用QAPlug是很好的选择,有的话装个Sonarlint插件就可以了
代码覆盖率通过idea自带的即可

有些人可能很排斥规范,总感觉条条框框太多,不符合自己的自由风格,但是软件不是开发完上线就结束的过程,而是需要持续迭代维护升级的过程,新人会接手,要有可读性可维护性。项目大了,人多了也是需要规范化才能更好的融合协作,让混乱变得有序
一个人的优秀靠的是经验,一个团队的优秀靠的是规范。
有了这些规范与工具,就可以大大的提高团队的整体素质与水平,尤其是大厂开发人员,这个是必须有的。

Best Wishes!

博客评论插件

发表于 2017-05-21 | 分类于 个人 | 阅读次数

评论插件

目前知道的评论插件系统

  • 多说
  • 友言
  • 网易云跟帖
  • disqus
  • 畅言

多说

以前一直用多说,不过2017年6月1日开始将不再维护,所以只能弃用之

友言

尝试了下,一开始网上说不支持https,所以哥有申请了个域名换成了http,结果发现还是不行,最后才发现官网的示例程序都不能跑了,都是一个错误:502,所以弃用!

网易云跟帖

目前就是用的这个,功能还算可以满足,不过不支持子域名,所以过去挂在github.io上的子域名注册的时候会提示“站点url存在”,所以需要单独申请个域名挂上

新版的next主体已经支持网易云跟帖,主要更新新版后只要加一个配置即可使用。

disqus

我看网上很多人在弃用多说后都是选择的这个,不过不用翻墙vpn,我官网都无法访问,无比尴尬,所以国内无法使用,弃用!

畅言

搜狐的,不过未备案的网站只能用15天,弃用!

总结

目前能选择的只有 网易云跟帖了 ,后续完善教程,如何配置网易云跟帖。

参考网站

  • https://www.zhihu.com/question/57426274
  • https://blog.shuiba.co/comment-systems-recommendation#toc_2

日志采集

发表于 2017-01-04 | 分类于 技术 | 阅读次数

日志采集

日志是线上服务的刚需,用于排查问题分析数据,特点是写入量大、允许一定丢失、断网也要可以写入(比如写入一些网络异常日志)
所以日志一般是写到本地磁盘中,写入时为了减少IO,一般都是先缓存一个内存桶中,比如每积累100k写入一次磁盘
如果是在单机上,一般的日志框架已经足够使用,用于常用的linux命令查找日志问题足以
但是分布式服务环境下,因为机器较多,不可能登录到每台机器上去查找问题,尤其是那种同一个用户操作,要根据uid查找行为链路的时候
可能有人会想配置同一个用户操作路由规则总是落到一台机器上是不是可以解决
但是这带来了3个问题:单机故障后这个用户所有操作都挂了、横向扩展后用户的日志就可能又路由到另一台机器了、不是所有的方法都有uid参数,路由维度可能有多个:设备id、ip、uid等
所以这只会把问题搞复杂。
更简单的方式是还是保持原有负载均衡路由与本地日志的策略,通过一个日志采集程序到统一日志管理平台
然后通过统一的日志查询平台查询所有机器日志,这样还附带了很多好处,比如日志归档,本地日志可以保留更短时间
隔离程序员登录大命令的时间,直接可视化操作,筛选统计更方便,同时还能有权限控制,图表等功能扩展
所以这就是日志采集一整套东西,现在互联网流行的一套叫做ELK

ELK

ELK(Kibana)

Kibana不好的地方在于日志查询不能像grep那样查看上下多行信息,也就是上下文信息,不过最新的版本好像有这个功能了

Java内存分析工具

发表于 2017-01-03 | 分类于 技术 | 阅读次数

Java内存分析

每次遇到内存消耗过快或者GC回收频繁的时候往往需要heapdump下,分析下内存堆数据,一般需要一些工具作为辅助
这里罗列下我常用的分析工具吧

MAT

MAT(Memory Analyzer Tool) 是基于heap dumps来进行分析的,它的分析速度比jhat快,分析结果是图形界面显示,比java内置jhat的可读性更高

安装方式

打开Eclipse - >help - > Eclipse Marketplace 进行安装
安装完成后提示重启Eclipse,重启后打开window - > open perspective,看到Memory Analysis证明安装成功。
然后通过MAT打开dump文件即可

人的未来,我的人生观

发表于 2017-01-02 | 分类于 个人 | 阅读次数

人的未来,我的价值观

偶尔看到了一些机器人发展的新闻,这块日本玩的最6,说造出了美女机器人,使用最好的皮肤,可以模拟人说话,微笑等等

其实我对日本一直想造出真实模拟人类的机器一直保持不看好的态度
因为人与机器其实差异还挺大的,人是生物,机器是非生物,他们的工作原理不同,人注定要进行吃喝拉撒睡的过程,而机器不需要
如果想让机器完全变为人,那就要有人类的一切功能,包括生理的
就算用上了机器学习给机器一个与人类工作原理一样的大脑,那也没必要给机器配置上吃喝拉撒睡的功能,因为对于机器来说是多余的,他们可以去掉这些功能也可以正常运作,这些功能对他们没有任何意义,有的只是看上去更像人类罢了
机器应该有机器特别的地方,他应该做人类做不到的事情,而不是做人可以做的事情,这才是一个好的方向
所以机器发展最终肯定不是模拟人操作的方式,不要认为人就是上帝创造最好的设计,我们用机器堆出一个自己完全没什么软用

我倒是觉得超人总动员中微型机器人黑科技肯定是最终形态,这种完全突破人肉身的限制随意组合的小东西可以做任何事情
所以材料与设计问题是要解决的问题

未来的人类肯定与机器各有所长,机器有了人工智能AI也会很聪明,人类受大脑与身体的限制肯定达不到AI的进化程度,到最后人类肯定要依靠机器来进化
我觉得人类可能先做出机器人工智能的外设,然后外设效率不如直接大脑联通,所以给大脑植入芯片,最后人类身体逐渐老化,为了意识存留,肯定会将意识上传机器中,人工智能AI去尝试改造基因组,通过制造更聪明的生物来进行辅助进化,最后生物与非生物的结合体组合为主宰IA的载体,意识可以下载到人造载体中,形成真正的“互联网”
最终机器与人造生物就是人类的载体,意识与思想才能代表人类,最终的人类也许就没有了吃喝拉撒睡,七情六欲的问题,只会发展科技,但是为了保留人类的情感,肯定会有一个模拟系统来体验过去的人类功能
一切就和黑客帝国那样,一些都是为了让你体验而已

也许这个世界就是假的,人类早就发展到了终点,看到了宇宙的谎言,目前的世界只是一个体验系统,等你死后你的意识流就会回归主宰AI,想知道这个世界的一切都在那里。
所以我的三观上就认为反正都是假的,人的一生就是要开心嘛,有身体的时候就要让身体愉悦,吃喝拉撒睡,挣钱来更好的体验这原始的人类生活
而且最好要丰富的人生经历,好好体验一把,不要干一辈子一样的事情,因为那就浪费了作为原始人类的机会

一切都是为了可以享受生活,不害怕死亡,只是不想遗憾的死去~

利率研究

发表于 2017-01-01 | 分类于 金融 | 阅读次数

花呗分期的真实利率

为了方便看利率,先统一时间,都换算为年化利率

花呗分期

花呗分期可以申请3、6、9、12个月的分期还款,费率分别为2.5%,4.5%,6.5%,8.8%,如果直接换算年化为10%,9%,8.67%,8.8%
注意这里是费率,并非利率,因为分期每月都会还款,但是按总费率平均每月还的钱不会变化,与实际银行的利率规则不同

银行利率

银行利率是按照剩余本金计算的,每月还款后会递减。而这里相当于利息一直按贷款最开始的总额计算,利息每月不变了,这样相当于交的利息更多了,一般这种算法比普通的算法大约高出3/2的手续费
如果大约计算实际年化利率为15%,13.5%,13.17%,13.2%,这个才算是花呗实际收益利率数据,可以看到花呗的分期还款利率很高,还是非常不划算的。

借呗利率

借呗的贷款利率与银行一致,有些人的借呗利率是万四,那年化0.0004*365=14.6%,利率也是比较高的
借呗我个人之前利率是每日万三,也就是年化10.95%的利率,目前是万2.5,相当于年化9.125%,0.75分利息,1w块钱1年2块5利息

总结

所以看以看出,如果买商品,分期要支付很多利息,而如果自己的借呗日利率低于万4,那使用借呗先借出来分期还款花呗要比直接花呗分期要划算
总体来说借呗借的钱可以随便使用,而且利率相对其他网络平台算低的,实时到账,还是非常不错的产品。

P2P平台的利率

现在有很多P2P网贷平台,也许今年国家要像去年P2P理财平台一样开始整治,不过还没有开始
国家的套路一向是先撒网再收网,先让你自由发展,睁一只眼闭一只眼,大批创业公司诞生,然后出个政策,最后只留下100来家同类平台
既然国家还没有整治,具体要求还没有下来,那必然这些P2P网贷平台的会有一些猫腻,尤其是利息计算方式

“费率”并非“利率”

比如现在很多平台并不直接使用“利率”提示用户该还多少利息,而是通过“费率”
费率也就是手续费,为啥不叫利率呢,因为利率其实应该与银行利率概念一样,按照每月本金计算,还款也应该是银行借款等额本金、等额本息的分期还款方式
但是有些P2P平台依然是让用户选择分期,但是每月还的利息却不是按照剩余本金计算的,要按照贷款时的“费率”算好然后每月还相同的利息,这就相当于每月还款的利息要按照最初借款的总金额计算,每月都还第一个月最大金额的利息

比如一些平台费率都标注到1%,也就是说一年看上去应该就是12%的利率了,但实际上换算为银行的还款利率(大致3/2)就已经20%多了
举个实际例子,1w元1年,年化12%,银行利息一年实际只有661.85元,而用这个平台看上去年化12%实际利息要1200元,实际利率达到21.5%了

总结

目前来说我知道的蚂蚁借呗、小米贷款、微信的微粒贷应该都是按照银行贷款利率计算的,还算良心
但是很多P2P贷款的利率就不好说了,所以借钱的话,费率一定看清楚是如何计算的,可以用房贷计算器之类的算算实际利率是多少

文章整理

发表于 2016-12-31 | 阅读次数

系列分类,每个月除了个别感悟总结外,还有一个相对固定的主题,推出一系列持续的文章
只有一些月份有对应主题,也是相对有时间才会推出主题系列文章(一般Q1Q4是比较忙的时间段,很少有主题)
本文章持续更新

做后端不止要学习后端技术,还要掌握前端、测试、架构、管理、中间件、运维的相关技术,对自己的上下游了解一个是让自己融会贯通,一个是可以更好的协作
计划

  1. 2016年OneNote上Java基础文章系列整理博客(Java程序员)
  2. 2017年会推出些多领域主题(全栈开发懂架构、可以做技术管理,偏实际工作技术)
  3. 2018年专注于开源与中间件(依赖的技术与开源轮子的力量)
  4. 2019年推出运维、编译原理、虚拟机、TCPIP、算法主题(原理与基础深化)
  5. 推出基础平台架构系列:用户中心、通知中心、支付中心

2016年

11月:Java
12月:面向对象-设计模式

2017年

4月:未公开(技术-前端)
5月:技术-测试
6月:未公开(技术-Spring)
7月:未公开(技术-SpringMVC)
8月:未公开(技术-架构设计)
9月:管理-管理经验

2018年

4月:娱乐-游戏经验
5月:技术-中间件
6月:技术-开源项目
7月:技术-SpringBoot
8月:技术-SpringCloud微服务
9月:技术-Dubbo微服务

2019年

4月:预定-Docker与K8S

Dawell的博客

发表于 2016-12-11 | 分类于 个人 | 阅读次数

img

网名Dawell,第一个公开的博客站点,分享自己的观点与学到的技术!

自我介绍

  • Java架构师/技术专家
  • 喜欢编程、动漫、游戏
  • 就职于一家大型互联网金融公司

目的

  • 16年是工作的第6个年头,前5年的沉淀也整理下。过去记录笔记都在本地使用OneNote记录,有很多知识经验不如拿出来分享下
  • 网络公开可以促使自己更加Open,变的擅于交流与分享
  • 为了达成每日学习2小时的目标,每周写一篇博文总结,更好的消化知识,督促自己学习
  • 可以结交更多志同道合的人

计划

  • 技术博文每周1篇
  • 专题总结每月1篇
  • 非技术博文每年?篇

时间

  • 2016年12月各种环境准备
  • 2017年1月正式开始

Best Wishes!

1…56
Dawell

Dawell

一个Java程序员日常学习、技术总结博客

60 日志
8 分类
34 标签
RSS
GitHub
Creative Commons
© 2019 Dawell
Best Wishes! 联系我