IT技术博客大学习 共学习 共进步

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT 算法/ 2017-02-20 00:11:59 / 浏览 4,280

研发面试最常用的10大算法

面试也是一门学问,在面试之前做好充分的准备则是成功的必须条件,而程序员在代码面试时,常会遇到编写算法的相关问题,比如排序、二叉树遍历等等。 在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序、二叉树查找等等。 本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了解这些算法的原理,还需程序员们花些功夫。

IT 系统架构/ 2017-02-20 00:07:01 / 浏览 1,820

软件工程在Google

Google已经是一个非常成功的公司。除了Google搜索和AdWords的成功之外,Google还提供了许多其他突出的产品,包括Google地图、Google新闻、Google翻译、Google语音识别、Chrome和Android。 Google还大幅增强和扩展了通过购买小型公司(如YouTube)所获得的许多产品,并对各种开源项目做出了重大贡献。Google已经展示了一些尚未推出的惊人产品,例如自动驾驶汽车。 Google的成功有很多原因,包括开明的领导力,伟大的人才,高招聘标准,以及在迅速成长的市场中成功获利的财务实力。 但其中一个原因是Google摸索出了优秀的软件工程实践,帮助它成功。这些做法随着时间的推移,根据许多最有才华的软件工程师的积累和沉淀的智慧而演变而成。我们想与世界分享我们的做法,并分享我们从错误中学到的一些教训。 本文的目的是整理并简要介绍Google的关键软件工程实践。然后,其他组织和个人可以将它们与自己的软件工程实践进行比较和对比,并考虑是否自己应用这些实践中的一些。 许多作者都有分析Google的成功和历史的书籍或文章。但大多数主要涉及商业、管理和文化;只有那些的一小部分已经探索了软件工程方面的事情,并且大多数只探索一个方面;而且没有一篇文章提供了Google整体软件工程实践的简要概述,正如本文旨在做的那样。

IT JavaScript/ 2017-02-19 23:59:26 / 浏览 2,480

JavaScript: 2016年回顾

2016年是意义重大的,奇怪的,欢欣鼓舞 / 可怕的一年,这取决于你的观点。与其他事件相比,只专注于JavaScript可能看起来无关紧要,但它是每个Web开发人员的工作生活的一个巨大的一部分。 JavaScript 人气持续爆涨。不是每个人都喜欢这门语言,但是现在你可能很少听到十年前嘲笑的评论。就个人而言,我一直喜欢JavaScript – 即使在早期,令人沮丧的年头。那些从C++,Java或PHP方向过来使用它的人可能首先会感到困惑:JavaScript看起来似曾相识,却又如此陌生。克服你的推断,你会欣赏它简单的优雅,实用性和灵活性。(That said, date handling is still a nightmare!,这就是说,日期处理仍然是一场噩梦!愚人码头看不懂这句是什么意思。) JavaScript在五月迎来了它第21个生日,让我们回顾一下它刚成熟的第一年……

IT 发现/ 2017-02-19 23:53:55 / 浏览 2,960

为什么 Windows 的文件系统会有盘符,使用反斜杠分割路径

今天同事在公司群里调侃问 Windows 能管理多少个盘。当超过 24 个盘的时候,盘符似乎是以 24 进制的方式增加的,也就是 Z: 后面是 CC: 到 CZ: 然后是 DC: 到 DZ: 。当有 600 个盘以后,或许应该用 CCC: 了吧? 这也提醒我们,用正则表达式匹配 Windows 下的文件路径时,不可默认盘符只有一个字符。 为什么 Windows 会有盘符这个诡异的东西呢?

IT JavaScript/ 2017-02-19 23:52:34 / 浏览 2,580

ECMAScript 6 Modules(模块)系统及语法详解

在2014年7月底,TC39 召开了一次会议,在此期间ECMAScript 6(ES6)模块语法的最后细节被最终确定。这篇博客文章概述了完整的 ES6 模块系统。 原文日期为 2014-09-07 ,请用当时的环境浏览本段内容

IT 网络系统/ 2017-02-06 23:18:08 / 浏览 3,100

关于TCP可靠性的一点思考,借此浅谈应用层协议设计

本文主要讨论如何设计一个可靠的RPC协议。TCP是可靠的传输协议,不会丢包,不会乱序,这是课本上讲述了无数遍的道理。基于TCP的传输理论上来说都是可靠的,但是实际这也得看场景。当我做网络游戏的时候也是一直把它当一个可靠的传输协议来用,从没考虑过TCP丢包的问题。直到当我面临像网络存储、机器学习这样领域时,我发现TCP变得“不可靠”了。

IT JavaScript/ 2017-02-06 23:14:23 / 浏览 2,540

AlloyTouch实现下拉刷新

在手机QQ内部,其实客户端提供了下拉刷新的能力,拖动整个webview进行下拉刷新,loading以及loading相关的wording和动画都是客户端的。解决了一部分需要下拉场景的问题。但是在某些场景下,还是需要web拥有自身的下拉刷新的能力。

IT 系统架构/ 2017-02-06 23:12:26 / 浏览 2,100

在 Unity3D 的 Mono 虚拟机中嵌入 Lua 的一个方案

很多使用 Unity3D 开发的项目,都不太喜欢 C# 这门开发语言,对于游戏开发很多人还是更喜欢 Lua 一些。而 Lua 作为一门嵌入式语言,嵌入别的宿主中正是它说擅长的事。这些年,我见过许多人都做过 U3D 的 Lua 嵌入方案。比如我公司的阿楠同学用纯 C# 实现了一个 Lua 5.2 (用于在 U3D web 控件中嵌入 Lua 语言的 UniLua );还有 ulua slua wlua plua xlua ... 数不胜数。我猜测,a-z 这 26 个字母早就用完了。 上面提到的项目的作者不少是我很熟悉的朋友,我们公司现在的 U3D 游戏也由同事自己实现了一套差不多的东西。所以我曾了解过这些方案。但我一直觉得这些方案要么做的过于繁琐,要么有些细节上不太完备,总是手痒想按自己的想法搞搞看。

IT 发现/ 2017-02-06 23:09:48 / 浏览 2,920

真假百度蜘蛛的甄别

虽然百度的口碑并不好,但是不可否认的是,它一直是中文搜索中的霸主,所以对大多数中小型商业公司而言,都对百度蜘蛛的抓取行为予以放行,不过还有很多非法的蜘蛛,它们会通过 User-Agent 把自己伪装成百度蜘蛛,此时如果单纯以 User-Agent 来判断是否是百度蜘蛛就不合适了。虽然网上能找到很多现成的百度蜘蛛 IP 段,但是并不能确认它们的准确性,所以我打算自己收集,进而甄别真假百度蜘蛛。

IT 发现/ 2017-02-06 23:07:35 / 浏览 5,040

Chrome开发者工具的小技巧

Chrome的开发者工具是个很强大的东西,相信程序员们都不会陌生,不过有些小功能可能并不为大众所知,所以,写下这篇文章,有的功能可能会比较实用,有的则不一定,也欢迎大家交流。

IT 发现/ 2017-02-06 22:55:51 / 浏览 6,900

使用Mitmproxy分析接口

对于服务端开发者来说,通过抓包分析接口是必备技能之一,常见工具有 Charles 和 Fiddler 等等,不过 Charles 是收费的,Fiddler 虽然是免费的,但是其 Mac 版还不稳定,本文使用另一个工具:Mitmproxy。

IT 系统运维/ 2017-02-06 22:53:51 / 浏览 2,320

ubuntu系统root用户不能通过ssh远程登录问题

问题虚拟机中安装完ubuntu14.04系统以后,在虚拟机中可以通过root用户正常登录,可确认root用户密码没有输错;但是通过ssh远程连接时,报错Password Authentication Failed,或者其他类似Acess Failed错误。解决方法编辑sshd配置文件:vim/etc/ssh/sshd_config,配置文件部分内容如下:可以看到,其中PermitRootLogin的配置是without-password,将其修改为:PermitRootLogin yes重启sshd服务或者重启系统,再次ssh远程登录即可。

IT Java/ 2017-02-06 22:52:02 / 浏览 2,300

【死磕Java并发】—–深入分析synchronized的实现原理

记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。 诚然,随着Javs SE 1.6对synchronized进行的各种优化后,synchronized并不会显得那么重了。下面跟随LZ一起来探索synchronized的实现机制、Java是如何对它进行了优化、锁优化机制、锁的存储结构和升级过程;

IT JavaScript/ 2017-01-16 00:15:45 / 浏览 3,460

从零开始React服务器渲染

当我们选择使用Node+React的技术栈开发Web时,React提供了一种优雅的方式实现服务器渲染。使用React实现服务器渲染有以下好处: 1.利于SEO:React服务器渲染的方案使你的页面在一开始就有一个HTML DOM结构,方便Google等搜索引擎的爬虫能爬到网页的内容。 2.提高首屏渲染的速度:服务器直接返回一个填满数据的HTML,而不是在请求了HTML后还需要异步请求首屏数据。 3.前后端都可以使用js。

IT 算法/ 2017-01-16 00:13:57 / 浏览 2,980

订单号的生成规则

防止订单Id号泄露每日流水,暴露商业机密;需要对订单Id号进行相应的处理,但是订单号的生成又需要满足以下条件:唯一性、语义性、考虑分库分表的情况能快速路由到相应的表、长度。

IT 系统运维/ 2016-12-22 23:35:13 / 浏览 1,860

HTTPS 常见部署问题及解决方案

在最近几年里,我写了很多有关 HTTPS 和 HTTP/2 的文章,涵盖了证书申请、Nginx 编译及配置、性能优化等方方面面。在这些文章的评论中,不少读者提出了各种各样的问题,我的邮箱也经常收到类似的邮件。本文用来罗列其中有代表性、且我知道解决方案的问题。

IT 发现/ 2016-12-22 23:32:37 / 浏览 3,620

你必须收藏的Github技巧

GitHub Pages大家可能都知道,常用的做法,是建立一个gh-pages的分支,通过setting里的设置的GitHub Pages模块可以自动创建该项目的网站。 这里经常遇到的痛点是,master遇到变更,经常需要去sync到gh-pages,特别是纯web前端项目,这样的痛点是非常地痛。 Github官方可能嗅觉到了该痛点,出了个master当作网站是选项,太有用了。

IT 安全/ 2016-12-22 23:31:26 / 浏览 2,380

恶意邮件不完全分类及防范指南

邮件是我们日常工作中进行交流、获取工作信息或文件的最重要通道,由于凡是知道你邮箱的人都可以给你发邮件,因此这个通道很早就被不良企图者盯上,用于实施一些恶意行为。邮件是社工或APT的重要入口或着手点,这也已经成为网络安全行业的共识。那么,我们日常可能会接触到哪些恶意邮件,如何防范呢?这里总结了一些常见的恶意邮件类型以及一些极其简单实用的建议,给大家日常参考。

IT MySQL/ 2016-12-22 23:30:22 / 浏览 6,660

SQL里是否可以使用JOIN

很多公司都禁止程序员在 SQL 中使用 JOIN,至于原因则出奇的一致:用 JOIN 慢。不过我从没见过谁来论证为什么用 JOIN 慢,结果这个人云亦云的结论越传越广,让我觉得是时候来讨论一下这个看似正确的结论了。