- 博客(86)
- 资源 (28)
- 收藏
- 关注
转载 重新认识同步与异步,阻塞和非阻塞的概念
前言在实际的开发中,我们经常会听到同步,异步,阻塞,非阻塞这些编程概念,每次遇到的时候都会蒙圈,然后就各种查网上似是而非的资料,结果越查越迷糊,大部分文章都千篇一律,没有说到本质上的区别,所以下次再碰到这些概念,印象还是比较模糊,尤其是在一些场景下同步与阻塞,异步与非阻塞感觉没啥区别,但其实这四个术语描述的事物还真不是一回事。下面我们来慢慢探讨他们之间的区别与联系,在这之前,我们...
2018-08-28 14:40:27 253
原创 Shiro原理剖析
Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证、授权、企业会话管理和加密。相比spring security框架更简单灵活,spring security对spring依赖较强。shiro可以实现web系统、c/s、分布式等系统权限管理。 Shiro完整架构图,如下图: 核心组件:Sub...
2018-08-09 01:25:28 6255 1
原创 基于Redis实现的单点登录
背景: 每个web应用都有自己的session,那如何在分布式或者集群环境下统一session,即如何实现单点登录,如下图 解决方案: 把session数据存放在redis,统一管理,向外提供服务接口,redis可以设置过期时间,对应session的失效时间 优点:存取速度快,效率高;无单点...
2018-08-08 12:36:23 11161 4
原创 SSO CAS原理剖析
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 CAS(Central Authentication Service)是Yale大学发起的一个企业级的、开源的项目,旨在...
2018-08-08 00:37:43 612
原创 java抽象类和接口的定义及区别
抽象类: 使用了关键词abstract声明的类叫作抽象类。抽象类的特性: 1. 抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。 2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。 3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现。 ...
2018-08-07 00:42:07 305
转载 spring中自定义Event事件的使用和浅析
在我目前接触的项目中,用到了许多spring相关的技术,框架层面的spring、spring mvc就不说了,细节上的功能也用了不少,如schedule定时任务、Filter过滤器、 interceptor拦截器等等,而这一篇我要说的是spring Event自定义事件,目前的项目中似乎没怎么用,但是这一项技术貌似还蛮重要,所以也不能不掌握。 对于事件驱动模型的解释和理解,我觉得有...
2018-07-31 16:49:43 1106
转载 java程序员成长之路
转载:http://www.banzg.com/archives/679.html?ref=myread阿里面试回来,想和Java程序员谈一谈引言其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。但是,最
2018-01-18 10:07:56 288
转载 微服务架构的基础框架选择:Spring Cloud还是Dubbo?
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在交流
2017-09-04 14:32:29 441
转载 java 分布式锁方案
第一步,自身的业务场景:在我日常做的项目中,目前涉及了以下这些业务场景:场景一: 比如分配任务场景。在这个场景中,由于是公司的业务后台系统,主要是用于审核人员的审核工作,并发量并不是很高,而且任务的分配规则设计成了通过审核人员每次主动的请求拉取,然后服务端从任务池中随机的选取任务进行分配。这个场景看到这里你会觉得比较单一,但是实际的分配过程中,由于涉及到了按用户聚类的问题,所以要比
2017-08-30 14:15:53 412
转载 Redis应用场景
1. MySQL+Memcached架构的问题Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现。Memcached服务器使用基于Slab的内存管理方式,有利于减少内存碎片和频繁分配销毁内存所带来的开销。各个Slab按需动态分配一个page的内存(和4Kpage的概念不同,这
2017-08-29 15:12:10 388
转载 activeMQ深入了解—队列模式手动控制消费
相信经过了解,基本使用activemq后,大家一定知道队列里面有ACK模式,他的类型有以下几种1、AUTO_ACKNOWLEDGE = 1 自动确认2、CLIENT_ACKNOWLEDGE = 2 客户端手动确认3、DUPS_OK_ACKNOWLEDGE = 3 自动批量确认4、SESSION_TRANSACTED = 0 事务提交并确认
2017-08-02 11:52:01 1033
转载 activeMQ消息类型
Activemq消息类型JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种。ActiveMQ也有对应的实现,下面我们结合Spring JMS分别来看一下五种消息类型的收发代码。1、TextMessage/** * 向指定Destination发送text消息
2017-08-02 11:47:43 1111
转载 spring activeMQ 整合(四): JMS 事务管理
1.为什么要用事务? 消息事务是在生产者producer到broker或broker到consumer过程中同一个session中发生的,保证几条消息在发送过程中的原子性。 可以在connection的createSession方法中指定一个布尔值开启,如果消息确认机制是事务确认,那么在发送message的过程中session就会开启事务(实际上broker的)
2017-08-02 11:24:42 704
转载 spring activeMQ 整合(五): 死信队列
1.死信队列和回退队列的区别: 这篇文章写得非常到位:http://blog.csdn.NET/coderepository/article/details/70233042.什么是死信队列:DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息。出现以下情况时,消息会被redelivered A transacted session is u
2017-08-02 11:22:57 741
转载 spring activeMQ 整合(三): 确认机制ACK(收到消息后,应该有一个回应也就是确认答复)
之前写的spring activemq整合的demo ,今天继续完善一下这个demo,让功能更强大。Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收 Spring ActiveMQ 整合(二): 重发机制(消息发送失败后的重新发送)继上篇文章之后,我消息发送失败后,可以重新发送了。但是至于别人有没有收到,这就不得
2017-08-02 11:15:12 1946
转载 spring activeMQ 整合(二): 重发机制(消息发送失败后的重新发送)
之前已经写了一个spring activemq整合的demo ,今天继续完善一下这个demo,让功能更强大。Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收 假如现在我手里有一个很重要的消息的,想要发给一个人,但是很不幸,消息发送失败了。这时候怎么办呢怎么解决这种尴尬的情况,这时候我们可以利用activeMQ的
2017-08-02 10:56:51 2875
转载 spring activeMQ 整合(一): 一个简单的demo,测试消息的发送与接收
环境: windows环境下: spring 3.2.8 、Tomcat 7 、JDK 1.6 、 ActiveMQ 5.9.0 项目目录结构: applicationContext.xml[html] view plain copy bean id="connecti
2017-08-02 10:55:49 325
转载 activeMQ的应用场景
MQ的学习目前流行的就是:activemq、ZeroMQ、RabbitMQ、kafka、rocketmq,学习RabbitMQ就可以了,这个就很强大。rabbitMQ的优点(适用范围) 1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器。 2. 健壮、稳定、易用、跨平台、支持多种语言、文档齐全。 3. 有消息确认机制和持久化机制,可靠性高。
2017-08-02 10:54:19 1304
转载 activeMQ技术分享
本次引入ActiveMQ的背景:ActiveMQ主要解决什么问题: 在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。比如记录用户的操作日志。这部分就能提出来。操作日志,这种东西,用户也不会马上去看他,为何不用更好的技术,ActiveMQ呢,这样做还节省了服务器请求响应时间。一
2017-08-02 10:51:42 599
转载 Mybatis简介与原理
什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data A
2017-03-06 22:35:05 372
转载 ibatis简介
背景 介绍ibatis实现之前,先来看一段jdbc代码: Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/learnworld"; Connection con = DriverManager.getConnection(url, "root","learnworld
2017-03-06 01:03:45 986
原创 RocketMQ简介
RocketMQ是一款分布式、队列模型的消息中间件。特点:1. 能够保证严格的消息顺序2. 提供丰富的消息拉取模式3. 高效的订阅者水平扩展能力4. 实时的消息订阅机制5. 亿级消息堆积能力6. 较少的依赖选用理由:1. 强调集群无单点,可扩展,任意一点高可用,水平可扩展。2. 海量消息堆积能力,消息堆积后,写入低延迟。3. 支持上万个队列4. 消息失败重试机制5. 消息...
2017-03-01 00:07:09 751
转载 TCP、Socket、HTTP简介
一、什么是TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ac
2017-02-27 17:30:52 250
转载 ASM简介
一、什么是ASM ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入
2017-02-23 14:30:13 2755
原创 redis简介
redis是什么:Redis is an open source, BSD licensed,advanced key-value store. It is often referred to as a data structure serversince keys can contain strings, hashes, lists, sets and sorted sets.redis...
2017-02-22 23:49:01 463
原创 memcached简介
memcached是一个基于内存的Key-Value分布式缓存系统memcached特性1. C/S模式架构2. 协议简单3. 支持epoll/kqueue异步I/O模型4. key-value键值对数据类型5. 全内存缓存,效率高6. 支持分布式集群memcached工作原理与机制memcached是一套C/S模式架构的软件,在服务器端启动memcached服务守护进程,可以...
2017-02-22 23:10:08 459
原创 redis与memcached区别
定义:redis是一个基于内存亦可持久化的日志型、Key-Value数据库。memcached是一个基于内存的Key-Value分布式缓存系统。PS :redis单线程共同点:1. 可以做缓存2. 支持字符串3. 用于减少数据库负载,提升性能区别:1. redis支持字符串(string)、链表(link)、无序集合(set)、有序集合(sorted set)和哈希(hash),...
2017-02-21 18:03:21 1431
原创 java综合技术
JAVA三大框架SSH的各自作用使用框架的优点:使项目结构清晰、易于维护;可以提高工作效率Struts是一个MVC框架;主要负责视图层、控制层,在视图层提供了大量的标签库,提高视图层的开发效率,在控制层使用中央控制器(Actionsupport)和配置文件(struts.xml),实现拦截用户请求、封装请求参数及页面导航。Hibernate应用于数据持久化层,是对JDBC的轻量级封装。是一个...
2017-02-07 23:58:21 488
转载 HashTable的实现原理
概述和 HashMap 一样,Hashtable 也是一个散列表,它存储的内容是键值对。Hashtable 在 Java 中的定义为:public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable{}从源码中,我们可以看出,Hash
2017-01-11 00:44:21 290
转载 HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难
2017-01-11 00:42:40 306
原创 HashMap和HashTable异同点及使用场景
HashMap和HashTable异同点及使用场景HashMap和HashTable异同点及使用场景 线程安全不同 是否允许null值不同 继承实现方式不同 初始容量和扩容策略不同 计算hash的方法不同 使用场景 线程安全不同Hashtable是线程安全,HashMap非线程安全。是否允许null值不同HashMap可以使用nul...
2017-01-11 00:32:36 5523 3
转载 Java过滤器与SpringMVC拦截器之间的关系与区别
今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感谢那些大牛们的无私奉献,分享他们的经验与心得,才能让像我这样的小白有机会站一下你们这些巨人的肩膀,才能
2016-12-28 14:43:31 305
转载 Spring事务管理(详解+实例)
写这篇博客之前我首先读了《Spring in action》,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下:Spring事务机制详解Spring事务配置的五种方式Spring中的事务管理实例详解1 初步理解理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机
2016-12-19 15:31:49 525
转载 spring事务管理总结
Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,T
2016-12-19 15:30:52 271
转载 DelegatingFilterProxy类的作用
使用过springSecurity的朋友都知道,首先需要在web.xml进行以下配置 springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle true springSec
2016-11-08 14:53:41 23782 4
转载 icePDF去水印方法
使用icePDF带字体架包进行pdf转图片时,会有官方的水印。可以通过反编译架包来去除水印,只需修改架包中的两个类即可。 1、首先下载到icepdf的架包。2、用解压缩软件,对该jar文件进行解压,得到名为icepdf-core的文件夹。3、找到2个要修改的class文件,用反编译软件,另存成java文件。在icepdf-core\org\i
2016-11-03 11:09:09 874
转载 JAVA的pdf转图片方法
JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用。一、icepdf。有收费版和开源版,几种方法里最推荐的。转换的效果比较好,能识别我手头文件中的中文,就是转换后可能字体的关系部分字间距有点宽。因为,字体支持是要收费的,所以转换的图片会带有官方的水印。去水印的方法可以查看另一篇文章:icepdf去水印方法1、下载icepdf的架包,并导
2016-11-03 11:06:04 18147 5
转载 SSO CAS原理浅谈
1. CAS简介 SSO是一个非常大的主题,我对这个主题有着深深的感受,自从广州UserGroup的论坛成立以来,无数网友都在尝试使用开源的CAS,Kerberos也提供另外一种方式的SSO,即基于Windows域的SSO,还有就是从2005年开始一直兴旺不衰的SAML。 如果将这些免费的SSO解决方案与商业的Tivoli或Siteminder或RSA Secure
2016-10-03 01:01:55 2792
转载 JavaWeb 服务启动时,在后台启动加载一个线程
JavaWeb 服务启动时,在后台启动加载一个线程。 目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet。 下面对这两种方法做一简单的介绍,(Mark一下,防止以后急用又忘记了): 监听(Listener) 首先,我们创建一个监听的类,继承ServletContextListener,如下: 源码复制打印
2016-09-05 21:16:52 351
原创 普通java类获取项目的根目录
import org.springframework.web.servlet.support.RequestContext;//获取项目的classes目录,例如:D:/songjinzhou/software/apache-tomcat-7.0.52/webapps/项目名/WEB-INF/classes/String root = RequestContext.class.getR...
2016-09-05 18:15:24 3471
icepdf-5.0.7和pdfbox-app-2.0.2的jar包
2016-11-10
springMVC+ibatis+hibernate+spring+boostrap框架的lib包
2016-01-15
springMVC+ibatis+hibernate+spring+boostrap框架
2016-01-12
spring security3动态权限
2015-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人