- 博客(33)
- 收藏
- 关注

原创 OAuth2 源码分析(一.核心类)
Spring Security源码解析篇介绍了Spring Security的原理,复习下几个概念Principle GrantedAuthority Authentication AbstractAuthenticationToken UsernamePasswordAuthenticationToken AuthenticationManager Authenticat...
2018-07-19 17:41:36
15391
4

原创 redis-cluster做spring-boot的缓存
网上有很多redis做spring-boot缓存的例子,贴两篇写的比较详细的。 https://www.jianshu.com/p/5a70b13a4fa7 https://blog.youkuaiyun.com/canot/article/details/52702029 但关于redis-cluster做spring-boot缓存的例子真是少之又少,所以就写这篇文章记录下过程。如...
2018-06-29 17:28:10
1013
1
原创 @Transactional TransactionManager 源码分析
先贴一篇好文章,https://www.cnblogs.com/thisiswhy/p/13948055.html部分代码得修改下 rollback方法必须传入参数transactionStatus ,如果用SelfTransactionMananger单实例中的属性transactionStatus,在多线程中会出现线程不安全的情况。ArrayList 线程不安全,elementData[size++] = e是先赋值再size+1,多线程运行到赋值还没+1时,size位置上被覆盖了多次...
2021-03-08 15:38:57
4472
3
原创 Zookeeper 笔记
1. 什么是zookeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。管理系统中独特的/统一的信息 集群状态监控和通知 协调资源抢占(锁) 分派计算任务2. 搭建集群2.1 配置zoo.cfg操作很简单,从官网下载zookeeper,解压后修改conf目录下...
2019-11-07 07:54:34
412
原创 面试宝典
mysql聚族索引和非聚族索引:https://www.cnblogs.com/crazylqy/p/7615457.html覆盖索引:https://www.cnblogs.com/happyflyingpig/p/7662881.htmlB树和B+树:https://blog.youkuaiyun.com/z_ryan/article/details/79685072为何使用自增索引:...
2019-11-04 19:03:45
803
原创 ThreadPoolExecutor 源码解析
1.重要知识点ThreadPoolExecutor 作为线程池,支持用户往线程池里添加任务,由线程池来管理线程开销,避免资源的浪费。用户可以选择以下几种方式添加任务,前三个返回Future,可以分布式计算获得结果。<T> Future<T> submit(Callable<T> task)<T> Future<T> submi...
2019-10-31 15:38:30
252
原创 Springcloud EurekaClient 底层实现(一)
最近接手一个项目,需要重启服务时先注销掉当前服务,再重启程序,这样就不会因为ribbon负载均衡到重启的服务上从而丢失请求,那么我们先来研究下怎么手动注销服务。以下所有代码都是基于springboot2.0.9 RELEASE和springcloud Finchley.RELEASE注销服务向eurekaserver发送delete请求比如说现在想注销下图中的PRODUCER服务那么...
2019-07-10 19:14:24
973
原创 CyclicBarrier底层原理
案例CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。public class CyclicBarrierTest { public static Map<String,Integer> result ...
2019-05-22 14:39:38
520
原创 Synchronized 深度解析
synchronized可修饰普通方法、静态方法和代码块 。修饰普通方法,锁的是对象,一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法。public synchronized void sayHello(){}修饰静态方法,锁的是类(new多个对象都是源于同一个类...
2019-03-18 16:10:43
240
原创 索引那些事
最近面试问了很多关于索引的事,本来自认为可以对答如流,什么BTREE B+TREE啊,什么like '%abc'和like ‘abc%’的区别啊,又是联合索引a=?and b=? and c=?的判断啊,很简单呐,但没想到啊,这里面门门道道都可以玩出花来了,现在面试官问问题都是挖着陷阱让你往里跳,不讲究。你真的懂联合索引么?话不多说,实践出真理,建表建索引 (name,class,a...
2019-03-15 15:41:12
177
原创 Socket 阻塞/非阻塞 同步IO
参考资料:https://www.cnblogs.com/goodboy-heyang/p/6372058.html Socket通信实现步骤:1、创建ServerSocket和Socket(client)。2、打开连接到Socket的输入/输出流。3、按照协议对Socket进行读/写操作。4、关闭输入输出流、关闭Socket。一定有两个不同的Socket(要么ip不同,要么port不...
2018-12-11 15:03:02
730
原创 JVM虚拟机笔记
1.执行java文件zhangjg@linux:/deve/workspace/HelloJava/src$ javac HelloWorld.java zhangjg@linux:/deve/workspace/HelloJava/src$ ls HelloWorld.class HelloWorld.java HelloWorld.class并不能直接被系统识别执行,需...
2018-12-11 10:40:44
206
原创 IO 字符流-字节流
java io 体系结构 1 字节流(InputStream,OutputStream)直接和文件交互,没有缓存区。所以即便没有close(),数据也已写入文件中。操作的是字节(byte[])...
2018-12-11 10:32:02
173
原创 springboot集成Websocket(含源码)
1.Websocket介绍传统的浏览器与服务器通讯的方式是http连接,这种连接是无状态、单向的通信协议。即每次建立连接都得传递cookie、session信息来证明自己的身份,因为服务器是不会记住之前连接的信息。同时只有客户端向服务端发出请求才能获得返回信息,服务器是不能主动给客户端发送连接的,因为服务器记不住有哪些客户端跟自己连接的。这种单向请求的特点,注定了如果服务器有连续的状态变化...
2018-09-29 15:22:43
1981
2
原创 Rabbitmq和Kafka最全讲解
市面上流行的消息队列有rabbitmq,kafka,Activemq等,所有这些都是为了解决消息的分布式消费,完成项目与服务的解耦。采取异步模式完成消息队列提供者和消费者的通信,提高了系统的响应能力和信息吞吐量。Rabbitmq基本概念Producer:消息生产者 Consumer:消息消费者 Exchange:消息交换机,指定消息按什么规则传递到具体哪个队列中 Queue:消息...
2018-09-27 20:51:50
5472
原创 OAuth2 源码分析(三.密码模式源码)
上章介绍了授权码模式,现在再来介绍密码模式,简单的如同砍瓜切菜。所谓密码模式,即用户提供username,password,clientId,clientSecret,grantType=password等信息,请求/oauth/token,获得access_token,用户即可通过access_token访问资源。还是以oauth2-demo-master项目为例,只用添加client的...
2018-09-17 14:41:52
6280
2
原创 OAuth2 源码分析(二.授权码模式源码)
上一章介绍了与OAuth2相关的核心类,让我们再复习一遍,如果有遗忘的地方请移步到上一章查看。四大角色:ResouceServer AuthorizationServer client user OAuth2AccessToken OAuth2Authentiaction OAuth2Request TokenRequest AuthorizationReq...
2018-09-07 16:12:49
7671
原创 Spring Security源码解析(二.创建FilterChainProxy)
上一章介绍了Spring Security的相关知识点,这章将详细分析源码。首先需要认识到Spring Security的关键是filter——FilterChainProxy,经过一层层的filter才能最终访问到我们的资源信息。同时要了解,访问不同的uri,系统会采取对应的filter列表进行过滤,如下图所示。严谨点说不止是uri,可以自定义匹配头信息啊或者其他的,http请求中...
2018-08-10 13:45:53
2941
3
原创 ApplicationEvent和ApplicationListener源码解析
1.何为观察者设计模式在了解源码之前,先问下自己懂了观察者设计模式没,以及为什么要用观察者设计模式。所谓观察者设计模式,可以这么类比,某个班在教室里自习,A在看小黄书,B在玩GBA,C在睡觉。这时候班主任突然出现在教室的窗户边暗中观察自习情况。A,B,C感觉有一道灼热的目光看着自己,抬起头来发现了老师,马上A放下了手中的小黄书拿出了数学作业开始做,B放下了手中的GBA开始看英语书,...
2018-07-30 14:23:29
1144
原创 Spring Security源码解析(一.基础知识点与流程介绍)
目录一、Authentication,AuthenticationManager,AuthenticationProvider二、UserDetails,UserDetailsService,UserCache,User三、SecurityContext,SecurityContextHolder四、WebSecurityConfigurerAdapter五、总结首先回想...
2018-07-17 20:21:09
8200
11
原创 cache CacheManager @Cacheable
今天研究了会spring自带的缓存cache,首先得弄清楚cache和CacheManager究竟是什么。一.Cache,CacheManager结构 Cache是一个接口,可以像Map一样put,get值,一个name为people的cache,可以存储多个不同key的数据,如key=22,value="123";key=23;value="224". CacheManager...
2018-06-26 20:18:39
9237
原创 @Configuration @Bean
xml文件里的配置 <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locat...
2018-05-08 19:31:34
208
原创 maven自定义模板archetype
最近做springcloud项目,需要用maven项目管理springboot,eclipse自带的maven模板又贼鸡儿蠢,于是就想自己搞个模板。网上文章很多,这篇写的挺合我心意 —— maven:从一个已有项目生成一个archetype(未完成)一.添加maven-archetype-plugin 在模板maven项目的pom.xml里加入插件maven-archetyp...
2018-05-02 09:11:57
828
原创 yml文件读取
公司电脑抽风,连接不上market.eclipse.org,无法通过market下载sts组件,只好通过连线下载的方式安装,安装了sts插件后仍然发现yml文件读取并没有按spring的格式来,还是跟text editor一样。一查发现preference里并没有显示spring的插件,搞了n久还是没装上去,只好直接下sts release版本。(最后发现通过无线网连接,把ip改成固定ip...
2018-04-28 11:59:19
1118
原创 oracle 数据迁移 impdp expdp
之前做数据备份的时候用的都是exp 和 imp,但最近exp导了一个几十万数据的表就花了将近10分钟时间,简直不能忍。一直听说expdp的效率高,今天就来试一试。 按照惯例,先贴几篇有用的文章,使用expdp导出数据,dblink的操作。 最先需要明确场景,本地库A和远程数据库B,现在想要把B的数据迁移到A里面来。(如果是本地库中不同用户C和D,那么就无需dblink)。需要实...
2018-04-26 16:55:53
352
原创 mysql linux 安装
本以为mysql安装挺简单的,毕竟yum一下就好了,但是yum版本太低,最近要做中文的全文检索,要求版本大于5.7,所以先下载tar.gz。 1. 下载好的文件解压到/usr/local/mysql下!!! 2.然后chown mysql:mysql /usr/local/mysql !!! 3.接着bin/mysqld --initialize --user=mysql --...
2018-04-10 15:43:08
122
原创 mysql 中文全文检索
网上一搜一大堆,总结下,mysql5.7以前的版本是不支持中文分词全文检索的,5.7及以后出了一个ngram的中文分词器,那么就可以来用中文检索了。 值得注意的是,直接用navicat设置fulltext是不够的,因为没有用到ngram。 所以正确的写法是alter table hd_market add fulltext index ix_addr(addr) wit...
2018-04-09 23:02:44
514
转载 redis分布式锁
转载:https://my.oschina.net/u/1995545/blog/366381Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。 用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁...
2018-03-27 20:27:50
160
原创 Session Cookie
先贴两篇好帖子 https://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html https://www.cnblogs.com/woshimrf/p/5317776.html http://blog.youkuaiyun.com/lingadobe/article/details/53193008 看完这两篇基本就基本明...
2018-03-20 14:21:12
400
原创 redis集群创建与jedis连接
1.创建redis-cluster redis中文官方网站有说明,很详细地介绍了redis-cluster创建的流程。可能之前需要做些准备工作,如安装ruby,openssl等,这个就上网自己查吧,给几个链接: ruby: https://www.cnblogs.com/smileyes/p/7489484.html openssl: http://blog.youkuaiyun.com/hu...
2018-03-16 10:38:46
860
原创 Linux相关笔记
CentOs笔记1 CentOs7.0 64位安装CentOs: CentOS-7-x86_64-DVD-1511.iso教程url:http://linux.vbird.org/linux_basic/0157installcentos7.php步骤基本和上面一致。1.1 选择中文安装1.2 分配空间/ 根目录 >= 25GSWAP >= 3G/home >=
2017-02-13 11:34:17
769
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人