2024-6-24(沉默Netty,MongoDB)

1.Netty概念

Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。

Dubbo,Kafka,ES等框架都是基于Netty开发的,可以把Netty理解为进行网络编程的框架即可。

2.为什么不用JDK原生的NIO框架来做网络编程?

NIO的缺点:

  • NIO的类库和API繁杂,学习成本高,你需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。
  • 需要熟悉Java多线程编程。这是因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能写出高质量的NIO程序。
  • 臭名昭著的epoll bug。它会导致Selector空轮询,最终导致CPU 100%。直到JDK1.7版本依然没得到根本性的解决。

Netty的优势:

  • API使用简单,学习成本低。
  • 功能强大,内置了多种解码编码器,支持多种协议。
  • 性能高,对比其他主流的NIO框架,Netty的性能最优。
  • 社区活跃,发现BUG会及时修复,迭代版本周期短,不断加入新的功能。
  • Dubbo、Elasticsearch都采用了Netty,质量得到验证

3.MongoDB

MongoDB 将数据存储为一个文档(类似于 JSON 对象),数据结构由键值对组成,类似于 Java 中的 Map,通过 key 的方式访问起来效率就高了。MongoDB 是 NoSQL 数据库中的一个典型的代表。

4.Redis

Redis 有 5 种基础数据结构,String、Hash、List、Set、SortedSet,也是学 Redis 必须掌握的。除此之外,还有 HyperLogLog、Geo、Pub/Sub,算是高级数据结构了。

Java 的 String 是不可变的,无法修改。Redis 的 String 是动态的,可以修改的。Redis 的 String 在内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。

项目中实操步骤,同样MongoDB:1)引入maven依赖,2)连接工具连接Redis或者MongoDB,3)调用Api接口操作数据即可。很方便。

相关推荐
重生之小比特15 小时前
【MySQL 数据库】视图
数据库·mysql
weixin_4597539415 小时前
mysql如何批量重置数据库用户密码_MySQL批量修改密码Shell脚本
jvm·数据库·python
Gofarlic_OMS15 小时前
Mastercam浮动许可利用率低:软件许可浪费,回收再分配
java·大数据·开发语言·架构·制造
AC赳赳老秦15 小时前
OpenClaw与飞书多维表格联动:自动同步工作数据、生成统计图表,实现高效管理
java·数据库·python·信息可视化·飞书·deepseek·openclaw
黑贝是条狗15 小时前
注册表破解chrome,edge阻止浏览器连接本地websocket
前端·javascript·数据库
开开心心就好15 小时前
带可视化界面的目录文件合并工具
java·运维·科技·游戏·tomcat·自动化·powerpoint
爱喝水的鱼丶15 小时前
SAP-ABAP:第二篇:实操避坑篇——ABAP Hello World程序创建、语法校验到调试运行全流程指南
运维·服务器·数据库·学习·sap·abap
m0_6091604915 小时前
mysql如何避免大批量数据修改锁全表_使用分批提交技术
jvm·数据库·python
玛卡巴卡ldf15 小时前
【LeetCode 手撕算法】(动态规划)爬楼梯、杨辉三角、打家劫舍、完全平方数、零钱兑换、单词拆分、最长递增子序列、乘积最大子数组、分割等和子集
java·数据结构·算法·leetcode·动态规划·力扣
Languorous.15 小时前
MySQL 零基础安装教程(Windows11/10,图文分步,新手零失败)
数据库·mysql·adb