- 博客(27)
- 收藏
- 关注
原创 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI
本系列从Java程序员的角度,带大家理解前端Angular框架。本文是入门篇。笔者认为亲自动手写代码做实验,是最有效最扎实的学习途径,而搭建开发环境是学习一门新技术最需要先学会的技能,是入门的前提。作为入门篇,本文重点介绍Angular的开发、编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介绍一些Angular的概念。学习之后,希望你能够
2018-01-22 09:24:08
2945
原创 Kotlin的诱人特性
引子想统计出某个项目产品中所有文件Java源代码的总行数,写个Kotlin脚本很简单,只需 3 行代码搞定:import java.nio.file.Pathsimport java.nio.file.FilesFiles.walk(Paths.get(args[0])).filter { it.toFile().extension == "java"}.flatMap(Files::lin
2017-08-10 01:01:28
1397
原创 责任链模式的7种不同实现
引言责任链模式是经典的GoF 23种设计模式之一,也许你已经了解这种模式。不管你是否熟悉,建议读者在阅读本文之前,不妨先思考下面三个问题: 1. 如何用多种风格迥异的编程范式来实现责任链模式? 2. 能否让责任链上的结点多任务并发执行? 3. 能否把责任链部署到分布式环境下,分布在世界各地的多台计算机,通过某种方式构成一条责任链,协同工作,能否做到呢?引言责任链铁索连环无模式的
2017-04-19 13:32:10
21304
9
翻译 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-04-16 22:11:31
368
原创 基于RxJava实现事件总线
本文介绍RxJava中的Subject,同时对事件总线进行抽象,并给出两种实现扩展,方便使用。RxJava事件总线Subject: RxJava的事件总线RxJava实现事件总线很简单,就是创建一个Subject对象即可。Subject<Object, Object> bus = PublishSubject.create()Subject既是被观察者Observable,又是观察者(或叫订阅者,S
2016-12-28 16:06:43
975
原创 性能优化:RxJava异步响应式编程提升响应速度
本文通过引入RxJava,通过异步的方式,以短短30行的代码,解决了一个常见的性能问题,提升界面的响应速度。作为例子,请看下图:单线程的问题上图中,ID,Status,Runtime数据的获取都需要时间。如果用单线程去获取,然后再显示,那么程序的响应时间就是所有时间的总和,用户需要等待很久才能看到界面的更新。下面演示了单线程的问题:性能优化:RxJava异步响应式编程我们可以采用多线程并发执行的方法
2016-09-24 22:37:34
4097
原创 maven deploy to Nexus
Step 1: Write a setting file: wenzhe_nexus_settings.xml, and define the <servers> tag to specify the nexus admin user password.<settings> <mirrors> <mirror> <!--This sends everything else t
2016-09-22 17:11:04
400
原创 Java的AbsolutePath与RealPath的区别
虽然是给Java类做实验,但我们不需要创建Java文件和编译,太麻烦,可以方便的用scala的命令行解析器做实验,有代码提示和补全功能,非常方便。导入java.nio.file.*:scala> import java.nio.file._import java.nio.file._Paths.get只是对字符串进行Path封装scala> val path = Paths.get("..")p
2016-09-08 14:42:39
4302
原创 录制手机屏幕并且上传到博客的方法
打开Android sdk下的platform-tools目录 cd D:\Users\Administrator\AppData\Local\Android\sdk\platform-tools 运行adb可以录制:adb.exe shell screenrecord /sdcard/clipboard2file_demo.mp4这时已经开始录制了,在手机上操作完成后,电脑按Ctrl + C结
2016-08-28 15:14:05
685
原创 Android小公举:Clipboard to file
我们经常在手机上看文章,时间久了眼睛会很累。不如用耳朵听。有些App会发音,可以把文字朗读出来,比如多看阅读就是这类软件中比较好的一个。但是它不能读剪贴板的文字,我一般是这样用的:有段想听的文字,选中,复制。打开文件浏览器(如ES),创建一个txt文件,编辑,粘贴那段想听的文字,保存文件。用多看阅读打开那个文件,然后朗读。这个步骤很繁琐,为了简化流程,我最近写了一个Android上的小工具,
2016-08-28 14:52:55
763
原创 已知前序遍历和中序遍历,求后序遍历
有这么一道面试题:已知一棵二叉树的前序遍历结果为ABCDEFGHI,中序遍历结果为CBDEAFHGI,则后序遍历的结果为( )。这个题目很简单,很多应聘者都知道结果,而且也能够分析他的思路,但要求写代码却有不少人写不出来。思路大家都知道:前序遍历列表的第一个点,是树的根节点;它在中序遍历列表的位置,把中序遍历列表分为左右两截,左边为左子树,右边
2016-08-25 13:55:33
1374
原创 Android Studio使用入门指南
去中文社区下载Android Studio,安装。创建ProjectTip of Day设置主题SDK设置UI显示不出来,Rendering Problem,连接手机,运行,调试成功连接上我的手机,开发GUI和业务逻辑导出,生成apk安装包文件。Git设置GitHub设置创建GitHub Repository,并且提交代码。在GitHub上可以看到Repository已经被创建出来。——- 本博客所
2016-08-21 23:20:39
666
原创 如何向GitHub贡献代码
前提条件创建GitHub账号,邮箱激活,安装GitBash(Windows系统)。如果还没提交过代码,需要设置Git user,向GitHub输入SSH Key;如果已经向GitHub提交过代码的,可跳过这两个步骤,直接进入创建GitHub仓库一节。设置Git user在Bash shell中(Windows则用GitBash),设置你的git用户:$ git config --global use
2016-08-14 08:51:18
1145
原创 实验驱动开发与响应式编程 ---- File Watcher的技术实现
File Watcher,是由wenzhe本人开发的一个文件监控工具(见:File Watcher,不只是一个工具),关于它的具体需求以及需求分析过程,请参加wenzhe本人的另一篇文章: 基于领域特定语言(DSL)的用例驱动开发(UDD)。不同于需求分析,本文主要立足于其技术实现细节。本文通过介绍它的技术实现过程,来阐述两个概念:实验驱动开发(EDD),以及响应式编程(使用RxJava库)。实验驱
2016-08-12 01:52:05
3243
1
原创 File Watcher,不只是一个工具
File Watcher不只是一个工具,还是一种语言,同时又是一个轻量级的Java第三方库。作为工具简介File Watcher是这样一个通用的命令行工具:监控文件(夹)变化,包括文件(夹)的创建、修改、删除文件变化时能够自动运行指定的命令方便用户配置要监控的文件(夹),能够定义丰富灵活的过滤规则每个用户都可以有自己的配置,不同用户的配置可以不相同被触发运行的命令可以是shell命令,sh
2016-08-11 18:22:58
8296
原创 基于领域特定语言(DSL)的用例驱动开发(UDD)
本文通过设计File Watcher这个软件,来阐述DSL-UDD设计思想。文件监控工具File Watcher的设计愿景监控文件(夹)变化,包括文件(夹)的创建、修改、删除文件变化时能够自动运行指定的命令方便用户配置要监控的文件(夹),能够定义丰富灵活的过滤规则每个用户都可以有自己的配置,不同用户的配置可以不相同被触发运行的命令可以是shell命令,shell脚本,也可以是某种编程语言代
2016-08-11 18:02:33
3984
原创 sshutil工具介绍:一个跨机器的脚本执行器
需求想象如下Case:1. 我们本地有一个文件,需要上传到远程计算机上;2. 我们需要运行远程计算机上的命令来的这个文件进行操作;3. 我们可以上传一个脚本到远程计算机上;4. 我们可以远程执行这个脚本。对于这个Case,我们每一步都要手动操作。我有个想法,就是把整个过程都脚本化,在本地写一个脚本,通过设计的一个工具运行一下,就可以完成这一系列上传、远程执行的操作。
2015-06-11 10:49:21
2562
原创 Eclipse RCP开发常见问题
1. Window Builder 的控件工具箱缺少某一类组件,比如某一天发现Forms API丢了,怎么办?Root cause:缺少依赖。Solution:在MANIFEST.MF中的Dependency页面把加入所缺少的依赖项。如下图:---------------------- 本博客所有内容均为原创,转载请注明作者和出处 ---------------
2013-06-19 11:13:14
953
原创 Pretty工具类:让软件开发调试与单元测试更happy!
在软件开发调试过程中,经常会去查看某一对象的取值。但类之间复杂的层次关系,再加上数组(链表)、映射(字典)等多种数据结构,让我们难以一目了然。本文介绍的Pretty工具类,以缩进的方式突出类之间的层次关系,并且将对象一层层的整个结构pretty地打印出来! 在编写单元测试时,经常会去比较某一对象是否符合预先的期望值。但对于一个复杂类的对象,这种单元测试并不好写,容易片面化、复杂化。Pre
2013-06-16 10:14:46
2102
原创 软件需求文档可以这样写 ---- “香皮匠式”需求文档
不同的team对于同一个需求的理解是不完全一样的,甚至有可能完全不一样。由于知识背景的差异、工作重心的差异,看问题的角度也不一样,见解自然也就容易产生分歧。比如:1. 产品人员注重产品的功能、外观、易用性、可靠性,以及能为客户解决哪些实际问题,带来多少好处。特别是站在用户的角度考虑问题,想客户之所想,提出合理的需求让开发人员去实现。成就感来自于用户对产品的认可和赞扬,让客户Happy!
2013-06-15 08:10:22
1178
原创 如何在INSERT语句中使用SELECT的结果
有两张表,第一张表session如下:mysql> desc session;+-----------------------+--------------+------+-----+---------------------+----------------+| Field | Type | Null | Key | Default
2013-04-06 07:19:05
1765
原创 My suggestions to do estimation
1. Do not do any estimation before the following done:(1) First of all, list all the tickets, and make all the team members to understand the requirements of all the tickets well. If not certain, we
2013-04-04 12:31:21
766
原创 从组合框控件看SWT与JFace的区别
Combo是SWT的组合框,ComboViewer是JFace的组合框,都是组合框,ComboViewer其实就是在Combo上面加上MVC的封装。记住下面的公式:JFace = SWT + MVC比如说要实现如下图的任务,选中一本书,显示它的价格。首先定义领域类(Domain Class),如下所示:/** * @author liuwenzhe2008@q
2013-03-14 00:24:58
2997
原创 好用的Linux命令
1. whoami: 显示用户名WenzheServer-host1-10> whoamiwenzhe2. who am i: 显示用户名,当前的时间,客户端的IP地址,非常有用WenzheServer-host1-10> who am iwenzhe pts/63 2013-03-11 00:45 (172.18.214.181)
2013-03-12 15:53:06
613
原创 SWT布局(Layouts)
每种类型操作系统对屏幕的定义不一样,在开发跨平台应用软件时,我们一般都会使用布局(Layout)来管理复合控件(Composite)中子控件的位置和大小。通过布局,程序员可以充分展示那些埋没已久的艺术细菌,哦不,是艺术细胞!Composite及其子类都可以设置布局,常用的有Shell,Group,TabFolder等,本文将像Composite等这类可以放置布局的控件称为布局容器,布局中的子控件称
2013-03-10 17:46:27
6631
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人