NIO 基础
源码可下载源码路径:https://github.com/coder-xuyong/netty 1. 三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层 123graph LRchannel --> bufferbuffer --> channel 常见的 Channel 有 FileChannel DatagramChannel SocketChannel ServerSocketChannel buffer 则用来缓冲读写数据,常见的 buffer 有 ByteBuffer MappedByteBuffer DirectByteBuffer HeapByteBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer Ch...
Netty 入门
1. 概述1.1 Netty 是什么?12Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients. Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端 1.2 Netty 的作者 他还是另一个著名网络应用框架 Mina 的重要贡献者 1.3 Netty 的地位Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开发中的地位 以下的框架都使用了 Netty,因为它们有网络通信需求! Cassandra - nosql 数据库 Spark - 大数据分布式计算框架 Hadoop - 大数据分布式存储框架 RocketMQ - ali 开源的消息队列 ElasticSearch - 搜索引擎 gRPC - rpc 框架 Dubbo - rpc 框架 ...
Netty 进阶
Netty 进阶 1. 粘包与半包1.1 粘包现象服务端代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioEventLoopGroup(); try { ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.channel(NioS...
优化与源码
优化与源码 1. 优化1.1 扩展序列化算法序列化,反序列化主要用在消息正文的转换上 序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[]) 反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理 目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下 1234567891011// 反序列化byte[] body = new byte[bodyLength];byteByf.readBytes(body);ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(body));Message message = (Message) in.readObject();message.setSequenceId(sequenceId);// 序列化ByteArrayOutputStream out = new ByteArrayOutputStream();new ObjectOutputStream(...
django 使用过程中发生的问题
在工作中遇到了 django 框架,记录一些使用过程中遇到的问题 django 为何 只允许127.0.0.1 访问服务,电脑的实际ip确不行Django服务默认只允许从127.0.0.1(也被称为本地回环地址或localhost)访问,这通常是因为Django的设置文件中ALLOWED_HOSTS配置的限制。为了允许电脑的实际IP地址访问Django服务,需要进行以下几步操作: 1. 修改ALLOWED_HOSTS设置:Django的settings.py文件中有一个ALLOWED_HOSTS配置,它指定了哪些主机名或IP地址可以访问Django服务。默认情况下,它可能只包含[‘localhost’]或[‘127.0.0.1’]。要允许电脑的实际IP地址访问,你需要将ALLOWED_HOSTS修改为包含你的实际IP地址,或者设置为[‘‘](注意:’‘允许所有IP地址访问,但出于安全考虑,通常不推荐在生产环境中使用)。例如: 123ALLOWED_HOSTS = ['你的实际IP地址'] # 只允许指定IP访问 # 或者 ALLOWED_HOST...
工作中遇到的 shell
工作中遇到有关 shell 脚本的情景和处理记录 1、脚本启动停止jar包,并生成日志文件start.bat 1234@echo off%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exitjava -jar 包名.jar >StartupLog.log 2>&1 &exit 其中,StartupLog.log 是日志文件 stop.bat 123@echo offset port=程序端口号for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /f /pid %%m 原文链接:https://blog.csdn.net/weixin_47148475/article/details/126747188 2、上面...
计算机网络
计算机网络学习笔记 1.计算机网络概述1.1.互联网的构成网络:(Network)由若干节点(Node)和连接这些节点的链路(Link)组成 网络边缘:位于互联网边缘与互联网相连的计算机和其他设备,如桌面计算机、移动计算机、服务器、其他智能终端设备 网络核心:由互联端系统的分组交换设备和通信链路构成的网状网络 如:分组交换路由器、链路层交换机、通信链路(光纤、铜缆、无线电、激光链路) 网络: 1.2.网络分类1.2.1.按覆盖范围分类个域网PAN( Personal Area Network) 能在便携式消费电器与通信设备之间进行短距离通信的网络 覆盖范围一般在10米半径以内,如蓝牙耳机等 局域网LAN(Local Area Network) 局部地区形成的区域网络,如企业网络 分布地区范围有限,可大可小,大到一栋建筑、小到办公室内的组网 电脑WLAN接入,打印机共享等等 城域网MAN(Metropolitan Area Network ) 范围覆盖一个城市的网络 广域网WAN(Wide Area Network) 覆盖很大地理区域,乃至覆盖地区和...
shell 基础知识
入门 shell 脚本的基础知识 1、@echo off 回显:这条命令后的内容显示到控制台上。 新建一个文件:test_echooff.bat,输入如下内容 12345678@echo offecho 这是测试内容的第1行echo 这是测试内容的第2行echo 这是测试内容的第3行echo endpause 如果乱码,另存为,设置ANSI编码,重新运行。 修改文件内容,将其中的@ 符号去掉,内容如下: 12345678echo offecho 这是测试内容的第1行echo 这是测试内容的第2行echo 这是测试内容的第3行echo endpause echo off执行以后,后面所有的命令均不显示,但本条命令是显示的。 继续修改文件内容,将第一条命令注释掉,内容如下: 12345678::echo offecho 这是测试内容的第1行echo 这是测试内容的第2行echo 这是测试内容的第3行echo endpause 结果就是在cmd 回显了echo off后面的命令。 总结:@echo off表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显。而e...
modbus 基础
1.什么是modbus?顾名思义,它是一个Bus,即总线协议。比如串口协议、IIC协议、SPI都是通信协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。 Modbus通讯物理接口可以选用串口(包括RS232、RS485和RS422),也可以选择以太网口。其通信遵循以下的过程: 主设备向从设备发送请求 从设备分析并处理主设备的请求,然后向主设备发送结果 如果出现任何差错,从设备将返回一个异常功能码 归纳:就是免费+简单+方便修改!Modbus就是一种用在工业上的简单协议! 2.modbus 包括些什么?大致细分为以下三种情况: Modbus-RTU Modbus-ASCII Modbus-TCP 一个设备只会有一个协议,只需要看对应的部分即可。 2.1.modbus 的通讯方式 以太网:对应的通信模式是Modbus TCP/IP 异步串行传输(各种介...
linux 上常用操作
在工作中遇到的有关Linux的问题 ifconfig 个字段的含义此linux服务器为:kylin 接口名称 类型 用途 enp180s0f2 物理以太网接口 物理网络连接 enp25s0f0 物理以太网接口 物理网络连接 vethd989592 虚拟以太网接口对 容器/虚拟机网络通信 vethdc1bcea 虚拟以太网接口对 容器/虚拟机网络通信 virbr0 虚拟网桥 虚拟机NAT网络 关闭防火墙以下是图片内容转换成的可复制Markdown格式: 命令行界面输入命令 systemctl status firewalld.service 并按下回车键。 在下方查看输出结果,若显示 active (running),说明防火墙已开启。 输入关闭防火墙命令: 1systemctl stop firewalld.service 再次检查防火墙状态: 1234567 systemctl status firewalld.service ``` 若出现 `inactive (dead)`,说明防火墙...