自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (3)
  • 收藏
  • 关注

转载 volatile的设计原理,得从硬件CPU说起

原文链接:https://mp.weixin.qq.com/s/WTqdSz-lc5zzelJgk4Co8g写volatile的文章非常多,本人也看过许多相关文章,但始终感觉有哪里不太明白,但又说不上来说为什么。可能是过于追求底层实现原理,老想问一个为什么吧。而写这篇文章的目的很简单,就是突然之间明白了volatile为什么要这样设计了。好东西当然要拿出来分享了,于是就有了这篇文章。我们就从硬件到软件,再到具体的案例来聊聊volatile的底层原理,文章比较长,可收藏之后阅读。CPU缓存的出现最初的CPU是

2021-10-13 17:39:28 600

原创 springboot如何修复log4j2远程代码执行漏洞CVE-2021-44228(一行代码解决)

log4j2的漏洞被爆出来这两天忙着修复负责的各系统的漏洞,一般maven的非springboot项目直接升级版本即可、但是springboot项目中就算你使用的是logback来输出日志,仍然会存在漏洞的可能,log4j-api这个包是在spring-boot-starter-logging中,只要你使用的是2.0版本以上的springboot就会有此漏洞。废话少说了直接上代码,版本一:既然log4j的相关依赖在spring-boot-starter-logging中那么直接用进行排除然后引入高本.

2021-12-15 22:08:06 1043

原创 docker镜像pull不下来最终解决方法

https://www.cnblogs.com/wang50902/p/11378202.html

2021-09-15 20:35:26 4217

原创 springboot整合rabbitMQ并配置消息确认(生产者消息确认和消费者消息确认)

RabbitMQ简介RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括:可靠性(Reliability)RabbitMQ 使用一些机制来保证可

2021-08-04 15:26:10 1604 5

原创 Java内存模型

为什么定义Java内存模型?现代计算机体系大部是采用的对称多处理器的体系架构。每个处理器均有独立的寄存器组和缓存,多个处理器可同时执行同一进程中的不同线程,这里称为处理器的乱序执行。在Java中,不同的线程可能访问同一个共享或共享变量。如果任由编译器或处理器对这些访问进行优化的话,很有可能出现无法想象的问题,这里称为编译器的重排序。除了处理器的乱序执行、编译器的重排序,还有内存系统的重排序。因此Java语言规范引入了Java内存模型,通过定义多项规则对编译器和处理器进行限制,主要是针对可见性和有序性。.

2021-07-02 10:29:39 89

原创 docker build 后面为什么要跟个 .

我们在构建镜像文件时无非是使用:docker build -t test/ubuntu:v1 . 或者 docker build -f /docker/test/Dockerfile .来进行构建镜像 ,用第一个命令时任务. 指代的是当前目录下的dockerfile ,但是第二个命令-f指定了dockerfile的目录所以肯定不是当前目录.是上下文路径上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径..

2021-02-09 18:22:00 1749

原创 SpringBoot+Hutool工具类Excel工具-ExcelUtil实现excel文件的导入导出

Hutool会用的话极大了简化了操作Excel的过程,提高开发效率,废话少说上代码。excel文件导出: public void downLoadFile(IpIntelligenceDTO dto,HttpServletResponse response) { String outFileName = "测试文件名"+System.currentTimeMillis()+".xlsx"; String ENCODING="UTF-8"; List<Map<String,

2020-10-23 17:34:54 9563 9

转载 Kafka反解域名导致发消息失败::java.io.IOException: Can‘t resolve address: xxx主机名:9092

背景描述: 在虚拟机集群上搭建了zk、kafka(version:0.11)集群,在控制台上测试生产消费时正常。而后在windows端使用java api向虚拟机消费端生产发送数据,发现程序正常运行起来过了大概十秒后结束( exit code 0),但在虚拟机开启的消费者端并没有收到...

2020-10-14 16:13:23 2506 1

原创 spring data jpa 实体类中字段不与数据库表映射

-------想要实体类与字段不与数据库表映射可以使用SpringDataJPA的注解 @Transient @Transient private Date time;当我们给这个属性添加get方法时,@Transient注解会失效,仍然会报数据库字段映射不到的错误。 @Transient private Date time; public Date getTime() { return new Date(); }此时将@.

2020-10-14 13:50:38 3796

转载 浅谈jvm的GC(垃圾回收)

1. 什么是 GC?GC,全称是 Garbage Collection (垃圾收集)或者 Garbage Collector(垃圾收集器)。在使用 C语言编程的时候,我们要手动的通过 malloc 和 free来申请和释放数据需要的内存,如果忘记释放内存,就会发生内存泄露的情况,即无用的数据占用了宝贵的内存资源。而Java 语言编程不需要显示的申请和释放内存,因为 JVM 可以自动管理内存,这其中最重要的一部分就是 GC,即 JVM 可以自主地去释放无用数据(垃圾)占用的内存。我们研究 ...

2020-09-07 17:34:24 273

原创 springcloud-alibaba学习--springboot-springcloud及alibaba三者版本选择

首先springcloud是依赖于springboot创建,springcloud-alibaba又是依赖于springcloud的体系的,所以版本选择顺序应该是springboot---->springcloud----->springcloudalibaba,你确定了springboot版本之后再去官网查询对应的springcloud版本及springcloudalibaba版本。例如我本次选择的springboot版本是2.3.3去查阅springcloud-alibaba官网资料

2020-09-03 17:46:20 3045

转载 推荐6款常用的Java开源报表制作工具

推荐6款常用的Java开源报表制作工具 openkk 9年前发布 | 89K 次阅读 Java 报表 JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports 支持PDF、HTML、XLS

2020-08-28 14:07:16 2966

转载 Redis分布式锁的正确实现方式

前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁.

2020-08-24 15:48:49 189

转载 谈谈对CAP定理的理解

谈谈对CAP定理的理解CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二。这个解释很让人费解,笔者在看了一些文章后谈谈我对它的理解,还请斧正。从问题出发假设我们用一台服务器A对外提供存储服务,为了避免这台服务器宕机导致服务不可用,我们又在另外一台服务器B上运行了同样的存储服务。每次用户在往服务器A写入数据的时候,A都往服务器B上写一份,然后再返回客户端。一切都运行得很好,用户的..

2020-08-19 16:45:40 228

原创 springboot项目启动产生随机端口号并校验该端口号是否被占用

当一个springboot应用想要启动多个实例时,最简单的是改变端口,在服务启动的时候能随机生成一个可以使用的端口是最好不过的,你就不需要手动的去修改application.properties文件手动的去修改然后重启项目费时费力。不多说直接上代码:public class StartCommand { private Logger logger = LoggerFactory.getLogger(StartCommand.class); public StartCommand

2020-08-19 13:47:26 1488

原创 java.sql.SQLException: The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more tha

Springboot整合Mybatis,启动程序访问接口后报错::java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to

2020-08-18 15:42:50 2550

转载 mysql -- 递归查询所有子节点

有个需求,查询一个文件中的所有子目录的文件及文件夹。实现1. 数据库设计首先, 建立一张 t_files 表, 模拟文件树结构。 create table `t_files` ( id int auto_increment, file_name varchar(100) default '', file_type tinyint(4) default 0, parent_id int null, update_time timestamp null, primary key

2020-08-07 13:49:59 4101

转载 Eclipse SVN插件比较 Subclipse vs Subversive

Eclipse 下连接 SVN 库有两种插件 —— Subclipse 与 Subversive ,可以说这两种插件都是非常优秀的插件,而对于使用者来说,选择使用哪种插件确实是个挺头疼的选择。Subclipse 主页位于 http://subclipse.tigris.org/ ,与SVN(http://subversion.tigris.org/)联系紧密,我 们可以称之为 SVN 官方的 eclipse 插件。而Subversive 则是 eclipse 官方的 SVN 插件,主页位于 http:/

2020-07-01 16:18:52 538

原创 window某个端口被占用,如何释放该端口

查看所有端口:netstat -aon(不常用) 查看端口的pid, 根据pid获取对应的进程,释放该进程(杀进程) 查找指定端口信息,最重要的是获取到pid,如8888:netstat -aon | findstr "8888" 如下所示获取到的端口的pid是12652查看PID对应的进程:tasklist | findstr "12652"该进程是firefox.exe结束该进程:taskkill /f /t /imchrome.exe...

2020-06-29 14:56:05 1478

转载 vscode 前端常用插件推荐

1.  vscode 简介vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscode重新定义(redefined)了代码编辑器。 当前市面上常用的轻型代码编辑器主要是:sublime,notepad++,editplus,atom这几种。 比起notepad++、edit...

2020-06-02 10:13:55 540

转载 json串如何进行转义(双引号拼接转义字符)

后台处理直接上代码: public String ToJson(String strjson) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < strjson.length(); i++) { char c = strjson.toCharArray()[i]; //转换为字节数组 switch (c)

2020-06-01 15:03:11 2854

转载 HashMap报错:java.util.ConcurrentModificationException

       HashMap是线程不安全的 ,那么为什么说它是线程不安全的呢?      首先来看一下官方API有关HashMap线程不安全的描述:Note that this implementation is not synchronized. If multiple threads access a hash map concurrently, and at least one of th

2020-05-28 15:48:48 990

转载 js中let和var定义变量的区别

声明后未赋值,表现相同:function() { var varTest; let letTest; console.log(varTest); //输出undefined console.log(letTest); //输出undefined });使用未声明的变量,表现不同:function() { console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行) console.log

2020-05-21 16:30:10 134

原创 拼接html标签绑定事件方法参数传递报错:ReferenceError: xxx(变量) is not defined 解决办法

bug复现(直接上错误代码);formatter: function(cellvalue, options, rowObject) { var temp = '<span class=\"btn-container center\" id=\"' + rowObject.id +'\"><a href=\"javascript://\" data-btn=\"btn\" class=\"compact l-btn \" style=\"height: 18px;\"

2020-05-21 13:45:27 3760

转载 太赞了!两个技巧帮你记住复杂 Linux 命令!

Linux 经历这么多个年头了,其中命令越来越多,又加上参数的多种多样,就算是实打实的高手也没有十足的把握能把各种命令运用得炉火纯青,就别说那些初学者了。面对这些复杂难记的命令,网上的一些工具如 Keep,Bashpast CLI,Pet 等可以帮助我们记录这些复杂的命令。不过这几个学起来有点难度,而且还需要下载特定的工具,比较麻烦。这里推荐两个小技巧,可以很方便地给一些复杂命令加上标签,使用的时候可以根据标签快速找到对应命令,简单高效!给 Li...

2020-05-18 17:37:26 130

原创 使用HttpClient MultipartEntityBuilder 上传文件,解决返还参数中文文件名乱码问题

使用httpclient调用文件上传接口,做上传文件的操作,直接上代码: 第一个参数是请求路径,第二个参数是文件本地路径 public static String doPostUploadFile(String url, String filePath) throws FileNotFoundException { CloseableHttpClient client = HttpClients.createDefault(); HttpResponse response = nu..

2020-05-12 18:17:46 1665 2

原创 onclick点击事件传参带有特殊字符串破坏参数传递问题解决方案

onclick方法(其他的事件方法也一样)参数中有单引号、双引号、空格等一些特殊字符串的时候会破坏,参数传递的结构,导致方法调用失败.不多说直接上代码: <a class='clear' href='javascript://' onclick="javascript:getPage('${student.id}','${student.name}','${student.grade}'...

2020-04-08 12:42:30 2211

原创 redis学习笔记一:redis构建一个简单的文章投票网站的后端。

限制条件:如果一篇文章获得了至少200张支持票,那么就认为这篇文章是一篇有趣的文章,如果网站每天发布1000篇文章,而其中五十篇文章符合文章有趣的要求,那么网站要做的就是将这50篇文章放到文章列表前100位至少一天(暂时不提供反对票的功能)。得分计算方式:产生一个能够随着时间流逝的不断减少的评分,程序需要根据文章的发布时间和当前的时间来计算文章的评分,具体的办法就是:将文章得到的支持票...

2020-01-15 17:24:40 939

原创 python简介

Python简介Python的历史: 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,还有对列表、字典等核心数据类型,同时支持以模块为基础来构...

2020-01-02 16:08:37 210

原创 JSP和Servlet是什么关系,JSP工作原理?

JSP和Servlet是什么关系其实这个问题在上面已经阐述过了,Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容。JSP本质上是Servlet的一种简易形式,JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全...

2019-12-24 11:29:15 2139

转载 会打麻将你就会区块链了

                                      中国麻将:世界上最早的区块链项目最近区块链...

2019-12-23 10:02:14 184

转载 sql优化经典例子

场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表create table Course( c_id int PRIMARY KEY, name varchar(10) )数据100条学生表:create table Student( id int PRIMARY KEY, name varchar(10) )数据70000条学生成绩表SCC...

2019-12-20 13:49:48 142

原创 Mysql的explain关键字详解

使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。explain执行计划包含的信息其中最重要的字段为:id、type、key、rows、Extra各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序三种情况:1、id相同...

2019-12-19 13:40:13 754

转载 程序员工具箱(附各种工具的下载地址)

前言这期是被人才群交流里,还有很多之前网友评论强行顶出来的一期,就是让我介绍自己常用的一些工具给他们安利一下,我一听很高兴呀,帅丙我这么乐于奉献的人是吧。主要是能水一篇文章就很开心,不过写下来发现花的时间完全不比写技术少,点赞!!!千万不要白嫖,真香警告⚠️。但是我在构思这篇文章的时候发现我贴个标题,然后发下软件信息会不会太乏味了,于是创作鬼才我呀,准备用一个产品的研发流程,是的就是用这...

2019-12-12 16:18:38 2932

转载 HttpClient中的超时设置详解

最近项目中在使用HttpClient有三个超时(connectionRequestTimeout,connectTimeout,socketTimeout)时间理解得不是很透彻,API文档不是很理解,专门写Demo理解了一下。API的描述如下:/** * Returns the timeout in milliseconds used when requesting a conn...

2019-12-10 16:57:51 2448

原创 Eclipse Java,debug模式启动进入断点但无法调试,调试按钮全部置灰且F5,F6;F8无法使用的解决办法

使用eclipse的debug模式启动项目,有时候会遇到进入断点中,但是卡死的情况,无法下一步且无法跳出的情况,基本上项目是卡死了,重启eclipse,仍然会出现这种问题,重启电脑可以解决但是太繁琐.如下图:关闭eclipse--->打开 Eclipse 目录下的 configuration 下的 org.eclipse.osgi, 清空这个目录。重启eclipse,...

2019-11-18 17:43:00 3680 6

原创 idea中执行“npm”命令,提示'node' 不是内部或外部命令,也不是可运行的程序

你安装了nodejs,并且配置了环境变量,并且在cmd命令行窗口可输出npm还有node,但是你在idea的Terminal中输入命令中输入npm仍然提示不是内部命令.idea中的输出如下:cmd的输出如下: 解决办法一 查看idea的Terminal的设置的是不是本地的cmd地址 File——>Settings——>Tools——>Termina...

2019-11-14 14:29:27 13168 7

原创 快速搭建自己的git仓库(gitlab+docker)

简介:GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务,我们可以使用它来搭建自己的Git仓库。gitlab服务搭建Linux下的docker方式来进行搭建gitlab服务,docker不熟悉的朋友可点击:这里.环境准备:centos版本: c...

2019-11-13 17:31:16 423

转载 RabbitMQ使用教程(超详细)

推荐springCloud教程:https://blog.csdn.net/hellozpc/article/details/83692496推荐Springboot2.0教程:https://blog.csdn.net/hellozpc/article/details/82531834文章目录RabbitMQ实战教程1.什么是MQ2.RabbitMQ2.1.RabbitMQ的简介2.2.官...

2019-11-08 12:24:35 139241 25

转载 JWT生成Token登录校验讲解,看完保证你学会!

JWT简介JWT(json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。基于session的登录认证在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式。用户登录成功,服务端会保证一个session,...

2019-11-06 14:56:39 1034

VueLearnNotes.rar

Vue学习笔记 - [01-ES6补充](./01-ES6补充/01-ES6补充.md) - [02-HelloVue](./02-HelloVue/02-HelloVue.md ) - [03-插值操作](./03-插值操作/03-插值操作.md ) - [04-动态绑定属性](./04-动态绑定属性/04-动态绑定属性.md) - [05-计算属性与侦听器](./05-计算属性与侦听器/05-计算属性与侦听器.md ) - [06-事件监听](./06-事件监听/06-事件监听.md ) - [07-条件判断](./07-条件判断/07-条件判断.md) - [08-遍历循环](./08-遍历循环/08-遍历循环.md) - [09-综合练习](./09-综合练习/09-综合练习.md) - [10-v-model](./10-v-model/10-v-model.md) - [11-组件化开发](./11-组件化开发/11-组件化开发.md) - [12-组件化高级](./12-组件化高级/12-组件化高级.md) - [13-vue实例的生命周期](./13-vue实例的生命周期/13-vue实例的生命周期.md) - [14-前端模块化](./14-前端模块化/14-前端模块化.md) - [15-webpack](./15-webpack/15-webpack.md) - [16-vue-cli](./16-vue-cli/16-vue-cli.md) - [17-vue-router](

2020-06-05

常用的工具类文件

java开发常用的 涵盖基本常用的工具类文件

2018-10-26

关于spring的AOP ,IOC,DI的理解

帮助初学者理解spring框架,有助于提高代码能力java.sql.SQLException: Duplicate entry '2' for key 'PRIMARY' Query: insert into transaction values(?,?,?,?,?) Parameters: [2, 6212999999999, 转出, 6000000, Wed May 17 07:51:00 CST 2017]

2017-09-11

空空如也

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

TA关注的人

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