自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (2)
  • 收藏
  • 关注

原创 git--解决git push未被Github计入的解决方法

问题一台电脑上同时使用github和gitlab。gitlab上push能被正确记录,github的push在contribution中并未显示。文档https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/why-are-my-contributions-not-showing-up-on

2022-01-08 23:24:48 1878

原创 PHP--include和require的区别

作用require()语句的性能和include()相类似,都是包括并运行指定文件。对比requireinclude读取不同require()只处理一次对include()语句来说,在执行文件时每次都要进行读取和评估失败处理方式不同require在出错时产生E_COMPILE_ERROR级别错误include只产生警告E_WARNING,脚本会继续运行而include_once()和require_once()也是在脚本执行期间包括运行指定文件。唯一区别是

2021-07-11 10:34:11 309 2

原创 redis--内存淘汰机制

一、为什么要有内存淘汰机制redis是一个内存数据库,在内存空间不足的时候,为了保证命中率,就会选择一定的数据淘汰策略二、redis配置我目前试用的redis版本为6.0.31.最大内存参数将内存使用限制设置为指定的字节数。当内存达到限制时,Redis将尝试删除键。根据所选的回收策略(参见maxmemory-policy)。如果Redis不能根据策略删除键,或者如果策略是设置为’noeviction’, Redis将开始回复错误命令会使用更多的内存,如SET、LPUSH等,并将继续来响

2021-06-24 23:05:25 988 2

原创 PHP--??的一个坑

前段时间用??遇到了一个坑,特此记录一下。代码直接上代码$a = false ?? 1;以上$s返回的是false。不是1。对比一下empty和isset<?phpfunction testA(){ return false;}function testB(){ return NULL;}function testC(){ return "";}$testa = testA();$testb = testB();$testc =

2021-06-20 16:24:13 172 3

原创 golang--syncd快速发布脚本

起因公司使用syncd搭建的发布系统,在有时候需要发布的时候需要进行一系列繁琐的操作才能发布代码。思考如何命令行一键快速发布。研究通过抓公司页面得到发布的关键接口。登录api/login参数参数名备注usernamepasswordmd5返回type ResData struct { Code int `json:"code"` Data Data `json:"data"` Message string `json:"me

2020-06-07 08:42:20 533

原创 PHP--用curl完成问卷星答卷

原因由于公司订餐系统选用的问卷星系统,有时候工作忙忘记订餐导致没饭吃,终于下定决心研究一下怎么能更方便的吃饭,于是开始研究怎么用curl来自动化处理问卷星答卷。实现首先我们需要了解问卷星页面。打开一个问卷星页面。这里是我的一个测试页面。(https://www.wjx.cn/jq/80375841.aspx)尝试提交。发现当点击提交的时候会向此地址发送数据。发送的数据格式如下:submittype: 1curID: 80375841t: 1591198942624starttim

2020-06-04 11:22:38 1046

原创 golang--隐藏命令行用户密码

效果包github.com/howeyc/gopass方法GetPasswd// GetPasswd returns the password read from the terminal without echoing input.// The returned byte array does not include end-of-line characters.// 返回从终端读取的密码,不在命令行输出func GetPasswd() ([]byte, error) { return

2020-06-01 19:39:27 3289 1

原创 redis-缓存击穿和缓存穿透

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

2020-05-21 00:37:02 1139

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

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

2020-05-15 23:49:59 3189 2

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

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

2020-04-14 19:43:11 3283

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

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

2020-03-26 00:20:59 136

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

文章目录PHP7的变化(相对于PHP5)PHP的构成生命周期PHP7的变化(相对于PHP5)php7比php5运行速度更快。比PHP5快了将近5倍,同时降低了PHP对系统资源的占用。抽象语法树之前的PHP版本中,php代码在语法解析阶段直接生成了ZendVM指令,这使得编译器与执行器耦合在一起。这使得如果要把执行引擎换成别的,就需要修改语法解析规则。反之,如果语法规则变了,但是执行指...

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

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

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

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

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

1.安装xhprofgit地址:https://github.com/longxinH/xhprof.git//path为你的路径git clone https://github.com/longxinH/xhprof.git ./xhprofcd xhprof/extension//path/to/php7/bin/phpize./configure --with-php-confi...

2019-09-21 17:42:39 554 2

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

需求:去掉答案中的多余空格,只保留一个半角空格。$answer = preg_replace("/\s(?=\s)/","\\1",$answer);$answer = trim($answer);自测都是没问题的。但是和端联调的时候出现了一个奇怪的问题。看起来都是空格,但是却怎么也去不掉。想来想去,打一下字符的ANSCII码吧。于是出现了以下情况。发现160和32都是空格,但是ANSC...

2019-09-19 17:15:59 831

原创 PHP--==的一个坑

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

2019-07-24 15:04:19 176

原创 PHPredis扩展中incr的一个坑

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

2019-06-12 22:03:56 2522

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

swoole的官方文档:https://wiki.swoole.com/使用swoole实现一个http服务,每次请求都会对redis某个key值+1。几个小知识点:swoole是1+m+n模式的。1个master+m个manager+n个workerswoole的各个进程名需要重命名,否则会出现分不清是哪个进程的情况从swoole官网找的运行流程图直接上代码:<?php...

2019-05-01 17:34:05 272

原创 centos内核优化详解

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

2019-05-01 10:34:33 767

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

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

2019-04-25 17:26:07 3082

原创 PHP的一个坑--in_array

今天在找问题的时候发现了一个小坑。in_array定义:in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool着重说一下第三个参数。strict如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。...

2019-03-25 15:53:55 816

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

鸟哥的博客原文:http://www.laruence.com/2015/12/04/3086.html鸟哥的博客,让PHP7达到最高性能的几个Tips。第一点:那么,为什么开启opcache会提高性能。先阐述三个概念:1.PHP-CGI是PHP语言与服务器交互的CGI程序。CGI本身只能解析请求,返回结果。它本身并没有进程管理的作用。来一个请求就回fork一个子进程。2.真正解析PH...

2019-03-22 19:38:31 1852

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

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

2019-03-19 16:51:43 9798

原创 Linux实现文件共享

一般的用虚拟机装Linux环境的时候,共享文件在虚拟机设置中就可以设置,这个不多说。这篇文章主要说明的是用xshell远程连接某Linux系统,将Linux某文件夹与windows互通。需要用到一个工具,samba。1.安装sambayum -y install samba samba-client2.配置sambavim smb.conf添加你要共享的文件夹目录,记得要把共享目录权...

2019-03-15 18:36:17 1235

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

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

2019-01-09 11:41:25 412

原创 bash下自动显示分支名

有时候文件不显示分支名会造成诸多不便,提供方法自动显示分支名1.编辑.bashrc文件vim ~/.bashrc2.添加代码function git_branch {branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"if [ "${branch}" != "" ];then ...

2018-12-24 18:55:30 1713

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

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

2018-12-20 13:03:03 3053

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

git地址:https://github.com/nvbn/thefuck需要依赖的东西python (3.4+) pip python-dev 安装Python ,自带用Python -V看版本,如果&gt;3.4就ok安装pip首先安装epel扩展源:  yum -y install epel-release  更新完成之后,就可安装pip:  yum -...

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

原创 git源码剖析-init-db

我们先找到git代码,然后找到git第一版的代码。https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290也就是这个,git clone下来。我们看到第一次提交的文件比较少。通过make可以生成7个可执行文件,也正说明了初代的git只实现了以下几个功能。要研究,我们先研究以下他们怎么...

2018-09-28 11:44:56 5072 2

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

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

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

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

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

2017-08-27 11:02:35 823

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

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

2017-08-26 20:49:10 581

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

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

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

原创 第100篇博客

自己的第一百篇博客。从2016年起,大二的下学期。到如今,马上进入大四准毕业生的行列,不知不觉已经写了100篇博客了。从开始觉得博客这个东西好麻烦啊,写一篇要写2,3个小时,到现在很愿意并且喜欢上这个类似于知识总结的东西,并且一路坚持了下来。从C/C++到数据结构到Linux到计算机网络,再到最近找工作时的刷题,每一次的知识总结,每一次的学习,总结都让我觉得自己的知识储备非常浅薄,任重而道远。 记

2017-08-16 13:20:26 456

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

  查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找会在后续的博文中进行详细介绍。  查找定义:根据给定的某个值,在查找表中确定一个其关键字...

2017-08-15 21:06:17 54874 12

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

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

2017-08-15 15:53:43 703

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

引题class A{public: void function() { cout << "I can run" << endl; }};int main(){ A* pa = NULL; pa->function(); system("pause"); return 0;}C++中,空指针是不能够使用的,然而空对象指针有

2017-08-15 14:59:23 2526

原创 C++智能指针剖析

为什么要有?什么是智能指针?由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。为了方便内存回收,便有了智能指针。常见的智能指针0.汇总对于编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过

2017-08-13 19:31:09 837

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

什么叫位图?位图,就是用一块内存区域的每一个比特位表示一个对象的数据结构。 叫做 bitmap 或者 bitplane。面试题给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快 速判断一个数是否在这40亿个数中。 【腾讯】我们来分析一下这个问题:40亿个整数想要放到内存中势必需要很大很大的空间,更何况要对40亿个数据进行查找,那时间复杂度将会很大。 基于此,我们用位图的方法的来存

2017-08-13 16:09:20 459

原创 模拟itoa和atoi

模拟实现atoi函数原型:int atoi ( const char * str );传入一个char*,返回值为intint my_atoi(const char* str){ assert(str); int num = 0; int flag = 1; //跳过空白字符 while (*str == ' ' || *str == '\t' || *st

2017-08-09 17:00:52 284

http-tools(这个版本的ab有坑)

这是centos6.5 内核版本为2.6.32-431.el6.i686 自带的http-tools。其中ab有坑,慎用。

2019-04-30

vld内存泄漏检测工具下载

VLD是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;

2017-07-03

空空如也

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

TA关注的人

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