MDUI 是一套用于开发 Material Design 网页的前端框架
官网
欢迎来到我的小站呀,很高兴遇见你!🤝
我是18届毕业生,专业是软件工程移动互网
喜欢编程、看书和摄影 😁
《黑客与画家》
《软件随想录》
《暗时间》
《人生哲思录》
《少有人走的路》
https://github.com/gaohanghang/WeChatRead
使用 electron 构建的微信读书电脑客户端
CSDN:https://blog.csdn.net/qq_22871083
博客园:https://www.cnblogs.com/gaohanghang/
公众号:《骇客与画家》
头条号:《骇客与画家》
《骇客与画家》
B站地址
https://space.bilibili.com/180303522
视频制作网站和软件
iMovie
MacBook Pro 2019(15寸)
AOC 4k显示器(27寸)
算法能力
工程能力
沟通能力
表达能力
英语能力
翻译 YouTube 视频
《java核心技术卷一》
《深入理解Java虚拟机》
《Java并发编程实战》
《码出高效 Java 开发手册》
知识的积累
价值的展示
莱卡相机
莱卡的相机实现太漂亮了
不要怂,就是干
提倡把自己丑陋的代码在比自己更优秀的人面前晒出来。含蓄的结果就是以为自己就是宇宙中心,感觉别人的代码都不如我。— 《码出高效 Java开发手册》
应该保持持续性的努力,而不要间歇性的努力
比起后悔的痛苦,努力的辛苦又算得了什么
不着急,不害怕,不要脸 — 冯唐
使用手机拍摄学习延时视频,逼自己学习
看会书
任何变量前被 final 修饰就是 final 变量,定义的类前被 final 修饰就是 final 类,任何方法前被 final 修饰就是final方法。
当用final修饰一个类时,表明这个类不能被继承。
下面这段话摘自《Java编程思想》第四版第143页:
“使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的 Java 版本中,不需要使用 final 方法进行这些优化了。“
意思就是说如果认为方法足够完整,子类不需要修改就可以用final方法,避免子类去修改。
final方法是静态绑定的,在编译时候就确定好是哪个类的方法,所以 final 方法比非 final 方法快一些。
简单来讲,就是final修饰的常量普通变量不可改变,修饰的引用变量引用不可变,引用对象的内容可以改变!
master: 默认开发分支
origin: 默认远程版本库
Head: 默认开发分支
Head^: Head 的父提交
1 | git clone # 克隆远程版本库 |
1 | git status # 查看状态 |
1 | git log # 查看提交历史 |
1 | git reset --hard HEAD # 撤销工作目录中所有未提交文件的修改内容 |
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
1 | git branch # 显示所有的本地分支 |
1 | git merge <branch> # 合并指定分支到当前分支 |
如果都是通过rest请求的方式使用Elasticsearch,未免太过麻烦,而且也不够人性化。我
们一般都会使用图形化界面来实现Elasticsearch的日常管理,最常用的就是Head插件
步骤1:
下载head插件:https://github.com/mobz/elasticsearch-head
步骤2:
解压到任意目录,但是要和elasticsearch的安装目录区别开。
步骤3:
安装node js ,安装cnpm
1 | npm install -g cnpm --registry=https://registry.npm.taobao.org |
步骤4:
将grunt安装为全局命令 。Grunt是基于Node.js的项目构建工具。它可以自动运行你所
设定的任务
1 | npm install -g grunt-cli |
原文地址:https://www.jianshu.com/p/1850c040271f
原作者:wizarot
1 | <新功能|bug修复|文档改动|格式化|重构|测试代码>: (影响范围) <主题> |
Java中在使用集合的是往往会涉及泛型,那么泛型在Java中的生存时间是多少呢?
当我问这个问题的时候可能有的人不是太明白怎么还会有这么奇怪的问法。是的,问的就是Java中泛型的生存时间是多少,泛型的作用是申明集合中存储元素的类别,避免存储元素类型不统一混乱。
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
如上面的代码实例:创建了一个数组集合泛型是Integer类型的,存储字符串“Hello”会立即报错,这是在编译期报错,当然了这种类型不匹配运行时肯定也会是报错的;
1 | ArrayList<Integer> list = new ArrayList<Integer>(); |
上面代码通过反射给Integer类型的数组集合添加了一个“Hello”字符串类型的数据并且正常的将数组打印了出来;
这是没有报错的;说明泛型只是在java的编译期会产生错误但是在java的运行期(已经生成字节码文件后)是会被擦除的,这个期间并没泛型的存在;
由此可见:泛型值存在于java的编译期,编译后生产字节码文件泛型是被擦除的;
说明: 在IDE编辑窗口中,Javadoc方式会提示相关注释,生成Javadoc可以正确输出相应注释;在IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。
说明: 对子类的实现要求,或者调用注意事项,请一并说明。
1 | /** |
反例: “TCP连接超时”解释成”传输控制协议连接超时”,理解反而费脑筋。
说明: 代码与注释更新不同步,就像路网与导航软件更新不同步一样,如果导航软件严重滞后,就失去了导航的意义。
说明: 代码被注释掉有两种可能性:
前者如果没有备注信息,难以知晓注释动机。后者建议直接删掉(代码仓库保存了历史代码)。
反例:
1 | // put elephant into fridge |
方法名put,加上两个有意义的变量名elephant和fridge,已经说明了这是在干什么,语义清晰的代码不需要额外的注释。
1 | public class Test { |
转载 如何提高工作中的开发效率
注: 以下不提过多技术层面的技巧,更多的是工作方式。*
积极沟通,理解产品需求;主动对接,减少不必要的等待;学会搜索,培养一套自己的开发流程。
如果项目中大多只是做业务开发,涉及到的技术难点不多,只是业务逻辑比较复杂的话,那整个开发流程真正花在编码的时间其实是不多的,大部分时间花在以下几方面:
那如何减少这些开发流程中花费的时间,从而提高开发效率呢?我觉得可以从以下几方面去考虑:
一般开发初期,开发人员会根据 PM 提供的原型图进行开发,但开发过程中可能会遇到一些业务逻辑,在原型上并没有标清楚,这时候,我一般习惯提前问清楚 PM,而不是等到测试提出问题后才改,虽然这样,开发前期会花不少时间在沟通上,但可以减少后期测试时的问题。
待了几家公司,也接触了不少客户端的开发者,他们往往喜欢等弄好设计图才开始开发,或等后端定义好接口才开发。我觉得其实可以提前根据原型图初步弄好布局或大致的控件元素,或是自己先搭建好 UI 框架,等设计图和接口好了,再调整下边距、字号、颜色等,建model 层,最后后端发布接口到开发环境,就可以测试联调接口了。
需求变动时,要考虑变动的合理性,让 PM 给出合理的理由,而不是一味认同 PM 的需求,PM 说什么就做什么。自己认为不合理的需求,说出自己的理由,和 PM 据理力争(同时也要站在产品需求和用户体验的角度考虑问题)。如果 PM 固执己见,又不能把我说服,那也只能询问自己的上级了,确定要做的话,也就只能做了。
另外,开发中无论是需求变动,还是接到新需求,首先如果不是紧急的需求,是大需求,耗时比较长的话,最好和 PM 申请要增加开发时间,避免延期,同时要做一下几点判断:
首先基础技术要扎实,这是提高效率的最好办法,而不是所有大小问题都去搜索,这样挺耗时间的。这里所说的“学会搜索”,一方面是搜索引擎,要懂得科学上网,使用 Google 搜索;另外是学会用英文搜索!这是我工作将近三年来慢慢开始培养的习惯,学会用英文搜索,可以更快速找到准确的答案。
在几家创业公司上班都没有严格的开发流程,有时候只有一个上线的时间节点,连测试的时间节点都是开发后期才确定,这种情况下,我觉得需要有自己的一套开发流程,各个环节都做好,开发效率就会提高了。目前我基本按照以下流程进行开发:
过需求:根据被分配的任务,过一遍原型图的需求,大致了解需要用到哪些技术点;
UI 布局:根据原型图弄好 UI 布局,等到设计弄好设计图,再微调;
搭页面框架:根据布局写好视图层逻辑,如 Activity,Fragment,Adapter 和相关控件;
Model 层:根据后端写好的接口文档,初步弄好 Model 层的逻辑;
接口联调:和后端开发进行接口联调;
自测:根据原型图上备注复查一遍业务逻辑和一些文案以及 UI 细调,同时测试下一些交互等;(我遇到不少人,其实自测不是很严格,导致提测时会出现一堆 bug)
提测:提交给测试人员测试;(有些是开发层的逻辑,测试可能不清楚的,要提前告知)
……
以上流程,虽然也不算很完善,比如没有单元测试(创业公司很少有单元测试这个环节),也不清楚大公司的开发流程是怎样的。不过在实践中,这个流程的确给我提高了效率和保证了质量。比如,有一次开发中,几个人的工作量本来是一样的,但前期我被安排去做其他任务花了一周,后来还是按时同时完成了开发,而且测试阶段禅道(bug管理系统)的 bug 数量比其他人少25%左右。一套规范的流程,对开发效率来说还是有很大帮助的。
群聊最好能直接 at 相关人;
有时候群消息太多,根本没留意看,所以群聊的时候最好 at 相关人;
私聊高效于群聊;
不是所有人都时刻看群消息,或者有时候看了,也会忘记回复;所以有针对性的问题,直接找相关人私聊会比较高效;
重要事情直接找负责人当面沟通;
比如一些问题比较复杂,用文字说,效率会比较低,最好直接当面聊;或者是一些比较紧急的问题,如出现线上 bug,最好当面沟通;
根据事情的紧急情况选择不同的沟通方式,而不是所有事情都是群聊或者当面沟通,这样不仅耗时,而且自己的时间容易被“中断”。
最后,以上只是我工作中关于开发效率的一些感悟,但是不同公司的开发流程可能不一样,而且不同人的工作方式不一样,希望多少能给你带来一些启发吧。
END
请我喝杯咖啡吧~