- 博客(85)
- 资源 (8)
- 收藏
- 关注
原创 Java Web 之 Servlet - Listener、Filter、Decorator 精辟
Listener-监听器Listener为在Java Web中进行事件驱动编程提供了一整套事件类和监听器接口.Listener监听的事件源分为ServletContext/HttpSession/ServletRequest三个级别: ServletContext级别 Listener 场景 ServletContextListener 响应ServletContext生命周期事件(创
2016-06-10 23:47:46 2450
原创 Java内存模型
Question:在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? Answer:在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码
2016-06-10 23:24:27 2315
原创 利用spring AOP实现每个请求的日志输出
前提条件: 除了spring相关jar包外,还需要引入aspectj包。<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.7.2</version> </dependency> 要实现此功能,必须完成以下几步: 1.在spr
2016-03-18 20:50:30 1231
原创 使用HttpSessionListener接口监听Session的创建和失效
HttpSessionListener : Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。这个接口也只包含两个方法,分别对应于Session的创建和失效: public void sessionCreated(HttpSessionEvent se); public void sessionDestr
2015-12-22 17:00:17 523
翻译 固定SessionID 漏洞 攻击(session fixation attacks)
固定session 攻击:session fixation attacks 一个简单的登录控制 下面是一个最常用最简单的登录控制流程,通过表单提交用户名密码,servlet判断用户名密码,正确则写一个session,然后跳转到登录后的能够看到的页面 登录页面JSP<body> <form action="SessionTestServlet" method="post"> 用户名:<inpu
2015-12-22 16:51:37 7092
原创 一个JavaWeb项目开发总结
一、学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring ioc->log->代码1)先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联。其实如果先了解数据库表结构,再去看一个方法的实现会更加容易。2)然后需要过一遍web.xml,知道项目中用到了什么拦截器,监听器,过滤
2015-12-08 17:11:40 1309
翻译 关于Redis与Memcached的一点澄清(译)
如果你了解我,就会知道我并不是那种认为竞品是一件坏事的人。实际上我喜欢用户有选择的空间,因此我很少做将Redis与其他技术做对比这类事情。 然而,为了选择正确的方案,用户必须获取正确的知识,这一点也是理所应当的。 本文的起因是读了Mike Perham写的一篇博文,你也许知道他是Sidekiq这一流行程序库的作者,Sidekiq又恰好使用Redis做后端。因此我毫不认为Mike是一个“反对”Re
2015-12-03 15:07:21 471
原创 HashMap解决hash冲突的方法
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap<String,Object> m=new HashMap<String,Object>(); m.put("a", "rrr1"); m.put("b"
2015-11-27 10:57:51 869
原创 数据库中乐观锁与悲观锁的概念
锁( locking )业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其他
2015-11-26 20:47:35 476
原创 24点游戏算法
描述: 24点游戏算法 问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利 输入:4个1-10的数字。[数字允许重复,测试用例保证无异常数字] 输出: true or false代码: 一,import java.util.Scanner; public class Main { public static void main(String[] args)
2015-11-19 18:37:02 1502
原创 字符串加解密
题目描述 1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0; 其他字符不做变化。 3、解密方法为加密的逆过程。直接上代码/** * * @param string *
2015-11-18 18:43:00 896
原创 字符串加密
说明 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其余几个丢弃。现在,修改过的那个单词死于字母表的下面,如下所示: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z T R A I L B Z E S C D
2015-11-18 18:39:57 671
原创 蛇形矩阵
题目说明 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11直接上代码/** * 输入正整数N(N不大于100) * 输出一个N行的蛇形矩阵。 */ public static void sheXingJuZhen() { Scan
2015-11-18 18:35:37 387
原创 判断两个IP是否属于同一子网
描述: 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。 子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。 示例: I P 地址 192.168.0.1 子网掩码 255.255.25
2015-11-18 18:32:16 1625
原创 放苹果 问题
描述:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。<=n<=10<=m<=10 样例输入 7 3 样例输出 8解题分析: 设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论, 当n>
2015-11-18 18:25:22 649
转载 MyBatis-Spring配置简单了解
SqlSessionFactoryBean配置 在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来替代。<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFa
2015-10-18 11:22:35 399
原创 Java的Calendar
public class CalendarTest { public static void main(String[] args) { // 字符串转换日期格式 // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 得
2015-08-24 22:12:24 385
转载 RBAC新解:基于资源的权限管理(Resource-Based Access Control)
本文讨论以角色概念进行的权限管理策略及主要以基于角色的机制进行权限管理是远远不够的。同时我将讨论一种我认为更好的权限管理方式。什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念。角色是代表一系列可执行的操作或责任的实体,用于限定你在软件系统中能做什么、不能做什么。用户帐号往往与角色相关联,因此,一个用户在软件系统中能做什么取决于与之关联的各个角色。 例如,一个用户以关联了”项目管理员”
2015-08-23 12:31:00 1168 1
原创 WebSocket 原理,为什么可以实现持久连接?
我们可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。在以前 HTTP 协议中所谓的 keep-alive connection 是指在一次 TCP 连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header;所谓的 polling 是指从客户端(一般就是浏览器
2015-08-22 10:12:02 607
原创 39个java-api代表性时区
英文版(时区id=名称)# key=valueEtc/GMT-12=UTC-12(Etc/GMT-12 - The International Date Line)Pacific/Midway=UTC-11(Pacific/Midway - Samoa Standard Time)America/Adak=UTC-10(America/Adak - Hawaii-Aleutian Standa
2015-08-19 09:58:59 1437
原创 Zookeeper的Java客户端
zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,由于产品升级拓展,pom等文件配置越来越复杂,因此zk派上用场。一.zookeeper简介一款管理分布式应用程序的协调服务系统二.zookeeper应用场景 网上也有很多介绍,可以参见 http:/
2015-08-15 10:34:06 377
原创 Zookeeper之观察机制(配置服务)
ConnectionWatcher// vv ConnectionWatcherpublic class ConnectionWatcher implements Watcher { private static final int SESSION_TIMEOUT = 5000; protected ZooKeeper zk; private CountDownLatch connecte
2015-08-11 21:16:25 734
原创 Zookeeper之创建组,加入组,列出组成员和删除组
创建组znodepublic class CreateGroup implements Watcher { private static final int SESSION_TIMEOUT = 5000; private ZooKeeper zk; private CountDownLatch connectedSignal = new CountDownLatch(1); public
2015-08-09 19:28:50 1596
原创 Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCod
2015-07-30 19:48:37 381
原创 Kafka和Spring集成实践
目录安装Zookeeper安装Kafka创建一个Spring项目使用Producer API发送消息到Kafka使用Kafka High Level API接收消息使用spring-integration-kafka发送消息使用spring-integration-kafka接收消息本文以单机的环境演示如何将Kafka和Spring集成。
2015-07-26 16:56:58 10542
原创 Kafka集群partition replication自动分配分析
1. Kafka集群partition replication默认自动分配分析 下面以一个Kafka集群中4个Broker举例,创建1个topic包含4个Partition,2 Replication;数据Producer流动如图所示: (1) (2)当集群中新增2节点,Partition增加到6个时分布情况如下: 副本分配逻辑规则如下:在Kafka集群中,每个Broker都有均等分配Par
2015-07-26 11:51:53 1391
原创 Kafka文件存储机制
Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。1.前言 一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关
2015-07-26 11:22:15 513
原创 Kafka:分布式消息系统
简介Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。Apache Kafka与传统消息系统相比,有以下不同:它被设计为一个分布式系统,易于向外扩展; 它同时为发布和订阅提供高吞吐量; 它支持多订阅者,当失败时能自动平衡消费者; 它将消息持久
2015-07-26 00:02:01 1312
原创 含中文的List列表按中文拼音排序的实现方式 Java
package com.zx.test;import java.text.Collator;import java.text.ParseException;import java.text.RuleBasedCollator;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;i
2015-07-25 22:04:00 1716
原创 Cookie-网站登录-下次自动登录2
做网站前端用户登录时需要有个下次自动登录的功能。看了看各大网站都有这种功能。 问题描述:用户登录网站时,一般有个checkbox让用户选择是否可以下次自动登录。选择后,即使用户关闭浏览器,下次再访问这个网站时直接就登录了,不需要用户名和密码。主要使用cookie。cookie是web服务器存放在客户端的一个文件,主要用来记录用户浏览网站信息的。它主要有两个功能:一个是记录用户信息,下次自动登录的。
2015-07-20 21:25:02 743
原创 Spring 注解 @Resource和@Autowired
在做Spring注解时,查找了一些 @Resource和@Autowired的资料,对这两者做了总结和对比: @Resource和@Autowired两者都是做bean的注入使用。其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入。但是Spring支持该注解的注入。共同点:两者都可以写在字段和setter方法上。两者如果都写在字段上
2015-07-19 21:07:42 396
原创 Java深入 - Spring 异常处理HandlerExceptionResolver
Spring的异常统一处理非常简单,首先我们需要看一下Spring中定义的HandlerExceptionResolver接口:/** * Interface to be implemented by objects than can resolve exceptions thrown * during handler mapping or execution, in the typical
2015-07-19 17:16:37 548
原创 Cookie-网站登录-下次自动登录
做网站前端用户登录时需要有个下次自动登录的功能。看了看各大网站都有这种功能。 问题描述:用户登录网站时,一般有个checkbox让用户选择是否可以下次自动登录。选择后,即使用户关闭浏览器,下次再访问这个网站时直接就登录了,不需要用户名和密码。主要使用cookie。cookie是web服务器存放在客户端的一个文件,主要用来记录用户浏览网站信息的。它主要有两个功能:一个是记录用户信息,下次自动登录的。
2015-07-19 17:13:48 2817 1
转载 jsp的九大内置对象和四大作用域
看到网上一些Jsp内置对象介绍的都不是很全,今天我把各位大神的整理了一下。JSP九大对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用。一、request对象:代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletR
2015-07-19 17:05:00 378
转载 Spring基于注解@AspectJ的AOP
Spring除了支持XML方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明。但是用注解方式需要在XML启用对@AspectJ的支持,将在Spring上下文创建一个AnnotationAwareAspectJAutoProxyCreator类,它会自动代理一些Bean,这些Bean的方法需要与使用@Aspect注解的Bena中所定义的切点相匹配,而这些切点又是使用@Pointcut注
2015-07-19 16:57:27 373
原创 springMVC对异常处理的支持
无论做什么项目,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛给用户去看,所以这时候进行统一的异常处理,展现一个比较友好的错误页面就显得很有必要了。跟其他MVC框架一样,springMVC也有自己的异常处理机制。 springMVC提供的异常处理主要有两种方式,一种是直接实现自己的HandlerExceptionResolver,当然这也包括使用Spring已经为我们
2015-07-19 16:32:07 445
原创 SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。一、定义Interceptor实现类SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的。在SpringMVC 中
2015-07-19 14:07:25 268
原创 理解OAuth 2.0
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 一、应用场景 为了理解OAuth的适用场合,让我举一个假设的例子。 有一个”云冲印”的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让”云冲印”读
2015-07-19 11:19:17 319
原创 JAVA线程池的分析和使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2. 线程池的使用
2015-07-14 20:43:00 297
原创 Java自带的线程池ThreadPoolExecutor详细介绍说明和实例应用
Java 5 开始,Java 提供了自己的线程池。线程池就是一个线程的容器,每次只执行额定数量的线程。 java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。它很灵活,但使用起来也比较复杂,本文就对其做一个介绍。首先是构造函数。以最简单的构造函数为例:[java] public ThreadPoolExecutor( in
2015-07-14 20:31:36 424
PLSQL_Developer_cngr
2012-11-30
PowerDesigner最新教程 中文版
2012-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人