java
文章平均质量分 56
chengqiuming
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Element UI + Easypoi + spring boot 完成文件上传和下载
Element UI + Easypoi + spring boot 完成文件上传和下载原创 2023-03-23 18:48:25 · 806 阅读 · 1 评论 -
省市区三级联动 el-select 组件后端实现
省市区三级联动 el-select 组件后端实现原创 2023-02-19 19:33:41 · 799 阅读 · 0 评论 -
省市区三级联动选择组件后端实现
省市区三级联动选择组件后端实现。原创 2023-02-15 19:25:07 · 672 阅读 · 0 评论 -
Sharding-JDBC 按年份水平分表
水平分表原创 2023-01-31 15:20:25 · 1526 阅读 · 0 评论 -
优先级队列中的 comparator() 的用法
Java原创 2022-08-27 14:06:37 · 707 阅读 · 0 评论 -
电话网络问题
Network - POJ 1144 - Virtual Judgehttps://vjudge.net/problem/POJ-1144输入包含多个测试用例。每个测试用例都描述一个网络。每个测试用例的第 1 行都是 N。接下来最多 N 行中每一行都包含一个地点的编号,后面是该地方可以直达的地点编号。每个测试用例都以一条仅包含0的行结束。N=0时输入结束,不处理。对每个测试用例,都单行输出关键位置的数量。1 输入样例1,构建的图如下。在该图中有1个关键点5。2 输入样例2,构建的图如下。在该图中有两个关键原创 2022-07-02 16:52:30 · 328 阅读 · 0 评论 -
理想路径问题
给定一个有 n 个节点,m 条边的无向图,每边都涂有1种颜色。求节点1到n的一条路径,使得经过的边数最少,在此前提前,经过边的颜色序列最小。可能有自环和重边。输入共 m+1 行,第1行包括两个整数:m和n。之后的m行,每行都包含3个整数a、b、c,表示a和b之间有一条颜色为c的路径。输出共两行,第1行包含正整数k,表示节点1到n至少需要经过k条边。第2行包含k个由空格隔开的正整数,表示节点1到n经过的边的颜色。节点1到4至少经过两条边:1 > 3,颜色为1(最后输入的那条边);3 > 4,颜色为3。本问题求原创 2022-06-26 10:26:16 · 590 阅读 · 0 评论 -
核查医药代表备案信息是否正确
医药代表备案平台首页-医药代表备案平台该平台可通过备案号查询,也可通过药品上市许可持有人和医药代表姓名进行组合查询。如果反复查询会禁用IP,每天查询信息量很少。可通过 API 调用加伪造HTTP请求IP地址技术去实现大量药代备案信息查询。具体实现如下。2 IP工具类三 测试...原创 2022-06-10 18:25:10 · 1796 阅读 · 0 评论 -
Java实现按天轮询关注省
二 测试原创 2022-06-08 11:46:46 · 303 阅读 · 0 评论 -
高德地图有用的API
只取 level 为兴趣点的经纬度原创 2022-06-06 18:38:48 · 840 阅读 · 0 评论 -
gRPC 实战之——客户端为 Stream,服务端为 Stream
根据 id 查 name三 编写接口实现类四 编写服务端代码五 编写客户端代码六 测试1 启动服务端2 启动客户端3 服务端打印4 客户端打印原创 2022-06-05 17:12:12 · 1870 阅读 · 0 评论 -
gRPC 实战之——客户端为 Stream,服务端为 Response
根据课程名查询学生。三 编写接口实现类四 编写服务端代码五 编写客户端代码六 测试1 启动服务端2 启动客户端3 服务端打印4 客户端打印原创 2022-06-05 16:53:36 · 789 阅读 · 0 评论 -
gRPC 实战之——客户端为 Request,服务端为 Stream
根据课程名查询学生。三 编写接口实现类四 编写服务端代码五 编写客户端代码六 测试1 启动服务端和客户端2 客户端运行结果如下原创 2022-06-05 16:50:09 · 1346 阅读 · 0 评论 -
gRPC 实战之——客户端为 Request,服务端为 Response
二 编写接口实现类三 编写服务端代码四 编写客户端代码五 测试1 启动服务端和客户端2 服务端打印如下3 客户端打印如下六 冲突解决GRPC-Server报错服务端启动com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava异常解决方案_时间是一种解药的博客-CSDN博客https://blog.csdn.net/cucgyfjklx/article/de原创 2022-06-04 11:40:41 · 844 阅读 · 0 评论 -
Google gRPC 编写的注意事项
pom 文件可从官方提供的 example 中的 pom 文件中提取。官方提供如下。从这份文件中,我们可以获得以下两点。实际上,gRPC 可以使用3种技术来实现数据的网络传输:Netty、OKHttp 和 inProcess。Protobuf 使用 protoc.exe 对消息进行编码和解码,但不能通过网络传输数据;gRPC 为了弥补这个缺陷,提供了一个自己编译插件 generateProto。如果使用 Maven 工具进行构建,可以参考 https://github.com/grpc/grpc-ja原创 2022-06-04 11:36:22 · 359 阅读 · 0 评论 -
Google gRPC 入门案例实战
Protobuf 可以对消息进行编码和解码,但必须借助 Netty 等通信技术才能进行传输消息。Google 公司将 Protobuf 和 Netty 进行了结合,并在此基础上开发了一歀新的高性能的 RPC 框架——gRPC。gRPC 是基于 HTTP/2 协议标准的,不过 HTTP/2 完全兼容 HTTP/1 的语义,因此在开发时,不用担心两种协议之间的差异。1 访问 GitHub - grpc/grpc-java: The Java gRPC implementation. HTTP/2 based R原创 2022-06-04 08:16:46 · 566 阅读 · 0 评论 -
使用 Thrift 实现 Java 和 NodeJS 之间的跨语言RPC调用
并将这两个文件复制到 node 项目下四 使用 NodeJs 开发 Thrift 的客户端编写完后的项目结构如下:Java 服务端打印如下NodeJs 客户端打印如下客户端打印如下服务端打印如下原创 2022-06-03 15:59:57 · 593 阅读 · 0 评论 -
Apache Thrift 实战
通过 IDL(.thrift 文件)定义数据结构、异常和接口等数据,供各种编程语言使用五 编写服务端启动类六 编写客户端编写客户端代码,用于和服务端之间进行 RPC 调用。需要注意,客户端和服务端所使用的传输方式和传输协议必须保持一致。七 测试1 先启动服务端,整个过程服务端打印如下2 再启动客户端,整个过程客户端打印如下...原创 2022-06-03 15:03:26 · 787 阅读 · 0 评论 -
Apache Thrift 介绍
Thrift 是一歀基于 CS 架构的 RPC 框架,最初由 Facebook 研发,2008 年转入 Apache 组织。开发人员可以使用 Thrift 提供的 IDL(接口定义语言)来定义数据结构、异常和接口。IDL 的功能类似 Protobuf 的 message,但 message 只能用于定义数据结构,因此 IDL 比 message 功能更加强大。编写完 IDL 后,就可以通过 Thrift 提供的工具生成各种语言的数据结构(比如 Java 中的类,C 语言中的结构体等)、异常和接口文件。Thr原创 2022-06-03 14:27:22 · 1765 阅读 · 0 评论 -
proto 文件中定义多个消息
可以在 proto 中定义多个类,然后从中选择任意一个类,可以在 proto 中定义多个 message,然后再将多个 message 以枚举的形式供使用时选择。1 MyMessage.proto2 客户端MyNettyClientTestMyNettyClientInitializerMyNettyClientHandler3 服务端MyNettyServerTestMyNettyServerInitializerMyNettyServerHandler三 测试1 先启动服务端2 再启动客户端zs--23原创 2022-06-03 14:24:28 · 538 阅读 · 0 评论 -
proto 文件中定义多个消息
proto 文件中定义多个消息原创 2022-06-02 21:57:00 · 543 阅读 · 0 评论 -
求某个医院的近似经纬度
求某个医院的近似经纬度原创 2022-06-02 09:19:31 · 259 阅读 · 0 评论 -
检查身份证是否合法
检查身份证是否合法原创 2022-06-01 15:04:13 · 598 阅读 · 0 评论 -
使用 Netty + Protobuf 开发自定义的 RPC 功能
一点睛RPC是指一个节点通过网络请求另一个节点提供的服务,这里所说的“提供的服务”可以具体化为“提供的方法”或“提供的属性”。本篇实现一个最简单的RPC功能:调用的双方都是采用Java语言编写,并且调用的服务是远程提供的“属性”。二实战1将message以规定的语法结构编写到Student.proto文件中。netty\protobuf\Student.protosyntax = "proto2" ;package netty.protobuf ;o...原创 2022-06-01 15:02:15 · 505 阅读 · 0 评论 -
Google Protocol Buffer 环境搭建与使用案例
一下载protoc工具protoc的下载地址:https://dbojg6dv.fast-github.tk/-----https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.0下载文件:protoc-3.6.0-win32.zip下载完后,将protoc.exe加入到环境变量中。二相关依赖<dependency><groupId>com.google.protobuf...原创 2022-05-29 20:28:29 · 636 阅读 · 0 评论 -
使用 Netty 实现基于 CS 架构的 WebSocket 功能
一点睛WebSocket是HTML5的一种协议,它可以实现浏览器与服务器全双工通信。Websocket是应用层第七层上的一个应用层协议,它必须依赖HTTP协议进行一次握手,握手成功后,数据就可以直接使用TCP 通道传输,之后就与HTTP无关。简单地讲,开始握手需要借助HTTP请求完成,之后就会升级为WebSocket协议。本篇开发一个基于WebSocket协议的长连接通信。采用Netty作为长连接的服务端,使用浏览器作为客户端,二者交互图如下。二服...原创 2022-05-29 09:18:42 · 545 阅读 · 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...原创 2022-05-29 08:23:21 · 3857 阅读 · 1 评论 -
使用 Netty 实现服务端和客户端的点对多点通信——聊天室功能
一 需求1 监听所有客户端的上线和下线。2 将某一个客户端的上线和离线情况,转告给其他客户端“客户端XX上/下线”3 客户端先将消息发送给服务端,服务端再将此消息转发给所有客户端(包括发送者自己),如果其他客户端接收到了此消息,则显示“【某ip】发送的消息:XXX”;如果是自己接收到了此消息,则消息“【我】发送的消息:XXX”二 服务端1 主程序类package netty.socket;import io.netty.bootstrap.ServerBootstrap;im原创 2022-05-28 15:38:29 · 938 阅读 · 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..原创 2022-05-28 15:33:47 · 520 阅读 · 0 评论 -
Netty 编写流程和服务端开发实战
一Netty的核心概念Netty是由JBOSS开源的一款NIO网络编程框架,可用于快速开发网络应用。netty.io官网中对Netty的介绍是“Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发高性能的服务端和客户端”。总的来说,Netty是一个基于NIO和可扩展的事件模型的客户端和服务端框架,可以极大地简化基于TCP、UDP等协议的网络服务。并且Netty对于各种传输类型(阻塞或非阻塞式Socket)及通信方式(HTTP或WebSocket)...原创 2022-05-27 21:25:33 · 962 阅读 · 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 17:50:02 · 344 阅读 · 0 评论 -
编码解码原理和历史问题
一点睛平时在编程时,会遇到各种各样的编码和解码,那么为什么有这么不同的编码类型呢?程序最终都是通过字节码的形式存储在硬盘文件上,而字节码就是byte数组。因此编码就是将人类眼睛所能看到的字符串,转为字节数组,即String转为byte[];反之,解码就是将字节数组转为字符串,即byte[]转为String。之所以会出现各种类型编码类型,其实是一个历史问题。在计算机发展初期,美国等少数国家最先给自己的语言设置一套编码,即ASCII。由于这些国家使用的都是英语,而英语只需要26...原创 2022-05-24 17:47:08 · 456 阅读 · 0 评论 -
使用 AIO 完成网络通信
一需求使用AsynchronousServerSocketChannel搭建服务端,使用AsynchronousSokectChannel搭建客户端,完成客户端和服务端的一次通信。二实战1服务端代码package aio;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.AsynchronousServerSocketChannel;import...原创 2022-05-24 17:44:33 · 354 阅读 · 0 评论 -
异步非阻塞式数据传输——AIO的两种实现方式
一点睛AIO是自JDK1.7开始提供,本质是对NIO中Channel进行的一些扩展,因此AIO也称为NIO.2。具体地讲,AIO就是在NIO的基础上,新增加了下表的3个Channel实现类,这3个类也称为异步通道。 异步通道 简介 AsynchronousFileChannel 用于文件的异步读写 AsynchronousServerSocketChannel ...原创 2022-05-24 17:40:56 · 1392 阅读 · 0 评论 -
NIO 中多缓冲区实战
一点睛在scatter-and-gather场景下,可以将数据写入多个Buffer中。在NIO中,也能够同时操作多个缓冲区。在很多Channel实现类中,都提供了多个重载的read()和write()方法,下表介绍了SocketChannel的read()和write()方法。1read的重载方法 read()的重载方法 简介 intread(ByteBufferdst) ...原创 2022-05-23 18:47:34 · 321 阅读 · 0 评论 -
通过选择器 Selector 开发高性能聊天室
一点睛选择器(Selector)的核心作用:可以在一个选择器上注册多个通道,并且可以通过选择器切换使用这些通道。如果不使用选择器,服务端的I/O代码,会给每个客户端创建一个新线程,也就是用N个线程去处理N个客户端请求。因此,如果有1万个客户请求,就会创建1万个线程,这显然是不合理地。而NIO处理这种问题的思路是,用一个线程处理全部请求,并通过Selector切换处理不同的请求通道。二实战1需求使用NIO实现一个聊天室功能。要求如下:服务端启动后可以接...原创 2022-05-23 18:28:28 · 312 阅读 · 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 18:26:37 · 226 阅读 · 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 09:33:39 · 341 阅读 · 0 评论 -
使用 NIO 实现“客户端向服务端发送文件”功能
一服务端代码public static void server() throws IOException { ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); FileChannel outFileChannel = FileChannel.open(Paths.get("g:\\navicat1.chm"), StandardOpenOption.WRITE, StandardOpenOpti.原创 2022-05-21 09:29:20 · 507 阅读 · 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 08:33:17 · 213 阅读 · 0 评论
分享