自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhengholien的java净土

静如止水,厚积薄发

  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 AOP加自定义注解实现redis注解缓存

很早之前学习了redis,在这次毕业设计中使用redis对热点数据进行缓存,其中使用spring-data-redis还有@Cacheable、@CachePut和@CacheEvict这3个注解。注解的方式避免了在业务方法中参杂太多非业务的逻辑代码,比如日志和事务,都会用AOP配合注解把共用部分抽离出来,同时业务方法也更纯粹简洁。在使用时发现,spring-data-redis虽是强大,但是许多

2018-01-24 21:25:10 3687

原创 2018跨年感谢

今晚,没有灯火霓虹,没有篝火高歌,像往常一样,像这大学4年中往常的夜晚一样。可今晚是2018的跨年,也是我毕业前仅有的几个夜晚。理应出去“浪”一波,可是,我没有。“宅”这个标签戴在身上许久了,这其中多少有点无奈,但主要还是我天性喜静,总觉得到外面吃吃喝喝也无非那样,这种高收益短半衰期的事情,给不了多少多巴胺。但有时在宿舍呆着又学习不下,总偷着找乐子,看看娱乐,玩会游戏,矛盾得很。“宅”久了,更加懂

2017-12-31 23:57:38 557

原创 java8接口默认方法和静态方法

java8中对接口进行了扩展,允许我们在接口中定义具体方法,一种是默认方法,即在方法返回值前加“default”关键字,另一种是加“static”的静态方法。扩展带来的好处1.java拥有了类似多继承的功能,虽然在对象关系中,继承关系和实现关系还是有有所区别,但是在作用上与C++的多继承类似;2.接口可以帮我们实现一些比较固定的方法,不必每次实现一个接口就得实现所有方法;3.向前兼

2017-11-26 21:20:22 863

原创 创建对象时JVM为我们做了什么

如果类没有被加载到内存中,则先进行类加载类中的静态代码块和静态属性初始化值(按代码顺序执行)创建对象时发生了什么?非静态代码块和非静态属性初始化值(按代码顺序执行),然后调用构造方法下面这个例子我们创建B的一个对象,B类之前没被加载,B类继承了A。A中有两个属性,一个静态的staticNum和一个非静态的num,分别用静态方法staticMethod和非静态方法method

2017-11-25 11:13:51 690 1

原创 第一次面试有感

很突然的,之前懒懒散散,就快毕业了,有模有样地制作了张简历就在网上投了起来,拉勾网上投的几家公司还是蛮期待的,是互联网公司,比较有朝气,可投出去的简历杳无音信,在我打算春招再去面试时,一家公司的hr打电话叫我去面试,我欣喜,感觉机会来了,即将大展身手,约了时间便提前一天赶到广州,寄于一个好朋友篱下,第二天就过去面试,10点左右到公司,公司的环境不错,符合我对公司氛围的要求(就我这样还要求...),

2017-11-11 21:00:53 443

原创 java简单实现一致性哈希算法

什么是一致性哈希算法一种特殊的哈希算法,这种算法使得哈希表、集群的规模在伸缩时尽可能减少重映射(remap)。为什么需要它一致性哈希基本解决了在P2P环境中最为关键的问题——如何在动态的网络拓扑(集群)中分布存储和路由。每个节点仅需维护少量相邻节点的信息,并且在节点加入/退出系统时,仅有相关的少量节点参与到拓扑的维护中。两种常见的一致性哈希算法余数hashhash_

2017-10-20 23:42:34 1271

原创 jdk和cglib动态代理

什么是代理模式?当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁--代理对象。按照代理对象的创建时期不同,可以分为两种:静态代理:事先写好代理类,在程序运行前就已经存在了;动态代理:在程序运行中创建代理对象(反射、类编译和类动态加载)。此时代理对象和目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,可以在调用目标对...

2017-10-11 11:14:38 310

转载 spring优秀工具类盘点

文件资源操作文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等。我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来说,JDK 的这些操作类所提供的方法过于底层,直接使用它们进行文件操作不但程序编写复杂而且容易产生错误。相比于 JDK 的 File,Spring 的 Resource 接口(资源概念的描述接口

2017-09-23 10:57:43 360

转载 Java类加载机制详解

一、类加载器类加载器(ClassLoader),顾名思义,即加载类的东西。在我们使用一个类之前,JVM需要先将该类的字节码文件(.class文件)从磁盘、网络或其他来源加载到内存中,并对字节码进行解析生成对应的Class对象,这就是类加载器的功能。我们可以利用类加载器,实现类的动态加载。二、类的加载机制在Java中,采用双亲委派机制来实现类的加载。那什么是双亲委派机制?在J

2017-09-21 20:57:10 194

原创 从HTTP到HTTPS再到HSTS的演化

近些年,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变。HTTPHTTP(超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是互联网数据通信的基础。它是由万维网协会(W3C)和互联网工程任务组(IETF)进行协调制定了 HTTP 的标准,最终发布了一系列的

2017-09-20 13:50:21 284

原创 java的varargs机制

偶然看到有人把main方法的方法签名这样写:public static void main(String... args),成功引起我的注意哈哈,赶紧查了一下,原来“类型...“或者“类型 ...”这两种形式的参数代表个数可变的参数(>=0)。这种机制在jdk1.5出现,Varargs”是“variable number of arguments”的意思,它可以定义能和多个实参相匹配的形参。这种机

2017-09-20 10:06:52 665

原创 java各种锁机制的性能比较

下面基于jdk8,8G内存,i5处理器对java的synchronized、semaphore、reentrantLock、atomicXXX进行对比,结论和注释都比较全,其中注意使用countDownLatch来控制子线程都执行后(累加到addTime次),主线程再进行时间计算,并且注意把latch.countDown()方法放进子线程的run方法的最后,否则会出现子线程任务没执行完,而latc

2017-09-20 08:42:59 1949 1

原创 awk查看与统计nginx访问日志

切割日志查找7月16日访问log导出到17.log文件中:cat web_access.log | egrep "17/Jul/2017" | sed -n '/00:00:00/,/23:59:59/p' > /tmp/16.log查看访问量前10的IPawk '{print $1}' web_access.log | sort | uniq -c | sort -nr | head -n

2017-09-16 21:51:27 4836

原创 nginx限制连接数和下载速度

有时候为了限流,我们可以在nginx的server中使用limit_zone设置一个限制域,比如 limit_zone zone1 $binary_remote_addr 10mzone1为限制域的名称,$binary_remote_addr为客户端ip的二进制形式,这种方式比较节约空间,10m是此限制域的总大小。接着在location中配置limit_conn,限制单个用户最多连接数

2017-09-16 14:18:12 11150 2

原创 当try catch遇上return

如果我们执行一个方法,在方法内抛出异常,那么抛异常那条代码后面的代码就不会被执行了,也就意味着如果我们的方法不是void的话,就没办法返回值,有一个办法,就是在catch代码块和finally代码块返回,但是实际开发中我们不能依赖异常机制来进行语句控制,这里只是了解一下当return语句出现在catch块和finally块里会出现什么情况。测试1,让方法抛异常,并且catch块中有re

2017-09-14 22:54:04 760

原创 java9新特性小探

模块化选择性封装和暴漏指定的包,即不编译成.class文件,这样我们可以根据一个项目需求自定义组件,比如减少rt.jar的大小,没用到的package将不会包含在我们的项目里。支持HTTP2.0Java配备一个全新的HTTP客户端来替代HttpURLConnection,并且同时还实现HTTP 2.0和websockets。改进javadoc以前对某个类不熟悉,还得先g

2017-09-14 12:34:49 969

原创 JMS与activeMQ,消息中间件入门

什么是中间件中间件是介于操作系统和应用程序之间的技术类组件中间件的作用提取通用的部分,屏蔽了底层的通讯,交互,连接等复杂又通用化的功能,以产品的形式提供出来,系统在交互时,直接采用中间件进行连接和交互即可,避免了大量的代码开发和人工成本。什么是消息中间件关注于数据的发送和接收,可以利用高效可靠的异步消息传递机制集成分布式系统的组件为什么使用消息中间件解耦、削峰、异步、顺序保

2017-09-13 22:31:29 355

原创 ActiveMQ、RabbitMQ和Kafka的简单对比

ActiveMQRabbitMQKafka跨语言支持(java优先)语言无关支持(java优先)支持协议OpenWire、Stomp、XMPP、AMQPAMQP 优点遵循JMS规范安装部署方便继承Erlang天生的并

2017-09-09 11:35:48 3302

原创 遍历集合ConcurrentModificationException异常

在遍历集合时,如果进行了增删操作,有时会抛出 java.util.ConcurrentModificationException异常。这类异常也被称为 fail-fast,它是Java集合的一种错误检测机制。出现异常的原因:使用了iterator和foreach(底层也是使用了iterator的方式)进行遍历,并且遍历期间进行add或remove操作,那就有可能发生此异常。出现异常的关键就

2017-09-06 16:45:05 342

原创 java多线程之可见性

可见性:一个线程对共享变量值的修改能够及时地被其他线程看到JMM(java memory model)描述了java程序中各种变量的访问规则,以及在JVM中将变量(线程共享变量)存储到内存和从内存中取出变量这样的底层细节。JMM是一种规范,这也是导致java多线程会出现可见性问题的原因,所以了解一下java内存模型还是很有必要的。所有变量都存储在主内存中(分配给进程的内存)

2017-09-05 09:54:02 1852

原创 初识JWT(java web token)

JWT(Json Web Token)是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权。个人理解我认为它是分布式session的替代物,在没有jwt之前,我们可以用redis等缓存服务器来充当session存储服务器,用户根据cookic中的token到redis服务器取用户信息,这也是单点登录的一种设计方案。而JWT的出现,使成本更低,我们可以单独部署一

2017-09-01 21:08:51 7729 2

转载 web.xml详解(转)

原文链接一、            Web.xml详解:(一)  web.xml加载过程(步骤)首先简单说一下,web.xml的加载过程。当我们去启动一个WEB项目时,容器包括(JBoss、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。l  启动WEB项目的时候,容器首先会去它的配置文件web.x

2017-08-30 23:02:33 237

原创 idea2017.2普通web工程将lib包导入到artifact中

在网上找了一些文章,都是比较旧的版本,我运行项目是配置一个tomcat,然后将项目以artifact的形式发布运行的。问题是,如何把我们自己创建的lib目录下的jar导入到artifact中,eclipse比较简单,直接把jar放进去就行了,而idea用以下方式。方法:将jar包复制进lib——选中jar,右键,点add as library...,把该jar设置成project jar——点

2017-08-29 23:40:17 3312

原创 shiro快速入门

前2天写了web权限管理,那么实际开发中是如何实现权利管理的呢?下面一起来学习一下。传统方案:通过设置拦截器,基于url的方式进行管理,创建一个user类,用于存储menus,把user存储到session中到前端进行菜单动态显示,而user类的permissions集合用于url拦截,有对应权限才放行。这种方式实现简单,但是不易于维护。新方案:使用shiro权限管理框架

2017-08-23 16:00:31 788

原创 web权限管理

什么是权限管理:对用户访问系统进行控制,按照安全规则、安全策略控制用户只能访问被授权的资源,一般包含认证和授权两部分。权限管理基本流程图用户认证:验证用户身份的合法性,即用户登录,常用的身份认证方法:1.帐号密码 2.指纹 3.证书用户认证的相关概念subject:主体,可以是用户,也可以是程序来访问我们的系统资源principal:身份信息(帐号),通常是

2017-08-22 15:44:16 2870

原创 spring表达语言(SpEL)快速掌握

在Spring3中就已经支持EL表达式了, spring Expression Language(SpEL)是类似于OGNL和EL的表达式语言, 能够在运行时构建复杂表达式, 存取对象属性、调用对象方法等, 它支持XML和Annotation两种方式, 格式:#{SpEL expression}。我使用的spring4.2.2的版本,SpEL位于spring-expression的jar包中。

2017-08-18 22:04:20 1738

原创 spring整合ehcahce2实现方法返回值缓存

spring没有直接支持ehcache3,非常无奈,前2天学了ehcache3,现在整合不了,只好与net.sf.ehcache中的2.10.x版本整合,这两个版本的ehcache.xml文件语法格式差别挺大的,但是功能差不多。等过阵子再学习一下spring-Jcache-ehcache3的整合。整合用到的类位于spring-context-support包下sprin

2017-08-16 23:53:13 1068 2

原创 idea上把maven项目打包成war包直接部署在tomcat上

idea刚上手不久,捣腾了几个小项目练手,发现idea非常人性化,它可以直接把按键设置成eclipse一样的,这个IDE确实比eclipse更顺手点,比如响应比较快。下面我直接把war包云新在tomcat上,不使用mvn命令运行tomcat插件。1.idea可以很方便地把maven项目打成war包2.创建tomcat server3.部署war包到tomcat上注意:在打包war包

2017-08-15 10:55:45 21628

原创 看着文档学ehcache

简介:纯java实现的缓存组件(jar包),最主要的作用还是做应用内缓存(进程内),比如hibernate就默认使用ehcache做缓存。我们可以创建多个缓存(cache),缓存中以key-value的形式存储数据,数据结构较为单一。存储位置:heap:由GC管理的JVM堆offheap:堆外内存(非JVM的堆)disk:持久化到硬盘,cache.destroy()方法可以

2017-08-13 23:59:30 9960 3

原创 websocket实现多房间聊天室

众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现。但是对于实时性要求较高、海量并发的应用,比如金融证券的实时信息,web导航应用中地理位置获取,社交网络的实时消息推送等。方案一:轮询,客户端用js代码每隔一定时间向服务器发送请求,这样会造成资源浪费(浪费带宽),在高并发的情况下还可能

2017-08-05 00:23:11 14984 13

转载 CSS3自定义滚动条样式 -webkit-scrollbar

有没有觉得浏览器自带的原始滚动条很不美观,同时也有看到很多网站的自定义滚动条显得高端,就连chrome32.0开发板都抛弃了原始的滚动条,美观多了。那webkit浏览器是如何自定义滚动条的呢?前言webkit支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式,所以用处还是挺大的。当然,兼容所有浏览器的滚动条样式目前是不存在的。演示

2017-08-03 09:34:03 257

原创 Timer简单使用

什么是定时任务调度?基于给定的时间点、时间间隔、执行次数自动执行任务作用:定时记录日志,定时备份数据、定时推送信息等等Timer的定义:有且仅有一个后台线程对多个业务线程进行定时定频率的调度(jdk自带,位于java.util包)主要构件Timer和TimerTask                          Timer函数c

2017-07-31 16:35:40 569

原创 spring整合quartz

其实quartz在真正项目中使用有两种方式,1种是使用servlet,一种是整合到spring中,今天记录一下后者,毕竟绝大多数项目都使用了spring。pom.xml如下,只有quartz和spring的jar依赖和一些编译版本和编码设置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="

2017-07-30 14:26:44 254

原创 quartz基本使用

quartz的任务调度功能比JDK自带的Timer强大得多,有必要学习并致用,在此记录一下...quartz的jar包在官网可以下载到,百度/谷歌:quartzmaven依赖(可以在maven repository找到绝大多数jar的maven依赖): org.quartz-scheduler quartz 2.2.2Job接口:只有一

2017-07-30 13:49:15 412

转载 lambda表达式的10个示例

原文链接 Java8 lambda表达式10个示例Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动。特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里。在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码。而定义行为最重要的那行代码,却混在中间不够突出。Lambd

2017-07-19 17:58:47 4172 1

转载 关于二进制补码

最近把大学期间没弄清楚的二进制补码理清了,谢谢网络,谢谢阮大牛...以下内容复制于阮一峰的博客,源地址链接问一个基本的问题。负数在计算机中如何表示?举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么

2017-07-12 22:25:18 874

原创 浅谈SEO

搜索引擎简史1.搜索引擎的前身:导航地址2.早期搜索引擎:雅虎、谷歌SEO和SEM的区别SEO(search engine optimization)搜索引擎优化SEM(search engine marketing)搜索引擎营销SEO和SEM的对比1.SEM高投入,SEO低投入2.SEM见效快,SEO长期投入,效益增长慢3.新广告法颁布后SEM广告位收

2017-07-12 11:23:20 694

原创 JavaMail简单实践

JavaMail是一种处理电子邮件的编程接口,它是Sun发布的用来处理email的API,通俗地讲,就是帮助我们用java代码实现邮件的发送和接收。javamail在web开发中的应用1.用户注册后,网站发送一封激活邮件验证2.用户过生日,系统发送生日祝福邮件3.将最新活动和优惠以邮件的形式告知会员...邮件开发中的基本术语1.电子邮箱电子邮箱(E-ma

2017-06-01 13:42:30 1873

原创 《网络是怎样连接的》部分总结

前阵子看了户根勤的《网络是怎样连接的》,倘若不是再次翻阅,可能大多数都忘记了,这类基础书籍还是得时不时翻阅。在此写点常见的知识点小结。下图是整个网络的基本架构从浏览器访问服务器的URL基本格式:http://web服务器名/目录名/.../文件名HTTP requestHTTP response

2017-05-02 20:32:39 4357

原创 java注解浅析

注解的定义:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法注解的本质是接口,并且都继承自根接口Annotationjava注解分类:按照运行机制分源码注解(SOURCE):只存在于源码中,编译成.class文件就不存在了编译时注解(CLASS):存在于源码和.class文件中(Override)运行时注解(RUNTIME):运行阶段还起作用

2017-02-14 20:23:16 455

apache-activemq-5.7.0-bin.tar.gz

方便大家下载,国外网站下载速度太慢,本来想免积分的,发现至少得选择1积分,上传上来只是为了方便大家...

2017-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除