分类 心得体会 下的文章

使用gmail邮箱作为SMTP遇到的问题:AuthenticationFailedException: 534-5.7.14

公司要安装Atlassian系列软件,安装过程中需要设置邮箱,设置邮箱界面直接提供了gmail邮箱的选项,然而按照这个设置了依旧提示错误:

javax.mail.AuthenticationFailedException: 534-5.7.14
<https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsNX
534-5.7.14
No6jJbDc4l7fZ_WLdBD0sNHIIp_nLvplRMm0bYFBnZBF_XOyVvNSdd1FenDZJPwBTFQyRH
534-5.7.14
lriPK3myMm-dXkW3zK0-6XpO7BzI8hfRcByG1k7YiVzXlddTvs7QhjtgCWNcrzMBuPhoof
534-5.7.14
GjME2TgYzXJVHz5MV98nRnr_kq-kP7RmgOtX3IQHLwM5E8QGBC9-2THVQr_Ch_U0-1nZsc
534-5.7.14 yoPuNEw> Please log in via your web browser and then try
again.

1、先在Bing查找这个问题,跳出了很多链接,但是看不出个所以然。
2、按照上面<>中的url地址进入提示的网址,但是这个网址提供的建议对于我解决这个问题没有帮助。
3、不得不翻墙请出Google,搜索的第一个结果是StackOverflow的网址。点进去一看,使用biniam_Ethiopia的回复中的方法解决了这个问题。

貌似是Google因为安全问题屏蔽了SMTP的访问,需要自己手动开启,但是手动开启的地方靠自己找完全找不到,这就尴尬了,浪费了好多时间的说。

GitHub TOP项目分析

今天把GitHub TOP的项目仔细浏览了一下,做一点简单的分析。

  • 在star数超过100的项目里,JS的项目有15276个,是第二名Java的两倍还多,JS做为前端开发的唯一语言,现在正在蓬勃兴起中。
  • Java,编程语言的老牌霸主,在GitHub经历了初期的颓势之后,随着GitHub的越加普及和Android项目增长,现在已经逐渐找回数量上的优势。
  • Python语言star超过100的项目有5978个,略少于Java,Ptyhon借助多个领域不错的表现领先同类竞争对手。
  • Object-C排在第四位,star超过100的项目数量达到4614个,略领先Ruby语言,在苹果设备上一家独大原本是其优势所在,但是swift的出现带来了很多压力。
  • Ruby语言虽然也是功能强大的脚本语言,但是和Python在多领域大放光彩不同,现在Ruby主要在Web领域出出风头,不过力压Web霸主PHP充分表现其实力不容小觑。
  • PHP语言颓势明显,star超过100的项目只有3413个,PHP一直在保守和激进之间徘徊,在诸多竞争对手的冲击下颇为狼狈。
  • C语言作为工业界的霸主,在偏互联网的Github上依旧占据了一席之地。
  • C++语言作为老牌语言,也成功跻身榜单之中,颇为难得。
  • Go语言是唯一上榜的新语言,其对工程的友好赢得了大量程序员的青睐。
  • HTML作为前十唯一的标记语言,可喜可贺,其在GitHub上主要分成两类项目:资料类项目和样式类项目。

下面是Star数排前十的项目分析:
1、FreeCodeCamp/FreeCodeCamp
这个项目是 https://FreeCodeCamp.com 网站维护的,这个网站是一个编程学习网站,估计用户挺多的,这个项目的star达到惊人的160k,几乎相当于第二名的两倍。
2、twbs/bootstrap
第二名的项目是大名鼎鼎的bootstrap,相比前三名另外两个都是资料类项目,bootstrap作为一个前端框架获得这种成功令人惊讶。当然,在我看来,这得益于前端统一为JS语言带来的福利。待会儿我们会看到前十会有大量的JS项目的出现。
3、vhf/free-programming-books
第三名的项目是免费的编程书籍资料,这个项目得到如此高的star数再正常不过。不过居然被bootstrap挤到第三的位置,也只有令人感慨JS的强势地位。
4、d3/d3
JS的可视化类库,d3在可视化领域打拼多年,和第二名bootstrap,第五名Angular.js,第六名React,第八名jQuery一样都在各自领域占据绝对优势地位。
5、angular/angular.js
又一个JS项目,angular作为Web应用框架的代表,一直以来都有着超高的人气。
6、facebook/react
react作为一个革命性的JS项目,带来了虚拟DOM等Web开发的新思路,获得大量程序员的肯定。
7、FortAwesome/Font-Awesome
终于又出现了一个资料类项目,关于HTML字体相关资料的。
8、jquery/jquery
作为JS界应用最广泛的类库,jQuery也跻身Star榜单前十,虽然地位在各类新秀的冲击下岌岌可危,但是依旧保持着强大的影响力。
9、robbyrussell/oh-my-zsh
这是前十项目中的最大怪胎,因为它是一个基于shell语言的项目。作为一种在上文中盘点中未出现的语言,居然能有一个项目跻身前十,这个项目受到多大的欢迎不用多说了吧。尝试一下,你会发现你的命令行居然可以这么智能和便捷。
10、sindresorhus/awesome
资料类项目,整合了GitHub上的大量“awesome xxxx”命名的项目的资料。
到此为止,共有5个JS项目,4个资料类项目,1个Shell项目。

工作流引擎的实现

如何看待工作流引擎?近日在研究工作流引擎Activiti的数据库设计。
一个完整的工作流引擎有哪些部分?一个用户和组系统,一个流程定义文件,N个外置表单。
就拿最简单的请假流程举例:

  • 员工1点击申请按钮。
  • 系统启动一个流程实例。
  • 流程实例启动了一个表单1。
  • 员工1填写了表单1后提交。
  • 系统接收到员工1填写的内容,将其保存为变量。
  • 系统创建了签收任务,并分配给领导组。
  • 领导1签收这个申请。
  • 系统创建了批准任务,并分配给领导1。
  • 领导1点击办理按钮。
  • 系统启动了表单2.
  • 领导1填写了表单2并提交。
  • 系统接收到领导1填写的内容,并将其保存为变量。
  • 系统创建了签收任务,并分配给HR组。
  • HR1签收了这个申请。
  • 系统创建了批准任务,并分配给HR1.
  • HR1点击办理按钮。
  • 系统启动了表单3。
  • HR1填写了表单3并提交。
  • 系统接收到HR1填写的内容,并将其保存为变量。
  • 系统创建了销假任务,并分配给用户1。
  • 用户1点击销假按钮。
  • 系统启动了表单4。
  • 用户1填写了表单4并提交。
  • 系统接收到用户1填写的内容,并将其保存为变量。
  • 流程实例结束。

stackoverflow上关于Java的TOP10问题

1、Why is it faster to process a sorted array than an unsorted array?
概述:为什么处理一个排序数组比一个未排序数组更快?
点评:答案是分支预测,重点在于了解分支预测的原理。

2、Why is subtracting these two times (in 1927) giving a strange result?
概述:为什么有特定的两个时间相差一秒,但是计算得出的结果却不是一秒。
点评:时区变化导致了很多问题,包括这一例,所以可能比较奇怪。只要保持时间问题上的敏感性就好。

3、Is Java “pass-by-reference” or “pass-by-value”?
概述:Java是值传递还是引用传递?
点评:虽然答案很清楚,但是回答里面还是可以学习到一些东西的。

4、Java's +=, -=, *=, /= compound assignment operators
概述:Java的+=, -=, *=, /=等运算符的执行原理?
点评:这些运算符运算完之后都会被格式化一遍,所以可能和想象中有所出入。

5、Avoiding != null statements
概述:如何避免使用 !=null 表达式?
点评:答案中提供了很多方案,这边就不赘述了。

6、Proper use cases for Android UserManager.isUserAGoat()?
概述:征求Android中UserManager.isUserAGoat的合适使用场景。
点评:对Android不了解就不点评了。

7、Differences between HashMap and Hashtable?
概述: HashMap和Hashtable之间的区别。
点评:需要对HashMap和Hashtable等数据格式有比较深入的了解。

8、Read/convert an InputStream to a String
概述: 询问如何把InputStream类型的数据变成一个字符串。
点评:涉及到InputStream和String两种格式之间的转换。

9、Why is char[] preferred over String for passwords in Java?
概述:为什么Java Swing中的密码优先使用chare[]而不是字符串?
点评:因为String是immutable,所以为了提前释放password这种敏感信息,所以使用字符数组。

10、Create ArrayList from array
概述:询问如何把array格式数据变成ArrayList格式数据。
点评:涉及到array和ArrayList两种格式之间的转换。

形参和实参,值传递和引用传递?

虽然接受了一定的编程科班教育,但是一直在搞Web,连形参和实参,值传递和引用传递的概念都搞模糊了。
正好趁自己不理解,把这几个概念都了解一下,免得以后搞个大笑话。

首先是形参和实参,这两个概念和值传递引用传递的概念搞混,但是现在了解了一下,完全不是一回事。
比如有个函数:
function test($a, $b, $c) {
print_r($a + $b + $c);
}
然后有个调用:
test($one, $two, $three);
那么$one, $two, $three就叫做实参,$a, $b, $c就叫做形参,形参只有在函数被调用时短暂存在。

然后再说值传递和引用传递
传参有两种效果,一种传递了以后,修改形参不影响实参;一种传递了之后,修改实参会影响形参。
值传递就是修改形参不影响实参的方式。
引用传递就是修改实参会影响形参的方式。

还得说一个特别一点的传递方式,对象类型引用变量的传参。
对象类型引用变量无论是值传递还是引用传递,最后都能修改被引用的对象的数据,这点需要牢记。
怎么说呢?整个过程是这样的:

  • 变量(地址)->地址指向的数据(引用)->引用指向的数据(对象)。

作为对比,普通类型变量的过程是这样的:

  • 变量(地址)->地址指向的数据(数据)。