- 博客(337)
- 资源 (9)
- 问答 (3)
- 收藏
- 关注

原创 ELK(ElasticSearch+LogStash+Kibana)分布式日志系统
ELK架构介绍安装JDKElasticSearch下载与安装可能遇到的问题配置集群本地集群多机集群Kibana下载与安装配置logstash安装日志格式解析elasticsearch CRUD操作插入文档查询更新删除文档查询语句ELK架构介绍ELK分别是ElasticSearch LogStash Kibana...
2018-05-04 18:33:02
850

原创 使用geohash实现查找附近的人
需求在许多社交app和外卖app种都有一个功能,就是查找附近的人或者附近的商家。我们很容易获得用户的经纬度坐标,但是我们如何知道哪些用户在我们的四周?如果知道两个用户坐标,可以使用几何数学的方法算出两个坐标之间的距离,但是如果要从海量数据库中找出距离本人1公里内的所有用户,难道要把所有用户经纬度数据都查出来然后一个个计算与我的距离吗?显然不可取。geohash介绍因此我们需...
2018-04-25 11:26:56
4038
原创 统信服务器版k8s网络不通
这是一个比较坑的问题,使用iptables -nvL查看规则,发现chain forward的策略是drop,只要改成accept就ok了:sudo iptables -P FORWARD ACCEPT但机器重启后就恢复成drop了,因此需要执行以下步骤:sudo vim /etc/systemd/system/docker.service[Service]下加一行:ExecStartPost=/sbin/iptables -P FORWARD ACCEPT参考文档:https://blo
2022-05-05 11:00:53
870
原创 golang float转string后去除末尾的0
go语言中,float转成string后,末尾会有多余的0,例如1.20000。显示效果不友好,可以使用以下方法去除末尾的0:floatValue := 123.222result := strconv.FormatFloat(floatValue, 'f', 4, 64)// 去除result末尾的0for strings.HasSuffix(result, "0") { result = strings.TrimSuffix(result, "0")}if strings.HasSuffi
2022-04-29 21:25:04
4236
原创 shell read line保留空格
假设有一个yaml文件:groups: - name: xxxx rules:使用以下代码读取之后格式丢失:cat xxxx.yaml | while read linedo echo $linedone想要保留空格,只需要设置IFS=''即刻。完整代码如下:IFS=''cat xxxx.yaml | while read linedo echo $linedone...
2022-03-25 20:07:33
3730
原创 k8s部署nginx自动更新域名及解除后端依赖
问题在k8s中使用nginx作为后端接口反向代理,大概配置如下: location /api { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://api-server-svc:8
2022-03-04 14:01:22
9370
2
原创 alpine镜像跑go报standard_init_linux.go:211: exec user process caused no such file or directory
参考:https://blog.youkuaiyun.com/u013235478/article/details/105852353解决build时加参数-tags netgo:go build -tags netgo xxxxx
2022-02-24 17:32:57
822
原创 configmap nginx.conf报错:invalid number of arguments in “proxy_set_header“
问题描述使用k8s部署nginx,配置文件使用configmap:apiVersion: v1kind: ConfigMapmetadata: name: nginx-configdata: default.conf: | server { listen 80; server_name localhost; location / { proxy_set_header X-Forwarded-Proto
2022-02-21 14:38:56
7935
原创 zsh 在 git 目录下变得卡顿的问题
问题有个两三G的git工程,cd进入目录都非常卡顿,执行ls等命令也是。原因是zsh自动执行git status获取一些git的信息解决关闭检查:git config --add oh-my-zsh.hide-dirty 1如果要开启:git config --add oh-my-zsh.hide-dirty 0...
2022-01-25 10:07:36
1441
原创 解决antd表单中上传组件传值问题
问题在使用antd的表单时,如果表单中有Upload组件,那么在提交表单时,该字段的值是一个File数组,大致如下图所示:希望它传的是图片id解决方法在提交表单时,需要对该字段做一个转换。比如我上传图片时服务端返回的response是:{ "image": "/path/to/image"}那么提交表单时需要做如下转换:// 表单验证通过时formRef.current?.validateFieldsReturnFormatValue?.().then((values) =>
2021-12-05 10:52:04
1709
原创 解决m1芯片打的docker镜像无法在x86架构linux下执行的问题
最近刚入手了m1 pro芯片的mbp,打了一个docker镜像,传到linux下运行时出错了,后来排查到是cpu架构差异的问题解决方案是使用docker buildx 来指定平台示例如下:docker buildx build -t imageName --platform=linux/amd64 .值得一提的是,buildx这玩意儿是在docker版本19.03之后才有。如果是旧版本,可以手动安装buildx插件参考:https://cloud.tencent.com/developer/a
2021-11-24 13:10:22
6618
原创 IDEA JVM class文件查看插件
jclasslib Bytecode Viewer,安装好后,选中一个类文件,点击view->show bytecode with jclasslib 即可查看class文件信息如果发现提示class root not found,只需要执行一下main方法,让代码编译一下即可。
2021-11-18 09:56:39
942
原创 使用nvm管理node版本
使用brew安装nvm:brew install nvm按照提示修改配置:常用命令nvm install stable 安装最新稳定版 nodenvm install <version> 安装指定版本,如:安装v4.4.0,nvm install v4.4.0nvm uninstall <version> 删除已安装的指定版本,语法与install类似nvm use <version> 切换使用指定的版本nodenvm ls 列出所有安装的版
2021-06-29 15:58:39
280
原创 数据结构与算法汇总
排序算法冒泡排序 选择排序 插入排序 归并排序 快速排序 计数排序 桶排序 基数排序线性结构栈 队列 链表 跳表 树结构二叉搜索树(BST) 平衡二叉树(AVL) 红黑树
2021-05-25 10:27:53
253
原创 Spring读取resources目录下的文件
试了很多种方法,很多方法都是在IDE运行时可以读到,打成jar包就读不到了。最后,完美解决方案:import org.springframework.core.io.ClassPathResource;InputStream is = new ClassPathResource("data.json").getInputStream();...
2021-03-30 13:56:46
292
原创 IDEA插件GenProtobuf编译proto文件
安装protocprotoc是proto编译器,从这里下载:https://github.com/protocolbuffers/protobuf/releases/我使用的是mac系统,安装方法如下:tar zxvf protobuf-all-xxx.tar.gzcd protobuf-all-xxx.tar.gz./configuremakemake checkmake install#查看是否安装成功protoc --version#如果出现libprotoc 2.4.1或者l
2021-03-09 14:40:01
4008
1
转载 macOS Chrome无法访问自签名https页面问题的解决办法
问题描述:macOS Chrome无法访问自签名https页面,以往版本可以选择跳过,继续访问,但是新版本Chrome不允许继续,并显示ERR_CERT_INVALID;解决办法:在Chrome该页面上,直接键盘敲入这11个字符:thisisunsafe;注意不是地址栏,而是页面内直接盲打。...
2021-03-03 10:13:21
1948
原创 mac修改idea jvm参数
方法一:在idea界面点击help->Edit Custom VM Options方法二:很多帖子都说修改/Applications/IntelliJ\ IDEA.app/Contents/bin/idea.vmoptions,亲测不管用。需要修改:~/Library/Application\ Support/JetBrains/IntelliJIdea2020.1/idea.vmoptions...
2021-01-29 10:01:38
1382
原创 netty轻松入门(四)—— 数据容器ByteBuf
数据在网络中是以二进制形式传输的,在java中我们使用字节数组来表示。在使用netty开发时,你会发现netty使用ByteBuf将字节数组包装起来,ByteBuf是netty中的数据容器,一切针对数据的操作以ByteBuf为基础JDK中也有字节数组的容器类ByteBuffer。但ByteBuffer有一些缺陷:无法支持同时读写数据,从读切换到写,或从写切换到读时,需要手动调用flip()方法重置一下。字节数组长度固定,无法扩容因此netty才开发了ByteBuf,弥补了ByteBuffer的
2020-11-29 23:34:27
884
原创 netty轻松入门(三)—— pipeline与handler
netty使用NioEventLoopGroup处理连接,读,写等IO事件,使用pipeline-handler真正处理业务。在日常开发中,我们通常都将注意力集中在业务handler的编写上,对于NioEventLoopGroup的关注相对较少,因此我们很有必要了解到底什么是pipeline,pipeline是如何工作的handlerhandler是处理读写事件的处理器,也是我们真正的业务处理器。handler主要分为两种类型:ChannelInboundHandler:处理入站事件Channe
2020-11-28 22:53:37
1088
4
原创 netty轻松入门(二)—— 第一个netty应用
看了上一篇netty轻松入门(一)——netty线程模型,应用对netty有个大致的了解。现在我们就用netty实现一个简单的服务需求很简单:服务端起一个服务,监听1010端口客户端连接,并发送一个hello server服务端收到hello server后,响应一个hello client服务端主动关闭连接环境配置首先你要安装JDK,具体步骤就不说了安装maven或者gradle(我使用gradle)创建工程,引入netty包gradle:compile group: 'i
2020-11-28 14:21:02
419
1
原创 netty轻松入门(一)—— netty线程模型
传统IO是启动一个ServerSocket,单线程阻塞监听端口,性能较差。而netty基于NIO,设计了自己的线程模型,将接收请求的线程和处理业务的线程分开,从而提高性能。在netty中,负责接收请求的线程池叫做Boss,而负责处理业务的线程池叫做worker。其实他两的类型都是NioEventLoopGroup,boss和worker只是我们取的外号,形象地说明了他们的职责分别是老板和打工人。老板接订单,打工人处理订单。大致示意图如下:当然,上图只是最简单的示意图,实际情况复杂的多。NioEv
2020-11-27 23:31:18
331
原创 导读:如何学好设计模式
什么是设计模式 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。上面的解释来自于某度某科,是比较标准的定义,可以从中筛选出几个关键字来帮助我们理解什么是设计模式:最佳实践解决方案试验和错误总...
2020-09-22 12:16:24
551
原创 第01课:策略模式
策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。一般情况下我们是将一种行为写成一个类方法,比如计算器类中有加、减、乘、除四种方法,而策略模式则是将每一种算法都写成一个类,然后动态的选择使用哪一个算法。这里所说的算法并不是指“冒泡排序算法”、“搜索算法”之类的算法,它可以是一段代码、一个请求、一个业务操作。策略模式:从上图可以看到...
2020-09-22 12:16:22
337
原创 第02课:装饰器模式
装饰器模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。某一天隔壁老王赤果果地来到百货商店,打算给自己买一套装备,武装到牙齿。他买了衣服裤子和帽子,于是老王这样做:public class LaoWang { public void show(){ System.out.println("我穿上衣服,累计花费100元"); ...
2020-09-22 12:16:21
367
原创 第03课:观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。发布—订阅在首篇导读中介绍了设计模式的分类,而观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。观察者模式有一个别名叫“订阅—发布模式”。报纸大家都订过吧,当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报...
2020-09-22 12:16:19
314
原创 第04课:适配器模式
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间下面讲一件真事:本人去年年底公司年会抽奖抽中了一台粪叉(iphone x),由于没有现货,大概过了一个月左右,抽中的粪叉才送到我手中。拿到手一看,咦,是港版的。略微有些失望,因为港版的比较便宜。不过这台粪叉打算留给女友使用,不打算卖,港版就港版吧。第二天,打算给粪叉充电的时候突然发现充电头是这样...
2020-09-22 12:16:18
450
原创 第05课:单例模式与工厂模式
单例模式和工厂模式是平时开发中最常见的两种设计模式,即便没有系统学习过设计模式的开发者,也必然对此不陌生。这两种设计模式是我认为最容易理解,最简单的设计模式,因此放在同一篇文章中。单例模式概述 单例模式确保一个类只有一个实例,并提供一个全局访问点我们常常希望某个对象实例只有一个,不想要频繁的创建和销毁对象,浪费系统资源,最常见的就是IO,数据库的连接,redis连接等对象,完全没有必...
2020-09-22 12:16:16
283
原创 第06课:模板方法模式
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。不知道在场有没有喜欢烹饪的小伙伴,做一道西红柿炒蛋我们通常需要以下步骤:打开抽油烟机生火西红柿炒蛋关火关闭抽油烟机用代码来表示:public class CookXihongshi { public void open(...
2020-09-22 12:16:15
286
原创 第07课:外观模式
概述 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。飞机驾驶舱不少人都见过,当看到那些密密麻麻的按钮时,心想要是能一键启动就好了。在代码的世界里,我们也常常遇到一个业务功能需要调用很多接口甚至很多系统的情况,就像下图:有时候被我们调用模块之间还需要互相调用,模块之间的关系都可以画出一张蜘蛛网。在这种情况下,要求开发者需要对每一个...
2020-09-22 12:16:13
234
原创 第08课:代理模式
概述 代理模式为另一个对象提供一个替身或者占位符以控制对这个对象的访问举一个生活中的例子:有时候我们想要买火车票,但是火车站太远,那么我们可以去附近的火车票代售点进行购买。此时,代售点就是代理,它拥有被代理对象的部分功能——售票功能。为什么需要代理?在生活中,我们去售票代理处买票是因为火车站太远了,但在代码的世界里可没有“太远”了这种说法。使用代理的基本目的是控制对真实对象的访问。这...
2020-09-22 12:16:12
298
原创 第09课:责任链模式
概述 责任链模式为某个请求创建一个对象链,每个对象依次检查此请求,并对其进行处理,或者将它传给链中的下一个对象链表是很常见一种数据结构,链表中的每一个节点都是一个对象,并且该对象中存储着下一个节点的指针。链表的基本结构如下:责任链模式的结构其实和链表相差无几,唯一的区别就是责任链模式中所有的对象都有一个共同的父类(或接口):在责任链模式中,N个 Handler 子类都处理同一个请...
2020-09-22 12:16:10
272
原创 第10课:设计模式综合应用
设计模式总结我们先来回顾一下前面课程的内容:设计模式分类分类关注点创建型模式关注于对象的创建,同时隐藏创建逻辑结构型关注类和对象之间的组合行为型关注对象之间的通信设计模式定义策略模式(行为型模式)策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户装饰器模式(结构型模式)装饰器模式动态地将责任附...
2020-09-22 12:16:08
717
原创 kvm GPU透传进虚拟机
最近给服务器装了kvm虚拟机,服务器上有多张显卡,想透传给虚拟机使用我的环境是ubuntu16.01IOMMUdmesg | grep -i -e DMAR -e IOMMU发现缺少IOMMU:[ 0.000000] ACPI: DMAR 0x000000003B7C7000 000100 (v01 INSYDE HSW-LPT 00000001 ACPI 00040000)[ 0.072640] DMAR: Host address width 46[ 0.072642
2020-08-08 16:29:10
2957
原创 ubuntu16.04安装kvm虚拟机
之前一直用vmware workstation,但这玩意儿收费,且无法透传GPU,最终改用KVM。安装sudo apt install qemu-kvm qemu virt-manager libvirt-bin bridge-utils 网桥配置如果用nat模式,那就不需要配置网桥了。sudo vim /etc/NetworkManager/NetworkManager.confmanaged=false改为managed=true修改网卡配置:sudo vim /etc/networ
2020-08-08 13:57:59
952
原创 vmware克隆虚拟机提示The specified virtual disk needs repair
这是由于vmware没有正常关闭导致的,使用vmware-vdiskmanager工具修复一下vmdk即可。vmware-vdiskmanager在装了vm后就自带的了,我的系统是ubuntu,因此使用如下命令修复:sudo vmware-vdiskmanager -R /xxxx/xxxx-disk1-cl1.vmdk/xxxx/xxxx-disk1-cl1.vmdk替换成你要clone的虚拟机的vmdk在window下也是一样的方法修复,vmware-vdiskmanager换成vmware.
2020-08-01 15:34:33
1985
原创 ubuntu下使用Telepresence本地开发调试k8s微服务
安装kubectl参考官方文档:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/我本地环境是ubuntu,使用apt方式安装:sudo apt-get update && sudo apt-get install -y apt-transport-httpscurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
2020-07-29 19:23:31
1884
win10 null.sys文件
2018-03-26
OneThink-maste
2016-07-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人