自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(320)
  • 收藏
  • 关注

原创 宅家学习,如何进行Kubernetes Ingress控制器的技术选型?

导语:在Kubernetes的实践、部署中,为了解决 Pod 迁移、Node Pod 端口、域名动态分配等问题,需要开发人员选择合适的 Ingress 解决方案。面对市场上众多Ingress产品,开发者该如何分辨它们的优缺点?又该如何结合自身的技术栈选择合适的技术方案呢?文章目录名词解释Kubernetes现状Nginx Ingress 的缺点Ingress选型经验1.基本特点2.基础软件3...

2020-04-15 16:18:11 785

原创 git常见问题整理

文章目录问题1、什么是 fork?fork、branch和clone之间有什么区别?问题2、“pull request”和“branch”之间有什么区别?问题3、“git pull”和“git fetch”之间有什么区别?问题4、如在 Git 恢复先前的提交?问题5、什么是“git cherry-pick”?问题6、Forking 工作流程的优点问题7、Git 中 HEAD、工作树和索引之间的区别...

2019-06-25 16:49:48 329

原创 grep常用命令整理

grep常用命令整理grep命令简介grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep家族grep家族包括grep、egrep和fgrep:egrep是grep的扩展,支持更多的re元字符;fgrep就是fixed grep或fast grep。工作机制简要介绍grep在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所...

2019-05-10 10:15:19 3297

原创 从nginx热更新聊一聊Golang中的热更新(下)

从nginx热更新聊一聊Golang中的热更新(下)静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本?在上一篇介绍热升级的时候时候,讲到了通过信号通知nginx进行热升级。我们在这一篇中介绍下平滑重启go http server。目录结构热更新热更新目标:1、正在处理中的连接/服务/请求不能立即中断,需要继续提供服务2、socket对用户来说...

2018-11-07 01:09:36 7653 3

原创 从nginx热更新聊一聊Golang中的服务器热更新(上)

#从nginx热更新聊一聊C++/Golang中的热更新(上)静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本?最近花了点时间看了下nginx热更新代码流程,想了下结合之前的经验一并总结下热更新服务程序热更新这个问题在层7网关中尤其严重,网关中承载着大量的请求,包括HTTP/HTTPS短连接、HTTP/HTTPS长连接、甚至是websocket这种超长...

2018-10-29 21:20:09 3435

原创 why your golang sucks:每个人都会踩的go的五十个坑(21-30)

why your golang sucks:每个人都会踩的go的五十个坑(21-30) 1.本文是我在翻GO文章时发现的,译者主要完成了1-22条的翻译(有不少问题。),没了后续,本系列文章将会先转载并修订他最初的翻译,然后完成第23-50条的翻译 2.由于本篇文章最初写自2015年,而GO也在这两年间发生了较大变化,以下的50个坑将会重新实验修正,将会与原文稍微有些区别 ...

2018-06-24 17:31:21 490 1

原创 Why your golang sucks:每个人都会踩的GO的五十个坑 (11-20)

Why your golang sucks:每个人都会踩的GO的五十个坑 (11-20) 本文翻译自 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs Go语言是一个简单却蕴含深意的语言。但是,即便号称是最简单的C语言,都能总结出一本《C陷阱与缺陷》,更何况Go语言呢。Go语言中的许多坑其实

2018-01-02 12:06:28 713

原创 Why your golang sucks:每个人都会踩的GO的五十个坑 (1-10)

Why your golang sucks:每个人都会踩的GO的五十个坑 (1-10) 1.本文是我在翻GO文章时发现的,译者主要完成了1-22条的翻译(有不少问题。),没了后续,本系列文章将会先转载并修订他最初的翻译,然后完成第23-50条的翻译 2.由于本篇文章最初写自2015年,而GO也在这两年间发生了较大变化,以下的50个坑将会重新实验修正,将会与原文稍微有些区别 3

2017-12-24 20:08:30 1008

原创 Go语言:解决数据库中null值的问题

Go语言:解决数据库中null值的问题 本文主要介绍如何使用go语言database/sql库从数据库中读取null值的问题,以及如何向数据库中插入null值。本文在这里使用的是sql.NullString, sql.NullInt64, sql.NullFloat64等结构体,为了方便书写,它们的泛指我会使用sql.Null***来表示要点从数据库读取可能为null值得值时,可以选择使用s

2017-12-12 12:50:38 53238 5

原创 go实现业务回滚(defer妙用之一)

go实现业务回滚(defer妙用之一) 最近在用GO重写本组的OSS系统,需要实现业务的回滚功能(即一个流程中,先与A进行交互,然后再与B进行交互,如果B失败了,回滚与A交互的逻辑这样)。另外,在初始化的时候也经常需要在任何一个模块初始化失败的时候回滚其他模块太长不看版defer是延时调用函数,在函数退出之时会进行调用,而且defer函数的调用顺序也是先调用的后执行,故defer其功能上就比较

2017-11-15 17:08:20 5778 1

原创 golang使用protobuf简易教程

golang使用protobuf简易教程google公司发布的一套开源编码规则,基于二进制流的序列化传输,可以转换成多种编程语言,几乎涵盖了市面上所有的主流编程语言,当然也包括Go1、安装protobuf安装下载protoc,很多种安装方法,下载地址https://github.com/google/protobuf/releases安装下载proto的go插件,命令是go get github

2017-11-02 15:08:53 15267

原创 记signal和sigaction的一个区别

记signal和sigaction的一个区别 如果需要用相同的方式处理信号多次出现,且信号容易多次出现,则建议使用sigaction函数;若可以保证信号长时间内只出现并只需要处理一次,则可以使用signal函数。signal函数signal函数每次设置具体的信号处理函数(非SIG_IGN)只能生效一次,每次在进程响应处理信号时,随即将信号处理函数恢复为默认处理方式。所以如果想多次相同方式处理某

2017-06-27 23:09:01 2756 1

原创 使用go channel实现一个简单的信号量

使用go channel实现一个简单的信号量 测试环境:mac什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。介绍信号量的话,那么肯定不能不介绍P-V操作原语P-V操作原语P操作原语:semaphore 减1若semap

2017-04-26 01:21:26 3136

原创 浅析TCP连接过程中server异常情况处理

#浅析TCP连接过程中server异常处理 基础环境:腾讯云ubuntu虚拟机 前置基础:对TCP连接有一个基本认识,能写进行简单socket编程先简单介绍一下TCP编程流程TCP简易编程流程1.TCP服务器端编程流程如下:创建套接字socket; 绑定套接字bind; 设置套接字为监听模式,进入被动接受连接状态listen; 接受请求,建立连接accpet; 读写数据re

2017-04-24 23:59:34 4981

原创 使用VS CODE+PlantUML高效画图

使用VS CODE+PlantUML高效画图 自从发现了plantuml写脚本画图的方式之后,爱上了画图~ 环境:MAC前言本文多数内容引用自官网文档和其他人的教程,并非本人原创,也谈不上翻译,只是把自己 理解的东西用中文写出来。什么是PLANTUMLPlantUML是一个快速创建UML图形的组件,官网上之所以称它是一个组件,我想主要是因为多数情况下我们都是在Eclipse、NetB

2017-04-13 23:05:14 62956 3

原创 无线网中一些约定俗成的时延估量

无线网中一些约定俗成的时延估量 作为一些性能、时延估量参考一、在传统LTE网络中的切换时延是50~150ms。所谓切换,就是指当移动台在通话过程中从一个基站覆盖区移动到另一个基站覆盖区,或者由于外界干扰而造成通话质量下降时,必须改变原有的话音信道而转接到一条新的空闲话音信道上去,以继续保持通话的过程。所以你在高铁上玩网络对战游戏,会发现网络时好时坏(当然影响的不止这一个因素)二、传输网络每10

2017-04-09 17:08:27 2009

原创 linux内核编程(hello world示例程序)

linux内核编程(hello world) Linux可加载内核模块是 Linux 内核的最重要创新之一。它们提供了可伸缩的、动态的内核。其它开发者可以不用重新编译整个内核便可以开发内核层的程序,极大方便了驱动程序等的开发速度。 本系列文章主要是记录个人从hello world开始,通过学习linux内核基本编程操作,再对ipvs负载均衡器源码进行初步学习分析;最后,基于netfil

2017-04-07 00:46:54 12115

原创 操作内存、磁盘访问所需时间笔记

操作内存、磁盘访问所需时间笔记一次内存访问、SSD 硬盘访问和SATA 硬盘随机访问的时间分别约是几十纳秒,几十微秒,几十毫秒。2.访问内存一次是100个时钟周期以上, 访问一次普通的硬盘在几十万盗数百万个时钟周期, ssd速度是普通硬盘的十倍了, 访问一次L1 cache大概是十个时钟周期之内, 访问一次L2 cache在20个时钟周期之内, 访问一次L3 cache在40个时钟周期

2017-03-22 01:28:39 5146

原创 云计算相关术语整理

云计算相关术语整理 术语 英文 中文 相关解释 PaaS Platform-as-a-Service 平台即服务 将软件研发的平台(计世资讯定义为业务基础平台)作为一种服务,PaaS所提供的服务与其他的服务最根本的区别是PaaS提供的是一个基础平台,而不是某种应用。譬如亚马逊云提供的数据库服务 IaaS Infrastructure-as-a-service

2017-02-21 00:37:17 1343

原创 为什么要使用docker

为什么要使用docker一个简单的例子假设用户/开发者试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来搭建一个网站。按照传统的做法,首先,需要安装Apache /MySQL/PHP以及各自依赖的运行环境之后需要对他们进行配置(包括创建合适的用户、配置参数)经过大量的配置之后,还需要对其进行功能测试,查看其功能是否正常,如果不正常,则意味着还需要花更多的时间以及潜在着不可

2017-01-07 02:12:01 1124

原创 24点游戏及其算法

24点游戏及其算法1.问题描述24点是棋牌类益智游戏,要求结果等于二十四,一起来玩玩吧!这个游戏用扑克牌更容易来开展。拿一副牌,抽去大小王后(初练也可以把J/Q/K也拿去),剩下1~10这40张牌(以下用1代替A)。任意抽取4张牌(称为牌组),用加、减、乘、除(可加括号)把牌面上的数算成24。每张牌必须且只能用一次。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24这里对问题进行扩展,可

2016-08-16 00:09:50 11205 1

转载 追mm和设计模式:趣解23种设计模式

追MM和设计模式:趣解23种设计模式创建型模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要

2016-06-19 17:49:27 550

原创 容器就像骑摩托

容器就像骑摩托容器就像骑摩托,最好就是一辆车一个人,一辆车拉两个人都不让你上高速,当前你非得开挂装上7、8个人我也不能说什么;虚拟机就像开汽车,一辆车老婆孩子一锅烩,还能拉个顺风车。容器就像骑摩托,50块钱油我150排量能跑400多公里;虚拟机就像开汽车,400多公里不带人都得花几百块钱加油。容器就像骑摩托,再好的车也是肉包铁,随时小心碰着别人;虚拟机就像开汽车,再烂也能铁包肉。容器就像骑摩托,不是

2016-05-27 23:23:04 490

原创 go简易tcp socket客户端和服务器

go简易tcp socket客户端和服务器1.Socket编程以前使用Socket编程时,一般是如下步骤建立socket,socket绑定socket,bind监听,listen接受连接,accept接受/发送,recv/sendgo tcp版真的很省事 服务端:就是Listen、Accept、Read/Write 客户端就是Dial、Read/Write直接上代码2.Ser

2016-04-02 02:02:53 11479

原创 go简易udp客户端和服务器

go简易udp socket客户端和服务器1.Socket编程以前使用Socket编程时,一般是如下步骤建立socket,socket绑定socket,bind监听,listen接受连接,accept接受/发送,recv/sendGo语言对其进行了抽象和封装,刚开始接触有可能不太适应(譬如我第一天用的时候觉得API好难找……建议参考文档),后来发现用起来很爽简单来说,客户端省去了很多!客

2016-04-01 00:48:55 17803 1

原创 cjson使用教程

cjson使用教程本文简单介绍cJSON后,说明读取json文件、解析json文件、生成json文件代码。json是什么?json 指的是 JavaScript 对象表示法(JavaScript Object Notation)json 是轻量级的文本数据交换格式json 独立于语言 json 具有自我描述性,更易理解json 使用 JavaScript 语法来描述数据对象,但是 json

2016-03-23 09:56:44 2968

原创 json简易语法

json简易语法 json我觉得很多人用,所以就仅仅介绍一下简单的语法,以供理解json是什么?json 指的是 JavaScript 对象表示法(JavaScript Object Notation)json 是轻量级的文本数据交换格式json 独立于语言 json 具有自我描述性,更易理解json 使用 JavaScript 语法来描述数据对象,但是 json 仍然独立于语言和平

2016-03-22 20:12:53 851

原创 perf使用教程

perf使用教程Perf简介Perf是Linux kernel中的系统性能优化工具,perf基本原理的话是在CPU的PMU register中Get/Set performance counters来获得诸如instructions executed,cache-missed suffered,branches mispredicted等信息。 perf本身的工具有很多,这里主要介绍个人在查询程

2016-02-23 16:48:06 33598 4

原创 尾递归

尾递归如果要说尾递归的话,那么首先应该先说一下递归函数。递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但是循环的逻辑不如递归清晰易理解。在这里我们假定读者已经了解递归函数的基本概念,便不作过多赘述。使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧。由于栈的大小不是

2016-01-28 23:57:18 446

转载 Linux下connect()函数的错误代码对应含义

Linux下connect()函数的错误代码对应含义windows和linux下的connect系统接口有自己的一套返回码以及返回含义LinuxEBADF:参数socket未指定一个合法的描述符ENOTSOCK  参数socket未指定一个套接字描述符EAFNOSUPPORT  远程端点指定的地址族不能与这种类型的套接字一起使用EADDRNOTAVAIL:指定的地址不可用EISCONN:套接字已被连接ETIMEDOUT:(只用于TCP)协议因未成功建立一个连接而超时E

2020-05-20 16:17:43 2181

原创 跨域资源共享CORS的那些事(二)

#跨域的那些事(二)最近在为高性能开源API网关apisix写跨域插件,发现该功能对协议要求要比较熟悉,借此机会重新复习下跨域协议,以及简要写下跨域功能的设计文章目录定义哪些请求会使用到CORS?跨域请求详解a、浏览器端支持情况b、两种跨域请求c、简单请求d、预检请求e、HTTP跨域请求标识f、HTTP跨域响应标识参考文档定义跨来源资源共享(Cross-Origin Resource ...

2019-09-10 12:44:46 591

原创 跨域资源共享CORS的那些事(一)

跨域资源共享CORS的那些事(一)最近在为高性能开源API网关apisix写跨域插件,发现该功能对协议要求要比较熟悉,借此机会重新复习下跨域协议,以及简要写下跨域功能的设计什么是跨域?同源政策在讲跨域之前,反过来想,什么时候是不跨域,也就是所谓的什么是同源?1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。最初,它的含义是指,A网页设置的 C...

2019-09-10 12:35:55 813

原创 linux向文件末尾追加内容

Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。比如echo "It is a test"It is a test它也可以通过与>符号配合将内容写入文件echo 'add content'>>/home/data/test.sh>> 是追加 是在文件后追加内容echo 'add content'>/home...

2019-09-09 21:40:23 15207

原创 golang中string和byte[]互相转换

string 不能直接和byte数组转换string可以和byte的切片转换string 转为[]bytevar str string = "test"var data []byte = []byte(str)byte转为stringvar data [10]byte byte[0] = 'T'byte[1] = 'E'var str string = string(dat...

2019-07-16 01:09:32 3547

原创 linux修改ssh默认22端口的方法

为什么要修改linux端口?其实这就是一个简单的安全小策略,大家都知道ssh默认端口是22,这样把22这个知名端口修改成别的端口,这样攻击方在不知道具体端口的情况下,发起攻击需要一定时间。安全是靠无数的细节堆出来的,这个只是其中一个很小的点如何修改ssh端口?修改ssh配置文件,修改端口服务,然后重启ssh服务vim /etc/ssh/sshd_config找到#Port 22,增加一...

2019-07-11 13:27:07 830

翻译 如何查看 linux 内核源代码

Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,我认为,基本要求是:1、操作系统的基本知识;2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linu...

2019-06-30 23:47:00 2199

原创 Linux环境下普通用户使用sudo不再需要敲密码的配置方法

sudo是什么sudo是Linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部root命令的一个工具。Linux系统下,为了安全,一般来说我们操作都是在普通用户下操作,但是有时候普通用户需要使用root权限,比如在安装软件的时候。现在我这里在执行某脚本的时候,既要求部分命令使用root权限执行,又需要在普通用户下执行,考虑到sudo的时候不知如何解决输密码的问题,故选择在Linux...

2019-06-12 17:20:21 3381

转载 Linux 操作系统错误(Linux System Errors)中英文对照

Linux System Errors 中英文对照http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.htmlOS error code 0: Success操作系统错误代码0:成功OS error code 1: Operation not per...

2019-04-02 16:50:25 3354

原创 Git忽略文件的原则

1、忽略操作系统自动生成的文件,比如缩略图等2、忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件,C/C++的.o文件等;3、忽略你自己的带有敏感信息的配置文件。...

2019-03-22 11:25:20 217

转载 关于“expected ';', ',' or ')' before '&' token”错误

在GCC编译器上:出现该错误的主要原因是:在C语言里没有C++所谓的“按引用传递”,例如C++可以写这样一个函数:void func(int &a) { //函数功能 } 在C语言无法这样使用,所以需要改为地址引用:void func(int *a) { //函数功能 } 具体调用该函数时候就修改为:int num=10; //...... ...

2019-03-20 12:37:48 26978

空空如也

空空如也

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

TA关注的人

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