随笔分类 - Java基础
摘要:1. Netty中的缓冲 在Netty中并没有使用Java自带的ByteBuffer,而是自己实现提供了一个缓存区来用于标识一个字节序列,并帮助用户操作原始字节或者自定义的POJO。 Java NIO的ByteBuffer问题 长度固定,不能动态扩展和收缩 只有一个标识位置的指针,读写时要手动调用相
阅读全文
摘要:1. Channel Channel是Netty的核心概念之一,它是Netty网络通信的主体,由它负责同对端进行网络通信、注册和数据操作等功能。 1.1 工作原理 如上图所示: 一旦用户端连接成功,将新建一个channel同该用户端进行绑定 channel从EventLoopGroup获得一个Eve
阅读全文
摘要:1 Proactor和Reactor Proactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。 I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图: 1.1 select,poll,epol
阅读全文
摘要:问题原因 跨域是指从一个域名的网页去请求另一个域名的资源。浏览器出于安全的考虑,不允许不同源的请求: 解决方法 CORS CORS是一个W3C标准,全称是"跨域资源共享"(Cross origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从
阅读全文
摘要:1 HTTP协议协商 1.1 NPN NPN:Next Protocol Negotiation,是由Google公司开发的用于SPDY进行协议协商扩展。 协商过程: 服务端在收到客户端的client hello后,把自己支持的协议通过Server Hello 发送给客户端 客户端拿到清单后,选择一
阅读全文
摘要:1 Java IO 1.1 Java IO 1.1.1 IO IO,即输入(Input)输出(Output)的简写,是描述计算机软硬件对二进制数据的传输、读写等操作的统称。 按照软硬件可分为: 磁盘IO 内存IO 网络IO 按照处理的方式可分为: 同步IO 非阻塞IO 异步IO 按照数据类型可分为:
阅读全文
摘要:1.线程状态 如上图,当我们新建一个线程,并start后,其实不一定会马上执行,因为只有操作系统调度了我们的线程,才能真正进行执行,而操作系统也随时可以运行其他线程,这时线程又回到可运行状态。这个过程是操作系统控制的,不是我们能控制的。我们能控制的是将线程变为blocked,并从blocked变为...
阅读全文
摘要:1.两个数据模型第一个是基本类型数组,第二个使用的是Float对象数组public class SummaryModel{ private float[] summaryData; public float[] getSummaryData() { return su...
阅读全文
摘要:/** * 测试thread的wait notify notifyAll sleep Interrupted * @author tomsnail * @date 2015年4月20日 下午3:20:44 */public class Test1 { /** * 对象锁...
阅读全文
摘要:1.synchronized关键字/** * 同步关键字 * @author tomsnail * @date 2015年4月18日 下午12:12:39 */public class SyncThreadTest { private static final byte[] lock = ne...
阅读全文
摘要:最近在做项目时,用户不想使用平均值来判断当前数据状态,想用其他的方式来分析数据的变化状态,在查找了一些资料后,想使用灰色预测来进行数据的预测。下面的内容是从网上综合下来的,java代码也做了一点改动,以做记录和学习。1.什么是灰色预测 灰色预测是一种对含有不确定因素的系统进行预测的方法。灰色预测通...
阅读全文
摘要:1.封装import java.util.Date;public class Human { protected String name; protected BirthDay birthDay; protected String sex; public St...
阅读全文
摘要:1.继承Thread public class TestThread extends Thread{ public void run(){ System.out.println(Thread.currentThread().getName()); } pub...
阅读全文
摘要:1.先上原理图2.说明两个mysql采用主主同步的方式进行部署。在安装mysql的服务器上安装客户端(目前是这么做,以后想在zookeeper扩展集成),客户端实时监控mysql应用的可用性,可用时想zookeepercreateNode,当网络不可用或者mysql应用不可用时,建立的znode消失...
阅读全文
摘要:1.接口public interface Hello { public void sayHello();}2.实例类public class Hello2 { public void sayHello() { System.out.println("hello world2...
阅读全文
摘要:采用zookeeper的命令服务,采用不同的目录结构存储不同模块不同服务的rmi的url,使用key来对应不同的服务。同时采用zookeeper解决了单点问题。当有两个相同的服务注册时,因为采用的是临时有序znode,也会注册成功,客户端在调用时,发现有多个不同url,则会随机调取一个使用。当一个服...
阅读全文
摘要:看一下百度的解释: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息 以及动态调用对象的方法的功能称为java语言的反射机制。 先看一下一个例子: 这是最简单的反射使用方法,通过反射来调用...
阅读全文
摘要:package com.tomsnail.data.tree;/** * AVL二叉平衡树 * @author tomsnail * @date 2015年3月30日 下午4:35:50 */public class AVLTree { /** * 根节点 * @aut...
阅读全文
摘要:Tomcat加载JSP主要有以下几个类:JspServletJspServletWrapperJspCompilationContextJspRuntimeContextJsperLoaderCompiler这几个类都在jasper.jar包中1.Tomat将http请求通过servlet转给Jsp...
阅读全文
摘要:我想大多数Java初学者都会遇到的问题,那就是怎么配置环境,执行java -jar xxx.jar 都会报NoClassDefFindError,我在最开始学习的时候,也遇到了这些问题。1.PATH path是路径的意思,我们直接在控制台运行一个程序时候,系统都会在指定的path下去找有没有这个程...
阅读全文