自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android SDK无法下载问题解决

1.解析dl.google.com 域名,拿到对应的服务器地址2.然后找到可以ping通的服务器IP3.修改 hosts 文件,hosts 文件在C:\Windows\System32\drivers\etc 目录下4.打开命令行,刷新 dns 缓存,命令:ipconfig /flushdns5.打开Android Studio下载SDK...

2020-08-04 22:27:19 45

原创 Windows环境将SpringBoot程序注册成为服务实现开机自启和后台运行

由于通过java -jar方式启动的springboot程序需要有一个cmd窗口,无法实现Linux上nohup命令的后台运行效果。所以需要将开发的springboot程序注册成windows服务,实现开机自启和无窗口运行。下载WinSW.NET4.exe下载地址:https://github.com/kohsuke/winsw/releases此文件下载完成之后需要与程序放在同级目录,并修改名称为 程序名.exe。创建初始化服务的xml文件创建一个xml文件,此xml文件也需要与程序同名,用于

2020-07-24 16:11:14 90

原创 redis缓存穿透问题解决方案

缓存穿透是什么意思简单说就是查询的缓存key在redis中不存在,穿透到了数据库层。正常情况下使用redis缓存应该是下面这样的,用户访问到达服务,服务查询redis,如果redis中存在则直接返回。如果redis中不存在,则查询数据库,数据库返回结果。但此时会有一个问题,就是这个条件在数据库中也查不到数据,所以服务拿到了空数据就不会缓存到redis中,然后下次再使用这个条件来访问服务,服务就会再次查询redis和数据库。在流量较大时,则会有压垮数据库的风险。如何解决缓存穿透问题缓存空对象真

2020-07-15 23:03:34 62

原创 parallelStream线程不安全问题分析及解决办法

问题代码public static void main(String[] args) { for (int i = 0; i < 5; i++) { //调用多次,复现多线程的问题 test(); }}public static void test() { //声明数据源集合 List<Integer> list = new ArrayList<>(); for (int i = 0; i <

2020-07-03 14:45:21 149

原创 ubuntu下docker配置国内镜像源

既然都看到这篇文章了,就不解释为什么需要配置国内镜像源了,直接上步骤。此文使用ubuntu环境为Ubuntu 18.04.4 LTS使用 sudo vim /etc/docker/daemon.json 命令新建或编辑文件输入以下内容:{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}注意: 我这里使用的...

2020-04-25 21:50:11 734

原创 Windows下Nginx端口被占用启动失败问题

查询出占用端口的程序使用 netstat -ano|findstr ":80" 查询出80端口的占用情况查询出的 PID 为 13868 , 0。查询PID对应的服务名使用 tasklist /fi "PID eq 13868" 查询出 pid 13868对应的服务名称可以看到服务名称是有道云笔记,到这里的时候,处理方式通常有两种,一种是改注册表,指定其他端口,另外一种是关闭服务,我...

2020-04-01 21:32:02 157

原创 vim配置显示行号

vim配置永久显示行号使用下面的命令打开vim配置文件:vim /etc/vimrc在配置文件最后添加如下配置::set number编辑完成之后保存,重新使用vim命令打开文件,可以看到行号已经显示出来了。vim设置临时显示行号使用vim命令打开文件之后,使用 :set number显示行号。退出vim之后重新打开不会再显示行号。本文由博客一文多发平台 OpenWrite 发...

2020-03-31 21:17:41 201

原创 解决 Got a packet bigger than 'max_allowed_packet' bytes 问题

mysql5.7查询数据抛出以上异常,解决办法:修改mysql配置文件中 max_allowed_packet值,将值调大一些。如果配置文件中不存在此项配置,在 mysqld 项下手动添加一下。例:max_allowed_packet = 16M此参数用来限制mysql server接收数据包大小,最大值为1G...

2020-03-04 16:06:46 107

原创 解决vmware虚拟机挂起后无法连接docker mysql问题

问题描述vmware中安装的centos7系统,安装docker并且运行一个mysql5.7官方镜像启动的容器,正常连接。重启电脑vmeare将centos7挂起,重新启动之后检查docker和mysql容器均正常运行,但使用navicat无法正常连接,报错如下。检查mysql容器是正常运行的解决办法:重启docker服务,命令:systemctl restart docker...

2020-02-23 20:16:25 936

原创 解决 Error creating bean with name 'entityManagerFactory' defined in class path 问题

jpa没标识出ID导致的问题,因为部分表不存在主键,所以生成的代码中对应实体类无 @ID 注解,报错信息中会打印出是哪些类,添加上 @ID 注解重新启动。完整报错信息如下图:调整前代码调整后代码...

2020-02-21 20:23:02 979

原创 解决无法clone码云仓库代码问题

问题截图解决方案使用管理员身份打开cmd输入 netsh winstock reset ,回车重启计算机

2020-02-10 16:32:55 618

原创 mysql ‘Too many connections’问题解决

使用 show variables like '%max_connections%'; 查询配置的连接数,默认是151。 使用 show full processlist; 查询已有的连接信息。查询出来现有的连接基本都是同一台机器的ip,可以推测为项目中连接池配置的连接数较大,因为此服务器为测试服务器,故选择调大数据库连接数。步骤:找到mysql配置文件,windows下一...

2020-02-10 16:27:30 39

原创 docker安装mysql镜像后没有vim问题解决

使用 docker exec -it 容器ID /bin/bash进入mysql容器 使用 apt-get update 更新软件源列表 使用 apt-get -y install vim 安装vim

2020-02-10 16:26:09 513

原创 Java Servlet简单总结

概述什么是Servletjavax包下的一个interface,定义了Java处理web请求的标准,运行于Servlet容器(如 Tomcat,Jetty)中。Servlet有权访问所有的Java API,包括JDBC API。广义的Servlet指实现了Servlet接口的类。Servlet干了什么接收客户端请求容器初始化并调用Servlet,Servlet生成响应内容返回内容给客...

2020-01-06 17:39:12 52

原创 SpringBoot2.2上传文件示例

上传文件代码controllerpublic class PicController { //注入异步线程池 @Autowired private FileThreadPool fileThreadPool; @Autowired private FileService fileService; /** * 图片上传接口 ...

2019-12-13 16:56:41 560

原创 MyBatis源码解析(四) Cache模块

MyBatis的二级缓存MyBatis的缓存分为一级缓存和二级缓存,一级缓存是 SqlSession 级别的缓存,二级缓存是mapper级别的缓存。但是这篇博客主要是介绍mybaits中缓存接口和缓存键接口,以及一些缓存实现。之前写过一篇博客简单介绍了一下Hibernate的两级缓存。链接: https://blog.csdn.net/Letmetell_you/article/detail...

2019-11-30 16:44:30 491

原创 浏览器缓存

HTTP 1.0在HTTP1.0中,可以在服务端设置 Expires 的HTTP头来告诉客户端在多久之后重新请求服务,可以通过 if-modified-since 的条件请求来使用缓存,其中发送时间是文件最初被下载的时间,而不是过期时间。如果文件没有改变,服务器可以响应 304-Not Modified 表示文件未改变,客户端可以继续使用缓存的文件。HTTP1.0中服务器在返回时,可以通过在响...

2019-11-28 10:48:13 475

转载 阿里云ECS启动tomcat卡住

在阿里云上启动tomcat一直卡在Root WebApplicationContext: initialization completed in 2520 ms,每次要等很久才会启动项目 ,等待时间那叫一个长啊参考了文章:http://www.bubuko.com/infodetail-2557959.htmlhttps://blog.csdn.net/wwdwjm/article/deta...

2019-11-15 14:03:35 65

原创 druid连接池过多Sleep连接解决办法

定时任务,多线程下查询插入数据情情况下,发现程序跑一段时间就会卡住,查询数据库发现很多的Sleep连接,数量刚好就是我在配置文件里配置的Druid连接数,所以简单分析了下应该是和druid配置有关。然后看到了这篇博客里提到的修改存活时间和检测时间的办法,经过测试解决了问题,这里对作者表示感谢。https://blog.csdn.net/wuhen6390/article/details...

2019-11-02 23:33:05 1877

原创 Idea设置快捷键生成序列化ID

打开 Settings 设置面板,搜索serialization issues ,找到serializable class without 'serialVersionUID' 勾选,然后 选择 Apply ,选 OK,然后回到编辑器页面,光标放在类名上中,然后使用快捷键 Alt + Enter 键生成序列化ID。具体设置位置对照下图...

2019-10-21 09:13:08 119

原创 Java反射桥接方法解析

在阅读mybaits源码的反射模块时,看到了如下的一段代码:/** * 添加 Method 数组到 uniqueMethods * @param uniqueMethods * @param methods */ private void addUniqueMethods(Map<String, Method> uniqueMethods, Method[...

2019-10-17 09:50:59 496

原创 idea打开maven项目卡在finished

惯例,先给解决方案升级maven版本至3.5.2以上maven仓库使用的是阿里云的镜像;idea版本是2019.2;maven版本是 3.5.2;3.5.2这个版本好像有bug,具体原因未深究,解决方案就是在apache官网下载最新的maven,升级之后仓库镜像和本地仓库之类的配置与之前保持相同即可,重新打开项目重新导包即可。...

2019-10-14 13:41:35 929

原创 windows10安装redis

下载github上下载最新(或者你需要的版本)的redis安装包,下载地址如下:https://github.com/microsoftarchive/redis/releases打开点击版本号,进入下载页面,我写这篇博客的时候最新版本是3.2.100。这里需要对不太熟悉redis的同学说明一下 windows 版的redis是由微软官网维护并发布的,所以版本和 https://github...

2019-09-30 09:45:12 263

原创 Integer的parseInt和valueOf的区别

先来看一下下面这段代码String s = "1";System.out.println(Integer.valueOf(s));System.out.println(Integer.parseInt(s));输出结果是什么?没错,一样都是1。两个方法都可以把数字类型字符串转成int类型整数,但是这两个方法还是有一点区别的,valueOf(String s)方法调用了parseInt(S...

2019-09-25 10:39:27 341

原创 纠结学什么编程语言?

为什么要学这个编程语言现在的编程语言多如牛毛,选择学什么语言,是一个需要慎重考虑的问题。作为一个后端程序员,工作中常用的编程语言大概就两种,JAVA和SQL。SQL这门语言可以说是后端程序员的基本功了,JAVA则是要靠这个吃饭了。然而工作之外我用的语言就比较多了,python,php,shell,前端三大件,以及一部分的Go。要不要学习某一门编程语言我看到知乎上有很多关于要不要学习某种语...

2019-09-15 16:05:53 357

原创 Spring源码解析之ConfigurableApplicationContext

UML图接口的作用从上面的UML图中,可以看到 ConfigurableApplicationContext 直接继承了 ApplicationContext, Lifecycle, Closeable 接口,所以 ApplicationContext 是 ApplicationContext 的子类。用过Spring或者看过Spring源码的,肯定都知道ApplicationContext...

2019-09-06 15:07:12 541

原创 Spring全局异常处理

spring,springmvc版本:4.0.6.RELEASElombok版本:1.18.81.配置包扫描,扫描到全局异常处理类springboot放在启动类同级的包,会自动扫描并装配。非springboot项目,需要在spring配置文件里配置包扫描。贴一下代码,具体操作步骤省略。<context:component-scan base-package="com.hj.han...

2019-08-30 11:09:11 49

原创 centos7下运行phantomjs报phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open

执行以下安装命令:yum -y install fontconfig-devel

2019-08-27 17:07:11 1660

原创 idea控制台中文乱码问题解决

在windows10 1903环境下测试可行,其他环境修改方式大同小异,但未进行测试。解决方案修改 C:\Users\你的用户名.IntelliJIdea2019.1\config\idea64.exe.vmoptions在文件的最后一行添加 -Dfile.encoding=UTF-8 ,然后保存,重启idea即可修复文件乱码的问题。附上我本机的 idea64.exe.vmoption...

2019-08-22 11:01:16 90

原创 无法向Windows服务器拷贝文件

解决办法:调出任务管理器 找到 RDP 剪贴板监视程序 ,右键结束任务;也可以在 详细信息 找到 rdpclip.exe 文件,点击右键结束任务,如果有多个则关掉所有的 rdpclip.exe 服务 打开 cmld 窗口,输入 rdpclip.exe 回车,启动 剪贴板监视服务 即可拷贝文件到服务器...

2019-08-16 10:21:36 575 1

原创 SpringBoot优雅停机

1.让一个SpringBoot服务停机有几种方案kill端口,这种方式简单粗暴,但是有缺陷,就是还没处理完的任务也就直接挂掉了,影响用户体验,也容易产生错误数据,尤其是当你的服务是微服务的时候,调用方就很被动了。关闭tomcat,这种方式要求你的服务是 war 包方式打包部署的,对于 jar 包的内嵌tomcat 并不适用通过spring提供的 SpringBoot Actuator来关闭...

2019-08-08 09:23:42 376

原创 Invilad value for getInt() - 'xxx'

环境是MyBatis + MyBatis Plus + MySQL 5.7 + SpringBoot 2.x。使用mybaits-plus的查询方法映射数据到对象时报错,错误信息在下面有贴。异常代码:List<WxPublicAccountInfo> list = wxPublicAccountInfoMapper.selectList(null);先说一下我的解决方案,然后再...

2019-08-07 17:39:55 112

原创 JAVA值传递与引用传递

回顾一下数据类型JAVA的数据类型分为基本类型和引用类型两种。基本类型包含 byte short int long char double boolean。引用类型包括类,接口,数组等。包装类型属于引用类型肯定都知道了,需要注意的是,String属于引用类型。基本类型是分配在栈里的,而引用类型是分配在堆里的,内存中存的是引用类型对象的引用地址。值传递与引用传递引用类型传递时会改变对...

2019-08-06 15:26:08 69

原创 Tomcat热部署

解决的问题只更新一个或多个class,不更新整个war包。更新时不重启项目。测试Tomcat8.x版本可用。解决办法在 conf\Catalina\localhost 目录下新建一个名为 ROOT.xml 的文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><Context antiResourceLocking="false"...

2019-07-23 13:59:12 153

原创 JAVA的反射

什么是反射在运行时通过Class对象动态获取类信息,并且可以操作类或对象的内部属性。反射可以动态创建对象并调用其属性。而这种动态获取信息以及动态调用对象方法的功能就是JAVA的反射。反射可以做什么开发框架,例如Spring中动态创建beanIDE的代码提示调试器,例如IDEA里的 Watches一段简单的反射代码//根据类的全限定名通过反射获取实例Class<?> ...

2019-07-22 15:00:36 46

原创 一次技术思维导致的失败

需求的诞生我想了一下这个标题是叫《一个伪需求造成的惨案》还是 《程序员的产品思维》或者《记一次失败的产品开发经历》,最后还是决定用一个比较通俗的名字比较能简明的表达这个事件的全部内容。事件背景:由于我有看电影的爱好,但是我喜欢看的经典电影往往散布在各大平台,且由于部分电影年代久远导致常见的主流平台可能都没有,于是我盯上了那些电影资源网站。这次事件中的平台是电影天堂,选择这个是因为朋友推荐说...

2019-07-21 01:07:59 72

原创 MySQL text类型对应mybatis jdbcType类型

MySQL 的 text 类型对应 JAVA 中的数据类型是 String。对应MyBatis的类型是 LONGVARCHAR 。例:<result column="field1" property="field1" jdbcType="LONGVARCHAR" />注意,在MyBatis支持的JDBC类型中是没有 TEXT 类型的,如果在 mapper.xml 中指定了 TE...

2019-07-19 11:14:55 7991

原创 MyBatis源码解析(二) 解析器模块

mybatis源码解析系列源码基于 3.5.2-SNAPSHOT 版本,截至笔者开始写第一篇源码解析时这是官方的最新master分支。写文章的过程中参考了很多大佬的文章和思路,以及一些为了解释清楚所必须的图。如有侵权,请联系删除。参考内容:芋道源码博客 《MyBatis技术内幕》以及其他很多文章及书籍,以及开源项目,不一一列举。引言:在之前的项目结构概览里提到了初始化项目的时候解析 my...

2019-07-17 23:23:44 124

原创 mybatis源码解析(一) 项目结构概览

mybatis源码解析(一) 项目结构概览mybatis源码解析系列源码基于 3.5.2-SNAPSHOT 版本,截至笔者开始写第一篇源码解析时这是官方的最新master分支。写文章的过程中参考了很多大佬的文章和思路,以及一些为了解释清楚所必须的图。如有侵权,请联系删除。参考内容:芋道源码博客 《MyBatis技术内幕》以及其他很多文章及书籍,以及开源项目,不一一列举。1.整体架构M...

2019-07-16 12:55:32 151

原创 mybatis源码解析(零) MyBatis简单介绍

mybatis源码解析(零) 项目结构概览mybatis源码解析系列源码基于 3.5.2-SNAPSHOT 版本,截至笔者开始写第一篇源码解析时这是官方的最新master分支。写文章的过程中参考了很多大佬的文章和思路,以及一些为了解释清楚所必须的图。如有侵权,请联系删除。参考内容:芋道源码博客 《MyBatis技术内幕》以及其他很多文章及书籍,以及开源项目,不一一列举。在真正开始梳理M...

2019-07-16 12:53:13 80

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