项目
文章平均质量分 93
包含后端,基础框架等各种项目
锥栗
这个作者很懒,什么都没留下…
展开
-
【数据结构】【项目】BitMap?40亿电话号码如何快速去重?
40亿电话号码如何快速去重?我们往往会想到bitmap数据结构中的 Bitmap 是一种位图索引非常高效的数据结构,用于存储处理大规模数据的位信息,其中每个位对应于一个元素,如果位为1,则表示该元素存在于集合中,否则表示不存在。如果要表示一个包含 10 个元素的数据集,可以创建一个包含 10 位的位数组。Bitmap 支持插入和查找。插入操作将对应位置的位从 0 设置为 1,将元素添加到数据集中。查找操作通过检查相应位置的位来确定元素是否存在于数据集中。如果位为 1,表示元素存在;原创 2023-09-13 09:58:06 · 1081 阅读 · 2 评论 -
【maven】自定义构建maven的jar包依赖
Maven 是一个开源的项目管理和构建自动化工具,主要用于Java项目的构建、依赖管理以及报告和文档生成。Maven 通过提供一套标准化的项目结构和生命周期来简化和规范软件开发过程。Maven可以构建自定义的 jar 包依赖本文阐述自己定义自己的maven的jar包依赖,本地版本(不在中央仓库中的第三方库)。原创 2023-05-14 21:30:10 · 2458 阅读 · 1 评论 -
【技术碎片】【Java】计算椭圆的外接矩形坐标
遇到一个需要计算一般椭圆(斜椭圆)的外接矩形坐标的问题,在此记录一下已知椭圆的中心点坐标centerX centerY,椭圆的长轴,短轴majorRadius minorRadius,和旋转角度 angle。按理说java有原生的计算外接矩形的函数,先看看怎么实现的。原创 2023-05-06 15:04:39 · 1244 阅读 · 1 评论 -
【虚拟机】vmware虚拟机创建 centos7系统配置
vmware虚拟机网上可以下载,本节主要记录一下,如何创建虚拟机,并安装centos操作系统,然后运行虚拟机。注:VMware Workstation 是 VMware 公司开发的一款功能强大的桌面虚拟化软件,它允许用户在单一的物理计算机上运行多个不同的操作系统(如 Windows、Linux 等)作为独立的虚拟机。这些虚拟机可以共享主机系统的硬件资源,但彼此之间是隔离的,因此可以在一台电脑上同时运行多种操作环境。原创 2022-08-13 23:16:35 · 793 阅读 · 0 评论 -
【技术碎片】【PostgreSQL】Mybatis-Plus多值模糊查询,分页查询,order by的使用,遇到的问题
有数据表如下:假设有业务需求需要对查询结果进行多字段排序,比如对id和update_time需要降序排序,并且优先保证id的降序,其次再保证update_time的降序。有结果如下:可以看到id并没有降序排序,并且update_time也没有降序排序。可以发现结果也不对可以发现,如果使用语句则实际上是将查询结果按照update_time做升序,再对id做降序,并且以update_time升序为优先,也就是说desc只对它修饰的id字段生效,所以如果对多个字段排序,需要多次使用descasc。原创 2023-02-23 19:40:48 · 4407 阅读 · 0 评论 -
【YAPI】【IDEA】java接口直接导出为YAPI接口文档
本文主要阐述如何通过easyhapi插件快速导出Java接口为YAPI文档。注:YAPI 是一个高效、易用、功能强大的可视化接口管理平台,主要用于 API的开发、测试和文档管理。它提供了一个直观的界面来创建、编辑和删除接口,使得开发者可以方便地管理项目的各种 API。平台内置了自动化测试工具,允许用户编写和执行测试用例,以确保 API 的正确性和稳定性。YAPI 支持数据 Mock 功能,可以在开发过程中模拟后端服务的响应,帮助前端开发者独立进行开发和调试。原创 2022-10-09 11:47:51 · 6240 阅读 · 3 评论 -
【手写一个Tomcat】SimpleTomcat-01 - SimpleTomcat-02
本文实现一个简易Tomcat,遵循【Tomcat】第八篇:150代码手写Tomcat…注:Tomcat实现了 Java Servlet 和 JSP 规范, 是一个开源、轻量级的 Java Web 应用服务器,主要用于运行和部署基于 Java Servlet、JavaServer Pages (JSP)、WebSocket 和 Java Expression Language (EL) 的应用程序。原创 2022-06-26 21:58:03 · 245 阅读 · 0 评论 -
【技术碎片】jcraft.jsch 文件传输工具与方法
记录基于jcraft.jsch的文件传输工具与方法基于springboot,mybatis-plus,PostgreSQL,jcraft.jsch原创 2022-06-15 22:57:15 · 2493 阅读 · 1 评论 -
【技术碎片】重名文件后缀重命名方法
运行结果如下,可以看到同样是从0搜索到200的后缀名,线性搜索的重名文件重命名后缀运行耗时32ms,指数扩散二分搜索的的重名文件重命名后缀则耗时0ms,非常迅速。如果存在重名,则在后面(扩展名的前面)加后缀 “_1”, “_2”, “_3”, …直到文件名不重复为止,以此来确保文件名的唯一性。重名文件加后缀重命名过滤。原创 2022-06-08 22:38:40 · 719 阅读 · 0 评论 -
【手写一个RPC框架】simpleRPC-07
负载均衡(Load Balancing)是在多台服务器之间分配网络负载,以提高系统的整体性能、可用性和可靠性,避免任何单一资源过载,确保所有资源能够有效地处理请求,并提供一致的服务质量。在simpleRPC-07中,我们为注册的服务接口提供一个负载均衡模块,分散流量:负载均衡器接收来自客户端的请求,并根据预定义的策略将这些请求分散到后端的一组服务器上。这可以防止任何单个服务器因请求过多而变得过载。高可用性:通过在多台服务器之间分配负载,负载均衡可以提高系统的可用性。原创 2022-01-04 10:09:34 · 1696 阅读 · 0 评论 -
【手写一个RPC框架】simpleRPC-06
本次改进我们将引入zookeeper作为RPC框架的注册中心,服务端在zookeeper上注册自己的服务,而客户端调用服务,回去zookeeper上根据服务名寻找调用的服务器地址,使得我们RPC支持集群调度通信的能力。...原创 2022-01-02 20:52:24 · 3584 阅读 · 3 评论 -
【手写一个RPC框架】simpleRPC-05
序列化(Serialization)是一种将对象的状态信息转换为可以存储或传输的格式的过程。在序列化过程中,对象的所有必要数据(包括其属性值和可能包含的其他对象)被转化为一种字节流或文本格式。序列化是为了方便数据的持久化,保存到磁盘或数据库中,或在网络上传输对象。通过序列化,复杂的对象结构可以被压缩成一种便于传输或存储的形式,然后再在需要的时候通过反序列化过程恢复成原始的对象状态。本次改进主要针对序列化的方式进行改进。之前一直在使用java自带的序列化方式,或者是netty的序列化方式,性能不高。原创 2021-12-30 17:27:25 · 678 阅读 · 0 评论 -
【手写一个RPC框架】simpleRPC-04
之前谈到,网络传输使用BIO的方式,我们在simpleRPC-04改为NIO来传输,引入netty的编解码方式。我们在simpleRPC-04中将使用netty来优化我们的客户端client和服务端server,注:Netty 是一个高性能、异步事件驱动的网络应用程序框架,主要用于Java和JVM-based的应用程序Netty的主要特点优势:异步非阻塞I/O:Netty基于Java NIO(Non-blocking I/O)实现,能够处理大量的并发连接,提高系统性能和可扩展性。原创 2021-12-28 20:41:31 · 587 阅读 · 0 评论 -
【手写一个RPC框架】simpleRPC-03
前言我们将新写一个服务接口:通过某个id查询blog信息我们本次改进希望重构服务端server的代码,使得server可以容纳多个service接口的调用。我们将为此通过HashMap构建一个service的映射关系。另外原来的server处理请求是用BIO的监听,捕获消息之后直接new一个线程来处理,我们这里将使用一个线程池来代替直接new 一个线程,实现线程的有效管理。实现项目创建我们创建一个名为 simpleRPC-03 的module:依赖配置跟simpleRPC-02一样:po原创 2021-12-24 11:36:27 · 821 阅读 · 0 评论 -
【手写一个RPC框架】simpleRPC-02
在simpleRPC-01中,我们实现了仅仅能用的RPC,但是调用只能调用server中某一个确定的方法,如果有很多方法需要调用怎么办?因此需要把调用请求抽象出来,记为RPCRequest。同样的,调用的返回对象也需要解耦,我们不需要知道对象是User还是其他。我们把调用返回抽象出来,记为RPCResponse。我们不希望每次调用都要重新写host,port和调用方法,因此也需要抽象。...原创 2021-12-20 16:30:46 · 650 阅读 · 0 评论 -
【手写一个RPC框架】序章 simpleRPC-01
序章RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。在本模块中,我们试图实现client通过指定id,通过RPC框架,从server拿到id对应的User对象信息。本项目实现参考自MyRPCFromZero环境JDK.原创 2021-12-18 17:05:20 · 1048 阅读 · 0 评论