js保存用户自定义的样式重新载入会闪烁的解决方案

在制作一个页面的时候,有需要前台js保存用户自定义的样式的需求,但是保存之后,重新刷新页面,会显示原来的样式,然后再变更为现在的自定义的样式。

这是一个有闪烁的例子,点击打开

保存样式之后,再重新强制刷新几次,可以看到页面在载入的时候会出现闪烁的情况。强迫症患者表示这不能接受,页面这么小的情况都闪烁的这么厉害,这页面大了,加载速度慢了,自定义样式还得等着加载完成之后才能显示,就失去了自定义的意义了。

上面的闪烁是可以理解的,css渲染完成之后,js给body增加了一个class,浏览器又会重新渲染,因此会出现短暂的闪烁

那么在渲染到head的时候,此时再用js给head标签里面增加css呢?这样不就在body出现之前就完成了css的渲染吗?果然,这样的方法是可行的

这是一个没有闪烁的例子,点击打开

至此,问题解决。也许更多的原因我还需要去看看浏览器渲染页面相关的文章。

你可能还喜欢下面这些文章

nginx日志分析以及常用的命令

获得访问前10位的ip地址访问次数最多的文件或页面通过子域名访问次数,依据referer来计算,稍有不准列出传输大小最大的几个文件列出输出大于200000byte(约200kb)的页面以及对应页面发生次数如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面列出最最耗时的页面(超过60秒的)的以及对应页面发生次数列出传输时间超过 30 秒的文件列出当前服务器每一进程运行的数量,倒序排

wordpress慢了,来用memcache和cdn加速一下吧

我用的vps,用了wordpress之后速度慢了不少,内存,cpu,涨的都厉害,很直观。于是,写插件吧,虽然wordpress的插件很多,缓存插件也不少,但满足我的需求的却是没有。我要的是这样的1.使用memcache缓存整个页面。(memcache可压缩缓存,并且我的页面并不多,因此占用并不大)2.在入口处就加载并且使用缓存(仅仅加载一个我预定义的缓存读取php文件,io极少,速度极快)需求很少,因为是特定的需求,十分简单,我要的就是整个页面都跑在内存中!写插件吧......几天之后,一个插件完成了。hccache缓存插件加速后台菜单是酱紫的hccache菜单点开之后是酱紫的能够定义缓存过期

matplotlib画柱状图教程

matplotlib画柱状图十分简单,首先需要导入matplotlib中的pyplot,这个就是能够画图的类啦import matplotlib.pyplot as plt画柱状图十分简单,使用bar方法,比如画一个各个班级的人数吧,先准备一些数据,有两组数据,students为人数,这里放到y坐标系中,变量x就放在x坐标系中students = x = 好了,现在我们可以直接画出来,调用bar方法,最后再调用show就能画图啦,代码如下plt.bar(x=x, height=students)plt.show()完整代码如下#coding:utf-8import matplotlib.pyp

发布composer包到packagist让所有人都能用

创建了composer包之后,要让所有人都能使用你的包,就必须要发布到packagist上。首选你的包需要使用git大多数人可能都有github了,进入packagist的提交页面:https://packagist.org/packages/submit,输入包的github地址,提交即可。使用hook自动更新当提交了github之后,想让你的包自动更新可以使用webhook。按照相应的提示去设置就可以了。

xshell 部分版本存在后门 登录凭证或将被泄露

刚收到邮件,说Xshell官方提供的多个版本存在后门,会向 nylalobghyhirgh.com 发送登录凭证信息。已知受影响的版本为:Xshell Build 5.0.1322Xshell Build 5.0.1325Xmanager Enterprise 5.0 Build 1232Xmanager 5.0 Build 1045Xftp 5.0 Build 1218Xftp 5.0 Build 1221Xlpd 5.0 Build 1220 已知不受影响的版本为:Xmanager Enterprise Build 1236Xmanager Build 1049Xshell Bu

Go语言的 make 和 new

new 和 make 是两个内置函数,主要用来创建并分配类型的内存。在我们定义变量的时候,可能会觉得有点迷惑,不知道应该使用哪个函数来声明变量,其实他们的规则很简单,new 只分配内存,make 只能用于 slice、map 和 channel 的初始化。下面我们就来具体介绍一下new在Go语言中,new 函数描述如下:从上面的代码可以看出,new 函数只接受一个参数,这个参数是一个类型,并且返回一个指向该类型内存地址的指针。同时 new 函数会把分配的内存置为零,也就是类型的零值。【示例】使用 new 函数为变量分配内存空间。当然,new 函数不仅仅能够为系统默认的数据类型,分配空间,自定义

创建自己的composer包之怎样制作composer包

项目做多了之后,可能会慢慢总结出自己的代码库出来,当在新的项目中使用的时候,总不能一直是复制粘贴。这个时候,composer就能派上用场了。一个项目开始,使用composer就能够加载所需要的依赖,非常方便。这个时候,来做一个自己的包吧!使用命名空间composer自动加载需要用到命名空间,因此所有的代码库都需要使用命名空间,如果没有,那就改吧!使用命名空间之后你可能会打开新世界的大门。创建composer.json我假设你已经安装了composer,并且已经会使用了。创建自己的包我们首先需要创建一个composer.json,示例文件如下上面的composer.json有一个比较重要的是au

代码语法高亮插件整理

语法高亮是文本编辑器用来显示文本的,特别是源代码,根据不同的类别来用不同的颜色和字体显示。这个功能有助于编写结构化的语言,比如编程语言,标记语言,这些语言的语法错误显示是有区别的。语法高亮并不会影响文本自身的意义,而且能很好的符合人们的阅读习惯。语法高亮同时也能帮助开发者很快的找到他们程序中的错误。例如,大部分编辑器会用不同的颜色突出字符串常量。所以,非常容易发现是否遗漏了分隔符,因为相对于其他文本颜色不同。现 在有各种各样的语法高亮工具,可以格式化语言,并且根据不同的编程语言进行高亮显示。无论是个 HTML 页面还是 PHP,Ruby,Python 或者是 ASP。这篇文章中,我们会介绍 1

开始使用varnish

本文假设你已经安装了varnish了,如果还没安装,那么请看前面的varnish的安装来安装varnish吧!下面的命令将会启动varnishservice varnish start现在你的varnish已经运行了,让我们确保它已经在工作吧!打开浏览器,在地址栏中输入http://127.0.0.1:6081/(你需要把ip替换成你的机器ip)默认的配置将会尝试将请求转发到该台机器上的8080端口上面。如果该台机器上面没有web服务,varnish将会返回Error 503 Service Unavailable。你的web应用可能运行在其他端口或者其他的机器,这需要编辑varnish的配置

centos7系统初初始化工作以及网站环境搭建(php7+nginx+mysql)

拿到一台做网站的主机, 我们先要做一些环境初始化的工作, 由于这些工作会有些繁琐,因此记录一下. 后面将这些流程写成一个shell脚本,一次性完成.此次工作流程如下: 安全性设置 额外的目录创建 网站环境搭建安全性设置一般从某云上买的主机, 默认账户是root, 为了不被暴力破解, 我们首先需要设置一个强一点的密码,不过更好的方法是禁用root, 另外创建一个用户来作为日常管理的账户.第一步: 创建一个新的账户,并且能够切换到root权限比如我的用户名叫xiaobai, 添加用户名就是useradd xiaobai设置密码passwd xiaobai之后输入密码,一个新的账户就设定好了.

一些比较好看的移动端页面

1.比较清新的图文移动端首页 http://huiyi.csdn.net/

2.头条类型的文章  http://geek.csdn.net/

3.起点小说移动站点 http://m.qidian.com/

你可能还喜欢下面这些文章

wordpress支撑百万文章解决方案

作为一个博客系统,wordpress在易用性和可扩展性上都非常出色。后题用户体验是非友好,插件众多。然而由于定位的问题,wordpress无法支撑大量文章。当文章数量达到上万的时候,有些主题的前台可能会非常卡。当文章数量达到数十万的时候,wordpress后台可能会特别卡。更何况大部分插件并没有在性能上下功夫,插件越多,wordpress越卡。那么有没有什么方案能让wordpress支撑大量文章?十万,百万,甚至更多?支撑百万数据并不是存入一百万文章就可以了。实际上百万文章对mysql来说毫无压力。在mysql中,百万文章仅仅是百万条记录而已。导致缓慢的是mysql的查询。对于百万条记录的数据

Go语言的 make 和 new

new 和 make 是两个内置函数,主要用来创建并分配类型的内存。在我们定义变量的时候,可能会觉得有点迷惑,不知道应该使用哪个函数来声明变量,其实他们的规则很简单,new 只分配内存,make 只能用于 slice、map 和 channel 的初始化。下面我们就来具体介绍一下new在Go语言中,new 函数描述如下:从上面的代码可以看出,new 函数只接受一个参数,这个参数是一个类型,并且返回一个指向该类型内存地址的指针。同时 new 函数会把分配的内存置为零,也就是类型的零值。【示例】使用 new 函数为变量分配内存空间。当然,new 函数不仅仅能够为系统默认的数据类型,分配空间,自定义

Go中使用json.Unmarshal interface{}之后的数据类型

有时候设计不好的情况下,一个json类型很难用固定的数据结构去表示,因此我们会用interface{}去表示它。在使用inteface的时候,需要了解json的数据类型对应的go的默认类型,使用才会不会出现疑惑,它们的类型关系对应如下JSONGobooleanbool数值float64字符串stringarray[]interface{}objectmapinterface{}nullnil了解他们默认的类型转换,使用时候就不会出问题了。

Go入门:一、变量和数据类型

这是学习Go语言的第一篇笔记,主要学习的是变量和基本数据类型。如果您也在开始学习Go语言,那么这篇笔记一定能帮助您学习的更快!我的语言学习过程一般分为下面几个:1. 变量和数据类型2. 流程控制方法3. 函数声明和调用4. 面向对象5. 语言特性6. 标准库变量声明Go语言的变量声明有三种第一种,var identifier type// 先声明后赋值var identifier typeidentifier = value// 声明并且赋值var identifier type = value开始实战一下!比如声明一个int类型变量var i inti = 1// 或者var i int =

强化twenty fifteen主题,twenty fifteen pro主题制作过程

被最新的twenty fifteen主题迷上了,这就是我心目中的样式!但有功能还是需要添加的,因此在twenty fifteen的主题基础上,增加了一些功能,命名为twenty fifteen pro主题,目前我所用的主题就是twenty fifteen pro主题。目前增加的功能有这些1.专辑文章将一些文章整个成专辑,比如之前胡超的sublime这个专辑,随便点进去一篇文章,左侧栏都会出现该专辑的系列文章,并且在后台还可以手动控制其排序。这样的好处就是能够将同类别,教程之类的文章聚合起来,更加利于阅读。2.页脚文字增加统计或者版权文字,备案号等等一些附加的信息可能是需要的,但很遗憾twent

C++ any容器的介绍与简易实现

一、any容器是什么?1、any“不是”模板类,any是一种很特殊的容器。2、any只能容纳一个元素,但这个元素可以是任意的类型,可以是基本数据类型(int、double、string、标准容器或者任何自定义类型)。3、一种动态(类型检查只发生在运行时)语言特性的数据结构。4、C++17引入,需要RIIT支持,VS默认是没有支持C++17的,需要自己修改设置,如果不能使用any,请修改标准。二、any类摘要C++typeid关键字详解:三、any类用法注意:any的析构函数删除内部holder对象。如果类型是指针,any并不会对指针执行delete操作,所有any保存原始指针对造成内存泄漏。完

2015年9月,我的博客重新开始

从2011年开始,我便写博客了。今年,一个非常不幸的事情,我的博客被屏蔽了,那一刻的心情我无法形容,但又无可奈何。于是我又注册了一个域名imhuchao.com,继续我的博客生活。程序员没有博客,那便如同剑客没有酒,那是何等的寂寥!经历了这些之后,我觉得我应该把博客记录下来。那么起点就设定在今天吧,原来的数据封存起来,不做开放,或许多年之后,我翻开来,轻叹一声,哦,那是2011年我写的东西,真快啊。好久了,应该快一年没有关注wordpress了,下载安装,再到访问后台,不到一分钟的时间。打开前台一看,哇,竟是如此的清新脱俗!从未想到她默认的主题变得如此的好看。四年时间,任何人也都能够成长,无论

MySQL时间字段类型的选择

建表的时候对时间的字段类型选择有些疑惑,于是找出高性能MySQL这本书来看看,书中已经给了我们很好的建议,因此记录下来。保存时间通常有这几种类型可以选择: datetime timestamp int date首先看看datetime,datetime这个类型可以保存从1001年到9999年的数据,内部是将日期和时间封装在YYYYMMDDHHMMSS的整数中,与时区无关,占用8个字节。timestamp,timestamp只能保存1970年到2038年,占用4个字节,和int所占用的字节是一样的。int,int占用的同样是4个字节,和timestamp一样,但是timestamp拥有一

实现在编辑框(wordpress)粘贴二进制图片数据

ctrl+alt+a,qq截图,鼠标一弄,一张图好了。但是,我得先保存,然后在传到wordpress里面去,对于贴图实在是太麻烦了啊。我记得用ctrl+v可以直接在qq的聊天框粘贴图片啊。那就来改造编辑框,让ctrl+v能够直接把图片粘过来!让文章配图更加流畅!=====本想想用js实现,结果我却找到了插件,不得不说,wordpress的插件实在是,非常的多啊插件叫OnePress Image Elevator,从现在开始我的文章配图就多了起来。安装完之后,使用qq截图,然后再粘贴就非常方便了。附上一个知乎上面的问答,也是关于这个的http://www.zhihu.com/question/2

mysql中的alter操作详解

在使用mysql的客户端之后,手动输入语句的机会减少太多,比如mysql的alter语句竟然想不起来怎么用了,于是重新学习一下。

alter是用来修改表结构的语句。既然是修改,那么可分为增加,修改,删除这几种。大致的操作如下

ALTER TABLE 表名称 操作(ADD|DROP|CHANGE|RENAME) 操作内容

列操作相关

1.增加列

ALTER TABLE table_name ADD new_column_name VARCHAR(255) NOT NULL

2.删除列

ALTER TABLE table_name DROP a_column

3.修改列

ALTER TABLE table_name CHANGE old_column new_column VARCHAR(255) NOT NULL

索引操作相关

alter不仅仅是对表中的列进行操作,还可以对索引进行操作,比如增加、删除、修改索引

4.添加主键索引

ALTER TABLE table_name ADD PRIMARY KEY(column)

5.添加唯一索引

ALTER TABLE table_name ADD UNIQUE(column)

6.添加普通索引

ALTER TABLE table_name ADD INDEX index_name(column)

7.添加全文索引

ALTER TABLE table_name ADD FULLTEXT(column)

8.添加多列索引

ALTER TABLE table_name ADD INDEX(column1,column2,column3)

你可能还喜欢下面这些文章

mongodb 常用命令

最近业务可能会用到mongodb,因此将mongodb的一些特性和常用命令整理一下。mongodb是一种非关系型数据库中最像关系数据库的,但我用mongodb仍然只把它当做KV存储,其他的关系一概不做,对于关系,还是让MySQL去做吧!关于mongo集群的搭建已经有运维帮我搭建好了,我就直接用了,但是在用之前,了解mongo集群的搭建十分有必要。关于Mongos,MongodMongos:起着路由的作用,根据分片key找到数据所存放的分片位置Mongod:数据存放的位置关于索引索引在任何数据库都起着至关重要的作用,没有索引的数据只能是一堆杂乱无章的集合,在mongo的集合中,可以创建索引,创建

命令行下的mongo初试

从连接mongo开始,熟悉一下命令行下面的mongo使用连接普通连接mongo mongodb://ip:port查看数据库show dbs选择或者创建数据库use mydb创建一个集合比如创建一个mycollection的集合db.createCollection('mycollection')显示数据库中所有的集合show collections向集合中写入数据假设我们创建了一个mycollection集合,实际上当我们没有创建mycollection集合的时候,执行下面的命令mongo会自动创建一个mycollection集合db.mycollection.insert({"foo",'

python教程(一):变量和数据类型

python的基本数据类型有整型,浮点型,字符串,布尔,列表,元组,字典,集合。它们占用内存和定义方式如下表:类型占用内存如何定义整型(int)动态长度>=24字节a = 1浮点型(float)动态长度>=24字节a = 1.0字符串(string)动态长度,>=37字节,增加一个字符加1字节a = 'str'布尔(boolean)24字节a = True列表(list)动态长度,>=72字节a = []元组(tupe)动态长度,>=56字节a = ()集合(set)动态长度,>=232字节a = set([])占用的内存通过sys.getsizeof()获

C++入门:二、流程控制

这是我的C++学习笔记第二篇,学习流程控制语句我的学习路径如下:1. 变量和数据类型2. 流程控制3. 函数声明和调用4. 面向对象5. 标准库顺序顺序语句为一条一条顺序执行的语句。C++的顺序语句有赋值,四则运算,位运算,逻辑运算等条件C++提供两种条件,一个是if条件语句,另一个是switch选择语句。if条件switch条件循环循环语句有while循环,for循环,do...while循环。while 循环条件为真,就一直执行语句。如果初次条件不为真,语句一次都不会执行。for 循环更简单的for循环,范围for循环。类似与遍历的效果,序列可以是一个数组,vector,string等迭代

Go入门:二、流程控制

这是我的go语言学习笔记的第二篇,go语言的流程控制。流程控制是计算机语言的基本组成部分。一般的流程控制有顺序,分支,循环。这次来学习一下go语言的流程控制都有哪些,语法是什么样的。我将会通过以下步骤来入门go语言1. 变量和数据类型2. 流程控制方法3. 函数声明和调用4. 面向对象5. 语言特性6. 标准库条件分支go语言的条件分支有: if语句,if...else...语句,switch...case...语句。和大多数语言差别不大!if 语句语法// 纯ifif 条件语句 { 表达式}// 带有else 的 ifif 条件语句1 { 表达式1} else 条件语句2 {

python学习笔记:二、 流程控制

根据如何学习一门新的语言这篇文章的指导,现在的步骤就是学习这门语言的流程控制了。通常来讲,流程控制有顺序,选择,循环这几种。python也不例外,也有这三种流程控制。下面的一一学习。顺序顺序语句很简单,从上往下依次顺序执行。如:a = 1b = 2print(a+b)上面的语句就是顺序执行的语句。选择选择通常使用if和switch,但python中只有if这一个选择语句。语法是:if 满足条件1: 语句1elif 不满足条件1满足1条件2 语句2else 都不满足 语句3比如用一个实际的例子a = 1b = 2if a > b: print('a>b')el

解决sqlite中union的子句不能使用order by和limit问题

有一种场景,我们需要在同一张表中找出几个分类的文章,并且按照时间排序,通常我们会这样写(假设表名称是post):SELECT * FROM post WHERE category_id=1 ORDER BY create_time DESC LIMIT 10如果有多个分类,我们会考虑将几个语句使用union all连接SELECT * FROM post WHERE category_id=1 ORDER BY create_time DESC LIMIT 10UNION ALLSELECT * FROM post WHERE category_id=2 ORDER BY create_tim

记录一下使用中PDO出现的一个问题:Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll().

在使用PDO的时候,一条sql语句打死都不执行,dump一下errorInfo试试,出现这样的错误信息问题描述居然告诉我还有语句没有执行完成?当前的查询未能执行,逗我么!考虑使用fetchAll,或者开启缓冲查询,行,你说得对....问题出现的使用场景服务器服务器为linux,安装了一个什么面板套件之类的,不是自家机器,也懒得去折腾,在本地的windows环境并没有该问题。程序笔者在对数据库的一个计数字段进行更新的时候,首先会先查询这个记录是否存在,如果存在则进行更新,如果不存在则先插入。问题就出现在记录不存在的时候,当我查询这条不存在的记录时候,发现这个记录不存在,然后进行插入,发现之前的查

位操作存取RGB颜色值的方法

分享一个位操作存取RGB颜色值的方法。缘由我需要在数据库里面存储rgb颜色,但是直接存字符串这样太low了,于是想办法 将rgb颜色经过位运算得到24位的int值,储存在mysql里面可以直接用medium int类型,很节省空间。(当然,c语言并没有24位类型,只有32位的无符号整数,在前面补8位0就ok啦,在我php中就不存在这个现象啦,哈哈)RGB三种颜色混合成一个整型操作R:255 24位二进制表示,0000 0000 0000 0000 1111 1111G:255 24位二进制表示, 0000 0000 0000 0000 1111 1111B:255 24位二进制表示, 0000

memcacheq的安装与使用

1、安装libevent官网:http://www.libevent.org/2、安装 BerkeleyDB官网:http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html(下载需要登录)安装:安装完成之后:或者:添加:并执行:3、安装 MemcacheQ官网:http://memcachedb.org/memcacheq/测试是否安装成功:4、启动服务建立相关目录:启动服务:参数说明:-d : 以后台服务方式运行-l : 设置监听地址及端口(默认是22201)-A : 数据页大小-H : 数据保存目录-

awk分析nginx日志中的网页响应时间

nginx日志可以十分方便的看到每一个请求的响应速度,通常我会用awk去分析这些请求耗时。通常nginx的log配置是这样的

log_format access_comment '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" $http_x_forwarded_for '
 '$upstream_response_time $request_time';

我们记录的日志类似于这样

127.0.0.1 - - [15/Feb/2017:10:30:19 +0800] "POST /get" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" 111.111.111.111, 10.0.0.0 0.007 0.007

响应时间是最后一个。

awk的工作原理是读出一行数据,然后根据指定的分隔符对行进行分割,放到序号变量里面,默认是按照空格分割,比如$1是127.0.0.1,$2是-...

然而按照空格分割的话,这里有一个不确定的因素,就是http_user_agent,这个里面的空格是不确定的,因此没有一个固定的序号变量来保存响应时间。

不急,awk提供了一个非常好的内置变量NF,NF保存了当前分割出来的字段总数,那么最后一个则是$(NF),这样我们就能得到日志里面的响应时间。

命令如下

$ tail -f /data/logs/nginx/access.log | awk '{print $(NF)}'

实际应用中路径需要你记录nginx日志的路径。

同样我们还可以分析最近请求的平均耗时,使用NR,NR是已经读取的行数

tail -f /data/logs/nginx/access.log | awk 'BEGIN{FS=" ";count=0} {count+=$(NF); print (count/NR),"\t",$(NF)}'

awk的详细用法可以查看:http://imhuchao.com/606.html

你可能还喜欢下面这些文章

MySQL开启慢查询日志以及慢查询日志分析

mysql满查询有助于让我们发现系统中瓶颈所在。开启方法默认情况满查询应该关闭,如果需要分析则需要手动开启。mysql> show variables like '%slow_query_log%'; +---------------------+--------------------------------------+ | Variable_name | Value | +---------------------+--------------------------------------+ | slow_

python rsplit

在Python中, 是字符串(str)对象的一个方法,用于从字符串的末尾(右侧)开始分割字符串。这个方法与 方法相似,但方向相反。 方法接受一个分隔符(默认为所有空白字符)和一个最大分割次数作为参数,并返回分割后的子字符串列表。下面是 方法的基本语法::分隔符,用于指定如何分割字符串。如果不指定分隔符,则默认为所有的空白字符(包括空格、换行符 、制表符 等)。:可选参数,指定最大分割次数。如果指定了 ,则分割不会超过这个指定的次数,并且结果列表的长度最多为 。如果 参数被省略或者为 -1,则分割会进行到字符串的末尾。下面是一些使用 方法的例子:注意:如果 参数为空字符串 ,则 会

shell 变量的定义

shell可以自定义变量,这为shell的编写带来很多方便定义变量定义变量时,变量名不加美元符号($),如:variableName="value"注意:变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样同时,变量名的命名须遵循如下规则。首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留关键字)。变量定义举例:myUrl="http://imhuchao.com/tag/bash"myNum=100使用变量使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:your_nam

ajax的核心,好好认识一下XMLHttpRequest

相信包括在我的绝大多数人都用jQuery的$.get(),$.post(),$.ajax()方法用的很爽了,关于其原生的请求却很少去发掘,很多时候(比如用html5开发app的时候),我并不再需要jQuery,弄明白XMLHttpRequest用原生的就能很好的处理ajax了。首先,由于我的js是通过jQuery入门的,所以才会有这篇文章。从new一个对象开始var xmlhttp = new XMLHttpRequest();之后的请求,读取,出错等等各种处理都在xmlhttp这个对象里面啦第一个GET请求get请求简单,最适合入门操作啦。之前new了一个xmlhttp对象,这次我们就要对它

php的empty,isset,is_null与!

来说说php的empty,isset,is_null 与!,这几个都是if语句中比较常见的判断逻辑。但是有时候用的很纠结,甚至看别人写的程序里面也很纠结。特地梳理梳理,避免踩坑先来定义一些东西<?php$a;$b=0;$c=array();$d='';$e=null;empty,用了会上瘾这是一个用了会上瘾的语言结构!多好,empty可接受的参数是一个变量,任意类型,哪怕是变量不存在,只要变量被boolean转换之后是false(参考:php的boolean都有哪些),那么empty返回的就是false,并且不会出现警告!等价于不过注意的是,empty里面不能使用表达式(在php<

JS使用XMLHttpRequest实现ajax请求

是一个JavaScript对象,它最初由微软设计,随后被 Mozilla、Apple和Google采纳。如今,该对象已经被 W3C组织标准化。通过它,你可以很容易的取回一个URL上的资源数据。尽管名字里有XML, 但 可以取回所有类型的数据资源,并不局限于XML。而且除了HTTP ,它还支持 和 协议。创建一个 实例, 可以使用如下语句:方法概述非标准方法属性AttributeTypeDescription一个JavaScript函数对象,当readyState属性改变时会调用它。回调函数会在user interface线程中调用。警告: 不能在本地代码中使用. 也不应该在同步模式的请求中

boost split 用法

是一个用于将字符串按照指定的分隔符分割成多个子串的函数,并将这些子串存储到一个容器中,比如。使用函数需要包含头文件。函数的用法如下:在上面的示例中,我们首先定义了一个以逗号分隔的字符串。然后,我们创建了一个类型的容器,用于存储分割后的子串。接下来,我们调用函数,将按照逗号进行分割,并将结果存储在容器中。最后,我们遍历容器,并输出每个子串。函数有几个参数:第一个参数是存储分割后子串的容器,类型为或其他类似的容器。第二个参数是要分割的字符串。第三个参数是分隔符,可以是一个普通字符或者正则表达式。常见的分隔符有逗号、分号、制表符等。在上面的示例中,我们使用了作为分隔符,表示以逗号为分隔符进行分割。还

如何用火焰图分析程序性能瓶颈

一个经验非常丰富的程序员可能可以静态分析程序的性能瓶颈,但大多数人做不到这些。这个时候我们往往需要借助一些辅助工具来分析程序的性能瓶颈,火焰图就是其中之一。一张典型的火焰图长这样本文主要介绍如何生成和分析火焰图。如何生成火焰图第一步:使用perf生成采样日志火焰图是根据perf命令生成的日志文件来生成的,所以首先需要使用perf命令对所需要分析的进程进行采样。命令解释:运行上面两个命令之后,会生成一个out.perf文件第二步:下载FlameGraphFlameGraph用于将采样日志转换成svg图片,这个图片就是我们见到的火焰图。FlameGraph地址:https://github.com

设计模式:装饰器模式介绍和应用

简短描述当前有一个功能完善的对象,如果我们想要给这个对象添加一个新的职责,那么我们可以用一个新的类去装饰它来实现对原有对象职责的扩展。新的类称为“装饰者”,原有的对象称为“被装饰者”。这种模式被称为装饰器模式。现实生活中的装饰器模式装饰器模式在现实生活中的例子简直太多了。比如我开了一个奶茶店,卖的是普通的奶茶。现在我想引入一个叫珍珠奶茶的商品,我要怎么做呢?我是不是需要升级一下我的制作奶茶的机器,让它支持珍珠奶茶的做法?但这种成本估计比较高,说不定还没原来做奶茶的机器好用呢!实际上我只需要买一个能做“珍珠”的机器就行!把“珍珠”放进奶茶不就成了珍珠奶茶。原有的做奶茶的机器依然可以稳定地制作做奶

bash教程:一、变量,函数,控制流程

变量的定义和使用变量的定义bash变量定义很简单。如下:a="hello"左边是变量名,右边是变量值。bash是弱类型,因此不需要给a加上类型。注意,等号两边不能有空格 比如 a = "hello",这是错误的。变量使用变量使用需要在定义的变量名之前加上$,比如我们打印之前定义的aecho $a特殊变量后面再说,现在仅仅是最基础的,能够让自己写出一个完整的脚本就行。流程控制流程控制则是编写程序必备的过程,比如顺序,循环,条件,分支等等。在其他类C语言中有if...else,for,while,do...while,switch,那么在bash里面,这些应该怎么写呢。if...else结构a=0

安装datastax php-driver for cassandra 的悲惨经历

由于业务可能要使用cassandra,需要安装一个php的扩展,安装过程可谓是曲折

首先直接pecl安装

pecl install cassandra

然而告诉我

checking for supported DataStax C/C++ driver version... gawk: cmd. line:1: fatal: cannot open file `/include/cassandra.h' for reading (No such file or directory)

呵呵呵呵呵呵呵,还得首先安装cpp的driver。

行吧,先安装cpp-driver,按照官网给出的步骤

git clone https://github.com/datastax/cpp-driver.git
mkdir cpp-driver/build
cd cpp-driver/build
cmake ..
make

结果就是缺少libuv啊,缺少cmake啊,其中的过程就比较曲折了,等我都把依赖工具安装完成之后,开心的编译,然而...

/home/huchao/Downloads/cpp-driver/src/timestamp_generator.cpp: In function ‘CassTimestampGen* cass_timestamp_gen_monotonic_new_with_settings(int64_t, int64_t)’:
/home/huchao/Downloads/cpp-driver/src/timestamp_generator.cpp:38: error: declaration of C function ‘CassTimestampGen* cass_timestamp_gen_monotonic_new_with_settings(int64_t, int64_t)’ conflicts with
/home/huchao/Downloads/cpp-driver/include/cassandra.h:9529: error: previous declaration ‘CassTimestampGen* cass_timestamp_gen_monotonic_new_with_settings(cass_int64_t, cass_int64_t)’ here
make[2]: *** [CMakeFiles/cpp-driver.dir/src/timestamp_generator.cpp.o] Error 1
make[1]: *** [CMakeFiles/cpp-driver.dir/all] Error 2

还能说啥

。。。

之后再检查一下环境

官网centos5/6/7都是可以的,本地centos6.5

官网gcc4.1.2+,本地4.4.7,这应该也没问题吧,想着还是和官网一样的环境吧,编译一个gcc4.1.2。

然后另一个痛苦的过程来了,结果又是出错。这个,真没办法了,就上网找找看有没有和我一样的问题,结果真找到了

原文地址:http://blog.csdn.net/firefoxbug/article/details/7519565

原文摘抄如下

源码下载:ftp://ftp.gnu.org/gnu/gcc/gcc-4.1.2/

解包:tar -xvf gcc-4.1.2.tar.bz2

进入目录:cd gcc-4.1.2

 

# ./configure –prefix=/usr/local/gcc-4.1.2&& make
 

接着就出现错误

WARNING: `makeinfo' is missing on your system. You should only need it if
you modified a `.texi' or `.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy `make' (AIX,
DU, IRIX). You might want to install the `Texinfo' package or
the `GNU make' package. Grab either from any GNU archive site.
make[3]: *** [fastjar.info] 错误 1
make[3]:正在离开目录 `/home/ssm/gcc-obj/fastjar'
make[2]: *** [all] 错误 2
make[2]:正在离开目录 `/home/ssm/gcc-obj/fastjar'
make[1]: *** [all-fastjar] 错误 2
make[1]:正在离开目录 `/home/ssm/gcc-obj'
make: *** [all] 错误 2
这里有一个文章 http://blog.csdn.NET/galois_godel/article/details/6750331

下面是摘要:

(主要原因是GCC的版本过高)

1:全英文的这部分说的是你的系统中缺少相应版本的makeinfo软件。

因为gcc4.1以上的版本需要makeinfo的版本为4.2或更高。
所以输入命令行:
makeinfo –version           想查看makeinfo的版本。结果得到了以下信息:
The program ‘makeinfo’ is currently not installed. You can install it by typing:
yum install texinfo
按照提示输入命令,问题得到解决。

2:本机使用的Texinfo是4.11版本,

出现此错误的原因也在于configure文件中texinfo对该版本不支持,可以在解压gcc4.1.1文件夹中的configure文件里找到

以下语句

# For an installed makeinfo, we require it to be from texinfo 4.2 or
# higher, else we use the “missing” dummy.
if ${MAKEINFO} –version \
| egrep ‘texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])’ >/dev/null 2>&1; then
:
else
MAKEINFO=”$MISSING makeinfo”
fi
;;

其中4\.[2-9]|[5-9]表示的是支持4.2-4.9之间的几个版本,所以需要自己添加4\.[1-9][0-9]*,以支持4.11版本。即把’texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])’编辑成’texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]*|[5-9])’后保存,编译通过。

安装:make install
这时候先查看gcc版本

#gcc -v

发现还是4.6版本的,于是就卸载4.6版本

#rpm -e gcc-c++
#rpm -e gcc 

然后建立链接

# ln -s /usr/local/gcc-4.1.2/bin/gcc /usr/bin/gcc2
# ln -s /usr/local/gcc-4.1.2/bin/g++ /usr/bin/g++2

 

你可能还喜欢下面这些文章

varnish安装:varnish如何安装

ubuntu中varnish的安装varnish在Ubuntu package 仓库版本可能比较低,,我们一般建议使用varnish-cache.org提供的包。请注意,我们只为Ubuntu的LTS版本( Long Term Support,长时间支持版本,一般三年)提供安装包,其他中间版本并不提供。但这些版本也许会在较新的ubuntu版本中工作。varnish支持的架构是amd64。使用root执行下面的代码安装varnish提供的最新版本 apt-get install apt-transport-https curl https://repo.varnish-cache.org/GPG-

xshell 部分版本存在后门 登录凭证或将被泄露

刚收到邮件,说Xshell官方提供的多个版本存在后门,会向 nylalobghyhirgh.com 发送登录凭证信息。已知受影响的版本为:Xshell Build 5.0.1322Xshell Build 5.0.1325Xmanager Enterprise 5.0 Build 1232Xmanager 5.0 Build 1045Xftp 5.0 Build 1218Xftp 5.0 Build 1221Xlpd 5.0 Build 1220 已知不受影响的版本为:Xmanager Enterprise Build 1236Xmanager Build 1049Xshell Bu

记录一次编译安装php7的过程,以后当做参考

之前安装过一次php7,不过配置参数听过,这次再安装,就记录一下,后面就当做参考了,主要是配置里面东西有点多。STEP 1去php官网下载最新版本的php,目前是7.0.10,地址:http://php.net/downloads.php#v7.0.10,可以使用下面的命令,直接下载解压$ wget http://am1.php.net/get/php-7.0.10.tar.gz/from/this/mirrortar -xvf mirrorSTEP 2进入刚才解压的文件,应该是 php-7.0.10。安装之前需要解决一下依赖问题。STEP 3为安装提供一系列的配置STEP 4进行编译,安装最

C++中zlib的crc32和python zlib.crc32结果不一致的解决方案

背景python和c++的代码中均有使用crc32分流的操作,需要保证分流得到的结果一致,那么两个crc32的方法得到的结果需要一致才行。然而实际测试中发现python2中zlib.crc32和c++的zlib中crc32得到的结果却不一致。问题复现python版crc32结果为 -102031187。如下:C++ 版zlib crc32运行结果为:4192936109python版得出的结果是-102031187,而C++版本得出的结果是4192936109。资料查找首先从百度上查看有没有人和我遇到同样的问题,结果发现有。但是回答的结果乱七八糟,没什么参考价值。于是找了找python的文档,

下载sublime

好了,现在可以去官网下载sublime了。官网地址:http://www.sublimetext.com/请不要下载破解版本的!sublime虽说是收费的,而且还是那种死贵死贵的,但是,它是可以免费试用的,并且不受时间的限制,也没有任何功能的阉割。除了会在使用中弹出让你去购买的弹窗,其他的和收费版是一样的。至于到底是下载sublime test2还是sublime text3呢?当然是2啦,没看到官网上面的下载链接都是2吗,ok,别犹豫啦,进入官网地址,首页就有下载按钮啦!现在建议下载sublime3啦!好了,当你下载sublime并且安装之后呢,那么,请开始体验神器吧!

mac如何安装talib

mac下pip安装ta-lib会报错报错的原因是缺少ta-lib library,看起来是编译时候缺少链接库。需要安装ta-lib静态库,于是使用brew安装一下ta-lib。安装完毕之后就可以pip install ta-lib,就可以安装成功了。

shell中map的使用

bash 4.1.2 版本增加了map数据结构。map是一种常用的数据结构,通过map可以将key映射到一个value。使用方法map在使用之前需要先声明,声明的方式如下map需要先声明再使用。参数-A表示声明的变量是一个map。需要注意的是这里的A是大写的字母A。赋值操作map的赋值有两种方式,一种是直接给map赋值,如下:另一种是使用下标给map添加key-value对输出所有的key在文中最开始提到map的使用需要先声明,在没有声明的情况下此处会输出一个0,如下图:输出所有value输出map长度遍历,根据key找到对应的value遍历所有的key遍历所有的value问题FAQQ:为什么

memcacheq的安装与使用

1、安装libevent官网:http://www.libevent.org/2、安装 BerkeleyDB官网:http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html(下载需要登录)安装:安装完成之后:或者:添加:并执行:3、安装 MemcacheQ官网:http://memcachedb.org/memcacheq/测试是否安装成功:4、启动服务建立相关目录:启动服务:参数说明:-d : 以后台服务方式运行-l : 设置监听地址及端口(默认是22201)-A : 数据页大小-H : 数据保存目录-

让sublime支持less css,以及支持压缩css的less插件

要想让sublime支持less,不仅仅是装个sublime插件就完事了啊!事情的经过还是颇为曲折的。第一步:安装nodejs首先先配置一下环境,less需要nodejs支持,所以我们先要安装一下nodejs。到nodejs官网下载就可以了:https://nodejs.org/en/ 第二步:安装less插件由于我的是windows,所以打开cmd啦,用npm安装less,命令为:npm install -g less@latest等待一会儿,结果就如图啦:这里我们的less就安装完毕了。第三步:安装sublime的less2cssctrl+shift+p调出面板,输入install pac

sublime merge和diff的插件sublimemerge pro

一直使用的是beyond compare这个软件来作为比对和合并工具,不可否认,在用git的时候,配置这款工具比对确实很省事。现在我在用sublime写代码,在写的过程中可能涉及到和以前的代码版本做比对,这个时候还要打开这个软件那可不是我想要干的,插件众多的sublime我想这个比对插件肯定是有的吧,于是就找到了sublimemerge pro这款插件。直接 ctrl + alt + p 输入install package...,搜索sublimemerge,安装即可。如果对安装方法不清楚可以查看sublime安装插件的教程。安装之后会有一个readme,里面介绍了用法,如下  In file

TCP/IP协议中的backlog分析

TCP/IP协议卷一中是有说明设置backlog这个值的,这值是做什么的呢?

大家都知道TCP建立连接时是要进行三次握手连接的,但是否三次握手完成了,服务端就进行处理了(accept)呢,如果没有处理就变成什么情况,假如没有及时accept的话,后续客户端就连接不上或连接失败。这样就谈不上吞吐量了。想必大家也认为TCP不是那么设计的。

backlog其实是一个连接队列,以下是backlog队列大小公式。
backlog队列总和 = 未完成三次握手队列+已经完成三次握手队列 (更多…)

你可能还喜欢下面这些文章

memcacheq的安装与使用

1、安装libevent官网:http://www.libevent.org/2、安装 BerkeleyDB官网:http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html(下载需要登录)安装:安装完成之后:或者:添加:并执行:3、安装 MemcacheQ官网:http://memcachedb.org/memcacheq/测试是否安装成功:4、启动服务建立相关目录:启动服务:参数说明:-d : 以后台服务方式运行-l : 设置监听地址及端口(默认是22201)-A : 数据页大小-H : 数据保存目录-

树莓派zero连接wifi

这是一篇记录树莓派连接wifi的文章。这里我们使用wpa_cli的交互环境来连接无线网,这比直接使用配置要方便得多。注意,wpa_cli需要在root环境下执行终端下面执行: sudo wpa_cli -iwlan0-i参数表示使用哪个网卡,我们需要指定只用wlan0这个网卡。具体可以执行ifconfig看看都有哪些网卡可以使用,如果你的树莓派带有wifi模块,那么一般是wlan0进入交互模式之后,首先需要执行scan命令,该命令能扫描附近的热点。然后输入scan_result列出扫描出来的热点上面扫描出了我的一个手机热点。我们知道了热点的ssid之后就可以连接了,首先增加一个网络连接,执行a

设置ssh的config让你不频繁输入密码

有时候登录ssh机器是一个动态口令,频繁输入密码特别不方便。可以通过连接复用的方式来达到不用每次输入密码的目的。编辑 ~/.ssh/config 文件,没有的话就新建增加下面内容下次登录ssh之后就会在~/.ssh/ 目录生成一个文件来保持连接了。

ftp命令大全详解

来熟悉熟悉ftp命令,对于服务器之间的文件传输太有用啦,不会怎么能行呢!先来看看基础的命令,包括了连接,列出列表,下载,上传,断开这最基础的命令,会这些,在使用ftp命令行就毫无压力啦!1. 连接ftp服务器格式:ftp a)在linux命令行下输入:b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。2.列出文件列表以及切换目录这部分其实和linux并无区别,分别是ls,和cd列出目录列表切换当前目录3. 下载文件下载文件通常用get和mget这两条命令。a) get格式:get 将文件从远端主机中传送至本地主机中。如要获取远程服务器上/usr/your/1.htm,则

CGI与FastCGI是什么

当我们在谈到cgi的时候,我们在讨论什么最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给客户端。那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。下面图可以看到流程WEB服

使用 ssh config给你的远程主机创建别名

与windows不一样,通常在linux下(mac也一样)一般使用终端来连接远程主机而不是使用一些比如putty或者是xshell。ssh -p port name@host这样未免有些麻烦,实际上通过配置ssh的config文件能够使用别名,简化连接,用户的配置文件在~/.ssh/config, 没有的话就创建一个。配置示例如下Host 别名 HostName 主机域名或者ip User 用户名 Port 指定端口号比如你的树莓派在本地的ip是192.168.1.100Host rapsi    HostName 192.168.1.100    User root   

使用crontab+rsync备份你的站点

这是一篇记录站点备份的文章,通常站点需要每隔一周,甚至更短的时间进行备份,然而手工备份再下载下来这实在是麻烦,于是利用crontab和rsync进行站点备份,再利用我本地的树莓派定时拉取备份结果,想想还是挺完美的。编写备份的shell站点文件备份很简单,直接将站点打包压缩即可,但是想了想还是不把站点路径定义死,而是使用一个参数将站点路径传递进去,这样就能写一个通用的文件备份#! /bin/bashsrc='';dest='';while getopts 's:d:' OPTdo case $OPT in s) src=$OPTARG;; d) dest=$OPTARG;; esacdonei

介绍一款工具,memcacheadmin,使用php制作的memcached管理监控工具

MemAdmin是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。主要功能: 服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新 服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控 支持数据遍历,方便对存储内容进行监视 支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池,多服务器管理切换方便简洁guthub地址:https://github.com/ju

shell中 $? $# $* $$ $* $@ $0 特殊变量含义

shell中有一些常用的难记的特殊变量,如下:$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数。$*传递给脚本或函数的所有参数。$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同$?上个命令的退出状态,或函数的返回值。$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。$0 - 当前脚本文件名$n - 第n个参数$# - 参数个数$* - 所有参数$@ - 所有参数$? - 上一个命令的返回值$$ - 当前进程id

查看varnish统计信息命令:varnishstat

varnishstat是一个查看当前varnish实例的实时运行状态信息。命令以及参数如下:varnishstat 以下选项可用: -1不再显示不断更新的显示,而是将统计信息打印到stdout。-f <glob>Field inclusion glob. Use backslash to escape characters. If the argument starts with '^' it is used as an exclusion glob. Multiple -f arguments may be given, and they will be ap

bash教程:一、变量,函数,控制流程

变量的定义和使用

变量的定义

bash变量定义很简单。如下:

a="hello"
左边是变量名,右边是变量值。bash是弱类型,因此不需要给a加上类型。注意,等号两边不能有空格 比如 a = "hello",这是错误的。

变量使用

变量使用需要在定义的变量名之前加上$,比如我们打印之前定义的a

echo $a

特殊变量后面再说,现在仅仅是最基础的,能够让自己写出一个完整的脚本就行。

(更多…)

你可能还喜欢下面这些文章

C++字符串拼接

在C++中,字符串拼接可以使用多种方法,下面是一些常用的方法:使用 运算符C++中的 类型支持 运算符来进行字符串拼接。使用 成员函数 类提供了 成员函数,它可以用来拼接字符串。使用 运算符 也支持 运算符来进行字符串拼接。使用 C 风格的字符串拼接虽然不推荐使用C风格的字符串拼接(因为它可能会导致缓冲区溢出),但你还是可以在C++中这样做。在这种情况下,你需要确保目标缓冲区有足够的空间来存储拼接后的字符串。在这个例子中, 函数被用来拼接两个C风格的字符串。注意,在使用 之前,我们检查了 是否有足够的空间来存储拼接后的字符串,以防止缓冲区溢出。使用 对于更复杂的字符串拼接,特

python教程(一):变量和数据类型

python的基本数据类型有整型,浮点型,字符串,布尔,列表,元组,字典,集合。它们占用内存和定义方式如下表:类型占用内存如何定义整型(int)动态长度>=24字节a = 1浮点型(float)动态长度>=24字节a = 1.0字符串(string)动态长度,>=37字节,增加一个字符加1字节a = 'str'布尔(boolean)24字节a = True列表(list)动态长度,>=72字节a = []元组(tupe)动态长度,>=56字节a = ()集合(set)动态长度,>=232字节a = set([])占用的内存通过sys.getsizeof()获

Go入门:六、常用标准库

这是我的Go学习的第六篇笔记,也是Go入门的最后一篇笔记。在大多数语言中,了解了变量和数据类型,流程控制,函数,面向对象,再加上标准库,就可以用这门语言去写一些项目了。首先让我想想,在工作中通常会用语言频繁处理什么问题或者处理什么数据?最常见的应该是各种字符串操作,日期和时间,读写文件、socket等IO相关的操作!字符串处理 — StringsString提供了一组处理字符串的操作,常用的有:判断一个字符串是否在另一个字符串中分割字符串为[]string和组合[]string为一个字符串字符串替换...太多了,就不一一列举了,这里列出一些常用的字符串操作。字符串判断字符串分割与合并字符串转换

C++实现python字符串的endswith方法

可以使用的或方法配合比较运算符来模拟方法的功能。下面是一个示例函数,它检查一个字符串是否以另一个字符串结束:在这个示例中,函数接受两个参数:和。函数首先检查的长度是否大于或等于的长度。如果不是,那么显然不能以结束,函数返回。否则,函数使用方法从的末尾提取与长度相同的子字符串,并将其与进行比较。如果它们相等,那么以结束,函数返回。否则,函数返回。请注意,这个函数是区分大小写的。如果你想要一个不区分大小写的版本,你可以在比较之前使用和函数将和转换为小写。在这个版本中,函数首先使用和函数将和转换为小写。然后,它调用函数来检查转换后的字符串是否以结束。

shell 变量的定义

shell可以自定义变量,这为shell的编写带来很多方便定义变量定义变量时,变量名不加美元符号($),如:variableName="value"注意:变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样同时,变量名的命名须遵循如下规则。首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留关键字)。变量定义举例:myUrl="http://imhuchao.com/tag/bash"myNum=100使用变量使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:your_nam

Shell中的条件判断语句if的用法

shell中的if语法是最让我头疼的语法之一,它的判断就向使用USB插头一样——拿起来插入不行,翻转再插入还不行,再翻转插入行了!为了搞清楚这部分语言,我收集了一些文章关于if条件判断的用法,希望对你也有些帮助。一、基本语法语法说明bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令。当有多个嵌套时,只有第一个返回0退出状态的命令会导致符合该条件执行的语句部分被执行,如果所有的语句的执行状态都不为0,则执行else中语句。返回状态:最后一个命令的退出状态,或者当没有条件是真的话为0。注意:1、表

Go入门:一、变量和数据类型

这是学习Go语言的第一篇笔记,主要学习的是变量和基本数据类型。如果您也在开始学习Go语言,那么这篇笔记一定能帮助您学习的更快!我的语言学习过程一般分为下面几个:1. 变量和数据类型2. 流程控制方法3. 函数声明和调用4. 面向对象5. 语言特性6. 标准库变量声明Go语言的变量声明有三种第一种,var identifier type// 先声明后赋值var identifier typeidentifier = value// 声明并且赋值var identifier type = value开始实战一下!比如声明一个int类型变量var i inti = 1// 或者var i int =

rapidjson从字符串解析json

在RapidJSON中,要从字符串解析JSON,你可以使用类的方法。下面是一个简单的例子,展示了如何使用RapidJSON从一个JSON字符串中解析数据:在这个例子中,我们首先定义了一个包含JSON数据的字符串。然后,我们创建了一个对象,并使用方法将JSON字符串解析到这个对象中。解析完成后,我们检查是否有解析错误。如果没有错误,我们就可以通过键(例如"name"、"age"、"city")来访问JSON对象中的各个成员,并使用、等方法来检查成员的类型,并使用、等方法来获取成员的值。最后,我们还展示了如何将解析后的对象转换回JSON字

C++ 判断 char* 是否相等

在C++中, 是一个指向字符的指针,通常用于表示C风格的字符串。判断两个  指针是否相等,需考虑两个方面:判断指针本身的地址是否相等:可以通过直接使用  或  操作符来实现。 和  指向不同的地址(尽管它们的内容相同),而  和  指向相同的地址。2. 判断指针指向的字符串内容是否相等:需要使用  函数,它是C标准库中的一部分,在C++中可用。 函数用于比较 、 和  的内容。如果内容相同, 返回

mysq常用函数大全

很少用到,但是有时候又必须用到,这里收集一下mysql的常用函数一、数学函数ABS(x)   返回x的绝对值BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x)   返回大于x的最小整数值EXP(x)   返回值e(自然对数的底)的x次方FLOOR(x)   返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn)      返回集合中最小的值LN(x)                    返回x的自然对数LOG(x,y)返回x的以y为底的对数MOD(x,y)              

websocket协议详解

近来项目中使用websocket,于是来研究一番。websocket传输协议有两个部分,握手和数据传输

握手

GET / HTTP/1.1
HOST: <IP>:<PORT> 
Sec-Websocket-Version: 13
Sec-Websocket-Key: <KEY>
Connection: keep-alive, Upgrade
Upgrade: websocket

之后服务端会返回类似下面的数据

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: <ACCEPT_KEY>
Sec-WebSocket-Version: 13
Server: swoole-websocket-server

校检连接

这里可以对accept key进行校检,确定服务器确实是websocket服务器,校检算法为

sha1(KEY+‘258EAFA5-E914-47DA-95CA-C5AB0DC85B11’),将得到的一串字符串用16进制表示,之后再进行base64编码。 (更多…)

你可能还喜欢下面这些文章

linux awk命令分析你的文本或日志,awk命令用法

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您

使用sublime+platuml高效画图

程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用 Sublime + PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。什么是 PlantUMLPlantUML 是一个画图脚本语言,用它可以快速地画出:时序图流程图用例图状态图组件图简单地讲,我们使用 visio 画图时需要一个一个图去画,但使用 PlantUML 只需要用文字表达出图的内容,然后就可以直接生成图片。看一个最简单的例子:软件安装这些软件

mysql varchar类型探秘

mysql中varchar能够存储可变长度的字符串。过去我做的诸多业务中,一般存储短字符串的需求,都会使用varchar类型,并且定义长度为255,也就是varchar(255)。不过为了探究varchar这种类型到底是怎么存储的,它的最大长度能达到多少,我决定区翻一下mysql文档学习一下。varchar怎么存储经过一番了解,varchar最大能存储的长度为65535字节。存储字符串的时候,会将字符串的长度存在首部,接着才是内容。当varchar存储的字符个数小于或等于255的时候,首部需要一个字节来记录字符的个数。当内容大于255的字符的时候,首部需要2个自己来保存长度。varchar能存

记一次进程异常退出的问题排查

机器搬家之后,之前一直稳定的PHP多进程程序子进程突然异常退出,但是退出的不是很频繁,查看进程日志并也没有发现有什么导致退出的,问题比较诡异。于是开启了一段问题排查之路。首先查看内核日志,使用dmesg,拉到最后发现有一些这样的错误,看来确实是崩溃了。 php: segfault at 7f6443ee18c8 ip 00007f6443ee18c8 sp 00007fff4d4ba818 error 15 in libc-2.17.so php: segfault at 0 ip 000000000075919d sp 00007fff0c6e0578 error 4 in php trap

linux shell 入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shel

JS使用XMLHttpRequest实现ajax请求

是一个JavaScript对象,它最初由微软设计,随后被 Mozilla、Apple和Google采纳。如今,该对象已经被 W3C组织标准化。通过它,你可以很容易的取回一个URL上的资源数据。尽管名字里有XML, 但 可以取回所有类型的数据资源,并不局限于XML。而且除了HTTP ,它还支持 和 协议。创建一个 实例, 可以使用如下语句:方法概述非标准方法属性AttributeTypeDescription一个JavaScript函数对象,当readyState属性改变时会调用它。回调函数会在user interface线程中调用。警告: 不能在本地代码中使用. 也不应该在同步模式的请求中

mac下面查看端口占用进程情况

在linux下面有netstat可以查看指定端口被哪些进程占用,但是mac下面就不好用了,看不到进程号。mac下面可以使用lsof来查看端口被哪个进程占用,比如查看80端口被占用情况:lsof -i tcp:80lsof是列出打开的文件命令,更多的用法可以参考: https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/lsof.html原文如下:lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (

utf8编码原理

在我的程序中,基本都使用utf8来编码(除非历史原因,实在是无法转换)。但我用的php在处理中文语言的时候,总显得有些生硬,总感觉没有处理英文那么流畅。比如为什么统计字符的数目要远大于汉字的个数?为什么截断中文乱码?为什么一串英文所组成的字符串可以使用数组的方式访问但是中文字符串为什么就是乱码?等等等等之类的问题。这一切的一切,都是因为对utf8编码不了解所导致的!虽然我们有mb_string这个扩展的对中文有很友好的支持,但对于编码原理,还是需要好好的了解一下。但对于初学者,我想你未必有耐心看完这篇文章,可以跳过直接看程序实例,这篇文章可以作为实例程序的参考作用。

C++入门:一、变量和数据类型

这是我的C++学习笔记第一篇,同所有的程序语言学习路径一样,首先学习的是变量和数据类型。我的学习路径如下:1. 变量和数据类型2. 流程控制3. 函数声明和调用4. 面向对象5. 标准库这一章,学习的是变量和数据类型,需要了解的有:了解这些,对于变量基本就够了。Hello world在开始之前,先写一个hello world来熟悉一下程序的主要结构以及如何打印一个变量。iostream提供标准输入输出的头文件,程序以main函数问入口,std为标准库的命名空间,“<<” 为输出操作符,std::cout为标准输出,std::endl为结束符,表示将等待输出的内容从内存传送到标准输出

gcc/g++编译参数详解

编译步骤gcc 与 g++ 分别是 gnu 的 c & c++ 编译器。gcc/g++ 在执行编译工作的时候,总共需要4步:预处理,生成 .i 的文件将预处理后的文件转换成汇编语言, 生成文件 .s 有汇编变为目标代码(机器代码)生成 .o 的文件连接目标代码, 生成可执行程序 参数详解-x language filename参数含义为指定文件所使用的语言。根据约定,C语言的后缀名称为".c",而 C++ 的后缀名为".cpp"或".cc",但如果你的源代码后缀不约定的那几种,那么需要使用-x参数来指定文件所使用的语言。这个参数对他后面的文件名都起作用。 可以使用的参数吗有下面的这些:

记录一次编译安装php7的过程,以后当做参考

之前安装过一次php7,不过配置参数听过,这次再安装,就记录一下,后面就当做参考了,主要是配置里面东西有点多。

STEP 1

去php官网下载最新版本的php,目前是7.0.10,地址:http://php.net/downloads.php#v7.0.10,可以使用下面的命令,直接下载解压

$ wget http://am1.php.net/get/php-7.0.10.tar.gz/from/this/mirror
tar -xvf mirror

STEP 2

进入刚才解压的文件,应该是 php-7.0.10。安装之前需要解决一下依赖问题。 (更多…)

你可能还喜欢下面这些文章

mac如何安装talib

mac下pip安装ta-lib会报错报错的原因是缺少ta-lib library,看起来是编译时候缺少链接库。需要安装ta-lib静态库,于是使用brew安装一下ta-lib。安装完毕之后就可以pip install ta-lib,就可以安装成功了。

让sublime支持less css,以及支持压缩css的less插件

要想让sublime支持less,不仅仅是装个sublime插件就完事了啊!事情的经过还是颇为曲折的。第一步:安装nodejs首先先配置一下环境,less需要nodejs支持,所以我们先要安装一下nodejs。到nodejs官网下载就可以了:https://nodejs.org/en/ 第二步:安装less插件由于我的是windows,所以打开cmd啦,用npm安装less,命令为:npm install -g less@latest等待一会儿,结果就如图啦:这里我们的less就安装完毕了。第三步:安装sublime的less2cssctrl+shift+p调出面板,输入install pac

ubuntu安装libpng-dev失败,libpng12-dev : Depends: libpng12-0 (= 1.2.50-1ubuntu2.14.04.3) but 1.2.50-2+deb8u3 is to be installed

依赖问题,需要先安装libpngapt install libpng12-0=1.2.54-1ubuntu1问题解决。

varnish安装:varnish如何安装

ubuntu中varnish的安装varnish在Ubuntu package 仓库版本可能比较低,,我们一般建议使用varnish-cache.org提供的包。请注意,我们只为Ubuntu的LTS版本( Long Term Support,长时间支持版本,一般三年)提供安装包,其他中间版本并不提供。但这些版本也许会在较新的ubuntu版本中工作。varnish支持的架构是amd64。使用root执行下面的代码安装varnish提供的最新版本 apt-get install apt-transport-https curl https://repo.varnish-cache.org/GPG-

sublime安装插件的方法

sublime安装插件非常简单。主要方式有两种1.直接安装打开菜单栏里的“Preferences”--->"Browse Packages",打开包的位置 2.通过Package Control来安装如果没有安装package control,那么可以查看这篇文章:sublime安装package control,让插件安装更简单已经安装package control的,点击菜单栏的“Preferences”-->"Package Control",或者可以使用快捷键ctrl+shift+p 打开(mac使用cmd+shift+p)。在打开的终端窗口,输入“install

下载sublime

好了,现在可以去官网下载sublime了。官网地址:http://www.sublimetext.com/请不要下载破解版本的!sublime虽说是收费的,而且还是那种死贵死贵的,但是,它是可以免费试用的,并且不受时间的限制,也没有任何功能的阉割。除了会在使用中弹出让你去购买的弹窗,其他的和收费版是一样的。至于到底是下载sublime test2还是sublime text3呢?当然是2啦,没看到官网上面的下载链接都是2吗,ok,别犹豫啦,进入官网地址,首页就有下载按钮啦!现在建议下载sublime3啦!好了,当你下载sublime并且安装之后呢,那么,请开始体验神器吧!

安装datastax php-driver for cassandra 的悲惨经历

由于业务可能要使用cassandra,需要安装一个php的扩展,安装过程可谓是曲折首先直接pecl安装然而告诉我checking for supported DataStax C/C++ driver version... gawk: cmd. line:1: fatal: cannot open file `/include/cassandra.h' for reading (No such file or directory)呵呵呵呵呵呵呵,还得首先安装cpp的driver。行吧,先安装cpp-driver,按照官网给出的步骤结果就是缺少libuv啊,缺少cmake啊,其中的过程就比较曲折

sublime merge和diff的插件sublimemerge pro

一直使用的是beyond compare这个软件来作为比对和合并工具,不可否认,在用git的时候,配置这款工具比对确实很省事。现在我在用sublime写代码,在写的过程中可能涉及到和以前的代码版本做比对,这个时候还要打开这个软件那可不是我想要干的,插件众多的sublime我想这个比对插件肯定是有的吧,于是就找到了sublimemerge pro这款插件。直接 ctrl + alt + p 输入install package...,搜索sublimemerge,安装即可。如果对安装方法不清楚可以查看sublime安装插件的教程。安装之后会有一个readme,里面介绍了用法,如下  In file

memcacheq的安装与使用

1、安装libevent官网:http://www.libevent.org/2、安装 BerkeleyDB官网:http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html(下载需要登录)安装:安装完成之后:或者:添加:并执行:3、安装 MemcacheQ官网:http://memcachedb.org/memcacheq/测试是否安装成功:4、启动服务建立相关目录:启动服务:参数说明:-d : 以后台服务方式运行-l : 设置监听地址及端口(默认是22201)-A : 数据页大小-H : 数据保存目录-

sublime安装package control,让插件安装更简单

package control是什么东东?sublime要如何安装package control呢?且往下看。package control就是sublime的插件管理中心,你可以通过这个东西来安装,更新或者卸载插件。插件能够增强sublime的功能,这个就不废话了安装package control1.使用快捷键 Ctrl+` (这个就是键盘Esc下面的那个), 打开sublime的控制台(这个控制台可以输入并且执行python代码)sublime text3sublime text2手动安装可能由于各种原因,无法使用代码安装,那可以通过以下步骤手动安装Package Control: 点击

数据结构学习笔记:树

树是一种层次关系,在日常生活非常常见,比如社会关系,亲缘关系,文件管理。

一棵树是一些节点的集合,这个集合可以是空集,若非空,则一棵树由称作为根的节点r以及0个或者多个非空的(子)树组成,这些子树中的每一棵都是被来自根r的一条有向的边所连接。

一种数据结构需要包含一些操作,树这种数据结构有增加,删除,查找,修改。

节点

节点的度:节点子树的个数。

叶子节点:没有儿子的节点,也就是度为0的节点。

节点的层次:规定跟节点在1层,其他节点的层次为父节点的层次加1。

节点的高:节点的高为从这个节点到叶子的最长路径,所有树叶的高都是0。

节点的深度:从跟节点到该节点的唯一路径长,根的深度为0。

节点定义

typedef struct TreeNode *PtrToNode;

struct TreeNode
{
    ElementType Element;
    PtrToNode FitstChild;
    PtrNode NextSibling;
}

(更多…)

你可能还喜欢下面这些文章

一致性哈希的php实现

未来项目可能要上memcache集群,memcache集群的key分配完全在客户端完成,服务端不做任何处理,这里对key进行分配节点的最优方式就是使用一致性哈希。记得以前用mysql进行分库分表的时候,通常会用一个求余作为哈希函数,这样一些id就能对应相应的表了。不过使用mysql的时候,我们不需要考虑这些节点失效问题,以及节点增加或者减少的问题(在此之前应该做好足够的计划和准备),但是对于缓存,通常就比较宽松了,允许节点失效问题,但是普通的hash分配在节点失效之后,大部分的缓存位置都改变了,这显然个灾难,这个时候就要考虑一致性hash了,在增加或者删除节点,只有小部分的key会受影响。一致

使用php curl 的并发能力可以做什么

在php中,没有多线程让编程变得简单。但在一些需要并发提升性能的场景下,显得有些无能为力,比如发起一些http请求。但好在curl扩展可以让我们“并发”去请求网络资源。利用这个特点,我们能做很多有趣的事情。最基础的,并发请求网络资源,提升处理速度。并发访问代码<?phpclass ConcurrencyHTTP { private $_requests; private $_callbacks; private $_currentIndex = 0; public function get($url, $header = array(), $timeout = 3

shell中map的使用

bash 4.1.2 版本增加了map数据结构。map是一种常用的数据结构,通过map可以将key映射到一个value。使用方法map在使用之前需要先声明,声明的方式如下map需要先声明再使用。参数-A表示声明的变量是一个map。需要注意的是这里的A是大写的字母A。赋值操作map的赋值有两种方式,一种是直接给map赋值,如下:另一种是使用下标给map添加key-value对输出所有的key在文中最开始提到map的使用需要先声明,在没有声明的情况下此处会输出一个0,如下图:输出所有value输出map长度遍历,根据key找到对应的value遍历所有的key遍历所有的value问题FAQQ:为什么

介绍一款工具,memcacheadmin,使用php制作的memcached管理监控工具

MemAdmin是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。主要功能: 服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新 服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控 支持数据遍历,方便对存储内容进行监视 支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池,多服务器管理切换方便简洁guthub地址:https://github.com/ju

c++ 标准库二分查找

C++标准库中的二分查找可以通过和函数实现。这两个函数都在头文件中定义,并接受一个排序的范围(例如,,,等)以及一个要查找的值。返回指向在范围中第一个不小于(即大于或等于)给定值的元素的迭代器。则返回指向在范围中第一个大于给定值的元素的迭代器。下面是一个使用进行二分查找的例子:在这个例子中,我们首先定义了一个排序的,然后定义了一个目标值。我们使用查找,然后检查返回的迭代器是否指向。如果是,我们就打印出在中的位置。否则,我们打印出未找到的消息。如果你想查找的是范围中是否包含特定的值,并且不关心具体的位置,你可以将和的结果进行比较。如果它们相同,那么范围中不包含该值。否则,范围中包含该值。请注意,

mongo读写分离的一些坑

在使用mongo副本集的时候就在想,这些副本不用来读太浪费了,再翻阅php的mongodb驱动,发现一个美好的readPreference,可以设定读取的优先级,其中就有优先读取副本,甚至还可以设定读取最小网络延迟的节点,具体可以参考:http://php.net/manual/zh/mongodb-driver-readpreference.construct.php愿望是美好的,然而使用的过程中当我优先读取secondary时候,经常发现有的读取时间在几秒甚至几十秒的情况,也是醉了。于是经过一番搜索,发现有一个博客提到了这个问题,在官方文档中有说明,原文如下:How does concur

命令行下的mongo初试

从连接mongo开始,熟悉一下命令行下面的mongo使用连接普通连接mongo mongodb://ip:port查看数据库show dbs选择或者创建数据库use mydb创建一个集合比如创建一个mycollection的集合db.createCollection('mycollection')显示数据库中所有的集合show collections向集合中写入数据假设我们创建了一个mycollection集合,实际上当我们没有创建mycollection集合的时候,执行下面的命令mongo会自动创建一个mycollection集合db.mycollection.insert({"foo",'

python学习笔记:二、 流程控制

根据如何学习一门新的语言这篇文章的指导,现在的步骤就是学习这门语言的流程控制了。通常来讲,流程控制有顺序,选择,循环这几种。python也不例外,也有这三种流程控制。下面的一一学习。顺序顺序语句很简单,从上往下依次顺序执行。如:a = 1b = 2print(a+b)上面的语句就是顺序执行的语句。选择选择通常使用if和switch,但python中只有if这一个选择语句。语法是:if 满足条件1: 语句1elif 不满足条件1满足1条件2 语句2else 都不满足 语句3比如用一个实际的例子a = 1b = 2if a > b: print('a>b')el