- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 AOP demo
那些aop的术语初看这么多术语,一下子都不好接受,慢慢来,很快就会搞懂。1.通知(Advice)前置通知(before) - 在目标方法被调用之前调用通知功能后置通知(after) - 在目标方法完成之后调用通知(不论程序是否出现异常),此时不会关心方法的输出是什么返回通知(after-returning) - 在目标方法成功执行之后调用通知异常通知(after-throwing) ...
2019-12-06 16:24:39
260
原创 RabbitMQ (六) 构建RPC
RabbitMQ (六) 构建RPC但是付过我们需要在远程电脑上运行一个方法然后等待结果,该怎么办?这是不同的需求。这个模式通常叫做RPC。本文我们将使用RabbitMQ构建一个RPC系统:一个客户端和一个可扩展的RPC服务器端。由于我们没有任何真实的耗时任务需要分配,所以我们将创建一个虚拟的RPC服务,可以返回斐波纳契数列。Client interface(客户端接口)为了说明RPC服务...
2019-09-20 17:06:10
198
原创 RabbitMQ (五) 主题
RabbitMQ (五) 主题主题交换机发送到主题交换机(topic exchange)的消息不可以携带随意什么样子的路由键(routing_key),它的路由键必须是一个由.分隔开的词语列表。这些单词随便是什么都可以,但是最好是跟携带它们的消息有关系的词汇。以下是几个推荐的例子:“stock.usd.nyse”, “nyse.vmw”, “quick.orange.rabbit”。词语的个数...
2019-09-20 15:21:53
242
原创 RabbitMQ (四) 路由
RabbitMQ (四) 路由这里的路由就是在上一篇文章描述发布/订阅的基础上增加路由过滤。比如:我们发布了"err", “info”, “warning”,这三种类型的信息,我们可以接收Error级别的消息写入文件。同时仍然可以在控制台打印所有日志。Bindings(绑定)在上一篇博客中我们已经使用过绑定。类似下面的代码:channel.queueBind(queueName, EXC...
2019-09-20 14:57:16
281
原创 RabbitMQ (二) 任务队列
RabbitMQ (二) 任务队列[外链图片转存失败(img-xh2uCA5N-1568882407041)(http://wiki.jikexueyuan.com/project/rabbitmq/images/7.png)]在第一篇文章中,我们已经写了一个从已知队列中发送和获取消息的程序。在这篇教程中,我们将创建一个工作队列(Work Queue),它会发送一些耗时的任务给多个工作者(Wo...
2019-09-19 16:40:26
214
原创 RabbitMQ (一) 入门
RabbitMQ (一) 入门消息队列有很多种,每个都有各自的特性,都有自己的使用场景。消息中间件部署及比较:rabbitMQ、activeMQ、zeroMQ、rocketMQ、Kafka、redis介绍RabbitMQ 是一个消息代理。它的核心原理非常简单:接收和发送消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ 就扮...
2019-09-19 14:24:03
250
原创 SpringBoot+sockjs client+stompjs实现websocket
SpringBoot+sockjs client+stompjs实现websocket什么是sockjs-client sockjs-client是从SockJS中分离出来的用于客户端使用的通信模块.所以我们就直接来看看SockJS. SockJS是一个浏览器的JavaScript库,它提供了一个类似于网络的对象,SockJS提供了一个连贯的,跨浏览器的JavaScriptAPI,它在浏览...
2019-09-05 16:22:22
3115
2
原创 HttpClient 入门
HttpClient 入门 尽管 java.net 包提供了基础的功能,可以通过 HTTP 协议来访问网络资源,但它没有提供许多应用需要的灵活性或功能性。 HttpClient 通过高效,即时,并且富有特色的包填补 java.net 这一空缺,实现了 HTTP 绝大部分的标准和建议的客户端。 用于扩展,并为基础 HTTP 协议提供鲁棒性支持的 HttpClient 将受到那些构建...
2019-08-26 15:24:33
496
转载 linux下环境变量PATH设置错误的补救
转发他人的博客,自己不小心配错环境变量,以此记录一下之前不小心在/etc/profile中添加了错误的PATH变量,导致几乎所有的系统命令无法使用,惊出一身冷汗,然后经过多次试验终于修复成功。以下是部分经验: 首先,PATH变量记录着各系统命令的存放路径,所以平时使用系统命令时可以直接输入命令而不需要连命令的路径一起。比如"vi"命令,在PATH变量正常的时候直接输入"vi /etc/p...
2019-08-20 11:58:28
512
原创 JAVA HashSet 去除重复值原理
JAVA HashSet 去除重复值原理 今天在写SQL的时候,对数据进行去除重复的时候出了一个问题:[Err] ORA-00600: 内部错误代码, 参数: [kkqcbydrv:1], [], [], [], [], [], [], []。我只要加了 DISTINCT或者GROUP BY试图进行去重,就会报这个问题。我实在是解决不了这个问题,我只能想用代码来解决,我就想到了用Set 来进...
2019-08-15 16:10:21
925
原创 java自动生成代码
java自动生成代码 为了简化日常编写代码,根据公司的自身情况,编写了一个自动生成代码的简易工具。主要需要熟悉freemarker模板引擎,JDBC等相关知识;<dependency> <groupId>freemarker</groupId> <artifactId>freemarker</artifactId>...
2019-08-07 17:36:19
1149
原创 Quartz 入门
Quartz参考:Quartz快速入门1.Quartz入门Quartz API的关键接口是:Scheduler - 与调度程序交互的主要API。Job - 由希望由调度程序执行的组件实现的接口。JobDetail - 用于定义作业的实例。Trigger(即触发器) - 定义执行给定作业的计划的组件。JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实...
2019-08-02 17:03:41
175
原创 CAS(乐观锁)
CAS(乐观锁)1.什么是CAS(1)CAS(compare and swap) 比较并替换,比较和替换是线程并发算法时用到的一种技术(2)CAS是原子操作,保证并发安全,而不是保证并发同步(3)CAS是CPU的一个指令(4)CAS是非阻塞的、轻量级的乐观锁2.CAS算法理解(1)与锁相比,使用比较交换(下文简称CAS)会使程序看起来更加复杂一些。但由于其非阻塞性,它对死锁问题天生免...
2019-07-25 23:27:41
193
原创 23中设计模式
创建类型设计:单例设计模式:单例设计模式主要保证在程序中只有一个实例存在。减少了系统的开销。常见的单例设计有五种:饿汉式(线程安全,调用效率高,但是不能延时加载。)public class Demo1 { private static Demo1 demo = new Demo1(); private Demo1(){ } ...
2019-07-25 21:18:32
185
原创 Futuer 模式 和 Callable
Futuer 模式Futrure模式:对于多线程,如果线程A要等待线程B的结果,那么线程A没必要等待B,直到B有结果,可以先拿到一个未来的Future,等B有结果是再取真实的结果。你可以那做饭来比喻,假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨...
2019-07-25 21:16:52
421
原创 java 线程池
java 线程池1.什么是线程池,它的作用是什么通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上,就像创建好一个池塘,里面放有鱼,需要的时候去抓,不需要的时候等他自由的游玩。创建好一个线程池,并且没有任务执行的时候线程将会闲置,等待其调用。它的作用是:减少了创建/销毁线程的消耗。同时执行的线程过多,就有可能导致系统资源不足而产生阻塞的情况运用线程池能有效的控制线程最大并发数,...
2019-07-24 23:17:42
156
原创 JVM(1)-- 线程和进程
JVM(1)-- 线程和进程1.什么进程和线程进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。(仅相当于启动一次迅雷下载器,此时后台就会有一个进程)线程:线程是进程的一个实体,多个线程可以属于同一个进程。是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少...
2019-07-14 10:01:56
287
转载 java多线程
java多线程1.进程和线程腾讯面试题04.进程和线程的区别?2.守护进程和非守护进程JAVA守护线程 非守护线程3.基础知识[多线程和Lambda表达式](
2019-07-11 22:34:24
92
原创 10. shiro学习笔记(10) -- shiro redis缓存
10. shiro学习笔记(10) – shiro redis缓存整合地址过程shiro用redis实现缓存需要重写cache、cacheManager、SessionDAO和初始化redis配置。1.pom添加依赖<!-- 整合shiro框架 --><dependency> <groupId>org.apache.shiro</gro...
2019-07-03 14:11:25
508
原创 shiro学习笔记(9) -- shiro 记住密码
9. shiro学习笔记(9) – shiro 记住密码在shiroConfig中配置记住我cookie/** * cookie对象;会话Cookie模板 ,默认为: JSESSIONID 问题: 与SERVLET容器名冲突,重新定义为sid或rememberMe,自定义 * @return */@Beanpublic SimpleCookie rememberMeCookie...
2019-06-28 16:50:01
277
原创 shiro学习笔记(8) -- 会话
8. shiro学习笔记(8) – 会话 Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性。即直接使用Shiro的会话管理可以直接替换如Web容器的会话管理。1. 会话 ...
2019-06-28 15:52:02
225
原创 shiro学习笔记(7) -- filter
7.shiro学习笔记(7) – filter1. Filter:shiro拦截器的基础类图:1、NameableFilter NameableFilter给Filter起个名字,如果没有设置默认就是FilterName;还记得之前的如authc吗?当我们组装拦截器链时会根据这个名字找到相应的拦截器实例;2、OncePerRequestFilter OncePerReque...
2019-06-27 16:43:05
360
原创 shiro学习笔记(6) -- spring boot 整合Shiro
6.shiro学习笔记(5) – spring boot 整合Shiro在pom 中添加:<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-starter</artifactId> <version...
2019-06-25 10:06:00
195
原创 NIO学习笔记(5) -- Selector
NIO学习笔记(5) – Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一个线程中使用了多个 Channel, 因此也会造成了每个 Channel 传输效率的降低.为了使用 Selector, 我们首先需要将 Channel 注册到 Sele...
2019-06-23 20:05:32
149
原创 shiro学习笔记(4) -- ini 配置
shiro学习笔记(4) – ini 配置1.根对象SecurityManager Shiro是从根对象SecurityManager进行身份验证和授权的;也就是所有操作都是自它开始的,这个对象是线程安全且真个应用只需要一个即可,因此Shiro提供了SecurityUtils让我们绑定它为全局的,方便后续操作。 因为Shiro的类都是POJO的,因此都很容易放到任何IoC容器管理。但...
2019-06-21 15:04:38
195
原创 shiro学习笔记(3) -- 授权
3. 授权1. shiro权限初始 Shiro 支持粗粒度权限(如用户模块的所有权限)和细粒度权限(操作某个用户的权限,即按钮级别的)。授权过程主要了解几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。Subject:主体,即访问应用的用户,Subject接口提供了很多方法,主要包括进行认证的登录登出方法、进行授权判断的方法和...
2019-06-21 11:39:58
161
原创 NIO学习笔记(4) -- Scatter/Gather
NIO学习笔记(4) – Scatter/Gather 分散(scatter)从 Channel 中读取是指在读操作时将读取的数据写入多个 buffer 中。因此,Channel 将从 Channel 中读取的数据 “分散(scatter)” 到多个 Buffer 中。 聚集(gather)写入 Channel 是指在写操作时将多个 buffer 的数据写入同一个 Channel,因此,C...
2019-06-20 23:01:17
230
原创 NIO学习笔记(3)-- 零拷贝
NIO学习笔记(3)-- 零拷贝1. 分析传统IO是怎么网络传输File file = new File("index.html");RandomAccessFile raf = new RandomAccessFile(file, "rw");byte[] arr = new byte[(int) file.length()];raf.read(arr);Socket socke...
2019-06-20 21:45:18
283
原创 shiro学习笔记(2) -- 初识Realm
2. 初识Realm1.什么是Realm Realm 是可以访问程序特定的安全数据如用户、角色、权限等的一个组件。Realm 通常和数据源是一对一的对应关系,如关系数据库,LDAP 目录,文件系统,或其他类似资源。如JDBC,文件IO,Hibernate 或JPA,或其他数据访问API。Shiro 从 Realm 获取安全数据(如用户、角色、权限), shiro要进行身份验证,就要从real...
2019-06-20 10:12:02
198
原创 NIO学习笔记(2)-- Buffer的浅拷贝和深拷贝
NIO学习笔记(2)-- Buffer的浅拷贝和深拷贝1. Buffer的7种类型 ByteBuffer, CharBuffer, ShortBuffer, IntBuffer, LongBuffer, FloatBuffer, DoubleBuffer由于ByteBuffer类型比较特殊,他能其他的所有类型(理解起来也不复杂,因为底层存的类型就是Byte)public class Ni...
2019-06-19 22:11:02
3116
原创 NIO学习笔记 (1) -- 入门
NIO (1)入门1. I/O 和 NIO的主要区别IONIO面向流面向缓冲阻塞IO非阻塞IO无选择器2. 面向流与面向缓冲 Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。java IO面向流就意味每次都是从流中读取多个字节(字符最后也会转换为字节)。NIO中的Buffer 是一个对象, 它包含一些要写入或者...
2019-06-18 22:28:26
135
原创 shiro学习笔记(1) -- shiro的简单例子
1. shiro的简单例子1.1 什么是shiro Apache Shiro是Java的一个安全框架。可以在java SE中应用,也可以在web中应用。它相对于Spring Security而言更加的简单,轻便,当然没有Spring Security的功能强大。1.2 基本功能点 Authentication:身份认证/登录,验证用户是不是拥有相应的身份;Authorization...
2019-06-17 11:56:40
383
原创 redis(第一次发,试试水)
#Rediswget http://download.redis.io/releases/redis-4.0.8.tar.gzredis 默认有16个库spring-data-redis(spring 封装了jedis )RedisTemplate支持:Key类型操作ValueOperationsRedis String/Value 操作ListOperati...
2019-06-14 22:54:38
126
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅