- 博客(68)
- 资源 (5)
- 收藏
- 关注
原创 PHP读取Excel数据
承接上篇处理中-内容的处理设置reader和编码$file_path = 'test.xls';$excel5_reader = new PHPExcel_Reader_Excel5();$excel5_reader->_defaultEncoding = $encoding;$excel2007_reader = new PHPExcel_Reader_Excel2007(...
2019-05-07 18:30:53
1428
原创 导出数据到Excel的实用方案
处理前-库的选择实际工作场景中,经常需要将系统中数据导出为Excel,便于产品和运营查阅和二次处理。本文详细介绍了使用PHP导出数据的方法。PHP操作Excel主要有两个第三方库,一个是PHPExcel,另外一个是PhpSpreadsheet。其中PhpSpreadsheet是PHPExcel的升级版本。PHPExcel本身支持超链接、样式设置(字体、颜色、边框线、对齐等)、行高列宽设置、表...
2019-04-19 21:57:07
572
1
原创 前端和后端实现SVG转图片
前端方案实时保存为Base64用户通过界面操作SVG内容,当生成或者编辑SVG时,实时将SVG内容转换成Base64编码的img标签,塞回到原来的DOM节点中。此种方式在前端通过浏览器就可以完成,无须后端的参与。方案原理是使用canvas做中转,将svg+xml转换成png。在无需后端参与做二次处理时,可以满足业务场景。// 前端demo代码function drawInlineSVG(...
2019-02-20 18:17:59
5321
1
原创 老树发新芽-前后端分离实践
最早从Web2.0 Ajax技术开始兴起,就有提前后端分离了。从Gmail的单页应用,到现在的单页应用层出不穷。浏览器渲染引擎也一直在突破,越来越多的交互、计算放在了浏览器这一层。传统后端MVC架构,变成了前后端的MVC。后台的接口变成了模型层,逻辑处理层从CGI变成了JavaScript,展示层则还是标记语言HTML和CSS。为什么要做前后端分离当前项目从立项到2018年,已经有...
2018-09-11 14:36:52
233
原创 小萌新变身社会人
松浦弥太郎说过,所谓工作就是证明自己有用。很大白话的道理,深表赞同。劳动者付出了劳动,雇佣者给与其报酬。报酬的高低取决于劳动者证明自己有多有用。工作所需要的技能包含两个层面,其一是专业技能,其二是通用技能。我们能独立完成这项工作,依赖的是专业技能,即工作的专业性。不管是厨师、医生、会计、程序员还是地铁司机,专业度不过关是最难逾越的发展瓶颈。人和人之间是一个复杂的关系网络,个体的表现不仅需要...
2018-08-25 18:26:02
292
原创 TAPD和敏捷研发
这篇文章,原计划是去年9月份写的,一直拖到了现在。主要原因在于一直抽不出时间,其次对整个敏捷研发,包括现如今的devops也只是浅尝辄止,害怕误人子弟和广告嫌疑。笔者一方面作为敏捷研发的实践者,另一方面作为敏捷研发的受益者。站在这两层身份上,浅谈下TAPD和敏捷研发。TAPD介绍TAPD,是腾讯敏捷产品研发平台,强调敏捷迭代、小步快跑,使用范围包含腾讯和腾讯的合作伙伴。目前TAPD已开...
2018-03-25 17:10:29
10750
2
原创 公司那些事
毕业一年了,上上下下经历了不少公司。自己创过业,也在B轮公司待过,也在D轮做过事,另外也在上市公司做过螺丝钉。林林总总算下来,也有五家公司了。也是挺折腾的。经常有人会觉得,这小伙沉不下来。其实对应聘者而言,反反复复更换工作,当然有其不好之处。但从另一方面考虑有些人为什么会频繁更换工作呢?人往往喜欢待在舒适区,待久了一个地方就懒的去更换巢穴。频繁的跳出舒适区,也是对自己发展现状不满意的宣泄。这也是对笔
2017-06-24 11:20:33
670
原创 yii2-plus
yii2-plus,是基于yii2.0的脚手架项目。支持restapi,Admin(管理后台),Web(www服务),服务化。集成JWT、Hprose、推送、队列、Element UI。yii2-plus特点便于全站点开发中小型独立的站点,使用yii2-app-basic或者yii2-app-advanced,采用lnmp架构即可。但对于支持多平台的站点而言,其不仅需要面对PC浏览器和移动设备的w
2017-06-01 11:43:21
1353
原创 PHP C扩展开发
对PHP C扩展开发感兴趣的同学可以看下,项目包含8个demo,每个demo都可抽离出来独立运行。相比较使用ext_skel生成的骨架,demo会更好理解(只包含核心方法)。每个demo都有相应的测试文件和运行文档,另外代码中也会有较详细的注释。RequirementPHP 5.2 +InstallLinux 编译安装$ /$path/phpize$ ./configure$ make && m
2017-05-03 17:24:08
439
原创 书籍推荐
这几年,看了一些书。罗列出来,希望能给需要的人一些借鉴。正好在找工作,也能复习下。当然笔者是计科毕业的,专业书除外。后续的一些书籍信息,也会更新到这里。MySQL技术内幕-Innodb存储引擎豆瓣,主要讲述Innodb存储引擎的实现,写的也比较深入(索引实现,事务等)。但没讲具体的索引优化和注意的点。推荐阅读第五章和第七章。也可以结合看下mysql索引原理。Redis设计与实现豆瓣,主要讲述Redi
2017-04-19 23:12:03
1122
原创 IM系统设计
即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。实现方式有两种。 第一种基于Server转发的,Client双方通信会经过Server转发来完成消息传递。例如QQ、微信。第二种是基于P2P(点对点)的。P2P的实现依赖于客户端之间的互联,但由于NAT与防火墙的存在,客户端无法直接互联,需要coturn服务器
2017-04-15 18:16:22
7505
原创 如何高效率的学习新技术
除了拼搏和努力,成功也是有方法的。写这个话题,用以阐述下自己学习新技术的一套形而上学的东西,希望能给大家带来帮助。当然,每个人都有自己的方法论,适合自己的即是最好的。做好规划对笔者而言,在学校和工作中,经常会用一些空余时间学习新的技术或者框架。这个时候往往随性而为,看到感兴趣的或者热门的就去看下,没有约束。从人性出发,每个人都是有惰性的。看到好看的电影,便会去看。看到好友邀请打游戏,就会去打一盘游戏
2017-04-08 13:25:45
876
原创 PHP 7下安装Swoole和Yar、Yaf
笔者开发坏境:CentOS7,PHP 7.0.16安装PECL//php版本 > 7$ wget http://pear.php.net/go-pear.phar$ php go-pear.phar//php版本 < 7$ yum install php-pear//否则会报错PHP Parse error: syntax error, unexpected //'new' (T_NEW)
2017-04-02 11:36:06
3669
1
原创 用户系统设计
用户系统,主要分为账号体系和用户信息两大类。账号体系包括,登陆验证、注册、第三方授权、以及权限管理。用户信息包括,用户地理位置、用户属性、用户设备信息、还有用户日志信息。本文会介绍用户系统的具体落地方案。登陆验证在一般项目账号体系中,一般会要求支持手机、邮箱、账号、QQ、微信、微博实现登陆。后面三种方式都是基于第三方授权后,完成的身份验证。手机、邮箱、账号则是相对传统的登录方式。用户身份与登录的授权
2017-04-01 23:42:30
21496
4
原创 Feed设计与实现
Feed,在社交和信息推荐的App与网站中,基本都会用到的。例如常用的新浪微博,用户登录进入后,展现给我们的就是feed信息流。新浪微博的信息,来自于你关注人所发布的内容。还有微信的朋友圈,今日头条的信息流,好友发布的美拍等,这些都是Feed。玩过知乎的人应该知道,在知乎Feed中,会显示某某关注了某某话题,某某点赞或者赞同了某个回答。广义来讲,这些也算是一种Feed。本文会先介绍几种不同的Feed
2017-03-07 14:13:33
7961
原创 App首屏接口性能优化
目前所在项目组开发的是一款母婴产品,集工具和社区属性。截止本文发布,注册用户接近7000万,首屏接口日访问量过百万。在首屏中,会给用户展现不同的数据,比如每日任务,宝宝(婴儿)每日概述,胎教音乐,运动视频,热帖等模块。首屏接口性能的好坏,将直接影响到app的使用体验。我们服务端RPC框架采用RESTful,其底层是curl实现的。curl采用http协议的,另外我们服务端的技术栈是PHP。我们都知道
2017-02-26 15:37:00
3308
原创 InnoDB存储引擎(一)
InnoDB存储引擎(一)整体结构内存池维护线程/进程内部数据结构缓存磁盘文件(cache)对数据的更新或者新增操作,避免直接刷新磁盘重做日志缓冲(redo log) 后台线程Master Hhread,将更新的数据(包括新增和被修改的数据)异步刷新到磁盘,维护内存池和磁盘中的数据的一致性。IO Thread分为Insert buffer Thread,log thread,read t
2017-02-07 20:14:58
477
原创 2016年终总结
很久没安静下来写点什么了,太懶了。Review Plan学习去年计划看一些底层的书籍,基本都完成了。书单是 1. redis设计与实现 100% 2. mysql技术内幕 100% 3. 深入理解nginx 11% 4. nginx实战开发 100% 5. 大型网站技术架构 100% 6. Hadoop实战 70% 7. 微服务设计 21% 8. 激荡三十年 14% 9. 利用py
2017-01-08 23:15:01
456
原创 Mysql 技术内幕(二)
MySQL技术内幕系列博客,是本人在阅读《MySQL技术内幕 InnoDB》存储引擎所做的整理总结。本节内容源于书中三、四章。MySQL 使用的文件文件类型分类InnoDB 数据表表空间文件数据页约束分区
2016-06-11 11:53:11
564
原创 Mysql 技术内幕(一)
MySQL技术内幕系列博客,是本人在阅读《MySQL技术内幕 InnoDB》存储引擎所做的整理总结。本节内容来源于书中前两章。MySQL 体系结构MySQL结构模块图Innodb 存储引擎Innodb 体系结构图Innodb 内存池checkPointInnodb 关键特性
2016-06-11 11:36:08
685
原创 对短视频和技术的一些看法
在美图有一段时间了。从两方面总结下。下段时间,继续努力。对短视频的理解近两年因为4G的普及,智能手机拍摄技术的升级。传统的媒介方式,由文字到语音,再到图片,再转到了视频。所以近两年段视频的火爆也是很正常的。秒拍,快手,美拍,其次包括腾讯的微视。这几款平台型的短视频社区都发展的挺不错的。秒拍背后的有新浪爸爸。美拍背后依靠超级app美图秀秀。快手,由做gif出身,生的早。根据美拍
2016-04-10 10:19:33
6143
1
原创 Redis数据结构(二)
压缩列表1:压缩列表是为了节省内存而设计的,是一种线性的数据结构。主要用在哈希和列表两种数据类型中。2:压缩列表包含主要包含五个部分,这五个部分顺序排列组合在一起。 结构如下图所示。 表节点,有三个域组成。previous_entry_length,用来记录前一个节点的长度。encoding,记录下一个域的数据类型和长度。content,保存节点的值。 3:压缩列表有一种极端情况,会导致性
2016-01-03 17:56:16
508
原创 2015年终总结
2015年最后一晚,大部分时间在召唤师峡谷中度过的。说来惭愧,但和同学开黑真的是挺愉快的。2015年,自己还是挺满意的,没什么大的遗憾。最高兴的是终于追到了女神。工作,也有着落。年初,还好意识的比较早,在4月份就开始找实习工作了,也顺利的拿到了几家的实习offer,包括饿了么。因为想留在南方,最终选择了金斧子,在金斧子实习,收获的挺多的。在接近半年的实习生活中,基本完成了从学生到工作者的转化。很感谢金斧子。
2016-01-03 15:00:53
674
原创 Redis数据结构(一)
SDS简单动态字符串结构:1:SDS是在C语言字符串的基础上,构造的一种简单的动态字符串(simple daynamic string)。SDS结构体包含三个变量,len用来记录长度,free用来记录未使用字节的数量,buf存储实际的字符串数组。 2:SDS不以‘\0’为结束符,而是以len的长度标识 优点1:O(1)获取字符串长度。sdshdr结构体中,直接存储了字符串的长度。因此直接以sds
2015-12-19 16:13:40
561
原创 memcached
memcache和memcached 区别看了很多比较的,这个最实在 1. 目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的。与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些。 2. Memcache是原生实现的,支持OO和非OO两套接口并存。
2015-12-06 15:48:22
469
原创 校园招聘
很长时间没写东西了。这几个月一直忙着实习和找工作,身心俱疲。事到如今,有些事后悔已无用,唯有继续前行。赛翁失马,焉知非福。[知乎。。。](http://www.zhihu.com/question/35708163/answer/64336664) 这段时间,面试过深信服,美图,腾讯。还好,拿到了前两者的offer。高冷的腾讯,至今还没反馈。简单写下,当作面经吧,也是自己的一
2015-10-11 18:00:48
1480
原创 web安全结构图
跨站脚本攻击(Xss)恶意代码被浏览器引擎解析,主要是js代码 1:输入过滤,避免直接输出 2:设置cookie为http-only跨站点请求伪造(Csrf)原理: 在用户会话期内,诱导用户点击破坏性链接 解决方法: 1:重要操作使用验证码 2:表单提交使用隐藏token点击劫持原理: 页面被iframe嵌套,通过css控制其视觉效果,诱发用户点击 解决方法: 1:设置页面是否允许被ifram
2015-05-31 18:24:15
1428
原创 创建型模式
对象之间的常见关系泛化关系:体现在类的继承中,具体代码表现在继承非抽象类。小汽车->suv 实现关系:也是一种继承关系,具体表现在继承抽象类。车->小汽车聚合关系:表示的是一种部分与整体的关系,整体由部分构成。例如,部门由员工构成 组合关系:也是一种部分和整体的关系,但是部分与整体之间存在强依赖。例如,公司和部门,公司倒闭了,部门也不存在。关联关系:用来定义对象之间天然的结构,自然的从属,是一种
2015-05-18 16:48:49
552
原创 常见web攻击-客户端脚本安全
本文来自:gglinux,原文地址:,转载请注明XSS攻击跨站脚本攻击。攻击者向网站恶意添加前端代码(js,html,css都有可能)。当用户浏览时,这段恶意代码得以执行,便可能造成攻击,如盗取用户cookie,破坏页面结构,跳转到其他网站等。 http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html反射型XSS1.含义:将用户
2015-05-06 18:04:48
2261
原创 angular.js官方文档的一些说明
windows1:node.js官网下载node的安装包.http://nodejs.org/dist/v0.12.2/node-v0.12.2-x86.msi2:下载安装git,windows客户端。http://git-scm.com/download/win3:clone实例代码地址(可以直接下载):https://github.com/angular/angular-phonecatgit
2015-04-24 15:25:04
4055
原创 html5-file样式
在复习html5,file时,偶然找到了一篇之前一直想实现的样式需求。贴代码如下,但还有两个问题不太懂。<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>上传文件</title></head><style type="text/css"> .fileInputContainer{ heig
2015-04-07 16:27:03
1300
原创 css中布局方式总结
问题要实现如下的布局。有几种方案可以选择? 方案一css中前”世纪”的布局方式-table,这种布局方式不利于SEO,代码量比较大。<style type="text/css"> .content{width: 960px;margin: auto;} .content-list{width: 300px;background-color: #4598BF;height: 300p
2015-04-07 11:22:16
766
原创 html5 总结-新增重要标签及属性
综述 这段时间,一直在温故前端的东西,发现了很多不足(更应该说不会吧)。前端的学习方法,更多的是记忆和经验。html5相对于html4而言。主要有以下几点改进。语义化标签增多,结构更清晰方便性、功能性增强,对程序员更友好新增的重要标签audio处理音频,因为有些浏览器不支持某些音频格式。需要转化或者准备多个 详细介绍:w3c<audio controls>你的浏览器不支持audio
2015-03-30 10:04:31
1174
原创 js学习笔记-函数表达式
函数表达式1:函数的两种形式1:函数声明,类似于大多数语言(c/c++/java/php)。function fun(name, age){ var qinjie = name + age; return qinjie; }2:函数表达式,创建一个函数变量并将其值赋给某个变量。这种产生的函数也称为”匿名函数”var fun = function(name, age){ va
2015-03-24 16:59:54
546
原创 js学习笔记-面向对象程序设计
面向对象程序设计1:创建对象1:第一种方式,创建object的实例 //第一种方式,直接调用基类object创建 var Person = new Object(); Person.name = "daimeng"; Person.age = "21"; Person.getName = function(){ return this.name;
2015-03-23 19:31:27
533
原创 js学习笔记-引用类型
1:引用类型很类似与面向对象中的类,引用类型的实例就类似于面向对象中的对象,但是实现方法不同。2:Object类型是其他应用类型的“基类“,所有的应用类型都继承了其基本的属性和方法。例如:constructor,prototype;toString(),valueOf();3:Array类型是一组值的有序列表,同时还提供了操作和转换这些值的方法。4:Date类型提供了日期和时间的操作
2015-03-20 17:21:00
585
原创 ”javascript高级程序设计“学习笔记-开始
一方面为了即将到来的校招,另一方面为了监督自己。现将JavaScript学习笔记记录在此。是从教材第五章开始记录的,之前也零零散散的记了一些东西,没有系统整理,就算了。以前的学习过程都是以实践为主,遇到问题,再去解决,很多知识都不曾系统的整理过。希望能借这个过程,好好的整理下。既然决定了“web开发”这块,就好好的坚持下去。当我的巴特农神庙建立起来的时候,我从这遥远的地方也能感受到他的辉煌。。
2015-03-20 15:15:26
487
原创 Android Studio安装和eclipse gradle配置
废话为研究一个开源项目,配置了一天的环境,终于给配置好了。由于不熟悉gradle和Android Studio,百度和Google了很多资料也不是很全,在此综合下,避免再走弯路。以下前提是安装好jdk环境,eclipse,Android sdk。gradle说明gradle类似于maven,ant。是用来构建大型项目的,通过使用这些工具,能够便捷的完成项目的编译和部署。具体的细节,
2015-01-31 22:59:37
1361
原创 产品原型开发
一:废话。。。作为一名程序员,在初创公司不仅是写代码的,还是一名产品经理,肩负着产品设计的重任。在做一款APP的产品原型设计时,使用了两款软件。其一是腾讯的Uidesigner,下载地址http://uid.cdc.tencent.com/。另外一个是比较火的国外产品,axure。下载地址:http://www.axure.com/。二uidesigneruidesigner很适合新手
2015-01-30 20:45:30
1596
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人