- 博客(34)
- 收藏
- 关注
原创 一篇理解布隆过滤器
这里只是简单介绍一下布隆过滤器的基本原理,使用方法和应用场景,不涉及任何优化问题。(其实是博主较菜,看不懂那些公式。)1. 什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。2. 底层实现其实就是一个位数组(bit数组),只有0和1。3. 如何使用1)首先将元素装入(映射)到布隆过滤器中。使用多个不同的哈希函数生成多个哈希值,得到的哈希
2020-08-24 17:35:49
362
原创 最全面的redis常见面试题总结
浅问题全部是博主面试学习过程中总结的。全部手码,如果喜欢或者对你有帮助的话可以点赞加收藏!!!这篇文章是从易到难来拆解redis的常见面试题的,大家可以依次来看。目录1、redis和mamcached的区别2、redis设置过期时间 expire3、内存淘汰机制 6种4、持久化机制(快照RDB,追加文件AOF)5、缓存雪崩6、缓存穿透7、如何解决redis并发竞争key问题8、缓存与数据库双写时的数据一致性问题9、redis集群过程1、主从复制2、 哨兵3、redis集群1、redis和mam
2020-06-11 11:29:54
807
原创 线程池面试知识,谈谈你对ThreadPoolExecutor的理解
1、线程的创建方式(四种)?继承自Thread类,并重写run方法。实现Runnable接口,并实现run方法。实现Callable接口,并实现call方法。直接从线程池中线程。2、为什么使用线程池?线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数超过了最大数量,超出数额量的线程排队等候,等待其他线程执行完毕,再从队列中取出任务来执行。主要特点:线程复用、控制最大并发数、管理线程降低资源消耗,通过重复利用已创建的线程降低线程
2020-05-13 16:11:26
366
原创 深入理解JVM—满足什么条件的对象才会进入老年代?
我们可能知道jvm调优,但是jvm调优到底是为了调整什么呢?或者说是优化什么?可能并不是特别清楚。其实很简单,就是为了减少STW(stop the world),什么会造成这一现象呢,学过gc的应该都知道,就是full gc,所以其实优化就是为了减少full gc。咱们都知道只有当老年代满了的时候会触发系统的full gc线程来进行full gc,所以引出了这次的题目,到底满足什么样条件的对象才...
2020-03-16 19:44:47
6204
9
原创 Java面试——阻塞队列
阻塞队列定义:顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下当阻塞队列是空时,从队列中获取元素的操作会被阻塞。当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。这个是消息队列的底层原理优点:可以不用管阻塞或者唤醒,阻塞队列会解决,可以很简单的写出一个生产者消费者模式。...
2019-11-05 10:59:36
1349
原创 synchronized和Lock的区别
题目:synchronized和Lock有什么区别?用新的Lock有什么好处?你举例说说。1原始构成synchronized是关键字属于JVM层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor)...
2019-11-05 09:46:42
492
原创 java面试题——CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch定义:让一些线程阻塞直到另一些线程完成一些列操作之后才被唤醒。即使门闩的意思,给定一个数,当这个数被减到0时才能开始运行另一个线程。主要有两个方法一个是await方法等待,一个是countDown方法让门闩减一。实例代码:public static void closeDoor() throws Exception{ CountDownLat...
2019-10-25 09:54:00
824
原创 Java中各种锁机制
公平锁是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先到先得。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁在高并发的情况下,有可能会造成优先级反转或者饥饿现象.并发包中...
2019-10-23 19:57:16
945
原创 CopyOnWrite类来解决list的并发问题
ArrayList有什么问题ArrayList是单线程下使用的,不适用于多线程环境,如果是多线程环境中会报java.util.ConcurrentModificationException错误。简单举例,现在在花名册上写名字,张三正在写的时候,李四过来非要抢花名册写名字,一拽花名册,导致张三写的花名册出了问题。引入CopyOnWrite来解决这个问题CopyOnWrite叫做写时复制原理...
2019-10-22 15:54:54
328
原创 Java面试题——ABA问题
从哪里引出的ABA问题CAS—>UnSafe —> CAS底层思想 —> ABA —> 原子引用更新 —>如何规避ABA问题如果不理解什么是CAS和UnSafe问题,请跳入Java面试题——CAS(compareAndSet)什么是ABA问题通俗点讲就是,就和坐火车时买两头票差不多,线程只管开头和结尾的数据值一样就认为是正确的,中间被谁改过了,它...
2019-10-16 20:57:13
1016
原创 Java面试题——CAS(compareAndSet)
CAS是什么?就是比较并交换之前咱们学过了jmm模型(没有学过的同学请点击连接JMM和JVM内存模型),从中可以知道每个线程都会将主内存中的数据拷贝到自己内存中进行运算,而CAS则是比较当前工作内存中的值与主内存中的值,如果相同则执行规定操作,否则继续比较直到主内存和工作内存中的值一致为止。测试代码:/** * @author shihangqi * @date 2019/10/15...
2019-10-16 15:50:46
538
原创 Java面试题——volatile关键字以及相关知识
JMM模型首先你要有JMM(java memory model)的相关知识如果没有请看这篇文章:JMM和JVM内存模型volatile定义volatile是java虚拟机提供的轻量级的同步机制三个特性:1. 保证可见性 2.不保证原子性 3.禁止指令重排保证可见性验证代码public class VolatileDemo { boolean running = true;...
2019-10-15 10:19:31
551
转载 JMM和JVM内存模型
1、JVM内存模型JVM内存模型中包括:程序计数器(PC)java虚拟机栈本地方法栈java堆方法区程序计数器(PC)程序计数器是一块很小的内存空间,用于记录下一条要运行的指令。每个线程都需要一个程序计数器,各个线程之中的计数器相互独立,是线程中私有的内存空间java虚拟机栈java虚拟机栈也是线程私有的内存空间,它和java线程同一时间创建,保存了局部变量、部分结果,并参...
2019-10-14 14:57:13
446
原创 经典Java面试题——类初始化和实例初始化
类初始化过程一个类要创建实例需要先加载并初始化该类main方法所在的类需要先加载和初始化(在这一步会加载所有的静态变量和方法,这里是按顺序执行的)一个子类需要初始化需要先初始化父类一个类初始化就是执行< clinit>()方法< clinit>()方法由静态变量显示赋值代码和静态代码块组成类变量显示赋值代码和静态代码块代码从上到下顺序执行< clini...
2019-10-11 10:15:12
720
1
原创 经典Java面试题——单例模式
单例模式要点一是某个类智能有一个实例;(构造器私有化)二是它必须自行创建这个实例;(含有一个该类的静态变量来保存这个唯一的实例)三是它必须自行向整个系统提供这个实例;(对外提供获取该实例的方式:1、直接暴露 2、用静态变量的get方法获取)几种常见形式饿汉式:直接创建对象,不存在线程安全问题直接实例化饿汉式(简单直观)枚举式(最简洁)静态代码块饿汉式(适合复杂实例化)/*...
2019-10-10 19:36:49
948
原创 Mysql之Explain详解与索引最佳实践
为什么要用explain使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈如何使用explain下面是使用 explain 的例子:在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查...
2019-07-29 10:17:27
944
1
原创 微服务架构下如何集成支付宝接口实现支付服务(一)总体设计
1、环境配置使用的微服务架构是SpringCloud技术栈中的相关技术,包括:分布式配置中心:SpringCloudConfig 版本:2.0.1服务发现与注册中心:Eureka 版本:1.4.3服务间负载均衡:OpenFeign 版本:2.0.1熔断机制:hystrix 版本:1.3.1这里要注意一下:在使用SpringBoot和SpringCloud时是有版本匹配关系的:...
2019-07-19 19:10:28
2249
1
原创 微服务架构下如何集成支付宝接口实现支付服务(六)支付宝接口(沙箱环境)申请
本项目中其他模块内容:微服务架构下如何集成支付宝接口实现支付服务(一)总体设计.微服务架构下如何集成支付宝接口实现支付服务(二)使用SpringCloudConfig搭建配置中心.微服务架构下如何集成支付宝接口实现支付服务(三)结合配置中心搭建eureka服务注册中心.微服务架构下如何集成支付宝接口实现支付服务(四)集成alipay来提供支付服务.微服务架构下如何集成支付宝接口实现支付服...
2019-07-19 19:08:16
848
原创 微服务架构下如何集成支付宝接口实现支付服务(五)消费支付服务的消费者搭建
这个服务是消费者,主要是模拟网站来使用支付服务,简单的说就是调用支付服务提供的功能。这个过程使用的是feign来做的负载均衡功能。然后去eureka中发现对应的服务,调用接口并返回数据。1、pom文件主要添加微服务依赖的代码,其他部分按自己项目需要自行添加。<!-- 添加微服务 --> <dependency> <groupId>com.sh...
2019-07-19 17:17:41
938
1
原创 微服务架构下如何集成支付宝接口实现支付服务(三)结合配置中心搭建eureka服务注册中心
1、pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma...
2019-07-19 14:59:42
521
原创 微服务架构下如何集成支付宝接口实现支付服务(二)使用SpringCloudConfig搭建配置中心
在搭建项目的过程中最好也根据我提供的这几个步骤来进行搭建。可以帮助你整理出一个统一的方法论。大概的步骤就是三个配置pom文件,编写yml配置文件,配置springboot启动器,搭建所有需要的文件目录结构,这里我把文件目录结构放到前面是方便大家观看。1、pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h...
2019-07-19 11:11:09
1109
原创 使用SpringCloudConfig搭建配置中心(二)将配置文件提交到Github
1、安装GitGit下载地址 。注意这个地址需要翻墙安装过程这里不再赘述,基本上是无脑下一步。2、在Github上创建repository打开github,如果没有的话先注册一个点击右上角的头像,选择repository新建一个 repository3、在本地使用Git克隆repository在本地创建一个文件夹,右键选择git bash here,打开git的命令框。...
2019-07-19 10:59:37
396
1
原创 微服务架构下如何集成支付宝接口实现支付服务(四)集成alipay来提供支付服务
provider工程主要就是来提供支付服务的,可以被其他业务层来调用。1、pom文件首先来看一下pom文件,需要依赖哪些配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/...
2019-07-17 11:36:28
1330
1
转载 Failed to collect dependencies at xxxx: Failed to read artifact descriptor forxxx
最近在学习springclud项目,多个模块化相互关联引用的时候公共模块common在引用后打包失败,因为是个javaEE项目不是springboot项目,使用的构建工具是maven,项目分了很多模块,并且模块之间还存在一定的依赖,比如说一个项目common是提供各项目通用的工具类,公共的类等例子:项目root,有module common,front,mall等其中front 和mall都依赖...
2019-07-16 12:16:28
10583
9
转载 支付宝API中notify_url与return_url的区别
一、return_url1、同步返回接口,作为参数传递给支付宝2、用户付款成功后,从支付宝跳转到这个页面3、在这个页面中加入相关业务处理,比如更新记录,标记付款成功信息。4、需要对支付宝传递过来的签名进行认证。5、用来展现成功付款信息给前台付款用户。6、支付宝那边只返回一次。7、由于用户在付款完成后,直接关闭付款页面,不跳转到return_url的页面,会导致return_url的相...
2019-07-12 17:12:31
999
原创 springboot项目如何实现热部署
1、导入依赖springboot项目的热部署方式有很多种,但是比较常用,也比较好用的一种是使用devtools工具。springboot整合devtools的方法也非常简单:打开pom.xml文件引入如下代码:<dependency> <groupId>org.springframework.boot</groupId> <art...
2019-06-19 17:06:44
1549
原创 如何解决使用Druid登录时出现403错误码问题
解决集成druid之后点击登录出现403错误在login的时候,点击了登录,没有任何反应,后台没有出现报错,打开F12后出现如下错误提示:首先你要确定你是否集成了spring security安全框架,如果集成了这个框架,那么security会拦截druid的登录请求,进行csrf校验,所以解决办法很简单,在spring security的配置文件中加入如下代码即可:http.csrf()...
2019-06-19 16:57:19
2350
原创 版本管理工具git的使用
下载和安装git这一步很简单搜索git官网:https://git-scm.com/git网站会自动识别你的操作系统,直接点击下载就可以。下载完成后,安装全部点击下一步即可,当然你要是想换一个安装路径可以自己选择。git的基本操作创建本地仓库安装完成后,可以打开cmd输入git --version来查看git版本,确定是否安装成功。正确安装后悔显示如图提示:然后设置自己的邮箱和用...
2019-03-25 15:39:36
234
原创 springboot项目在外部tomcat下可以启动但是无法访问的问题
首先要确定已经生成了正确的war包,具体操作如下:1. 在pom.xml中加入<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> ...
2019-03-23 22:43:45
10276
1
原创 如何使用正则表达式
什么是正则表达式百度定义: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。简单的说就是对字符串的一种匹配规则。举个栗子:当我们在各大网站登录的时候都会需要输入手机号,如果输入的不是手机号就会报错,那么怎么知道是不是手机号呢,就是通过了正则表达式的匹配来区分的。如何使用正...
2019-03-22 15:19:43
295
原创 在前后端分离项目中使用jq动态生成代码块
遇到的实际问题在项目中遇到了这样一个问题,在使用框架提供的分页功能时,他的分页功能只能支持在点击按钮时调用回调函数。然而我一开始是使用的thymeleaf来对页面进行渲染的,这样的话只能使用window.location.href="/index.html?page=2";来进行页面跳转。这样就面临一个问题就是页面会刷新,刷新完毕之后虽然可以跳到第二页,但是由于页面刷新导致分页功能还在第一页...
2019-03-21 20:52:55
324
原创 token登录验证机制与session登录验证机制的优缺点
首先我们需要来了解token和session登录验证的过程token登录验证机制前几天研究了一下springboot security的一个项目,分析了源码,里面就是在使用token的登录验证机制,主要使用过程如上图,登录后根据security的安全算法生成一个唯一的token值(基于JWT),然后存储到redis中,并设定过期时间,之后把token值返回前台,前台保存到localStora...
2019-03-19 09:58:28
10985
1
原创 thymeleaf如何修改默认渲染路径
如何查看thymeleaf的默认设置首先来看一下springboot为我们如何配置的默认路径点击这个查看maven依赖包Thymeleaf所有的默认配置都在ThymeleafProperties类中这是默认的访问路径,默认的编码格式,默认的访问后缀如何修改默认设置其实修改很简单,只需要在yml配置文件中修改spring: thymeleaf: prefix: c...
2019-03-17 15:45:08
3959
原创 Springboot学习之路——thymeleaf语法使用
thymeleaf的依赖导入因为有人可能是初次使用thymeleaf简单说一下依赖导入,需要在maven项目下的pox.xml文件中导入依赖。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymelea...
2019-03-17 15:07:03
556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人