- 博客(169)
- 资源 (19)
- 收藏
- 关注
原创 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)...
2021-04-18 12:54:53 333
转载 Go的json解析:Marshal与Unmarshal
简介Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。go语言本身为我们提供了json的工具包”encoding/json”。更多的使用方式,可以参考:https://studygolang.com/articles/6742实现Json Marshal:将数据编码成json字符串看一个简单的例子ty.
2021-02-22 20:50:55 508
转载 golang善用go func和defer
一、error与panic:error:可预见的错误 panic:不可预见的错误,panic一般通过defer中的recover()捕获 对于有风险的代码,若发生panic则会导致程序异常退出,例如数组越界。1. panic的操守panic是有秩序的,退出之前会执行完先处理完当前goroutine已经defer【挂上去】的任务,若某个defer在panic之后,则不会被执行。 panic仅保证当前goroutine下的defer都会被调到,但不保证其他协程的defer也会调到 同一goro
2021-01-28 12:06:55 1142
转载 Golang中defer、return、返回值之间执行顺序的坑
前言https://blog.csdn.net/Edu_enth/article/details/112539685?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242Go语言中延迟函数defer充当着 try…catch 的重任,使用起来也非常简便,然而在实际应用中,很多gopher并没有真正搞明白defer、return和返回值之间的执行顺序,从而掉进坑中,今天我
2021-01-28 11:58:06 356
转载 Go语言基础:Interface
我们知道 Golang 中没有 class 的概念,而是通过 interface 类型转换支持在动态类型语言中常见的 鸭子类型 达到运行时多态的效果。官方文档 中对 Interface 是这样定义的:An interface type specifies a method set called its interface. A variable of interface type can store a value of any type with a method set that is any
2020-10-26 12:00:46 178
转载 理解Golang中的interface和interface{}
在面向对象编程中,可以这么说:“接口定义了对象的行为”,那么具体的实现行为就取决于对象了。在Go中,接口是一组方法签名(声明的是一组方法的集合)。当一个类型为接口中的所有方法提供定义时,它被称为实现该接口。它与oop非常相似。接口指定类型应具有的方法,类型决定如何实现这些方法。让我们来看看这个例子:Animal类型是一个接口,我们将定义一个Animal作为任何可以说话的东西。这是 Go 类型系统的核心概念:我们根据类型可以执行的操作而不是其所能容纳的数据类型来设计抽象。 1...
2020-10-26 11:58:46 687
转载 c/c++精选知识
随笔分类 - 面試微软最有价值专家分享校园招聘心得体会摘要:http://bbs.csdn.net/topics/390620351?page=1#post-395850952阅读全文posted @2013-10-22 11:46李sir阅读(535)评论(0)推荐(2)编辑题目摘要:查数据库30-40条记录Select Top 10 * from Tablename Where 关键字段 Not In (Select Top 30 关键字段 from TableN...
2020-09-13 00:00:48 228
转载 第一篇:typedef struct与struct的区别
1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef & 结构的问题当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含
2020-09-12 23:57:19 1002
转载 protobuf的C简单的代码
protobuf的C简单的代码例子https://blog.csdn.net/zimiao815/article/details/51336029https://blog.csdn.net/zimiao815/article/details/51336062https://blog.csdn.net/zimiao815/article/details/51336124https://blog.csdn.net/zimiao815/article/details/51336177https
2020-08-27 14:08:51 201
转载 C++定义指针数组,数组指针,指针数据
https://www.cnblogs.com/warmfrog/p/3695173.htmlC语言或C++中,数组元素全为指针的数组称为指针数组一维指针数组的定义为:类型名*数组标识符[数组长度]eg: int*ptr_array[10];以下内容来自百度百科链接http://baike.baidu.com/link?url=r6JRJbaleIw_69o-t8uO2vTF0r4oukf1bMMpp0sp9caXDbprF9LNZXwfsf4QovUKWloO2r6CJiNFNPN
2020-08-17 19:37:39 3326
转载 认真分析mmap:是什么 为什么 怎么用
转载https://www.cnblogs.com/huxiao-tee/p/4660352.htmlmmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不.
2020-08-04 23:53:48 639
转载 gdb调试的基本使用
转:https://www.cnblogs.com/HKUI/p/8955443.htmlGDB调试启动程序准备调试GDB yourpram或者先输入GDB然后输入file yourpram然后使用run或者r命令开始程序的执行,也可以使用 run parameter将参数传递给该程序参数列表 命令 命令缩写 命令说明 list l 显示多行源代码 .
2020-08-02 20:52:47 247
转载 必学必会的nginx配置location匹配顺序总结
location 匹配规则:一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用=前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用^~前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。实验案例测试"^~" 和 “~”,nginx配置如下。浏览器输入http://localhost/helloworld/test,返回601。如
2020-06-30 11:52:20 267
转载 Lua和C如何交互(一)
要理解Lua和C的交互,先要理解堆栈和全局表两个概念堆栈Lua和C/C++语言交互的主要方法是一个无处不在的虚拟栈,栈的特点是先进后出.Lua虚拟机在Lua中,Lua堆栈就是一个struct 堆栈索引的方式可是是正数也可以是负数 正数索引1永远表示栈底,负数索引-1永远表示栈顶全局表Lua的全局表可以想象成一个map哈希表结构,比如Lua有一个变量:name = "hello world"全局表中存放了name和hello world的对应关系, 可以通过name在
2020-06-04 13:40:08 215
原创 在mac上使用vscode创建第一个C++项目
准备工作:安装好vscode安装插件『C/C++』正式开始:首先是创建一个空的文件夹(比如文件夹为test),然后在其中新建一个.cpp文件(比如文件为hello.cpp)打开vscode打开test文件夹作为工作目录,接下来用三步配置好C++开发环境第一步:[⇧⌘P]打开命令模式,选择[C/Cpp: Edit Configurations(JSON)]命令,回车后会自动生成一个.vscode目录,目录下有一个c_cpp_properties.json文件,下面给出我的文件示例:{ .
2020-06-04 09:56:46 2480 2
原创 go环境搭建(MAC)
1.https://golang.google.cn/dl/ 下载 go1.13.8.darwin-amd64.tar.gz2. 执行 sudo tar -C /usr/local -xzf go1.13.8.darwin-amd64.tar.gz3. /etc/profile (for a system-wide installation),增加 export PATH=$PATH:/usr/local/go/bin source /etc/profile4. 测试是否安装...
2020-05-15 16:22:16 218
转载 分析redis key大小的几种方法
当redis被用作缓存时,有时我们希望了解key的大小分布,或者想知道哪些key占的空间比较大。本文提供了几种方法。一. bigKeys这是redis-cli自带的一个命令。对整个redis进行扫描,寻找较大的key。例:redis-cli -h b.redis -p 1959 --bigkeys输出# Scanning the entire keyspace to find biggest keys as well as# average sizes per key type.
2020-05-12 12:39:52 1314
原创 深入理解Linux TCP backlog
在linux 2.2以前,backlog大小包括了半连接状态和全连接状态两种队列大小。linux 2.2以后,分离为两个backlog来分别限制半连接SYN_RCVD状态的未完成连接队列大小跟全连接ESTABLISHED状态的已完成连接队列大小。互联网上常见的TCP SYN FLOOD恶意DOS攻击方式就是用/proc/sys/net/ipv4/tcp_max_syn_backlog来控制的,可参见《TCP洪水攻击(SYN Flood)的诊断和处理》。在使用listen函数时,内核会根据传入参数的bac
2020-05-11 10:29:24 450
转载 php-fpm 三种运行模式
php-fpm配置配置文件:php-fpm.conf开启慢日志功能的:slowlog = /usr/local/var/log/php-fpm.log.slowrequest_slowlog_timeout = 5s当某个请求的时间超过了5秒,就会在慢日志中记录相应的记录,注意上面的时间5s,不能忽略了单位,相应的还有其他单位,m分,h时php-fpm慢日志会记录下进程号,脚本名称,具体哪个文件哪行代码的哪个函数执行时间过长:[21-Nov-2016 10:30:38] [...
2020-05-11 10:12:53 1319
原创 排序-数组-N种方法
//实例[5,2,3,1,23413,333,2323,123412341,12323]classSolution{/***@paramInteger[]$nums*@returnInteger[]*///快速排序functionsortArray($nums){$len...
2020-04-29 20:17:51 150
原创 Mysql知识梳理-解决幻读
解决幻读 https://time.geekbang.org/column/article/75659透彻解读mysql的可重复读、幻读及实现原理 https://blog.csdn.net/sanyuesan0000/article/details/90235335我总结的加锁规则里面,包含了两个“原则”、两个“优化”和一个“bug”。原则 1:加锁的基本单位是 next-...
2020-04-28 22:54:10 168
原创 复习基础排序算法(Java)
这道题给出了输入数组里每个元素的值的范围 -50000 <= A[i] <= 50000,为此写一个「非稳定」的「计数排序」就能得到一个不错的评分。这里和大家分享一下我学习的「基础排序算法」的知识点。我从零基础到真正入门算法,就是从学习排序算法开始的,所以「排序算法」是我的初恋,差不多 3 年了。排序算法作为一项需求,它足够简单,是学习基础算法思想(例如:分治算法、减治思想、递归写...
2020-04-28 12:47:03 271
原创 二叉树遍历——深度优先遍历、广度优先遍历0000
二叉树遍历简介【备注】:二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:先序遍历:对任一子树,...
2020-04-28 12:44:13 186
转载 大话 Select、Poll、Epoll
提到select、poll、epoll相信大家都耳熟能详了,三个都是IO多路复用的机制,可以监视多个描述符的读/写等事件,一旦某个描述符就绪(一般是读或者写事件发生了),就能够将发生的事件通知给关心的应用程序去处理该事件。本质上,select、poll、epoll本质上都是同步I/O,相信大家都读过Richard Stevens的经典书籍UNP(UNIX:registered: Network P...
2020-04-27 10:32:31 162
转载 Redis设计与实现(一~五整合版)
一前言项目中用到了redis,但用到的都是最最基本的功能,比如简单的slave机制,数据结构只使用了字符串。但是一直听说redis是一个很牛的开源项目,很多公司都在用。于是我就比较奇怪,这玩意不就和 memcache 差不多吗?仅仅是因为memcache是内存级别的,没有持久化功能。而redis支持持久化?难道这就是它的必杀技?带着这个疑问,我在网上搜了一圈。发现有个叫做huangz的...
2020-04-25 13:51:38 680
原创 redis——为什么选择了跳表而不是红黑树、二叉树
我们知道,节点插入时随机出一个层数,仅仅依靠一个简单的随机数操作而构建出来的多层链表结构,能保证它有一个良好的查找性能吗?为了回答这个疑问,我们需要分析skiplist的统计性能。在分析之前,我们还需要着重指出的是,执行插入操作时计算随机数的过程,是一个很关键的过程,它对skiplist的统计特性有着很重要的影响。这并不是一个普通的服从均匀分布的随机数,它的计算过程如下:首先,每个节点肯定...
2020-04-22 10:32:10 1025
原创 Clickhouse创建分布式表以及表引擎介绍
分布式怎么玩使用ReplicatedMergeTree和Distributed引擎构建我们的分布式表,先看一个常用的表结构: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546...
2020-04-19 22:08:26 4379
原创 Clickhouse创建分布式表以及表引擎介绍
分布式怎么玩使用ReplicatedMergeTree和Distributed引擎构建我们的分布式表,先看一个常用的表结构: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546...
2020-04-19 21:59:11 3418
原创 趣谈网络协议
06 | 如何实现RPC远程服务调用? 今天我给你讲解了服务调用需要解决的几个问题,其中你需要掌握:通信框架。它主要解决客户端和服务端如何建立连接、管理连接以及服务端如何处理请求的问题。通信协议。它主要解决客户端和服务端采用哪种数据传输协议的问题。序列化和反序列化。它主要解决客户端和服务端采用哪种数据编解码的问题。这三个部分就组成了一个完整的 RPC 调用框架,通信框架...
2020-04-17 12:40:24 616
转载 想系统学习GO语言(Golang)
作者:飞雪无情链接:https://www.zhihu.com/question/30461290/answer/210414739来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。学习任何一门语言,都要学习好基础,把基础打牢,那些框架对你来说都是工具,你自己的基础好,懂得了他们的原理,自己就可以创造更优秀的框架。基础推荐官方文档,没有什么比这个更清晰...
2020-04-16 15:16:57 272
转载 Epoll原理解析
从事服务端开发,少不了要接触网络编程。Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?网上虽然也有不少讲解 Epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。...
2020-04-06 19:51:29 242
原创 IP数据包长度
首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} ----------------------------------------------...
2020-04-05 12:09:20 8180
原创 epoll原理
文章目录一、epoll原理详解二、epoll的两种触发模式三、epoll反应堆模型 设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作...
2020-04-04 19:27:44 223
原创 设计模式之工厂模式之抽象工厂(php实现)
抽象工厂模式:先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。图中的BmwCar和BenzCar就是两个产品树(产品等级结构);而如图所示的BenzSportsCar和BmwSportsCar就是一个产品族。他们都可以放到跑车家族中,因此功能有所关联。同理BmwBussinessCar和BenzBusinessCar也是一个产品族。可以这么说,它和工厂方法模式...
2020-03-21 21:34:06 179
转载 PHP设计模式之抽象工厂模式
PHP设计模式之抽象工厂模式工厂模式系列中的重头戏来了,没错,那正是传闻中的抽象工厂模式。初次听到这个名字的时候你有什么感觉?反正我是感觉这货应该是非常高大上的,毕竟包含着“抽象”两个字。话说这两个字在开发中真的是有点高大上的感觉,一带上抽象两字就好像哪哪都很厉害了呢。不过,抽象工厂也确实可以说是工厂模式的大哥大。Gof类图及解释其实只要理解了工厂方法模式,就很容易明白抽象工厂模式。怎...
2020-03-21 21:31:30 158
原创 设计模式之工厂模式之工厂方法(php实现)
/** * 工厂方法 * 使用开闭原则来分析下工厂方法模式。当有新的产品产生时,只要按照抽象产品角色、抽象工厂角色提供的合同来生成, * 那么就可以被客户使用,而不必去修改任何已有的代码。(即当有新产品时,只要创建并基础抽象产品;新建具体工厂继承抽象工厂; * 而不用修改任何一个类)工厂方法模式是完全符合开闭原则的! */(1)IShape.class.php(抽象接口,用于...
2020-03-21 15:50:07 130 1
转载 PHP设计模式之工厂方法模式
PHP设计模式之工厂方法模式上回说到,简单工厂不属于GoF的二十三种设计模式,这回可就来真家伙了,大名顶顶的工厂方法模式前来报道!GoF类图解释工厂方法模式对比简单工厂来说,最核心的一点,其实就是将实现推迟到子类。怎么理解呢?我们可以将上回的简单工厂当做父类,然后有一堆子类去继承它。createProduct()这个方法在父类中也变成一个抽象方法。然后所有的子类去实现这个方法,不再需要...
2020-03-21 15:48:42 157
转载 PHP设计模式之组合模式
PHP设计模式之组合模式互联网公司流行扁平化管理,也就是管理层级尽量少于或者不超过三层,作为一个底层的码农,你的CEO和你的职级也就相差3层以内。但是很多传统企业,则会有非常深的层级关系,从数据结构看,这种按职能进行分组的组织架构非常像一颗树。而我们今天介绍的组合模式的作用就和这个企业组织架构层级的模式非常类似。Gof类图及解释GoF定义:将对象组合成树形结构以表示“部分-整体”的层次...
2020-03-21 14:00:28 166
原创 如何限流
限制单位时间的调用量AtomicLong#incrementAndGet()分布式限流很多时候我需要有一个全局的限速,例如用户注册时,让用户输入手机验证码,为了防止短信接口不被恶意频繁调用,一般会限制用户每分钟获取验证码频率,例如一分钟不能超过5次。此时,我们可以通过Redis的来实现,伪代码如下:phoneNum = "186xxxxxx";key = "verifyCod...
2020-03-20 11:55:09 211
vue-devtools(chrome vue 调试插件) mac windows 前端开发
2018-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人