自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 资源 (1)
  • 收藏
  • 关注

原创 go get could not read Username for ‘https://github.com‘: terminal prompts disabled

【代码】go get could not read Username for ‘https://github.com‘: terminal prompts disabled。

2024-02-26 17:25:36 393

原创 redis 实现原子性原理

https://mp.weixin.qq.com/s/T2GtBtdcTMrGQOgFpVbVmA

2020-05-13 22:55:25 1643

原创 web服务器底层原理

https://mp.weixin.qq.com/s/2EVv19MXabDm7nv0L_ykBQ

2020-05-13 22:54:31 399

原创 线程间的通信与共享

https://mp.weixin.qq.com/s/BsOzo1grbsYw7nfM0uXS9w

2020-05-13 22:53:34 216

原创 java 线程与锁

https://mp.weixin.qq.com/s/kBDeW1cX5eAdoHWKHxfbhw

2020-05-13 22:51:56 141

原创 tcp 粘包详解

转自:https://www.cnblogs.com/kex1n/p/6502002.htmlTCP粘包问题分析和解决(全)TCP通信粘包问题分析和解决(全)在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Na...

2019-09-02 13:49:08 201

原创 https 加密协议理解图

2019-08-30 18:50:43 119

原创 beego 运行原理图

2019-08-30 18:49:07 357

原创 go 切片原理

type slice struct { ptr *Elem //指向本地数组 len int //当前切片长度 cap int //切片容量}/*切片容量与扩容1.make([]int,len,cap) //直接指定容量,避免后期扩容操作2.当容量满的时候,扩容,规则:new_len = 2*(old_len+add_len)注意:多个切片可能...

2019-08-26 16:30:19 127

原创 字符匹配Boyer-Moore算法,go实现

参考:https://blog.csdn.net/qpzkobe/article/details/80716922func TestBoyerMooer() { text := "helloword" patten := "ellowor" left, right := BoyerMooer(text, patten) right++ fmt.Println(t...

2019-08-22 18:40:18 131

原创 构建二叉树

func BuildTreeFromInOrderAndPreOrder(inorder, preorder []int) *NodeTree { return BuildTree(preorder, inorder, 0, len(preorder)-1, 0, len(inorder)-1)}func BuildTree(preOrder, inOrder []int, pres...

2019-08-19 19:13:10 160

原创 redis 实现高并发情况下set集合数据不重复得原理

1.redis是单进程、单线程运行得,所以得请求会被放到队列中串行化。2.set集合采用哈系表实现

2019-07-17 15:33:10 3065

转载 cc攻击

生成大量正常请求来使服务器的数据库等服务cpu爆满。cc与ddos的区别:DDoS攻击打的是网站的服务器,而CC攻击是针对网站的页面攻击的,用术语来说就是,一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击(CC),网络层就是利用肉鸡的流量去攻击目标网站的服务器,针对比较本源的东西去攻击,服务器瘫痪了,那么运行在服务器上的网站肯定也不能正常访问了。而应用层...

2019-07-11 15:07:07 4615

转载 Go map实现原理

转自:https://my.oschina.net/renhc/blog/2208417?nocache=15391430379041. map数据结构Golang的map使用哈希表作为底层实现,一个哈希表里可以有多个哈希表节点,也即bucket,而每个bucket就保存了map中的一个或一组键值对。map数据结构由runtime/map.go/hmap定义:type hma...

2019-07-10 17:58:31 2349 1

转载 发现一篇高并发消息队列的文章,收藏下

面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西? 不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是...

2019-07-06 15:28:04 167

原创 让N个协程交替打印1-100

package mainimport ( "fmt")//让N个协程交替打印1-100  让N个协程交替打印1-100/*利用缓存通道进行阻塞的传递*/func main() { gorutinenum := 5 var chanslice []chan int exitchan := make(chan int) for i := 0; i ...

2019-06-28 14:17:11 462

转载 让两个协程交替打印1-100

package mainimport "fmt"func main() { numChan := make(chan int) exitChan := make(chan struct{}) go func() { for i := 1; i <= 101; i = i + 2 { result, ok := <-numCha...

2019-06-28 11:01:45 938

转载 golang 协程池

package mainimport ("fmt""time")type Poolstruct{Queue chan func() error;RuntineNumberint;Totalint;Result chan error;FinishCallback func();...

2019-06-27 10:56:12 117

原创 go 通道(无缓冲通道和缓冲通道)

无缓冲通道:数据结构:队列特点:先入先出同时只能一个goroutine访问发送与接收需要成对出现宕机情况:通道关闭后进行发送会导致宕机一个gouroutine停止接收后,继续发送会导致宕机关闭:close(ch)缓冲通道:与无缓冲通道相似,不同点:缓冲通道的阻塞条件:通道满时,发送会发生阻塞。通道为空时,接收会发生阻塞。...

2019-02-22 18:53:45 588

转载 分布式文件系统FastDFS+nginx安装与配置(单机)

参考:https://www.cnblogs.com/wyd168/p/6636529.htmlhttps://www.cnblogs.com/Eivll0m/p/5378328.html安装包如下:fastdfs-nginx-module_v1.16.tar.gzFastDFS_v5.05.tar.gzlibfastcommon-master.zipnginx-1.8.0.ta...

2019-01-29 18:57:27 268

转载 fastdfs5.10无法编译通过,提示"undefined reference to ''g_exe_name"

估计是因为你后来修改了编译参数,在这种情况下,要先执行 ./make.sh clean,然后再重新编译即可。https://github.com/happyfish100/fastdfs/issues/133

2019-01-29 14:24:04 801

原创 关于全局变量/局部变量/静态变量的线程安全问题

局部变量不存在线程安全问题。静态变量在该类的所有实例之间共享,如果会进行修改的话会有线程安全问题。全局变量在单例时会有线程安全问题,多例时不存在。...

2019-01-08 14:28:51 2782

原创 go 手机号码验证 正则表达式

import ( "fmt" "regexp")func main() { reg := `^1([38][0-9]|14[579]|5[^4]|16[6]|7[1-35-8]|9[189])\d{8}$` rgx := regexp.MustCompile(reg) s := []string{"18505921256", "18330823069"...

2019-01-04 14:56:58 6886

转载 golang生成指定位数的随机数

参考:https://blog.csdn.net/wade3015/article/details/830521221.随机数随机数,是使用一个确定性的算法计算出来随机数序。在程序开发中经常需要产生随机数,如随机数验证码登陆、作为唯一身份标识数据等等。2.rand库golang中产生随机数主要有两个包,分别是“math/rand”和“crypto/rand”。“math/rand...

2018-12-20 16:25:21 2677

原创 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应

 /*****解:借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。举例:入栈1,2,3,4,5出栈4,5,3,2,1...

2018-12-08 21:31:45 363

原创 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

package mainimport "fmt"/**定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解:用一个辅助栈如下:3 4 2 5 1 3 2 1 */func main() { for _,i := range [] int{3,4,2,5,1} { push(i) } ...

2018-12-06 10:38:13 278

转载 Linux命令:修改文件权限命令chmod、chgrp、chown详解

https://www.cnblogs.com/Berryxiong/p/6193866.html

2018-12-04 15:14:41 402

原创 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

package mainimport ( "fmt" "goproject/src/node")/**输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解:b树中找到a树的根节点,对比a树的每个节点与b树是否相同 */func main() { d := node.SetNodeTree("D", nil, nil...

2018-12-04 14:16:32 190

原创 二叉树的遍历

参考:https://blog.csdn.net/qq_33243189/article/details/80222629package mainimport "fmt"/***二叉树×××二叉遍历 */func main() { d := NodeTree{"D", nil, nil} c := NodeTree{"C", &amp;d, nil} b :...

2018-12-03 17:43:48 98

原创 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

package main/*输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解:思路同合并两个有序数组,三个指针对应三个链表,两个链表的值进行比较后加入新链表中 */import "fmt"func main() { node6 := Node{11,nil} node5 := Node{9,&amp;node6} n...

2018-11-30 15:49:28 117

原创 输入一个链表,反转链表后,输出新链表的表头。

/** * 输入一个链表,反转链表后,输出新链表的表头。 * 注意:需求有两个,1,反转链表,2.输出新链表表头 */public class Solution6 { public static void main(String[] args) { Node node = new Node(1,new Node(2,new Node(3,new Node(4...

2018-11-28 15:25:27 201

原创 输入一个链表,输出该链表中倒数第k个结点。

/** * 输入一个链表,输出该链表中倒数第k个结点。 * 解:设置一把长度为k的尺子在链表中移动,移动到最后的时候,最左端对应的是倒数第k个节点 */public class Solution5 { public static void main(String[] args) { Node node = new Node(1,new Node(2,new N...

2018-11-27 14:27:55 185

原创 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

/** * 输入一个整数数组, * 实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分, * 并保证奇数和奇数,偶数和偶数之间的相对位置不变。 * 解:利用排序算法的稳定性来解 */public class Solution4 { public static void main(String[] args) { ...

2018-11-27 10:54:39 209

原创 排序算法之归并排序

参考:https://blog.csdn.net/yushiyi6453/article/details/76407640/** * @param arrays * @return */public static int[] mergeSort(int[] arrays, int[] copyarrays, int left, int right) { int length...

2018-11-26 18:23:46 86

原创 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

第一种方法:使用递归,时间复杂度O(logn)当n为偶数,a^n =(a^n/2)*(a^n/2) 当n为奇数,a^n = a^[(n-1)/2] * a^[(n-1)/2] * a第二种方法:累乘,时间复杂度为O(n)public class Solution {    public double Power(double base, int exponent) { ...

2018-11-25 12:30:29 156

原创 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

package test;/*** 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。* */public class Solution { public static void main(String[] args) { System.out.println(solution(8)); } public static int sol...

2018-11-24 15:38:14 153

原创 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

/** * 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? * 解:依旧是裴波那契数列 * 可以理解为n由2或1来填满 * 公式: f(n) = f(n-1) + f(n-2); * f(1) = 1; */public class Solution3 { public static vo...

2018-11-23 14:00:19 323

原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

/** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 * * 解题思路1: 每一阶都有跳和不跳两种情况,但最后一阶必须跳,所以是2^(n-1) * 解题思路2: 一次跳n阶对应组合方式=1种+一次跳n-1阶-&gt;f(n-1)种+一次跳n-2阶-&gt;f(n-2)... * 最后得公式:f(n)...

2018-11-22 15:58:39 602

原创 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组

/*** *在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */public class TArraySortFind { public static void main(String[] args) { ...

2018-11-21 19:52:48 203

原创 java代理模式之动态代理

先来总结分析下代理模式。动态代理需要的元素:1.本身的逻辑接口;2.代理逻辑部分(实现InvocationHandler接口);客户端:1.创建本地逻辑的接口的实例。2.创建InvocationHandler接口的实例。3.调用java.lang.reflect.Proxy#newProxyInstance生成代理类。4.调用代理类相应的方法运行。动态:...

2018-11-19 15:57:31 96

分布式系统原理pdf

分布式系统原理pdf,详细介绍了分布式环境下的各种问题对应的解决方案。

2018-11-22

空空如也

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

TA关注的人

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