自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 PHP实现部分算法

##冒泡排序$test=[5,6,11,8,10,2,3,123,5,-1];$len=count($test);while (true) { if ($len <= 1) { break; } $i = 0; while (true) { if ($i > $len - 2) { break; } if ($test[$i] > $test[$i + 1]) {

2020-06-05 16:28:29 58

转载 使用docker搭建lnmp环境

1. 准备 docker1. 下载安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm22. 网络问题就换源咯yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo3. 更新...

2020-03-11 10:28:53 364

原创 laravel使用swoole的websocket

使用laravel的command来创建swoole进程使用laravel的artisan命令生成swoole.php类php artisan make:command swoole修改swoole.php类的内容如下:<?phpnamespace App\Console\Commands;use Illuminate\Console\Command;u...

2018-08-28 16:36:00 6177

转载 CentOS下Redis的安装

转载自:才鱼的博客前言安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么redis版本就不能低于3.2版本,由于这个特性是3.2版本才有的。另外需要注意的是,Redis约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版(如2.8版、3.0版),奇数版本是非稳定版(如2.7版、2.9版),生产环境下一般需要使用稳定版本。...

2018-07-19 11:34:58 115

转载 商城 商品模块 数据库 表设计

什么是SPU、SKU、ARPU这是一篇存档性笔记,我自己存档一下对这3个词的理解。如果你已经明了了这3个词的意思,请直接忽略之首先,搞清楚商品与单品的区别。例如,iphone是一个单品,但是在淘宝上当很多商家同时出售这个产品的时候,iphone就是一个商品了。商品:淘宝叫item,京东叫product,商品特指与商家有关的商品,每个商品有一个商家编码,每个商品下面有多个颜色,款式,可以...

2018-05-31 11:49:48 3964 1

原创 PHP实现数字范围的合并

介绍本文是为了实现类似 8<x≤10 和 9<y 这种范围(当然包括各种范围,等于,大于等于,大于,小于,小于等于)合并,比如结果是:9<z≤10实现实现方式是先考虑范围的表示,因为毕竟无法用代码直接写这些范围。这里使用字母和数组代表对应的范围,比如:1、8<x<=10 使用:array('gt'=>8,'elt'=>10,)2、x=10使...

2018-04-28 14:01:36 502

原创 TP5.1的核心代码解析之Facade

Facade是什么呢,目前看是一个用来方便实现原有类(未定义静态方法)的静态方式调用对应的方法的类。 具体Facade的实现如下: 首先看核心文件:\thinkphp\base.php中的:// 注册核心类的静态代理Facade::bind([ facade\App::class => App::class, facade\Build::class...

2018-03-15 09:40:54 3834

原创 TP5.1的核心代码解析之容器

最近看了看ThinkPHP5.1的核心代码,使用了容器的思想,简单解析一下具体实现:首先看到\thinkphp\base.php文件中的初始化绑定类到容器的方法:// 注册核心类到容器Container::getInstance()->bind([ 'app' => App::class, 'build' ...

2018-03-14 16:28:54 3586

原创 新年快乐

如题凑一篇文章作为2月的结束,最近看了些比特币的东西,这东西有很大优势但是也有很大的劣势。的确对于去中心化和解决信任问题是一个很好的思路,但是分布等价存储的代价还是比较大的,尤其数据量过大的时候,同步和计算所消耗的资源都是很大的。 不知道还会不会有更有的解法呢, 新的一年也到了,希望自己能更进一步,生活不断变好就是好的。目前是在不断的变好,很幸运,希望新的一年也是我和她的开始,一起走到最后...

2018-02-28 19:59:06 109

原创 HTTP性能(时延)问题的关注点

TCP 连接建立握手也就是三次握手的时延,最后的结果是,小的HTTP 事务可能会在TCP 建立上花费50%,或更多的时间。TCP 慢启动拥塞控制TCP 数据传输的性能还取决于TCP 连接的使用期(age)。TCP 连接会随着时间进行自我“调谐”,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐被称为TCP 慢启动(slow start),用于防止

2018-01-09 10:21:16 1258

原创 redis队列一些问题

插入队列1、lpush将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。PHP代码示例public function push($k,$value){ $value = (is_object($value) || is_array($value)

2017-12-21 15:09:57 1266

转载 如何设置一个严格30分钟过期的Session

作者: Laruence 本文地址: http://www.laruence.com/2012/01/10/2469.html第一种回答那么, 最常见的一种回答是: 设置Session的过期时间, 也就是session.gc_maxlifetime, 这种回答是不正确的, 原因如下:首先, 这个PHP是用一定的概率来运行session的gc的, 也就是session.gc_probability

2017-11-22 09:02:01 551

原创 mysql性能优化

记录几种mysql的索引基于《高性能mysql-第三版》B-tree索引B-tree索引适用于全键值,键值范围或键前缀查找。其中键前缀查找只适用于根据最左前缀查找。

2017-11-20 17:04:28 326

转载 数据库外键的使用和原则

外键的作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!例如:a b 两个表a表中存有客户号,客户名称b表中存有每个客户的订单有了外键后你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。指定主键关键字: foreign key(列名)引用外键关键字: re

2017-11-20 17:01:10 285

原创 PHP导出成PDF

准备工作首先查询了相关的类库,有FPDF,zendPDF,TcPDF等等。首先看了下先选择了FPDF,可以说除了中文字符以外没有什么问题,中文乱码而且看了下最新版本没有很好的解决方案,所以只能放弃。后来就专门找支持中文的发现了TcPDF,开始也是中文字体支持不是很好,但是发现了有人做了中文的语言包才得救了使用示例 vendor('Pdf'); $pdf = new \T

2017-08-30 11:04:34 1691

原创 天猫和淘宝商品数据爬取

一、思路最近做了一个网站用到了从网址爬取天猫和淘宝的商品信息,首先看了下手机端的网页发现用的react,不太了解没法搞,所以就考虑从PC入口爬取数据,但是当爬取URL获取数据时并没有获取价格,库存等的信息,仔细研究了下发现是异步请求了另一个接口,但是接口要使用refer才能获取数据,于是就通过以下方式写了一个简单的爬虫,用于爬取商品预览图和商品的第一个分类的价格、库存等。二、实现代码如下:funct

2017-07-28 13:58:57 8528 7

原创 微信PC二维码登陆的一种思路

一、思路:思路关键在于如何与微信端交互起来,毕竟目前微信登录只能是在微信端。 但是微信有一个特殊的方法用于生成自定义的二维码,这就让我们能够在PC上显示二维码,而二维码的值可以是我们定义的。另外看微信开发文档中存在一个scan事件,可以检测用户使用微信扫描二维码并获取值。其实问题的关键就在于这个值,这个值算是一个联通PC和微信的通信ID了。二、具体实现流程(下面代码使用了TP5的框架,有个大前提是

2017-07-05 17:09:05 2542 8

原创 Ubuntu 下搭建SVN服务器

Ubuntu 14.04 下搭建SVN服务器安装软件包:sudo apt-get install subversion之后选择SVN服务文件及配置文件的放置位置。我放在了/srv下的svn目录。cd /srvsudo mkdir svn我的svn版本仓库叫sunniercd /srv/svnsudo mkdir sunnier目录建好后 创建版本仓库sudo svnadmin create /srv

2017-06-09 11:34:21 368

原创 再见May Day

写博客也有两年多了,不得不都说写的东西有的很烂,不过呢也算是进步的记录吧。 走走停停,编程的路就这么走过来了。 呵呵,好久没写记事博客,都写不出字来了感觉。 最近的日子过得像做过山车一样,高高低低的,一会到顶一会直接到底,搞得我真心是很郁闷。不管如何吧,希望我爱的人和爱我的人都能好好的。以上

2017-05-31 23:27:51 263

转载 Github fork其他项目的分支与主干保持同步

转载自:骑毛驴的卡卡的博客 Fork一个RepoFork是一个复制的操作,当你Fork一个项目之后,你就有了在原项目的基础之上进行修改和扩展的权限。通常情况下,Fork操作用于参与别人的项目(成为项目中的一员),或者以别人的项目为基础来开发自己的项目。当你使用一个开源项目的时候,如果项目中存在bug,除了可以将bug报告项目开发人员。你也可以通过Fork原项目,并参与进来。首先,Fork原项目,并

2017-05-22 22:56:33 936

原创 apache的MultiViews的问题

问题:前提:ThinkPHP框架 今天配置服务器访问路径如下: http://**.com/index/index 发现最后得到的SERVER的[PATHINFO]的值只有/index这样其实就是默认访问了index控制器,而并没有直接访问到index方法也就是当url改为:http://∗∗.com/index/find的时候的_SERVER的[PATH_INFO]的值只有/index

2017-04-27 16:27:57 6102

原创 理解一下base64算法,一个PHP加解密方法

一、先通过一个PHP加密解密方法来看:function encrypt($string,$operation,$key='darling'){ $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8

2017-04-26 16:54:52 2852

转载 go语言string、int、int64互相转换

转载自:别人的博客#string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) #int到string string:=strconv.Itoa(int) #int64到string string:=strconv.FormatI

2017-03-20 10:23:49 603

转载 PHP源码解析笔记2-生命周期和Zend引擎

基于PHP源码分析的git仓库:深入理解PHP内核生命周期和Zend引擎一切的开始: SAPI接口SAPI(Server Application Programming Interface)指的是PHP具体应用的编程接口 脚本执行的开始都是以SAPI接口实现开始的。只是不同的SAPI接口实现会完成他们特定的工作, 例如Apache的mod_php SAPI实现需要初始化从Apache获取的一些信息

2017-02-15 15:46:44 312

原创 PHP源码解析笔记1-源码中的常用代码

基于PHP源码分析的git仓库:深入理解PHP内核常用代码双井号(##)在C语言的宏中,”##”被称为 连接符(concatenator),它是一种预处理运算符, 用来把两个语言符号(Token)组合成单个语言符号。 这里的语言符号不一定是宏的变量。并且双井号不能作为第一个或最后一个元素存在。示例如下:#define ZEND_FN(name) zif_##name宏ZEND_FN(name)中有一

2017-02-15 15:03:30 915

原创 React-native打包遇到问题:Could not get BatchedBridge

打包后使用时仍然找不到js bridge需要在根目录使用命令:react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output andro

2017-01-18 10:16:50 1871

原创 React-native从startActivityForResult中获取结果

注:以下内容涉及原生的调用逻辑,有必要很清楚。android端在这部分发现官方文档的内容并不能调用到module中的activityResult方法,在整理了逻辑以后,觉得应该在包含reactView的activity中写回调,比如我新建了一个MyReactActivit,里边包含一个mReactRootViewpublic class MyReactActivity extends AppComp

2017-01-12 15:49:37 3239

原创 React-native自定义安卓组件

文档参见:react-native中文网一、创建自己的Viewpublic class ReactMaterialView extends View { /** * 文本 */ private String mTitleText; /** * 文本的颜色 */ private String mTitleTextColor="#f

2017-01-10 17:05:04 975

原创 React-native学习

react-native中文网体会react-native使用和cordova类似,可以基于好多现成的组件来开发app。但是有个本质区别是,react-native体验比cordova好的多,接近原生的效果,而且使用也简单(前提是会es5和6)的语法。 之前一直没有学习直到16年可以在win下配置环境才看了看,然后最近真正学习了下基本用法。 基本的组件react-native团队都已经封装好了,

2017-01-06 14:49:24 484

原创 简单介绍几种排序算法

选择排序简单选择排序比如从小到大排序的话,从未排序序列中选出最小的和序列的首元素交换,然后再在剩下的未排序序列中选出最小的和序列的第二个元素交换,以此类推,最后形成从小到大的已排序序列。C语言代码解释如下:void SimpleSelectionSort(ElementType A[],int N){ int i,j,min,temp; for(i=0;i<N-1,i++){

2016-12-13 15:15:23 517

原创 PHP的错误处理

php的错误处理方法可以通过以下方式重写(在代码开始的地方自定义即可): error_reporting(0);//0为不输出PHP自带的错误输出,E_ALL为所有的警告和错误都输出 set_error_handler([__CLASS__, 'appError']); set_exception_handler([__CLASS__, 'appExce

2016-12-08 17:31:42 552

原创 介绍一下ThinkPHP加载文件

最近在看TP的源码,简单实现了TP的MVC功能。其中就涉及TP的代码加载机制,这里做一个简单的介绍,方便理解记录。PHP自身就有autoload方法可以自动加载,TP借助这个方法重写了类的加载。具体代码如下: // 注册系统自动加载 spl_autoload_register($autoload ?: 'sunny\\Loader::autoload', true, t

2016-12-08 17:20:19 508

原创 使用亚马逊云免费搭建自己的域名

申请域名,到godaddy上申请我的域名:kebenxiaoming.info免费注册亚马逊云,获取12个月的免费主机具体请登陆亚马逊云查看,配置域名访问的安全规则,加上HTTP的入站规则,如下图: 使用亚马逊云创建实例,我创建的是ubuntu14版本的服务器实例,使用时创建密钥,然后用putty登陆安装lnmp环境,然后解析域名到该实例的ip上解析godaddy域名只需要将dns管理中的A那一项

2016-11-30 22:06:11 10854

原创 Mysql的开发、维护、管理的读后笔记

一、decimal定点数不写精度默认没有小数位二、同一表中的timstamp类型只能有一个默认当前系统时间三、char类型无法保存值后面的空格,默认使用空格填充剩下的长度四、存储引擎的对比:五、以select,insert为主的操作推荐MyISAM引擎,这个引擎不支持事务和外键,推荐使用char保存字符;常有更新操作推荐InnoDB引擎,此引擎还支持事务和外键,推荐适应varchar类型保存数据六、

2016-11-14 17:02:59 240

原创 简单的手机直播实现

搭建FMS环境FMS4.5的安装包 http://pan.baidu.com/s/1pLtVzYj 搭建完成测试目录直接打开测试sample文件即可 我本地的是:file:///D:/Flash%20Media%20Server/samples/videoPlayer/videoplayer.html配置完FMS打开示例文件的效果图如下: 使用已有的一个手机端的推流软件源码地址:https:/

2016-11-10 16:41:19 2282 2

转载 FMS视频直播系统搭建

转载自:http://space.asmag.com.cn/space-news/77872.html一、准备工作:(1)一台正常工作的电脑,保证电脑的网络没有异常;(2)FlashMediaServer3.5.exe安装程序;(3)陆伍视讯公司的网络摄像机一台;二、安装FMS(1)双击安装程序FlashMediaServer3.5.exe 点击next;

2016-11-10 11:47:17 10218

原创 TP5与TP3.2的可以通用的方法

模型实例化TP5取消了自动实例化模型的M方法,转而使用了新的实例化模型方法。没有自动实例化则必须自己新建模型类,然后自己实例化,这就有点类似D方法。这里与D方法的功能类似的有一个model的方法,功能上完全可以替换使用U方法U方法是TP中的生成路由的内置方法,现在这个方法可以完全使用url方法替换TP5中取消了IS_GET和IS_POST方法如果想继续使用可以在项目中自定义一下,如下: define

2016-10-18 17:22:10 17326

原创 centos7下编译安装mysql

下载wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.23.tar.gz 解压tar zxvf mysql-5.6.23.tar.gz 安装编译环境sudo yum install cmake gcc-c++ ncurses-devel perl-Data-Dumper 编译安装进入mysql源码目录,生成makefilecm

2016-09-22 17:26:24 460

原创 centos7下编译安装nginx

下载:wget http://nginx.org/download/nginx-1.10.1.tar.gz解压tar -zxvf nginx-1.10.1.tar.gz安装编译环境 yum -y install gcc gcc-c++ openssl openssl-devel perl-devel perl-ExtUtils-Embed编译运行编译安装./configure --prefix=/e

2016-09-22 15:50:19 522

原创 centos7搭建lnmp环境

安装PHP(5.6.26)先下载PHP源文件wget http://cn2.php.net/distributions/php-5.6.26.tar.gz解压:tar -zxvf php-5.6.26.tar.gz安装编译用的环境:yum install -y libxml2-devel openssl-devel libcurl-devel lib...

2016-09-20 15:31:03 3418

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