自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wuhuagu_wuhuaguo的博客

每一个你不满意的当下,都有一个你不曾努力的过去

  • 博客(316)
  • 资源 (2)
  • 收藏
  • 关注

原创 java多线程

CPU密集型(需要大量的运算,而没有阻塞,CPU一直全速运行)CPU核数 + 1个线程数IO密集型(需要大量的IO操作,即大量的阻塞)CPU核数 / (1 - 阻塞系数) = CPU核数*5 或 CPU核数*10阻塞系数在0.8 ~ 0.9左右。

2023-03-07 09:53:23 544 1

原创 JMM & JVM & 垃圾回收

JMM是Java内存模型,也就是Java Memory Model,简称JMM,本身是一种抽象的概念,实际上并不存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式JMM关于同步的规定:(1)线程解锁前,必须把共享变量的值刷新回主内存(2)线程解锁前,必须读取主内存的最新值,到自己的工作内存(3)加锁和解锁是同一把锁主内存计算机的内存,也就是经常提到的8G内存,16G内存工作内存。

2023-03-06 19:39:07 585

原创 线上负载过高排查(top/vmstat/ifstat/free/df)

总结的Linux+JDK命令操作相关的笔记。

2023-03-06 12:32:35 1255

原创 CAS 与 ABA问题

CAS = Compare-And-Swap,它是CPU并发原语。比较当前工作内存中的值和主物理内存中的值,如果相同则执行规定操作,否者继续比较直到主内存和工作内存的值一致为止。3个操作数,内存值V,旧的预期值A,要修改的更新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否者什么都不做。

2023-03-06 08:58:02 301

原创 Java Volatile的三大特性

volatile是Java虚拟机提供的轻量级的同步机制,三大特性为:保证可见性、不保证原子性、禁止指令重排

2023-03-05 19:38:25 495

原创 Java各种锁

一、读写锁(ReentrantReadWriteLock)二、非公平锁(synchronized/ReentrantLock)三、可重入锁/递归锁(synchronized/ReentrantLock)四、自旋锁(spinlock)五、乐观锁/悲观锁六、死锁

2023-03-05 17:48:18 2991

转载 go三大指针数据-slice,map,struct

最近学习:《The Way to Go》,中文名《Go 入门指南》记录下学习轨迹一、slice声明+初始化: var s []int = arr[start:end] s := []int{1,2,3}slice=完整array(1)slice1 := arr1[:] //arr1[0:len(arr1)]的缩写(2)slice1 = &arr1s == s[:i] + s[i:] // i是整数且0<=i<=lenarr1[3:] == a...

2022-04-02 16:59:29 469

原创 go string与strconv

一、strings操作strings.HasPrefix(s, prefix string) boolstrings.HasSuffix(s, suffix string) boolstrings.Contains(s, substr string) boolstrings.Index(s, str string) intstrings.LastIndex(s, str string) intstrings.IndexRune(s string, r rune) intstrings.R

2022-04-02 16:58:27 321

原创 go sort包的排序和搜索

官方文档: https://pkg.go.dev/sort一、对数组或切片的升序排序(1)Ints(arri []int)(2)Float64s(a []float64)(3)Strings(a []string)二、判断是否已升序排序,true则已排序(1)IntsAreSorted(a []int) bool(2)Float64sAreSorted(x [] float64 ) bool(3)StringsAreSorted(x [] string ) bool三、对数组或切片的搜索(

2022-04-02 14:19:56 455

转载 go regexp正则匹配

正则匹配(1)regexp.Match ok, _ := regexp.Match(pat, []byte(searchIn))(2)regexp.MatchString(3)compile + find/replace先compile()和mustcompile()函数来检索正则表达式然后用FindXX或者ReplaceXX函数来查找或替换字符串查找:regexp.Compile(pat).FindStringregexp.Compile(pat).FindAllStringreg...

2022-04-02 11:58:43 1298

原创 go1.18泛型实例学习【待调试版】

golang 泛型的尝鲜+使用+示例视频教程 https://www.bilibili.com/video/BV1ky4y1V7tJpackage mainimport ( "fmt", "strconv")func test(i int)string{ return strconv.Itoa(i)}func main() { fmt.Println(test(123))}--------方法---------package mainim...

2022-03-10 11:15:39 338

转载 zookeeper的一致性协议——zab协议

转自:https://www.jianshu.com/p/2bceacd60b8a转载仅作为本人学习用。一、Zab协议的定义和作用?定义:Zab = Zookeeper Atomic Broadcast(zookeeper原子广播协议)作用:是一种支持崩溃恢复的原子广播协议,保证分布式事务的最终一致性(consistency)二、Zab协议实现单一主进程处理事务请求与原子广播协议 +保证一个全局的变更序列被顺序引用 +当主进程出现异常的时候,整个zk集群依旧能正常工作1)单一的..

2022-01-26 09:10:32 2253

原创 2022面试集-part2答案

一、滴滴国际化支付1、一面1.php的内存模型都是2.mysql的锁,怎么检测到死锁的,怎么处理死锁?都是3.https相比tcp而言,创建连接有几步?都是4.tcp的三次握手中,半连接队列满了咋办?都是5.存放int型数据的大文件,如果算出重复次数最多的topK?都是6.php设计模式,问了其中的单例模式和工厂模式都是7.手撕算法:(1)在有序数组查找比给定某个数大的第一个数的下标。比如[0,1,3,5,7,9],查找比2大的第一个数的下表。都是

2022-01-16 11:49:08 251

原创 mysql跨表分页查询

业务上会出现这样一种场景,A和B两张表,先从A表查,A表查完,再从B表查询。acount和bCount分别代表:两表的数据总数,pageNo和pageSize分别代表:当前查询第几页和每页条数needSize和diff分别代表:needSize=pageNo*pageSize,diff=needSize-aCountif (diff <= 0) {//全从A表取 offset = (pageNo-1)*pageSize; select * from A offset {of...

2021-12-02 17:14:44 1688

原创 2021金九银十php/golang面试part2-答案

目录一、算法1. LRU算法(最晚使用算法)2. 头条(算法特别难,8 皇后问题)3. 其他公司(mid)4. 判断字符串的括号时候正确()(),()(5. 最大回文字段6. 二分查找(https://leetcode-cn.com/problems/search-insert-position/)7. 将int转换成罗马数组8.二叉树(前序、中序、后续遍历,递归、循环,层次遍历)9. dfs + 剪枝 (https://leetcode-cn.com/problems/ju-zhen-zhong-

2021-10-23 19:13:18 1044

原创 php生成csv文件,完美解决乱码和失真

//生成csv文件,完美解决中文乱码和大数据失真问题if(!function_exists('toCSV')) { function toCSV(array $data, array $colHeaders, $asString = false) { $stream = ($asString) ? fopen("php://temp/maxmemory", "w+") //生成临时csv : fopen("php://output".

2021-08-06 22:03:10 442

原创 呀,写了个死循环

写了个热乎乎的死循环:起初是调用接口拿数据,但是接口查询条数有限制,限制每次只能查$pageSize条。这里有个问题,如果$searchKeyArr是空数组,那么计算出来的$batchNum=0,而$pageNo从1开始不断累加,这样$pageNum永远不可能等于$batchNum,造成了死循环。修改如下:function MySolution(array $searchKeyArr) { $pageNo = 1; $pageSize = 10; $batchNum = ...

2021-05-29 12:00:09 182

原创 go语言RabbitMQ实践

最近在慕课网上学习go版本的RabbitMQ开发,记录下思路,以供后续翻阅。 rabbitmq.go公共部分 简单 模式 工作 模式 订阅者模式 路由 模式 ...

2021-03-14 18:58:47 336

原创 go实战之3小时极简春节抢红包

最近开始学go, 在慕课网上趁热打铁学了下抢红包的教程:https://www.imooc.com/learn/345go语言第一课https://www.imooc.com/learn/1101 3小时极简春节抢红包之Go的实战抢红包金额设计(2个公式):最大可调度金额 = 总金额 - 最小金额*红包数量平均可调度金额 = 最大可调度金额/红包数量抢红包可以如下分为4个算法。简单随机算法 (1)算法:红包序列元素 = 随机数(0~最大可用金额) + 最小金额 (2)比..

2021-02-05 15:16:35 553 1

转载 [面试]一个请求从开始到结束经历哪些过程

转自:https://juejin.cn/post/6844903665631756295 一个完整的HTTP请求过程 = 浏览器缓存 + DNS域名解析 + TCP连接 + HTTP请求与响应(1)浏览器缓存:客户端先检查本地是否有对应的IP地址缓存,找到就返回,没有找到就向上一级DNS服务器发送请求,直到找到或根节点。 浏览器缓存-->系统缓存-->路由器缓存-->ISP DNS缓存-->从根域名服务区递归搜索(2)DNS域名解析:从域名解析出IP地...

2021-01-28 18:05:29 480

转载 [阿里面试题]composer作用及工作原理

1、composer的定义:PHP的一个依赖管理工具Composer是PHP的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.2、composer的功能:下载管理第三方包a. composer install从当前目录读取composer.json文件,处理了依赖关系,并把其安装到vendor目录下b. composer update为了获取依赖的最新版本,并且升级composer.lock文件3、composer工作原理https://segmentf

2021-01-28 17:20:01 1202

转载 docker常见面试题

目录1.什么是docker?什么是docker镜像?2.docker与虚拟机有何不同?docker常用命令?docker使用流程?3.什么是docker容器?docker容器有几种状态?docker容器内部机制?容器与主机之间的数据拷贝?启动容器并挂在目录?4.Dockerfile中最常见的指令是什么?Dockerfile中的命令COPY和ADD命令有什么区别?(1)常见指令:FROM + RUN + CMD + WORKDIR + ONBUILD + VOLUME + EXPOSE +

2021-01-28 00:58:04 12455

转载 分库|分表|分区|分片的最全指南

读压力大时 读写分离、一主多备 写压力大时 分库分表 IO瓶颈 分库和垂直分表 CPU瓶颈 SQL优化和水平分表 分库 分库:当一个库中的表过多(单机容量不够),访问量太大(单个实例无法支持)时候,可以分库 水平分库:一般是在垂直拆分后进行;将存储的同张表的数据划分到不同的库中(压力分摊到不同的库,如:订单、用户);问题:数据路由 垂直分库:将系统中不存关联关系或不同业务的...

2021-01-27 10:19:04 634

转载 PHP内存溢出和内存泄漏的区别

目录一、定义1、内存溢出(out of memory):不够用2、内存泄露(memory leak):已申请的无法释放二、出现场景1、内存溢出1类:大数据创建或拷贝2、内存泄漏4类:3、隐式内存泄漏:无用数据未释放+配置不合理(fpm+常驻进程)三、PHP内存管理:引用计数+垃圾回收的回收周期1、php函数获取当前程序内存使用情况:memory_get_usage()与memory_get_peak_usage()2、PHP5.2及以前版本:引用计数一、定义.

2020-12-29 23:53:45 827

原创 2019-2020 PHP面试-12家(答案全)

一、洛可可设计1、判断一个字符串A(ghtabcdef)是否包含另一个字符串B(bac),不考虑顺序。str_split--将字符串转成数组function actionIsInclude($a, $b){ bool $found = false; $aArr = str_split($a);//无分隔符的字符串转成数组 $bArr = str_split($b)...

2020-12-19 18:08:24 961

转载 面向对象的4大特性+组合替换继承

面向对象的四大特性:封装、抽象、继承、多态文章目录一、封装1、定义2、使用原因二、抽象1、定义2、实现方式三、继承1、定义2、优缺点3、多重继承的优缺点3.1、多重继承的优点:多继承,可以调用多个基类的不同方法3.2、多重继承的缺点:多继承的类,如果调用基类的基类中的方法,容易造成歧义3.3 解决方案四、多态1、定义2、好处一、封装1、定义也叫:信息隐藏或数据访问保护,使用protected和private关键字。2、使用原因A.如果对类属性访问不做控制,任何代码都可访问和修改,虽灵活但也意味着

2020-09-28 20:47:34 498

转载 测试端口通不通的四种方法

(1)telnet ip porttelnet是windows标准服务,可以直接用;如果是linux机器,需要安装telnet.(2)ssh -v -p port username@ipssh是linux的标准配置并且最常用。-v调试模式(会打印日志),-p指定端口(3)wget ip:portwget是linux下的下载工具,需要先安装.(4)使用端口扫描工具...

2020-09-23 15:57:36 3429

转载 mysql count(*)使用索引和成本计算

目录一、索引成本计算1、IO成本2、CPU成本二、cout(*)索引---选成本最小的辅助索引总结一、索引成本计算在有多个索引的情况下, 在查询数据前,MySQL 会选择成本最小原则来选择使用对应的索引,这里的成本主要包含两个方面。1、IO成本即从磁盘把数据加载到内存的成本,默认情况下,读取数据页的 IO 成本是 1,MySQL 是以页的形式读取数据的,即当用到某个数据时,并不会只读取这个数据,而会把这个数据相邻的数据也一起读到内存中,这就是有名的程序局部性原理,所以 (

2020-08-24 23:07:46 2307 2

转载 【亲测可用】Linux三剑客命令grep,sed,awk(cut)案例练习

目录一、cut与awk1、处理access1.log文件内容,将域名取出并根据域名进行计数排序处理(百度和sohu面试题)方法1: cut -d -f方法2: awk -F print方法3: awk数组方法4: cut与awk数组方法5: grep2、已知access2.log,第一列是文件名,第二列是版本号,打印出每个文件最大的版本号一行。3、access3.log内容如下:4、access4.log内容如下:二、sed1、反倒是2、倒叙一、cut

2020-07-21 21:23:00 2487

转载 apache|squid|nginx|lighttpd的反向代理的区别

目录一、反向代理的分类1:同步模式(apache和squid)2:异步模式(nginx和lighttpd)二、异步传输的优缺点优点缺点三、反向代理的一览表及其对比一、反向代理的分类反向代理从传输上分可以分为2种:1:同步模式(apache和squid)浏览器发起请求,而后请求会立刻被转到后台,于是在浏览器和后台之间就建立了一个通道。在请求发起直到请求完成,这条通道都是一直存在的。2:异步模式(nginx和lighttpd)浏览器发起请求,请求不会立刻转到后

2020-07-16 12:12:24 196

转载 Mac下使用sshpass让iterm2支持多ssh登录信息保存

mac下没有xshell等连接linux服务器的工具,当需要管理的服务器越来越多之后,密码管理就成了一个很头疼的问题,每次都需要去复制粘贴密码,浪费了很多时间,在网上查了不少资料,发现mac下可以使用iterm2+sshpass来实现免密登陆,特此记录下。一、安装iterm2直接到官网下载安装: http://iterm2.com/二、安装sshpass1)下载:http://sourceforge.net/projects/sshpass/files/先手动下载好sshpass文件2).

2020-06-16 22:11:38 519

转载 dfs与dfs遍历图节点

图的存储结构主要分两种,一种是邻接矩阵,一种是邻接表。1.1 邻接矩阵图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:看一个实例,下图左就是一个无向图。从上面可以看出,无向图的边数组是一个对称矩阵。所谓对称矩阵就是n阶矩阵的元满足aij = aji。即从矩阵的左上角到右下角的主对角线为轴,右上角的元和左下角相对应的元全都是相等的。从上面可以看出,无向图的边数组是一个

2020-06-14 13:33:30 911

原创 mac安装redis与php-redis扩展

目录一、安装redis服务(6.0.5版本)二、安装php的redis扩展(5.2.2版本)一、安装redis服务(6.0.5版本)1、先搜索:brew search redis, 再安装:brew install redis安装过程中每次会进行Homebrew更新检测,影响安装速度,如果不需要可以在终端输入(此命令临时有效)export HOMEBREW_NO_AUTO_UPDATE=truebrew install redis2、brew info redis默认配置文件路径

2020-06-12 15:37:13 1890

原创 laravel的hasOne,hasMany,belongsTo,belongsToMany,hasOneThrough,hasManyThrough详解

hasOne、hasMany、belongsTo这3个的大致中文意思:hasOne:有一个,加上主谓语应该是 ,A有一个BhasMany:有很多,A有很多BbelongsTo:属于,A属于Bgoods_cate(商品分类表:id,titile),goods(商品表:id,cate_id,name),detail(商品详情表:id,goods_id,price)一个商品分类下面有多个商品,所以:goods_cate hasMany goods; 一个商品属于一个商品分类,所以:goods belo

2020-06-05 22:31:46 4803

原创 nginx虚拟主机配置指南(超全超傻瓜式)

目录一、虚拟主机配置实例(亲测可用)1、单项目的(域名=test.single.com,项目名=single)2、多项目的(域名=test.multi.com,项目名=multi)二、Nginx相关参数详解1、fastcgi.conf与fastcgi_param的区别2、PHP Primary script unknown 终极解决方法3、location4、try_files5、rewrite一、虚拟主机配置实例(亲测可用)1、单项目的(域名=test.sin.

2020-05-22 10:50:48 540

原创 神奇的/etc/hosts配置

开发同学在配置虚拟主机的时候,或者在开发环境与测试环境切换的时候,需要配置hosts,但有时候配置了却失效,非常沮丧。(1)1个ip可有配置多个域名1.2.3.4 dev.baidu.com1.2.3.4 test.baidu.com(2)一个域名不可绑定多个ip1.2.3.4 ceshi.baidu.com5.6.7.8 ceshi.baidu.com同一域名,绑定两个ip,事实证明,只有第一个奏效(本人就是在这个上面被坑了好久好久,5.6.7.8那个总是失败,呜呜呜)。其实支持负载均衡,可.

2020-05-19 17:33:08 1649

原创 【坑死人不偿命】mac安装php设置timezone失败问题解决

我对灯发誓,我真的去修改php7.2对应的php.ini文件,在改了这句date.timezone = "Asia/Shanghai"并且也重启成功了php7.2,但是就是没奏效。想着我mac电脑是不是php版本问题。实际运行奏效的phpMacBook-Pro ~ % php -vPHP 7.3.11mac自带的php版本MacBook-Pro ~ % /usr/bin/php -vPHP 7.3.11我自己安装的php版本MacBook-Pr...

2020-05-13 22:42:03 348

原创 postman请求https报错Could not get any response

之前在postman上请求好好的,后来电脑重装系统后,再次安装postman后就出现了这个幺蛾子。多方查看,其实解决方案postman已经给出了,SSL验证关了就行postman ---> Preferences -> 把SSL certificate ve rification设为off,再次请求就OK了,世界也美好起来了,耶...

2020-05-11 21:01:52 913

转载 mac中多账户git ssh key配置

目录一、查看是否已配置二、重新配置一、查看是否已配置首先、确认本地是否已经有对应配置,打开Terminal终端,按如下步骤:1.cd ~/.ssh ->进入ssh目录如果不能进入该目录,说明没生成过,则需要使用命令2检查配置2. git config --list ->检查下是否配置过git账户3. ls ->查看ssh具体内容如果ssh文件夹中有id_rsa,id_rsa.pub,说明之前生成过ssh 秘钥,可以直接...

2020-05-10 18:57:17 946

转载 乐观锁&悲观锁之面试考点详细解析

一、乐观锁和悲观锁的简介1、概念(1)乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。(2)悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。乐...

2020-05-08 09:20:13 313

Laravel框架关键技术解析

资源获取不易,只收取最低积分,给想要深度学习go的php小伙伴~

2018-03-22

数学建模 灰色预测模型(代码加课件)

数学建模的灰色预测模型,Matlab代码+课件,特全

2014-08-09

空空如也

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

TA关注的人

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