自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 问答 (3)
  • 收藏
  • 关注

原创 深入理解JS继承和原型链

对于那些熟悉基于类的面向对象语言(Java 或者 C++)的开发者来说,JavaScript 的语法是比较怪异的,这是由于 JavaScript 是一门动态语言,而且它没有类的概念( ES6 新增了class 关键字,但只是语法糖,JavaScript 仍旧是基于原型)。涉及到继承这一块,Javascript 只有一种结构,那就是:对象。在 javaScript 中,每个对象都有一个指

2016-12-17 11:18:40 5218 5

原创 MySQL优化详解

MYSQL优化MYSQL优化主要分为以下四大方面:设计:存储引擎,字段类型,范式与逆范式功能:索引,缓存,分区分表。架构:主从复制,读写分离,负载均衡。合理SQL:测试,经验。一、存储引擎在创建表的时候我们使用sql语句,Create table tableName () engine=myisam|innodb; 这里就指明了存储引擎是myisam还是innodb

2016-10-19 16:52:03 4161 1

原创 Laravel数据库操作的三种方式

Laravel提供了3种操作数据库方式:DB facade(原始方式)、查询构造器和Eloquent ORM。下面我将逐一讲解。数据库的配置文件在config目录下的database.php里。打开这个文件,找到mysql的配置项。这里有个env,它其实是调用了laravel根目录下的.env文件,这个文件存储了数据库的配置信息。打开它。修改为项目的数据库信息即可。

2016-10-15 20:45:35 127112 6

原创 Win10系统下WampServer不能正常运行原因深度探索

升级Win10后,发现原来的WampServer无法正常运行了,甚是郁闷,后来查了很多资料,终于解决了这个问题。欣喜之情不觉溢于言表,所以写这篇博客,希望能帮到大家。WampServer无法正常运行无非有以下几个原因:     1.安装运行WampServer2.5时提示“计算机中丢失 MSVCR110.dll”        安装WampServer2.5的过程中就出

2016-05-26 12:16:04 11024 1

原创 Vue全家桶+Socket.io+Express/Koa2打造网页版手机QQ

Vue全家桶+Socket.io+Express/Koa2打造的网页版手机QQ(web app),高仿手机QQ7.1.0版本预览在线预览地址:http://lenshen.com:8080/技术栈Vue2.0:实现前端页面构建Vuex:实现不同组件间的状态共享Vue-router:页面路由切换,实现单页的核心vueg:页面复杂场景切换效果Socket.io:实现实时

2017-07-29 23:25:12 5594 3

原创 如何获取事件冒泡里最顶层的元素(或者任意层的元素)

先举个例子,有如下DOM结构: ThreeTree 19 大哥 想请教一个问题

2017-06-30 13:03:53 3337

原创 vue 使用 axios 发 post 请求,后台无法接收到数据

解决办法:安装body-parser 就可以了,body 是主体的意思,parser 解析器。第一步安装:npm install --save body-parser第二步导入:var bodyParser = require('body-parser');第三步使用:body-parser 是一个中间件,用 app.use() 加载一下即可。app.use(b

2017-06-13 01:17:54 18440

原创 JS笔试面试题(后续更新)

1. 下面代码的运行结果是?var length = 10;function fn() { console.log(this.length);}var obj = { length: 5, method: function(fn) { fn(); arguments[0](); }}obj.method(fn, 1);答案:10 2解析:首先,fn(

2017-06-03 11:04:38 864

原创 shell 数组 循环

#!/bin/basharray=(1 2 3 4 5) #以括号括起为数组 中间是空格for num in "${array[@]}" #以这种for打印数组do echo $numdonexxx[0]='a' #第二种定义数组的方法xxx[1]='b'xxx[2]='c'for ((i=0; i<${#xxx[@]};i++)); do # ${#xxx[@]} 返回数组

2017-06-02 19:20:11 3973

原创 linux下安装nodejs

直接按照以下命令输入即可:[root@lensh] cd ~   (进入到root的家目录,即 /root)[root@lensh] wget https://npm.taobao.org/mirrors/node/v6.10.3/node-v6.10.3-linux-x64.tar.xz (安装源码包)[root@lensh] xz -d **.tar.xz  [root@len

2017-06-01 23:07:36 629

转载 React组件性能优化

React仅仅专注于UI层;它使用虚拟DOM技术,以保证它UI的高速渲染;它使用单向数据流,因此它数据绑定更加简单;那么它内部是如何保持简单高效的UI渲染呢?React不直接操作DOM,它在内存中维护一个快速响应的DOM描述,render方法返回一个DOM的描述,React能够计算出两个DOM描述的差异,然后更新浏览器中的DOM。就是说React在接收到props或者state更新

2017-05-24 00:03:26 1278

转载 Apache重写规则解析

1、.htaccess文件使用前提.htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的作用。所有的访问都是通过URL实现,所以.htaccess的作用非同小可。正因为此,所以一般地网站通过设 置.htaccess,通过一个十分友好的url吸引用户进来,然后用.htaccess把用户带

2017-05-23 23:17:06 1083

原创 TypeError: io.sockets.socket is not a function 解决方案

近日使用socket.io开发即时聊天应用程序时遇到这么一个问题,就是使用io.sockets.socket(socketid).emit('String', data) 给指定的客户端发送消息时,报了一个 TypeError: io.sockets.socket is not a function 的错误,找了很久的原因,原来是当socket.io版本大于1.0.x时,我们应该使用 io.t

2017-05-11 00:57:28 10776

原创 React组件生命周期详解

在React组件的整个生命周期中,随着该组件的props或者state发生改变,其DOM表现也会有相应的变化。一个组件就是一个状态机,对于特定地输入,它总返回一致的输出。一个React组件的生命周期分为三个部分:实例化(mounted)、存在期(update)和销毁时(unmount)。1、mounted: 即React 组件被render解析生成对应的dom节点并被插入浏览器

2017-05-07 13:51:27 2142

原创 轻松搭建ES6开发环境

首先,你要自行查阅什么是ES6和ES5、javascript有什么关系,为什么要编译ES6。废话不多说,just go!  第一步:创建项目并让它成为npm可以管理的仓库。        新建一个项目,名字假设为test,然后打开命令行,用cd进入到这个目录,在命令行里输入npm init,回车。接下来会有很多提示,你只要一直按回车即可,然后会发现根目录下多了一个package.j

2017-04-26 18:54:44 4415

原创 语义化版本

在使用 Node.js 和 Bower 的时候,其中的 package.json 和 bower.json 都会有dependencies、devDependencies 项,对于此前端开 发的童鞋应该会比较熟悉。这里面是运行时和开发时依赖库,其中依赖库对应的版本号有很多种写法,诸如:”~1.0.2“, “^1.0“, “>=1.0.2“等,其实可以猜测这种写法代表了某种范围,至于具体含义

2017-04-24 23:16:31 538

原创 原生JS实现split()

原生JS实现split function split(str,operation){ var temp=[]; var arr=[]; for(var i=0;i<str.length;i++){ if(str[i]==operation) temp.push(i); } arr.push(str.sub

2017-04-19 21:41:41 4074 2

原创 动态规划-----最长公共连续子串

牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度。输入描述:输入为两行字符串(可能包含空格),长度均小于等于50输出描述:输出为一个整数,表示最长公共连续子串的长度输入例子:abcdeabgde输出例子:2解题思路:这题其实是动态规划的变形经典题型,应用动态规划的思想,创建一个二

2017-04-09 18:33:21 19622

原创 通过考试(京东2017实习生真题)

题目描述:小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试。考试结束后,小明估算出每题做对的概率,p1,p2,...,pn。你能帮他算出他通过考试的概率吗?输入输入第一行一个数n(1输出小明通过考试的概率,最后结果四舍五入,保留小数点后五位。样例输入450 50 50 50样例输

2017-04-08 18:32:37 777

原创 Sublime Text 3 搭建 React.js 开发环境

Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境。1. babel-sublime支持ES6, React.js, jsx代码高亮,对 JavaScript, jQuery 也有很好的扩展。关于 babel 的更多介绍可以看这里:为什么说Babel将推动JavaScript的发展安装PC:Ctrl+s

2017-04-07 16:03:30 1858

原创 常用排序算法

一、冒泡排序      冒泡排序是最简单的排序算法。假设数组一共有n个元素,元素最大下标为n-1,冒泡排序的具体做法是:第一趟在序列(A[0]~A[n-1])中从前往后进行两个相邻元素的比较,若前者大,则交换,比较 n-1 次;第一趟排序结束,最大元素被交换到A[n-1]中,下一趟排序只需要在子序列(A[0]~A[n-2])中进行;依次类推,冒泡排序最多进行 n-1 趟。基本的冒泡排序可以利用

2017-04-05 21:26:44 371

原创 sql语句 不让结果排序,按照in语句的顺序返回结果

问题引入,假如有一张数据表结构如下:现在的需求是:查找id为7,10,2,1,5的记录,并让结果按in的顺序输出来,也就是说,结果集转换成二维数组后,二维数组里面的一维数组里的id分别是7,10,2,1,5,而不是1,2,5,7,10。如果sql语句这样写:SELECT * FROM classone WHERE id IN(7,10,2,1,5) ,那肯定是不行的,因为结

2017-04-04 22:28:19 7091

原创 二维数组排序

问题引入: 例如现在要对下面的二维数组按照姓名(name)的字典顺序升序排列:$person = array( array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21), array('num'=>'001','id'=>7,'name'=>'ahangsan','age'=>23), array('num'=>'003'

2017-04-04 19:44:48 8437

原创 Javascript异步编程的4种方法

你可能知道,Javascript语言的执行环境是"单线程"(single thread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Jav

2017-04-04 18:17:25 331

原创 JS模块化入门

在开发大型的web项目中,可能会使用到管理js的模块化工具。但是在前端轮子漫天飞的时代。那一款js模块化工具真正适合我们应用到开发呢?目前比较流行的模块化工具有RequireJS 、SeaJS等等。而且模块化开发工具都有不同的规范去约束例如:AMD CMD CommonJS。CommonJS说道CommonJS,学习过Node的同学会比较熟悉,CommonJS是服务器模块的规范

2017-04-04 16:57:19 502

原创 前端工程师必须掌握的5个技能

HTML5已经火了一段时间了,相信作为web相关开发工程师,肯定或多或少的了解和尝试过一些HTML5的特性和编程。还记得以前我们介绍过的HTML5新标签。 作为未来前端开发技术的潮流和风向标,HTML5绝对不容忽视。在今天这篇技术分享文章中,我们将介绍几个HTML5的重要特性,能够帮助你提高整个web应用的使用体验和开发效率,相信大家会感兴趣的!特性一:正则表达式相信大家都会非常喜欢这

2017-03-25 00:18:13 3060

原创 setInterval()之坑

首先看下面这个例子: setInterval()之坑 (function(){ var arr=[1,2,3,4,5,6]; var i=0; var timer=setInterval("printNumber()",2000); function printNumber(){ console.log(arr[i]);

2017-03-22 21:24:05 2767

原创 深入理解JS事件委托

概述:那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了,借花献佛,我摘过来,大家认真领会一下事件委托到底是一个什么原理

2017-03-12 22:47:57 1936

原创 JS实现进制转换

js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用对象.toString()即可实现://10进制转为16进制(10).toString(16) // =>"a"//8进制转为16进制(012).toString(16) // =>"a"//16进制转为10进制(0x16).toString(10) // =>"22"//16进制转为8进制(0

2017-03-05 14:21:08 1075

原创 深入理解JavaScript箭头函数

箭头函数就是个简写形式的函数表达式,并且它拥有词法作用域的this值(即不会新产生自己作用域下的this,arguments,super和new.target等对象)。此外,箭头函数总是匿名的。语法基础语法(param1, param2, …, paramN) => { statements }(param1, param2, …, paramN) => expression

2016-12-23 14:23:11 28329

原创 MySQL中group_concat函数深入理解

MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])1.基本查询 mysql> select * from aa; +------+------+ | id| name | +------+---

2016-12-07 23:22:32 598

原创 几个常用的高级函数

1.php获取当前页面完整url地址的函数function get_url(){ $url = (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ? 'https://' : 'http://'; $url .= $_SERVER['HTTP_HOST']; $url .= isse

2016-11-25 11:38:06 1493

原创 为什么用360浏览器打开网页显示不正常而其他浏览器都正常

今天把一个项目放到线上,发现用其它浏览器显示都正常而360却乱成一团,找了很久的原因,原来用的360浏览器的模式是兼容模式,是这个兼容模式搞的鬼。对于360浏览器的极速模式与兼容模式,相信大家都不陌生,极速代表着高速,意味着是高版本的浏览器,速度快嘛。而兼容模式则是极力适合各种浏览器,考虑更多的是兼容。这两个模式在360浏览器上怎么设置呢?打开浏览器,在网址的后面有一个闪电的图标或是一个e图标

2016-11-24 20:57:01 20433 2

原创 商品表的sql

# tinyint : 0~255# smallint : 0~ 65535# mediumint : 0~1千6百多万# int : 0~40多亿# char 、varchar 、 text容量?# char :0~255个字符# varchar : 0~65535 字节 看表编码,如果是utf8存2万多汉字 gbk存3万多汉字# text : 0~65535 字符C

2016-11-16 11:35:45 4683

原创 PHP的继承方法如何获取子类名?

php后期静态绑定问题:例如<?phpclass A{ function __construct() { echo __CLASS__; } static function name() { echo __CLASS__; }}class B extends A{}$objB = new B()

2016-11-14 00:53:14 6410

原创 定时执行php脚本

使用PHP定时执行某些任务的话, 可以有以下两个方法:1. Linux下crontab, windows下计划任务,具体实现可以参考我之前写的一篇博客:http://blog.csdn.net/zls986992484/article/details/531088362. 使用php的相关函数set_time_limit(0);ignore_user_abort(true);//这

2016-11-10 02:14:20 2078

原创 linux使用crontab实现PHP执行定时计划任务

首先说说cron它是一个linux下的定时执行工具。根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab。该文件使用的格式和 /etc/cro

2016-11-10 01:12:16 3817 1

原创 Apache和Nginx的区别

Apache与Nginx的优缺点比较 1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊 apache 相对于nginx 的优

2016-11-10 00:18:48 498

转载 PHP运行模式

PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli  命令行运行(Command Line Interface)4) web模块模式(apache等web服务器运行的模块模式)1.  CGI(Common Gateway Interface)

2016-11-10 00:11:57 462

原创 PHP的错误日志

对于PHP开发者来说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是,任何一个产品在投入使用后,都难免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本文件中将错误报告作为日志记录。错误日志的记录,可以帮助开发人员或者管理人员查看系统是否存在问题。如果需要将程序中的错误报告

2016-11-09 23:34:08 670

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除