自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Go interface强制类型转换的小demo

一个简单的go语言interfae强制转换例子,非常初级的强制转换demo。非产品代码,仅供参考。 package main import ( "fmt" "log" ) func FilterByType(arr []interface{}, de...

2020-06-06 16:30:58 143 0

原创 go解析yaml文件示例

yaml文件已经成为配置的一种主要格式,因此各种语言都提供了相应的解析类库, 本文就以go语言中常用的yaml解析库 gopkg.in/yaml为例,简单展示一下如何解析yaml文件 具体代码在这里: 具体思路 1, 直接将yaml文件内容解析为我们定义好的struct, 这种简单方便,想获取对应...

2020-05-17 13:12:50 212 0

原创 go语言中的反射Reflect初探

我们先看看什么是反射,它有什么用。 我们先看卡wiki上关于反射的介绍。 链接为https://en.wikipedia.org/wiki/Reflection_(computer_programming) In computer science, reflection is the abilit...

2020-05-01 22:16:26 67 0

原创 vs code golang代码自动补全

VS Code也是一款非常不错的IDE工具, 在没钱购买GoLand,使用vs code也可以较好进行go开发工作。 本文简单介绍如何在vs code中启用go语言的代码自动补全功能。 我的vs code版本信息, 我是在Windows上使用vs code。 Version: 1.44.2 (us...

2020-05-01 12:30:45 838 0

原创 pod内访问kubernetes API server

本文接上一篇介绍如何从pod内部访问kubernetes API server。 所有的pod默认都关联上一个serviceAccount,只要该serviceAccount有权限访问你访问的资源对象,就可以直接访问。 我们使用default namespace中default serviceAc...

2020-04-05 21:41:12 292 0

原创 通过serviceAccount的secret访问kubernetes API Server

本文简单介绍如何通过serviceAccount访问kubernetes API server,不会详细介绍serviceAccount role, roleBinding, clusterRole以及clusterRoleBinding。 简单描述。serviceAccount与role通过ro...

2020-04-05 15:34:14 103 0

原创 kubectl apply -f kube-flannel.yml

问题及分析 按照以往通过kubeadm安装k8s集群配置网络的时候执行 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Docume...

2020-03-19 18:00:33 1012 0

原创 k8s node notReady之kubelet cgroup driver: "cgroupfs" is different from docker

问题 worker节点运行正常,因为安装其他软件我就重启了一下,结果发现kubectl get nodes显示node1notReady,这是执行kubectl describe node node1发现node1上的kubelet没有正常运行, 我手动执行systemctl start ku...

2020-03-18 21:54:53 565 0

原创 k8s pod 无法运行,错误registry.access.redhat.com/rhel7/pod-infrastructure:latest

之前的k8s环境都是通过kubeadm安装,安装完成后通过kubectl run nginx --image=nginx 验证环境Ok,都正常运行。 今天的k8s采用二进制安装的方式,结果运行kubectl run一致在 ContainerCreating状态,通过kubectl describe...

2020-03-16 20:00:58 188 0

原创 k8s节点变为NotReady状态

记录一个小教训。切记: k8s安装完成后不要轻易修改hostname。 问题: k8s的master节点变为notReady,另外一个worker节点正常。 症状:master上的flannel pod显示为pending状态,但是describe pod没有有用信息,最后运行journalct...

2020-03-08 21:21:25 555 0

原创 MongoDB中有关数据库连接

本文系个人经验以及官方文档总结,并非适用于所有版本的MongoDB或者所有语言的MongoDB驱动。 本人使用MongoDB v3.6.4, Java语言的驱动。 启动MongoDB时,限制连接总数 启动mongo是在配置文件中,或者在启动参数加上maxConns –maxConns T...

2019-12-15 11:05:34 732 0

原创 MongoDB提供的GridFS分布式文件存储系统

简介: 什么是GridFS GridFS 是基于MongoDB的分布式文件存储系统。 它是Mongo的一个子模块, 使用GridFS可以基于MongoDB来持久存储文件并且支持分布式应用(文件分布存储和读取)。 GridFS不是MongoDB自身特性,只是一种将大型文件存储在MongoDB的文件规...

2019-12-14 21:29:17 751 0

原创 OOM之GC Overhead limit exceeded

Java8常见的OOM主要有三种,分别是Exception in thread thread_name: java.lang.OutOfMemoryError: Java heap space、Exception in thread thread_name: java.lang.OutOfMemo...

2019-12-08 19:38:20 752 0

原创 Kafka消息可靠性配置

Kafka发送消息是异步的,因此如果没有设置异步回调异常处理,很容易导致消息丢失而且系统不知道的情况的。 因此我们在业务有需要的情况下,配置好消息的可靠性参数。 主要配置以下参数 block.on.buffer.full = true acks = all or -1 retries = ...

2019-12-01 10:20:03 778 0

原创 Kafka集群扩容

Kafka集群的服务发现是有zk实现的,因此想kafka集群添加新的broker就非常容易。我们只需要为新的broker设置一个唯一的broker.id, 然后启动新增的kafka就行。Kafka集群会自动发现新增的broker并同步原数据,包括当前集群有哪些topics以及topics的分区信息...

2019-11-30 20:28:35 4172 0

原创 Nginx 基于TCP的四层负载均衡介

最近有人讨论问题时说:nginx不能实现TCP层load balance, 只能做HTTP websocket这些协议的load balance。虽然没做过SLB,但我印象中nginx是可以做4层 load balance,会后查询的官方文档,也确实如此,顺便记录下来。 同时提醒自己:以官方为主,...

2019-11-24 13:17:08 781 0

原创 强一致性 单调一致性 最终一致性 zookeeper一致性

我们都了解分布式CAP原则,其中的C就是一致性。有关一致性,实践中又可以分为:强一致性、单调一致性、最终一致性。 CAP中的C默认就是指:在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)。 1、强一致性(Strong Consistency) ...

2019-11-17 10:52:45 1523 0

原创 MySQL存储引擎myISAM与innoDB区别

MyISAM和 InnoDB.是MySQL中最常用的存储引擎。 这两个引擎各有优劣势,我们需要根据业务需求进行选择。 MyISAM 与INNODB的主要差异: 1, MyISAM 不支持事务,而 InnoDB支持 2, MyISAM 无法实现行级别锁,关系完整性,而 InnoDB可以。 M...

2019-11-10 22:26:28 757 0

原创 Google Guava-缓存

项目需要使用缓存,恰好缓存对象不适合存储为字符串,而且为了高性能希望能有过期时间和LRU特性。 LRU好办,直接集成JDK自带的LinkedHashMap,实现removeEldestEntry方法就行。 可是过期时间就需要自己实现了,实现思路到还不复杂,可以需要测试。最后还是决定找找看看现有类库...

2019-10-29 19:00:17 887 0

原创 逃逸分析(Escape Analysis)与栈上分配

逃逸分析 了解JVM内存模型的大都知道Java的对象、数组都是在堆上分配的,实际上JVM还有更高级非分配技术。逃逸分析(Escape Analysis)就是其中之一。 逃逸分析是目前Java虚拟机中比较前言的优化技术,他与类型继承关系分析一样,并不是直接优化代码的手段,而是为前天优化手段提供依...

2019-09-21 16:47:48 901 0

原创 持续集成、持续交付、 持续部署之间的区别于联系

持续集成(Continuous integration, 简称CI), 持续集成是一种软件开发实践, 即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就是意味着每天可能发生多次集成,每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽早地发现集成错误。 好处...

2019-09-13 15:08:23 925 0

原创 Java中运行javascript代码(二)

本文在《Java中运行javascript代码(一)》基础上,展示了如何通过java向js函数传递参数。 请先阅读《Java中运行javascript代码(一)》以便您更快理解例子。 本文将展示两个示例。 第一个示例,通过java将json对象传递给js函数 第二个示例, 将数组传递给js函数,j...

2019-09-08 19:35:47 870 0

原创 netty heartbeat机制

前提: 本文会直接使用netty的LineBasedFrameDecoder和StringDecoder作为例子,介绍heatbeat机制,因此读者需要具备一定netty编程基础。 问题由来 所谓心跳, 就在在 TCP长连接中, 客户端和服务器之间定期发送的一种特殊数据包, 通知对方自己还在线, ...

2019-09-01 13:11:21 963 0

原创 Docker 中无法使用 JDK jmap之 Can't attach to the process: ptrace(PTRACE_ATTACH问题

问题描述 一个老服务最近出现OOM问题了(日志中发现的),但是由于启动参数没有添加-XX:HeapDumpOnOutOfMemoryError无法获取dump文件,这时想着使用jmap获取dump文件,结果执行jmap报如下错: # jmap -heap 6 Attaching to p...

2019-08-18 20:03:04 3393 0

原创 jstat命令基本用法

诊断程序性能问题,或者OOM问题需要查看程序运行的一些统计信息,jstat为我们提供了很多虚拟机运行时的状态信息,它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等信息。 基本用法 我的jdk是1.8.0_191 D:。。。。\dir1>jstat -help Usag...

2019-08-18 11:18:09 936 0

原创 如何将.crt和.key转换为.jks证书

项目中因为使用环境和语言不通,需要将证书进行转换,下面我们就展示一下如何将server.crt和server.key转换为.jks证书。 第一步 1, 根据server.crt和server.key生成pkcs12证书 生成过程输入的密码就是keypass openssl pkcs12 -...

2019-08-17 16:25:18 4080 0

原创 类加载器之-----使用spring-boot-devtools与drools导致的 com.x.y.A cannot be cast to com.x.y.A

我们知道判断两个类是否相等,只有在这两个类是由同一个类加载器加载的前提下才有意义。使用spring-boot-devtools时,我们很多“”应用类“”是由spring提供的org.springframework.boot.devtools.restart.classloader.RestartC...

2019-08-17 16:02:44 965 0

原创 bucket4j限流示例

最近处理测试某个业务的性能,发现当kafka消息量特别大的时候需要限制kafka消息消费速度,因为接受消息的处理流程比较多,当消息量特别大的时候,如果kafka消息了消息(kafka是自动完成commit)提交给后台处理,一旦后台线程中断,就会导致有消息遗漏处理。 这里补充一句,为什么没有设置k...

2019-08-11 13:32:21 1594 1

原创 Netty实现SSL单向示例

直接使用TCP通信,方便灵活。 单将端口保留在外,又不安全,因此我们需要使用SSL, 对通信过程进行握手和加密, 确保安全。 准备证书 要使用ssl单向验证,就必须先要生成服务端和客户端的证书,并相将服务器证书添加到客户端信任证书中,具体流程如下 在命令行窗口执行如下所示命令(默认证书会在当前...

2019-08-10 17:19:22 2099 0

原创 Java 堆默认大小

最近在调整程序的堆大小设置,就顺便看默认开发环境中如何设置的。发现开发环境没有主动设置大小,那就应该是根据机器配置和操作系统,以及JDK版本等信息确定。 查询 PrintFlagsFinal 关于查询命令,请参考官方文档: -XX:+PrintFlagsFinal which outputs...

2019-08-04 13:30:12 5570 0

原创 volatile与synchronized区别

招人时需要准备一些面试问题,有些内容虽然日常在用,但是没有系统化理解,面试时也很难评判对方回答的是否准确。因此,重新梳理了volatile与synchronized。 volatile volatile 是最轻量级的同步机制。Java内存模型对volatile专门定义了一些特殊访问规则。 1...

2019-08-03 11:13:24 781 0

原创 Netty中基于ip的白名单或者黑名单机制示例

使用Netty 4.1.23版本需要用到白名单机制,发现网上很多资料都是介绍IpFilterRuleHandler,仔细一看4.x版本中找不到这个,而5.x有不被推荐使用,因此仔细查看官方文档发现有个RuleBasedIpFilter可以使用。 RuleBasedIpFilter简介 Rule...

2019-07-21 13:12:27 2143 0

原创 Java9 默认的GC收集器是?

我们在介绍了Java8的默认收集器ParallelGC后, 很多人就继续追问那Java9默认使用哪种收集器呢? 直接看官方文档(https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-B6CD8C25-FD93-4CAA-9286-...

2019-07-21 10:33:18 3091 3

原创 Java8 默认的GC收集器是?

起源 网上很多博文都java8之前的jvm的各种设置介绍,尤其关于Java8使用哪种垃圾收集算法以及jvm方面改变没有准确的介绍。本文主要参考Oracle官方文档。因此会有大量英文引用。 默认的GC算法 -XX:+PrintCommandLineFlags (具体介绍在https://doc...

2019-07-21 10:15:18 6572 1

转载 转载--Kafka创建Topic时如何将分区放置到不同的Broker中?

本来想自己写一篇,结果发现这篇写的不错,就直接转载, 原文地址 转载自过往记忆(https://www.iteblog.com/) 本文链接: 【Kafka创建Topic时如何将分区放置到不同的Broker中】(https://www.iteblog.com/archives/2219.ht...

2019-07-20 21:33:56 942 0

原创 System.gc()与Runtime.getRuntime().gc()区别

首先,我们需要明确一点的是,两个gc都会强制触发垃圾收集,它们只是向JVM建议,现在也许是收集垃圾的好时机。 比较 System.gc()调用起来更方便,但是会给应用带来不必要的性能问题。还可以通过参数-XX:+DisableExplicitGC.禁止显示调用gc。 Runtime.getR...

2019-07-13 16:41:37 1444 0

原创 ThreadPoolExecutor之FixedThreadPool详解

项目中大家基本都使用过线程池,节省线程创建和销毁的成本。Java JDK提供了几种线程池,那么如何选择合适的线程池?这就需要对每一种线程池有较详细的了解,然后根据实际业务类型,选择对应的线程池。 本文主要介绍FixedThreadPool。 定义 /** * Creates a ...

2019-07-13 12:16:22 5170 0

原创 SpringCloud使用Consul作为分布式配置中心

背景 很多使用SpringCloud微服务框架的工程都默认使用spring-cloud-config-server作为配置中心,我们的项目需要更便捷的部署,刚好注册中心已经使用consul了,就考虑是否将注册中心和配置中心合一,减少服务数目,方便更快部署。 实践 1 添加consul依赖 ...

2019-07-07 11:11:18 2407 5

原创 Java反射性能差?

今天突然想到Java反射。然后测试了一下1.8.0_191版本的反射性能,没想到反射竟然比直接调用性能还高。 反射介绍 Java反射是指在程序运行状态中,能检查任意对象的内容并调用任意方法。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之...

2019-06-02 20:37:32 9080 19

原创 Flink 远程提交任务 java.lang.ClassCastException LinkedMap

问题来源 Flink本地提交任务运行正常,然后打包成jar在远程的Flink上运行失败。 注意: 打包的jar不能通过java -jar 运行,即使你的jar和Flink在一台机器上。 例如 Flink安装在E:\software\flink-1.7.2-bin-scala_2.12\f...

2019-05-08 11:54:58 2028 0

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