随笔分类 - Java
摘要:TCP粘包拆包问题 我没什么网络编程经验,但在之前在开发VPad的时候也发现了这个问题。 VPad基于流式的、BIO的SocketAPI进行通信,我需要在客户端和服务器之间发送一些代表MIDI或控制信息的消息,就像这样: 其中,头一个字节中的2代表这是一个midi消息,第二个字节note代表按下的音
阅读全文
摘要:Selector用于将一组Channel的事件发生聚合在一个(确切的说不是一个,但不妨先这样理解)线程中进行处理,还是先介绍它相关组件的抽象结构。 通道和选择器 通道和选择器的关系是,通道注册一部分事件到选择器中,然后用户可以通过选择器对其中所有的通道注册事件进行监听,事件发生,选择器就会接收到。
阅读全文
摘要:原文Behind the scenes: How do lambda expressions really work in Java? 作者:Ben Evans 通过字节码查看Java如何处理lambda lambda在Java代码中和JVM中式什么样的?显然,它是某种类型的值,Java允许两种类型
阅读全文
摘要:前置知识:NIO——Channel接口关系 AbstractInterruptibleChannel 从上一篇笔记上也可以看出,Java的NIO规定了一堆Channel的接口,它们有很多自己的约定,如果不创建一堆抽象类供后面的Channel实现类使用,那么所有Channel都要自己实现那些约定,所以
阅读全文
摘要:Channel代表Java和一个IO设备之间交换数据的通道,而Buffer代表装载这些数据的器具。 Channel类有很复杂的接口关系,这篇文章主要介绍Channel类的接口关系。 AutoCloseable和Closeable 这两个接口和NIO没关系,它们只是代表可关闭的对象。 java.lan
阅读全文
摘要:Buffer是Java NIO技术中的一个组件,简单来说它就是一个缓冲区,但它比我们自己编写的byte[] buf具有更多功能,甚至还支持堆外的直接内存分配,比较适用于大型数据的传输。 本笔记只记录Buffer中我觉得不太熟悉的API。 mark 调用mark时,当前Buffer的位置被记下,等调用
阅读全文
摘要:想学Netty,所以先学下一直也没开始学的NIO。 传统的同步阻塞模型 下面是类似Java的伪代码编写的基于Java传统BIO的socket服务程序: while(true) { sock = serverSocket.accept(); // 请求到来前阻塞 ins = sock.getInput
阅读全文
摘要:起源 嘶。。。 期末有一个作业是要把老师给的四个JavaWeb程序在电脑上运行起来,这倒没什么难的,关键是这四个项目里很多地方编码解码不统一,导致很多地方都乱码。 昨天检查作业,有个漂亮姐姐运行项目的时候出了编码问题,此前在寝室已经解决了这四个项目中大部分编码问题的我非常自信的就过去了,然后...可
阅读全文
摘要:概述 JUnit5包含三个模块,JUnit Platform、JUnit Jupiter、JUnit Vintage JUnit Platform 提供JVM上的基础启动测试框架,定义TestEngine API,提供命令行启动,技工基于JUnit4的Runner JUnit Jupiter 对于编
阅读全文
摘要:问题:想在IDEA中引用相对路径,但是找不到文件。 项目目录结构 当前项目的路径为:D:\source\java\test\ 项目结构如下 当前路径 面对无法使用相对路径找到资源文件的问题,首先想到的解决办法是先瞄一眼IDEA在执行时给Java环境设定的当前路径在哪,也就是说看看我们在使用相对路径时
阅读全文
摘要:对于所有对象都通用的方法 Object类中有很多通用方法,比如equals、toString、hashCode,还有实现了Comparable的类,它们的方法都有明确的约定,如果你想你的类能与其他类良好的工作在一起,请遵守这些约定。 覆盖equals方法 其实很多时候equals方法根本不需要被覆盖
阅读全文
摘要:前言 本篇笔记是《Effective Java》一书的笔记。 有一定Java基础和设计模式基础的可以观看。嘻嘻。 用静态工厂代替构造器 如果你在设计一个类,你不知道该给你的类的使用者使用构造器还是静态工厂方法,大部分时候,静态工厂方法要比构造器更正确。 静态工厂方法能够带来很多好处。 静态工厂有名称
阅读全文
摘要:概述 100%JVM教程或者是书上都会有这张图。。。 啊,,,,这是JVM运行时的内存结构。很多Java基础教程都会提到Java中的堆和栈,但实际上Java的运行时内存结构要更为复杂一些。这里我只介绍堆,剩下的后面再说。 堆 大部分Java学习者都听过类似“栈内存中保存变量的引用,堆内存保存变量的实
阅读全文
摘要:废话 最近把《深入理解JVM原理》看完了,这种书理论性太强了,我怕不写点什么我自己过两天就忘了,写来加深印象。 概述 100%JVM教程或者是书上都会有这张图。。。 啊,,,,这是JVM运行时的内存结构。很多Java基础教程都会提到Java中的堆和栈,但实际上Java的运行时内存结构要更为复杂一些。
阅读全文
