自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 问答 (4)
  • 收藏
  • 关注

原创 分布式事务框架Seata

Seata 一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

2023-02-22 13:16:36 322

原创 分布式事务解决方案

​在《分布式事务理论基础》中介绍了分布式事务的理论基础,下面基于不同的一致性模型介绍分布式事务的常见解决方案。

2023-02-20 10:48:57 399

原创 分布式事务解决方案

​在《分布式事务理论基础》中介绍了分布式事务的理论基础,下面基于不同的一致性模型介绍分布式事务的常见解决方案。

2023-02-16 09:22:35 332

原创 分布式事务理论基础

事务是数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务有四个特性,习惯上被称为 ACID 特性:

2023-02-15 19:31:15 310

原创 Java8中的Stream流

A sequence of elements supporting sequential and parallel aggregate operations

2022-11-23 13:13:14 1237

原创 Java类加载器

我们写的每一个Java文件,首先通过编译器编译成class文件,然后经过类加载器加载到jdk运行时内存中生成一个class类

2022-11-07 21:45:36 188

原创 Java类加载器

类加载器我们写的每一个Java文件,首先通过编译器编译成class文件,然后经过类加载器加载到jdk运行时内存中生成一个class类,才会被程序使用。而类加载器就是加载字节码(.class)文件的类--java.lang.ClassLoader。类加载器的分类Java默认设置了三个类加载器。BootstrapClassloaderExtClassloaderAppClassloaderBootstrapClassloader 叫做启用类加载器,用于加载JRE核心类库,使用C++实现。加载路径%J

2022-11-07 21:41:49 346

原创 Java工具 Jstack 的使用

jstack - Prints Java thread stack traces for a Java process, core file, or remote debug server.Jstack 主要的作用是生成当前进程中所有线程的信息,也就是当前时刻 JVM 的线程快照,通过线程的信息我们可以定位到程序中出现长时间停顿、CPU 占用率过高等问题。线程快照中的信息是当前 java 虚拟机内每一条线程正在执行的方法的堆栈集合,有了堆栈信息我们就可以分析出我们的程序问题出现在那,比如线程间死锁..

2022-04-27 21:45:00 575

原创 ThreadLocal 内存泄露问题

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 ——百度百科上述的意思用在java中就是存在已经没有任何引用的对象,但是GC又不能把对象所在的内存回收掉,所以就造成了内存泄漏。ThreadLocal主要解决的是对象不能被多个线程同时访问的问题。根据ThreadLocal的源码看看它是怎么实现的。ThreadLocal设置数据的set()方法 public void set(T va.

2022-04-06 14:10:22 2284 1

原创 Spring Boot 打包成Jar包运行的原理

相比于传统的Java打包方式,使用SpringBoot打包插件打包成jar包后,可以直接使用java -jar 运行SpringBoot项目,本篇就来分析一下运行的原理。SpringBoot打包插件<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin&gt

2022-03-26 21:00:00 1456

原创 设计一个支持热加载的Java应用启动器

热加载是指在不重启服务的情况下使更改的代码生效。注意和热部署的区别,热加载主要是在开发环境下使用。首先要知道Java程序是怎么运行起来的,Java类加载分为其7个阶段。其中加载阶段是用户可以自定义,而验证阶段、准备阶段、解析阶段、初始化阶段都是用 JVM 来处理的。整个类加载是在Java 中一个叫做类加载器上进行的,如果我们能程序更改后,让程序所在的进程能够实时的获取到编译后的Class类字节码信息,然后重新加载的话,那么就可以实现热加载功能。Java 类加载器类加载器,顾名思义就是加载Java

2021-12-29 22:00:00 676

原创 聊一聊Tomcat 系统架构设计

总体架构Tomcat 是一个应用服务器,那么要开发一个应用服务器,首先捋一捋它的需求,要实现那些功能。1、 首先可以和客户端建立连接,并且能够处理客户端的连接2、 其次还要解析处理我们写的 Servlet3、 最后能够根据客户端的请求找到相应的 Servlet。在 Tomcat 中将这些需求分为了两大功能处理 Socket 连接,并将网络字节流转换成 Request 对象和 Response 对象解析、加载和管理 Servlet,处理请求并返回响应数据Tomcat 将这两大功能,设计成了

2021-12-22 21:15:00 874

原创 Java泛型中的类型擦除以及Type接口

Java 泛型(generics)是 JDK1.5 中引入的一个新特性,其本质是参数化类型,解决不确定具体对象类型的问题;其所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。但是在 Java 中并不是真正的泛型,实际上是“伪泛型”类型擦除(type Erasure)为了与之前的版本兼容,JDK1.5 中通过类型擦除来增加的泛型功能。Java 泛型只是在编译器层次上,在编译后生成的字节码中是不包含泛型中类型.

2021-11-15 18:31:25 991

原创 Java函数式编程

简介什么是函数式编程函数式编程是一种编程范式,即一切都是数学函数。在Java面向对象编程中,程序是一系列相互作用(方法)的对象,而在函数式编程中,程序会是一个无状态的函数组合序列。函数是“第一等公民”“第一等公民”指的是函数和其他数据类型一样,处于平等的地位。可以赋值给变量、可以作为另一个函数的参数或者作为一个函数的返回值。比如// 将两数相加的逻辑赋值给变量sumvar sum = (a,b)->a+b;// 将函数作为另一个函数的参数operation(sum)Java函数试

2021-10-24 18:56:56 3692

原创 聊一聊HashMap

HashMap 在 Java 中是一个使用高频的数据结构,JDK1.8 以后 HashMap 进行了一次翻天覆地的改变,本文基于 JDK1.8 分析一下 HashMap存储结构转换在 JDK1.8 以前 HashMap 采用的是数组+链表的结构,JDK1.8 以后又引入了红黑树的结构,会在链接和红黑树之间转换,结合源码分析一下 HashMap 对数组+链表和数组+红黑树的转换首先看一下数据的存储结构 transient HashMap.Node<K, V>[] table;HashM

2021-09-30 09:52:03 216

原创 TCP三次握手和四次挥手

定义:TCP(Transmission Control Protocol:传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议.TCP在发送数据前,会在通信双方之间建立一条连接。通过这条连接,客户端和服务端可以保存一份对方的信息,如ip地址、端口号等。通信双方的数据传输就是在这条连接上进行的。这条连接的建立和断开的过程就是所谓的三次握手和四次挥手TCP报文头部数据在了解三次握手和四次挥手之前,先来了解一下TCP报文的头部数据结构上图中有几个字段是在三次握手和四次挥手需要的Se.

2021-09-28 15:00:00 94

原创 mybatis中mapper生成代理的过程

目录mybatis中mapper代理的生成过程与Spring集成时mapper代理的生成过程与SpringBoot集成时mapper代理的生成过程mybatis中mapper代理的生成过程构建代理类工厂从入口点开始一步一步看,首先SqlSessionFactoryBuilder类中build()方法加载配置文件 public SqlSessionFactory build(InputStream inputStream, String environment, Properties pr

2021-09-22 12:04:02 1489 2

原创 JDK动态代理

JDK动态代理使用的非常广泛,Spring AOP中、MyBatis的mapper中都用到了JDK动态代理。JDK动态代理的使用1、创建代理类接口及代理类。2、创建一个实现了InvocationHandler接口的类,实现该接口中的invoke方法。3、通过Proxy的newProxyInstance(ClassLoaderloader, Class[] interfaces, InvocationHandler h)方法创建一个代理对象。来个例子:创建一个Hello的接口public int

2021-01-03 22:33:04 85

原创 JAVA SPI机制

少侠你现在是否还这样连接数据库try { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("URL","root","password");} catch (Exception e) { e.printStackTrace();}...

2020-04-03 21:51:53 261

原创 Mysql优化工具explain

explain的使用很简单,只要在select语句的前面加上explain的关键字就好了,来看个例子先创建两个表,注意两个表的索引CREATE TABLE `user` ( `id` varchar(32) NOT NULL, `name` varchar(32) DEFAULT NULL, `role` varchar(32) DEFAULT NULL, PRIMARY KE...

2020-03-23 22:26:38 400

原创 ReentrantLock源码分析

ReentrantLock是一个可重入且独占式的锁,该锁支持获取锁时的公平和非公平选择。公平锁公平锁遵循FIFO的原则,所有的线程都会顺序执行获取锁 //加锁 final void lock() { acquire(1); } //调用AbstractQueuedSynchronizer public final void ac...

2020-03-18 00:00:29 73

原创 AbstractQueuedSynchronizer源码分析-共享式

共享式获得锁共享式获取锁的顶层函数为acquireShared(),该函数首先调用tryAcquireShared()尝试互锁,如果获取不到锁,则将该线程加入到队列中。public final void acquireShared(int arg) { //尝试获取锁 //小于0,代表获取锁失败 // 具体的逻辑由子类实现 ...

2020-03-17 23:59:53 91

原创 Java内省

内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。说简单一点就是操作JavaBean的一套API。什么是JavaBean?javaBean只是一种规范,大家都按照约定好的一套规则写java类,既然是规范就有一定的要求:类是public的,然后有个无参的构造函数属性是private的,通过设置setXXX()和getXXX()来访问能...

2020-03-14 18:42:17 207

原创 JAVA整形取值范围的计算

java中的整型有byte、short、int、long,它们的取值范围分别为:byte:−27-2^{7}−27~+27−1+2^{7} -1+27−1,占1个字节。short: −215-2^{15}−215~+215−1+2^{15} -1+215−1,占2个字节。int: −231-2^{31}−231~+231−1+2^{31} -1+231−1,占4个字节。long: −263...

2019-11-07 09:38:25 1385

原创 利用canvas实现滑动验证功能

HTML<canvas width="310" height="155" id="canvas"></canvas> <canvas width="310" height="155" id="block"></canvas> <div class="bar"> <div...

2019-11-03 17:11:46 1178

原创 shiro AuthorizingRealm 里的 doGetAuthenticationInfo与doGetAuthorizationInfo的执行时间

doGetAuthenticationInfo执行时机: 当调用Subject currentUser = SecurityUtils.getSubject(); currentUser.login(token); doGetAuthorizationInfo执行时机有三个,如下: 1、subject.hasRole(“admin”) 或 subject.isPermitted(...

2019-11-03 16:27:10 939

原创 MySQL索引可能会失效的情况

条件中有or或没有把or所有字段加索引。 对于多列索引,不是使用的第一部分。 like查询以%开头。 查询类型是字符串,条件中不用引号括起来。 where语句中使用<、>、!=、NOT IN、is NULL、is NOT NULL,或者对字段进行表达式操作 MYSQL估计用全表扫描比使用索引快。 。。。。。(以后慢慢收集总结)...

2019-11-03 16:21:08 234

原创 elementUI设置标签页

思路:1、在vuex中存储点击过的标签页2、当路由刷新时,将路由添加到vuex中,并判断当前路由是否已经再标签页列表中3、关闭标签页时,将vuex中的路由删除代码:vuex中保存点击过的路由列表,新建tagsPages.js文件const tagsPages= { state:{ //路由列表 tagsPages:[] }, ...

2019-10-16 19:55:27 4374 1

原创 springboot使用freemarker发送模板邮件

springboot使用freemarker发送模板邮件 1、引入mail和freemarker模块依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starte...

2018-06-25 16:45:20 3896 1

原创 Ubuntu16.04下源码安装go1.10.1编译器

Ubuntu下直接安装go1.10.1版本的go语言编译器需要依赖go1.4版本。所以在安装1.4版本以上的时候,需要安装1.4版本。 设置环境变量sudo vim /etc/profile在结尾处添加 export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin export GOPATH=$HOME/Applicatio...

2018-04-13 18:16:59 1876

原创 Mybatis中动态SQL的用法

在访问数据库时,需要拼装SQL语句,在Mybatis中提供了对SQL的拼装,只有几个简单的元素:if、test、choose,when,otherwise、where、set、trim、foreach、bind。 用法都十分简单,总结以下基本的用法。 首先准备一实体类public class User { private int id; private St...

2018-04-06 17:58:45 2098

原创 SpringBoot中CommandLineRunner和AplicationRunner

在SpringBoot开发项目的时候,有时需要在Spring容器启动的时候执行一系列操作。在SpringBoot中提供了两个接口来实现这样的需求。 这两个接口为:CommandLineRunner和ApplicationRunner 这两个都有run方法,但是CommandLineRunner的参数为String数组,ApplicationRunner为ApplicationArgum...

2018-04-04 15:04:18 290

原创 Ubuntu16.04安装openBLAS

Ubuntu 16.04 安装OpenBLAS步骤 git clone git://github.com/xianyi/OpenBLAS cd OpenBLAS sudo apt-get install gfortran sudo make FC=gfortran sudo make install最后安装在/opt下然后执行以下命令: ln -s /...

2018-03-14 17:56:21 9645 1

原创 Springboot中AOP的使用

AOP是spring的两个主要模块功能之一,总结一下aop的基本用法切面类组成首先需要在类中用@Aspect,说明这个类时切面类,这个类主要由两个部分组成:@Pointcut和Advice@Pointcut@Pointcut是一个注解,标注在类中的方法上,主要的作用是说明要处理那些类和那些方法。@Pointcut 里的参数式一个表达式,包括指示器、通配符和运算符。指示器...

2018-03-14 17:45:55 346

原创 Ubuntu16.04安装hexo

在Ubuntu16.04中安装hexo出现一系列的问题,总结一下安装hexo的步骤;首先安装noejs,Ubuntu源中的nodejs时旧版本,所以需要在安装后更新nodejs; sudo apt-get install nodejs sudo apt install nodejs-legacy sudo apt install npm更换成淘宝的镜像,否则非常慢 ...

2018-03-12 16:52:28 3338

原创 Cesium开发-添加实体

在自己的项目中利用Cesiumjs在项目中添加3D或者2D的实体。 首先将压缩文件中的Build文件夹放到项目中去,像Apps文件夹下的HelloWorld.html中在一个网页中添加主要的四条语句,运行后如下图所示,则说明成功。 主界面基本的配置代码如下,在创建3D的球的同时设置界面的信息,其中的选项都是可选的。更加详细的配置信息,可以查官方API var viewer = new Ce

2017-08-10 20:55:24 7355 1

原创 Cesiumjs开发-环境搭建

Cesiumjs是一套JavaScript库,用来渲染3D地球,2D区域地图。 在官网下载下载下来后解压得到的文件目录如下图所示。 其中Apps是View的例子程序,Build里是Cesiumjs的js库,在自己创建项目的时候可以将这个目录导进项目中,利用Cesium给的API创建自己的3D项目。打开Apps下的HelloWorld.html文件,这是一个简单的小例子,可以看到以

2017-08-10 20:53:34 1278

原创 VS设置同时启动多个项目

在使用Visual Studio 开发调试的时候,有可能需要同时启动指定的项目运行,要设置同时启动的话,可以通过以下方案实现。 1–右击解决方案 ![project1](http://img.blog.csdn.net/20170304163444928?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveTU0OTI4NTM=/font/5a6L5L2T/

2017-03-04 16:38:00 54184 5

原创 Java界面中使用SwingWorker

Java Swing GUI程序启动时,JVM会启动多个线程,Swing并不是线程安全的,如果处理不当Swing程序会反应迟钝,JavaSE6开始引用SwingWorker能够改善Swing程序结构,提高界面的灵活性。 事件派发线程当界面程序启动时,会调用界面的主方法 Java.awt.EventQueue.invokeLater(new Runnable(){ public

2017-03-04 14:01:06 4351 1

huadongyanzheng.zip

利用canvas实现滑动验证,HTML 、CSS、JS源代码文件。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2019-11-03

Cesium需要的 转成gltf工具

文件夹中包含Cesium需要的转gltf的collada2gltf.exe COLLADAMaxNew.dle OpenCOLLADA插件等

2017-08-09

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

TA关注的人

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