自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

侯磊的专栏

关于Java的一些知识

  • 博客(37)
  • 资源 (3)
  • 论坛 (2)
  • 收藏
  • 关注

原创 JDBC操作的简单封装

近期观看论坛中有些朋友在学习JDBC操纵数据库,于是,突发奇想打算封装一下JDBC的操作,希望能够通过二次封装,简化一下常规操作,当然,也就当是练练手了。一、JDBC 的常规操作 JDBC 的常规操作分为两类,执行SQL语句 和 调用存储过程。调用存储过程,这个对于新手来说,不太常用,所以,暂时就不进行封装了。 执行SQL语句的话,一般分为 增删改查 这四类操作。其中 增删改,可以统一使用 executeUpdate 进行操作,查询可以使用 executeQuery 进行操作...

2021-04-08 20:22:31 18

原创 模拟进程并发执行的小程序

最近写了一段小程序,模拟三个进程在2个CPU核心下的执行情况。代码如下:import java.util.*;public class OperationSystem { enum OperationType { // numerical computation NC(false), // input output IO(true); boolean needBlock; Operatio

2020-09-18 15:31:13 368

原创 SpringBoot + Netty 实现 Json字符串 的传输(六)

业务核心部分都进行完毕了,就剩下 Netty 组件关系的配置 以及 NettyServer 的定义了。package houlei.net.tcp.cfg;import houlei.net.tcp.codec.GenericPackageClassifierCodec;import houlei.net.tcp.codec.GenericPackageCodec;import houlei.net.tcp.hdr.NettyServerHandler;import io.netty.boo

2020-06-02 14:12:07 275

原创 SpringBoot + Netty 实现 Json字符串 的传输(五)

编解码和数据包都解决了,下面来关注一下,业务处理方面的功能怎样进行设计。1. 构建 NettyServerHandler 类,完成业务逻辑的处理功能。 A. 我们需要一个自定义的线程池,用来执行业务逻辑的处理代码; B. 我们需要封装一下业务处理环节,服务端的业务处理模式比较简单,基本上采用一个请求对应一个应答的操作,所以,可以提取出统一的调用接口 ServerAction 进行业务处理,之后针对不同的请求设计对应的实现类即可。业务处理环节除了 ServerAction 以外,还需要...

2020-06-02 14:07:03 325 2

原创 SpringBoot + Netty 实现 Json字符串 的传输(四)

数据包的class类应该怎样定义? 通过包结构的分析,以及编解码过程的了解,编解码阶段被拆分成了两个阶段: 一个阶段是 JavaBean 与 Json串 的相互转换; 另一个阶段是GenericPackage 与 二进制信息流 的相互转换; 本文所介绍的主要内容是上述的 JavaBean 应该怎样定义,才能更方便的进行使用,同时,也能方便的完成另一个阶段的编解码工作。1. 定义三个枚举类,分别表示数据包的 版本、频道号、命令字。2. 定义一个...

2020-06-02 13:40:18 597 4

原创 SpringBoot + Netty 实现 Json字符串 的传输(三)

网络通信从编解码开始,前面的第一篇文章中,介绍过数据包的结构,这篇文章就要介绍一下拆包和组包的过程。1. 包头字段的设计目的 A. 起始分隔符:标明一个数据包的开始部分(里面还隐含了小端模式的信息,这个小端模式可以忽略); B. 协议的版本:当前版本是明文传输的,考虑到后期升级可能要采用密文传输包体,所以,设计了一个版本字段; C. 频道号:这个字段的作用不明显,目前是想将包信息按照业务分类,比如:网络连接,权限认证,聊天信息等; D. 命令字:与频道号联合起来作...

2020-06-02 13:05:39 313

原创 SpringBoot + Netty 实现 Json字符串 的传输(二)

服务端怎么进行开发?

2020-06-02 11:29:08 352

原创 SpringBoot + Netty 实现 Json字符串 的传输(一)

怎样把一个Json字符串传输到网络的另一端?1. 确定传输协议: 我们在进行网络编程的时候,首先要确定的就是传输协议,常见的传输协议就是UDP和TCP。 我采用的是TCP,因为,TCP可以保证传输数据的可靠性。2. 应用层协议。 为啥应用层还要定义一次协议呢? 因为,应用层都是面向对象的编程,而传输层面向的是二进制的数据流,所以,我们要定义协议完成数据对象与二进制数据流直接的转换。 当然,通常来说,传输Json串,有两种方案可以实现: A....

2020-06-01 16:53:34 837

原创 关于Quartz那点事(一)

针对初学者,简单介绍Quartz的五大组件。

2015-03-15 21:25:33 809

原创 C语言的基本数据类型

刚刚接触C语言的朋友们,首先应该弄清楚的,就是C语言的几个基本的sh

2014-07-29 23:09:18 567

原创 一个简单的笨重Map,内存中保存一些对象,其他的保存到硬盘。

今天观看论坛,发现有些初学者,总是将大量的数据存入HashMap中

2014-06-26 16:01:06 681 1

原创 家用型太阳能发电系统的配置方案

近来对太阳能发电方面的事情比较感兴趣,

2014-06-05 16:26:36 3431

原创 MySQL使用Amoeba主从分离的一点点经验

项目开发完毕,移植到服务器的主从

2014-04-16 11:56:24 607

原创 可激活的间隔任务执行器

近来做项目,遇到一个很蛋疼的问题。以前早就遇到过,但是由于以前系统有变通的方法解决,也就没再弄这个事情。什么问题呢 ? 就是一般情况下,系统会执行以下有时间间隔的周期性任务(比如,每小时执行一次垃圾数据的清理工作),但是,遇到特殊情况还要临时激活任务,让任务临时执行一下(比如突发性垃圾数据猛增)。对于带有时间间隔的周期性任务,写个执行器应该是一件很容易的事情。开启一个线程,每次执行完任务就

2013-08-07 10:27:49 667 1

原创 解决Struts2和Servlet的请求冲突

今日开放项目,遇到老程序员用Servlet开发,新程序员用Struts2开发的情况。开发完成后,需要进行功能集成,但,尝试多次都无法搞定。因为,两者的url-pattern,总是有相互包含的部分,所以,无法正确传递HTTP请求。最后,突发奇想,也许自己写一个Filter放在最前面,对所有请求进行拦截,如果是Servlet的请求,则内部跳转至Servlet;其他的请求让Struts2来处理。

2013-08-06 16:55:49 795

原创 装饰器模式实现文件IO流的ZIP压缩解压(二)

接着上篇文章,上一篇文章讲的是将一个文本文件的数据输出流,转换成ZIP的压缩输出流。      这篇文章,讲述的是,怎样将上一篇文章中生成的压缩文件,进行解压的。也就是说,读取一个ZIP压缩文件,将里面一个被压缩的文件提取出来。      其实,根据压缩、解压,输入、输出 我们可以写出四个装饰器类,分别完成IO流的输入输出、压缩解压功能。暂时先写两个,后面两个有时间再补。package

2013-04-03 00:40:49 764

原创 装饰器模式实现文件IO流的ZIP压缩解压(一)

以前项目中需要下载一个数据库导出的SQL文本文件到客户电脑,但是这个文件体积庞大,有一个多G的样子,客户只有200KB的带宽,传输非常慢。      于是,对服务端的下载程序,做了一个简单的调整,使得客户接收到的数据,是已经压缩后的ZIP文件。      下面介绍代码,里面包含测试用例。该代码只支持一个ZIP压缩包中,只有一个被压缩的文件,暂不支持多个文件的情况。因为当时场景不需要。p

2013-04-03 00:23:08 719

原创 多模式匹配算法-AC算法

模式匹配,一般分为单模式匹配和多模式匹配。当然,一般都用于字符序列的匹配当中。多模式匹配,一般是指在一个较长的字符序列中,有多个模式串要进行匹配。本文展示的是多模式匹配算法中一款较为经典的算法--AC算法。AC 算法的核心思想是构造词典的自动机(可以使用trie树来实现), 其算法复杂度是O(m+k+z), m是文本长度,k是所有pattern长度之和,z是字符串中出现pattern的

2012-07-22 02:24:46 1440

原创 单模式匹配算法-KMP算法

模式匹配,一般分为单模式匹配和多模式匹配。当然,通常都是指在字符序列中的匹配问题。       单模式匹配,对一个较长的字符序列,调用一次算法只匹配一个模式串。    本文展示的是单模式匹配中的经典算法--KMP算法。    KMP算法是一种高效的模式匹配算法,复杂度可以达到O(m+n),而普通模式匹配算法的复杂度为O(m*n)。    在普通匹配算法中子串与模式串都需要回溯,

2012-07-22 01:09:02 1194

原创 自定义主键生成策略

写一篇关于数据库主键生成的文章,大家共同研究一下。首先,确定应用场景。多个程序访问同一个数据库,每个程序生成的主键是不会重复的,那么数据也会相对独立。其次,确定数据类型。数据库的主键,往往都采用数字做主键,但也有采用字符串的。    个人理解,数据库对数字的定位速度要远高于字符串的定位速度,所以,优先选用数字作为主键。再次,确定生成规则。生成规则为了不重复一般都是两种思路,一种是自

2012-07-20 12:33:35 3423

原创 将数字转换成人民币大写的小程序

偶然发现了一个以前写的小程序,发在博客上,共同研究一下。记得是以前一个博客上面的需求,就是将数字转换成人民币大写。不过,代码没有经过优化,估计效率不算高。代码如下:public class RMBReader { static char [] NUMs = new char [] {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'}; s

2012-02-26 01:43:37 1100

原创 Java的系统调用

Java的系统调用,Java实现Ping命令

2011-05-13 17:22:00 3890 4

原创 改进QoS的技术-调度算法:加权公平队列(WeightedFairQueueing)算法

WFQ,WFQ算法,改进QoS的技术,加权公平队列

2011-01-11 17:01:00 3613

原创 简易局域网聊天室程序

<br />近来比较闲,写了一个基于多播协议的聊天室程序。<br />不同于以前写的简单聊天室程序,以前的那个基于TCP协议的,重点在服务器端,客户端用Telnet即可。<br />本次写的程序,由于是多播/组播的情况,所以,没有服务端程序。<br />大致写了一个,漏洞可能较多一些,等过后再完善。<br /> <br />import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.Da

2010-06-12 16:42:00 2200 3

原创 字符串的参数替换

今天CSDN上碰见一位朋友想要完成,替换字符串中的参数为某个变量值。记得以前开发时就遇到过这样的问题。比如:我们给用户群发有用户针对性的短信时,就会遇到这种情况。我们一般会先出一个模板句子: “尊敬的XXX先生,欢迎使用我们公司为您提供的XXX业务,资费XXX元已经扣除。”计算机实现的时候,就要生成一个模板字符串: String modelStr = "

2010-03-03 02:36:00 2066

原创 使用ObjectOutputStream或ObjectInputStream传输文件

今天又在论坛上看到一位兄弟,想用Socket编程实现文件传输。说起来,有好多朋友都想用Socket来传输文件。如果偏底层一些的话,还要涉及到网络协议的制定和实现,这个对于初学者难度要稍大一些。于是,我写了一段利用ObjectOutputStream和ObjectInputStream传输文件的代码。当然,其中我还抄的楼主的一点代码,因为swing方面确实懒得再想了。有两个帖子,

2009-10-31 17:06:00 5571 7

原创 关于TCP长连接的一些简单代码

今天看到论坛上有个朋友要心跳包的实现代码。以前碰到过很多类似的问题了。当然,原帖位置是:http://topic.csdn.net/u/20091020/08/e37c64c0-a416-4b08-a8aa-0d7f964eacb1.html?11914 现在谈谈自己对TCP长连接的一些粗浅见解。1.首先,使用TCP发送信息,其底层也是将信息拆分成若干报文进行发送,在到达目的地按发

2009-10-28 18:04:00 7562 7

原创 Swing编程中用于显示数据库查询结果的数据模型

今天上论坛,发现一个兄弟调用存储过程显示数据。由于数据量太大,所以显示缓慢。我记得以前《核心Java》有过这方面的介绍。所以,参照着编写了一个ResultSetTableModel类。当然,该类的功能还不完美,不支持编辑修改后,回写至数据库中。代码如下:(有用到的朋友,可以交流一下)/** * Swing编程中用于显示数据库查询结果的数据模型。 * 本数据模型只具备显示

2009-07-26 16:15:00 1294

原创 从C语言转换过来的Java版,字符串代数运算器

本文所写的代码,是根据这个帖子,自己手动转换过来滴。在这个帖子中,我已经做了回复,但是,发现这个代码,并不能正确的运行,于是进行了修改。原贴地址:http://topic.csdn.net/u/20090717/14/c99b9d35-acdc-4697-afc0-3b55093d4e65.html 所翻译过来的代码如下:package houlei.csdn.util;

2009-07-20 23:48:00 2957 27

原创 简单聊天室程序

      上论坛的时候,经常会有些朋友求一个简单聊天室的程序。有的要求有界面,但,大多数朋友,不要太复杂滴。      我这里,正好有一个简单滴,客户端只需要Telnet登录上来,输入用户名,就可以聊天了。      以下是服务端的代码:import java.io.BufferedReader;import java.io.InputStreamReader;import

2009-07-19 10:52:00 1351 7

转载 获取M$ SQL Server用户表的字段信息

 -- 获取M$ SQL Server用户表的字段信息 USE database1 SELECT   表名   = CASE a.colorder WHEN 1 THEN c.name ELSE END,   序     = a.colorder,   字段名 = a.name,   标识   = CASE COLUMNPROPERTY(a.id,a.name,IsIdentity) W

2008-10-04 17:25:00 476

转载 JSP/Servlet中的编码问题

首先,说说JSP/Servlet中的几个编码的作用在JSP/Servlet中主要有以下几种设置编码的方式: pageEncoding ="UTF-8" contentType = "text/html;charset=UTF-8" request.setCharacterEncoding("UTF-8") response.setCha

2008-07-11 13:34:00 676 3

原创 自定义Office中格式刷的快捷键

         听说Office2007中,格式刷的快捷键是:Ctrl+Alt+C以及Ctrl+Alt+V,因为我用的还是2006版的。所以,现在还无法证实这件事情。         在Office2006中,格式刷的快捷键默认的是Alt+F,这与菜单栏的“文件”菜单按钮冲突,所以,格式刷的快捷键失效了。于是,我向大家介绍一个自定义格式刷的操作步骤,可能会给大家带来帮助。       

2007-08-16 10:54:00 3532

原创 关于百分数的匹配问题

        这两天正在编写一个控制前台页面输入百分数的校验代码。我想了一下,应该用js比较合理。于是就上网查看了一些关于怎样使用js的文章。         问题的要求是: 1。必须填写数字。  2。若填写整数,最多三位。  3。 若填写小数,整数不超过3位,小数不超过2位。        上网找了些资料,怎样调用相应的方法,我倒是找到了。但是,涉及到匹配的问题,因为要用正则表达式去匹

2007-08-08 10:48:00 1329

原创 Oracle中表字段的自动加1

实现表字段的自动加1有两种思路:都会用到序列sequence。       首先,准备一个table。 create table t_test ( id number,info varchar2(10));       其次,创建一个sequence。create sequence seq_test_id increment by 1start with 1 maxvalue 999999999;

2007-06-03 18:50:00 2751

原创 ORACLE的Connection管理

用系统管理员,查看当前数据库有几个用户连接:         SQL> select username,sid,serial# from v$session; 如果要停某个连接用         SQL> alter system kill session sid,serial#; 如果这命令不行,找它UNIX的进程数         SQL> select pro.spid from v$ses

2007-05-29 22:48:00 657

原创 关于ProGuard一些知识

ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小,并很难进行逆向工程。这里提到了ProGuard的主要功能是压缩、优化和混淆,下面我就先介绍一下这些概念,然后再介绍Pro

2007-05-29 14:02:00 2038 2

SetFileTime.exe

可以更改文件的创建时间,更改时间和访问时间。

2021-04-29

Linux网络编程.pdf

Linux网络编程 这本书很经典。 能够全面的介绍Linux下的网络开发内容

2014-08-18

proguard3.8

proguard3.8.zip文件是java的压缩、混淆器。

2007-05-29

空空如也

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

TA关注的人 TA的粉丝

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