分类:Java基础知识

Spring-session基于redis管理session

前言 在上文Tomcat Session管理分析介绍了使用tomcat-redis-session-manager来集中式管理session,其中一个局限性就是必须使用tomcat容器;本文介绍的spring-session也能实现session的集中式管理,并且不局限于某种容器; spring-session管理session实战 1.maven依赖的jar 2.准备spring-session.xml配置文件 session同样是使用redis来做集中式存储,为了方便测试使用本地的6379端口redis,LettuceConnectionFactory是redis连接工厂类; RedisH…

阅读全文 »

Nginx+Tomcat关于Session的管理

前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简单的安装启动开始,通过实例的方式循序渐进的介绍了几种管理session的方式。 nginx安装配置 1.安装nginx 提示报如下错误: 解决办法安装epel:EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fedora特别兴趣小组创建、维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目; 安装完之后,即可成功安装nginx; 2.启…

阅读全文 »

Quartz调度源码分析

前言 上一篇文章Quartz数据库表分析介绍了Quartz默认提供的11张表,本文将具体分析Quartz是如何调度的,是如何通过数据库的方式来现在分布式调度。 调度线程 Quartz内部提供的调度类是QuartzScheduler,而QuartzScheduler会委托QuartzSchedulerThread去实时调度;当调度完需要去执行job的时候QuartzSchedulerThread并没有直接去执行job, 而是交给ThreadPool去执行job,具体使用什么ThreadPool,初始化多线线程,可以在配置文件中进行配置: 常用的线程池是SimpleThreadPool,这里默认启…

阅读全文 »

Quartz数据库表分析

前言 上一篇文章Spring整合Quartz分布式调度介绍了Quartz通过数据库的方式来实现分布式调度,通过使用数据库来存储trigger,job等信息,可以在停服重启的时候重新加载上次trigger的状态,保证了完整性;另一方面通过数据库来实现锁机制来实现分布式调度;Quartz默认提供了11张表,本文将对这几张表做简要的分析。 表信息 共11张表,前6张都是关于各种triggers的信息,后面包括job,悲观锁,调度状态等信息;相关表操作在类StdJDBCDelegate中,相关sql语句在StdJDBCConstants中; 1.qrtz_blob_triggers 自定义的trigg…

阅读全文 »

Spring整合Quartz分布式调度

前言 为了保证应用的高可用和高并发性,一般都会部署多个节点;对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源, 另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调度系统,来协调每个节点执行定时任务。 Spring整合Quartz Quartz是一个成熟的任务调度系统,Spring对Quartz做了兼容,方便开发,下面看看具体如何整合: 1.Maven依赖文件 主要就是Spring相关库、quartz库以及mysql驱动库,注:分布式调度需要用到数据库,这里选用mysql; 2.配置job 提供了两种方式来配置job,分别是:MethodInvokingJ…

阅读全文 »

一次排查多线程引发Java DNS缓存的Bug

问题描述 最近通知应用在近三个月内出现过2次DNS缓存的问题,第一次在重启之后一直没有出现过问题,所以也没有去重视,但是最近又出现过一次,看来很有必要彻底排查一次;具体的错误日志如下: 具体表现就是出现此异常之后连续的出现大量此异常,同时系统节点不可用; 问题分析 1.既然InetAddress$Cache.put报空指针,那就具体看一下源代码: 报空指针的的地方就是entry.expiration,也就是说从cache取出来的entry为null,可以查看cache写入的地方: 每次都是new一个CacheEntry然后再put到cache中,不会写入null进去;此时猜测是多线程引发的问题…

阅读全文 »

HTTPS分析与实战

名称解释 https:一种安全的http协议,因此可以称为安全的超文本传输协议,https提出在http和tcp之间添加一层加密层(SSL层),这一层负责数据的加密和解密。 数字证书:简称CA,它由权威机构给某网站颁发的一种认可凭证,是被浏览器所认可的,当然证书也可以自己生成,但是这样就不被浏览器所认可,想想如果自己随便生成一个证书就被浏览器认为是安全的,那也挺可怕的;最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名,证书都有一个有效期。 数字签名:就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。 对称加密:又叫…

阅读全文 »

Evernote(印象笔记)备份本机剪切板数据

前言 最近同学推荐了一款叫Ditto的软件,用来记录用户的剪贴板数据,包括:文字,图片,文件路径;windows系统本身只能保留最近的一次的剪贴板数据,所以有时候这个功能还是挺有用的;唯一不足的就是不能多端同步,因为一直用印象笔记,所以打算用印象笔记来备份本机剪切板数据,而且印象笔记也提供了强大的搜索功能。 准备 1.申请印象笔记 API Key 印象笔记本身提供了对外的api接口,我们可以申请API Key,地址:https://dev.yinxiang.com/doc/,获取API Key即可,如下图: 其中要注意的是应用的权限:基本权限和完全权限;基本权限包括创建笔记,列出笔记等;完全权…

阅读全文 »