自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Golang 在 Mac、Linux、Windows 下如何交叉编译

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux 下编译 Mac 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=dar

2021-06-21 11:31:21 135

原创 Nginx location中斜线使用说明

一、nginx代理后端服务nginx 服务器及端口 127.0.0.1:80后端服务:127.0.0.1:8080测试url:http://127.0.0.1:80/day06api/api/abcA.配置nginx配置如下:location /day06api/ { proxy_pass http://127.0.0.1:8080/;}实际访问的端口服务:http://127.0.0.1:8080/api/abcB.配置location /day06api { pro

2021-06-04 17:11:02 2649

原创 Flink学习笔记(一)

公司项目上要用到实时流处理,选用Flink,所以学习一下。

2021-04-22 10:29:54 117

原创 散列表

一、散列表的由来?1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。3.将数据存储在散列值对应的数组下标位置。二、如何设计散列函数?总结3点设计散列函数的基本要求1.散列函数计算得到的散列值是一个非负整数。2.若key1=key2,则hash(key1)=hash(key2)3.若key≠key2,则hash(key1)≠has

2021-01-04 11:22:40 159

原创 Linux netstat命令详解

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。netstat常用命令参数usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vnNcaeol] [<Socket>

2020-12-23 16:12:44 171

原创 继承JsonSerializer<T>抽象类实现自定义序列化器

自定义序列化器需要继承 JsonSerializer 接口,泛型为需要被序列化的对象 重写 serialize() 方法在需要序列化的实体类上加上注解 @JsonSerialize(using = TemplateSerialize.class)指定序列化器public class GeoJsonPointSerializer extends JsonSerializer<GeoJsonPoint> { @Override public void serialize(G.

2020-12-23 15:48:55 1031

原创 总结:如何优雅的写出链表代码?6大学习技巧

一、理解指针或引用的含义1.含义:将某个变量(对象)赋值给指针(引用),实际上就是就是将这个变量(对象)的地址赋值给指针(引用)。2.示例:p—>next = q; 表示p节点的后继指针存储了q节点的内存地址。p—>next = p—>next—>next; 表示p节点的后继指针存储了p节点的下下个节点的内存地址。二、警惕指针丢失和内存泄漏(单链表)1.插入节点在节点a和节点b之间插入节点x,b是a的下一节点,,p指针指向节点a,则造成指针丢失和内存泄漏的代码:p—&g

2020-12-14 09:38:13 78

原创 tcp dump 详解

简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。实用命令实例默认启动tcpdump普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。监视指定网络接口的数据包tcpdump -i eth1

2020-11-30 16:49:21 5288

原创 oracle判断表中字段是否存在

select count(*) from USER_TAB_COLUMNS where TABLE_NAME = 'TABLE-NAME' AND COLUMN_NAME = 'COLUMN_NAME';返回结果为1表示存在0为不存在

2020-11-18 21:58:33 1029

原创 spring batch简介与使用

spring batch简介与使用

2020-11-15 23:10:26 169

原创 性能调优

压测cpu压不上去压测cpu使用率50%左右,有大量iowait,使用arthas追踪慢方法,发现lettuce耗时很长,联系redis中间件组,解决服务端的问题,cpu可达到90A%查看慢方法命令:trace 类路径 类方法名示例:trace com.xxx.helper.impl.xxxxImpl useExchangeVoucher...

2020-10-30 15:39:52 117

原创 日常小问题汇总

Maven 相关执行maven命令是,带有’.'的值要用引号包起来。

2020-10-25 22:48:10 97

原创 使用Hibernate Validator校验接口入参并使用自定义校验器

Hibernate Validator是用来做什么的?JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,用于对 Java Bean 中的字段的值进行验证。Hibernate Validator则是Hibdernate提供的一种对该规范的实现。——即Hibernate Validator是用来做参数校验。使用Hibernate Validator提供的注解进行参数校验引入依赖<dependency> <groupId>org

2020-10-17 14:22:33 451 1

原创 解决redis序列化java8 LocalDateTime错误的问题

报错信息Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator

2020-09-08 15:59:21 802 1

原创 mongodb自动创建Id

创建MongoDB文档时,如果没有赋值ID,系统会自动帮你创建一个,通常会在客户端由驱动程序完成。ObjectId使用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串。其含义分别代表时间戳(4字节)、机器码(3字节)、PID(2字节)、计数器(3字节)。时间戳是文档创建时的时间,只是从十进制转化成了十六进制。机器码是生成文档主机的ID,为了区分多主机而生成的。PID则是区分同主机下不同mongoDB进程产生的,同样防止冲突。前面的9个字节是保证了一秒内不同机器不同进程生成ObjectId

2020-08-30 22:56:35 2345

转载 一起来读Spring源码吧(四)循环依赖踩坑笔记

一起来读Spring源码吧(四)循环依赖踩坑笔记源起在开发过程中,遇到需要把方法调用改为异步的情况,本来以为简单得加个@Asyn在方法上就行了,没想到项目启动的时候报了如下的错误:Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'customerServiceImpl': Bean with name 'customerServi

2020-08-13 09:37:08 926

原创 Spring依赖循环问题

Spring依赖循环问题最近在写项目时,新加了一个@Asyn方法,本来能够正常运行的代码,报了如下错误:Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘apolloInfoService’: Bean with name ‘apolloInfoService’ has been injected into other beans [

2020-08-12 18:26:24 795

原创 什么是GraphQL

什么是GraphQLGraphQL一种API查询语言。这正是GraphQL的强大之处,引用官方文档的一句话:ask exactly what you want.我们在使用REST接口时,接口返回的数据格式、数据类型都是后端预先定义好的,如果返回的数据格式并不是调用者所期望的,作为前端的我们可以通过以下两种方式来解决问题:和后端沟通,改接口(更改数据源)自己做一些适配工作(处理数据源)一般如果是个人项目,改后端接口这种事情可以随意搞,但是如果是公司项目,改后端接口往往是一件比较敏感的事情

2020-08-06 20:34:08 534

原创 设计模式之美学习笔记——规范与重构

当创建逻辑比较复杂,是一个“大工程”的时候,我们就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用相分离。何为创建逻辑比较复杂呢?下面两种情况。第一种情况:类似规则配置解析的例子,代码中存在 if-else 分支判断,动态地根据不同的类型创建不同的对象。针对这种情况,我们就考虑使用工厂模式,将这一大坨 if-else 创建对象的代码抽离出来,放到工厂类中。还有一种情况,尽管我们不需要根据不同的类型创建不同的对象,但是,单个对象本身的创建过程比较复杂,比如前面提到的要组合其他类对象,做各种初始化

2020-08-02 22:02:03 129

原创 设计原则之美学习笔记——设计原则

单一职责1. 如何理解单一职责原则(SRP)?一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的类。单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。2. 如何判断类的职责是否足够单一?不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。实际上,一些侧面的判断指标更具有指导意义和可执行性,比如,出现下面这些情况就有可能说明这类的设计不满足单一职责原则:类中的代码行数、函数或者属性过多;类依赖的其

2020-07-26 23:33:30 135

原创 JAVA优雅停机

JAVA优雅停机项目需要对SpringCLoud做一些优雅停机的改造,所以研究了下linux和java的停机方法,以及业界其他框架的做法。Kill 结束进程在 Linux上,kill 命令发送指定的信号到相应进程,不指定信号则默认发送 SIGTERM(15) 终止指定进程。如果无法终止,可以发送 SIGKILL(9) 来强制结束进程。kill 命令信号共有64个信号值,其中常用的是:2 (SIGINT:中断,Ctrl+C)。15 (SIGTERM:终止,默认值)。9 (SIGKILL

2020-07-20 09:10:38 774

原创 五分钟学会使用 go modules

五分钟学会使用 go modules导读:go modules 是 golang 1.11 新加的特性。如今 1.13 都已经发布了第 7 个小版本了,几乎所有大项目均已开始使用,这自然也包括 Kubernetes 生态中的众多项目。但modules 的各项功能看似简单,却并没有那么好用,于是便想给大家分享一下使用心得,希望大家也能在最短时间内学会 modules 的使用,避免踩坑。modules 是什么?简单说就是包管理,Golang 的包管理素来以混乱著称,以前是依赖 $GOPATH,只要你的代码

2020-07-07 15:27:33 406

转载 设计模式之美学习笔记——面向对象

01.当谈论面向对象的时候,我们到底在谈论什么?面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming面向对象编程都是通过使用面向对象编程语言来进行的,但是,不用面向对象编程语言,我们照样可以进行面向对象编程。反过来讲,即便我们使用面向对象编程语言,写出来的代码也不一定是面向对象编程风格的,也有可能是面向过程编程风格的我们没必要纠结到底是四大特性还是三大特性,关键还是理解每种特性讲的是什么内容、存在的意义以及能解决什么问题。随着编程语言的不断迭代、演化,

2020-07-05 22:26:23 597

原创 JAVA虚拟机类加载机制详解

JVM类加载机制在Java代码中,类型的加载、连接与初始化过程都是在程序运行期间完成的。提供了更大的灵活性,增加了更多的可能性(加载时稍微增加了一些性能开销)。类在虚拟机中的生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。加载查找并加载类的二进制数据。类的加载的最终产品是位于内存找那个的class对象验证文件格式验证元数据验证字节码验证符号引用验证准备为类的静态变量分配内存,并将其初始化为默认值。但时在到达初始化之前,类变量都没有初始化为真正的初始值。数

2020-06-30 11:20:36 281

原创 使用jEnv在Mac下安装管理多个JAVA版本

使用jEnv在Mac下安装管理多个JAVA版本最近在学习jvm,因为Oracle JDK中有些源码因为版权没有开源,比如sun.misc.Launcher类,而openJdk与其代码复用率在90%以上,所以安装openjdk来学习源码,使用jEnv来管理并切换多个Jdk环境。安装OpenJdk在mac环境下,我们使用homebrew方便的安装OpenJDK,brew的官方仓库中没有OpenJDK软件,在cask中有应用包。更新下载库:> brew tap AdoptOpenJDK/openj

2020-06-30 11:18:16 752

原创 深入理解Java SPI机制

深入理解Java SPI机制1.简介SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是解耦*。SPI

2020-06-30 11:14:25 360

转载 UML类图与类的关系详解

虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关...

2019-07-05 10:48:41 198

转载 List,List?,ListObject的区别

定义:声明中具有一个或者多个类型参数(type parameter)的类或者接口,就是泛型类或者接口。泛型类和接口统称为泛型(generic type)。每种泛型定义一组类型形参(formal type parameters),这些类型形参有时也被简称为类型参数(type parameter),例如对于泛型(generic type)List<E>而言,List<Stri...

2019-05-17 09:15:31 1509

原创 spring boot 2.0访问actuator endpoints 404问题

在spring boot 2.0 之后访问/metrics,/routes端点,一直返回404。访问/actuator端点里面只有health和info的信息。{ &amp;amp;quot;_links&amp;amp;quot;: { &amp;amp;quot;self&amp;amp;quot;: { &amp;amp;quot;href&amp;amp;quot;: &amp;amp;quot

2019-02-27 16:56:45 2565

原创 Lombok使用指南

Lombok使用分享一个例子在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此。相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等。那么是否一款插件或工具能够替大家完成这些繁琐的操作呢?...

2019-02-25 20:23:20 927

原创 spring boot使用log4j2配置,以及class path contains multiple slf4j bindings错误处理

spring boot 默认使用logback日志,但现今主流日志框架为log4j2,我们需要对配置文件做一些简单修改。首先修改pom.xml排除系统自带的日志依赖,增加log4j2依赖。&lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spri...

2019-02-12 10:30:31 662

空空如也

空空如也

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

TA关注的人

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