自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 MySQL使用之for update

MySQL for update

2022-11-23 14:26:47 1087

转载 python3连接etcd3 grpc报错解决方法

本例环境如下:python版本: 3.7.1etcd3版本: 0.12.0报错信息:state = <grpc._channel._RPCState object at 0x7f51082a8b70>call = <grpc._cython.cygrpc.SegregatedCall object at 0x7f51080edc08>with_call = False, deadline = None def _end_unary_response_bl.

2022-05-31 16:24:03 1490

转载 Linux下安装xdebug扩展(多版本php)/Linux下PHPstorm使用xdebug

PS:转载只是为了自己能更好的记住和使用。一、进入https://xdebug.org/wizard.php打开你的phpinfo把你的phpinfo信息全部粘贴进去然后会得到如下提示:二、跟着上面的提示开始操作1.下载那个已经告诉你Download的压油包2.解压3.如果你的是多版本php,安装到对应版本的目录位置去,假如我要安装php7.3cd xdebug-2.7.2/phpize./configure --with-php-config=/www/server/php/

2022-01-13 15:12:42 541

转载 PHP类名调用非静态方法

请看下边一段代码,以大家的理解,运行下边的代码会出现什么输出呢?<?phpclass MyClass{ public function test() { echo "this is not a static function.\n"; }}MyClass::test();这段代码是一个很明显的静态方式调用非静态方法的例子,一般我们都会认为这样写的话,运行时肯定会报错的,但其实不然,PHP 其实是允许这么写的,但是大家都知道这样写明显是有

2022-01-04 18:01:12 225

转载 利用`git commit —amend —no-edit`命令修改上一次变更内容 【转载】

PS:转载只是为了记录自己遇到的问题,并且方便以后总结和查阅,不喜请绕行!git commit --amend 如果我们不小心提交了一版我们不满意的代码,并且给它推送到服务器了,在代码没被merge之前我们希望再修改一版满意的,而如果我们不想在服务器上abondon,那么我们怎么做呢? git commit --amend //也叫追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中, (...

2021-01-18 14:28:11 6853

原创 linux 安装PHP

一、下载安装包:wget http://cn2.php.net/distributions/php-5.6.0.tar.xz二、配置文件./configure --prefix=/home/cyb01/php56 --with-config-file-path=/home/cyb01/php56/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache ...

2021-01-13 14:57:10 76

原创 linux 常用命令--grep使用

linux中grep命令的用法作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。首先谈一下grep命令的常用格式为:grep [选项] ”模式“ [文件]grep家族总共有三个:grep,egrep,fgrep。常用选项:  -E :开启扩展(Extend)的正则表达式。  -i :忽略大小写(ignore case)。  -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。  -n :显示行号 ...

2021-01-08 11:26:51 66

转载 计算机网络学习之---NAT类型及工作原理【转载】

在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。根据规范,路由器是不能这样工作的,但它的确是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。协议详细说明:http://www.rfcreade

2020-12-30 11:48:20 649

转载 Python学习之 --- python入口文件界定(__name__)使用【转载】

python 由于是脚本文件,所以每个文件都是一个程序。但python又有面向对象的性质,即一切都是对象。所以通过__name__来界定当前是main,还是被加载调用方。#通过判断,界定是否为执行程序if __name__ == '__main__':...

2020-12-21 17:39:22 293 1

转载 云计算虚拟化知识【转载】

云服务Cloud ComputingSoftware as a Service软件即服务(SaaS)-云提供商负责访问通过Internet交付的应用程序和服务,例如电子邮件,通信和Office 365。Platform as a Service平台即服务(PaaS)-云提供商负责向用户提供对用于交付应用程序的开发工具和服务的访问权限。平台即服务(PaaS)提供了一个协作环境,多个开发人员可以在该环境中创建软件并通过云提供程序托管应用程序。Infrastructure as a Service

2020-12-15 16:23:50 265

原创 执行ssh-add时出现Could not open a connection to your authentication agent

场景:配置好git之后,拉取远程仓库代码,每次都需要输入rsa 密码串,现在用命令ssh-add -K ~/.ssh/id_rsa,但是提示一下错误:执行ssh-add时出现Could not open a connection to your authentication agent在执行 ssh-add -K ~/.ssh/id_rsa时发生此错,执行如下命令 ssh-agent bash然后再执行 ssh-add ~/.ssh/id_rsa即可。...

2020-11-17 10:18:17 917

原创 golang学习之--利用channel实现火车站多窗口买票问题【解决超卖】

eg:火车站有四个卖票窗口,一共有10000张票,现在设计一个方案实现自动售票,并且不发生超卖现象。func main() { nums := 10000 //预置票量 incs := make(chan int, nums) for i:= nums ; i > 0; i-- {//利用channel保证原子性库存操作 incs <- i } for j:= 1; j <=4; j++ {//开启四个协程 go func () { for {

2020-10-28 14:21:06 841 1

原创 MySQL学习之---联合索引

2020-10-12 11:51:18 69

原创 计算机网络学习之---详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

三次握手:四次挥手:问题点:1.为什么“握手”是三次,“挥手”却要四次?TCP建立连接时之所以只需要"三次握手",是因为在第二次"握手"过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。即SYN建立连接报文与ACK确认接收报文是在同一次"握手"当中传输的,所以"三次握手"不多也不少,正好让双方明确彼此信息互通。TCP释放连接时之所以需要“四...

2020-09-21 21:18:02 338

转载 MySQL学习之--普通索引和唯一索引的区别【转载】

1、概念不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';所以,你一定会考虑在id_card字段上建索引。由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,...

2020-09-01 18:39:09 109

转载 golang学习之--select--case 原理【转载】

Go 的select语句是一种仅能用于channl发送和接收消息的专用语句,此语句运行期间是阻塞的;当select中没有case语句的时候,会阻塞当前的groutine。所以,有人也会说select是用来阻塞监听goroutine的。还有人说:select是Golang在语言层面提供的I/O多路复用的机制,其专门用来检测多个channel是否准备完毕:可读或可写。以上说法都正确。I/O多路复用我们来回顾一下是什么是I/O多路复用。普通多线程(或进程)I/Oimage每来一个进程

2020-08-26 17:52:13 1724

转载 golang学习之--限制程序中协程执行的数量上限【转载】

package mainimport ( "fmt" "strconv" "time")var ( maxRoutineNum = 10)// 模拟下载页面的方法func download(url string, ch chan int) { fmt.Println("download from ", url) // 休眠两秒模拟下载页面 time.Sleep(2 * 1e9) // 下载完成则从ch推出数据 <...

2020-08-26 17:40:09 832

转载 golang学习之--context实现原理【转载】

概述 context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。每个Context应该视为只读的,通过WithCancel、WithDeadline、WithTimeout和WithValue函数可以基于现有的一个Context(称为父Context)派生出一..

2020-08-26 14:56:56 418 1

原创 操作系统学习之---select、poll、epoll 介绍

参考链接:B站地址:https://www.bilibili.com/video/BV1qJ411w7du?from=search&seid=5185021073532413322Select :fd_set 使用数组实现1.fd_size 有限制 1024 bitmapfd【i】 = accept()2.fdset不可重用,新的fd进来,重新创建3.用户态和内核态拷贝产生开销4.O(n)时间复杂度的轮询成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0具有超时时

2020-08-19 23:00:12 210

转载 计算机网络学习之---http1.0、http1.1 、http2.0 区别和联系【转载】

一、汇总对比HTTP1.0 无状态、无连接 HTTP1.1 持久连接 请求管道化 增加缓存处理(新的字段如cache-control) 增加Host字段、支持断点传输等(把文件分成几部分) HTTP2.0 二进制分帧 多路复用(或连接共享) 头部压缩 服务器推送 二、HTTP1.0:浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接)

2020-08-19 21:47:29 142

转载 操作系统学习之---进程、线程、协程之间的区别和联系

进程、线程和协程的区别 进程:充分利用多CPU 线程:充分利用多核(达到真正的多任务并行) 协程:充分利用单核(充分挖掘不断提高性能的单核CPU的潜力。类比事件驱动和异步程序)。既可以利用异步优势,又可以避免反复系统调用,还有进程切换造成的开销。 协程存在的意义: 对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序。协程能保留上一次调用时的状态,不需要像线程一样用回调函

2020-08-19 21:42:58 119

转载 golang 学习之select原理【转载】

写在最前面select为golang提供了多路IO复用机制,和其他IO复用一样,用于检测是否有读写事件是否ready。本文将介绍一下golang的select的用法和实现原理。实现原理golang实现select的时候,实际上为每一个case语句定义了一个数据结构,select语句块执行的时候,实际上可以类比成对一个case数组处理的代码块(或者函数),然后程序流程转到选中的case块。case数据结构源码包src/runtime/select.go:scase定义了表示case语句

2020-08-19 17:08:40 150

转载 golang学习之--strings包关于字符串查找方法总结【转载】

1)func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true示例如下:import ( "fmt" "strings")func main() { fmt.Println(strings.Contains("widuu", "wi")) //true fmt.Println(strings.Contains("wi", "widuu")) //false}2)func ContainsAny(s

2020-07-09 21:00:44 2337

转载 幂等性解决方案【转载】

实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如:1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会崩溃;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。等等很多重要的情况,这些逻辑都需要幂等的特性来支持。下面说说幂等性概念:幂等(idempot

2020-07-08 17:11:41 636

原创 Redis学习之--redis cluster 集群搭建

主要参考视频链接:https://www.bilibili.com/video/av93908779/搭建 三主三从集群(基于redis-5.0.3)记录下基本步骤:1、先在自己的redis目录中创建目录 :myredis (redis7000 ~redis7005)2、将redis-conf文件复制一份到上面的目录3、修改redis-conf文件,具体可以看视频中的注意这里要填绝对路径集群 创建命令 :redis-cli --cluster help 主节点...

2020-06-28 23:47:25 102

转载 微服务架构之服务降级【转载】

1 、简介什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。如果还是不理解,那么可以举个例子:假如目前有很多人想要给我付钱,但我的服务器除了正在运行支付的服务之外,还有一些其它的服务在运行,比如搜索、定时任务和详情等等。然而这些不重要的服务就占用了JVM的不少内存与CPU资源,为了能把钱都收下来(钱才是目标),我设计了一个动态开关,把这些不重要的服务直接在最外层拒掉,这样处理后的后

2020-06-18 21:23:31 143

转载 golang学习之如何判断Channel是否已经关闭【转载】

为什么有这样的问题? 来自我的一个bug,我期初认为close了一个channel,消费端的goroutine自然是可以拿到channel的关闭状态。然而事实并不是这样的。 只有当channel无数据,且channel被close了,才会返回ok=false。 所以,只要有堆积,就不会返回关闭状态。导致我的服务花时间来消费堆积,才会退出。测试channel的关闭状态// xiaorui.ccpackage mainimport ( "fmt")func m...

2020-06-15 21:06:22 3899 1

转载 Redis学习之 数据库之键的过期删除策略(expireIfNeeded、activeExpireCycle)【转载】

如果一个键过期了,可以有下面3个过期删除策略:①定时删除(Redis不支持)②惰性删除③定期删除注意:在这3种策略中,第①种和第③种为主动删除策略,而第②种则为被动删除策略Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以 很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡一、定时删除概念:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作Redis服务器没有使用这种策略优点:

2020-06-15 20:20:02 700

原创 MySQL学习之---实际情况下用不到索引的场景【原创】

1.索引无法存储null值  a.单列索引无法储null值,复合索引无法储全为null的值。  b.查询时,采用is null条件时,不能利用到索引,只能全表扫描。  为什么索引列无法存储Null值?  a.索引是有序的。NULL值进入索引时,无法确定其应该放在哪里。(将索引列值进行建树,其中必然涉及到诸多的比较操作,null值是不确定值无法    比较,无法确定null出现在索引树的叶子节点位置。)   b.如果需要把空值存入索引,方法有二:其一,把NULL值转为一个特定的值,..

2020-06-15 16:48:51 173

转载 Redis学习之 redis的 rdb 和 aof 持久化的区别【转载】

aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。rdb的特性如下:Code:fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。save, shutdown, slave 命令会触发这个操作。粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。aof有如下特性:Code:把写操作指令,持续的写到一个类似日志文件里。(类似于从postgresql等

2020-06-15 14:02:42 96

转载 Redis学习之 Redis连接时报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused【转载】

Could not connect to Redis at 127.0.0.1:6379: Connection refused[root@rongle bin]# redis-cliCould not connect to Redis at 127.0.0.1:6379: Connection refused[root@rongle /]# redis-server /etc/redis.conf[root@rongle /]# redis-cliredis 127.0.0.1:6379&g

2020-06-15 12:01:27 534

转载 Redis学习--linux 安装redis 完整步骤【转载】

linux 安装redis 完整步骤最近在linux服务器上需要安装redis,来存放数据,增加用户访问数据的速度,由于是第一次安装,于是在百度上搜了一篇文章,按照这篇博客,顺利安装好了,因此将博主的文章拷过来记录一下,方便以后使用,也为需要的朋友提供一个方便,参考博文地址:https://www.cnblogs.com/lauhp/p/8487029.html安装:1.获取redis资源  wget http://download.redis.io/releases/redis-.

2020-06-15 11:59:16 91

转载 golang 中string和int类型相互转换【转载】

总结了golang中字符串和各种int类型之间的相互转换方式: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.FormatInt(int64,10)放在这里,以备查询!...

2020-06-14 20:30:50 135

转载 mysql学习之---sql执行过程【转载】

作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行、程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑处理。但是,你知道这条 SQL 语句是咋执行的吗?我打赌你并不是很清楚,读完全文,你会有完全不同的感受。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表

2020-06-10 11:42:32 100

转载 【GoLang】深入理解slice len cap什么算法? 参数传递有啥蹊跷?【转载】

先上结论1、内置append函数在现有数组的长度 < 1024 时 cap 增长是翻倍的,再往上的增长率则是 1.25,至于为何后面会说。2、Go语言中channel,slice,map这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递指针。(注:若函数需改变slice的长度,则仍需要取地址传递指针)3、在函数内用append时,append会自动以倍增的方式扩展slice_2的容量,但是扩展也仅仅是函数内slice_2的长度和容量,slice_1的长度和容量是没变的,所

2020-06-08 17:25:56 313

转载 Linux下移除PackageKit【转载】

在使用yum命令安装git的时候,老是出现下面这个提示,如下图:大概意思就是:yum lock被别的app(PackageKit)占用 ,无法进行安装。PackageKit 是Linux系统上用来检查、更新和安装软件的一个工具,当它在后台运行时,它会阻塞用户的Package管理命令。解决方法就是依次执行下面三个命令将PackageKit关闭并删除就行了(在root身份下执行): [root@localhost ~]# systemctl stop packagekit [r..

2020-06-05 21:48:14 888

转载 Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)【转载】

日常操作linux 中,通常在使用 ps命令后 用管道连接 查询特定进程会显示grep进程本身。如下:1 [root@ecs-linux-byx ~]# ps -ef|grep gs42 root 6284 5879 0 14:30 pts/0 00:00:00 grep --color=auto gs41 [root@ecs-linux-byx gs4]# ps axu |grep gs42 root 2480 0.0 0.0 112728 97.

2020-06-04 10:48:58 12064

转载 git push到远程仓库的时候遇到non-fast-forward的问题【转载】

名为的manage项目操作过程1、在manage文件夹里打开git,输入git init初始化本地仓库,GitHub创建远程仓库manage2、以下命令关联本地和远程仓库,*****为我的用户名git remote add origin git@github.com:******/manage.git3、本地已经有项目代码了在add和commit之后,想要push到远程仓库git push origin master此时报错:! [rejected] master...

2020-06-03 23:01:33 242

转载 golang学习之map排序方法

实际操作中遇到map无法排序问题,借鉴前辈的方案(亲测可行)注意:Golang中的map默认是无序的,每次遍历,得到的输出结果可能不一样。Golang中的map排序:将map的key放到切片中; 对切片排序; 遍历切片,然后来按key来输出map的值。package mainimport ( "sort" "fmt")func main() { lockTest()}func lockTest() { map1 := make(map[string]int) m

2020-06-03 17:51:09 1531 1

转载 mysql学习之MySQL的Binlog与Redolog【转载】

MySQL逻辑架构大致可以分为两层:服务层:MySQL的核心服务功能,包括查询语句解析,词法语法分析,优化,缓存以及内置函数(日期,时间,数学,加密等),跨存储引擎的功能:存储过程,触发器,视图等。 存储引擎:负责MySQL中数据的存储和提取。我们知道在MySQL中,server层的日志,成为binlog(归档日志),主要用来做主从复置和恢复时使用的。redo log是InnoDB引擎的日志,来实现crash-safe能力。为什么会有两份日志呢?因为MySQL早期版本中没有InnoDB引擎,M

2020-05-19 18:19:49 105

2020法定节假日.xlsx

2020年节假日安排表下载,用于帮助大家获取节假日安排。

2019-12-27

MultiDatesPicker v1.6.3.zip

MultiDatesPicker v1.6.3.zip,可用于显示日期,并且支持DIY

2018-05-16

空空如也

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

TA关注的人

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