- 博客(124)
- 资源 (1)
- 收藏
- 关注

原创 Google Guava缓存实现接口的限流
一.项目背景最近项目中需要进行接口保护,防止高并发的情况把系统搞崩,因此需要对一个查询接口进行限流,主要的目的就是限制单位时间内请求此查询的次数,例如1000次,来保护接口。 参考了 开涛的博客聊聊高并发系统限流特技 ,学习了其中利用Google Guava缓存实现限流的技巧,在网上也查到了很多关于Google Guava缓存的博客,学到了好多,推荐一个博客文章:http://ifeve.com/
2016-06-20 15:06:36
1369

原创 springMVC:HandlerInterceptor拦截器的使用
1.使用背景Web项目中需要判断http接口用户Post上来的数据是否合法,如果不合法要另做处理,用户Post上来的数据是Json形式的,我们用了@RequestBody标记自动将json形式的提交封装为一个Model对象,这样一来,我们就不能判断在自动封装过程中是否出现了异常,此时便想起了springMVC中的interceptor,用于处理请求之前,做一些处理,我们可以取消@RequestBod
2016-06-16 21:08:22
53118
1
转载 Java 并发专题 :闭锁 CountDownLatch 之一家人一起吃个饭
每天起早贪黑的上班,父母每天也要上班,话说今天定了个饭店,一家人一起吃个饭,通知大家下班去饭店集合。假设:3个人在不同的地方上班,必须等到3个人到场才能吃饭,用程序如何实现呢?CountDownLatch
2016-07-12 11:12:29
1727
转载 spring context标签
spring context有以下标签: 1.annotation-config.作用是隐式地向Spring容器注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProces
2016-07-11 17:16:38
2976
原创 Redis学习笔记04--hashes数据类型
概述Redis Hash类型是一个string类型的field和value的映射表。其添加、删除操作的时间复杂度都是O(1)类型。特别适合于存储对象。相比较将对象的每个字段都存储成单个的string类型,将一个对象存储为hash类型会占用更少的内存,并且存取整个对象也会很方便,Hash类型基本操作
2016-07-10 16:41:42
554
原创 一些错误和异常的解决方法02_@Override is not allowed when implementing interface method
1.在IntelliJ IDEA使用时报错: @Override is not allowed when implementing interface method 这是由于module的language level是6以下,我们需要修改module的language的level为6或6以上: 解决办法: Project Settings > Modules > 选择所在的module >
2016-07-06 11:18:19
7643
原创 leetcode_Valid Perfect Square
Valid Perfect SquareGiven a positive integer num, write a function which returns True if num is a perfect square else False. Note: Do not use any built-in library function such as sqrt.
2016-07-05 16:58:25
366
原创 leetcode_Count Numbers with Unique Digits
leetcode_Count Numbers with Unique DigitsGiven a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.
2016-07-05 16:32:05
302
原创 Redis学习笔记03--String数据类型
String类型是Redis最简单的数据类型,一个key对应一个value,它在Redis中是二进制安全的,这意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M;set;setnx;mset;setex;setrange;msetnx;getset;getrange;mset;incr和incrby;append;
2016-07-05 14:30:59
411
原创 Redis学习笔记02--Redis的安装
一.安装环境安装环境:Ubuntu16虚拟机,Win7主机,SecureCRT远程登录,Redis-2.4.17.tar.gz二.安装步骤步骤1: 下载安装包:wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz 步骤2,编译源程序: //解压 tar zxvf redis-2.4.17.tar.gz //进入redis目录
2016-07-05 11:17:17
403
转载 使用IntelliJ IDEA创建Maven多模块项目
使用Maven管理项目时,往往需要创建多个模块,模块之间存在相互引用的关系。对于Maven的依赖,也需要专门创建一个模块来管理依赖项。例如对于一个项目,可以创建一个common模块来管理POJO类,创建一个server来管理业务逻辑及数据库操作类,创建一个web模块来组织Web文件,如HTML,JSP等。下图是一个Maven多模块管理的案例项目结构:
2016-06-20 17:03:08
20231
使用IntelliJ IDEA创建Maven多模块项目
使用Maven管理项目时,往往需要创建多个模块,模块之间存在相互引用的关系。对于Maven的依赖,也需要专门创建一个模块来管理依赖项。例如对于一个项目,可以创建一个common模块来管理POJO类,创建一个server来管理业务逻辑及数据库操作类,创建一个web模块来组织Web文件,如HTML,JSP等。下图是一个Maven多模块管理的案例项目结构: 简单说一下创建过程: 1.首先创建一个空...
2016-06-20 17:03:00
467
Google Guava缓存实现接口的限流
一.项目背景最近项目中需要进行接口保护,防止高并发的情况把系统搞崩,因此需要对一个查询接口进行限流,主要的目的就是限制单位时间内请求此查询的次数,例如1000次,来保护接口。 参考了 开涛的博客聊聊高并发系统限流特技 ,学习了其中利用Google Guava缓存实现限流的技巧,在网上也查到了很多关于Google Guava缓存的博客,学到了好多,推荐一个博客文章:http://ifeve....
2016-06-20 15:06:00
504
springMVC:HandlerInterceptor拦截器的使用
1.使用背景Web项目中需要判断http接口用户Post上来的数据是否合法,如果不合法要另做处理,用户Post上来的数据是Json形式的,我们用了@RequestBody标记自动将json形式的提交封装为一个Model对象,这样一来,我们就不能判断在自动封装过程中是否出现了异常,此时便想起了springMVC中的interceptor,用于处理请求之前,做一些处理,我们可以取消@Reques...
2016-06-16 21:08:00
1373
原创 SpringMVC:JSON形式输出(基于Fastjson)
在Spring3.0中,@ResponseBody标记可以将对象”封装”为JSON形式的数据,并输出,下面的例子中使用的是阿里的Fastjson JSONaz解析工具,在spring配置文件中加入一些额外的配置。
2016-06-07 16:34:13
2988
SpringMVC:JSON形式输出(基于Fastjson)
在Spring3.0中,@ResponseBody标记可以将对象”封装”为JSON形式的数据,并输出,下面的例子中使用的是阿里的Fastjson JSONaz解析工具,在spring配置文件中加入一些额外的配置。1.依赖配置<properties> <spring.version>4.1.4.RELEASE</spring.version> ...
2016-06-07 16:34:00
152
原创 Callable接口解析
Java-Callable接口Callable的call()方法类似于Runnable接口中run()方法,都定义任务要完成的工作,实现这两个接口时要分别重写这两个方法,主要的不同之处是call()方法是有返回值的(其实还有一些区别,例如call方法可以抛出异常,run方法不可以),运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计
2016-06-02 18:36:35
10367
Callable接口解析
1.接口的定义:public interface Callable<V> { V call() throws Exception; } 2.Callable和Runnable的异同先看下Runnable接口的定义public interface Runnable { public abstract void run();}...
2016-06-02 18:36:00
283
原创 FastJson一些常见方法(API):处理JSON变得好简单
fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍
2016-06-01 21:33:59
3850
FastJson一些常见方法(API):处理JSON变得好简单
fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍 JSON帮助类 这个可以做一个实例研究代码,也可以作为一个工具类 去调用。 FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,Fastjson是一个Java语言编写的高性能功能完善的JSON库。Fastjson支持java b...
2016-06-01 21:33:00
599
原创 Spring@Autowired注解
@Autowired注解可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。 注意:@Autowired默认是按照类型来注入的。
2016-05-30 21:36:10
393
Spring@Autowired注解
@Autowired注解可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。 注意:@Autowired默认是按照类型来注入的。 看下面的例子:例子是以对成员变量(field)为例进行的public class Person { private String name; private String address; private int age;...
2016-05-30 21:36:00
130
原创 一些错误和解决办法--01
今天遇到的问题个解决办法:1. 无法创建dc_service,因为无法注入appleDCService:nested exception is java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exce这个错误是由
2016-05-30 20:51:53
1805
一些错误和解决办法--01
今天遇到的问题个解决办法:1. <dubbo:application name="apple"/> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <dubbo:reference id="appleDCService1" interface="com.netease.urs.dc.dubb.
2016-05-30 20:51:00
247
线程池的原理及实现
原文链接:http://blog.youkuaiyun.com/hsuxu/article/details/89859311、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于...
2016-03-29 14:27:00
91
原创 Rotate Image(二位数组顺时针旋转)
问题描述: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 中文题目: 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 给定一个NxN的矩阵,
2016-03-24 16:53:40
879
Rotate Image(二位数组顺时针旋转)
问题描述: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 中文题目: 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 给定一个NxN的矩...
2016-03-24 16:53:00
147
转载 JAVA内部类
一、定义 放在一个类的内部的类我们就叫内部类。 二、 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访问权限 3.可是实现多重继承 4.可以避免修改接口而实现同一个类中两种同名方法的调用。 三、例子 1.实现隐藏 平时我们对类的访问权限,都是通过类前面的访问修饰符来
2016-03-24 16:30:23
307
JAVA内部类
一、定义 放在一个类的内部的类我们就叫内部类。 二、 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访问权限 3.可是实现多重继承 4.可以避免修改接口而实现同一个类中两种同名方法的调用。 三、例子 1.实现隐藏 平时我们对类的访问权限,都是通过类前面的访问修饰符来限...
2016-03-24 16:30:00
72
原创 线程安全的单例模式
实现线程安全单例模式的两种方式: 1.双重检查+同步:public class Singleton{ private volatile static singletonInstance; private Singleton(){} public static Singleton getSingleton() {
2016-03-11 18:16:05
392
线程安全的单例模式
实现线程安全单例模式的两种方式: 1.双重检查+同步:public class Singleton{ private volatile static singletonInstance; private Singleton(){} public static Singleton getSingleton() { ...
2016-03-11 18:16:00
87
原创 字符串交错组成--很优美的递归算法
问题:对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成。给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成。代码如下:class Mixture {public: bool chkMixture(string
2016-03-10 17:06:08
702
字符串交错组成--很优美的递归算法
问题:对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成。给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成。代码如下:class Mixture {public: bool chkMixture(string...
2016-03-10 17:06:00
208
原创 I/O模型
线程在执行中如果遇到磁盘读写或网络通信(统称为I/O 操作),通常要耗费较长的时间,这时操作系统会剥夺这个线程的CPU 控制权,使其暂停执行,同时将资源让给其他的工作线程,这种线程调度方式称为 阻塞。当I/O 操作完毕时,操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权,令其继续执行。这种I/O 模式就是通常的同步式I/O(Synchronous I/O)或阻塞式I/O (Blocking
2016-03-01 17:16:21
686
I/O模型
线程在执行中如果遇到磁盘读写或网络通信(统称为I/O 操作),通常要耗费较长的时间,这时操作系统会剥夺这个线程的CPU 控制权,使其暂停执行,同时将资源让给其他的工作线程,这种线程调度方式称为 阻塞。当I/O 操作完毕时,操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权,令其继续执行。这种I/O 模式就是通常的同步式I/O(Synchronous I/O)或阻塞式I/O (Blocking...
2016-03-01 17:16:00
110
原创 自旋锁原理及java自旋锁
一、自旋锁的概念首先是一种锁,与互斥锁相似,基本作用是用于线程(进程)之间的同步。与普通锁不同的是,一个线程A在获得普通锁后,如果再有线程B试图获取锁,那么这个线程B将会挂起(阻塞);试想下,如果两个线程资源竞争不是特别激烈,而处理器阻塞一个线程引起的线程上下文的切换的代价高于等待资源的代价的时候(锁的已保持者保持锁时间比较短),那么线程B可以不放弃CPU时间片,而是在“原地”忙等,直到锁的持
2015-11-17 13:03:16
20253
自旋锁原理及java自旋锁
一、自旋锁的概念首先是一种锁,与互斥锁相似,基本作用是用于线程(进程)之间的同步。与普通锁不同的是,一个线程A在获得普通锁后,如果再有线程B试图获取锁,那么这个线程B将会挂起(阻塞);试想下,如果两个线程资源竞争不是特别激烈,而处理器阻塞一个线程引起的线程上下文的切换的代价高于等待资源的代价的时候(锁的已保持者保持锁时间比较短),那么线程B可以不放弃CPU时间片,而是在“原地”忙等,直到锁的持...
2015-11-17 13:03:00
624
原创 leetcode之Maximal Square
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0
2015-11-15 23:18:01
607
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人