自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

doubiy的博客

Java技术分享

  • 博客(56)
  • 收藏
  • 关注

原创 Windows安装go语言开发环境

然后重新安装这些插件(重新安装插件的触发方式:安装失败后有可能会重新在右下角弹出安装插件的提示;这些插件的作用是,对go语言代码的合法性检查以及提示(比如提示有哪些方法可以使用、保存时自动导入没有导入的包、去除没有使用的包(没有使用的包导入后会不合法)等等)这里安装插件时,由于需要使用国外的网络,可能会失败,那么最简单的解决方案就是设置go语言环境变量中的proxy为国内的代理地址。当我们用vscode写go语言代码时,会在vscode的右下角弹出安装相关插件的提示,那么全部安装即可。正常显示则安装完成。

2024-07-20 17:11:51 535

原创 Java调用http接口的几种方式(HttpURLConnection、OKHttp、HttpClient、RestTemplate)

Java作为后端语言是开发接口实现功能供客户端调用接口,这些客户端中最主要是本项目的前端;但有时候也需要Java请求其他的接口,比如需要长连接转短链接(请求百度的一个接口可以实现)、获取三方OSS签名、微信小程序签名、甚至是本公司其他团队项目的接口等等都需要Java调用其他的接口,这时候就需要用Java发起相应的请求,这里以发起http请求为例介绍几种方式。本文示例涉及的service(被调用方)和client(调用方)的接口代码如下(均以spring boot搭建的项目):代码:文件上传参数类:配置信

2024-04-14 21:21:36 3166

原创 docker安装nessus服务及使用

Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,现在软件服务越来越多,越来越复杂,涉及的数据也更多;因此系统完成后对于系统漏洞的检测并对其进行修改十分有必要,本文介绍通过docker安装nessus服务及简单的使用。

2024-04-14 16:14:30 848

原创 Java注解及自定义注解

1、格式:元注解public @interface 注解名称{注解属性列表(即接口中的抽象方法)/*** 测试注解1。

2023-10-26 23:31:23 612

原创 Java反射

Class类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的信息(正常是通过类创建对象,而反射则通过对象获取类信息),针对任何想动态加载、运行的类,唯有先获得相应的Class对象。对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象。

2023-10-26 12:44:09 457

原创 Java泛型

JDK5引入的一个新特性,泛型提供了编译时类型的安全检测机制,该机制可以在编译时检测到非法的数据类型;泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数(用List来举例说明下:)。//比如List源码的定义是://这里的List,就是使用E来表示当前List实际的数据类型(泛型标识),但E只是一个参数,而具体的类型则是由创建 List 对象时明确定义(使用时需要将泛型标识替换为具体的类型),

2023-10-26 00:24:12 250

原创 Java 枚举类

类的对象只有有限个且确定的,这种类称之为枚举类;因为在jdk1.5之前没有enum关键字来定义枚举类,只能采用class定义一个类然后将类做一些修改满足对象个数有限且确定,那么这种类就是枚举类;而在jdk1.5及之后就可以直接使用enum关键字来直接定义枚举类,这种方式比之前的方式更简单方便的定义枚举类且代码更明显分辨枚举类;同时是最安全的单例模式,可以避免new、反射、反序列化等方式创建对象破解单例。修饰符(如public) enum 枚举类名称{

2023-10-22 16:05:33 281

原创 spring boot整合常用redis客户端(Jedis、Lettuce、RedisTemplate、Redisson)常见场景解决方案

如果项目中对分布式功能的需求场景不多,推荐使用 Lettuce或Jedis。如果项目中除了对基本的数据缓存操作需求以外,还需要用到分布式锁等功能,推荐采用Lettuce + Redisson组合方式使用(使用Lettuce弥补Redisson对于基础功能支持的不足,为了方便切换Jedis和Lettuce可以通过RedisTemplate来使用Jedis或Lettuce)。

2023-10-01 21:10:08 2573

原创 接口响应成功未有预期结果排查

我这里遇到的情况属于第二种情况,因为特殊的数据,导致查询出来的关联数据为空,后续for循环处理关联数据的逻辑不执行,最终需要insert的数据为空不插入数据,所以最终结果是成功,也没有错误日志但没有预期数据;最终通过修改逻辑避免关联数据为空的情况,避免不新增数据。第二种情况只能通过检验代码逻辑、日志、debug等方式排查代码逻辑问题,很多时候是某些特殊的数据情况没有兼容对应逻辑导致的,当然还有部分是在高并发、集群等情况下才会出现问题,这种需要对相关逻辑做高并发集群的特殊处理。3、代码中的异常被吃掉了。

2023-09-07 21:28:29 181

原创 Java数据库连接池原理及spring boot使用数据库连接池(HikariCP、Druid)

- druid连接池核心包,不是spring boot官方提供的组件一般没有定义默认版本,所以需要指定版本 --> < dependency > < groupId > com.alibaba < artifactId > druid < version > 1.2.8

2023-08-18 23:44:32 2548 3

原创 Java异常处理及spring boot异常统一处理

如果Java自带的异常类型不满足需求时,这时就可以自定义异常,使用自定义的异常去处理一些场景。

2023-08-03 23:25:11 622

原创 Java日志框架JUL、Log4j、logback、log4j2使用

随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手;此时就需要一些日志框架来完成这些事情并且最好能在出现问题时自动捕捉而不需要代码额外的处理,比如记录哪些类型的错误、日志格式、日志分类、日志扩展等等;一般Java有以下日志框架可选择,日志实现:JUL、logback、log4j、log4j2,日志门面:JCL、slf4j。日志框架:用于记录日志

2023-07-26 00:05:08 1927

原创 Linux安装nginx 反向代理 负载均衡 动静分离 高可用等使用

随着软件需求的发展,现在很多的系统都需要保证高可用、高并发,在此需求之下就需要部署的服务能够不间断的提供服务即避免单点故障问题因此系统需要做集群部署同时还能提升qps、tps等指标;集群部署后的服务就需要对用户的请求能够负载均衡,nginx是目前流行的高性能HTTP和反向代理web服务器,占有内存少,并发能力强,能够支持 50000 个并发连接数的响应;主要功能有反向代理、负载均衡、动静分离等。

2023-06-28 00:11:02 1332

原创 浏览器访问任何网页或功能出现 STATUS_STACK_BUFFER_OVERRUN 错误解决方式

浏览器STATUS_STACK_BUFFER_OVERRUN错误解决方式

2023-05-29 17:31:54 16564 4

原创 websocket原理及简单应用

一般做系统开发前后端交互使用最多的就是http协议,但http协议是无状态协议每一次前端发起的请求都认为是一次单独的请求和之前的请求无任何关系,所以我们需要http协议分别用户信息时,就需要使用cookie、session或者现在常用的token等让后端自己实现用户识别等,如果前后端交互非常频繁每次携带公有信息会占用更多的服务器资源,好处是协议本身不需要做信息保存相对可以减少资源开销;

2023-03-03 10:23:15 927 1

原创 centOS7安装rabbitMQ

由于rabbitMQ是使用erlang语言编写的,所以安装rabbitMQ之前,需要先安装erlang环境。这里以安装3.6.15为例:其中版本名称中的el代表的是centOS系统的大版本号,比如 rabbitmq-server-3.6.15-1.el7.noarch.rpm 其中的el7表示当前为centOS7的安装包。

2022-10-28 01:09:56 853

原创 Mybatis plus写入数字类型字段到数据库中失败原因及解决方案

数据库对应字段设置为tinyint(4),在调用Mybatis plus写入数据库时对应字段设置值为200,发现如下报错:Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column ‘number’ at row 1通过以上报错提示知道 number 字段的值超出了范围,那么只需要修改 number 字段

2022-07-03 17:15:59 2086

原创 Mybatis-plus设置某个字段值为null

前提:数据库表对应字段允许为null使用Mybatis-plus操作数据库时,如果未自己写sql而是采用Mybatis-plus的方法设置sql的情况下,默认Mybatis-plus生成sql时会将设置为null的字段忽略掉(不更新该字段);所以默认情况下,使用Mybatis-plus的方法操作数据库时没办法设置一个字段的值为null(除非该字段数据库表设置默认值就为null)。Mybatis-plus设计如此很好理解,比如现在我们的系统中一般都是做逻辑删除即修改删除标记的字段为删除状态的值,此时执行upd

2022-06-20 15:53:51 8385

原创 The table ‘table_name‘ is full 异常排查及解决方案

背景项目上线运行了一年半的时间,在这期间因为需求的修改也做过一些改动,但是这个基础的下单功能从上线后未做过任何改动,且最近半年项目未更新,一直稳定运行包括这个下单功能,但是前天发生了下单失败的情况,最开始也未太多的关注,因为这个下单功能会去调用三方服务做前置操作(三方服务限制订单每个用户每天只允许下单一次,三方服务成功之后才做入库操作),且提示给用户的信息是重复下单,所以用户下单失败且是重复下单的提示是属于正常现象;但是当天后续的订单都是失败重复下单的情况;此时就感觉到不对了。赶紧去查看了该服务的日志信息

2022-06-17 01:18:34 2818

原创 Java Json和yaml转换

在开发过程中json格式的字符串用的是最多的,但是有时候也会遇到yaml格式的字符串;比如k8s的开发中创建资源的时候都是使用yaml去创建,如果api支持json的字符串创建还好,不能支持json格式就只能将对应资源的信息转为yaml格式的字符串了。yaml转json相关的包(snakeyaml包)如果项目中导入了 spring-boot-starter 包,其中已经包含了 snakeyaml 包hutool相关的包(这里主要用于json处理)一般项目中也会导入该包使用该包的其他常用功能;比如字符串

2022-06-12 15:16:39 3481

原创 Jenkins部署spring boot项目

本文介绍使用Jenkins自动打包发布spring boot项目,我们在没有使用持续集成工具的情况下,开发好的spring boot项目更新到master最新的版本,然后通过maven打包,上传jar包到服务器上,通过java -server -jar的形式启动项目;现在我们将这样的流程交给Jenkins去做,那么Jenkins需要负责更新最新的代码以及打包和发布,那么Jenkins需要有这些插件和配置才能去完成这些任务,前提条件是安装Jenkins的机器上本身就有安装jdk、git、maven等,Jenk

2022-06-06 00:13:37 14139 5

原创 Git简介、常用命令介绍、远程仓库、ignore文件、idea中git使用

一、Git简介Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目;易于学习,占地面积小,性能极快; 并且具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。 性能优于 Subversion、 CVS、 Perforce 和 ClearCase 等版本控制工具。版本控制版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统;最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。分布式版本控制与集中式版本控制a、集中式版本控

2022-05-28 01:27:53 364

原创 Linux安装gitLab远程仓库

目前项目中运用最多的代码管理工具就是git;一个项目中往往有多位开发人员,需要实现每位开发人员开发的代码共享和管理,这就需要一个远程仓库让大家使用git提交的记录能够共享到这个仓库中;目前有常用的三种远程仓库可供使用:GitHub、gitee、gitLab;三种远程仓库中gitLab和GitHub使用最多。GitHub是git作者开发的全球项目共享网站,服务器在国外,国内访问会有延迟甚至网络不好影响使用,并且代码在公网上,几乎所有能想到的项目场景上面都有对应的项目解决方案和代码实现;gitee简单理解就

2022-05-23 22:07:46 533

原创 xshell、xftp官方免费版下载

xshell和xftp是最常用的连接服务器和上传下载服务器文件的工具,但是百度找到的官网的下载链接只能下载商业试用版,试用期一过就需要购买许可证才能使用,我们可以找另外的官网下载家庭版与学校版,可以永久免费使用。之所以这里提到另外的官网是因为百度搜索到的靠前的结果都是假官网;很尴尬。xshell官网链接点击下载按钮跳转至下载页拉到下载页最下方点击 家庭/学校免费拉到下方填写姓名和邮箱,姓名可以随便写,但是邮箱必须是可用的邮箱,因为填写完姓名和邮箱之后选择下载的软件点击 下载 按钮会给填写的邮箱发

2022-05-19 19:10:43 463

原创 maven pom.xml解析、命令说明、依赖传递、继承、聚合、properties、build、依赖范围、版本仲裁、profile

maven是当前Java项目中用到最多的依赖管理工具。最开始的项目比较小引入的依赖包也少所以可以通过手动加载jar包的方式来管理依赖包;但随着项目越来越复杂各种大小框架层出不穷,一个项目的开发往往依赖的jar包成百上千,此时再去手动依赖找到这些jar包并且找到它们相互依赖的版本无疑是一个巨大的工程,此时需要一个能够简单解决掉这些依赖关系的工具;maven就解决了这一类的难题,并且maven还可以做项目构建,比如一个spring boot项目打包成一个jar包给项目部署也带了极大的方便。一、POM文件解析

2022-05-02 23:05:54 4102

原创 maven jar包冲突解决方案、导入非maven工程jar包

一、背景一般来说一个项目有成百上千的 jar 包,当这些 jar 包都存在且不发生冲突的情况下项目才能正常运行;一旦发生冲突可能会出现很多意外的异常及错误信息;所以需要解决的就是规范出一套不会发生 jar包冲突的方案;并在其他项目中直接使用;而不是每个项目都来找出一套方案;一般将找出的不会发生冲突的方案以父工程的形式呈现,每个项目都继承该父工程,在该父工程中使用 dependencyManagement 统一管理这些 jar包。二、常见冲突现象一般来说,我们自己编写的代码、配置文件报错所导致的问题通常

2022-05-02 20:14:58 2853

原创 Nexus下载安装及对接

Nexus 3.x官网下载地址Nexus 2.x官网下载地址官网下载需要科学上网,不能下载的话可下载下面两个linux安装包linux nexus-3.31.1-01-unix.tar.gz 提取码:linux nexus-2.14.8-01-bundle.tar.gz 提取码:安装nexus之前,需要服务器已安装jdk:centos7安装jdk、git、maven...

2022-05-01 23:28:25 5774

原创 Java创建线程的三种方式

现在的服务器基本都是多核的CPU,为了尽量利用好CPU资源以及提升吞吐量和响应速度,可以使用多线程的方式讲一个接口的逻辑处理,拆分成几块,最后拼接这几个线程的结果,完成最后的数据响应。...

2022-04-16 21:51:15 268

原创 spring boot整合线程池

多线程在项目中运用的很多,比如告警消息的发送,需要将告警信息推送到运维人员的微信、邮件、短信等等,电商项目提交订单需要查询商品基础信息、库存、优惠信息、优惠券、用户积分、收货地址、快递信息等等;其中涉及到的流程比较长,如果采用单线程的方式总计耗时将是所有流程的时间的总和;采用多线程的方式最好的状态是最长流程的时间,如果这些流程有依赖关系则可以采用CompletableFuture进行编排;因此对于接口响应时长有要求的业务多线程的运用必不可少。一般来说一个项目里面有一个线程池就够了,需要用到多线程的地方使用

2022-04-16 21:44:38 2805

原创 Git切换远程仓库

在开发项目的过程中可能会遇到上云桌面,或者git仓库切换地址等情况,那么就会导致已经开发的代码需要提交到新的远程仓库中,此时可以通过拉取新仓库中的项目同时将还未提交的代码拷贝出来,复制到新拉取的项目中并提交到远程仓库中;但是这种做法有一定的风险;比如在重新提交时某些代码忘记拷贝,或者多个开发人员都修改了某个文件,导致代码遗漏或冲突,如果代码量过多重复性高也容易出错。那么最好的做法就是直接将现有项目的远程仓库切换到新的远程仓库,直接推送代码。切换仓库:在每个git项目的根目录下有一个隐藏的文件夹 .git

2021-12-28 17:16:50 596

原创 MyBatis-Plus inser报错 Field ‘x‘ doesn‘t have a default value/Duplicate entry ‘x‘ for key ‘xxx.PRIMAR‘

二、MyBatis-Plus主键策略MyBatis-Plus GitHub主键策略介绍MyBatis-Plus 官方文档主键策略介绍本篇介绍的是基于mybatis-plus 3.3.2的版本@TableId注解的默认主键策略是 NONE总共有8种主键策略,分别是:AUTO-自动递增NONE-不设置INPUT-自行设置主键可以看到此时的数据库中该表的id主键采用的数据库自增策略,所以采用myabtis-plus时,主键采用了默认的NONE可以看到打印出的执行的SQL也没有插入id字

2021-09-29 18:38:44 4134 1

原创 解决idea中maven导包问题

首先安装好maven之后修改maven的配置文件,主要修改仓库地址信息,比如国外镜像拉取慢配置阿里云镜像仓库,以及如果公司有自己的maven私服的话,往往项目中会用到公司自己封装的jar包,那么也需要提前在maven配置文件中配置私有仓库的信息,否则maven拉取不到这个私有的jar包。首先在idea中配置好maven,主要作用就是让idea使用我们自己安装的maven1、git拉取的项目或者新建的maven/spring boot项目在idea中未标记为maven项目首先正常情况下,我们拉取项目或

2021-09-19 12:42:24 5515

原创 WebService接口的一些问题 org/apache/commons/discovery/tools/DiscoverSingleton Server.userException等等

一般在开发中

2021-09-18 23:09:17 3208

原创 Kubernetes常用命令及yml文件、集群网络

Kubernetes组件介绍及环境搭建一、kubernetes常用命令说明:因为k8s的命令都是通过kubectl组件接收的,这个组件只在master节点有,所以k8s的命令都是在master节点中执行kubectl get nodes #查看当前集群中有哪些机器kubectl label node node-hostname label-key=label-value #为某个节点设置label标签kubectl get namespace/ns #查看当前集群中的namespace

2021-08-11 10:15:49 2003

原创 Windows10无法编辑hosts文件

为了测试nginx的域名路由是否有效,想到了在本地编辑hosts文件,添加域名和服务器ip地址的映射,结果在Windows10中只能打开hosts文件查看,无法编辑或者编辑无法保存。解决方案:右键hosts文件 -> 属性 -> 如果看到下面的只读复选框是勾选的,那么去掉勾选 -> 点击确定如果当前的账号有权限的话,那么就可以编辑了。如果还是不能编辑:在hosts文件的属性中选择 安全 选项 -> 编辑在编辑中找到当前登录的账号并选中 -> 勾选 完全控制 复选

2021-08-06 16:01:50 412

原创 微信扫一扫、分享功能引入JS-SDK后端生成signature及signature和微信网页验证一致前端初始化invalid signature

js-sdk微信官方文档开发微信公众号以及微信小程序的时候,有时候会使用到微信的分享、扫一扫、地理位置等常用功能,此时需要前端使用微信的JS-SDK功能来实现。根据微信开放文档的要求,前端有一步是 “通过config接口注入权限验证配置”这一步中的参数appId、timestamp、nonceStr、signature需要后端生成给到前端,后端生成signature的时候需要去获取两个参数即access_token和jsapi_ticket才能生成signature签名。根据附录1的提示:获取ac

2021-08-03 10:09:36 1078

原创 Kubernetes组件介绍及环境搭建

k8s目前市面上主流的多机多容器编排技术,实现服务的动态扩缩容。一、k8s主要组件介绍1、资源类组件2、命令执行类组件二、k8s集群搭建k8s官网搭建网址 主要介绍了kind、minikube、kubeadm三方搭建方式。本文采用kubeadm的方式搭建k8s集群,采用一主两从的模式,共需三台机器。kubeadm官网链接版本信息(版本不匹配可能会安装不上):docker:20.10.7kubeadm-1.19.0-0kubelet-1.19.0-0kubectl-1.19.0-0

2021-07-29 15:03:39 338

原创 Docker swarm搭建及常用命令、yml文件

一、Docker swarm搭建Docker swarm是多节点容器编排技术,另外一个主流多节点容器编排技术就是k8s;所以前提是需要准备多台Linux机器(并且这些机器能够相互通信,机器名称要有区分,便于观察是哪台机器)以及每台机器都安装docker环境 centOS安装docker 这里以三台机器搭建Docker swarm集群,一台manager节点,两台worker节点;在新版本的docker中已经内置了Docker swarm环境,所以这里只需要将这三台机器按照,一台manager和两台work

2021-07-26 17:12:33 1894

原创 docker-compose常用命令及yml文件编写

一、docker-compose安装docker常用命令、Dockerfile、docker仓库 该篇文章最后有docker-compose的安装教程。docker-compose是一款单机多容器编排工具,在正常使用docker的时候会使用很多命令,在输入这些命令的时候容易出错,而且不便记录执行了哪些命令,如果需要在其他的服务器上也部署同样的一份容器的话又要将这些命令执行一遍,服务器过多工作量也不小;这时使用docker-compose单机部署多容器就非常适用了。二、docker-compose常用命

2021-07-24 17:12:42 16593 6

原创 关于阿里云服务器执行install/--add-repo等需要访问网址的命令出现 “TCP connection reset by peer“错误

一、背景我在使用阿里云服务器安装docker时执行以下命令设置docker拉取image的镜像仓库:yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo安装Docker Engine:yum install docker-ce docker-ce-cli containerd.io出现"GPG key retrieval failed: [Errno

2021-07-22 10:31:19 988

空空如也

空空如也

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

TA关注的人

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