- 博客(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
598
原创 tcp 粘包详解
转自:https://www.cnblogs.com/kex1n/p/6502002.htmlTCP粘包问题分析和解决(全)TCP通信粘包问题分析和解决(全)在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Na...
2019-09-02 13:49:08
245
原创 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
166
原创 字符匹配Boyer-Moore算法,go实现
参考:https://blog.youkuaiyun.com/qpzkobe/article/details/80716922func TestBoyerMooer() { text := "helloword" patten := "ellowor" left, right := BoyerMooer(text, patten) right++ fmt.Println(t...
2019-08-22 18:40:18
177
原创 构建二叉树
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
205
原创 redis 实现高并发情况下set集合数据不重复得原理
1.redis是单进程、单线程运行得,所以得请求会被放到队列中串行化。2.set集合采用哈系表实现
2019-07-17 15:33:10
3142
转载 cc攻击
生成大量正常请求来使服务器的数据库等服务cpu爆满。cc与ddos的区别:DDoS攻击打的是网站的服务器,而CC攻击是针对网站的页面攻击的,用术语来说就是,一个是WEB网络层拒绝服务攻击(DDoS),一个是WEB应用层拒绝服务攻击(CC),网络层就是利用肉鸡的流量去攻击目标网站的服务器,针对比较本源的东西去攻击,服务器瘫痪了,那么运行在服务器上的网站肯定也不能正常访问了。而应用层...
2019-07-11 15:07:07
4775
转载 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
2412
1
转载 发现一篇高并发消息队列的文章,收藏下
面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西? 不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是...
2019-07-06 15:28:04
201
原创 让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
503
转载 让两个协程交替打印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
1024
转载 golang 协程池
package mainimport ("fmt""time")type Poolstruct{Queue chan func() error;RuntineNumberint;Totalint;Result chan error;FinishCallback func();...
2019-06-27 10:56:12
153
原创 go 通道(无缓冲通道和缓冲通道)
无缓冲通道:数据结构:队列特点:先入先出同时只能一个goroutine访问发送与接收需要成对出现宕机情况:通道关闭后进行发送会导致宕机一个gouroutine停止接收后,继续发送会导致宕机关闭:close(ch)缓冲通道:与无缓冲通道相似,不同点:缓冲通道的阻塞条件:通道满时,发送会发生阻塞。通道为空时,接收会发生阻塞。...
2019-02-22 18:53:45
660
转载 分布式文件系统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
306
转载 fastdfs5.10无法编译通过,提示"undefined reference to ''g_exe_name"
估计是因为你后来修改了编译参数,在这种情况下,要先执行 ./make.sh clean,然后再重新编译即可。https://github.com/happyfish100/fastdfs/issues/133
2019-01-29 14:24:04
870
原创 关于全局变量/局部变量/静态变量的线程安全问题
局部变量不存在线程安全问题。静态变量在该类的所有实例之间共享,如果会进行修改的话会有线程安全问题。全局变量在单例时会有线程安全问题,多例时不存在。...
2019-01-08 14:28:51
2846
原创 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
7083
转载 golang生成指定位数的随机数
参考:https://blog.youkuaiyun.com/wade3015/article/details/830521221.随机数随机数,是使用一个确定性的算法计算出来随机数序。在程序开发中经常需要产生随机数,如随机数验证码登陆、作为唯一身份标识数据等等。2.rand库golang中产生随机数主要有两个包,分别是“math/rand”和“crypto/rand”。“math/rand...
2018-12-20 16:25:21
2789
原创 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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
418
原创 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的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
310
转载 Linux命令:修改文件权限命令chmod、chgrp、chown详解
https://www.cnblogs.com/Berryxiong/p/6193866.html
2018-12-04 15:14:41
442
原创 输入两棵二叉树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
224
原创 二叉树的遍历
参考:https://blog.youkuaiyun.com/qq_33243189/article/details/80222629package mainimport "fmt"/***二叉树×××二叉遍历 */func main() { d := NodeTree{"D", nil, nil} c := NodeTree{"C", &d, nil} b :...
2018-12-03 17:43:48
128
原创 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
package main/*输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解:思路同合并两个有序数组,三个指针对应三个链表,两个链表的值进行比较后加入新链表中 */import "fmt"func main() { node6 := Node{11,nil} node5 := Node{9,&node6} n...
2018-11-30 15:49:28
144
原创 输入一个链表,反转链表后,输出新链表的表头。
/** * 输入一个链表,反转链表后,输出新链表的表头。 * 注意:需求有两个,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
249
原创 输入一个链表,输出该链表中倒数第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
217
原创 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
/** * 输入一个整数数组, * 实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分, * 并保证奇数和奇数,偶数和偶数之间的相对位置不变。 * 解:利用排序算法的稳定性来解 */public class Solution4 { public static void main(String[] args) { ...
2018-11-27 10:54:39
249
原创 排序算法之归并排序
参考:https://blog.youkuaiyun.com/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
107
原创 给定一个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
187
原创 输入一个整数,输出该数二进制表示中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
192
原创 我们可以用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
372
原创 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
/** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 * * 解题思路1: 每一阶都有跳和不跳两种情况,但最后一阶必须跳,所以是2^(n-1) * 解题思路2: 一次跳n阶对应组合方式=1种+一次跳n-1阶->f(n-1)种+一次跳n-2阶->f(n-2)... * 最后得公式:f(n)...
2018-11-22 15:58:39
630
原创 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组
/*** *在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */public class TArraySortFind { public static void main(String[] args) { ...
2018-11-21 19:52:48
254
原创 java代理模式之动态代理
先来总结分析下代理模式。动态代理需要的元素:1.本身的逻辑接口;2.代理逻辑部分(实现InvocationHandler接口);客户端:1.创建本地逻辑的接口的实例。2.创建InvocationHandler接口的实例。3.调用java.lang.reflect.Proxy#newProxyInstance生成代理类。4.调用代理类相应的方法运行。动态:...
2018-11-19 15:57:31
142
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人