可乐瓶的小辣椒

爱跳舞的小姑凉。

最近天冷得我都不更新了。。。

各种程序员常用的框架

今天的文章给大家介绍不同的程序员常用的框架,包括JavaScript、Php、Python和Android等,有兴趣的朋友不妨了解一下。

JavaScript程序员

自从有了基于服务端的JavaScript,JavaScript程序员似乎在社会上越来越吃香,下面是JavaScript常用的框架:

  • 谷歌的angular

  • Facebook的react

  • 名不见经传的avalon

  • 用久了上面的框架之后,很多JavaScript程序员开始逐渐地明白,原来我理想中的框架是Vue

  • 为了绘制各种统计图,优先使用百度的ECharts

Php程序员

长期以来,php霸占了中小网站的市场,甚至一些大公司部分业务都是用php来开发的,那么php程序员经常使用的框架有哪些呢?

  • swoole网络处理框架

  • workerman和swoole一样,一个网络服务端处理框架

  • workerman和swoole一样,一个网络服务端处理框架

  • 用于发送邮件的PHPMailer框架

  • Smarty框架

  • jQuery和Bootstrap框架,主要用于处理JavaScript和页面布局

Python程序员

在近些年,似乎我们经常听到Python越来越强大的声音,比如用Python来完成自动化测试、用Python来进行大数据处理、用Python来完成科学计算等等,那么Python程序员经常用的框架有哪些呢?

  • Django是一个开放源代码的Web应用框架

  • Twisted是用Python实现的基于事件驱动的网络引擎框架

  • 自动化测试框架Selenium

Android程序员

大部分安卓APP应用处理最复杂的还是动画效果和图片处理、网络请求,所以关于这三个方面的框架如下:

  • Volley网络请求处理框架

  • Picasso图片加载框架,让你缓存请求图片不再是问题

  • Tiny图片处理框架,让你压缩图片等不再是问题

  • transitions framework 动画框架

IOS程序员

和Android程序员一样,大部分的应用都是动画、图片、网络请求为主,所以常用的框架如下:

  • MWPhotoBrowser 图片框架,利用这个框架能够实现图片请求、缓存、缩放等等操作

  • JSONKit这个框架是一个非常优秀的处理JSON相关的需求框架

  • WebViewJavaScriptBridge框架是一个实现JavaScript与原生接口交互的框架

Java程序员

作为目前超级流行的编程语言,我们的Java程序员常用的框架如下:

  • Hadoop 是一个分布式存储与计算的框架

  • Hadoop 是一个分布式存储与计算的框架

  • Solr和ElasticSearch全文检索框架

C/C++ 程序员

哈哈,不好意思呢,C/C++程序员还没有什么常用的框架,因为很多东西都要靠自己去实现,这也是为什么很多C程序员常说:在我看来,很多编程语言都是前端语言。

慧都控件网


什么人脸识别都弱爆了,你听说过心脏识别吗?

人脸识别系统往往因外部特征细微变化而无法准确识别。据美国布法罗大学官网25日报道,该校华人科学家许文曜团队研制出一种全新的计算机安全系统,能通过心脏几何形状进行身份识别,取代密码和其他生物识别系统,用于计算机、智能手机和机场安检的身份识别。

之前研制的心脏身份识别系统,主要利用电极测量心电图,因此需要直接接触人体,用起来很不方便。而许博士这次历时3年研制的新系统,不需直接接触人体,利用雷达远距离扫描分析心脏的形状和大小这些几何特征以及心脏波动等进行身份识别。

每个人都会在自己的电脑中保存隐私性信息,而之前只能设置账户和密码防止他人使用自己的计算机,每天多次输入密码登陆很繁琐。而心脏身份识别系统通过低水平多普勒雷达监测计算主人的心脏,第一次扫描需要8秒钟时间,之后计算机就会记住主人的心脏,那些趁主人不在想登录计算机盗窃信息的“坏人”,会被系统识破后关机。

研究团队负责人表示,没有任何两个人会具有完全相同的心脏形状,而且除非罹患严重的心脏病,每个人的心脏形状也会保持不变,新系统身份识别极其精准。

系统的雷达信号强度比目前普遍使用的Wi-Fi更弱,因此不会对人体健康造成威胁。新系统功率只有5毫瓦,辐射强度不及智能手机的1%,与我们每天生活的Wi-Fi环境相比,具有相同的安全度。许博士表示,他们会继续减小系统的尺寸,以便使其能被安装在计算机键盘的某个角落。除了计算机安全,新系统还能用于智能手机进行用户身份识别,还可以用于机场安检,对相距不超过30米的乘客进行身份检查。

查看更多识别资讯


2017年最受欢迎的10个编程挑战网站

1.TopCoder

TopCoder是最开始的在线竞技编程平台之一。它提供了很多的算法挑战,用户可以使用平台上的编辑器直接完成挑战。每个月该平台会提供几次它们最受欢迎的Single Round Matches,比赛要求用户在特定的时间内与他人竞争,看谁解决问题的速度更快。

TopCoder上排名靠前的用户都是很有竞争力的程序员,他们会定期参加各种比赛。这些用户还可以通过名称为ALGORITHMS WEEKLY BY PETR MITRICHEV的博客平台去发表一些关于编程竞赛、算法、数学等方面的文章。

2.Coderbyte

Coderbyte提供了200多项编码挑战,挑战者可以使用10门编程语言中的任意一种直接在线解决(看看这个例子)。这些挑战的难易程度各不相同。

另外Coderbyte还提供了很多的算法教程,入门视频和面试准备的课程。与HackerRank和其它网站不同,用户可以查看其他挑战者提供的解决方案,而不是Coderbyte*官方*发布的。

3.Project Euler

Project Euler提供了很多关于计算机科学和数学领域的挑战。挑战内容大致都是要求挑战者编写一段小程序从而为某个数学公式或方程式提供解决方案。

由于不支持直接在编辑器上编程,因此需要用户在自己的电脑上先写好解决方案,然后在网站上再提供出来。

4.HackerRank

HackerRank提供了很多不同领域的挑战,比如算法、数学、SQL、函数式编程、人工智能等等。挑战者可以直接在线完成所有挑战(看看这个例子)。

HackerRank针对每一项挑战专门成立了讨论和领导委员会,而大多数挑战来自于一篇社论,它解释了更多的挑战,以及如何接近它提出解决方案。除了这篇社论,你目前还不能看到其他用户在HackerRank上的解决方案。

HackerRank还支持用户提交应用程序,而且通过解决公司发起的编码挑战,挑战者还有机会获得一份工作。

5.CodeChef

CodeChef是一家位于印度的编程竞赛网站,该网站提供了数百种挑战。挑战者可以通过在线编辑器进行编程,而且还可以根据自身的编程能力去查看已经分类好的适合于自己的挑战题目(请查看本示例)。

CodeChef有一个庞大的编程社区,为论坛提供帮助,负责编写教程,而且也会参加CodeChef的编码竞赛。

6.CodeEval

CodeEval类似于HackerRank,它还提供了很多公司发起的挑战,如果能很好地完成这些挑战,你还有机会得到一份工作。公司可以创建挑战和举办竞争比赛来招募新的工作人员。挑战者可以在这里查看当前的挑战列表。

7.Codewars

Codewars提供了很多的编码挑战,这些挑战都是由他们自己社区提交和编辑的。挑战者可以用几种语言在编辑器中直接在线完成挑战。用户还可以查看针对每个挑战的讨论以及其他用户的解决方案。

8.LeetCode

LeetCode是一个很受欢迎的在线判题系统,它提供了190道挑战题目,这些题目可以帮助挑战者为面试做好技术准备。挑战者可以用9种编程语言直接在线完成挑战。虽然该网站不支持查看其他用户的解决方案,但用户可以为自己的解决方案提供统计数据,例如与其他用户相比,代码运行速度如何。

他们也有一个专门为面试准备的Mock Interview部分,这是由他们自己主持的编码竞赛,其中有一些文章帮助用户更好地了解某些问题。

9.SPOJ

Sphere Online Judge(SPOJ)是一个在线判题系统,提供20000多个编程挑战。挑战者可以直接通过在线编辑器中提交代码。SPOJ还举办了自己的竞赛,并有一个区域专门供用户讨论编码挑战。他们目前没有像其他网站那样提供任何官方解决方案或社论。

10.CodinGame

CodinGame与其他网站有点不同,因为它不是简单地在编辑器中去完成编码挑战,而是让挑战者真正游戏的。用户可以在这里看到当前提供的游戏列表,在这里看到一个示例。这个游戏有一个问题描述,测试用例,和一个编辑器,你可以在其中一个20 +的编程语言编写你的代码。


突然翻到自己2年前的舞蹈排练照,那时候还圆圆是个小胖子。嘿嘿

常见的用户密码加密及破解方法

用户密码安全是互联网行业需要保障的重要安全之一,由于黑客的入侵和内部的泄露,保证用户密码安全并不是件容易的事情,但如果采用合适的算法加密用户密码,即使信息泄露出去,黑客也无法还原出原始的密码(或者还原的代价非常大)。也就是说我们可以将工作重点从防止泄露转换到防止黑客还原出数据。下面我们将分别介绍用户密码的加密方式以及主要的破解方法。

一、用户密码加密

用户密码保存到数据库时,常见的加密方式有哪些,我们该采用什么方式来保护用户的密码呢?以下几种方式是常见的密码保存方式:

 直接明文保存,比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。

 使用对称加密算法来保存,比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。

 使用MD5、SHA1等单向HASH算法保护密码,使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。

 特殊的单向HASH算法,由于单向HASH算法在保护密码方面不再安全,于是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可以在一定程度上增加破解难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,这就会遇到“保护对称密钥”一样的问题,一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH,也只是增加了破解的时间,并没有本质上的提升。

PBKDF2算法,该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。使用PBKDF2算法时,HASH算法一般选用sha1或者sha256,随机盐的长度一般不能少于8字节,HASH次数至少也要1000次,这样安全性才足够高。一次密码验证过程进行1000次HASH运算,对服务器来说可能只需要1ms,但对于破解者来说计算成本增加了1000倍,而至少8字节随机盐,更是把建表难度提升了N个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。

bcrypt、scrypt等算法,这两种算法也可以有效抵御彩虹表,使用这两种算法时也需要指定相应的参数,使破解难度增加。

下表对比了各个算法的特性:

二、用户密码破解

用户密码破解需要针对具体的加密方式来实施,如果使用对称加密,并且算法足够安全(比如AES),必须获取到密钥才能解密,没有其它可行的破解方式。

如果采用HASH算法(包括特殊HASH),一般使用彩虹表的方式来破解,彩虹表的原理是什么呢?我们先来了解下如何进行HASH碰撞。单向HASH算法由于不能进行解密运算,只能通过建表、查表的方式进行碰撞,即将常用的密码及其对应的HASH值全计算出来并存储,当获取到HASH值是,直接查表获取原始密码,假设用MD5算法来保护6位数字密码,可以建如下表:

全表共100W条记录,因为数据量不大,这种情况建表、查表都非常容易。但是当密码并不是6位纯数字密码,而是数字、大小写字母结合的10位密码时,建立一个这样的表需要(26+26+10)^ 10 ≈ 83亿亿(条记录),存储在硬盘上至少要占用2000W TB的空间,这么大的存储空间,成本太大,几乎不可行。有什么办法可以减少存储空间?一种方法是“预计算哈希链”,“预计算哈希链”可以大幅减少HASH表的存储空间,但相应的增加了查表时的计算量,其原理大致如下:

建表过程:

先对原始数据“000000”进行一次HASH运算得到“670B1E”,再对HASH值进行一次R运算,R是一个定制的算法可以将HASH值映射到明文空间上(这里我们的明文空间是000000~999999),R运算后得到“283651”,再对“283651”进行hash运算得到“1A99CD”,然后在进行R运算得到“819287”,如此重复多次,得到一条哈希链。然后再选用其它原始数据建立多条哈希链。最终仅将链头和链尾保存下来,中间节点全都去掉。

查表过程:假设拿到了一条HASH值“670B1E”,首先进行一次R运算,得到了“283651”,查询所有链尾是否有命中,如果没有,则再进行一次HASH、一次R,得到了“819287”,再次所有链尾,可以得到看出已经命中。这样我们就可以基本确认“670B1E”对应的明文就在这条链上,然后我们把这条链的生成过程进行重新计算,计算过程中可以发现“000000”的HASH值就是“670B1E”,这样就完成了整个查表过程。这种表就是“预计算哈希链”。这种方式存在一个问题,多条链之间可能存在大量的重复数据,如下图所示:

为了解决这个问题,我们将R算法进行扩展,一条链上的多次R运算采用不同的算法,如下图:

一条链上的每个R算法都不一样,就像彩虹的每层颜色一样,因此取名的为彩虹表。

当然彩虹表除了可以用户破解HASH算法外,理论上还可以用于破解对称加密算法,比如DES算法,由于DES算法密钥比较短,建立彩虹表破解是完全可行的;但对于AES算法,由于密钥比较长,建表几乎不可行(需要耗时N亿年)。

三、总结

采用PBKDF2、bcrypt、scrypt等算法可以有效抵御彩虹表攻击,即使数据泄露,最关键的“用户密码”仍然可以得到有效的保护,黑客无法大批量破解用户密码,从而切断撞库扫号的根源。当然,对于已经泄露的密码,还是需要用户尽快修改密码,不要再使用已泄露的密码。


【图解】最流行的7个JavaScript 框架各自的优点

js框架就是对js各种功能的封装和抽象,使得在使用的时候具有简便性和更好的兼容性,并且可以扩展框架中的内容,本文将给大家介绍目前流行的7个JavaScript 框架的特点。

AngularJ.js 由Google开发,2009年首次发布

  • 很流行的前端框架

  • 使用Angular.js创建第一个UI,成本很低

  • 对于团队来说,AngularJ.js有许多很棒的工具可用

  • 很适合创建一个快速、混合型复杂的解决方案

  • 比起React,更合适于创建小型企业级应用

  • 由Google负责维护基础包

React.js 由Facebook开发,2013年发布了第一个BSD license的开源版本

  • 很容易扩展

  • 状态可预测(更小的规模)

  • 很适合大型的前端项目

  • 相对较小的API

  • 持续重复渲染的组件为日益增加的复杂性提供了有效的支撑

Ember.js 是一个JavaScript框架,由Yehuada katz开发,2011年发布

  • 很活跃的社区

  • 持续开发特性

  • 很简单,很易于学习

  • 稳定的性能

  • 具有自主配置能力

  • 两种数据绑定方式

  • 加载和运行都很快

Aurelia.js 由Rob Eisenberg 开发,2015年1月发布

  • 整洁的文档

  • 结构合理(组成Aurelia.js模块既可以用于构建完整的框架也可单独使用)

  • 具有两种能够和用户界面自动同步模块的数据绑定方式

  • 高度易测的代码

  • 各种各样额外的工具可用

  • 可以得到开发者的商业支持

Meteor.js 由Meteor团队发开,2012年发布

  • 很快速

  • 很适合小型响应式应用

  • 是一个全栈框架

  • 能够在浏览器上根据数据的刷新进行实时渲染

  • 能够与Apache Coredova集成

  • 能得到很好的支持

Polymer.js 由Google开发,2013年发布

  • 很快速

  • 可以创建自定义元素

  • 提供了模板和双向数据绑定

  • 减小了开发者和设计者之间的跨度

  • 很适合特性丰富的应用

Vue.js 由Evav you开发,2014年发布

  • 具有非常简单的API

  • 可选择性添加的模块

  • 易于被开发者接纳

  • 易于与其它库和工程集成

  • 可以通过两种数据绑定方式更新模型和视图

  • 适合于大型的应用


【图解】哪家强?9种主流编程语言大比拼

9大主流编程语言包括Python、Java、C、C++、JavaScript、C#、Ruby、PHP以及Objective-C,文章展示了这9种语言打造的顶级应用成果,相关职位的平均薪酬(美国)以及该语言的优势与弊端。

编程语言之间的对比,一直都是众说纷纭,究竟哪种语言最好,我想没有一个标准答案,对于不同的人和不同的需求来说,对好的定义就不尽相同,但是我们却可以量化具体的指标,在9种主流编程语言之间给人们提供一个对比的参考,图片展示如下:

那么究竟应该选择哪种语言进行学习发展以及就业研究呢?其实,这是一个不必过于纠结的问题,对于目前的主流编程语言来说,每一种语言都有不错的薪资报酬和较好的发展平台和前景。

点击查看更多语言资讯


Aspose.Words 8月新版V17.8发布 | 附下载

Aspose.Words for .NET 17.8 更新

.NET版本8月更新重点:

  • 对PDF渲染引擎进行了显著优化。

  • 压缩PDF 1.5输出中的文档结构数据和交叉参考表,具有逻辑结构的输出PDF文档大幅变小。

  • 固定HTML文档中的图像标签现在可以包含一个替代的文本字符串。

  • “标记注释完成”选项的API。

  • 在Word文档中签署签名行。

  • 添加功能设置/获取“指定行和字符网格”。

  • 检测评论和回复评论。

  • 添加功能来格式化图表的数据标签。

Aspose.Words for Java 17.7 更新

java版本8月更新重点:

  • 渲染为PCL格式(打印机命令语言)已被实现。

  • 对PDF渲染引擎进行了显著的优化。

  • 性能和堆空间优化。

  • 压缩PDF 1.5输出中的文档结构数据和交叉参考,具有逻辑结构的输出PDF文档要小得多。

  • 固定HTML文档中的图像标签现在可以包含一个替代的文本字符串。

  • “标记注释完成”选项的API。

  • 在Word文档中签署签名行。

  • 添加功能设置/获取“指定行和字符网格”。

  • 检测评论和回复评论。

  • 添加功能来格式化图表的数据标签。


PPT控件 Spire.Presentation for .NET V2.8.35发布

.NET PPT控件Spire.Presentation 更新至2.8.35,支持设置演示幻灯片布局。

Spire.Presentation 2.8.35 更新
  • 支持获取或设置演示幻灯片的布局

新增
  • 支持获取或设置演示幻灯片的布局。

  • 支持从主机添加具有特定布局的新幻灯片。

  • 支持设置表的宽度/高度。

修复
  • 修复将演示幻灯片转换为图像时导致错误格式的问题。

  • 修复将演示幻灯片转换为图像时导致阴影丢失的问题。

  • 修复加载PowerPoint文件时导致异常“输入字符串的格式不正确”的问题。

  • 修复了形状背景从透明度变为白色的问题。

点击下载Spire.Presentation 2.8.35