IT徐胖子的专栏

本博客文章仅供学习交流,十分欢迎和期待与IT技术以及生活的爱好者交流学习。...

排序:
默认
按更新时间
按访问量

我的所有技术博客以及声明

我的csdn技术专栏(主博客):http://blog.csdn.net/woshixuye 我的新浪技术博客:http://blog.sina.com.cn/luozibuhui111 我的51cto技术博客:http://woshixy.blog.51cto.com/ 本人小技术员一枚,踏...

2012-02-05 11:25:18

阅读数:1902

评论数:6

MySQL中实现upsert操作

该操作的实现原理是通过判断插入的记录里是否存在主键冲突来决定是插入还是更新,当出现主键冲突时则进行更新操作(使用 ON DUPLICATE KEY UPDATE 语句后面的参数),若无冲突则进行插入操作。 INSERT INTO t_pro_gift (id, n...

2017-02-12 12:30:09

阅读数:2937

评论数:0

Spring中的计时器StopWatch

1 概述 需要记录每个任务执行时间,或者记录一段代码执行时间,简单方法是打印当前时间与执行完时间的差值,若执行大量测试很麻烦并且不直观。若想对执行时间做进一步控制,则需要在程序中很多地方修改。spring-framework提供了一个StopWatch类可以做类似任务执行时间控制。 StopWat...

2017-02-12 11:58:36

阅读数:2791

评论数:0

Spring中利用配置文件和@value注入属性值

1 简单属性值注入 package com.xy.test1; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service ...

2017-02-12 11:11:03

阅读数:9827

评论数:3

Java自定义线程池和线程总数控制

1 概述 池化是常见的思想,线程池是非常典型的池化的实现,《Java并发编程实战》也大篇幅去讲解了Java中的线程池。本文实现一个简单的线程池。 2 核心类 【1】接口定义 public interface IThreadPool { /** * 关闭线程池 */ publi...

2017-02-04 10:33:31

阅读数:5110

评论数:0

Spring中BeanPostProcessors【2】优雅实现业务分离

1 概述 BeanPostProcessors可以在spring IoC容器初始化受管Bean前、属性设置后对该Bean先做一些预处理,或者在容器销毁受管Bean之前自己释放资源。《Spring中BeanPostProcessors【1】简单预处理》一文有实例说明。本文介绍一个具体案例,优雅实现...

2017-01-24 10:02:00

阅读数:1005

评论数:0

MySQL的timestamp

timestamp有两个属性,分别是CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP两种。 1 CURRENT_TIMESTAMP  当要向数据库执行insert操作时,若有个timestamp字段属性设为CURRENT_TIMESTAMP,则无论这...

2017-01-20 18:45:44

阅读数:896

评论数:0

Hive中处理json数据

1 概述 Hive中提供了两种针对json数据格式解析的函数,即get_json_object()与json_tuple() 2 示例 set hivevar:msg={ "name": "Tom", "server": &qu...

2017-01-13 18:44:57

阅读数:2173

评论数:0

Spring中BeanPostProcessors【1】简单预处理

1 概述 有时我们希望在Spring IoC容器初始化受管Bean前、属性设置后对该Bean先做一些预处理,或者在容器销毁受管Bean之前自己释放资源。Spring IoC为我们提供了多种方法来实现受管Bean的预处理和后处理。Spring中定义了BeanPostProcessors接口: pac...

2017-01-13 09:04:55

阅读数:1907

评论数:0

Java中isAssignableFrom和instanceof

isAssignableFrom 示例:Class1.isAssignableFrom(Class2) 解释:① 判断Class1和Class2是否相同。②Class1是否是Class2的父类或者接口。 instanceof 示例:object   instanceof   TypeName ...

2017-01-13 08:43:17

阅读数:2372

评论数:0

Netty学习6-ChanelHandler【1】概述

1 概述 Handler在netty中无疑占据着非常重要的地位。Handler与Servlet中的filter很像,通过Handler可以完成通讯报文的解码编码、拦截指定的报文、统一对日志错误进行处理、统一对请求进行计数、控制Handler执行与否等等。 Netty4.X中的所有handle...

2017-01-11 20:11:51

阅读数:1081

评论数:0

Netty学习12-缓冲区【2】ByteBuf

1 概述 《Netty学习11-缓冲区之JDK ByteBuffer》一文中介绍了JDK的缓冲区ByteBuffer的用法和不足。为了弥补这些不足,Netty提供了自己的缓冲区实现ByteBuf(netty3.X是ChannelBuffer)。 2 实现策略 JDK的ByteBuffer已经提...

2017-01-09 10:46:09

阅读数:2051

评论数:0

Netty学习11-缓冲区【1】ByteBuffer

1 代码示例 import java.nio.ByteBuffer; public class JDKByteBufferTest { public static void main(String[] args) { // 初始化ByteBuffer ByteBuffer buffer ...

2017-01-09 08:43:48

阅读数:1299

评论数:0

TCP三次握手和backlog参数

1 三次握手 TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。 为什么非要三次握手呢?谢希仁的...

2017-01-07 07:16:53

阅读数:1421

评论数:0

Netty学习8-自定义复杂序列化框架

1 概述 《Netty学习7-序列化原理》一文中讲述了序列化的原理,通过Java位运算、JDK原生的NIO、Netty的ChannelBuffer做了序列化操作。本文演示稍微复杂的一个的自定义序列化框架,但万变不离其宗,拆解出来还是很简单的。 2 工具类 这是核心类。拆解来看就是调用了Chann...

2017-01-06 10:11:13

阅读数:1156

评论数:0

Netty学习10-粘包和拆包

1 粘包拆包基本概念 TPC是一个面向流的协议。所谓流就是没有边界的一串数据,如同河水般连成一片,其中并没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的具体情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆成多个包发送,也有可能把多个小包封装成一个包发送。...

2017-01-04 09:24:26

阅读数:1997

评论数:0

RTT(往返时间)和RPC

RTT(Round-Trip Time)往返时间在计算机网络中它是一个重要的性能指标。表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认,不包含数据传输时间)总共经历的时间。 RTT由三个部分决定:链路的传播时间、末端系统的处理时间、路由器的缓存中的排队和处...

2017-01-03 09:57:32

阅读数:4998

评论数:0

Netty学习9-序列化框架protocbuf

1 概述 ProtoBuf是一个谷歌开发的非常流行的序列化框架,它支持数据结构化一次可以到处使用,甚至可以跨语言使用,通过代码生成工具生成不同语言的源代码。 2 开发 步骤1  准备 protoc.exe下载。载windows版本的生成工具:protoc-2.5.0-win32.zip文件...

2017-01-02 19:48:17

阅读数:1017

评论数:0

Netty学习7-序列化原理

1 概述 序列化:把Java对象转化为byte数组的过程。便于网络传输,存储等。反序列化:把byte流还原为Java对象的过程。现有很多成熟的序列化框架如JDK原生序列化框架、google的protobuf等。本文来探究一下序列化的原理。 2 自定义序列化框架 现在需要转化的是一个int对象,...

2017-01-02 12:49:43

阅读数:1603

评论数:0

操作系统-线程

1 背景 自从20世纪60年代提出进程这个概念以来,在操作系统中一直都是以进程为运行的基本单位。直到20世纪80年代中期,人们才又提出了更小的能独立运行的基本单位线程。为什么要引入线程这个概念呢?主要是因为在实际的应用中,人们需要提出一种新的实体,这个实体必须满足两个特性: 1 各个实体之间...

2017-01-01 11:48:17

阅读数:838

评论数:0

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