聚合文章列表
14 浏览

程序员的幽默:今天周五,我要赶紧敲完代码

老大,没事,就是个小bug,我一会就改完了,保证不影响他们前端使用。项目组长意味深长的拍了拍我的肩膀,好好改,不行今晚就加会班吧。然后,组长走开了。分享之后我还是要推荐下我自己的前端学习群:518237578,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份2017最新的前端资料和零基础入门教程,送给大家,欢迎初学和进阶中的小伙伴。入夜渐微凉,繁花落地成霜,你在远方眺望,耗尽所有暮光...凉凉三生三世恍然如梦,须臾的年风干泪痕,一首《凉凉》送给要加班的自己。

程序员 2017-12-19 发布
23 浏览

为什么你总成为不了架构师?

背景:今天接到一个哥们儿的电话,说,很郁闷,想和我聊聊。我问,有啥郁闷的事情啊,说来听听。他说,最近很郁闷,我本来今年的计划是成为一个架构师,但是,无论如何努力,都不知道为什么,感觉希望很渺茫…这哥们儿其实是一个很努力的家伙,曾经是我Team里技术最好的程序员,对一个技术不钻明白不罢休的那种程序员。我给他电话里说了说我一直想说,但一直都没有时间说的话,那就是:为什么你总是成为不了架构师?一、什么是架构师?其实架构师的概念并不是从程序开发专业一诞生就有的职位概念,架构师(SoftwareArchitect)仅仅是最近几年提出来的一个职位,貌似SoftwareArchitect的概念是IBM提出来的。然而,架构是什么样的一个职位,就像云计算一样,看起来很美,但是,每个人都有自己的理解。很多人认为,架构师就是系统分析师,是拿到系统需求进行分析的人,错!如果系统只是系统分析,那么架构设计谁来弄?有人认为架构师就是架构设计的人,画画UML,写一写文档之类的人,错!画UML就是设计吗?画图的人有了,设计的人是谁?还

软件架构 2017-12-04 发布
12 浏览

musical.ly技术副总裁:短视频的泛服务和融合架构实践

11月10日,今日头条正式与北美知名短视频社交产品musical.ly签署协议,将全资收购musical.ly,在此之前,musical.ly的全球DAU超过2000万,但国内鲜有人知道这家公司和其业务。2014年初,从易宝离职的阳陆育Louis拉上同样热爱音乐的前同事朱骏一起创办了musical.ly。这是一个强调音乐元素的短视频应用,用户可以先拍摄一段生活中的视频,然后在乐库中配上音乐,从而快速地创建时长15秒的musicvideo;或者从喜爱的歌曲中获得灵感,配上一段有意思的画面,然后分享给自己的朋友。巧合的是,即将于2017年12月8-11日在北京举办的ArchSummit全球架构师峰会上,musical.ly高级技术副总裁Wood(张木喜)老师也是会议的联席主席之一并兼任出品人。借此机会,InfoQ很荣幸地在会前采访到他,请他聊聊musical.ly发展的这几年在架构上的迭代经历,以及未来支撑庞大业务背后的数据平台架构该如何搭建等思路。本文基于采访整理而成。musical

软件架构 2017-12-04 发布
AD 友情赞助
17 浏览

MySQL Authentication Failed的问题分析与解决对策

问题描述在应用端,偶尔看到有如下报错:Authenticationtohost'xxxx'foruser'yyyy'usingmethod'mysql_native_password'failedwithmessage:Readingfromthestreamhasfailed.表现特征:只有用Connector/NET出现这个问题,用JDBC驱动没有类似问题。多台应用服务器,只有一台报这个错。因此可以排除服务器端的问题。问题非常随机。重启一下服务器/IIS,就能临时解决问题。有一些场景应用服务器CPU并不是很高,也会偶尔抛出这个错来。客户端是Windows机器,驱动是MySQLConnectorADO.NETDriverforMySQL(Connector/NET),使用的版本是6.9.9是比较新的版本。问题分析我们在应用服务器端和数据库端抓包。两边抓到的包是一致的。可以排除网络包丢失问题。下面是抓到的包,以及时间点:从上述网络包的交互来看,前面三个包是TCP的三次

MySQL 2017-12-04 发布
18 浏览

MySQL每秒57万的写入,带你飞

需求一个朋友接到一个需求从大数据平台收到一个数据接在20亿+,需要快速的加载到MySQL中,供第二天业务展示使用。实现在分析对于单表20亿,在MySQL运维,说真的这块目前涉及到比较少,也基本没什么经验,但对于InnoDB单表Insert如果内存大于数据情况下,可以维持在10万-15万行写入。但很多时间我们接受的项目还是数据超过内容的。这里使用XeLabsTokuDB做一个测试。XeLabsTokuDB介绍项目地址:https://github.com/XeLabs/tokudb相对官方TokuDB的优化:内置了jemalloc内存分配引入更多的内置的TokuDB性能指标支持Xtrabackup备份引入ZSTD压缩算法支持TokuDB的binlog_group_commit特性测试情况介绍TokuDB核心配置:loose_tokudb_cache_size=4Gloose_tokudb_directio=ONloose_tokudb_fsync_log_period=1000tokudb_commit_s

MySQL 2017-12-04 发布
13 浏览

6 大主流 Web 框架优缺点对比

是该读些评论和做一些总结的时候了。当我们开始写这个系列博客的时候,我们知道JavaScript/web应用框架并不太好总结。我们努力对这个不可回答的问题作出回答:我该用什么样的框架?在这篇文章中,我们将对这个系列中所提到的每款框架做一个总结,包括我们所认为的强项和弱项。另外,我们为你留下了一些值得思考的问题。我是否需要使用框架?如果不尝试回答这个问题就是我们的失职,这越来越成为社会上某些人的口头禅,在网络平台上的争论也已经发展到犹如不需要额外编写API能更简单创建Web应用那样的地步。就像本系列中所有的内容一样,我们的回答也大都是依据这些内容。虽然无框架也能正常工作,但是,这也是有代价的。那些主张无框架手写Javascript的人,那些通常会被我们认为是斯德哥尔摩综合症(情感上会依赖他人且容易受感动的人)的人,忘记了网络平台上有多套快速发展的API,至少有三种不同的技术,三种截然不同的语法。web平台规范并确定了超过12000个API,事实上浏览器中的维恩图也显示了这些巨大差距。如果你是一个有着深

Angular 2017-12-04 发布
AD 友情赞助
19 浏览

再也不学AJAX了!(三)跨域获取资源 ① - 同源策略

我们之前提到过,AJAX技术使开发者能够专注于互联网中数据的传输,而不再拘泥于数据传输的载体。通过AJAX技术,我们获取数据的方式变得更加灵活,可控和优雅。但是AJAX技术并不是一把万能钥匙,互联网中的数据隐私和数据安全(例如你的银行账号和密码)也非常重要,为了保护某些用户数据的隐私与安全,浏览器使用“同源策略”限制了AJAX技术获取数据的范围和能力。但在一些合理的场景中,我们又不得不想办法绕过同源策略,实现跨域请求资源。因此“跨域技术”一直成为开发者们经久不衰的讨论话题。在“跨域获取资源”这一主题中,我们将围绕“同源策略”和“跨域”两大主题展开,不但讲述它们是什么,更说明了为什么要这么做。相信你在读完该主题下的两篇文章后,一定会对这两大主题有一个清晰,系统的认识。需要提前声明的是,本主题下的文章并不会像众多相同主题的文章一样罗列出所有的跨域技术,而只会捡最主流的四种进行讲解。因为我并不打算写“教你如何跨域”这样类型的文章。让我们开始吧。同源策略整个互联网世界的数据要么存储在服务端(即服务器,如数据库,硬盘

Ajax 2017-12-04 发布
16 浏览

JavaScript性能优化的小知识总结

前言一直在学习javascript,也有看过《犀利开发Jquery内核详解与实践》,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己不擅于思考懒得思考以至于里面说的一些精髓都没有太深入的理解。鉴于想让自己有一个提升,进不了一个更加广阔的天地,总得找一个属于自己的居所好好生存,所以平时会有意无意的去积累一些使用jQuerry的常用知识,特别是对于性能要求这一块,总是会想是不是有更好的方式来实现。下面是我总结的一些小技巧,仅供参考。(我先会说一个总标题,然后用一小段话来说明这个意思再最后用一个demo来简单言明)避免全局查找在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些functionsearch(){//当我要使用当前页面地址和主机域名alert(window.location.href+window.location.host);}//最好的方式是如下这样

JavaScript 2017-12-04 发布
18 浏览

windows环境下安装npm、cnpm、bower,配置cnpm 全局环境

简单地说,就是帮你下载好你需要的css或者js库,而且三者功能也都是一样的。那为什么要下载这3个不同的呢?据说npm容易被墙……而cnpm是淘宝的镜像,所以通常用cnpm代替npm。至于bower,是因为bower更多地用于前端开发。但是因为它也是依赖于npm的,所以没有npm,就没法载bower……不知道说了那么多你懂了没,但是这不重要~你所需要做的就是分别安装这3个,然后将bower为己所用。安装npm前往nodejs官网下载nodejs,https://nodejs.org/en/,建议下载稳定版的,下载后无脑安装即可~~安装完毕之后,在cmd中输入node-v查看是否已经安装成功如果有版本号显示,则代表安装成功!!!接下来我们尝试输入npm-v竟然也有版本号!?其实,nodejs自带npm,所以我们不需要额外安装就可以了。接下来,我们需要配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立“node_global”及“node_ca

JavaScript 2017-12-19 发布
AD 友情赞助
20 浏览

我与Node.js重新认识的第2周 - Node.js 底层

书接上次:《我与Node.js重新认识的第一周-Node.js风格特点》。这次读了一些关于底层实现的东西:《深浅》第3章异步I/O-node.js是如何实现异步i/o的Udemy《LearnandUnderstandNodeJSLearnandUnderstandNodeJS》Section2&3V8引擎首先,学习node.js一定要了解V8引擎,他是一个可以把js直接编译成(处理器可以识别的)机器码的东西。再详细点,V8是一个开源的用C++写的根据ECMA标准实现JavaScript可以把JavaScript编译成处理器可以识别的机器码可以独立运行也可以嵌入其他C++应用的JavaScript引擎。Node.js与V8引擎普通青年使用V8:运行V8,JavaScript->V8—compile—>MachineCode文艺青年则有这样一个大胆的想法:那些普通的js方法太没意思了,能力优先。如果我可以写一些C++代码,当做Add-on加到V8上,这样V8就有能力识别具有更多的

JavaScript 2017-12-04 发布
13 浏览

[javascript]搞清this的指向只需问两个问题

在确定身份时我们需要问两个问题:1,我是谁;2,我在那一,考虑一下情景问:我是学生,我在哪(this=?)?答:学校问:我是员工,我在哪(this=?)?答:公司问:我是中国人,我在哪(this=?)?答:中国问:我去参加运动会,挂着我们学校的名牌,我在哪(this=?)?答:xxx实验高中二,再看javascript中的this指向考虑下面的代码//test01.jsfunctionfa(){console.log(this)}varobja={fb:function(){console.log(this)}}varobjb={};varfc=obja.fb;//执行fa();obja.fb();fc();fa.call(objb);fa.a

JavaScript 2017-12-04 发布
12 浏览

手写一个自己的 JavaScript Promise 类库

开发终于有时间写这篇文章了,ES2015推出了JS的Promise,而在没有原生支持的时候,我们也可以使用诸如Promises/A+的库的帮助,在我们的代码里实现Promise的支持;如何使用Promise在讲具体实现之前我们还是先了解下我们如何使用Promise在我们的代码中。functiongetData(){returnnewPromise((resolve,reject)=>{request(your_url,(error,res,movieData)=>{if(error)reject(error);elseresolve(movieData);});});}//使用getDatagetData().then(data=>console.log(data)).catch(error=>console.log(error));例子我们需要使用request模块去请求一个地址,然后拿到响应的数据。由于request过程是一个异步的过程。因此我们使用了prom

JavaScript 2017-12-04 发布
AD 友情赞助
18 浏览

从零开始写Babel插件

by.聪36分钟前在现代Web前端开发中,离不开JavaScriptes6/7,而ES6/7中最常用的语法翻译当属Babel了。这篇文章将带读者从零开始开发一个自定义的Babel插件。Babel是什么Babel使用babylon解析JavaScript代码,得到抽象语法树(AbstractSyntaxTree,后文简称AST)。同时也可以使用babel-generator,输入一个合法的AST,还原成JavaScript代码代码如下:cosntbabel=require('babel-core')constcode=`importefrom'./where'const[a,b,c]=[1,2,3]`const{ast}=babel.transform(code,{ast:true})constgenerate=require('babel-generator')const{code:codeFromBa

JavaScript 2017-12-04 发布
10 浏览

深入理解ES6之——JS类的相关知识

基本的类声明类声明以class关键字开始,其后是类的名称;剩余部分的语法看起来像对象字面量中的方法简写,并且在方法之间不需要使用逗号。classPerson{//等价于prototype的构造器constructor(name){this.name=name;}SayName(){console.log(this.name);}}letper=newPerson("cf");per.SayName();//cfconsole.log(typeofPerson);//function构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。类与自定义类型的区别类声明不会被提升。类声明的行为类似let,因此在程序的执行到达声明处之前,类会存在于暂时性死区内。类声明中的所有代码会自动运行在严格模式下,并且也无法退出严格模式类的所有方法都是不可枚举的类的所有方法内部都没有[[Construct]],因此使用new来调用他们会

JavaScript 2017-12-04 发布
16 浏览

Nuxt.js服务端渲染实践,从开发到部署

经过几个周六周日的尝试,终于解决了服务端渲染中的常见问题,也成功说服了公司新项目采用前后端分离的解决方案,当SEO不在是问题的时候,或许才是我们搞前端的真正的春天,其中也遇到了一些小坑,Nuxt.js官方还是很给力的,提issue后很积极的给予帮助,再次感谢Nuxt.js的开发团队。解决的问题路由鉴权第一个拦路虎就是登陆时候的鉴权问题,如何把token保存到本地。官方使用express-session解决这个问题,但是这样做后端也需要使用nodejs,而我们公司使用的PHP。转念一想或许cookie可以一试,于是我是这样做的:app.post('/api/login',function(req,res){//后台验证用户信息,并返回tokenasyncfunctionlogin(){const{data}=awaitaxiosServer.post('/login',req.body)returndata}login().then(function(data){//把token存储到cookie中c

JavaScript 2017-12-04 发布
20 浏览

为你的网站带上帽子 — 使用 helmet 保护 Express 应用

Express基于Node.js,是一款用于构建Web服务的优秀框架。它很容易上手,且得益于其中间件的概念,可以很方便地进行配置与拓展。尽管现在有各种各样的用于创建Web应用的框架,但我的第一选择始终是Express。然而,直接使用Express不能完全遵循安全性的最佳实践。因此我们需要使用类似helmet的模块来改善应用的安全性。部署在开始之前,请确认你已经安装好了Node.js以及npm(或yarn)。你可以在Node.js官网下载以及查看安装指南。我们将以一个新的工程为例,不过你也可以将这些功能应用于现有的工程中。在命令行中运行以下命令创建一个新的工程:mkdirsecure-express-democdsecure-express-demonpminit-y运行以下命令安装Express模块:npminstallexpress--save在secure-express-demo目录下创建一个名为index.js的文件,加入以下代码:constex

JavaScript 2017-12-04 发布
14 浏览

快速排序——JS篇

快速排序使用分治法(Divideandconquer)策略来把一个序列分为两个子序列。步骤为:从数列中挑出一个元素,称为"基准"(pivot),重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。递归到最底部时,数列的大小是零或一,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。参考维基百科letquickSort=function(list){if(list.length<=1){returnlist;}else{letmiddle=list[0];letleftList=[];letrightList=[];//存放重复元素letmiddleList=[];list.forEach(node=>{if(node

JavaScript 2017-12-19 发布
11 浏览

前端跨域解决方案

浏览器同源策略什么是浏览器同源策略?“同源策略”(SameOriginPolicy)是浏览器安全的基础。同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。在判断两个页面的url是否具有相同的源之前,我们先来看一下一个url(统一资源定位符)的基本组成部分。对于一个url,它的基本组成部分是:协议://域名(或者是ip):端口(如果指定了)/路径。那么下面我们来举个例子:对于http://www.example.com/static来说,协议就是http,它的域名是www.example.com,它的路径是static,这里的端口号省略了(默认为80)。值得一提的是,在这个域名下面,example.com是主域名,而www.example.com是子域名,同样的a.example.com也是一个与前面所述不同的另一个子域名。并且,上面这三个域名互不相同。这里不再展开赘述,相关知识请查阅与计算机网络有关的知

JSONP 2017-12-04 发布
13 浏览

IPhoneX网页布局

viewport-fit默认情况下是auto我们可以看一下同一个页面不设置viewport-fit和设置其为cover的两种表现形式:不设置:设置为cover:当然,在横屏情况下我们可以更清晰地看到,设置cover可以使我们的页面导航和tag更加符合设计,但是内部的我们应该怎样进行布局呢?是直接使用padding还是有别的方法呢?CSSconstant()函数我们可以通过计算其padding值来进行布局,解决文字被埋在传感器底部的问题。但是IOS11给我们提供了更简单的办法。WebKit中新增了一个CSS函数constant(),以及一组四个已经定义好的常量:safe-area-inset-left,safe-area-inset-right,safe-area-inset-top,safe-area-inset-bottom。这四个常量分别代表了每个方向的非安全区域的值:那

CSS 2017-12-04 发布
11 浏览

公式编辑器 - 带提示下拉框功能 - 动态获取光标位置

引言应开发需求,需要写一个公式编辑器插件,下面给大家讲一下实现过程。(擦汗,强作淡定,咳,开嗓~)看图说话本小菜开发功能前乐于先写个需求思维导图(纯属个人爱好):Html真的只有一点点~公式编辑器测试css一起给了吧~迟早要给:/*编辑器下拉框相关样式*/table,tr,th,td{padd

jQuery 2017-12-04 发布
AD 友情赞助