自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 问答 (1)
  • 收藏
  • 关注

原创 golang多次读取http request body问题分析

缓冲区b的初始大小只有512个字节,如果缓冲区满(len(b)==cap(b)),则向b添加一个0元素触发切片的扩容机制,并去掉添加的"0"元素([:len(b)]),之后一直读取数据,可能缓冲区又会满,会继续扩容的操作,直到读取到EOF。从对ReadAll()方法的分析可以得知,使用ReadAll函数处理数据时,内存消耗随着数据的增大而增加,处理较大数据时,会触发多次扩容机制,需要分配大量内存。出于好奇,我问了gpt官方库中ioutil.ReadAll()方法能否多次读取Request.Body。

2024-01-27 15:50:19 1079

原创 golang踩坑记录(持续更新)

当对m添加元素时会导致运行时错误,因为指针指向的仍然是nil,并且无法访问map的值。上述代码造成panic,因为p是一个空指针,并且用成员变量进行追加操作。这个代码会编译通过,但是它实际上只是为map分配了一个指向nil的指针。这将会分配并初始化一个空的map,可以向其中添加元素并进行其他操作。

2023-11-24 15:25:09 403

原创 istio基本概念、架构、主要功能和原理

传统单体应用的缺点:持续部署困难,单体应用的某一个组件更新,需要重新部署整个应用,一旦部署失败,造成整个应用宕机。而微服务架构,将单体应用拆分为多个微服务,各微服务之间通过网络进行通信,解决上面的问题。业务逻辑:定义如何处理应用业务逻辑网络功能:负责服务间的通信,如超时重试,服务发现,负载均衡等但带来一个挑战:如何标准化管理各个微服务,如何保证微服务间的可靠通信,如何确保可用性。

2023-11-11 14:26:17 274 1

原创 自定义scheduler plugin扩展开发

有两种方式可以实现自定义调度default scheduler recording:配置修改,直接在k8s默认scheduler配置基础上进行添加,然后重新编译kube-schedulerscheduler framework:插件实现,源码层面实现plugin,重新编译kube-scheduler。

2023-10-26 19:21:36 112

原创 C++内存管理

C++内存管理内存分配层面Primitives四原语实例newnew expressionarray newplacement new改变内存分配机制内存分配层面学习内存管理主要是为了提高使用内存的效率和速度一般而言,C++应用程序使用容器或使用new来申请内存,它们的底层实现都是malloc,很少直接与操作系统API打交道Primitives空间配置器allocator严格来说不算重载,应自由设计来搭配容器四原语实例operator new作用域是在全局的使用空间配置器allocat

2021-05-04 16:26:31 135

原创 C++11新特性

C++11新特性nullptr类型推导autodecltype初始化列表右值引用Move SementicsPerfect Forwarding智能指针Unique_ptrShared_ptrWeak_ptr匿名函数新增容器arrayforward_listtuple正则表达式线程其他constexpr区间迭代模板增强面向对象增强强类型枚举被弃用的特性C++17C++ 1x 不仅仅增强了 C++ 语言自身的可用性,auto 关键字语义的修改使得我们更加有信心来操控极度复杂的模板类型。同时还对语言运行期进行

2021-04-28 17:16:37 195

原创 Qt教程

Qt教程基本介绍初始程序创建按钮信号和槽信号和槽连接函数信号和槽连接规则自定义槽切换窗口其他基本介绍以下是介绍初始化代码的含义,如果做一个项目,新建一个空项目开始写。初始程序新建Application (Qt) 项目,初始main.cpp文件代码如下:#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); //只有一个应用程序 MyWidget w;

2021-04-24 00:39:27 276

原创 计算机网络笔记-5(HTTP与HTTPS)

计算机网络笔记-5(HTTP与HTTPS)HTTP报文HTTP请求报文HTTP响应报文HTTP1.0与HTTP1.1HTTP2.0HTTPScookie与session区别cookie工作原理session工作原理区别HTTP报文HTTP请求报文一个HTTP请求报文首部(请求行和首部行)的例子:GET http://www.baidu.com/index.html HTTP/1.0 //请求行User-Agent: Wget/1.12 (linux-gnu) //表示客户端使用的程

2021-04-14 22:03:23 247

原创 Docker笔记1-基本概念

Docker笔记1-基本概念架构镜像镜像加载原理unionfs镜像加载原理镜像常用命令容器常用命令运行容器查看容器启动和停止容器删除和退出容器其他容器命令查看日志查看进程信息架构镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样

2021-03-29 02:02:43 179 1

原创 Go语言笔记1-基本数据类型和语法

Go语言笔记特点主要特性语言用途执行程序程序基本组成关于包数据类型布尔类型数字类型字符串类型派生类型语法声明变量多变量声明值类型和引用类型空白标识符常量常量定义iota运算符位运算符赋值运算符其他运算符条件语句循环语句初学笔记,有误请多见谅,随着学习的深入会丰富和更新特点简洁、快速、安全并行、有趣、开源内存管理、数组安全、编译迅速主要特性自动垃圾回收更丰富的内置类型函数多返回值错误处理匿名函数和闭包类型和接口并发编程反射语言交互性语言用途一门应用于搭载 Web 服务器,存储

2021-03-28 00:56:53 98

原创 Redis笔记2-单机数据库

Redis笔记2-单机数据库数据库服务器中的数据库切换数据库数据库键空间键空间操作键生存/过期时间设置过期时间保存过期时间RDB持久化AOF持久化事件客户端服务器数据库介绍服务器保存数据库的方法,客户端切换数据库的方法,数据库保存键值对的方法,以及对数据库的增删改查服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redisServer结构的db数组中,db数组的每一项都是一个redisDb结构,代表一个数据库struct redisServer{ redisDb *db; //一

2021-03-26 13:43:03 216

原创 Redis笔记1-数据结构

Redis笔记1-数据结构1、简单动态字符串SDS定义SDS优点重用C库函数常数复杂度获取字符串长度杜绝缓冲区溢出减少修改字符串时内存重分配次数二进制安全SDS API2、链表链表和链表节点实现特性总结链表和链表节点API3、字典4、跳表5、集合6、压缩列表7、对象1、简单动态字符串Redis不直接使用C传统的字符串表示,构建了简单动态字符串(Simple Dynamic String, SDS)的抽象类型,并将SDS作为Redis的默认字符串表示SDS定义struct sdshdr{ int

2021-03-26 12:55:27 142

原创 网络编程-五种IO模型

网络编程-五种IO模型阻塞IO非阻塞IOIO多路复用select主旨思想select APIselect描述补充位操作API(宏)缺点pollAPIepoll(待补充)wait函数两种工作模式水平触发LT边缘触发ET信号驱动异步(待补充)阻塞IO阻塞IO即Blocking IO针对阻塞IO执行的系统调用可能因为无法立即完成而被操作系统挂起,直到等待的事件发生。系统调用某个函数,一直检查这个函数有没有返回,必须等返回才能进行下一步动作。socket基础API中,可能被阻塞的系统调用包括accept,

2021-03-13 23:24:14 427

原创 网络编程-socket通信过程

网络编程-socket通信过程通信流程服务器端客户端通信流程图套接字函数创建 socket()绑定/命名 bind()监听 listen()接受连接 accept()发起连接 connect()关闭连接 close()通信流程TCP/socket通信流程分为客户端和服务器,下面分别介绍服务器端服务器端是被动接受连接的角色,主要有以下步骤创建一个用于监听的套接字 socket()-监听:监听有客户端的连接-套接字:相当于文件描述符,该套接字只用来监听将监听文件描述符和本地的IP和端口绑定(

2021-03-01 20:13:09 672

原创 网络编程-socket相关概念

网络编程-socket概念字节序字节序概念字节序转换函数socket介绍socket地址通用socket地址专用socket地址字节序了解网络编程需要先了解计算机通信中字节的存储顺序字节序概念考虑32位机,CPU累加器一次能装载4字节。这4字节在内存的排列顺序影响被累加器装载成的整数值。字节序分为大端字节序(Big-Endian)和小端字节序(Little-Endian)。发送端总是要把数据转换位大端字节序发送大端字节序:指整数的高位字节存储在内存的低地址处,也称网络字节序小端字节序:指整数

2021-03-01 17:13:33 141

原创 算法笔记-动态规划-1

算法笔记-动态规划-1(01背包)01背包问题介绍问题转化求解方法回溯法动态规划第一步确定dp数组含义第二步确定递推公式第三步初始化第四步确定遍历顺序第五步推导dp数组优化方法01背包问题介绍标准的01背包问题是指,有n(int型)个物品和最多装重量W(int型)的背包。weight数组表示物品的重量,即weight[i]表示第i个物品的重量;value数组表示物品的价值,即value[i]表示第i个物品的价值。问把哪些物品装入背包使得物品价值总和最大,每个物品只能装一次。举例1,假设背包重量为4,

2021-02-26 16:36:21 242

原创 计算机网络笔记-4(TCP协议详解)

计算机网络笔记-4(TCP协议详解)TCP头部TCP三次握手“三次”握手的原因半连接队列ISN携带数据SYN攻击TCP四次挥手“四次”挥手的原因TIME_WAIT状态等待2MSL意义TCP状态转移过程TCP可靠性序列号、确认应答、超时重传窗口控制与高速重发控制/快速重传(重复确认应答)拥塞控制BBR算法TCP头部TCP头部结构如图所示16位端口号, 存着源和目的端口。进行TCP通信时,客户端使用系统自动选择的临时端口号,服务器使用知名服务端口号(所有知名服务使用的端口号都定义在/etc/serv

2021-02-18 17:53:17 223

原创 计算机网络笔记-3

计算机网络笔记-3防火墙代理防火墙包过滤防火墙DMZ访问规则DMZ与端口映射的区别NATNAT内主机发起TCP连接过程网关和路由网关网关的实质网关的IP网关的功能默认网关路由路由的理解路由的功能区别ICMP防火墙常用两种防火墙:代理防火墙和包过滤防火墙主要区别:所操作的协议栈层次及由此决定的IP地址和端口号的使用代理防火墙代理防火墙是一个运行多应用层网关的主机,能在应用层中继两个连接之间的流量。终止在TCP和UDP之间的连接对外网接口分配一个全局路由的IP,对内网接口分配一个私有的IP代理防火

2021-02-18 16:04:21 499

原创 计算机网络笔记-2

计算机网络笔记IPv41. IPv4报文头部介绍2. IPv4五类地址3. NATIPv6IPv6地址表示IPv6地址分类IPv6特殊地址IPv6数据包IPv6协议IPv4与IPv6的比较路由转发直接交付与间接交付路由转发过程IPv41. IPv4报文头部介绍解释:版本表示IP数据报的版本号,Internet头部长度表示32位字的数量,DS是区分服务字段,ECN是显式拥塞通知字段,总长度16位说明一个IPv4数据包最大为2^16字节以太网最小有效载荷为46字节,主机不接收大于576字节的IP包

2021-01-19 17:45:22 188

原创 计算机网络笔记-1

计算机网络笔记ARP1.ARP基本概念介绍2.MAC地址学习过程3.MAC地址欺骗IGMPTCP/UDP区别ARP1.ARP基本概念介绍ARP:地址解析协议地址解析是发现两个地址之间的映射关系的过程ARP提供从网络层地址到相关硬件地址的动态映射2.MAC地址学习过程ARP地址解析是发生在TCP/IP协议栈从上层到下层的封装过程中。(第三层封装IP,第二层封装MAC)如主机A与主机B通信过程:1、根据主机A上的路由表内容,确定主机B的IP,A在本地ARP缓存中检查是否有对应的MAC地址2、

2021-01-13 18:17:21 210

原创 解决Julia安装库出现invalid git HEAD(reference ‘refs/heads/master‘ not found)问题

目录问题原因尝试解决的办法解决办法总结问题原因出现这个问题的原因是下载包的过程中掉线或者关闭程序等中途终止的行为。本人是在Linux64系统下,用1.5.3版本的julia下载github上的一个仓库,https://github.com/sisl/NeuralVerification.jl,直接在REPL下载包模式下add这个地址(@v1.5) pkg> add /home/test3/NeuralVerification.jl没等下载完断网了。再次下载的时候就出现题目所述的问题:

2020-12-17 20:58:56 1799

原创 linux下安装atom和julia

一台电脑跑实验有点慢,于是找到另一台装有linux的电脑,也安装了Atom和julia来跑实验,安装过程记录如下目录安装julia安装Atom在Atom中配置julia首先安装好Julia,再安装编辑器atom安装julia下载1.5.3版本 64位系统julia1.5.3解压tar -zxvf julia-1.5.3-linux-x86_64.tar.gz查看文件路径linux使用pwd命令可以查看当前目录的路径解压后julia路径在/data/julia-1.5.3/bin

2020-12-09 23:16:10 271

空空如也

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

TA关注的人

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