自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (7)
  • 收藏
  • 关注

原创 golang中内存泄露的发现与排查

项目场景:golang中内存泄露的发现与排查一直是来是go开发者头疼的一件事,恰巧最近负责的风控项目,内存使用暴涨,发生了内存直接打满而挂掉的情况。刚开始以为是随着业务的增长,数据处理不过来导致的。但是经过业务的分析和对比,发现并不是如此。幸好go语言有性能大杀器可以监控到,最终根据pprof,问题定位到为go协程泄漏问题。解决完问题后进行记录和分享,写的不对之处,请大家多多指出。问题描述:运维同学发出告警提示,服务器的内存即将打满,看看服务是否异常。收到这个消息后,赶紧看服务器的资源使用情况

2021-04-29 14:37:55 17366 6

原创 Spring boot 集成Axis1.4 ,使用wsdd文件发布webservice

Spring boot 集成Axis1.4 ,使用wsdd文件发布webservice前言说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例如在iptv和ott行业中进行系统交互的接口协议。目前就遇到了这种情况,线上环境对接的系统统一使用soap web se

2017-05-08 19:24:32 38254 26

原创 Kafka 生产环境硬件配置选择

服务器台数选择磁盘选择内存选择kafka 堆内存建议每个节点: 10g-15g1.1 查看 Kafka 进程号1.2 根据 Kafka 进程号,查看 Kafka 的 GC 情况参数说明:1.3 根据 Kafka 进程号,查看 Kafka 的堆内存页缓存页缓存是 Linux 系统服务器的内存。 我们只需要保证 1 个 segment(1g)中25%的数据在内存中就好。所以综合建议服务器内存( 堆内存+页缓存 )大于等于 11G。建议 32 个 cpu core......

2022-06-23 12:55:19 605 1

原创 golang面试题(3):切片使用陷阱

golang中slice切片面试题

2022-04-20 15:09:19 422

原创 fatal: refusing to merge unrelated histories

本地初始化了git仓库,放了一些文件进去并进行了add操作和commit提交操作 ##设置main 为默认分支, 不是master git config --global init.defaultBranch main git add . git commit -m "init project"gitlab创建了git仓库并建立了README文件,main为主分支本地仓库添加了gitlab上的git仓库作为远程仓库,起名origingit remote add origin .

2022-03-30 20:58:00 392

原创 mysql 根据访问ip数据统计日活/周活/月活

背景:需要统计数据库中的访问日志情况,要根据ip来统计网站的不同维度的活跃情况。按天统计##如果不去重,可以去掉distinctSELECT DATE_FORMAT(start_time,'%Y%m%d') days, COUNT(distinct ip) dcount FROM test GROUP BY days; 按周统计##如果不去重,可以去掉distinct##此处需要注意,结果中的weeks 是按照自然周来计算的,如果需要限制到某个月份,需要添加where条件SELECT .

2022-03-21 16:29:23 633

原创 golang 操作mongo上亿级别数据的插入优化方案

golang 操作mongo上亿级别数据的插入优化方案背景mongo集群中已经存在十五亿数据,需要将一批将近8亿条数据(有重复)继续导入进数据库中。此数据存储在了sqllite 中。要求:1:如果数据已经存在,需要更新操作;如果没有数据,则执行新增操作。可以利用mongodb的 upsert操作来处理。2:时间尽量压缩方案一读取数据,将每条数据进行upsert操作。此方案可以满足要求1,但是不满足要求2。 处理时间预计在30-40天左右方案二批量处理,使用collection.Bul

2022-03-21 12:37:35 2541

原创 golang并发控制之channel

并发控制之channel我们考虑一种场景,协程A在执行过程中需要创建子协程A1、A2、A3…An,协程A创建完子协程后就等待子协程退出。针对这种场景,Go提供了三种解决方案。Channel:使用channel控制子协程WaitGroup:使用信号量机制控制子协程Context:使用上下文控制子协程三种方案各有优劣,比如Channel的优点是实现简单,清晰易懂,WaitGroup的优点是子协程的个数可以动态调整,Context的优点是对子协程派生出来的孙子协程的控制。各种解决方案的缺点是相对而言

2021-09-07 10:17:24 664 1

原创 golang面试题(2):for-range特性

下面这段代码输出的内容package mainfunc main() { slice := []int{0,1,2,3} m := make(map[int]*int) for key,val := range slice { m[key] = &val } for k,v := range m { fmt.Println(k,"->",*v) }}答案: 3 2 1 p

2021-09-07 09:41:08 121

原创 golang面试题(1):defer的执行顺序

下面这段代码输出的内容package mainimport ( "fmt") func defer_function() { defer func() { fmt.Println("1") }() defer func() { fmt.Println("2") }() defer func() { fmt.Println("3") }() panic("exception")}func main() { defer_function()}

2021-09-06 10:54:59 871

原创 golang协程goroutine

协程goroutine概念协程(英语:coroutine)是计算机程序的一类组件,推广了协作式多任务的子例程,允许执行被挂起与被恢复。相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。协程更适合于用来实现彼此熟悉的程序组件,如协作式多任务、异常处理、事件循环、迭代器、无限列表和管道。根据维基百科的记录,协程术语coroutine最早出现在1963年发表的论文中,论文作者是美国计算机科学家马尔文·爱德华·康威。协程并不是Go发明的概念,支持协程的编程语言有很多,比如python、pe

2021-08-30 15:08:33 1584 1

原创 golang控制结构之select

selectselect是Go在语言层面提供的多路I/O复用机制,用于检测多个管道是否就绪( 即可读或可写 ),其特性和管道息息相关。特性速览管道读写select只能作用于管道,包括数据的读取和写入,如下面代码所示:func SelectForChan(c chan string) { var recv string send := "Hello" select { case recv = <-c: fmt.Printf("recvied %s \n", recv) case

2021-08-28 12:48:42 3023

原创 golang数据结构初探之字符串string

字符串stringstring 是Go语言中的基础数据类型。特性速览声明声明string变量非常简单,常见的方式有以下两种:声明一个空字符串后再赋值var s string s = "hello world"需要注意的是空字符只是长度为0,但不是nil。不存在值为nil的string使用简短变量声明:s := "hello world" //直接初始化字符串双引号与单引号字符串不仅可以使用双引号赋值,也可以使用反单引号赋值,它们的区别是在于对特殊字符的处理。假如我们希望stri

2021-08-23 15:40:05 6606

原创 golang数据结构初探之iota

iotaGo语言的iota常用于const表达式中,其值是从0开始的,const声明块中每增加一行,iota值都会自增1。使用iota可以简化常量的定义,但其规则必须牢记,否则在阅读源码时可能会造成误解或者障碍。本章我们尝试从编译器的角度来理解iota,从而加深认识。特性速览在常量声明语句中,iota经常用于声明连续的整型常量。iota的取值与其出现的位置强相关。iota在const关键字出现时被重置为0const声明块中每新增一行,iota的值自增1这种描述本身没有错误,在简单的语句中套

2021-08-20 18:16:33 7400

原创 golang数据结构初探之结构体struct

结构体structGo语言的struct与其他编程语言的class有些类似,可以定义字段和方法,但是不可以继承内嵌字段Go语言的结构体没有继承的概念,当需要"复用"其他结构体时,需要使用组合的方式将其他结构体嵌入进来。如下所示:type Animal struct { Name string}func (a *Animal) SetName(name string) { a.Name = name}type Cat struct { Animal //隐式声明}func m

2021-08-20 15:52:26 6165

原创 golang数据结构初探之字典map

MapGo语言的map底层使用Hash表实现的特性预览操作方式初始化map分别支持字面量初始化和内置函数make()初始化字面量初始化func MapInit() { m := map[string]int{ "apple": 1, "banana": 2, } for k, v := range m { fmt.Printf(" %s : %d \n", k, v) }}内置函数make()func MapInit() { m := make(map[st

2021-08-19 17:14:25 5611

原创 golang数据结构初探之动态数组slice

动态数组sliceslice 又称动态数组,依托于数组实现,可以方便的进行扩容和传递,实际使用时比数组更灵活。但正是因为灵活,实际使用时更容易出错,避免出错的最好方法便是了解其实现原理。特性速览初始化声明和初始化切片的方式主要有以下几种方式:变量声明字面量使用内置函数make()从切片和数组中切取变量声明这种声明方式的切片变量与声明其他类型变量一样,变量值都为零值,对于切片来讲零值为nilvar s []int字面量也可以使用字面量初始化切片,需要了解的是空切片是指长度为空,

2021-08-17 18:31:33 19104

原创 golang数据结构初探之管道chan

golang数据结构初探之管道chan管道是go在语言层面提供的协程之间的通信方式,比unix的管道更易用也更轻便。特效速览初始化声明和初始化管道的方式主要有以下两种:变量声明使用内置函数变量声明这种方式声明的管道,值为nil。每个管道只能存储一种类型的数据var ch chan int //声明管道使用内置函数 make()使用内置函数make() 可以创建无缓冲管道和带缓冲管道ch1:=make(chan string) //无缓冲管道ch2:=make(chan s

2021-08-16 12:45:09 18754

原创 基于gitlab+docker+k8s打造自动化构建部署流程

工程自动化构建部署前言​ 随着需求越来越多,以及相关代码分支权限的流程规范化,团队内部的项目上线部署复杂度提升,基于现有的环境和市场上主流的软件,打造了一套基于gitlab+docker+harbor+kubernetes的自动化构建部署流程(CI/CD),目前团队内部流程基本走通,整理了一份相关文档分享出来。写的糙的地方,轻喷。概念GitLab CI/CD​ GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。与之对应的有GitHub和

2021-08-06 18:45:39 35383 8

原创 nfs搭建手册

nfs搭建手册执行命令需要每台服务器上都执行yum install -y nfs-utils rpcbindmkdir -p /data/nfs/chmod 777 /data/nfschown -R nfsnobody:nfsnobody /data/nfs服务端需要添加配置echo "/data/nfs *(rw,no_root_squash,no_all_squash,sync)" > /etc/exportssystemctl start rpcbind syste

2021-08-02 15:50:24 14382

原创 使用sealos快速搭建 k8s集群

k8s 集群搭建环境信息,并且配置服务器互信主机ipmaster1192.168.0.2master2192.168.0.3master3192.168.0.4node0192.168.0.5注意事项服务器之间必须配置互信,或者使用统一密码(建议互信的方式)必须同步所有服务器时间所有服务器主机名不能重复系统支持:centos7.6以上 ubuntu16.04以上内核推荐4.14以上, 系统推荐:centos7.7使用

2021-08-02 14:27:15 15010

原创 golang 数组随机排序

golang 数组随机排序文章目录golang 数组随机排序前言具体实现步骤如下1.引入库2.读入数据总结前言目前接到一个推荐数据的需求,需要将数据库中获取到的数据进行随机排序后返回给用户。考虑了一下,有两种使用方式,一种是通过数据库 order by rand() ,还有一种就是本文需要使用到的代码处理具体实现步骤如下1.引入库代码如下:import ( "fmt" "math/rand" "time")2.读入数据代码如下:type CategoryEntity str

2021-04-23 19:02:15 15917

原创 记一次通过curl命令使用post请求丢失数据的情况和解决方案

记一次通过curl命令使用post请求丢失数据的情况和解决方案执行命令,提交数据curl -X POST "http://localhost:8880/api/risk_rule_base/edit" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"is_enabled\": 0, \"rule_id\": 7, \"rule_json\": \"{\\\"sign\\\":\\\"4\\\",\\\"m

2021-02-03 10:44:00 16315

原创 基于Go语言实现的简易api网关

基于Go语言实现的简易api网关 (新手轻喷)api网关核心功能是实现http转发和重新功能,http代理的结构和思路很简单,通过浏览器发送请求,proxy拿到浏览器的请求去请求目标地址,然后获得结果它再发送给浏览器。对于Go语言来说,实现转发只需要简单的一行代码即可实现,如下所示:httputil.NewSingleHostReverseProxy(address)基于此功能,进行简单包装,实现从远端admin管理中心获取需要转发的路由信息或者可以从本地配置文件中获取,实现动态转发。后续可以根据业

2020-12-05 12:55:41 19632 2

原创 linux下如何使用nohup启动后台进程

linux下如何使用nohup启动后台进程方案一:新建一个start.sh ,然后执行 sh start.sh ,关闭窗口,进程可以正常后台运行。内容如下示例:#!/bin/shnohup ./domain_agent -domain_file ./domain_file.txt 2>&1 &方案二:直接运行命令:nohup ./domain_agent -domain_file ./domain_file.txt 2>&1 &使用

2020-12-02 09:06:44 15547

原创 如何隐藏启动Tomcat的window的cmd窗口

如何隐藏启动Tomcat的window的cmd窗口,同样适合java -jar 启动服务的方式方案一:使用vbs嵌套打开1:新建startup.vbs CreateObject("WScript.Shell").Run "cmd /c run.bat",02:新建run.bat catalina.bat run3:双击startup.vbs,此时tomcat启动,但是不会弹

2017-09-29 15:58:05 25254

原创 JSON使用案例--一次性解析比较大的json文件

目前在做数据交互的功能时,由于双方交互的格式为Json格式,生成的数据都存储在文本文件中,当数据量少的时候,对应的网上的教程很多。目前针对于数据量较大时,写的一个方法。 代码中使用到的jar包为gson-2.1.jar:http://download.csdn.net/detail/dong945221578/8621163 代码中使用到的json样例: * 解析Json使用到的

2015-04-22 18:14:35 28673 4

原创 java上传文件到FTP文件出现数据丢失

今日在写一个上传文件到FTP功能时,出现文件上传上去后,数据尾部一直丢失一部分。经过各种验证后,发现了造成问题的原因。功能描述:读取数据写入文本,文本写入完毕后将文件上传到指定的FTP地址上。问题描述:数据写入文本成功,本地文件上传到FTP后发现文件尾部会丢失一部分数据。问题原因:原来在数据写入本地上传文件之前没有及时将文本的写入流关闭,导致数据造成丢失了一部分。总结:IO流的关闭不一定是要在fin

2015-04-15 15:28:46 25973

Springboot集成axis1.4的demo

Spring boot 集成Axis1.4 ,使用wsdd文件发布webservice

2017-07-10

bootstrap的前端页面html+jsp

一套完整的bootstrap的前端页面,包含html和jsp。

2017-03-07

Maven权威指南(Beta 0.2).pdf

Maven权威指南(Beta 0.2),很详细的讲解了maven的搭建、常用的命令以及配置。很不错的学习文档

2016-08-11

gson-2.1.jar

java解析json使用到的jar包

2015-04-22

Git-1.9.4-preview20140611

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。

2015-03-19

TortoiseGit_1.8.9.0_x64

TortoiseGit(git客户端x64位)是一款优秀的Windows64位系统下的Git可视化图形客户端,有了TortoiseGit就可以方便地管理Git,不需要打命令了。在Windows下用SVN的朋友,应该对TortoiseSvn不陌生,一个小乌龟的图标。TortoiseGit和TortoiseSVN用法差不多,都是集成在右键菜单中了,非常方便。

2015-03-19

SourceTreeSetup_1.6.14

一款不错的git图形化管理工具,中文操作界面,可以方便的上传和拉去。

2015-03-19

空空如也

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

TA关注的人

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