自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 剑指MySql事务

什么是事务?事务是指一连串的逻辑操作,要么全部成功要么全部失败ACID原子性:事务是原子的不可在拆分要么全部成功,要么全部失败隔离性:事务与事务之间是相互隔离的,一个事务的操作不会影响到其他事务一致性:事务修改数据,从一个状态到另一个状态,对整个数据的完整性保持稳定持久性:数据的修改正确提交是永久性的不能回滚脏读:A事务去修改 某一数据 但是没有提交事务,B去查询的时候 查询到了A没有提交的事务,这时候就发生了脏读不可重复读:A事务去修改某一数据 已经条件了的,刚好修改的数据 在B事务的查

2022-03-18 11:19:19 812

原创 springBoot自动装配原理

springBoot项目自动装配核心注解就是@SpringBootApplication我们点击@SpringBootApplication这是一个复合注解里面还有三个重要的注解@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan@ComponentScan这个我们都知道是开启包扫描的,注入到IOC容器中(扫描的注解包括@Component} {@Repository}, {@Service}{@Autowired} or {

2022-03-09 16:41:19 460

原创 RabbitMQ

怎么避免消息丢失生产者将信道设置成 confirm 模式,,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确

2022-03-03 09:58:52 1611

原创 springcloud 整合logstash分布式日志采集

这里我用的是docker容器技术环境准备1.logstash7.6.2 kibana7.6.2 elasticsearch7.6.2怎么下载安装容器可以参考我这篇文章docker安装指定版本的镜像因为我们还需要部署 kibana 容器,因此需要让 es 和 kibana 容器互联。这里先创建一个网络:docker network create es-net启动eleasticsearchdocker run -d --name my-es -e "ES_JAVA_OPTS=-Xms512

2022-02-23 13:50:03 2455

原创 logstash同步mysql到ES 数据不一致解决方案

问题:通过logstash同步mysql数据到ES,mysql数据删除后,ES里面的数据不会删掉这时候会导致ES和mysql数据不一致,如果对数据一致性要求不是那么强,可以用MQ消息队列做,如果对数据一致性要求很高,比如电商项目,这样会出现很大的问题,也可以在Mysql删除成功后,再删除ES里面的数据下面是具体解决方案参考链接:https://www.zhihu.com/question/351802336/answer/868380109...

2022-02-18 16:09:15 1927

原创 springcloud-alibaba springSecurity整合oauth2 授权码模式

OAuth的思路OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。“客户端"不能直接登录"服务提供商”,只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。"客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料OAuth 2.0的运行流程如下图,摘自RFC 6749。(A)用户打开客户端以后

2022-02-17 15:15:51 1579

原创 springboot admin整合spingcloud踩坑

一般来说springbootadmin会分为服务端,和客户端服务端需要依赖spring-boot-admin-starter-server客户端需要依赖spring-boot-admin-starter-client如果是微服务的话将spingboot admin注册到服务发现中心就可以了这是官网上的描述简单来说就是如果已经将 Spring Cloud Discovery 用于您的应用程序,则不需要 SBA 客户端。只需在 Spring Boot Admin Server 中添加一个 Disc

2022-02-10 09:56:01 1391

原创 浅谈@Configuration注解原理

@Configuration注解实现类为AnnotationConfigApplicationContext/** * Create a new AnnotationConfigApplicationContext that needs to be populated * through {@link #register} calls and then manually {@linkplain #refresh refreshed}. */ public AnnotationConfigA

2022-02-09 11:46:52 732

原创 nacos配置详解

1.添加依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${latest.version}</version></dependency>2.在 bootstrap.yml 中配

2022-01-27 10:05:07 3783

转载 Docker启动服务命令

https://www.cnblogs.com/brady-wang/p/13753954.html

2022-01-24 11:31:22 107

转载 Docker安装centos8并使用SSH远程连接

Docker安装centos8并使用SSH远程连接https://www.cnblogs.com/ycz109/p/12973388.html

2022-01-20 15:48:54 201

原创 Docker 安装 指定版本的镜像

我们这里以kibana为例docker搜索镜像命令docker search kibana发现没有我们想要的版本如果search出来的镜像,不是自己想要的版本,可通过在docker hub上搜索好版本TAG地址如下:https://hub.docker.com在这里点击搜索选择Tags在这里输入7.6.2找到我们想要的版本然后复制标签名docker pull kibana:7.6.2这样就好了...

2022-01-20 11:17:18 2914 1

转载 docker启动报错,hardware assisted virtualization and data execution protection must be enable

转自

2022-01-20 09:56:11 294

原创 宋红康JVM 学习笔记

为什么要学 JVM?⚫ 面试的需要:入职 BATJ、TMD、PKQ 等一线大厂不光关注技术的广度,更关注技术的深度,JVM 技术是大厂面试的必备技能,掌握越深越好⚫ 中高级程序员、架构师必备技能:架构师每天都在思考如何让我的系统更快,如何避免系统出现性能瓶颈。单纯的依靠物理机不足以解决问题,分析系统性能、调优系统瓶颈离不了对 JVM 中内存、垃圾回收、字节码指令、性能监控工具、调优参数的熟练掌握。⚫ 精进技术、极客追求:JVM 是 Java 生态的核心价值的体现,垃圾回收算法、JIT、底层原

2022-01-16 17:08:42 1081

原创 浅谈OOP(Object-oriented programming)

最近看一个视频很有感同身受就写了这篇文章把编程语言按照面向过程,面向对象,函数式来分类。你一定听过很多人说Java是面向对象语言,C是面向过程语言,Lisp是函数式编程语言这种分类方法是有很大问题的,因为他把问题想得过于简单了比如Python和JavaScript,你既可以用它们写出非常函数式风格的代码,也可以写出非常面对对象风格的代码,还可以写出兼具两种风格的代码,像Python和JavaScript这种横跨多个类别的语言其实有非常多,就连Java也可以让你写出非常函数式的风格,因此这种分类方法对

2021-12-22 15:49:40 842

原创 ZipUtil工具类

package utils;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;public class ZipUtil { /* private static final String zipPath = "G:\\7777.zip"; private static final String

2021-12-14 17:20:17 142

原创 用Files.createSymbolicLink()创建软链接FileSystemException 客户端没有所需的特权

最近做一个功能的时候,用户上传文件,然后文件重复用软链接,可以节省内存空间,Files.createSymbolicLink()刚好可以实现我的需求但是必须要用管理员方式启动才可以,不然会抛FileSystemException 客户端没有所需的特权 错误我找到的一种解决方式,执行以下命令我用他执行C盘会拒绝访问,但是其他盘符可以 例:这里用的是C盘icacls c:\ /setintegritylevel MSimple example File sourceFi

2021-12-13 16:08:49 1379 1

原创 MessageDigest使用多线程对大文件进行分片MD5

最近做一个功能用户上传文件的时候文件比对是否重复,但是文件很大的话这样子MD5会非常慢,然后网上也没有多线程的实现,就自己写了一个,这里有个BUG, byte[] buffer = new byte[100 * 1024];修改这个字节长度的时候每次MD5都会不一样,不知道什么原因整体思路是参照文件多线程复制的思路,将文件分成几段然后分别去MD5,这样子有很多条MD5信息,然后拿到MD5list,重新MD5生成一个新的MD5信息参考链接多线程复制文件java 计算文件MD5值 大文件packag

2021-12-12 17:59:37 985 3

原创 sqlite no such function if

最近在使用SQLite3的时候 使用if关键字 报错 no such function if进入官网SQLite 中没有 IF-THEN-ELSE 实现。您应该使用 CASE 表达式而不是 IF。您可以在此处的官方 SQLite 文档中找到有关 CASE 表达式的更多信息:http://www.sqlite.org/lang_expr.html#case内置的iif(x,y,z) SQL 函数在逻辑上等同于“CASE WHEN x THEN y ELSE z END”。iif() 函数可在 SQ

2021-12-01 11:37:25 2697

原创 浅谈ORM对象关系映射

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。简单的说:ORM相当于中继数据。具体到产品上,例如的Hibernate,Mybatis中实体类的属性[Table]就算是一种中继数据。具体来说,ORM 关注数据持久性,因为它适用于关系数据库(RDBMS)。在面向对象应用程序的世界中,经常

2021-11-15 10:28:26 811

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决方案

这里是mapper.xml文件没有扫描到导致的错误,mybatis-config.xml里面方法一:把你需要的放在 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configu.

2021-11-12 11:33:11 87

原创 WebConfig配置

用于在 Servlet 3.0+ 容器中注册Servlet的ServletContextInitializer 。 类似于ServletContext提供的registration功能,但具有 Spring Bean 友好设计。必须在调用onStartup之前指定servlet 。 URL 映射可以使用setUrlMappings配置或在映射到 ‘/*’ 时省略(除非alwaysMapUrl设置为false )。 如果未指定,将推断出 servlet 名称。因为:1.4.0请参见:ServletC

2021-11-12 10:29:55 523

转载 shiro添加注解@RequiresPermissions不起作用

这是因为没有开启spring拦截器,在spring-mvc.xml中加入以下代码就可以了(一定要写在最先加载的xml中,写在后面加载的xml中也不起作用)<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" /><bean class="org.apache.shir

2021-11-11 16:44:36 313

原创 @PostConstruct注解详解

@PostConstruct 注解用于需要在依赖注入完成后执行任何初始化的方法。必须在类投入使用之前调用此方法。 所有支持依赖注入的类都必须支持这个注解。即使类没有请求注入任何资源,也必须调用用 PostConstruct 注释的方法。 这个注解只能注解一种方法。 应用 PostConstruct 注释的方法必须满足以下所有标准:该方法不能有任何参数,除非是拦截器,在这种情况下它需要一个由拦截器规范定义的 InvocationContext 对象。在拦截器类上定义的方法必须具有以下签名之一:voi

2021-11-11 15:12:46 3111

原创 Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError解决方案

NoClassDefFoundError我们继续往下看 显示找不到 找不到类定义错误,就是没有导需要的包引起的这里的版本 尽量与你的spring 一致 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.10</version>

2021-11-10 16:47:21 5652

原创 UDP协议和TCP协议的区别

网络工程师小明最近交了一个女朋友丽丽,为了在丽丽面前显示自己的风趣幽默,小明讲了个TCP的笑话。你想听一个TCP的笑话吗?嗯,我想听一个TCP的笑话。好的,我会给你讲一个TCP的笑话的。好的,我会听一个TCP的笑话的。你准备好听一个TCP的笑话了吗?嗯,我准备好听一个TCP的笑话了。OK!那我要发TCP的笑话了,大概十秒钟,一共20个字。嗯,我准备接受你那个时长十秒大概20个字的笑话了。抱歉!你的连接超时了。那么,你还打算听一个TCP的笑话吗?小明以为自己很幽默的解释了TCP协议的网络知

2021-11-05 16:43:45 73

转载 java.lang.NoSuchMethodError: org.springframework.aop.framework.AopProxyUtils.getSingletonTarget

java.lang.NoSuchMethodError: org.springframework.aop.framework.AopProxyUtils.getSingletonTarget

2021-11-02 13:08:43 311

转载 httpServletRequest每次请求sessionId不同问题的一种解决办法分享

Chrome浏览器获取httpServletRequest每次请求sessionId不同问题的一种解决办法分享Session是怎么实现的 存储在哪里

2021-11-01 12:49:26 1044

原创 Vue 路由跳转

th.$router.push("/index")

2021-11-01 10:04:58 55

原创 Spring框架:跨域问题之使用@CrossOrigin注解解决失败

出现原因,首先会发送一个OPTIONS请求给后台 ,这里不知道的可以百度我这里用了@CrossOrigin不知道,为什么还是报跨域后来看前端错误信息Access to XMLHttpRequest at ‘http://localhost:8080/user/login’ from origin ‘http://localhost:9999’ has been blocked by CORS policy: Request header field content-type is not allow.

2021-11-01 09:23:01 564

原创 Java多线程

程序,进程,线程的基本概念+并行与并发:程序:是为完成特定任务,用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象。进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,有它自身的产生,存在和消亡的过程。-------生命周期线程:进程可进一步细化为线程,是一个程序内部的一条执行路径即:线程《线程(一个程序可以有多个线程)程序:静态的代码 进程:动态执行的程序线程:进程中要同时干几件事时,每一件事的执行路径成为线程。并行:多个CPU同时执行多个任务,比如:多个人同时做

2021-10-29 12:27:54 73

原创 使用druid 数据库连接错误discard long time none received connection

背景:因为我修改配置文件没有msyql.usePingMethod的参数,网上说是版本问题,我这里采用了第一种方法解决方法1.在main方法中初始化的时候配置// 关闭德鲁伊discard long time none received connection.警告信信息 System.setProperty("druid.mysql.usePingMethod", "false");2.在配置文件中修改...

2021-10-25 16:37:55 889

原创 Android Studio关闭模拟器死机最简单最完美的解决方案

背景介绍本人是点击重启的时候造成卡死,重启也没有用1运行netstat -anonetstat -ano2.找到然后找到5555端口对应的PID值并记住然后运行命令taskkill /pid 18352 -ftaskkill /pid 18352 -f

2021-10-25 09:57:35 1392

原创 解决Gradle-v不是内部命令问题

标题解决Gradle-v不是内部命令问题gradle -v 执行的是我们在环境变量中配置的gradle属性。 gradlew是因为执行了一次gradle wrapper下载Gradle Wrapper之后则可以执行gradlew。然后又通过gradlew 升级了该包装,所以执行gradlew 则是独立于gradle的另一个对象。所以先执行一下gradle wrapper 下载gradle wrappergradle wrapper执行后我们在执行 gradle-v 这是会下载gradle-v

2021-10-21 09:23:25 1530

原创 配置Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效

配置Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效qny: AccessKey: 123 SecretKey: 123 bucket: aaa enable:true一般动态配置我们会用@value注解或者实现InitializingBean,这里我用的是七牛云的举例,为了解耦合动态的去管理配置文件生效@Data @ConfigurationProperties(prefix=”qny”) public class QnyPrope

2021-10-15 13:03:20 874

原创 G6数据修改后,数据不能正常刷新解决方法

G6数据修改后,数据不能正常刷新解决方法之前用官方文档的方法试了很多遍没有用,才出此下册,我这里是把之前实例化的组件销毁后,重新实例化 refresh: function() { /* if (this.treeData) { this.treeGraph.data(this.treeData); } this.treeGraph.render(); this.treeGraph.fitView(); this.

2021-10-14 16:43:12 2996 2

原创 JAVA文件中文乱码找不到文件路径两种实现方式

JAVA文件中文乱码找不到路径 String path = ResourceUtils.getURL(uploadFolder + "\\" + fileInfo.getLocation()).getPath(); File file = new File( URLDecoder.decode(path, "utf-8"));URLDecoder.decode(path,“utf-8”)

2021-10-14 10:53:27 787

原创 vue中数组改变不渲染页面问题处理,解决办法使用splice

语法结构:splice(index,len,[item])1、可以用来添加/删除/替换数组内某一个或者几个值2、该方法会改变原始数组index:数组开始下标len: 替换/删除的长度item:替换的值,删除操作的话 item为空1.修改 相当于先删除再添加 methods:{ clickModify:function () { this.arr.splice(0,1,item);

2021-10-11 10:23:49 2753

原创 JVM动态链接(Dynamic Linking)与常量池的作用

JVM动态链接(或指向运行时常量池的方法引用)每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用,包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接(Dynamic Linking)。比如:invokedynamic指令在java源文件被编译到字节码文件中时,所有的变量和方法引用都作为符号引用(Symbolic Reference)保存在class文件的常量池里。 比如:描述一个方法调用了另外的其他方法时,就是通过常量池中指向方法的符号引用来表示的,那么动态链

2021-10-10 09:41:01 1300

原创 浅谈静态代码块和非静态代码块

public class Test { private Integer num; static { a=6; } private static int a=5; public static void main(String[] args) { System.out.println(Test.a); }}这里是静态代码块,我们编译后的字节码文件反编译后如下这里的init方法什么也没有做,我们能看到是在clinit方法

2021-10-03 16:48:53 152

空空如也

空空如也

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

TA关注的人

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