自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

转载 任务调度框架Quartz(一) Quartz——一个强大的定时任务调度框架

Quartz,水晶、石英,一个简单朴素有美丽的名字,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框架。何为定时任务调度框架?简而言之,它可以领会我们的意图在未来某个时刻做我们想要做的事情,比如,女友生日那天定时发送短信讨好下(当然,除此之外,你还要买买买…)。(本文章分享在CSDN平台,更多精彩请阅读 东陆之...

2018-11-07 09:08:56 2077 1

转载 Netty学习(十)-Netty文件上传

今天我们来完成一个使用netty进行文件传输的任务。在实际项目中,文件传输通常采用FTP或者HTTP附件的方式。事实上通过TCP Socket+File的方式进行文件传输也有一定的应用场景,尽管不是主流,但是掌握这种文件传输方式还是比较重要的,特别是针对两个跨主机的JVM进程之间进行持久化数据的相互交换。而使用netty来进行文件传输也是利用netty天然的优势:零拷贝功能。很多同学都听说过net...

2018-05-29 17:26:11 337

转载 Netty学习(九)-Netty编解码技术之Marshalling

前面我们讲过protobuf的使用,主流的编解码框架其实还有很多种:①JBoss的Marshalling包②google的Protobuf③基于Protobuf的Kyro④Apache的Thrift12345678JBoss Marshalling是一个Java对象的序列化API包,修正了JDK自带的序列化包的很多问题,但又保持跟java.io.Serializable接口的兼容;同...

2018-05-29 17:25:03 450

转载 Netty学习(八)-Netty的心跳机制

我们知道在TCP长连接或者WebSocket长连接中一般我们都会使用心跳机制–即发送特殊的数据包来通告对方自己的业务还没有办完,不要关闭链接。那么心跳机制可以用来做什么呢?我们知道网络的传输是不可靠的,当我们发起一个链接请求的过程之中会发生什么事情谁都无法预料,或者断电,服务器重启,断网线之类。如果有这种情况的发生对方也无法判断你是否还在线。所以这时候我们引入心跳机制,在长链接中双方没有数据交互的...

2018-05-29 17:24:23 782

转载 Netty学习(七)-Netty编解码技术以及ProtoBuf和Thrift的介绍

在前几节我们学习过处理粘包和拆包的问题,用到了Netty提供的几个解码器对不同情况的问题进行处理。功能很是强大。我们有没有去想这么强大的功能是如何实现的呢?背后又用到了什么技术?这一节我们就来处理这个问题。了解一下编码解码到底是如何处理的。通常说的编码(Encoder)也就是发生在发送消息的时候需要将消息编译成字节对象,在Netty中即编译成ByteBuf对象。在java中我们将这种编译称之为序列...

2018-05-29 17:23:22 449

转载 Netty学习(六)-LengthFieldBasedFrameDecoder解码器

在TCP协议中我们知道当我们在接收消息时候,我们如何判断我们一次读取到的包就是整包消息呢,特别是对于使用了长连接和使用了非阻塞I/O的程序。上节我们也说了上层应用协议为了对消息进行区分一般采用4种方式。前面三种我们都说了,第四种是:通过在消息头定义长度字段来标识消息总长度。这个我们还没讲。当然Netty也提供了相应的解码器:LengthFieldBasedFrameDecoder。大多数的协议(私...

2018-05-29 17:22:33 835

转载 Netty学习(五)-DelimiterBasedFrameDecoder

上一节我们说了LineBasedframeDecoder来解决粘包拆包的问题,TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,一般采用如下4种方式:消息长度固定,累计读取到消息长度总和为定长Len的报文之后即认为是读取到了一个完整的消息。计数器归位,重新读取。将回车换行符作为消息结束符。将特殊的分隔符作为消息分隔符,回车换行符是他的一种。通过在消息头定义长度字段来标识消息总长度。Li...

2018-05-29 17:21:51 1412

转载 Netty学习(四)-TCP粘包和拆包

我们都知道TCP是基于字节流的传输协议。那么数据在通信层传播其实就像河水一样并没有明显的分界线,而数据具体表示什么意思什么地方有句号什么地方有分号这个对于TCP底层来说并不清楚。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段,之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。所以对于这个数据拆分成大包小包的问题就是我们...

2018-05-29 17:20:36 185

转载 Netty学习(三)-Netty重要接口讲解

上一节我们写了一个HelloWorld,对于Netty的运行有了一定的了解,知道Netty是如何启动客户端和服务器端。这一节我们简要的讲解一下几个重要的接口,初步探讨Netty的运行机制,当然刚学Netty就深入原理肯定是很枯燥的,所以我们就点到为止。1. ChannelPipeLine和ChannelHandler在上一篇中我们在ChannelInitializer类的initChannel方法...

2018-05-29 17:18:47 1046

转载 Netty学习(二)-Helloworld Netty

这一节我们来讲解Netty,使用Netty之前我们先了解一下Netty能做什么,无为而学,岂不是白费力气!1.使用Netty能够做什么开发异步、非阻塞的TCP网络应用程序;开发异步、非阻塞的UDP网络应用程序;开发异步文件传输应用程序;开发异步HTTP服务端和客户端应用程序;提供对多种编解码框架的集成,包括谷歌的Protobuf、Jboss marshalling、Java序列化、压缩编解码、XM...

2018-05-29 17:17:39 192

转载 Netty学习(一)-为什么选择Netty

前面我们简单学习了NIO。我们知道java的I/O模型一共有四种,分别是:传统的BIO,伪异步I/O,NIO和AIO。为了澄清概念和分清区别,我们还是先简单的介绍一下他们的概念,然后再去比较优劣。以及探讨我们为什么使用netty。1.概念澄清1.1 BIOBIO,即Blocking I/O。网络编程的基本模型是Client/Server 模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息...

2018-05-29 17:15:40 514

转载 Redis 请务必注意 Redis 安全配置,否则将导致轻松被入侵

一、前言前段时间,在做内网影响程度评估的时候写了扫描利用小脚本, 扫描后统计发现,内网中60%开放了redis6379端口的主机处于可以被利用的危险状态,因为都是一些默认配置造成的 考虑到本社区大部分开发者都会使用redis,特此分享下以便大家可以对自己公司的内网进行一个排查。二、漏洞介绍Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis

2017-12-25 14:10:37 6101

转载 rabbitMQ第五篇:Spring集成RabbitMQ

前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq。   首先引入配置文件org.springframework.amqp,如下 org.springframework.amqp spring-rabbit 1.6.0.RELEASE

2017-12-22 16:04:09 205

转载 rabbitMQ第四篇:远程调用

前言:前面我们讲解的都是本地服务器,现在如果需要远程计算机上运行一个函数,等待结果。这就是一个不同的故事了,这种模式通常被称为远程过程调用或者RPC。本章教程我们使用RabbitMQ搭建一个RPC系统,一个客户端和一个可扩展的RPC服务器,现在我们开始吧。Callback queue一般做rpc在RabbitMQ是比较容易的,一个客户端发送一个请求信息和一个响应信息的服务器

2017-12-22 16:03:02 194

转载 rabbitMQ第三篇:采用不同的交换机规则

在上一篇我们都是采用发送信息到队列然后队列把信息在发送到消费者,其实实际情况并非如此,rabbitMQ其实真正的思想是生产者不发送任何信息到队列,甚至不知道信息将发送到哪个队列。相反生产者只能发送信息到交换机,交换机接收到生产者的信息,然后按照规则把它推送到对列中,交换机是如何做处理他接收到的信息,并怎么样发送到特定的队列,那么这一篇主要是讲解交换机的规则。一:发布/订阅在上一篇说

2017-12-22 16:02:04 176

转载 rabbitMQ第二篇:java简单的实现RabbitMQ

前言:在这里我将用java来简单的实现rabbitMQ。下面我们带着下面问题来一步步的了解和学习rabbitMQ。1:如果消费者连接中断,这期间我们应该怎么办2:如何做到负载均衡3:如何有效的将数据发送到相关的接收者?就是怎么样过滤4:如何保证消费者收到完整正确的数据5:如何让优先级高的接收者先收到数据一:"Hello RabbitMQ"下面

2017-12-22 16:00:45 176

转载 rabbitMQ第一篇:rabbitMQ的安装和配置

在Windows下进行rabbitMQ的安装第一步:软件安装如果安装rabbitMQ首先安装基于erlang语言支持的OTP软件,然后在下载rabbitMQ软件进行安装(安装过程都是下一步,在此不在说了)第二步:环境变量配置如果上面完成安装以后要进行环境变量的配置,首先配置ERLANG_HOME如下图(变量值就是你按照otp软件的路径)然后在配置RA

2017-12-22 15:57:55 271

转载 Windows 用bat脚本带配置启动redis,并用vb脚本使其在后台运行。

最近,在Windows上用开发PHP程序,需要用到Redis,每天要打开一个运行redis-server.exe的窗口这样比较烦,因为窗口就一直打开着,不能关闭。 所以就想着通过写脚本的方式,让他在后台运行。先写一个startup.bat脚本:@echo offd:cd /soft/redisredis-server.exe redis.conf exi

2017-12-20 09:13:09 1883

转载 RabbitMQ的应用场景以及基本原理介绍

1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式 (1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是

2017-12-07 10:57:07 220

转载 采用BigInteger进行的权限设计

最近看到了一个项目的权限是根据bigineger来进行计算的菜单权限,觉得还是不错,存储上只需要存储在一个字段里就可以了,通过计算算出该角色的菜单权限即可,效率也非常的快,放在session中也非常的小,下面简单说一下思路。        首先,将界面中选好的菜单树,勾选完成后传到后台,后台通过转成字符串数组来进行设值       [java] view pla

2017-11-22 17:29:59 214

转载 一位资深程序员大牛给予Java初学者的学习路线建议

摘要: Java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。Java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的,能不能给点建议?今天我是打算来

2017-10-31 16:04:27 200

转载 (五)Freemarker 整合Spring

Freemarker 可以和spring 进行无缝整合, 整合方式也非常简单。 Freemarker 在Web 应用中发送邮件中,做邮件模板是一个非常好的一个应用方式。【1. 引入jar 包】   除了添加spring 的jar包以外,还需要添加 freemarker 的jar 包【2. 添加配置】[html] view plain co

2017-10-26 13:35:26 336

转载 (四)Freemarker 运算符

Freemarker 提供了算术运算符, 逻辑运算符, 比较运算符, 空值处理运算符。       Freemarker 在进行运算时,你放入map 中的是什么类型, 就会解析成对应的类型。比如说:如果放入的是string 的 10 , 那么解析的时候 依然是string 类型的,而不是说是数值型。【1. 算术运算符】    1. 数字运算        +

2017-10-26 13:34:37 2570

转载 (三) Freemarker 常用指令

一 常用指令      1. assign: 自定义变量      2. if else :流程判断指令      3. list: 变量sequence       4. marco: 宏指令(自定义方法)      5. import: 引入命名空间      6. include:  嵌入文件指令二 指令详解

2017-10-26 13:34:02 317

转载 (二)Freemarker 基本数据类型

一 数据类型简介      freemarker 模板中的数据类型由如下几种:         1. 布尔型:等价于java中的boolean类型, 不同的是不能直接输出,可以转换成字符串再输出         2. 日期型:等价于java中的Date类型, 不同之处在于不能直接输出,需要转换成字符串再输出         3. 数值型:等价于java 中的

2017-10-26 13:32:44 839

转载 (一) Freemarker 简介 && 环境搭建

一 Freemarker 简介         1. FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。        2. FreeMarker不是一个Web应用框架,而是作为Web应用框架一个组件。        3. FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web

2017-10-26 11:26:00 156

转载 freemarker 导出Excel

在项目开发中,导出Excel 是比较常见的功能, 以前用过POI导出Excel 文件, 但是POI 在使用方面比较麻烦, 而用freemarker 来导出Excel 会简单很多。1. 创建Excel文件:student.xls ,你想生成什么样式的Excel 文件, 先做一个模板。2. 另存为 xml 文件:  studen.xml。3.

2017-10-26 11:22:11 629

转载 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例

第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点。第二篇博文深入浅出JMS(二)–ActiveMQ简单介绍以及安装,我们介绍了消息中间件ActiveMQ,安装,启动,以及优缺点。第三篇博文深入浅出JMS(三)–ActiveMQ简单的HelloWorl

2017-10-26 10:15:43 195

转载 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点。第二篇博文深入浅出JMS(二)–ActiveMQ简单介绍以及安装,我们介绍了消息中间件ActiveMQ,安装,启动,以及优缺点。这篇博文,我们使用ActiveMQ为大家实现一种点对点的消息模型。如果你

2017-10-26 10:13:39 174

转载 深入浅出JMS(二)--ActiveMQ简单介绍以及安装

现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的。上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JMS,我们这篇博文介绍一款开源的JMS具体实现——ActiveMQ。ActiveMQ是一个易于使用的消息中间件。消息中间件我们简单的介绍一下消息中间件,对它有一个基本认识就好,消息

2017-10-26 10:10:20 207

转载 深入浅出JMS(一)--JMS基本概念

摘要:The Java Message Service (JMS) API is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages. It

2017-10-26 10:03:49 201

转载 浅谈三层结构与MVC模式的区别

有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题。那么我也来讲讲我对这两者的理解吧。首先对这个题目,本身是存在问题的,“XX结构”与“XX模式”的区别?请问中国社会制度与美国人生活方式有什么区别?这两者本身讲的是不同方向与角度的问题,在实际应用中他们的确存在一些相似的特点,在很多书籍中也没有深入讲解,以致于造成困惑,为了更好的理解他们,

2014-06-25 14:01:49 415

转载 onkeypress 和 onkeydown 的区别

1. 一个放开一个没有放开,onkeydown 先于 onkeypress 发生。 2.onkeypress 无法系统按钮。 2.onkeydown 捕获的 keyCode 不区分字母大小,而 onkeypress 区分。 onkeypress是在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。 onkeyup 是在用户放开任何先前按下

2014-05-06 16:21:28 1220

转载 程序员学习能力提升三要素

IT技术的发展日新月异,新技术层出不穷,具有良好的学习能力,能及时获取新知识、随时补充和丰富自己,已成为程序员职业发展的核心竞争力。本文中,作者结合多年的学习经验总结出了提高程序员学习能力的三个要点。众所周知,现在是一个知识爆炸的时代,知识更新非常快。据测算,一个大学毕业生所学到的知识,在毕业之后2年内,有效的不过剩下5%。对于软件行业而言,这种形势更为明显,我们赖以立足的,不在于

2014-04-18 13:16:52 472

转载 JSP Servlet基础知识(二)

1.   HTML 是静态的,JSP是动态的,交互式的,而且可由用户定制。 2.   服务器:可能是物理主机(硬件),也可能是Web服务器应用(软件)。客户:指人类用户,或浏览器应用。Web客户允许用户请求服务器上的某个资源,并且向用户显示请求结果。 3.   服务器和客户的通信服务器和客户之间对话的共同的语言是HTTP。服务器使用HTTP向客户

2014-04-16 22:35:15 959

转载 JSP页面汉字不乱码,提交数据时中文汉字乱码

1 最基本的乱码问题。这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。中文问题  我是个好人三个地方的编码。第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。第二处编

2014-04-16 21:51:22 808

转载 程序员的“横向发展”

        在我小的时候,家长经常打趣胖的孩子说:哟,身体长得挺快,可惜就是横向发展。所以在很多人的潜意识里,纵向发展是值得夸奖的,横向发展则不是那么光彩的事情。但是我的工作经历,却让我对“横向思考”有了新的认识。  程序员的发展,长期以来都是大家关心的问题。一般来说,程序员的发展有两大方向,深度和广度。深度发展,就是精神自己的本事,研习新潮、尖端的技术乃至“屠龙之术”,以绝招

2014-04-06 23:50:58 586

转载 为什么我们应该像盖房子那样写程序?

在砌上一块砖或钉下一支钉子之前,建筑设计师会制定好详细的计划。程序员或者软件工程师却不会。这难道就是房子很少塌倒而程序经常会崩溃的原因?  蓝图保证建筑设计师的设计的建筑按规划建成。“建成”不仅仅意味不会塌倒,还意味达到业主要求的功能。建筑设计师和他们的客户在着手建造之前,通过蓝图来沟通,以理解他们将要建造成的建筑的样子。  但是很少有程序员在编码之前,会勾画哪怕是

2014-04-06 23:35:54 508

转载 程序员快乐才能更好的工作



2014-04-06 23:19:59 443

转载 我所了解的一个精神失常的程序员

不久前我们公司有个程序员精神失常。他走进经理办公室开始大喊大叫,说着一些奇怪的事情。如果我不是像了解自己一下了解他,就会以为他磕了药。但是事实上他简直就是精神失常了。他是我在编程行业见过的最勤奋员工。他经常在下班后加班,周末的时候,当管理人员需要人手去处理紧急工作时,他总是随叫随到。在这个阶段公司并不赚 钱,老板需要尽可能快的完成项目,所以任何被客户急催的软件开发都会自动分配给他。他很乐意

2014-04-06 23:00:51 484

空空如也

空空如也

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

TA关注的人

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