- 博客(41)
- 收藏
- 关注
原创 Java互联网实时聊天系统(附源码)
决定以Netty为核心,以WebSocket为应用层通信协议做一个互联网聊天系统,整体而言就像微信网页版一样,但考虑到这个聊天系统的功能非常多,因此只打算实现核心的聊天功能,包括单发、群发、文件发送,然后把项目与Spring整合做成开源、可拓展的方式,给大家参考、讨论、使用,欢迎大家的指点。关于NettyNetty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。关于WebSocket通信协议。
2022-09-15 10:39:13
465
原创 如何通过业务集成中心简化系统集成
来自、、等公司的新一代集成工具与这种趋势背道而驰,我非常喜欢他们的解决方案。这些集成工具简化了大多数常见业务数据对象(供应商、客户、员工、票据等)的数据模型,并提供了从流行的软件包(或 EDI、电子数据交换、Stedi 的格式)中获取数据的连接器,并将其转换为简化的模型。这将使你的集成工作变得更容易,因为你不需要了解每个系统的特性,可以专注于将数据从一种简化格式转换为另一种格式。
2022-09-15 10:27:53
429
原创 AI加速器与机器学习算法:协同设计与进化
p4d和G5实例分别使用NVIDIA的A100和A10G GPU,两款GPU都基于Ampere架构,都支持FP64、FP32、FP16、 INT8、BF16和TF32精度类型,也都包含一种被NVIDIA称为“Tensor Core”的运算单元,用于混合精度计算。希望未来的AI加速器带来更好的用户和开发者体验。混合精度训练背后的思想是,训练时的矩阵乘法发生在较低精度表示(FP16、BF16、TF32),因此它们更快和能效更高,然后用FP32格式累积运算结果,以降低信息损失,从而提升训练速度和能效。
2022-09-15 10:26:59
759
原创 你了解 QPS、TPS、RT、吞吐量 这些高并发性能指标吗?
QPS vs TPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。多线程场景,如果把服务端的线程数提升到2,那么整个系统的QPS则为 2*(1000/80) = 25, 可见QPS随着线程的增加而线性增长,那QPS上不去就加线程呗,听起来很有道理,公司也说的通,但是往往现实并非如此。2、QPS和RT的真实关系。
2022-09-15 10:25:58
348
原创 ECMAScript 2023将新增的9个数组方法
因此,将后者的非破坏性版本添加到数组对元组是有帮助的,这意味着我们可以使用相同的方法来非破坏性地更改数组和元组。在 promise 解析之前,它将从输入值中创建一个异步迭代器,进行惰性的迭代,并将每个产生的值添加到新数组中。在这个例子中,groupToMap() 是更好的选择,因为哦嗯嗯可以在Map 中使用任何类型的键,而在对象中,键值只能是字符串或symbol。它们的用法和find()、findIndex()类似,唯一不同的是它们是 从后向前 遍历数组,这两个方法适用于数组和类数组。
2022-09-15 10:25:18
263
原创 kubernetes之基于ServiceAccount拉取私有镜像
这里根据自己的实际去定义即可;一定要是对的地址和认证信息;否则无法pull/push1.1查看SecretsData====
2022-09-15 10:24:29
503
原创 当老板让我从 Java8 升到 Java11
比如你做的某款工具,甚至你定制的某款 JDK,需要检查业务代码中是否有兼容性问题,或者你就单纯想扫描下业务代码中是否有什么什么你关心的东西,那么你可以仅仅修改这个项目中的各种规则表达式,并且定制化自己的 HTML 报告格式即可出色完成这个功能。具体调用链我不一一展开,只看很关键的环节。最后输出为 HTML 时,为了查询对应兼容性问题对应的官方说明,使用了 ResourceBundle 查找官方文档说明,由此我们可以继续深入,了解下官方文档的查询规范,而且是从代码层面的,十分严谨。
2022-09-15 10:20:50
6412
原创 SpringCloud Gateway 服务网关的快速入门
Gateway 网关官网链接:1、网关的核心功能特性:请求路由:一切请求都必须先经过 gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡。权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。
2022-09-15 10:19:48
349
原创 Java入门-------构造方法和构造方法的重载
构造方法是一个特殊的成员方法,在定义时,有以下几点需要注意:构造方法的名称必须与类一致构造方法名称前不能有任何返回值类型的声明。不能在构造方法中使用return返回一个值,但是可以单独写return语句作为方法的结束。
2022-09-14 10:09:28
977
原创 面试官:单核 CPU 支持 Java 多线程吗?什么?
多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数,然而一颗CPU同时只能执行一项任务,如何让用户感觉这些任务正在同时进行呢?操作系统的设计者 巧妙地利用了时间片轮转的方式时间片是CPU分配给各个任务(线程)的时间!“思考:单核CPU为何也支持多线程呢?”线程上下文是指某一时间点 CPU 寄存器和程序计数器的内容,CPU通过时间片分配算法来循环执行任务(线程),因为时间片非常短,所以CPU通过不停地切换线程执行。换言之, 单CPU这么频繁,多核CPU一定程度上可以减少上下文切换。
2022-09-14 10:08:31
186
原创 JAVA入门——方法和构造方法
(1)方法重载的定义方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数。(2)方法重载的特点:-->在同一个类中。-->方法名相同。-->参数列表不同(参数顺序、参数类型、参数个数不同)。-->方法的返回值不能作为判断方法之间是否构成重载的依据(与方法的返回类型和访问修饰符无关)。-->代码展示:定义一个Calculate类// 定义2个int类型数据相加的方法}// 定义3个int类型数据相加的方法}
2022-09-14 10:07:31
158
原创 【java核心技术】Java知识总结 -- 接口
思考1?为什么Java的设计者选择不支持多重继承?其主要原因是多重继承会让语言变得非常的复杂(如同c++),或者效率会降低(如同Eiffel)
2022-09-14 10:06:14
185
原创 核爆!网易首席架构师十万字面试经验分享:java核心知识点精讲
其中涵盖: Spring,Spring Cloud,Netty网络编程,ZooKeeper,Kafka,Hadoop,HBase,Cassandra,ElasticSearch,Sparkl,tFlink等等。由于文章篇幅限制,下面的分享将是以面试题或图片形式展现出来,希望对大家接下来的面试有一定的帮助。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。看完上面的内容,相信大家已经有了清晰的目标与方向,接下来就是学习资料了,我准备了java面试核心知识点精讲!
2022-09-14 09:59:29
128
原创 如何优雅的使用装饰器模式
在这个例子中,使用装饰器模式增强了原本的代码,不修改原本的代码,原本的代码也能正确提供服务,只不过没有使用缓存;这种比继承更加灵活机动的特性,也同时意味着装饰模式比继承易于出错,排错也很困难,对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为繁琐。这里使用的缓存是spring的 spring-cache,不了解没关系,知道几个注解什么意思就行;虽然使用装饰器模式看起来B格高,但还是要注意自己项目的场景,选择适合的方式解决问题。接下来就是对之前的代码进行装饰,定义一个装饰器的实现类;
2022-09-14 09:53:03
109
原创 从美团挖来的架构师居然这么设计DB+缓存,真的长见识了!
我直接先抛一下结论: 在满足实时性的条件下,不存在两者完全保存一致的方案,只有最终一致性方案。根据网上的众多解决方案,总结出 6 种,直接看目录:不好的方案。
2022-09-14 09:52:16
108
原创 主数据系统的设计与实现
由于规划、预算、实施计划等原因限制,各信息系统建设的步调不一致,规划不统一,导致一个严重的问题:一些基础数据,比如商品编码、客户编码等,在不同信息系统内取值不一致,甚至定义也不一致,为各业务系统打通,以及数据中心建设带来极大的障碍。在结构上,由于多个应用系统之间,都可能存在提供数据和使用数据两种角色,一般采用点对点两两交互的网状结构,这种结构对同步时序、转换规则、系统复杂度等均提出了极高的要求,也带来——复杂性高,实施周期长,无法分步实施,容易失败等问题。本项目基于前述前提,取得较好的效果。
2022-09-14 09:51:03
902
原创 设计模式之迭代器模式
当一个对象是一个聚合对象且需要对外提供遍历方法时,可以使用迭代器模式。迭代方式提供了不同的方式遍历聚合对象,增加新的聚合类和迭代器类都是比较方便的,Java集合类中庞大的家族采用迭代器模式就是基于这种优点。迭代器模式有设计模式的通用缺点——系统复杂性,迭代器模式将数据存储和数据遍历分开,增加了类的个数。整体来说,迭代器模式是比较易于理解的一种行为型设计模式。
2022-09-14 09:49:24
68
原创 【设计模式】Java设计模式 - 装饰者模式
装饰者模式是一种结构型模型,是动态的给对象增加职责,对于新增功能来说要比通过子类方式更加的灵活。他允许对一个对象进行添加新的功能,但不能改变结构。定义奶茶类,只需要继承饮料类,并且获取父类的价格。/*** @Description: 奶茶类*/}}红豆奶茶和珍珠奶茶的代码相似,这里只粘贴红豆奶代码。具体奶茶,要设置描述和单价。/*** @Description: 红豆奶茶*/setDescribe(" 红豆奶茶 ");}}总体装饰者,继承饮料类/**
2022-09-13 10:04:55
103
原创 基于Java微服务方案的商品秒杀系统
项目是基于Java微服务方案的商品秒杀系统。是前后端分离的项目,前端用React,后端为Java的微服务架构。项目本身用于学习,在一些地方还不够成熟,欢迎各位多多交流。项目采用了SpringBoot框架、SpringCloud微服务架构、SpringCloud Gateway网关技术栈、SpringCloud alibaba技术栈Nacos、SpringCloud Netflix技术栈容灾和均衡负载和Feign进行服务间的通信、持久层MybatisPlus框架、Flyway数据库版本管理工具和多数据源处理方
2022-09-13 10:02:31
193
原创 手把手教你用Java获取IP归属地
前几个月微信公众号上线了IP归属地的功能,后续知乎、抖音等平台纷纷添加了该功能。如果是国内的用户精确到省份,国外用户精确到国家。本文就使用Java实现获取IP归属地。!
2022-09-13 09:57:56
707
原创 Java——聊聊JUC中的锁(synchronized & Lock & ReentrantLock)
这篇文章是关于锁的,是入门级别的文章,后续还会有更深入、更底层的JUC,我会慢慢更新的。。。
2022-09-13 09:50:24
155
原创 Java 下数据业务逻辑开发技术 JOOQ 和 SPL
很多开源技术都可以在Java下实现以数据库为核心的业务逻辑,其中JOOQ的计算能力比Hibernate强,可移植性比MyBatis强,受到越来越多的关注。esProc SPL是新晋的数据计算语言,同样在计算能力和可移植性方面优势突出。下面对二者进行多方面的比较,从中找出开发效率更高的数据业务逻辑开发技术。JOOQ商业版主要支持了商业数据库和存储过程,不在此次讨论范围。
2022-09-13 09:46:32
76
原创 Java基础篇--反射机制
反射: 反射是一种机制,利用该机制可以在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量,成员方法,构造方法)。如果从上面的反射的定义上来看,反射是什么不太容易理解。通俗的讲,我们日常开发中使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。//直接初始化复制代码上面这样子进行类对象的初始化,我们可以理解为“正射”。而反射则是一开始并不知道我要初始化的类对象是什么,自然也无法使用 new 关键字来创建对象了。
2022-09-13 09:42:55
290
原创 Java访问Scala中的Int类型
写java 和 scala 混合代码的时候遇到一个小问题}IDE提示的错误是返回的类型是但是我们承接的类型是。
2022-09-13 09:41:52
208
原创 Java毕设项目——网上宠物店管理系统(java+SSM+Maven+Mysql+Jsp)
随着我国经济的快速发展,人民生活水平的不断提高,宠物逐渐成为许多宠物爱好者的一种生活方式。宠物的品种也越来越多样化,宠物不仅能给生活带来乐趣还可以成为空巢老人,独生子女很好的精神陪伴,养宠物是许多小伙伴的选择,宠物通常是宠物店购买的,带给它们一个温暖的家。本论文系统地描绘了整个网上宠物店管理系统的设计与实现,主要实现的功能有以下几点:(1)管理员;
2022-09-13 09:41:16
615
原创 Java 大文件分片上传
*** 大文件分片操作服务类**//*** 初始化分片文件上传** @param bucketName 文件桶* @param key 文件key* @return 本次文件上传唯一标识*//*** 上传分片文件** @param fileUploadPart 分片文件参数* @return 上传结果*//*** 完成分片上传** @param completeFileUploadPart 请求对象* @return 结果信息。
2022-09-13 09:38:11
1350
1
原创 使用 class 风格编写 composition api,支持Vue2、Vue3
【代码】使用 class 风格编写 composition api,支持Vue2、Vue3。
2022-09-12 15:34:48
653
1
原创 Doop学习 part 1
加参数仍然会很慢,会更新依赖包、重新编译、生成facts等固定步骤,有没有更快的方式?在doop分析的时候可见是用gcc编译成二进制文件来分析这个二进制文件是souffle编译完的可执行文件。可以直接运行这个可执行文件会按照之前的规则重新输出结果,规则文件是gen_xxx.dl我们写的my.dl被追加到最后面去执行了。那么我们想要改自定义的规则可以直接编辑这个gen_xx.dl,在最后面追加即可。然后用souffle去运行,毕竟facts事实文件都有了。
2022-09-12 15:25:39
538
原创 浅谈双指针技巧(二)---通过双指针判断链表成环问题
而这个过程的最后一部分,也就是start节点到meet节点,两者的路径其实是重合的。此时我们让两个指针(a、b)同时走上述的两个N,也就是一个从head节点,一个从meet节点开始,同速,一直走N步,最终会同时到达meet节点。a指针移动距离=b指针移动距离=N-lastLen(lastLen表示从start节点到meet节点之间的最短距离+x*环的周长)他们相遇的点是meet点。我们可以理解2N-N,也就是快指针超过慢指针的距离,其实就是围绕meet节点绕了x圈(x>=0)。,则快指针的执行的距离是。
2022-09-12 15:16:18
133
原创 Redis数据结构&持久化总结
当我们存储的集合元素比较长时,整数集合会自动进行 升级 ,升级首先要做的的是,根据新类型的长度,以及集合元素的数量,对底层数组进行 空间重分配 ,然后才将新元素添加到整数集合中。服务器在执行某些命令之前,会先检查给定键的类型能否执行指定的命令,而检查一个键的类型就是检查键的值对象的类型。哈希表保存的键值对会越来越多,在对哈希表进行 扩展 和 收缩 操作时,程序需要将现有哈希表包含的所有键值对 rehash到新的哈希表 中,并且这个rehash过程并不是一次性完成的,而是 渐进式地完成 的。
2022-09-12 15:13:45
348
原创 IO Pipeline 读 Minio 源码
举一个从 http 读取 json 数据的例子:http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { request := new(Person) decoder := json.NewDecoder(r.Body) err := decoder.Decode(&request) if err != nil { http.Error(w, err) } .....
2022-09-12 15:10:57
424
原创 【无标题】
Taurus.MVC 微服务集成多端,区分服务端与客户端,也可同时身兼两端,实现无线层级结构。本篇讲述微服务的客户端:1、客户端:即Web应用程序,包含各种编程语言的Web程序。2、客户端的配置,都是”MicroService.Client.XXXXX“。本篇仅介绍Java项目集成:Web应用程序中心。本篇介绍Java Web项目下集成微服务应用中心,更多的详细应用,可以看本系列其它文章。
2022-09-12 14:58:19
102
原创 一个注解解决ShardingJdbc不支持复杂SQL
公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是分片表。报错如下:这下糟了嘛。熟悉 Sharding JDBC 的同学应该知道,有很多 SQL 它是不支持的。官方截图如下:如果要去修改这些复杂 SQL 的话,可能要花费很多时间。那怎么办呢?只能从 Sharding JDBC 这里找突破口了,两天的研究,出来了下面这个只需要加一个注解轻松解决 Sharding Jdbc 不支持复杂 SQL 的方案。
2022-09-12 14:54:44
883
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人