自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据库中四种隔离级别导致的并发问题

为了故事的顺利发展,我们需要创建一个表:CREATE TABLE hero ( number INT, name VARCHAR(100), country varchar(100), PRIMARY KEY (number) ) Engine=InnoDB CHARSET=utf8;小贴士: 注意我们把这个hero表的主键命名为number,而不是id,主要是想和后边要用到的事务id做区别,大家 不用大惊小怪哈~然后向这个表里插入一条数据:INSERT INTO hero

2022-03-27 19:37:26 1614

原创 Java中锁的介绍

按照不同的区分维度,将锁划分为以下不同的类别:1,公平锁和非公平锁;2,可重入锁和不可重入锁;3,乐观锁和悲观锁;4,共享锁(读锁)和排他锁(写锁);公平锁:ReentranLock()的构造函数传true时为公平锁,默认是非公平锁非公平锁:sychronized可重入锁:sychronized 和ReentranLock都是可重入锁不可重入锁:jdk自带包没有常见的悲观锁: synchronized ,读锁,写锁,行锁,表锁常见的乐观锁:cas,java原子操作类的一些处理类。版本号控

2022-03-19 17:18:11 326

原创 redis分布式锁的底层原理

当有多个客户端请求过来的时候,redis分布式会判断这个key是否被锁住,如果没有锁住的话,redis会通过hash算法计指定到某一个机器上执行lua脚本进行保存key。通过看门狗watch dog一个后台启动的监控线程去判断任务有没有执行完,如果任务没有执行完,到了超时时间,会通过延时的方式延长生存时间。当另一客户端请求过来以后,发现key已经被锁住,会一直循环等待直到另一个客户端线程占有key的锁被释放。具体流程如下如:...

2022-03-15 09:57:01 1313

原创 ArrayList的底层扩容机制

ArrayList的底层数据结构是数组如果创建一个list没有指定元素大小,会在add元素的时候会通过ensureCapacityInternal()方法确认大小,一般是指定为10的大小。然后再通过ensureExplicitCapacity()方法确认list的显式大小。如果需要的最小容量大于list集合的大小时,会调用grow()再进行扩容,新的数组大小是原来数组的1.5倍。如果扩容后的新数组大小小于最小容量大小,则将数组的大小设定为最小容量大小。如果扩容后的新数组容量大小大于数组最大容量大小Inte

2022-03-11 18:00:31 507

原创 rocketmq消息丢失处理

消息丢失有三种情况:1,producer在发送消息到broker的时候丢失2, broker从cache中持久化数据到磁盘中的时候丢失3,消费者在消费消息还没有完成的时候丢失解决方案:1,通过开启消息的事务机制。2,将消息队列的刷盘机制改完同步刷盘3,开启消费者ack的确认模式...

2022-03-04 16:44:35 484

原创 dubbo的调用过程

首先,调用过程也是从一个Proxy开始的,Proxy持有了一个Invoker对象。然后触发invoke调用。在invoke调用过程中,需要使用cluster,Cluster负责容错,如调用失败的重试,Cluster在调用之前会通过Directory获取所有可以调用的远程服务invoker列表(一个接口可能有多个节点提供服务)。由于可以调用的远程服务很多,此时如果用户配置了路由规则,那么还会根据路由规则将Invoker列表过滤一遍。再通过LoadBalance方法做负载均衡,最终选出一个可以调用的Invok

2022-02-21 23:05:59 1640

转载 Dubbo各种协议的应用场景,优缺点

dubbo: 单一长连接和NIO异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议TCP,异步,Hessian序列化;rmi: 采用JDK标准的rmi协议实现,传输参数和返回参数对象需要实现Serializable接口,使用java标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议TCP。多个短连接,TCP协议传输,同步传输,适用常规的远程服务调用和rmi互操作。在依赖低版本的Common-Collections包,java序列化存在

2022-02-21 12:50:49 737

原创 对list集合中对象的多个属性进行排序

话不多说,直接上代码 public static void main(String[] args){ List<Apple> appleList = new ArrayList<>(); Apple apple = new Apple("red","china","200"); Apple apple2 = new Apple("green","EngLand","150"); Apple apple3 = ne

2021-04-25 17:10:31 920

原创 异常处理clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

最近在用okHttp工具调用http请求的时候,突然出现一个问题,not supported on jdk 9+,但是发现自己安装的jdk版本其实就是jdk8,分析了下原因大概是升级了1.8的版本导致的。解决方法:1,使用更低版本的jdk2,使用更高版本的okHttp(4.3.0版本及以上)因为升级版本了,所以在调用的一些方法有些区别。3.4.2版本构造ssl,跳过证书验证的写法 X509TrustManager trustManager = Platform.get().t

2021-03-09 09:26:58 11714 2

转载 Linux压缩和解压命令:tar,gzip,zip(unzip),rar

很多大型文件或者数据从服务器上传或者下载的时候都需要打包和压缩解压,这时候知道压缩和解压的各种命令是很有必要的。常见的压缩文件后缀名有.tar.gz,.gz,.zip和.rar,下面来看看在Linux上它们分别的解压和压缩命令。gzipLinux压缩文件中最常见的后缀名即为.gz,gzip是用来压缩和解压.gz文件的命令。常用参数-d或–decompress或–uncompress:解压文件;-r或–recursive:递归压缩指定文件夹下的文件(该文件夹下的所有文件被压缩成单独的.gz文件);

2021-01-09 17:30:01 1892

原创 spring的配置文件以及加载顺序

1 配置文件Spring Boot 提供一个名称为 application 的全局配置文件,支持两种格式 properteis 格式与 YAML 格式1.1 Properties 格式比如 配置 Tomcat 监听端口server.port=88881.2 YAML 格式YAML 格式配置文件的扩展名可以是 yaml 或者 yml。1.2.1 基本格式要求大小写敏感使用缩进代表层级关系相同的部分只出现一次配置 Tomcat 监听端口server:port: 88881.3配置文

2020-11-02 23:18:20 1732

转载 Elasticsearch:analyzer [ik_max_word] not found for field [name]异常处理

环境windows 10;elasticsearch 7.8.0;问题elasticsearch 创建索引时遇到 analyzer [ik_max_word] not found for field [name] 报错;报错:org.elasticsearch.index.mapper.MapperParsingException: analyzer [ik_max_word] not found for field [name]原因IK分词器插件 未安装;解决进入 el..

2020-10-25 22:08:50 8097

原创 redis如何保证与数据库的数据一致性

在实际操作redis的过程中,我们时常会遇到数据不一致的问题,下面我列举几个场景:1、比如在删除操作的时候,先删除缓存,再删除数据库数据。但是删除数据库的操作还没有执行成功,这时如果存在并发的问题,当另一个线程读取该数据,发现缓存不存在,去数据库查询,查询后将结果缓存到redis中。这时另一个线程的删除数据库的操作执行完成,这是就存在数据库没有数据,缓存还保留着原有旧数据的不一致性问题。2,还有在执行更新商品库存的操作的时候,商品库存现在是100,更新数据库为99,再更新缓存,但是这是数据库更新成功之后

2020-10-23 21:49:25 1334 1

转载 redis持久化的两种方式rdb和aof

对于我们经常使用的redis技术,有时我们需要将他持久化到磁盘进行保存。这是我们常用的两种技术就是rdb和aof。首先我们来介绍一下redis持久化的一个流程什么样的?1,首先客户端发送写数据命令2,服务端接收到写命令,将数据放到内存缓冲区。3,服务端会fork一个进程调用写操作,将内存缓冲区的数据写入磁盘4,操作系统将缓冲区中的数据转移到磁盘控制器上。5,磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。然后再来介绍rdb持久化的方式:RDB其实就是把数据以快照的形式保存在磁盘上

2020-10-18 11:15:32 157

原创 索引失效的几种情况和原因剖析

在网上看到很多关于索引失效的情况,但是看了感觉都讲的不过明确,或者只告诉你这么查询会导致索引失效但是却没有告诉你索引失效的原因,这里做一些详细的说明。一般我们常见的出现索引失效的有这么几个原因1,使用or关键字(但是并不是所有带or的查询都会失效,如果有两个字段,两个字段都有索引就不会失效,会走两个索引)2,使用like关键字(但是并不是所有like查询都会失效,只有在查询时字段最左侧加%和左右侧都加%才会导致索引失效)3,组合索引(如果查询的字段在组合索引中不是最左侧的字段,那么该组合索引是不会生

2020-10-17 19:25:12 10835

原创 mybatis中的分页插件原理过程说明

首先了解一下mybatis到底帮了我们做了哪些事1,封装jdbc操作2,利用反射将java对象与sql语句之间的互相转换。mybatis的架构设计:1、接口层2、数据处理层 参数映射,通过parameterHandler,sql解析通过sqlSource ,sql执行通过executor,结果处理和映射通过ResultSetHandler3、框架支撑层mybatis执行sql的执行流程:1,通过输入流的方式加载全局配置文件mybastis-config.xml文件2, 将返回的输入流通过s

2020-10-17 10:17:00 2531

转载 java类加载原理

我们知道我们编写的java代码,会经过编译器编译成字节码文件(class文件),再把字节码文件装载到JVM中,映射到各个内存区域中,我们的程序就可以在内存中运行了。那么字节码文件是怎样装载到JVM中的呢?中间经过了哪些步骤?常说的双亲委派模式又是怎么回事?本文主要搞清楚这些问题。类装载流程1、加载加载是类装载的第一步,首先通过class文件的路径读取到二进制流,并解析二进制流将里面的元数据(类型、常量等)载入到方法区,在java堆中生成对应的java.lang.Class对象。2、连接连接过程又

2020-10-15 22:49:57 239

原创 maven打包后出现Can not find ResultMap “xxxx“

最近在项目打包发布的时候老是出现Can not find ResultMap "xxxx"之类的错误,可是全局搜索发现映射文件中是存在此返回的映射结果集的。最后也是查看了很多资料,总算找到了解决方法:1,通过clean install的方式重新打包,如果不行,2,通过rebuild强制重新更新编译代码3 ,再install打包,这下基本上就解决了上述中出现的情况。...

2020-09-25 21:43:49 300

转载 Tomcat/conf/server.xml文件中docBase和path的说明

Tomcat的项目部署方式有以下三种:1、直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法。2、在tomcat安装目录中有一个conf文件夹,打开此文件夹,其中包含配置文件server.xml,打开配置文件,并在和之间插入如下语句。 其中,docbase是web应用和本地路径,path是tomcat访问这个应用的URL路径。3、在conf目录中,在Catalina\localhost(此处需要注意目录的大小写)目录下新建一个XML文件,任意命

2020-09-07 22:35:32 1905 1

转载 linux(Ubuntu)安装tomcat,启动正常,但是浏览器访问不了tomcat

问题描述:自己买了一个阿里云的服务,尝试自己在上面部署一个web项目。在安装好tomcat,启动成功后,本地通过浏览器验证tomcat是否正常时,浏览器一直无法访问,但后台启动日志中无异常信息。如:我要访问的地址是:http://7.104.137.378:8989排查步骤:1、本地打开cmd,输入ping 7.104.137.378,该ip地址正常连接;2、 查看防火墙是否已关闭:sudo ufw status,显示防火墙已关闭3、查看端口8989是否正常监听:netstat -an | gre

2020-08-29 18:33:33 1694

原创 java通过文件路径下载文件的工具类

public class DownloadFileUtils { public static void download(HttpServletResponse response, String path) { //文件在服务器的路径 InputStream inputStream = null; OutputStream out = null; try { //根据文件在服务器的路径读取该文件转化为流

2020-08-08 19:49:19 366

原创 java调用.net的webService接口

Java调用WebService2import org.apache.axis.client.Call;import javax.xml.namespace.QName;import java.util.*;/**@author :xzr@version :1.0.0@date :2020/3/23@description :WebService/public class WebServiceUtils {/*webService链接地址*/static Str

2020-07-27 23:51:37 507

原创 用String接收前台传过来的字符乱码解决方法

今天在修改bug的时候有个错误时保存到数据库中的字符是乱码文件,debug之后发现在Controller层传进来的就是乱码,网上看到好几个解决方案,不过都不太满意,说是用decode转码,发现还是会有一些小问题。所以直接在Controller层用map接收了。key保存变量名,value保存变量值,轻松解决了问题。...

2020-06-09 23:51:42 970

原创 js中的变量提升

js中函数及变量的声明将被提升到函数的最顶部。如果全局变量和函数中的变量一致,则会被覆盖

2020-04-21 17:51:55 137

原创 oracle中新建用户和表空间的操作

– gysys.dbf那里也要oracle的真实文件路径create tablespace gysys logging datafile ‘F:\app\fkuedx\oradata\orcl\gysys.dbf’size 500m autoextend on next 500m maxsize 2048m extent management local;– Create the user...

2020-04-14 10:53:38 138

原创 java对象和xml格式数据的相互转换

1,首先需要几个jar包2,在需要转换的实体类中添加注解3,添加方法将java对象转换为xml数据

2020-04-06 17:41:05 615

转载 解析xml文件最常用的方法

Dom4j是目前最流行、最好用的XML解析工具,解析XML的速度最快。操作步骤:1:创建SAXReader:SAXReader reader = new SAXReader(); 2:创建文件输入流打开xml文件:InputStream in = new FileInputStream("XXX.xml");3:通过reader和输入流读取xml文件到内存创建Document对象:D...

2020-03-14 11:08:07 409

原创 对接支付宝网站支付接口

今天因为业务需要线上支付充值,所以需要对接支付宝的网站支付接口。首先去支付宝开发者中心看了一遍demo;网址如下:https://docs.open.alipay.com/270/106291/大致理清了对接接口所需要的一些主要参数;1,appid2,签名方式使用 RSA23,应用私钥(private_key)4,支付宝公钥(public_key)5.支付宝网关: http...

2020-03-09 22:16:02 2551

原创 对接支付宝网站支付接口出现订单信息无法识别,请联系卖家的错误

今天在对接支付宝支付接口测试的时候出现如下如的报错:在经过查看对接文档中的参数后发现,自己后台传参的参数seller_id的数值不对,这是我postman发起充值请求后返回的表单数据:将seller_id去掉,或者改成沙箱环境中的商户id就能正常支付了。...

2020-03-07 22:01:58 5206

原创 idea导入maven管理的web工程

打开文件的方式:tomcat的配置

2020-02-29 22:17:34 111

原创 linux命令详细介绍

因为我们的服务一般都会发布到linux系统上,所以熟悉linux系统的常用命令是一个程序猿必备技能之一,这里我就将一些常用的命令介绍一下为了测试可以先下载一个虚拟机。安装好之后就可以使用我们linux系统的命令了。1、首先是目录切换命令在了解目录切换命令之前,我们需要知道linux系统的一个目录结构/代表是系统的根目录。以下是一些常用的切换命令cd usr 切换到该目录下usr目录...

2020-02-24 22:56:08 174

原创 java设计模式之工厂模式

工厂模式之简单工厂模式简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是 静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属 于类创建型模式。 简单工厂模式的要点在于:当你需要什么,只需要...

2020-02-20 20:52:06 178

原创 用户注册调用短信服务接口实现手机号注册

一般现在平台的用户在注册时都是使用手机号注册,所以就需要用到手机介绍短信验证码实现注册,在这里我调用的是榛子云短信平台第三方提供的短信服务发送验证码。短信验证码实现流程1、构造手机验证码,生成一个6位的随机数字串;2、使用接口向短信平台发送手机号和验证码,然后短信平台再把验证码发送到制定手机号上3、将手机号验证码、操作时间存入map中,作为后面验证使用;4、接收用户填写的验证码、手机号及...

2020-02-06 17:10:19 1662

转载 运行报错Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column xx....

安装了mysql5.7,用group by 查询时抛出如下异常:Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘userinfo.t_long.user_name’ which is not functionally dependent on columns in ...

2020-02-01 11:51:06 1652

原创 运行springboot项目时出现:找不到或无法加载主类 github.snailclimb.jpademo.JpaDemoApplication

今天在接触springboot项目时,报了一个如下错误,我项目中的实体类包po类不存在,于是我便想这不是我自己创建的类嘛,又不是从外部拉取的依赖包。再当我又重新运行了一遍后又报了如下错误:百度之后找到了解决办法,再maven的小窗口选择install后再启动项目,问题解决。思考:尽管我依赖的pom文件添加到了maven小窗口中,但是在运行加载项目的安装中并没有把需要的依赖和编译的代码加...

2020-01-11 16:54:48 455 1

转载 sprinbootApplication注解的相关代码

package org.springframework.boot.autoconfigure;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(ex...

2020-01-05 16:23:48 97

原创 db2还原备份文件详细教程

因为业务对接的需要,公司需要还原db2的备份文件。在还原的过程中遇到很多坑,所以在这里给大家分享一下,也算是少走弯路。首先我安装了db2V10.1版本的数据库,所以在还原的时候就因为版本问题导致我在检测镜像文件的时候一直存在问题,在这里我把报错信息给大家展示一下:当我检测镜像文件的时候出现了Unable to migrate media header from image 和failed t...

2019-12-16 23:11:12 4243 2

原创 mybatis中的一级缓存和二级缓存

在mybatis的持久层框架中,我们有时也会用到缓存,就mybatis本身而言,其实就自带缓存功能。而mybatis的缓存也分为一级缓存和二级缓存。一级缓存:sqlSession级别的缓存,是默认开启的。二级缓存:sqlSessionFactoty级别的缓存,需要手动设置。我在这里用代码给大家展示一下一级缓存和二级缓存的效果public class TestInterface { //初...

2019-12-11 22:51:27 126

转载 通过IDEA解决spring配置文件

每次创建spring项目最头疼就是spring的配置文件,尤其是配置头信息。这里发现通过IDEA工具可以很好辅助完整这些工作,配置spring文件变得更加简单案例环境:IDEA 2017.2;JDK8;spring 4.3maven 3.5这里从创建完成maven webapp项目开始,maven webapp工程创建这里就忽略。完成maven工程创建后第一步就是添加依赖关系,这里主要...

2019-12-07 23:19:50 123

原创 java设计模式之单例模式

单例模式大家应该都特别了解,其概念就是创建的对象在整个应用中只用一份实例。在一些特定的场景当中我们是需要用到单例模式的,比如创建数据库的连接池,多线程的线程池,日志等。而创建单例模式的两种方法一种是懒汉式 ,另一种是饿汉式。两者各有自己的一些优点和缺点。在这里我们就创建单例的这两种模式做一个分析。首先大家先思考一个问题:如果现在由你创建一个数据源,你会如何保障对象创建的唯一性;第一:对象的构造...

2019-12-07 22:12:45 108

Java人事管理系统源码 HR人事管理系统源码.rar

是一个ssh架构的人事管理系统源码,对于想学习ssh框架的朋友来说是一个比较不错的资源,可以通过此项目去学习框架,数据库的sql也包含在项目的目录中了,需要的朋友可以下载,有问题k

2020-08-25

空空如也

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

TA关注的人

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