自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林先生学习博客

做个合格的程序员

  • 博客(101)
  • 收藏
  • 关注

转载 synchronized 关键字理解

synchronized,是Java中用于解决并发情况下数据同步访问的一个很重要的关键字。当我们想要保证一个共享资源在同一时间只会被一个线程访问到时,我们可以在代码中使用synchronized关键字对类或者对象加锁。那么,本文来介绍一下synchronized关键字的实现原理是什么。在阅读本文之间,建议先看下Java虚拟机是如何执行线程同步的。反编译众所周知,在Java中,synchronized有两种使用形式,同步方法和同步代码块。代码如下:/** * @author Hollis 1.

2020-11-05 09:35:58 243

原创 Spring之BeanDefinition对象

BeanDefinition对象就承担了各个业务对象以及它们之间的依赖关系,需要通过某种途径来记录和管理这些信息。责任:容器中的每一个bean都会有一个对应的BeanDefinition实例,该实例负责保存bean对象的所有必要信息,包括bean对象的class类型、是否是抽象类、构造方法和参数、其它属性等等。在Spring中,虽然都是叫做bean,但是定义Bean的方式却有很多,比如,使用xml文件配置bean,使用@Configuration配置Bean,使用@Bean注解,等等,不同的Bean还有着

2020-08-19 21:43:21 561

原创 BeanFactory和FactoryBean的区别

BeanFactoryBeanFactory是一个接口,它是spring中工厂的顶层规范,用于管理和创建Bean,它是IOC最基本的接口 是springIOC容器哦的核心接口,定义了getBean()、containsBean()等管理Bean的通用方法。 具体实现类:DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext(通常用这个获取spring中的Bean)这些实现类又从不同的维度分别有不同的扩展。FactoryBean首先它是一

2020-08-18 19:22:31 295

原创 Guava学习笔记

Guava 是谷歌开发的高效切简单的API 里面有大量的方法来提高我们平时的开发效率。本文是根据http://ifeve.com/google-guava/(并发编程网)的教学自己写的一些demo笔记1.Optional使用Optional除了赋予null语义,增加了可读性,最大的优点在于它是一种傻瓜式的防护。Optional迫使你积极思考引用缺失的情况,因为你必须显式地从Optional获取引用 private static void optionalStudy(){

2020-07-05 15:51:23 278

原创 JVM之运行时数据区

前言 :Java虚拟机在执行JAVA程序时,将内存分为若干个不同的数据区域,这些区域都有各自的用途,有的区域跟随的县城的启动和结束而建立和销毁,有的随着虚拟机进程启动而存在。运行时数据区由 程序计数器、java虚拟机栈、本地方法栈、堆方法区构成1.程序计数器程序计数器占很小的内存空间,它可以看做是当前所执行的字节码的行号指示器 每条线程都需要一个独立的程序计数器,各个计数器之间互不影响。计数器记录的是正在执行的虚拟机字节码的地址。2.java虚拟机栈线程私有java虚拟机栈描述的是内存模型

2020-06-08 20:30:24 131

原创 设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件

最近阅读《深入理解java 虚拟机》,对书中的一些例子进行实操 故记录一下自己的学习内容。设置项目JVM参数1.Idea中修改JVM内存大小1.选择启动类 选择Edit configuration2在VM option修改JVM参数2.windows下修改tomcat JVM内存大小1. 通过startup.bat启动tomcatWindows直接打开Tomcat根目录下的bin文件夹,编辑catalina.bat,在set JAVA_OPTS=%JAVA_OPTS%…这句之后加上:set

2020-06-08 17:38:07 1993

原创 spring boot 各种文档类型转pdf 之openOffice使用

项目需要将各种txt docx pptx ppt doc xlsx xls 文档类型转成PDF 并在终端显示,查阅资料发现能使用openoffice实现,记录一下使用心得。一 安装openoffice网上很多安装教程 window版本下无脑下一步。spring boot 导入依赖注意 :jodconverter 2.2.1 不支持docx和xlsx等格式 而jodconverter 2.2.2版本是支持。但是jodconverter 2.2.2 在maven仓库是找到不到的 需要自己去网上下载j

2020-06-03 10:07:30 1222 1

原创 @ConditionalOnProperty的作用和用法

在spring boot中有时候需要控制配置类是否生效,可以使用@ConditionalOnProperty注解来控制@Configuration是否生效.通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值。如果该值为空,则返回false;如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。如果返回值为false,则该configuration不生效;为tru

2020-05-20 09:25:37 4004

原创 springboot 拦截器 + Guava 开源工具类之 RateLimiter 实现限流

1. 限流每个服务器都有访问上限,当访问的并发量大过服务器的承受范围的时候,我们就需要考虑限流的方式 确保系统挂掉。2.限流算法常见的限流算法有两种:漏桶算法和令牌桶算法。2.1 漏桶算法算法思路: 将请求先加入到桶里,漏桶按照一定的速度将发出 处理请求,当请求并发量过大时候,超出桶的容量就会拒绝请求。2.2 令牌桶算法思路: 系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入Token ,如果桶已经满了就不再加了.新请求来临时,会各自拿走一个Token,如果

2020-05-19 21:01:06 1332

转载 【sql_mode不兼容】incompatible with sql_mode=only_full_group_by

"this is incompatible with sql_mode=only_full_group_by"错误解决方案数据库升级5.7 导致问题一、原理层面 这个错误发生在mysql 5.7 版本及以上版本会出现的问题: mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"...

2020-05-08 16:57:56 314

原创 java8 stream流 学习笔记

参考文章 https://juejin.im/post/5e83fa28e51d4546d23bfd73https://juejin.im/post/5cc124a95188252d891d00f2#heading-10以下是学习笔记package com.example.demo.javaTest;import com.example.demo.Mapper.dao.User;im...

2020-04-09 13:44:21 158

原创 分析分析HashMap

1.HashMap 数据结构数组加链表数组的结构大概是这样的当我们put<k,v>值进去的时候 HashMap会根据key进行一个hash算法去计算一个值与数组长度(n-1)做与&运算 算出index ,这个index类似数组地址位置。//进行hash算法static final int hash(Object key) { int h; ...

2020-04-07 09:58:27 116

原创 nginx 学习笔记

nginx 学习笔记1. 相关概念1. 正向代理所谓正向代理就是顺着请求的方向进行的代理,即代理服务器他是由你配置为你服务,去请求目标服务器地址。2.反向代理所谓反向代理正好与正向代理相反,代理服务器是为目标服务器服务的 浏览器将请求交给反向代理服务器 方向代理去找自己服务器的节点。 对外其实他们是一体的 暴露给我们的是代理服务器3.负载均衡通过反向代理服务器,将大量请求...

2020-03-31 19:41:28 247

原创 枚举类笔记

定义枚举类枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是默认继承Object类,因此枚举类不能显示继承其他父类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类。枚举类的...

2020-03-27 16:45:25 172

原创 LeetCode 返回倒数第k个节点

/** * 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 * <p> * 注意:本题相对原题稍作改动 * <p> * 示例: * <p> * 输入: 1->2->3->4->5 和 k = 2 * 输出: 4 * 说明: * <p> * 给定的 k 保证是有效的。 * <p&g...

2020-03-24 09:41:36 235

原创 LeetCode 移除重复节点

题目/** * @Author:linjunbo * @Description: * @Date: 2020/3/17 10:13 *//** * 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 * <p> * 示例1: * <p> * 输入:[1, 2, 3, 3, 2, 1] * 输出:[1, 2, 3] * 示例2: * &...

2020-03-17 13:50:17 234

原创 LeetCode 字符串轮转

/** * 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 * * 示例1: * * 输入:s1 = "waterbottle", s2 = "erbottlewat" * 输出:True * 示例2: * * 输入:s1 = "aa", "aba" * 输出:False...

2020-03-11 17:24:48 146

原创 redis 命令总结

String 命令incr key 将key 值加一 用作计数器decr key 将key值 减一 用作计数器setex key second value 设置key的值并设置时间 以秒为单位setnx key value 如果key的值存在则不设置 不存在才设置getset key value 设置新的值把旧的值返回strlen key 返回key 的长度...

2020-03-10 23:40:08 276

原创 LeetCode 零矩阵

/** * 编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。 * * * * 示例 1: * * 输入: * [ * [1,1,1], * [1,0,1], * [1,1,1] * ] * 输出: * [ * [1,0,1], * [0,0,0], * [1,0,1] * ] * 示例 2: * * 输入:...

2020-03-10 19:39:20 557

原创 LeetCode 一次编辑

/** * 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 * * * * 示例 1: * * 输入: * first = "pale" * second = "ple" * 输出: True * * * 示例 2: * * 输入: * first = "pales"...

2020-03-05 19:43:31 168

原创 LeetCode 旋转矩阵

/** * 给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度。 * * 不占用额外内存空间能否做到? * * * * 示例 1: * * 给定 matrix = * [ * [1,2,3], * [4,5,6], * [7,8,9] * ], * * 原地旋转输入矩阵,使其变为: * [ * [7...

2020-03-05 19:35:12 431

原创 LeetCode 字符串压缩

/** * 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 * * 示例1: * * 输入:"aabcccccaaa" * 输出:"a2b1c5a3" * 示例2: * * 输入:"abb...

2020-03-05 19:34:22 345

原创 LeetCode 回文排列

/** * 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 * * 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。 * * 回文串不一定是字典当中的单词。 * * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/palindrome-permutation-lcci * 著作权归领扣网...

2020-03-05 19:33:32 221

原创 LeetCode 判定是否互为字符重排

/** * 给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 * * 示例 1: * * 输入: s1 = "abc", s2 = "bca" * 输出: true * 示例 2: * * 输入: s1 = "abc", s2 = "bad" * 输出: false * 说明: * * 0 <= len(s1...

2020-03-05 19:32:51 237

原创 LeetCode 1.判定字符是否唯一

1. 判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。方法一: 使用String中的indexOf方法 public sta...

2020-03-05 19:31:54 183

原创 LeetCode URL化

/** * URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。) * * 示例1: * * 输入:"Mr John Smith ", 13 * 输出:"Mr%20John%20Smith" * 示例2: * * 输入:" ...

2020-03-05 19:30:42 234

原创 学习RabbitMQ记录!

一,什么是RabbitMQ ?AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端...

2020-03-05 16:32:58 191

原创 springboot通过重写addResourceHandlers拦截请求访问本地资源

通过继承WebMvcConfigurer重写addResourceHandlers 例如当请求为localhost:8080/photo/** 就会去访问本地资源的内容@Configurationpublic class MyWebMvcConfig implements WebMvcConfigurer { @Value("${server.resource}") /** ...

2020-02-27 16:01:06 1293

原创 解决 注入Bean为null的问题 ApplicationContext Spring 上下文对象

做项目的时候在使用一些其他框架的时候 发现Autowired 为NULL 查阅了一些资料发现以下这个方法可以解决这个问题1.创建SpringContextUtil类package com.example.demo.Confi;import org.springframework.beans.BeansException;import org.springframework.conte...

2020-02-27 15:38:11 2156 1

原创 knife4j ,swagger接口文档升级开源项目!

swaggerSwagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步但是相对来说swagger的ui页面不是很友好 这时候knife4j 就能够很好的代替他了,废话不多说 springboot 集成knife4j...

2020-02-26 14:26:21 596

原创 读《数据结构与算法》 的一些笔记

**1.数据结构分类**一组数据元素以及其相互关系的数据结构同样有两种不同的表现形式,一种是逻辑结构一种叫存储结构逻辑结构 分为集合 线性结构 树形结构 图形结构 线性结构包括线性表 队列 栈, 树形结构 图形结构为 为非线性结构2.数据逻辑结构表示方式3.数据结构 表示方式:二元组 和图形 例子2-1 到2-4 对应的图形:3.抽象数据类型4.算法空间复...

2020-02-25 00:03:18 270

转载 session 和token 的区别

目录一、session的状态保持及弊端二、token认证机制一、session的状态保持及弊端当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用...

2020-01-17 22:29:32 167

原创 Springboot 使用Quartz 定时任务框架

使用场景: 定时任务时间需要根据数据表的时间来进行定时任务,而springboot自带的定时任务cron表达式 并不能够动态改变 因此使用Quartz 定时任务框架 可以快速解决问题 。SprintBoot 整合 Quartz框架一,导入依赖 <!-- quartz依赖 --> <dependency> <groupId&...

2020-01-07 20:51:23 168

原创 一文搞懂:搭建自己的云服务器

无聊时间网上冲浪,发现百度BCC 3个月才18元,闲着无聊购买后打算把自己的毕业设计扔上去。可谁知道花了2天时间。。。以前没怎么玩过服务器和Linux 在加上公司是局域网使用secureCTR 一直连不上服务器 我还纳闷是什么原因。。。。 后来用了自己的笔记本连自己的网络就解决了。。 下面进入正题 记录一个从什么都不会到搭建自己的项目的过程;1.购买BCC服务器因为第一次玩 所以找了个最便宜...

2019-12-14 00:34:53 1711

原创 centOS 安装 redis 使用

一 安装redis1.检查是否有redis yum源yum install redis2.下载fedora的epel仓库yum install epel-release3.安装redis 数据库yum install redis4.安装完毕后 使用下面命令启动redis服务systemctl start redissystemctl stop redis 停止服务...

2019-12-11 13:57:42 100

原创 SQL语句优化

1.select子句中尽量避免使用**表示全部查找全部数据 如果数据库数据量很大的话 你只能够看着屏幕发呆了!另外,如果select * 用于多表联结,会造成更大的成本开销。2.使用where 避免在where左侧出现运算 表达式 函数等 因为这样会导致全表扫描例如 where age+1 >17优化方法: here age > 17 -1所以,为了提高效率,wher...

2019-12-09 10:45:44 76

原创 json处理 之 fastJson一些使用总结

springboot中需要导入依赖 :<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency>f...

2019-12-06 11:40:13 265

原创 读《Springboot 实战》 总结

@springbootApplication相当于 包含了几个注解

2019-11-22 20:52:49 244

原创 Springboot 发起http请求调用高德接口

RestTemplate templates = new RestTemplate(); //高德天气状况请求地址 String url = "https://restapi.amap.com/v3/weather/weatherInfo?key="+GaoDekey+"&city="+code; // 发起HTTP请求 获取高德天气状况 ...

2019-11-19 20:04:11 1214

原创 Springboot 解析excel

导入依赖<!-- 解析excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version...

2019-11-19 19:55:07 167

空空如也

空空如也

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

TA关注的人

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