chengqiuming
码龄6年
  • 8,688,221
    被访问
  • 5,687
    原创
  • 16
    排名
  • 2,780
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2016-06-18
博客简介:

实践求真知

查看详细资料
  • 9
    领奖
    总分 16,050 当月 870
个人成就
  • 获得2,373次点赞
  • 内容获得973次评论
  • 获得10,073次收藏
创作历程
  • 263篇
    2022年
  • 881篇
    2021年
  • 528篇
    2020年
  • 1258篇
    2019年
  • 1247篇
    2018年
  • 1511篇
    2017年
  • 1篇
    2016年
成就勋章
TA的专栏
  • 架构师
    61篇
  • 产品经理
    112篇
  • Spring Cloud
    4篇
  • Nginx
    9篇
  • 面试题
    1篇
  • Spring Boot
    230篇
  • Mysql
    94篇
  • JVM
    282篇
  • Go
    189篇
  • 数据结构与算法
    146篇
  • 运维
    11篇
  • JSP
    111篇
  • MUI
    3篇
  • uni-app
    17篇
  • CSS
    2篇
  • Servlet
    31篇
  • JavaWeb
    23篇
  • java
    756篇
  • 思维导图视频代码揭秘shiro
    15篇
  • 思维导图视频代码揭秘RabbitMQ
    12篇
  • Shiro
    14篇
  • RabbitMQ
    27篇
  • Activiti
    21篇
  • 微服务
    353篇
  • 高斯数据库
    1篇
  • python
    320篇
  • spring
    136篇
  • 设计模式
    71篇
  • Spring Security
    10篇
  • 软件工程与软件架构
    34篇
  • Gradle
    11篇
  • Vue
    151篇
  • IT
    2篇
  • Hibernate
    150篇
  • Struts
    120篇
  • MyBatis
    53篇
  • Openstack
    262篇
  • Linux
    239篇
  • PHP
    205篇
  • C++
    179篇
  • 安全
    187篇
  • JavaScript
    164篇
  • Django
    105篇
  • 人工智能
    91篇
  • Docker
    84篇
  • 爬虫
    62篇
  • Highcharts
    58篇
  • Oracle
    58篇
  • HTML5
    56篇
  • Hadoop
    52篇
  • Neutron
    48篇
  • 网络
    52篇
  • Bootstrap
    44篇
  • Redis
    49篇
  • storm
    37篇
  • Hive
    34篇
  • 软能力
    41篇
  • MongoDB
    30篇
  • Scala
    18篇
  • maven
    23篇
  • Git
    17篇
  • Spring MVC
    62篇
  • Spark
    14篇
  • UML
    13篇
  • kafka
    10篇
  • XML
    9篇
  • Hbase
    9篇
  • zookeeper
    9篇
  • AngularJS
    9篇
  • Quartz
    10篇
  • flume
    9篇
  • Splash
    9篇
  • IDE
    30篇
  • Lua
    2篇
  • sqoop
    1篇
  • SQL Server
    1篇
  • DevOps
    2篇
  • RESTful
    1篇
  • 单元测试
    1篇
  • Android
    7篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

使用 Netty 实现基于 CS 架构的 WebSocket 功能

一点睛WebSocket是HTML5的一种协议,它可以实现浏览器与服务器全双工通信。Websocket是应用层第七层上的一个应用层协议,它必须依赖HTTP协议进行一次握手,握手成功后,数据就可以直接使用TCP 通道传输,之后就与HTTP无关。简单地讲,开始握手需要借助HTTP请求完成,之后就会升级为WebSocket协议。本篇开发一个基于WebSocket协议的长连接通信。采用Netty作为长连接的服务端,使用浏览器作为客户端,二者交互图如下。二服...
原创
发布博客 3 小时前 ·
6 阅读 ·
0 点赞 ·
0 评论

使用 Netty 实现心跳检测机制

一 点睛一般是通过心跳机制来检测长连接的状态。Netty 是通过 IdleStateHandler 来实现心跳机制,每隔一段时间,就向远端发出一次心跳,用于检测远端是否处于活动状态。二 实战1 主程序类package netty.heartbeat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.EventLoopGroup
原创
发布博客 4 小时前 ·
6 阅读 ·
0 点赞 ·
0 评论

使用 Netty 远程传输文件

一点睛Netty作为NIO框架,自然支持文件传输功能。本篇演示如何使用Netty进行远程发送文件。二待发送的文件package netty.file;import java.io.File;import java.io.Serializable;/** * @className: MySendFile * @description: 待发送的文件 * @date: 2022/5/28 * @author: cakin */public class MySen...
原创
发布博客 4 小时前 ·
6 阅读 ·
0 点赞 ·
0 评论

使用 Netty 实现服务端和客户端的点对多点通信——聊天室功能

一 需求1 监听所有客户端的上线和下线。2 将某一个客户端的上线和离线情况,转告给其他客户端“客户端XX上/下线”3 客户端先将消息发送给服务端,服务端再将此消息转发给所有客户端(包括发送者自己),如果其他客户端接收到了此消息,则显示“【某ip】发送的消息:XXX”;如果是自己接收到了此消息,则消息“【我】发送的消息:XXX”二 服务端1 主程序类package netty.socket;import io.netty.bootstrap.ServerBootstrap;im
原创
发布博客 21 小时前 ·
39 阅读 ·
1 点赞 ·
0 评论

使用 Netty 实现点对点的通信

一服务端1主程序package netty.socket;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.nio.NioServerSocke..
原创
发布博客 21 小时前 ·
13 阅读 ·
0 点赞 ·
0 评论

Netty 编写流程和服务端开发实战

一Netty的核心概念Netty是由JBOSS开源的一款NIO网络编程框架,可用于快速开发网络应用。netty.io官网中对Netty的介绍是“Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发高性能的服务端和客户端”。总的来说,Netty是一个基于NIO和可扩展的事件模型的客户端和服务端框架,可以极大地简化基于TCP、UDP等协议的网络服务。并且Netty对于各种传输类型(阻塞或非阻塞式Socket)及通信方式(HTTP或WebSocket)...
原创
发布博客 前天 21:25 ·
21 阅读 ·
0 点赞 ·
0 评论

编码解码实战

一对字符串进行编码和解码操作1代码public static void test21() throws CharacterCodingException { Charset charset = Charset.forName("utf-8"); // 获取 utf-8 编码器 CharsetEncoder charsetEncoder = charset.newEncoder(); // 获取 utf-8 解码器 CharsetDecoder chars..
原创
发布博客 2022.05.24 ·
23 阅读 ·
0 点赞 ·
0 评论

编码解码原理和历史问题

一点睛平时在编程时,会遇到各种各样的编码和解码,那么为什么有这么不同的编码类型呢?程序最终都是通过字节码的形式存储在硬盘文件上,而字节码就是byte数组。因此编码就是将人类眼睛所能看到的字符串,转为字节数组,即String转为byte[];反之,解码就是将字节数组转为字符串,即byte[]转为String。之所以会出现各种类型编码类型,其实是一个历史问题。在计算机发展初期,美国等少数国家最先给自己的语言设置一套编码,即ASCII。由于这些国家使用的都是英语,而英语只需要26...
原创
发布博客 2022.05.24 ·
28 阅读 ·
0 点赞 ·
0 评论

使用 AIO 完成网络通信

一需求使用AsynchronousServerSocketChannel搭建服务端,使用AsynchronousSokectChannel搭建客户端,完成客户端和服务端的一次通信。二实战1服务端代码package aio;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.AsynchronousServerSocketChannel;import...
原创
发布博客 2022.05.24 ·
30 阅读 ·
0 点赞 ·
0 评论

异步非阻塞式数据传输——AIO的两种实现方式

一点睛AIO是自JDK1.7开始提供,本质是对NIO中Channel进行的一些扩展,因此AIO也称为NIO.2。具体地讲,AIO就是在NIO的基础上,新增加了下表的3个Channel实现类,这3个类也称为异步通道。 异步通道 简介 AsynchronousFileChannel 用于文件的异步读写 AsynchronousServerSocketChannel ...
原创
发布博客 2022.05.24 ·
31 阅读 ·
0 点赞 ·
0 评论

NIO 中多缓冲区实战

一点睛在scatter-and-gather场景下,可以将数据写入多个Buffer中。在NIO中,也能够同时操作多个缓冲区。在很多Channel实现类中,都提供了多个重载的read()和write()方法,下表介绍了SocketChannel的read()和write()方法。1read的重载方法 read()的重载方法 简介 intread(ByteBufferdst) ...
原创
发布博客 2022.05.23 ·
37 阅读 ·
0 点赞 ·
0 评论

通过选择器 Selector 开发高性能聊天室

一点睛选择器(Selector)的核心作用:可以在一个选择器上注册多个通道,并且可以通过选择器切换使用这些通道。如果不使用选择器,服务端的I/O代码,会给每个客户端创建一个新线程,也就是用N个线程去处理N个客户端请求。因此,如果有1万个客户请求,就会创建1万个线程,这显然是不合理地。而NIO处理这种问题的思路是,用一个线程处理全部请求,并通过Selector切换处理不同的请求通道。二实战1需求使用NIO实现一个聊天室功能。要求如下:服务端启动后可以接...
原创
发布博客 2022.05.23 ·
0 阅读 ·
0 点赞 ·
0 评论

NIO 规范读写工具——管道 Pipe

一 点睛两个线程之间单向传递数据时,可以使用 Pipe 规范数据的读写操作。Pipe 中可以存放数据,并且 Pipe 包含了 SinkChannel 和 SourceChannel 两个 Channel。其中,SinkChannel 用于向 Pipe 中写数据,SourceChannel 用于从 Pipe 中读数据。二 代码public static void testPipe() throws IOException { //创建管道 Pipe pipe = Pipe
原创
发布博客 2022.05.23 ·
7 阅读 ·
0 点赞 ·
0 评论

使用 NIO 完成对资源加锁

一点睛给某一个文件加锁,防止并发访问时引起的数据不安全。在JUC中,可以使用synchronized、Lock给共享的资源加锁,或者使用volatile、CAS算法等防止并发冲突。在 FileChannel中也提供了类似Lock的加锁方式。public abstract FileLock lock(long position, long size, boolean shared) throws IOException;shared参数说明。true:共享锁。实际...
原创
发布博客 2022.05.21 ·
54 阅读 ·
0 点赞 ·
0 评论

使用 NIO 实现“客户端向服务端发送文件”功能

一服务端代码public static void server() throws IOException { ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); FileChannel outFileChannel = FileChannel.open(Paths.get("g:\
avicat1.chm"), StandardOpenOption.WRITE, StandardOpenOpti.
原创
发布博客 2022.05.21 ·
20 阅读 ·
0 点赞 ·
0 评论

直接缓冲区实战

一在直接缓冲区对文件进行修改1 需求在直接缓冲区,使用MappedByBuffer修改文件内容。2 代码public static void test4() throws IOException { RandomAccessFile raf = new RandomAccessFile("G:\\abc.txt", "rw"); FileChannel fileChannel = raf.getChannel(); // mappedByteBuffer:代表...
原创
发布博客 2022.05.21 ·
15 阅读 ·
0 点赞 ·
0 评论

通过零拷贝实现高性能文件传输

一 点睛对于缓冲区,有操作“直接缓冲区”和操作“非直接缓冲区”两种方式。1 使用非直接缓冲区进行文件读写2 使用直接缓冲区进行文件读写3 注意a 零拷贝是指用户空间与内核空间之间的复杂次数,并不代表内核空间内部也不存在复制。b 数据的复制会涉及 I/O 操作,而 I/O 操作是由操作系统完成的,因此零拷贝既减少了数据的复制次数,又降低了 CPU 的负载压力。二 实战1 说明在直接缓冲区,使用内存映射文件,并借助 Channel 完成文件的复制。2 代码p
原创
发布博客 2022.05.19 ·
32 阅读 ·
0 点赞 ·
0 评论

Spring 多数据源配置

一配置文件1修改前# Specify datasourcespring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://XXXX:3306/zzzzz?useUnicode\=true&characterEncoding\=UTF-8spring.datasource.username=XXXXspring.datasource.password=XXXX..
原创
发布博客 2022.05.19 ·
115 阅读 ·
0 点赞 ·
0 评论

同步 EDA 框架设计

一点睛1Message在基于Message的系统中,每一个Event也可以被称为Message,Message是对Event更高一个层级的抽象,每一个Message都有一个特定的Type用于与对应的Handler做关联。它是一种数据。2ChanelChange用于接收来自EventLoop分配的消息,每一个 Channel负责处理一种类型的消息。它是对数据的处理。3DynamicRouter它的作用类似于EventLoop,其主要是帮...
原创
发布博客 2022.05.18 ·
49 阅读 ·
0 点赞 ·
0 评论

缓冲区的搬运工——通道 Channel

一点睛通道用于数据的双向传输,即一个通道既可以用于读数据,又可以用于写数据。注意,这点不同于I/O中的Stream,Stream是单向的(只能是输入流或输出流)。在NIO中,就是使用“缓冲区+通道”进行数据的传输。具体地讲,就是使用通道对缓冲区、文件或套接字进行数据传输。可以把缓冲区理解为“池塘”,把通道理解为“排水管”。NIO中的Channel(通道)是一个接口,有以下几种常见的实现类。 FileChannel SocketChannel S...
原创
发布博客 2022.05.17 ·
75 阅读 ·
0 点赞 ·
0 评论
加载更多