自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring 启动详解

Springboot启动流程方法入口: org.springframework.boot.SpringApplication#run(java.lang.String…)StopWatch 开启,公开总运行时间和每个命名任务的运行时间getRunListeners(args) : 获取SpringApplicationRunListener 监听者prepareEnvironment(): 准备环境,并发送环境准备事件给相关listeners,这时候有ConfigFileApplicationLi

2021-04-20 15:16:29 244

原创 ubuntu 下启用ipv6

安装Teredo隧道客户端sudo apt-get install miredosudo miredo用ifconfig 确定是否安装正确查看teredo服务状态sudo systemctl status miredo.service 测试方法:ping6 ipv6.google.com或者 访问 http://test-ipv6.com/ 网站注意点以下只是一些注意点,可能不需要更改也可以访问,按需修改:1.更改miredo配置文件sudo vim /etc/miredo

2020-09-28 11:34:03 2099

原创 mybatis自动生成代码工具,字段注释

1. 配置工具包maven依赖<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version></dependency><build> <plugins>

2020-08-03 14:54:00 1202

原创 RSA非对称加密

起源最开始,密码学都是基于对称密钥,也就是发送者使用特定密钥加密信息,而接收者使用相同密钥解密。这就造成了一个问题,如果需要和很多人进行通信,那么就要跟每个人都有一对密钥,保管很多不同的钥匙,非常难以管理。RSA就诞生了,它是非对称加密,有不同的加密密钥与解密密钥。它原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥使用有两种使用方式:公钥加密、私钥解密假设B有一对公钥私钥,公钥公开给所有人,A要给B发送一段信息,那么使用B的公钥加

2020-07-13 14:32:57 278

原创 缓存穿透、缓存击穿、缓存雪崩

redis作为基于内存的数据库,并且提供一定的持久化功能,被我们广泛用于缓存,加锁等场景中,作为中间件用于解决数据库读写慢等问题。但是引入redis又有可能出现缓存穿透,缓存击穿,缓存雪崩等问题。缓存穿透描述: 某个key对应的数据在数据源并不存在,每次针对此key的请求都会到数据库,从而可能造成数据库压力过大,压垮数据库。比如请求伪造一个缓存中可能不存在的id ,例如负数,uuid 等解决方法:布隆过滤器:布隆过滤器能实现判断一定不存在的数据,将所有可能存在的数据哈希到一个足够大的b

2020-06-21 23:04:37 106

原创 uefi引导windows + linux双系统安装

最近突然想玩一玩linux系统,所以选择安装windows + ubuntu 双系统,因为这是第一次安装,所以这篇博客记录一下安装过程。我就按照官网已经有教程来尝试吧先确定安装要准备好的条件要安装系统首先需要下载镜像, 下载网址:官网下载系统镜像,也可以点击选择替代版本找到所需要的版本,这里我选择ubuntu16.04这里我试了一下,下载特别慢,还是去国内镜像网站下载,...

2020-03-28 14:51:35 709

原创 excel导出加密

今天需要写一个excel导出加密,具体实现方法是先将文件导出,再获取文件,加密后导出成新的文件,删除或替换原文件。依赖包poi 一定要注意最好是3.17,我之前用的是4.1.0打开会显示文件损坏,还没找到原因。加密代码如下,参考用的是:https://poi.apache.org/encryption.htmlXML-based formats - Decryption/** ...

2020-02-20 21:07:32 1288

原创 MultipartEntityBuilder 中文乱码,File转MultipartFile

将file先转为fileItem再转为MultipartFileFile file = new File("*****");DiskFileItem fileItem = new DiskFileItem("file", "text/plain", false, file.getName(), (int) file.length() , file.getParentFile()); ...

2020-02-20 16:18:04 750

原创 java8中map排序问题及方法使用

Map<String, List<String>> itemId2userIds = Maps.newHashMap();List<String> sortItemIds = itemId2userIds.entrySet().stream().sorted(Comparator.comparingInt(s -> s.getValue().size(...

2019-12-29 23:51:28 613

原创 postman请求传参为Boolean布尔值

今天使用postman调用接口时,传参为Boolean时遇到了问题:使用传输方式:{ "flag": true, "key": "bonus_gray", "secret": ".."}方法:public String markSwitch(Boolean flag, String key, String secret) {...}报错信息:java.lang.Runtime...

2019-12-04 11:12:28 9207

原创 linux 常用命令

目录:cd:变换目录pwd:显示目前的目录mkdir:创建一个新的目录rmdir:删除一个空的目录. : 代表此层目录… : 代表上一层目录– : 代表前一个工作目录~ : 代表『目前使用者身份』所在的家目录~account : 代表 account 这个使用者的家目录(account是个帐号名称)文件查看:cat 由第一行...

2019-11-30 23:13:27 93

原创 spring线程池ThreadPoolTaskExecutor

概述多线程编程时,频繁的创建线程和销毁进程会降低系统运行的效率,也不好控制容易出错,所以线程池产生,ThreadPoolTaskExecutor是spring中的线程池技术,它主要是使用jdk中的ThreadPoolExecutor进行实现。通常使用线程池是为了提高系统效率和吞吐量,做一些异步操作ThreadPoolExecutor的构造方法public ThreadPoolExecutor...

2019-10-16 18:45:04 218

原创 sql 相关问题记录

本篇博客主要记录平时写代码过程中的sql语句或者碰到的问题insert重复键问题有三种方法:INSERT IGNORE INTO: 如果有条目匹配unique key或primary key,忽略不插入注意点:如果出现问题,MySQL将不会显示任何错误,因此无法处理错误,自动增量键仍会增加。INSERT REPLACE INTO:替换条目,如果有条目匹配unique key或prima...

2019-09-19 17:50:37 135

原创 n叉树的遍历

前序遍历: 先遍历根节点 再遍历根节点1,3,5,6,2,4后序遍历: 先遍历根节点 再遍历子节点5,6,3,2,4,1java递归遍历方法private void preorder(Node root) { if (root == null) return; // 此处前序遍历 for (Node node : root.children) { ...

2019-08-29 16:56:08 116

原创 redisTemplate常用方法记录

我们平时使用redis有以下几种用途:缓存 public void set(String key, Object object, int expireSecond) { ValueOperations<String, Object> ops = redisTemplate.opsForValue(); ops.set(key, object, expir...

2019-08-21 20:51:47 217

原创 java8 stream 记录

常用方法filter(T -> boolean) 保留 boolean 为 true 的元素distinct() 去重sorted(Comparator.comparing()) / sorted((T, T) -> int) 排序map(T -> R) 将流中的每一个元素 T 映射为 R(类似类型转换)limit(long n) 返回前 n 个元素skip...

2019-07-25 20:06:02 144

原创 grafana

简介Grafana是一个功能齐全的度量仪表盘和图形编辑器工具,他一般是和一些时序数据库进行配合来展示数据。mac下用brew安装brew updatebrew install grafana安装完成后运行grafana,默认端口3000// startbrew services start grafana// stopbrew services stop grafana然后就可...

2019-07-03 17:30:48 826

原创 二叉搜索树出现最多的数

二叉搜索树它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树中序遍历中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则:(1)中序遍历左子树(2)访问根结点(3)中序遍历右子树中序遍历结果...

2019-06-28 16:03:54 328

原创 mac 安装redis

安装brew进入 https://brew.sh/ 官网, 按照官网上面命令。等待安装好之后用brew命令安装redisbrew install redis安装成功配置文件路径: /usr/local/etc/redis.conf在这里插入图片描述...

2019-06-27 13:39:29 99

原创 二进制相关总结

原码、反码、补码原码, 反码, 补码的基础概念和计算方法.在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:[+1]原 = 0000 0001[-1]原 ...

2019-06-17 17:50:25 230

原创 lombok总结

原理Lombok支持JSR 269 Pluggable Annotation Processing API,Javac从Java6开始支持“JSR 269 API”规范,只要程序实现了该API,就能在Javac运行的时候得到调用1. javac对源代码进行分析,生成了一棵抽象语法树(AST)2. 运行过程中调用实现了“JSR 269 API”的Lombok程序3. 此时Lombok就对第一...

2019-05-27 21:02:48 111

原创 spring cloud 之 feign

什么是feign?Feign是Netflix开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS-2.0以及WebSocket。Feign可帮助我们更加便捷、优雅地调用HTTP API。为什么要使用feign?原先调用API会产生很多硬编码,在业务繁杂时显得非常冗余。所以,我们可以用更优雅的Feign来实现这个功能。如何使用?首先添加maven配置 <...

2019-05-18 17:55:26 236

原创 拦截器(Interceptor)和过滤器(Filter)

Interceptor简介:它依赖于web框架,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在service或者一个方法前,调用一个方法,或者在方法后,调用一个方法,动态代理就是拦截器的简单实现在SpringMVC中使用它可以实现HandlerInterceptor接口public interface HandlerInterceptor { default ...

2019-04-30 11:53:14 380

原创 安装tomcat配置并运行spring MVC项目

首先,上官网下载tomcathttp://tomcat.apache.org/找到相应版本下载并解压,此处我选择win64系统下的解压完成后,配置环境变量,注意要已经配置过JAVA_HOME点击bin目录下的start.bat此时运行 localhost:8080,就能看见,代表配置成功此时进入idea,在项目中添加tomcat配置,并选择war包点击运行,大功告成...

2019-04-21 14:49:11 2547

原创 Springboot集成Swagger

作用swagger是为了方便进行测试后台的restful形式的接口,实现动态的更新,当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要人为的维护这个接口进行测试。步骤先添加pom配置 <dependency> <groupId>io.springfox</groupId> <ar...

2019-04-18 11:38:26 83

原创 IntelliJ idea 好用插件

记录一下平时用IntelliJ idea 开发有用到的插件JRebel for IntelliJ热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署.ignoregit提交时过滤掉不需要提交的文件activate-power-mode装逼神器,打字会有特效Alibaba Java Coding Guidelines阿里编码规约,提高代码质量Free Mybati...

2019-04-02 17:23:59 139

原创 设计模式-单例模式

介绍,适用场景在Java开发过程中,有时候需要保证一个类仅有一个实例,并提供一个访问它的全局访问点。比如在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这一类对象只能有一个实例,如果制造出多个实例就可能会导致一些问题的产生。优点对于频繁使用的对象,可以省略创建对象所花费的时间由于 new 操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻...

2019-03-23 22:27:02 76

原创 java注解

什么是注解?java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。有哪些注解java中元注解有四个: @Retention @Target @Document @Inherited;@Retention:注解的保留位置@Re...

2019-03-18 18:43:36 102

原创 mybatis 事务回滚配置

在mybatis进行批量操作的时候,插入多条数据时,设置回滚但是前面几条还是插入,经过尝试,找到解决方法:设置setAutoCommit(false)即可 SqlSession session = sqlSessionFactory.openSession(false); Connection conn = session.getConnection();...

2019-02-18 15:58:41 6377 1

原创 Git 新建项目并推送到远程仓库

安装git具体安装过程就不记录,官网地址:https://git-scm.com/安装完git之后,在项目目录右键会多出两个操作这时候,可以开始新建仓库首先打开你要创建的项目目录,点击Git Bash Here调出命令窗口建立一个本地仓库,初始化.git文件,执行命令 $ git init仓库建好了,而且告诉你是一个空的仓库,可以发现当前目录下多了一个.git的目录,这...

2019-01-24 17:32:04 3797

原创 Java 序列化

概念一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型,此过程称为序列化。将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化。对象的序列化主要有两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;在网络上传送对象的字节序列。整个过程都是 Java 虚拟机(JVM)独立的,也就是说,在一个平台上序...

2019-01-17 11:41:09 124

原创 设计模式-工厂模式

介绍工厂方法模式是简单工厂的仅一步深化, 在工厂方法模式中,我们不再提供一个统一的工厂类来创建所有的对象,而是针对不同的对象提供不同的工厂。 每个对象都有一个与之对应的工厂适用场景客户不关心它所要创建对象的类(产品类)的时候。客户知道它所要创建对象的类(产品类),但不关心如何创建的时候。例如:hibernate里通过sessionFactory创建session、通过代理方式生成ws客户...

2019-01-15 17:25:50 130

原创 有道云笔记登录失败,解决办法

今天登录有道云笔记是,无论是app还是pc端,一直显示登陆失败,摸索了解决方法先登录网页版官网,网页版肯定可以登录的https://note.youdao.com/进入账号安全点击你要登陆的端注销,然后重新登陆亲测,大功告成...

2018-12-24 17:45:16 11349 2

原创 设计模式-代理模式

什么是代理模式?代理(Proxy)是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。优点职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。代理对象可以在客户端和目标对象之间起到中介的作用,...

2018-12-24 14:57:49 159

原创 设计模式-装饰者模式

简介装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。适用环境(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。(2)处理那些可以撤消的职责。(3)当不能采用生成子类的方法进行扩充时。UML类图描述AbstractComponent(被装饰对象的抽象接口)定义一个抽象对象接...

2018-12-17 17:48:52 149

原创 设计模式-简单工厂模式

介绍严格的说,简单工厂模式并不是23种常用的设计模式之一,它只算工厂模式的一个特殊实现。简单工厂模式在实际中的应用相对于其他2个工厂模式用的还是相对少得多,因为它只适应很多简单的情况。适用场景需要创建的对象较少。客户端不关心对象的创建过程。简单工厂模式角色分配:工厂(Factory)角色 :简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的...

2018-12-11 10:32:56 166

原创 Spring系列之AOP

什么是AOP?AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权...

2018-11-15 12:13:09 209

原创 从JDBC到JPA (2)

JPA 是什么?JPA全称Java Persistence API,是一组用于将数据存入数据库的类和方法的集合。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。Java Persistence API(Java 持久层 API):用于对象持久化的 API作用:使得应用程序以统一的方式访问持久层JPA 与 Hibernate是什么关...

2018-11-14 15:31:18 236

原创 Vue下的el-table+spring+hibernate实现分页操作

之前一直用的是jquery的datatable实现分页效果,第一次使用vue下的element-ui,此篇博客记录一下踩坑后的实现。首先,html页面这边就不赘述,可去官网看文档http://element-cn.eleme.io/#/zh-CN/component/pagination&lt;div id="tabs"&gt;&lt;el-row&gt; &lt;el-ta...

2018-11-07 17:55:08 444

原创 jquery 控制鼠标移出div定时消失

今天在开发中,想做一个类似QQ详情页面的东西,实现:鼠标移到table某条内容上,出现一个div详情展示页若鼠标移入div,则div不消失鼠标移出div或table,一秒后消失在进行仔细研究和尝试后,实现了该功能先了解下主要用到的方法:1、mouseover与mouseenter mouseover事件:不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。...

2018-11-01 16:17:31 1022

空空如也

空空如也

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

TA关注的人

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