JAVA
文章平均质量分 70
迷思特王
这个作者很懒,什么都没留下…
展开
-
死锁-写一个死锁的例子
在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。原创 2024-03-26 21:29:45 · 716 阅读 · 0 评论 -
maven install 报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test
运行mvn clean install 报错如下:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project rocketmq-client: There are test failures.解决方法:使用命令 mvn clean install -Dmaven.test.skip=true跳过test最终编译成功...原创 2020-11-02 20:42:09 · 2186 阅读 · 0 评论 -
@Transactional源码解析
经常用的事务注解,之前看过源码,今天总结一下源码的执行流程参考https://www.jianshu.com/p/ed1a47ef6b76xml文件中配置事务 <!--配置事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!--控制住数据源--> .转载 2020-10-10 16:04:41 · 988 阅读 · 0 评论 -
使用MyBatis编写SQL时<号报错的问题
使用MyBatis编写SQL时使用符号报错的问题一般我们写sql语句都会有一些条件判断语句,如下 select * from mmall_order where status = '1' and create_time <= '2020.10.05' order by create_time desc但是在使用MyBatis时在XML文件中这样写是要报错的,如下 <select id="selectOrderSta原创 2020-10-05 14:50:20 · 2027 阅读 · 1 评论 -
JVM参数的设置以及在Windows和Linux下运行tomcat时的设置方法
JVM调优里最重要的就是设置JVM参数1. 主要设置的额参数如下所示2. 在Windows和Linux下启动tomcat时的设置方法2.1 Windows操作tomcat目录下的conf文件夹中的catalina.bat文件set JAVA_OPTS=‐server ‐Xms2048m ‐Xmx2048m ‐XX:MetaspaceSize=256m ‐XX:MaxMetaspaceSize=256m ‐XX:SurvivorRatio=82.2 Linux操作tomcat目录下的con原创 2020-10-03 19:38:47 · 231 阅读 · 0 评论 -
Tomcat的配置文件server.xml总结
tomcat的配置文件位于tomcat目录的conf文件夹下。/conf/server.xml下面主要讲解server.xml配置文件的内容和配置方法。源码如下,已去除注释<?xml version="1.0" encoding="UTF-8"?><Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListen.原创 2020-10-03 18:16:56 · 366 阅读 · 0 评论 -
JDK自带JVM内存检测工具jconsole的使用
JDK自带了一个JVM内存检测工具jconsole。它可以实时监控JVM的堆内存、线程、类信息,以及JVM的配置参数。下面介绍其打开及使用方法。已配置了JAVA环境变量的情况下在windows系统下打开命令行输入jconsole回车就可以打开此程序打开之后界面如下图选择本地线程,选中我们要监控的Java进程,点击连接等待选择不安全的连接等待成功进入主界面,就可以查看jvm的内存、线程以及类信息了。内存信息示例:...原创 2020-10-03 15:38:59 · 1142 阅读 · 0 评论 -
Java线程池
1. 线程池的好处降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁的消耗;提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行;提高线程的可管理性:线程是稀缺资源,如果无限创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配,调优和监控;2. 线程池的处理流程判断核心线程池是否已经满了,如果没有,就创建一个新的工作线程来执行任务(即使有其他空闲的基本线程能够执行新任务也会创建线程,等到需要执行的任务数大于线程池基本大小时就不再创建)。如果核心线程池原创 2020-10-02 23:23:08 · 114 阅读 · 0 评论 -
Volatile与Java并发编程的爱恨情仇
volatile作为一种保证内存可见性的收段,无论是在面试中,还是实际使用中,都经常出现。常见面试问题:知道volatile吗?它是怎么保证内存可见性的?它能保证原子性吗?要想彻底明白volatile,就要搞懂它的内存语义。Volatile的内存语义当写一个volatile修饰的变量时,JMM会将该线程对应的本地内存中的变量值刷新到主内存中;当读一个volatile修饰的变量时,JMM会把该线程对应的本地内存置为无效,线程接下来将从主内存中读取变量;内存语义的实现为了实现volatil原创 2020-10-02 20:54:15 · 149 阅读 · 0 评论 -
Java反射源码解析
Java反射机制带给Java无线的想象空间,那么Java反射的底层是如何实现的?1. 先上栗子public class MyReflect { String message; public void hello(String msg) { this.message = msg; System.out.println("Hello Reflect" + " " + message); } public static void main.原创 2020-09-30 21:05:11 · 453 阅读 · 0 评论 -
HashTable源码与总结
作为最原始的线程安全的map,HashTable的实现原理有必要进行分析总结包含的方法API synchronized void clear() synchronized Object clone() boolean contains(Object value) synchronized boolean containsKey(Object key) synchronized boole.原创 2020-09-27 23:34:56 · 269 阅读 · 0 评论 -
缓存更新策略
面试问到缓存的更新策略,今天来总结一下参考作者:不止思考链接:https://www.jianshu.com/p/22c7e9ab5d15概述缓存更新策略是为了保证数据库和缓存的数据一致性。主要有三类更新策略:Cache AsideRead/Write ThroughWrite Behind1. Cache Aside(常用)应用在查询数据的时候,先从缓存Cache中读取数据,如果缓存中没有,则再从数据库中读取数据,得到数据库的数据之后,将这个数据也放到缓存Cache中。.原创 2020-09-27 10:04:22 · 275 阅读 · 0 评论 -
MySQL数据库中innodb引擎的B+Tree的底部到底时单向链表还是双向链表?
单向还是双向?说法不一!在网上搜索这类问题,得到的方案有两种,一种是单向,一种是双向。所以到底哪个是对的呢?今天就来彻底解密官方文档talk is cheap,show me the code真实情况页的概念Mysql的innodb是以页为存储单位的,每个B+Tree的叶子节点都是一个页的大小的倍数,默认一页的大小是16K页结构如下图所示也就是每一个页都包含两个页指针,一个是previous page指针,指向上一个页,一个是next page指针,指向下一个页。头部还有Page的类原创 2020-09-25 18:23:33 · 12128 阅读 · 13 评论 -
数据库索引
https://blog.csdn.net/woshiluoye9/article/details/69665334转载 2020-09-21 10:54:18 · 63 阅读 · 0 评论 -
工厂模式学习笔记
参考https://blog.csdn.net/qq_34337272/article/details/804720711. 简单工厂很少用,先略过2. 工厂方法模式在工厂方法模式中针对不同的对象提供不同的工厂。也就是说 每个对象都有一个与之对应的工厂。通俗的讲就是一个工厂只生产一类产品。2.1 工厂方法模式角色分配1. 抽象工厂(Abstract Factory)角色: 任何工厂类都必须实现这个接口。2. 具体工厂(Concrete Factory)角色: 这是实现抽象工厂接口的具体工厂.转载 2020-08-29 23:49:27 · 125 阅读 · 0 评论 -
Java双重校验锁实现单例模式
为什么要用双重校验锁实现单例模式?单例实现有饿汉模式与懒汉模式,懒汉模式能够延迟加载,使用较多,但是懒汉模式在多线程下会出现问题,即有可能会产生多个实例。下面是懒汉模式实现的单例模式的代码public class SingleTon{ //静态实例变量 private static SingleTone instance; //无参构造函数 private SingleTon(){} //获取单例的公共方法 public static synchronized SingleTon getI原创 2020-08-28 22:53:58 · 453 阅读 · 0 评论 -
HttpServletResponse中添加cookie失败的原因
今天做项目,遇到添加cookie失败的问题找了一个小时的问题,发现问题在于参数设置的问题我请求的是localhost我的cookie放的domain是www.wf.com这两个地方不同导致cookie添加失败,更改为相同即解决问题。cookie设置三要素domain指定了请求路径中字符串,如上只要包含localhost的请求都会有此cookiepathcookie 放置路径,指定cookie放置的请求路径的目录httpOnly设置只能通过http请求得到,非浏览器无法获取原创 2020-08-21 17:57:42 · 2069 阅读 · 0 评论 -
win10配置nginx代理两个tomcat
win10配置nginx代理两个tomcat1. 配置nginx的配置文件如下user www www;worker_processes auto;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65;原创 2020-08-21 15:42:41 · 319 阅读 · 0 评论 -
Cannot obtain primary key information from the database, generated objects may be incomplete
https://blog.csdn.net/babybabyup/article/details/84099469原创 2020-08-08 13:28:11 · 263 阅读 · 0 评论 -
MyBatis操作ORACLE数据库出现无响应,但是在数据库里执行语句是正常的
原因是数据库存在一个事务没有被提交,数据库一直等待该事务提交,造成无响应解决方法:先看一下数据库中未提交的事务select * from v$transaction;删除该行数据重新插入原创 2020-08-07 13:51:43 · 1049 阅读 · 0 评论 -
get方法获取参数方式
https://blog.csdn.net/zyxwvuuvwxyz/article/details/80352712原创 2020-08-03 10:15:24 · 1855 阅读 · 0 评论 -
SSM拦截器设置
https://blog.csdn.net/H_crab/article/details/90449174原创 2020-07-31 10:44:36 · 279 阅读 · 0 评论 -
war包部署tomcat下的webapps中的子目录中的方法
war包部署tomcat下的webapps中的子目录中的方法一般情况下部署war包方式部署到wepapps下的子目录中的方式一般情况下部署war包方式在一般情况下,我们部署服务器都会直接将war包拷贝到tomcat的 webapps 文件夹下,接着启动tomcat之后,tomcat会自动解压war包并运行。部署到wepapps下的子目录中的方式war包拷贝到webapps下会自动解压,但是拷贝到webapps的子目录下不会自动解压。那么我们要通过一些配置完成我们的目标。更改server.xml配原创 2020-07-27 09:41:33 · 2535 阅读 · 2 评论 -
使用IntelliJ IDEA时向Github进行push时报错的解决方案
IEDA向Github进行push项目时经常报错 Push failed Invocation failed Server returned invalid Response. java.lang.RuntimeException: Invocation failed Server returned invalid Response. at org.jetbrains.git4idea.http.GitAskPassXmlRpcClient.askUsername(GitAs原创 2020-07-16 19:32:25 · 1012 阅读 · 0 评论 -
输入一个URL之后到浏览器显示页面期间发生了什么
输入一个URL之后到浏览器显示页面期间发生了什么笔者参加的很多场面试都有问到这个问题,有时候回答的不是很好,今天来总结一下参考了敖丙的文章https://mp.weixin.qq.com/s/I6BLwbIpfGEJnxjDcPXc1A1. HTTP1.1 URLURL称为统一资源定位符,也就是通过这个定位符我们找到网络中的资源,浏览器拿到这个资源进行解析。那么URL包括什么呢?看下图1.2 DNS解析举个例子,百度的服务器有自己的IP地址,但是IP地址一半都是****...****的原创 2020-07-05 11:00:39 · 202 阅读 · 0 评论 -
数组算法之“前缀和”
基于力扣算法题974. 和可被 K 整除的子数组基于https://leetcode-cn.com/problems/subarray-sums-divisible-by-k/solution/you-jian-qian-zhui-he-na-jiu-zai-ci-dai-ni-da-tong/总结1. 什么是前缀和前面的所有,再包括自己(数组 第 0 项 到 当前项 的 总和)如果用一个数组 preSum 表示:preSum[0]:数组A 第 0 项 到 第 0 项 的总和preSu.原创 2020-05-28 09:50:22 · 1592 阅读 · 0 评论 -
自定义HTTP返回json类
自定义HTTP返回json类http请求返回包含状态码,消息以及数据本文介绍通过自定义类的方式,实现一个http返回类型1. 创建类Msg作为用来返回json的通用类类属性字段包含状态码,提示信息,用户要返回给浏览器的数据。 //状态码 private int code; //提示信息 private String msg; //用户要返回给浏览器的数据,采用map存储 private Map<String, Object> extend = n原创 2020-05-20 14:01:24 · 648 阅读 · 0 评论 -
动态规划问题基本思路及例题Java代码
动态规划问题基本思路及例题Java代码看了一篇博主的文章,写的很好,先记录一下,有时间写写自己的理解博主文章原创 2020-04-30 09:23:02 · 223 阅读 · 1 评论 -
java动态代理
Java动态代理Java支持动态代理,使用使用JDK自带的动态代理所需要实现的接口InvocationHandler中的invoke()方法定义代理方法所需类与接口:真实类所需实现的接口真实类实现InvocationHandler接口的配置类目录结构如下:1. 真实类所需实现的接口/** * 〈一句话功能简述〉<br> * 〈代理类和真实类都要实现的一些接口方...原创 2020-04-14 15:13:40 · 95 阅读 · 0 评论 -
java静态代理
java静态代理代理相当于每个歌手都有一个经纪人,歌手只唱歌,经纪人完成唱歌之外的事情。静态代理需要:代理类和真实类都需要实现的接口真实类,并实现接口代理类,并实现接口目录结构如下:1. 代理类和真实类都需要实现的接口/** * 〈一句话功能简述〉<br> * 〈代理类和真实类都要实现的一些接口方法〉 * * @author WF * @create 2...原创 2020-04-14 11:13:50 · 96 阅读 · 0 评论 -
通过自定义注解实现操作日志记录
通过自定义注解实现操作日志记录环境 jdk12+idea+SpringBoot自定义注解@Log自定义一个@Log注解用来记录操作方法的一些信息/** * 自定义操作日志记录注解 * * @author wf * */@Target({ ElementType.PARAMETER, ElementType.METHOD })@Retenti...原创 2020-04-05 16:40:36 · 1375 阅读 · 0 评论 -
JDK12中HashMap源码解读
占坑,待完成原创 2020-04-05 11:15:38 · 204 阅读 · 0 评论 -
JVM运行时内存区域划分——java内存模型
参考大神笔记以jdk1.8为例1. Java 虚拟机规范Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分为若干个不同的数据区域。它们各有用途,有些随着虚拟机进程的启动一直存在(堆、方法区),有些则随着用户线程的启动和结束而建立和销毁(程序计数器、虚拟机栈、本地方法栈)。《Java 虚拟机规范》中规定 Java 虚拟机管理的内存包括以下几个区域:1.1 程序计数器...原创 2020-03-19 15:34:34 · 142 阅读 · 0 评论 -
SpringBoot使用Redis缓存
SpringBoot使用Redis缓存默认的缓存是在内存中定义HashMap,生产中使用Redis的缓存中间件Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件1、安装Docker安装redis在docker上#拉取redis镜像docker pull redis#启动redis[bfcb1f6df2db]docker images的...原创 2020-03-01 11:46:30 · 231 阅读 · 0 评论 -
从github下拉项目到本地IDEA
从github下拉项目到本地IDEAhttps://blog.csdn.net/cat18292575042/article/details/81712535转载 2020-01-02 19:44:38 · 236 阅读 · 0 评论 -
冒泡排序算法(Java)
冒泡排序算法原理比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。代码(冒泡排序优化算法):public class bubbleSort { public st...原创 2019-11-24 11:34:10 · 87 阅读 · 0 评论 -
Mybatis中PageHelper分页插件使用方法
官方文档地址https://pagehelper.github.io/使用步骤:1. 在maven中添加坐标<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <versio...原创 2019-11-20 11:13:30 · 169 阅读 · 0 评论 -
Mybatis Generator使用方法
Mybatis Generator用来逆向生成javabean和dao。官方文档http://mybatis.org/generator/index.html使用方法:1. 导入maven坐标<!-- 逆向工程代码生成器 --> <dependency> <groupId>org.mybatis.generator...原创 2019-11-19 20:33:43 · 239 阅读 · 0 评论 -
SSM框架整合
SSM框架整合分为三步构建配置Spring框架构建配置SpringMVC框架构建配置Mybatis框架必须首先配置Spring框架,然后整个另外两个框架一、SSM框架整合分第一步–配置Spring框架新建maven项目,模板选择为webapp导入jar包在pom.xml文件中修改jdk编译版本为1.8 <properties> <projec...原创 2019-11-17 23:05:50 · 196 阅读 · 0 评论 -
Ubuntu18.04安装tomcat8.5.47+jdk12
jdk12和8是有区别的!明显的区别就在于jdk12没有jre目录!这一点比较重要,会影响tomcat的配置1. 下载tar.gz的包,解压2. 修改配置文件 只需要一步就行!cd apache-tomcat-8.5.47/vim ./bin/catalina.sh略过上面的注释,在最前面加上JRE_HOME,注意!!jdk9没有jre这个目录.别跟着网上的教程,写什么java_ho...原创 2019-11-10 20:11:31 · 342 阅读 · 1 评论