java
Kindle_code
这个作者很懒,什么都没留下…
展开
-
Spring Aop源码解析与细节
终于看完了庞大的Spring core(spring ioc / spring aop),鉴于ioc更为庞大,先整理下aop的源码流程,也能简单回顾下springioc的流程首先要理解spring bean的启动大致的流程与生命周期,建议看另一篇已经详细解释 spring生命周期基础概念AOP 与 Spring AOP 与 AspectJ的区别AOP 是思想,Spring AOP 与 AspectJ是AOP的实现,Spring AOP实现的时候用了AspectJ的规范基本使用与AOP概念.原创 2020-08-17 12:01:21 · 303 阅读 · 0 评论 -
spring生命周期与集成apollo原理分析(动态生效配置中心)
结合spring总结的非常的棒!转载链接: Apollo配置中心动态生效实现原理Spring中的重要概念在了解Apollo配置中心实现原理之前,我们需要先熟悉一下Spring框架中的几个重要的概念:1、BeanDefinition用于描述Bean的配置信息,Bean配置一般有三种方式:(1)XML配置文件(2)@Service、@Component等注解(3)Java Config方式 对应的BeanDefinition实现类如下图,Spring容器启动时,会把所有的Bean配置信息转换为转载 2020-08-16 00:29:24 · 1445 阅读 · 1 评论 -
布隆过滤器原理与场景
原理一个很长的二进制向量和一系列随机映射函数 。通过设置向量数组长度与定义多种随机hash函数,正向预热数据,反向查询数据。使用的hash函数越多,区分度就越高。图解:使用场景大数据判断是否存在:这就可以实现出上述的去重功能,如果你的服务器内存足够大的话,那么使用 HashMap 可能是一个不错的解决方案,理论上时间复杂度可以达到 O(1 的级别,但是当数据量起来之后,还是只能考虑布隆过滤器。解决缓存穿透:我们经常会把一些热点数据放在 Redis 中当作缓存,例如产品详情。 通常一原创 2020-07-29 22:59:41 · 223 阅读 · 0 评论 -
从LongAdder说到内存伪共享
简介LongAdder 为AtomicLong增强版特点:1、AtomicLong 多线程CAS竞争同一个锁,其他自旋,LongAdder 多个Cell对象多个锁,获得锁失败,会尝试在别的cell上进行竞争,减少锁冲突,适合写多读少2、LongAdder 中的 cell数组长度初始0,随后扩容会保证长度与CPU的核数差不多,长度是2的倍数保证hash的均匀3、cell数组解决了伪共享问题主角:伪共享什么是伪共享(概念)缓存系统中是以缓存行,64字节(cache line)为单位存储的原创 2020-07-29 11:16:57 · 488 阅读 · 0 评论 -
数据收集处理引擎Logstash (基础架构图)
之前总结的图,先留图后补文,原创 2020-07-29 11:01:30 · 347 阅读 · 0 评论 -
基于rabbitMQ解决分布式事务
常见的分布式事务解决方案:1、基于数据库XA/JTA协议的方式: 需要数据库厂商支持;java组件有atomikos等2、异步校对数据的方式: 支付宝、微信支付主动查询支付状态、对账单的形式3、基于可靠消息的MQ解决方案: 异步场景;通用性强;扩展性较高4、TCC编程式解决方案: 严选、阿里自己封装的DTX课外读物:https://my.oschina.net/dyyweb/blog/1633373错误场景:调用接口失败时,订单系统事务回滚,提示用户操作失败误以为这样的接口调用写法,就原创 2020-07-29 10:30:49 · 220 阅读 · 0 评论 -
springmvc @RequestParam 获取参数 HTTP Status 400 - Required String parameter 'xx' is not present
公司换用react做前后端分离之后,发现用@RequestParam不能获取前台传回来的值,使用Postman发送模拟请求的时候,Content-Type == application/x-www-form-urlencoded 可以接受到请求,而 Content-Type == application/json 的时候参数获取不到。并且会报错:HTTP Status 400 - Required原创 2017-11-04 11:35:07 · 14113 阅读 · 0 评论 -
java调用新浪长连接转短链接api--新浪微博Oauth2.0授权 获取Access Token
最近接触到了新浪长连接转短链接api调用,之前公司直接让用户跳转到新浪页面自己生成,然后复制了页面跳回来再用,用户体验不好,现在做修改。新浪Oauth2.0授权 获取Access Token新浪开放平台 —> 【网站接入web】 —> 【立即接入】 —> 创建应用 —> 【获得AppKey/AppSecret】 修改回调地址(后面会用到) 下载java授权sdk ( –> 点击下载 )原创 2017-08-11 15:19:43 · 3928 阅读 · 0 评论 -
装饰者模式之servlet过滤器(Filter)网页压缩
1.装饰者模式定义动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰模式相比生成子类更为灵活。 ------《设计模式之禅》2.通用类图: 类图说明:● Component抽象构件Component是一个接口或者是抽象类, 就是定义我们最核心的对象, 也原创 2016-09-22 19:52:14 · 845 阅读 · 0 评论 -
如何在tomcat服务器中读取xml文件(路径问题)
因为之前用的dom4j读取的都是本地的xml文件,所以一旦在服务器中就不能再像之前那样获取xml路径了。 可以通过反射获得项目的src的路径。问题:如何在服务器中读取xml文件(路径问题)读取product.xml文件 解决方案: 解决代码://获得Document对象 Document doc = null; try { InputSt原创 2016-08-22 16:32:40 · 3429 阅读 · 0 评论 -
手动配置hibernate5.1入门(1)
百度百科对hibernate的解释是这样的: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2E原创 2016-03-22 16:20:04 · 7126 阅读 · 2 评论 -
hibernate的核心类和接口(2)
在实际的Hibernate应用中,使用到的Hibernate核心接口与类并不多。要更深入地使用Hibernate,还需要学习Hibernate的延迟加载和缓存处理等高级的内容。下面附上Hibernate核心类和接口的层次图: 最底层的配置文件,在上一讲有详细讲解配置。Configuration 类 org.hibernate.cfg.Configuration 实例代表了一个应用程序中原创 2016-03-24 19:51:30 · 624 阅读 · 0 评论 -
DomainModel接收参数
使用DomainModel 的方式,DomainModel这个词以前给大家解释过,叫做域模型,所谓的域模型就是在我们的项目里面,在这个问题域里面,真正存在的那些个实体的概念,比如说最简单的写一个BBS系统,真正存在的实体的概念就会包括 版块(category) ,帖子(article) 等等这一类的,这就是实体概念,平时我们用Action接受到一个参数,大家可以想想看,我们用它干嘛了?就是接收到转载 2016-03-05 17:43:22 · 627 阅读 · 0 评论 -
java 文件操作
11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择。因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本能力。本章IO类的使用就从读写文件开始。11.3.1 文件操作 文件(File)是 最常见的数据源之一,在程序中经常需要将数据存储到文转载 2016-03-20 09:19:12 · 714 阅读 · 0 评论 -
java io 一些总结
首先,java io分为两大阵营,字节流,字符流。结构图如下: 一些常用类的用法以及注意点:IO流(FileInputStream)FileInputStream fis = new FileInputStream("aaa.txt"); //创建一个文件输入流对象,并关联aaa.txtint b;原创 2016-04-23 10:36:41 · 427 阅读 · 0 评论 -
java 集合之ArrayList集合元素重复删除
对于ArrayList元素的删除,之前有些没有注意的点,这里记录一下。1. 普通for循环删除答案一点都不意外,可是看下图(将ArrayList中重复的元素放置相邻): 原因:因为在ArrayList底层用的是数组实现,所以存储的时候是一块连续的地址。当检测相同元素并删除的同时,之后的整个数组就和集体往前移动,此次循环结束后的累加器又 ++1,所有相邻的一个就会被忽略掉。 解决:(删除后,指针往原创 2016-07-10 22:42:33 · 3163 阅读 · 0 评论 -
向HashSet插入自定义对象判断是否重复
一.HashSet概述HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。二.存储方式与实现 如果不等,则添加到该数组索引对应的链表中。 Set的实现类的集合对象中不能够有重复元素,HashSet也一样他是使用了一种标识来确定元素的不重复,HashSet用一种算法来保证HashSet中的元原创 2016-07-11 15:43:11 · 3953 阅读 · 0 评论 -
java集合之TreeSet的整理
TreeSet与HashSet的区别 TreeSet和HashSet相同的地方,就是集合里面不允许有重复的元素。 存储方面,HashSet存储时是乱序存储的,而TreeSet是按照自己定义的顺序,底层通过二叉树来实现存储的,所以,TreeSet中的元素要实现Comparable接口。或者有一个自定义的比较器。我们可以在构造TreeSet对象时,传递实现Comparator接口的比较器对象。Tr原创 2016-07-11 21:06:11 · 697 阅读 · 0 评论 -
java GUI 之 适配器模式
适配器模式概述适配器模式: * 当一个接口中有众多方法,在实现该接口时,如果想只实现部分功能,不实现全部功能。 * 就可以先定义一个类,实现该接口,重写空实现所有方法,将该类设计为抽象类。 * 当想实现该接口某些方法时,就可以定义类继承该抽象类,实现想实现的方法,而无需全部实现!今天在做按钮监听的重写Mouse原创 2016-07-13 00:03:21 · 844 阅读 · 0 评论 -
unreachable code 报错
今天遇到了个之前都没遇到的报错,也就是unreachable code(不可获得的代码),还第一次遇eclipse帮解决问题是把那段代码删除。代码简化了一下:public class Test { public static void main(String[] args) { demo1(); } public static void demo1() {原创 2016-07-06 22:31:56 · 3606 阅读 · 0 评论 -
struts2文件上传下载详解
这个讲解的很棒!转载地址:http://blog.csdn.net/chen_zw/article/details/7482916struts2没有提供自己的请求解析器,也就是说,struts2不会自己去处理multipart/form-data的请求,它需要调用其他请求解析器,将HTTP请求中的表单域解析出来,但struts2在原有的上传解析器上作了进一步封装,更进一步简化了转载 2016-04-20 19:28:20 · 552 阅读 · 0 评论 -
tomcat登录需要身份验证的问题
前不久,老师需要安装oracle数据库,安装过后一直没有用过tomcat,以至于今天启动 出现了这样的情况: 网上查了好多,google了也很少有相关的答案,有打开tomcat-users.xml,将里面的验证代码注释掉,可是,本来就是注释的,后来一个人的答案提醒了我,前几天安装的oralce与web容器的端口号有冲突。 所以就将web容器的端口号改了就解决了:打开Tomcat目录下的c原创 2016-03-10 15:56:24 · 12659 阅读 · 1 评论 -
linux下 java 通过jdbc 连接数据库mysql
首先明确的步骤 去官网下载JDBC的驱动:mysql的JDBC官方驱动下载地址(直接download,不用登陆可以直接下载) 解压下载的数据包:tar -zxvf mysql-connector-java-5.1.37.tar.gz 配置JDBC:cp mysql-connector-java-5.1.37-bin.jar /usr/lib/jvm/java-1.7.0-op原创 2015-10-31 12:00:38 · 10393 阅读 · 0 评论