![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习心得
Mogul、姚瑶摇
这个作者很懒,什么都没留下…
展开
-
剑指MySql事务
什么是事务?事务是指一连串的逻辑操作,要么全部成功要么全部失败ACID原子性:事务是原子的不可在拆分要么全部成功,要么全部失败隔离性:事务与事务之间是相互隔离的,一个事务的操作不会影响到其他事务一致性:事务修改数据,从一个状态到另一个状态,对整个数据的完整性保持稳定持久性:数据的修改正确提交是永久性的不能回滚脏读:A事务去修改 某一数据 但是没有提交事务,B去查询的时候 查询到了A没有提交的事务,这时候就发生了脏读不可重复读:A事务去修改某一数据 已经条件了的,刚好修改的数据 在B事务的查原创 2022-03-18 11:19:19 · 817 阅读 · 0 评论 -
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 · 2984 阅读 · 1 评论 -
宋红康JVM 学习笔记
为什么要学 JVM?⚫ 面试的需要:入职 BATJ、TMD、PKQ 等一线大厂不光关注技术的广度,更关注技术的深度,JVM 技术是大厂面试的必备技能,掌握越深越好⚫ 中高级程序员、架构师必备技能:架构师每天都在思考如何让我的系统更快,如何避免系统出现性能瓶颈。单纯的依靠物理机不足以解决问题,分析系统性能、调优系统瓶颈离不了对 JVM 中内存、垃圾回收、字节码指令、性能监控工具、调优参数的熟练掌握。⚫ 精进技术、极客追求:JVM 是 Java 生态的核心价值的体现,垃圾回收算法、JIT、底层原原创 2022-01-16 17:08:42 · 1125 阅读 · 0 评论 -
浅谈OOP(Object-oriented programming)
最近看一个视频很有感同身受就写了这篇文章把编程语言按照面向过程,面向对象,函数式来分类。你一定听过很多人说Java是面向对象语言,C是面向过程语言,Lisp是函数式编程语言这种分类方法是有很大问题的,因为他把问题想得过于简单了比如Python和JavaScript,你既可以用它们写出非常函数式风格的代码,也可以写出非常面对对象风格的代码,还可以写出兼具两种风格的代码,像Python和JavaScript这种横跨多个类别的语言其实有非常多,就连Java也可以让你写出非常函数式的风格,因此这种分类方法对原创 2021-12-22 15:49:40 · 889 阅读 · 0 评论 -
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 · 146 阅读 · 0 评论 -
用Files.createSymbolicLink()创建软链接FileSystemException 客户端没有所需的特权
最近做一个功能的时候,用户上传文件,然后文件重复用软链接,可以节省内存空间,Files.createSymbolicLink()刚好可以实现我的需求但是必须要用管理员方式启动才可以,不然会抛FileSystemException 客户端没有所需的特权 错误我找到的一种解决方式,执行以下命令我用他执行C盘会拒绝访问,但是其他盘符可以 例:这里用的是C盘icacls c:\ /setintegritylevel MSimple example File sourceFi原创 2021-12-13 16:08:49 · 1462 阅读 · 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 · 1063 阅读 · 3 评论 -
浅谈ORM对象关系映射
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。简单的说:ORM相当于中继数据。具体到产品上,例如的Hibernate,Mybatis中实体类的属性[Table]就算是一种中继数据。具体来说,ORM 关注数据持久性,因为它适用于关系数据库(RDBMS)。在面向对象应用程序的世界中,经常原创 2021-11-15 10:28:26 · 814 阅读 · 0 评论 -
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 · 90 阅读 · 0 评论 -
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 · 539 阅读 · 0 评论 -
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 · 339 阅读 · 0 评论 -
@PostConstruct注解详解
@PostConstruct 注解用于需要在依赖注入完成后执行任何初始化的方法。必须在类投入使用之前调用此方法。 所有支持依赖注入的类都必须支持这个注解。即使类没有请求注入任何资源,也必须调用用 PostConstruct 注释的方法。 这个注解只能注解一种方法。 应用 PostConstruct 注释的方法必须满足以下所有标准:该方法不能有任何参数,除非是拦截器,在这种情况下它需要一个由拦截器规范定义的 InvocationContext 对象。在拦截器类上定义的方法必须具有以下签名之一:voi原创 2021-11-11 15:12:46 · 3136 阅读 · 0 评论 -
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 · 5688 阅读 · 0 评论 -
UDP协议和TCP协议的区别
网络工程师小明最近交了一个女朋友丽丽,为了在丽丽面前显示自己的风趣幽默,小明讲了个TCP的笑话。你想听一个TCP的笑话吗?嗯,我想听一个TCP的笑话。好的,我会给你讲一个TCP的笑话的。好的,我会听一个TCP的笑话的。你准备好听一个TCP的笑话了吗?嗯,我准备好听一个TCP的笑话了。OK!那我要发TCP的笑话了,大概十秒钟,一共20个字。嗯,我准备接受你那个时长十秒大概20个字的笑话了。抱歉!你的连接超时了。那么,你还打算听一个TCP的笑话吗?小明以为自己很幽默的解释了TCP协议的网络知原创 2021-11-05 16:43:45 · 76 阅读 · 0 评论 -
java.lang.NoSuchMethodError: org.springframework.aop.framework.AopProxyUtils.getSingletonTarget
java.lang.NoSuchMethodError: org.springframework.aop.framework.AopProxyUtils.getSingletonTarget转载 2021-11-02 13:08:43 · 316 阅读 · 0 评论 -
httpServletRequest每次请求sessionId不同问题的一种解决办法分享
Chrome浏览器获取httpServletRequest每次请求sessionId不同问题的一种解决办法分享Session是怎么实现的 存储在哪里转载 2021-11-01 12:49:26 · 1079 阅读 · 0 评论 -
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 · 579 阅读 · 0 评论 -
Java多线程
程序,进程,线程的基本概念+并行与并发:程序:是为完成特定任务,用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象。进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,有它自身的产生,存在和消亡的过程。-------生命周期线程:进程可进一步细化为线程,是一个程序内部的一条执行路径即:线程《线程(一个程序可以有多个线程)程序:静态的代码 进程:动态执行的程序线程:进程中要同时干几件事时,每一件事的执行路径成为线程。并行:多个CPU同时执行多个任务,比如:多个人同时做原创 2021-10-29 12:27:54 · 89 阅读 · 0 评论 -
使用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 · 930 阅读 · 0 评论 -
配置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 · 923 阅读 · 0 评论 -
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 · 828 阅读 · 0 评论 -
JVM动态链接(Dynamic Linking)与常量池的作用
JVM动态链接(或指向运行时常量池的方法引用)每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用,包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接(Dynamic Linking)。比如:invokedynamic指令在java源文件被编译到字节码文件中时,所有的变量和方法引用都作为符号引用(Symbolic Reference)保存在class文件的常量池里。 比如:描述一个方法调用了另外的其他方法时,就是通过常量池中指向方法的符号引用来表示的,那么动态链原创 2021-10-10 09:41:01 · 1317 阅读 · 0 评论 -
浅谈静态代码块和非静态代码块
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 · 157 阅读 · 0 评论 -
JVM和CPU两个角度并行并发的区别
CPU处理器角度并行并行(parallelism),指两个或者多个事件在同一时刻发生,在现代计算机中通常指多台处理器上同时处理多个任务并发·并发(concurrency),指两个或多个事件在同一时间间隔内发生,在现代计算机中一台处理器“同时”处理多个任务,那么这些任务只能交替运行,从处理器的角度上看任务只能串行执行,从用户的角度看这些任务“并行”执行,实际上是处理器根据一定的策略不断地切换执行这些“并行”的任务。JVM角度并行JVM中的并行,指多个垃圾回收相关线程在操作系统之上并发运行,原创 2021-07-22 22:16:22 · 236 阅读 · 0 评论 -
ZipUtil压缩解压缩工具类
//需要用到的依赖 <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.10.5</version> </dependency> <dependency>原创 2021-07-13 10:34:08 · 704 阅读 · 0 评论 -
proteritesUtil读写工具类
package com.qf.updatefile.utils;import lombok.extern.slf4j.Slf4j;import java.io.*;import java.util.Properties;/** * * @author * */@Slf4jpublic class PropertiesUtil { private String properiesName = ""; public PropertiesUtil()原创 2021-07-13 10:37:54 · 50 阅读 · 0 评论 -
okhttp远程调用下载文件
okhttp远程调用最近做一个项目,因为是做安卓需要远程调用一个接口拿到文件,并返回JSON,但是原创 2021-07-13 10:05:16 · 797 阅读 · 0 评论 -
多文件批量下载打包成.zip
多文件批量下载打包成.zip //下载文件打包成zip压缩包 @GetMapping("/zip/{id}") public void zip(@PathVariable("id") Integer id,HttpServletResponse res){ List<TFileInfo> list = this.getById(id); List<File> files=new ArrayList<>();原创 2021-07-11 15:22:44 · 589 阅读 · 0 评论 -
树结构递归N级删除
树结构递归N级删除数据表设计最近项目中文件是存在本地的,遇到了递归删除的问题,然后就写了一下数据表设计dir_id记录的为父目录的id,dir_id=-1表示是根节点,这样子就形成了一个树图的结构public void test(){ List<TFileInfo> list = this.deleById(326); list.forEach(v->{ System.out.println("================原创 2021-07-11 14:59:41 · 192 阅读 · 0 评论