- 浏览: 83147 次
- 性别:
- 来自: 广州
最新评论
文章列表
动态代理--接口无实现可以调用
- 博客分类:
- Java
模仿Mybatis,只有接口创建代理实现,根据方法名调用调用实现:参考MyBatis源码类:
MapperProxyFactory, MapperProxy
创建接口类:
public interface MethodInterface {
String helloWorld();
}
动态代理类:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class Method ...
Netty Reactor模型
- 博客分类:
- Java
1、单线程
时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。
在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行 ...
netty 之Hello Word
- 博客分类:
- Java
如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。
如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是"Hello world",不过Netty官网的例子却偏偏抛弃了"Hello world"。那我们就自己写一个最简单的"Hello world"的例子,作为上手。
1、首先创建 DiscardServerHandler 服务器端处理消 ...
netty ByteBuf
- 博客分类:
- Java
原理简介:
1、从存储方式上,ByteBuf分为:HeapByteBuf和DirectByteBuf
HeapByteBuf是用byte数组格式来存储数据,在JVM内部开辟缓冲区,在数据操作前先把数据复制到byte数组再进行处理。因为中间增加了一层数据复制操作,会有一定的性能损耗。DirectByteBuf是使用java.nio.ByteBuffer来存储数据。利用java.nio.ByteBuffer是借助于JVM调用操作系统的底层通信函数,直接操作直接缓冲区可以减少中间缓冲区的复制操作,进而提供程序性能。
2、从空间初始化方式上来分,ByteBuf分为:缓存方式分配和非缓存方 ...
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.jdbc.datasource.DataSourceUtils;
public class Main {
public static void update(String sql ...
Java zookeeper 分布式开发
- 博客分类:
- Java
1、安装zookeeper
下载zk http://archive.cloudera.com/cdh5/cdh/5/
配置文件
tickTime=2000
initLimit=10
syncLimit=5
# zk数据保存目录
dataDir=/usr/local/zookeeper/data
clientPort=2181
启动:
bin/zkServer.sh start
客户端命令行链接:
bin/zkCli.sh
2 ...
Java 动态加载Jar包,并使用
- 博客分类:
- Java
将一个jar包动态加载到java虚拟机中
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import org.apache.commons.lang3.reflect.FieldUtils;
public class JarTools {
protected static Method addURL = null ;
...
引入 google snappy 包
github 上snappy地址 http://github.com/google/snappy
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.2.6</version>
</dependency>
使用snappy压缩文件
import java.io.ByteArrayOut ...
1、安装redis 集群,1主1从 也可以是多主多从 redis 详细今后会在以后的文章中写出
配置redis-master 的配置文件 redis.conf
port 6379
daemonize yes
#protected-mode no
dbfilename "1.db"
bind 0.0.0.0
配置 redis-slave 的配置文件 redis.conf
port 6380
daemonize yes
dbfilename "2.db"
bind 0.0.0.0
#这里的IP必需通过程序可以访问到的IP地址
...
Spring boot rmi 远程方法调用
- 博客分类:
- Java
RMI 远程方法调用(Remote Method Invoke)
远程和本地都有的接口类:
package com.rmi.service;
public interface HelloService {
public String say(String name) ;
}
远程接口实现类:
package com.rmi.service.impl;
import org.springframework.stereotype.Service;
import com.rmi.service.HelloService;
@Service( ...
Java 大小写最快转换方式
- 博客分类:
- Java
package io.mycat;
import java.util.stream.IntStream;
/**
* 小写字母的 'a'=97 大写字母 A=65 更好相差32利用这个差进行大小写转换
* @author : Hpgary
* @date : 2017年5月3日 10:26:26
* @mail: hpgary@qq.com
* */
public class StringUtils {
protected final static byte[] CHAR_TYPE = new byte[512];
protected final ...
Spring注解大全
- 博客分类:
- Java
1、@Configuration
完全替换spring xml文件功能,可自动装配bean,根据@Bean注解创建bean,实例如下
@Configuration
public class App01 {
@Bean
public Person bean1() {
Person p2 = new Person();
p2.setName("001");
return p2;
}
}
2、@Pr ...
Activemq 消息服务
- 博客分类:
- activemq
1、简介
ActiveMQ 自己看百科
2、下载安装
去 apache 官网下载,http://archive.apache.org/dist/activemq/
3、安装
a、解压
tar -xvf apache-activemq-5.14.4-bin.tar.gz
b、拷贝到/usr/local下
mv apache-activemq-5.14.4 /usr/local/activemq
c、启动
bin/activemq start
d、启动后可以通过8161端口访问
http://10.0.0.12:8161
e、设置访问账号密码:
在 con ...
Java大端字节和小端字节
- 博客分类:
- Java
1、什么是大端和小端
1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举例说明:例如数字0x12345678在内存中表现形式为:
1)大端模式:
低地址 -----------------> 高地址0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址0x78 | 0x56 | 0x34 | 0x1
2、Java 大端互转代码
publ ...
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。
一、Read Uncommitted(读取未提交内容 ...