- 博客(108)
- 资源 (1)
- 收藏
- 关注
原创 JavaScript关于作用域、作用域链和闭包的理解
作用域先来谈谈变量的作用域 变量的作用域无非就是两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的:<script> var outerVar = "outer"; function fn(){ console.log(outerVar); } fn();//res
2017-04-29 22:04:30 55230 3
原创 linux安装MYSQL遇到的问题
####启动MYSQL服务时出现无法创建/var/log/mariadb/mariadb.log 错误信息: Starting MySQL.touch: cannot touch ‘/var/log/mariadb/mariadb.log‘: No such file or directory chmod: cannot access ‘/var/log/mariadb/mariadb.log
2017-10-12 19:39:08 11779 1
原创 如何阻止表单的默认提交事件
表单一点击提交按钮(submit)必然跳转页面,如果表单的action为空也会跳转到自己的页面,即效果为刷新当前页。 如下,可以看到一点击提交按钮,浏览器的刷新按钮闪了一下:如果想要阻止表单的默认提交事件,有以下几种方法:1.将<input>标签内按钮类型从type="submit"修改为type="button"2.表单内的<button>未指定类型时,默认的类型为submit,可以显式的修改为
2017-10-08 23:15:42 51967 6
原创 bootstrap开发中遇到的问题
导航条缩小到XS模式上下留白的情况做了一固定在底部的导航内嵌表单,但是缩小到xs宽度时出现了上下两条白条。 原因也很简单,在缩小到xs宽度时出现了折叠的情况,bootstrap将内嵌的form视为独立整体的一行。 我采用了解决方法: 1.将form的一个class属性:navbar-form改为form-inline 2.再为form添加padding样式style="padding-t
2017-10-08 22:02:07 1447
原创 浅谈JSONP
网上通篇大论JSONP,说的无非都是JSONP可以解决跨域数据访问的问题 那么我们一般访问数据都是通过AJAX,但是AJAX跨域请求需要被请求方通设置Access-Control-Allow-Origin来实现跨域访问。否则AJAX一般不允许跨域请求。 由于AJAX的核心是XMLHttpRequest。我上一篇博文也讲过如何不通过XMLHttpRequest来模仿AJAX。 总共有三种方法:
2017-10-08 18:23:55 411
原创 不用XMLHttpRequest来模仿AJAX
AJAX的原理就是通过XMLHttpRequest对象来对服务端发起请求。所以XMLHttpRequest对象是AJAX的核心。 现在我想不通过XMLHttpRequest对象来对服务端发起请求,但不刷新页面。 例:创建一个投票按钮,点击后将请求服务器数据库对数据加一。 前端投票按钮test.html:<!DOCTYPE html><html lang="en"><head> <m
2017-10-04 16:02:05 970
转载 MyISAM和InnoDB的索引实现
在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。我们主要分析B-Tree 索引。B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。Archive 引擎直到 MySQL 5.1 才支持索引,而且只支持索引单个 AUT
2017-09-16 14:31:21 756
原创 strtolower()和strtoupper()中文乱码问题
这个问题来自腾讯的一道笔试题: PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换。原因是:中文是由多字节组成的,而只有英文系统的单个英文字符只有一个字节,所以该系统把中文的每一个字节都做了strtolower()处理,改变后的中文字节拼接在一起就成了乱码(新生成的编码映
2017-09-06 21:04:01 3941
原创 背包问题模板
01背包特点:每种物品只有一件子问题定义状态 bag[i][v] : 前i件物品放到一个容量为v的背包中可以获得最大价值转移状态方程 bag[i][v] = max(bag[i-1][v],bag[i-1][v-weight[i]] + value[i])模板:#include<iostream>#include<string.h>using namespace std;int m
2017-09-03 19:42:24 378
原创 BST二叉搜索树
BST的查找算法//递归查找struct node *Find(ElementType key,struct node *BST){ if(!BST) return NULL;//查找失败 if(key > BST->data){ return Find(key,BST->right); }else if(key < BST->data){
2017-09-01 22:24:53 355
转载 构造回文
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子1: abcda google输出例子1: 2 2#include <iostream>#inclu
2017-07-19 20:29:54 389
原创 最长公共子序列与最长公共子串--动态规划
最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。最长公共子序列问题:对于母串X=<x1,x2,⋯,xm>,Y=<y1,y2,⋯,yn>,求
2017-07-19 20:26:35 367
原创 Referer与防盗链
Referer:HTTP请求头信息中的Referer可以判断访问的本站资源是来自哪里的。因此,我们可以利用Referer来避免别人盗取自己本站的资源,如图片。如Apache可以编写.htaccess文件来重写访问的资源连接RewriteEngine On#Rewrite Base /dir #只在dir目录下生效RewriteCond %{REQUEST_FILENAME} .*\.(jpg|j
2017-07-14 11:36:25 501
原创 Apache No installed service named "Apache2.4"的解决办法
windows安装Apache后,用cmd开启apache服务时,提示No installed service named "Apache2.4" 解决步骤: 1.cmd窗口,进入Apache2的bin目录(比如我的bin路径为E:\Apache24\bin)。 2. 运行httpd.exe -k install -n "Apache2.4" 安装Apache到Windows服务中。 (记得
2017-07-13 22:11:08 12969
原创 使用scoket发送HTTP请求
建议先看一下如何用telnet发送HTTP请求: http://blog.csdn.net/whd526/article/details/75042691<?phpclass Http{ const CRLF = "\r\n"; protected $errno = -1; protected $errstr = ''; protected $url = null;
2017-07-13 15:45:39 492
原创 HTTP协议
Http(HyperText Transfer Protocol),叫做超文本传输协议,它属于应用层协议,是基于Tcp连接的。它是一种基于请求/响应模式的,无状态的协议。 http1.0的特点:一次连接一次响应后就断开; http1.1的特点:持续连接,在一次连接中可发送多个请求,不必等待每次请求的响应是否到来。一般用浏览器来发送http协议,但是也可用别的工具来发送http协议。如teln
2017-07-13 00:54:36 667
原创 Ajax提交表单数据
ajax的基本语法$.ajax({ type: "post", //数据提交方式(post/get) url: "demo.php", //提交到的url data: {"key1":"value1","key2":"value2"},//提交的数据 dataType: "json",//返回的数据类型格式 success: function(msg){
2017-05-21 22:03:48 4422
原创 堆以及php实现堆排序
什么是堆 这里的堆(二叉堆),指得不是堆栈的那个堆,而是一种数据结构。堆可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示,每一个结点对应数组中的一个元素.数组与堆之间的关系 二叉堆一般分为两种:最大堆和最小堆。什么是最大堆堆中每个父节点的元素值都大于等于其孩子结点(如果存在),这样的堆就是一个最大堆因此,最大堆中的最大元素
2017-05-11 18:49:29 653
原创 先序创建二叉树及三种遍历
#include<stdio.h>#include<stdlib.h>int max = 0;struct node{ int data; struct node *left; struct node *right;};struct node *create(struct node *newNode){//先序创建二叉树 char data; sca
2017-05-11 16:01:28 1937
原创 插入排序
插入排序就像扑克排序,从未排序的序列选第一张牌,插入到已排序的牌堆里的合适位置。function insert(&$arr){ for($i = 1; $i < count($arr); $i++){//认为第一个位置是已排序序列,从第二个开始逐一选择插入 if($arr[$i] < $arr[$i-1]){ $temp = $arr[$i];
2017-05-11 12:57:44 267
原创 php实现冒泡排序
冒泡排序很简单,就是不断地交换相邻的数,使得最大的数排在最后面,即一次循环可以确定最大一个数的排序位置。 php代码实现:function bubble(&$arr){ for($i = 1; $i < count($arr); $i++){//第n次循环可以确定后n个的位置 for($j = 0; $j < count($arr)-$i; $j++){//确定的位置就不用
2017-05-11 12:32:05 661
原创 php实现归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。function mergearray($a,$b){ $a_poin
2017-05-07 21:34:20 534
原创 PHP实现链表(暂存)
<?phpclass node{ public $data; public $next; public function __construct($data){ $this->data = $data; $this->next = NULL; }}class Linklist{ public $head = NULL;
2017-05-07 15:42:43 465
原创 Linux连接文件ln
硬连接(hard link)硬连接是通过文件系统的inode连接来产生新文件名,而不是产生新文件 如为filename创建一个硬连接文件filename_hardlink: 如上图,因为硬连接产生不同的文件名都指向相同的inode,所以修改任意一方的属性或block数据,其他文件访问到的数据也联动改变了x先做一个硬连接的测试: 先创建一个新文件: 再创建该文件的一个硬连接: (可能
2017-05-01 15:23:23 701
原创 XML学习笔记
XML被设计来结构化、传输和存储数据,其焦点是数据的内容 HTML被设计来显示数据的,其焦点是数据的外观 即XML旨在传输信息,HTML旨在显示信息XML没有预定义的标签 XML允许作者定义自己的标签和自己的文档结点 XML的声明<?xml version="1.0" encoding="UTF-8"?>XML自己定义的结点标签表示方法:<root> <child>
2017-04-27 18:57:27 291
原创 DOM的三大结点:元素结点、文本结点、属性结点
先来看一句HTML小代码:<p id="ptag">this is a p tag</p>根据上面的那句代码,来说说一下什么是元素结点(element node),简单说就是一个标签,如:<p></p>(不带属性,不带内容,就仅仅只是一个标签) 对于元素结点的nodeName就是标签名(大写),而nodeValue就是null或undefined(除了标签名,啥也没有,nodeValue就不可能有
2017-04-27 15:49:36 1129
原创 关于点击click事件以及事件绑定的方式
Javascript简单地为一个标签绑定事件写法(不单针对button标签):<button onclick="click_fn()">click</button> <script> function click_fn(){ console.log(this); } </script>另一种是用DOM Document对象来绑定事件: (注:这
2017-04-26 22:06:50 37907 1
原创 Linux文件系统Ext2
windows98以前的文件系统是FAT windows2000以后的文件系统是NTFS Linux的正规文件系统为Ext2(linux second extended file system,ext2fs) 通常来说一个分区就是一个可被挂载的文件系统 Linux将文件的权限与属性信息放置到文件系统的inode中,而实际数据放置到 data block块中。另外还有一个超级块(superbl
2017-04-23 17:10:11 914
原创 Linux学习笔记(保持更新)
总共有6个文字界面 tty1~tty6,还有一个图形界面tty7 对应界面进入方法:ctrl+Alt+[F1~F7]终端terminal快捷打开方式:Ctrl+Alt+T who命令查看用户在线信息进入root权限命令:sudo su,再输入密码即可 处于root权限切换回普通用户命令:su - 用户名 普通用户再回到root权限命令:exit文件权限 r(Read,读取):对文件而言,具
2017-04-21 22:02:42 307
原创 php之static静态关键字
都知道声明为static的方法可以在类没有被实例化的时候调用 但是php有个很有趣的现象,静态调用非静态方法:<?phpclass A { public function test(){ echo "hello"; }}A::test();?>php可以对没有声明static的方法实现静态调用。 然后看到了有人说没有加static的方法采用静态调用时会更慢
2017-04-20 11:18:29 1956
原创 php的延迟静态绑定
延迟静态绑定(late static binding)作用:父类可以使用子类重载的静态方法 例子:<?phpclass A{ public static function who(){ echo __CLASS__; } public static function staticTest(){ static::who(); }
2017-04-19 17:43:13 1055
原创 浅谈多态以及php的实现方法
先简单说一下多态 多态的三大特征:子类继承父类子类重写父类父类指向子类多态实现的前提:必须是类与类之间要有关系,要么继承,要么实现,存在重写(override),其实就是抽象函数或接口。 多态的应用:父类对象的引用指向子类对象,其实本质上就是一个向上转型。 举个模型例子,一家公司有员工类(Employee),还有其子类:销售(Sales)、市场(Market)、工程师(Engineer
2017-04-19 17:13:26 13565 3
原创 重载不应归在多态的范畴内
什么是多态? 简而言之,是指多个属于不同类的对象 对同一方法调用做出不同响应的方式。 (感觉还是有点绕口) 举个例子,所有的动物都能发出声音(把发出声音这一行为抽象为一个方法:sound();),但是不同种类的动物发出的声音却是不一样的(调用sound()方法能够得到不同的响应)。 一谈到多态,很多人就联想到重载(overload),但我并不觉得重载在多态的范畴之内。重载,是指允许存在多个同
2017-04-19 14:46:17 629
原创 php实现重载
php是弱类型语言,并没有像JAVA这种强类型语言一样有重载。 重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数和参数类型) 从这个定义来说,php是没有重载的,因为php不允许存在相同的函数名。 但是没有并不意味着不能实现。 php有四种机制可以实现重载:(下面用java进行对比)1.弱类型,无需定义变量类型 先举一个JAVA重载的例子:class demo
2017-04-19 14:16:48 4371 1
原创 ubuntu16.04搭建LAMP环境以及遇到的问题
搭建顺序为Apache,Mysql,PHP以及phpmyadmin1.安装Apache 在命令行输入 sudo apt-get install apache2 输入管理员密码 并选择Y安装完毕后,在浏览器中输入:127.0.0.1显示如下图,说明安装正确。产生的启动和停止文件是:/etc/init.d/apache2 启动:sudo apache2ctl -k
2017-04-03 19:27:44 3524
原创 对POST数据实现自动验证
要实现自动验证,只需在Model类里事先定义好验证的方法,然后在其他类定义好要验证数据的格式,在继承Model就可以使用了对POST数据要验证的格式 $this->valid = array( array('验证的字段名',0/1/2(验证场景),'报错提示','require/in(某几种情况)/length(范围)/between(某个范围)'););具体例子
2017-03-17 19:03:53 1754
原创 对POST数据实现自动过滤和自动完成
有一个如下的表单:该表单源码 商品名: 价格: 元 精品 新品 热销 现在要把数据插入到如下的数据库:注意:这个表并不需要价格之类的信息但是,当submit数据时,$_POST接收的数据里并没有收到没打勾的checkbox信息,也没有商品的add_time时间戳信息这时就需要我们手动对post数据进行处理:$data
2017-03-16 21:04:40 3136
原创 无限极分类
首先来说说什么是无限极分类。按照我的理解,就是对数据完成多次分类,如同一棵树一样,从根开始,到主干、枝干、叶子……完成无限极分类,主要运用了两种方法,一是递归方式,二是迭代方式。而主要运用无限极分类的地方有地址解析,面包屑导航等等。下面就来具体介绍两种方法的原理及实现方法。家谱树与子孙树家谱树和子孙树是无极限分类的表现形式之一。家谱,现在很多地方都流行起修家
2017-03-05 12:11:29 1993
原创 mysql如何更改character-set-server默认为latin1
运行环境:win10mysql版本:MYSQL5.7免安装版(或解压版)今天在学习mysql字符集有关乱码的知识然后发现了latin1的字符集编码格式,虽然命令行窗口改变很容易,只需两行命令set character_set_database=utf8;set character_set_server=utf8;但是我发现每次重启mysql服务,这些设置就恢复成默认的设置la
2017-02-06 17:27:03 82598 42
原创 关于各种编码的简要理解
GB2312:两个大于127的字符连在一起时,就表示一个汉字。还重新编码了ACSII,于是被重新编码的两个字节ACSII就是常说的“全角”字符,而原来127以下的那些就叫做“半角”字符。GBK:只要第一个字节大于127,就固定表示这是一个汉字的开始,GBK包括了GB2312的所有内容,同时又增加了近两万个新汉字(包括繁体)和符号。GB18030:增加了几千个少数名族的字
2017-02-06 13:40:08 732
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人