自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 redis-缓存击穿和缓存穿透
原力计划

缓存穿透 定义 有很多用户,请求接口。 为了防止mysql压力过大,在访问量很大且数据变动不频繁的情况下,我们通过增加redis缓存减少mysql的压力。 正常的流程为下图所示。 public function redisDemo() { $key = $_POST[...

2020-05-21 00:37:02 34 0

原创 java----记录jedispool的一个坑 jedispool导致线程阻塞

背景 一个多线程的消费任务,从kafka读数据放到LinkedBlockingQueue,另一个线程消费此链表数据。 在消费的时候本意期望用redis实现一个锁。 java中有对应的包jedisLock。 从Jedispool中获取一个连接去进行redis操作。 代码 Jedis jedis ...

2020-05-15 23:49:59 210 0

原创 PHP7内核剖析读书笔记-SAPI
原力计划

SAPI是PHP框架的接口层,是进入PHP内部的入口。 典型的SAPI有3个:Cli,Fpm,Embed。 Cli CLI----Command Line Interface ,命令行接口用于在命令行下执行PHP脚本。 Cli是单进程的,处理完请求就直接关闭了,生命周期先后经历了模块开始(modu...

2020-04-14 19:43:11 18 0

原创 Mysq读书笔记-Mysql性能优化

mysql性能优化的几点总结 都是自己碰到的坑。 1.建立适当的索引。但是当数据表本身不大的时候,创建索引会增加开销。 2.注意联合索引的是用。不如A,B建立联合索引。如果查询使用Where B=?这时候是不会用到索引的。若简历ABC联合索引,则相当于建立A,AB,ABC三个索引。 3.如果字段是...

2020-03-26 00:20:59 18 0

原创 PHP7内核剖析读书笔记-PHP基础架构

文章目录PHP7的变化(相对于PHP5)PHP的构成生命周期 PHP7的变化(相对于PHP5) php7比php5运行速度更快。比PHP5快了将近5倍,同时降低了PHP对系统资源的占用。 抽象语法树 之前的PHP版本中,php代码在语法解析阶段直接生成了ZendVM指令,这使得编译器与执行器...

2020-03-22 17:11:16 57 1

原创 对高并发与系统优化的一些感想与总结

1.背景 针对暑期高峰时段的防范,保护暑期直播的稳定性。于暑期前和团队一起进行防火演练以及压测,一直缺乏整理,此次记录并分享。 2.目标 接口QPS>=2W。 能容纳50W同时在线。 可通过资源线性扩容快速支撑100万在线能力。 3.前期思考 服务性能瓶颈点究竟由什么决定? 机器?DB?架构...

2020-03-19 22:57:23 89 1

原创 PHP性能分析工具Xhprof安装与使用

1.安装xhprof git地址:https://github.com/longxinH/xhprof.git //path为你的路径 git clone https://github.com/longxinH/xhprof.git ./xhprof cd xhprof/extension/ /p...

2019-09-21 17:42:39 52 0

原创 PHP之无法去掉的字符串中间空格-不间断空格

需求:去掉答案中的多余空格,只保留一个半角空格。 $answer = preg_replace("/\s(?=\s)/","\\1",$answer); $answer = trim($answer); 自测都是没问题的。但是和端联调的时候出现了一个奇怪的...

2019-09-19 17:15:59 122 0

原创 PHP--==的一个坑

注意看 “PHP” == 0 返回的是true。 所以,如果要判断字符串为空,还是用empty比较好。

2019-07-24 15:04:19 46 0

原创 PHPredis扩展中incr的一个坑

之前在开发的时候,是用incrBy没有注意很多,只知道他可以加一个整数。 突然有一天,端传进来一个浮点数。 这时候出现问题了。incrBy会把浮点数转为整数,会截断浮点数。比如1.23会转为1.98也会转为1。 所以。数据就会出现问题。 当我用redis直连的时候,如果插入一个浮点数。会报错。但是...

2019-06-12 22:03:56 934 0

原创 搭一个简单的swoole服务器

swoole的官方文档:https://wiki.swoole.com/ 使用swoole实现一个http服务,每次请求都会对redis某个key值+1。 几个小知识点: swoole是1+m+n模式的。1个master+m个manager+n个worker swoole的各个进程名需要重命名,...

2019-05-01 17:34:05 116 0

原创 centos内核优化详解

系统内核部分的设置在 vim /etc/sysctl.conf 1.禁用IPV6 net.ipv6.conf.all.disable_ipv6 = 1 # 禁用整个系统所有接口的IPv6 net.ipv6.conf.default.disable...

2019-05-01 10:34:33 115 0

原创 git自己遇到的一个问题,Unlink of file 'xx' failed. Should I try again?

当我composer一个库,然后调试完自己的代码,git push后发现远程并没有将此文件的内容push上去。 现在这是我的文件。我用composer下载了一个文件。 我们可以发现这下面有很多的文件。 这时候我们修改完自己的代码(这里我增加了一个b文件),add,commit,push。 我们从...

2019-04-25 17:26:07 474 0

原创 PHP的一个坑--in_array

今天在找问题的时候发现了一个小坑。 in_array定义: in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool 着重说一下第三个参数。 strict 如果第三个参数 strict 的值为 TR...

2019-03-25 15:53:55 232 0

原创 PHP-如何理解鸟哥说的打开opcache会让PHP7性能变高

鸟哥的博客原文:http://www.laruence.com/2015/12/04/3086.html 鸟哥的博客,让PHP7达到最高性能的几个Tips。 第一点: 那么,为什么开启opcache会提高性能。 先阐述三个概念: 1.PHP-CGI是PHP语言与服务器交互的CGI程序。CGI本身只...

2019-03-22 19:38:31 807 0

原创 PHP--使用curl下载文件

一般PHP用curl下载文件,是用变量存储curl接受到的数据,再写入文件里。 这样子有不好的一点,如果文件的结果比较大,那么会占用很大的内存 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURL...

2019-03-19 16:51:43 3385 0

原创 Linux实现文件共享

一般的用虚拟机装Linux环境的时候,共享文件在虚拟机设置中就可以设置,这个不多说。 这篇文章主要说明的是用xshell远程连接某Linux系统,将Linux某文件夹与windows互通。 需要用到一个工具,samba。 1.安装samba yum -y install samba samba-c...

2019-03-15 18:36:17 155 0

原创 如何在一台机子上即使用GitLab又使用GitHub

随着GitHub史诗性的在今日宣布私有库免费,相信很多人愿意把自己的代码转到GitHub上,但是公司用的一般是GitLab,这就让很多人头疼,因为git中输入的是/root/.ssh/id_rsa.pub中的秘钥。 那么今天说说怎么在一台机子上即使用GitHub又使用GitLab 首先,我们要...

2019-01-09 11:41:25 239 0

原创 bash下自动显示分支名

有时候文件不显示分支名会造成诸多不便,提供方法自动显示分支名 1.编辑.bashrc文件 vim ~/.bashrc 2.添加代码 function git_branch { branch="`git branch 2>/dev/null | grep "^...

2018-12-24 18:55:30 305 0

原创 zsh 简单教程--个人觉得比bash好用

zsh官网(打不开请科学上网打开):https://ohmyz.sh/ 安装zsh   yum install zsh oh-my-zsh oh-my-zhs-installer 安装oh-my-zsh sh -c "$(wget https://raw.github.com/r...

2018-12-20 13:03:03 1221 0

原创 一款有趣的开源项目--fuck

git地址:https://github.com/nvbn/thefuck 需要依赖的东西 python (3.4+) pip python-dev   安装Python ,自带用Python -V看版本,如果>3.4就ok 安装pip 首先安装epel扩展源:   ...

2018-12-19 16:08:47 588 3

原创 git源码剖析-init-db

我们先找到git代码,然后找到git第一版的代码。 https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290 也就是这个,git clone下来。 我们看到第一次提交的文件比较少。 通过make...

2018-09-28 11:44:56 1276 0

原创 Linux下安装配置Nginx以及安装PHP

1.编译安装Nginx 需要先安装两个库# yum -y install openssl openssl-devel然后下载,编译Nginx# wget http://nginx.org/download/nginx-1.8.0.tar.gz (这里如果想下载其他的版本,改版本号即可) # ta...

2017-12-13 21:29:31 4563 4

原创 计算机网络--http协议的长链接与短连接

什么是长连接,什么是短连接?在HTTP/1.0中,默认使用的是短连接。 也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏...

2017-08-27 11:02:35 417 0

原创 Linux--线程与进程的总结

什么是进程?进程:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 简单点说:进程就是正在执行的程序。就是包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文。进程的所有信息被放到进程控制块中(PCB)...

2017-08-26 20:49:10 474 0

原创 操作系统--总结几种常见的页面置换算法

什么是页面置换算法?在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。 当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。常见的页面置换算法?理想页面置...

2017-08-18 14:59:55 3077 2

原创 第100篇博客

自己的第一百篇博客。从2016年起,大二的下学期。到如今,马上进入大四准毕业生的行列,不知不觉已经写了100篇博客了。从开始觉得博客这个东西好麻烦啊,写一篇要写2,3个小时,到现在很愿意并且喜欢上这个类似于知识总结的东西,并且一路坚持了下来。从C/C++到数据结构到Linux到计算机网络,再到最近...

2017-08-16 13:20:26 314 0

转载 数据结构--七大查找算法总结

  查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找...

2017-08-15 21:06:17 30122 8

原创 数据结构--七大排序算法总结

面试中,无论是问还是写,排序被问到的次数总是很多。总结一些八大排序算法。排序算法插入,希尔,选择,堆: http://blog.csdn.net/sayhello_world/article/details/61927082冒泡,快速 http://blog.csdn.net/sayhello...

2017-08-15 15:53:43 497 0

原创 详解this指针--为什么空的对象指针可以调用成员函数

引题class A{ public: void function() { cout << "I can run" << endl; } };int main() { A* pa = NULL; pa...

2017-08-15 14:59:23 1400 0

原创 C++智能指针剖析

为什么要有?什么是智能指针?由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。为了方便内存回收,便有了智能指针。常见的智能指针...

2017-08-13 19:31:09 269 0

原创 数据结构--实现一个位图

什么叫位图?位图,就是用一块内存区域的每一个比特位表示一个对象的数据结构。 叫做 bitmap 或者 bitplane。面试题给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快 速判断一个数是否在这40亿个数中。 【腾讯】我们来分析一下这个问题:40亿个整数想要放到内存中势必需要...

2017-08-13 16:09:20 243 0

原创 模拟itoa和atoi

模拟实现atoi函数原型:int atoi ( const char * str );传入一个char*,返回值为intint my_atoi(const char* str) { assert(str); int num = 0; int flag = 1; //...

2017-08-09 17:00:52 193 0

原创 模拟实现C库的memmove和memcpy

memmove和memcpy是做什么的?memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容。他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。memcp...

2017-08-08 17:07:56 263 0

原创 数据结构--排序算法(冒泡排序&&快速排序&&鸽巢排序)

插入排序以及选择排序请查阅我往期博客:http://blog.csdn.net/sayhello_world/article/details/61927082 冒泡排序: 思想:两两交换,大的放到后面。重复size-1次 代码实现: [cpp] view plai...

2017-08-01 15:30:56 302 0

原创 基于UDP的网络群聊系统

为什么用UDP?UDP是一个无连接的,不可靠的协议。 发送端的UDP协议层只把应用层传来的数据封装成端给IP协议层就完成任务了。 如果因为网络故障无法发送到对方,UDP协议层也不会给应用层返回任何错误信息。 那么,为什么用UDP协议? 很明显简单,快捷。 一般UDP协议的应用程序实现都比...

2017-08-01 14:03:05 1414 0

原创 面试题--本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果

本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,并且求出大家最喜欢吃的前k种水...

2017-07-31 15:31:37 1603 0

转载 C++的单例模式与线程安全单例模式(懒汉/饿汉)

单例模式 单例模式:是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。   实现简单的单例模式:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private stat...

2017-07-30 17:06:12 276 0

原创 二叉树--将二叉搜索树转换成一个排序的双向链表

思路: 二叉搜索树本来就是已经排好序的,左比根小右比根大。 所以我们将左子树的最右的节点与根相连并且将根与右子树中最左边的结点相连接。 之后对子树进行递归操作。 void ConvertNode(BinaryTreeNode* pNode,BinaryTreeNode** pLastNod...

2017-07-30 13:19:53 267 0

原创 模拟继承和多态--C语言模式实现C++继承和多态

C语言与C++语言的不同?C语言是面向过程的语言。 C++语言是面向对象的语言。面向过程:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象:面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为...

2017-07-28 22:48:56 297 0

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