![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
windskymr
这个作者很懒,什么都没留下…
展开
-
java AIO示例
按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO转载 2015-05-27 12:34:15 · 886 阅读 · 0 评论 -
放一段插入排序的代码,很多地方都用得到
public class ArrayUtil { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void swipArray(List rankList, int x, int y){ Object tmp = rankList.get(x); rankList.set(x, rankList.get(y)转载 2016-12-12 11:04:45 · 398 阅读 · 0 评论 -
Wait, notify实现的生产消费模型
public class TaskManager { private TaskManager(){ } private final static TaskManager instance = new TaskManager(); public static TaskManager getInstance(){ return instance; } private转载 2016-12-12 12:32:10 · 310 阅读 · 0 评论 -
Java MAINFEST文件构造
要运行Jar文件时最好加入MANIFEST.MF文件, 它的作用是指定入口类, 并且指定依赖包的路径, 如果不加这个文件, 则在运行Jar包的时候必须输入Main类,还要指定classpath.java com.dddd.dddd.Main -classpath **.jar;***.jar,这样做挺 不方便的, 有了MANIFEST文件就可直接运行了, java -jar ****转载 2016-12-09 14:18:00 · 519 阅读 · 0 评论 -
Java实现读Chuck数据
之前列出了Chuck苏做了一个能读Chuck的程序,public class IOLine { private byte[] data; private String line; public byte[] getData() { return data; } public void setData(byte[] data) { this.data = data;转载 2017-02-06 17:32:59 · 560 阅读 · 0 评论 -
Java实现的麻将胡牌算法
胡牌:平胡:1对将及4副(顺子/刻子)对对胡:4副刻子+1对将组成的胡牌七小对:全部牌都是1对门清:全部牌都是自己摸的,没有碰和暗杠全求人:全部碰或明杠,手上只剩一张牌,并且是点炮胡,不能自摸清一色:全部都是一色的平胡(包含万、条、筒、字)七大对:有4张一样的牌且没杠,其余牌都是对子豪华大七对:有至少两个4张一样的牌,其余牌都是对子定义麻将牌:pub转载 2017-07-31 11:49:56 · 8804 阅读 · 2 评论 -
生产消费模型-多生产者vs多消费者
使用场景: 游戏中多个玩家生产任务,服务器多线程处理任务, Netty工作线程收到客户端传来数据,生成任务后,加入到任务队列中; 游戏服启动后,创建多个消费线程,当有任务加入到队列中,其中某个消费者取得任务并处理,1000个玩家在线玩耍,只有10个线程处理任务。转载 2017-08-18 14:21:12 · 647 阅读 · 0 评论 -
Netty:实现同步发送并接收消息的一种方式
Netty创建通信服务时使用Nio异步通信, 配置代码(bootstrap.channel(NioSocketChannel.class);),要怎样实现这样一个同步发送消息并接收消息功能,虽然这样做觉得很没必要。public class ChannelUtil { public static Object writeMsgSync(Object msg, Channel cha转载 2017-08-18 14:57:50 · 9183 阅读 · 2 评论 -
Maven中Pom文件打包配置build
摘自:https://my.oschina.net/simpleton/blog/607776方法一 ###架包名### src/main/java src/main/resources ${project.build.directory}转载 2017-09-18 16:41:07 · 4674 阅读 · 1 评论 -
Android App中通过JNI调用C/C++代码
1. Eclipse ADT创建android工程2.编译java本地调用方法package com.skymr.learn;public class HelloJni { public static native void sayHello(); public native void sayHi(); public static native String g转载 2017-09-22 11:44:06 · 434 阅读 · 0 评论 -
主流数字证书介绍
一般来说,主流的Web服务软件,通常都基于OpenSSL和Java两种基础密码库。Tomcat、Weblogic、JBoss等Web服务软件,一般使用Java提供的密码库。通过Java Development Kit (JDK)工具包中的Keytool工具,生成Java Keystore(JKS)格式的证书文件。 Apache、Nginx等Web服务软件,一般使用OpenSSL工具提供的密码...转载 2018-08-06 14:02:21 · 437 阅读 · 0 评论 -
Netty实现WebSocket通信
服务端要实现websocket,编解码器中必须加入对websocket的支持ChannelInitializer的initChannel方法实现@Overrideprotected void initChannel(SocketChannel channel) throws Exception { try { ChannelPipeline pipeline = channel....转载 2018-08-06 14:41:10 · 5055 阅读 · 0 评论 -
分布式利器Zookeeper:分布式锁
转自http://blog.51cto.com/zhangfengzhe/1925625原生API操作ZK 什么叫原生API操作ZK呢?实际上,利用zookeeper.jar这样的就是基于原生的API方式操作ZK,因为这个原生API使用起来并不是让人很舒服,于是出现了zkclient这种方式,以至到后来基于Curator框架,让人使用ZK更加方便。有一句话,Guava is to JAVA...转载 2018-08-07 13:09:07 · 204 阅读 · 0 评论 -
zookeeper分布式锁代码实现(一)
利用zookeeper的临时节点实现分布式锁,这种方法简单,断开连接后能自动删除临时节点,相当于已获得锁的调用者挂掉后自动释放锁,但当调用者太多,会出现“惊群”现象。/** * zookeeper锁实现 * @author skymr * */public class ZookeeperLock implements Lock, Watcher{ public Zooke...转载 2018-08-07 16:00:43 · 321 阅读 · 0 评论 -
zookeeper分布式锁代码实现(二)
之前实现的分布式锁只是利用了zookeeper的临时节点,在大集群的环境下并不适用,会出现“惊群”效应:每次节点删除,所有的调用者都来获取锁,zookeeper负载太大,也造成资源不必要的浪费;这时可以为调用者定一个顺序(zookeeper的临时顺序节点),当调用者自己的编号是所有节点中最小的,那设定它取得了锁,否则监听最小的节点,这个节点删除时,重新尝试获得锁。 本例中使用了T...转载 2018-08-08 13:58:39 · 1562 阅读 · 2 评论 -
Spring RMI使用学习
两台服务器之间要进行通信, 可以通过定义消息,开放端口互连这种方式进行, 但是,这种方式但繁琐,每添加一个业务功能, 就要增加一条消息,还要实现消息的处理业务, 这时候使用RMI(远程调用服务)就要简单多了,只需要实现服务端接口, 另一端可以直接调用, 就好像在调用本地代码一样.这与Webservice类似,但部署起来更简单方便.转载 2016-12-12 10:47:14 · 394 阅读 · 0 评论 -
爬虫技术要点(一)Post相关问题
本人有空有玩爬虫,虽然技术不行,没有拿得出手的作品,但还是喜欢玩,这几天就遇到一个非常奇怪的问题,无法理解的现象.在Eclipse中运行程序,流程一帆风顺地走下去,但在命令行中(CMD)运行,使用 java class类的方式运行,且流程在form表单提交时,响应始终会超时,而且在两个网站中使用都这样,我就纳闷了,怎么每次我一输入验证码,怎么都登陆不进去呢?不会是服务器的问题.现在终于转载 2015-07-04 22:10:32 · 1390 阅读 · 0 评论 -
Mina学习笔记 TcpClient
上节实现了简单的EchoServer,但客户端还是Telnet,这节就实现TcpClient吧客户端的Encoder与Decoder 跟服务端的一样,可以直接拿来使用,但还是做了些调整,解码代码:package com.skymr.mina.tcptest;import java.nio.ByteBuffer;import java.nio.charset.Charset转载 2015-05-30 10:36:50 · 674 阅读 · 0 评论 -
Mina学习笔记 简单EchoServer(二) 编码解码修改
上一节实现了简单的EchoServer,客户端说什么,服务器返回you say:什么,但它是怎么传输的呢,协议是什么格式的呢,业务逻辑和协议真的分得很开呢它的编码解码在这里设置 acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(转载 2015-05-29 17:51:33 · 1126 阅读 · 0 评论 -
IOC与AOP介绍
AOP 面向切面,虽然是Spring框架中的一个重要内容,但并不是Spring首创。核心能力是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。IoC 控制反转,又称依赖倒置。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。传统开发中,总是主调方在编码期间就必须主动集成好被调方,而IoC实现了转载 2015-06-01 21:28:02 · 691 阅读 · 0 评论 -
Mina学习笔记之IoSessio翻译
The Session is at the heart of MINA : every time a client connects to the server, a new session is created, and will be kept in memory until the client is disconnected.A session is used to store p转载 2015-06-01 10:03:32 · 502 阅读 · 0 评论 -
Mina学习笔记之IoFuture
在Mina 的很多操作中,你会看到返回值是XXXFuture,实际上他们都是IoFuture 的子类,看到这样的返回值,这个方法就说明是异步执行的,主要的子类有ConnectFuture、CloseFuture 、ReadFuture 、WriteFuture 。这个接口的大部分操作都和java.util.concurrent.Future 接口是类似的,譬如:await()、awaitUni转载 2015-06-01 10:48:54 · 1181 阅读 · 0 评论 -
Netty学习笔记 开始
The ProblemNowadays we use general purpose applications or libraries to communicate with each other. For example, we often use an HTTP client library to retrieve information from a web server and转载 2015-06-01 16:08:08 · 693 阅读 · 0 评论 -
Spring学习笔记(一)第一个Spring程序
开始Spring之旅,编写第一个Spring程序, 只是简单地从Xml配置文件中读取Bean, 实现依赖注入DIUserInfoService接口:package com.skymr.spring.test;public interface UserInfoService { public abstract void save();}UserInfoServiceB转载 2015-06-04 10:11:05 · 518 阅读 · 0 评论 -
Java静态变量初始化时机
静态变量初始化方式:1.声明时初始化;2.静态块中初始化;测试:package com.skymr.learn;/** * 静态变量初始化顺序测试 * @author skymr * */public class InstanceTest2 { static int b = 11; static{ a = 20; b = 22; } stati转载 2015-06-05 10:55:17 · 2334 阅读 · 0 评论 -
Spring学习笔记(二)IOC注入方式
spring IOC注入方式有三种:1.构造器注入2.setter注入3.注解方式构造器注入, service层调用dao层,向service注入daopackage com.skymr.spring.test.dao;/* * 对数据库表UserInfo的增删查找操作接口 */public interface UserInfoDao { public vo转载 2015-06-04 12:50:18 · 530 阅读 · 0 评论 -
Java调用子类重写方法
以下情况下父类可以调到子类的重写方法package com.skymr.learn;/** * 调用子类重写方法 * @author skymr * */public class SubParentTest2 extends ParentClass2{ private String name; public SubParentTest2(String name){转载 2015-06-05 18:27:21 · 1968 阅读 · 0 评论 -
Spring IOC自动装配
配置自动装配用autowire属性autowire取值如下:byType:按类型装配,如果找到多个,抛出异常,没有找到,则值为nullbyName:按名称装配constructor:与byType类似,但有构造参数autodetect:自动决定使用constructor还是byType,如果发现有默认构造器,则使用byType方式转载 2015-06-06 10:39:10 · 635 阅读 · 0 评论 -
Java实例变量初化顺序
实例变量初始化方式有以下3种:1.非静态块中初始化;2.声明时初始化;3.构造器中初始化;测试:package com.skymr.learn;/** * 实例变量初始化顺序测试 * @author skymr * */public class InstanceTest1 { public InstanceTest1(){ a =转载 2015-06-05 10:25:23 · 431 阅读 · 0 评论 -
Java父类调用子类
因为父类根本不知道是谁要继承自己,所以一般情况下不能调用子类,但还是有特殊的情况.package com.skymr.learn;/** * 父类调子类方法 * @author skymr * */public class SubParentTest extends ParentClass{ private int i = 222; public void display()转载 2015-06-05 14:42:13 · 725 阅读 · 0 评论 -
Spring IOC自动扫描
在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会让配置文件很臃肿,查找及维护起来不方便.Spring2.5为引入了自动扫描机制,它可以在类路径下寻找标注了@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中,它的作用和在xml文件中使用bean节点配置组件是一样的.@Serv转载 2015-06-06 11:16:18 · 515 阅读 · 0 评论 -
Spring学习笔记 IOC原理实现
实现Spring 依赖注入:1.读取xml配置文件,保存Bean数据2.使用反射技术,生成bean对象池,对bean对象的属性赋值xml配置文件读取器依赖jar包: dom4j.jar; jaxen.jarpackage com.skymr.spring.test.iocimpl;import java.util.HashMap;import java.util.转载 2015-06-07 08:33:43 · 541 阅读 · 0 评论 -
Spring学习笔记 AOP开发
1.xml方式配置AOP:首先配置xml文件: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/sch转载 2015-06-07 16:30:03 · 533 阅读 · 0 评论 -
Jave利用动态代理实现AOP
1.JDK Proxy模拟AOP代理对象实例:package com.skymr.spring.test.aopimpl;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * JDK的代理技术 * @a转载 2015-06-07 11:08:52 · 470 阅读 · 0 评论 -
JTextArea实现类似JList那样的效果
/** * 自定义的,可选中json字符串的 TextArea * @author Administrator * */public class JsonTextArea extends JTextArea implements CaretListener{ /** * */ private static final long serialVersionUID = 1...转载 2018-10-10 18:06:58 · 690 阅读 · 1 评论