工作几年来没用过。但 rocketmq ,dubbo 等 都用了 netty 。netty 是 java 网络编程的王者。
目前 nio 和 netty 入门都了解了。netty 是高级 java 迈不去的坎?
1
bootvue 2022-09-09 09:50:49 +08:00
有
|
2
frank1256 2022-09-09 09:53:06 +08:00
需要,但不用需要的这么彻底,比“了解”多一点就行,java 生态里,像我这样的低 level 码农没有机会造轮子。深入学习只是为了能看懂源码,以及面试装逼。
|
3
RedBeanIce 2022-09-09 09:56:50 +08:00 via iPhone 1
楼主的目标是提升自己嘛?
经过一段时间思考,我认为很多时间学这些东西都没有用,我们更应该活在当下的去学习经常会用到的东西,然后去学习自己感兴趣的 or 未来可能会用到的 例如我活在当下,可能 mybatis 是最需要研究的,还有 spring ,mysql ,es ,kafka 等等,,,当然每个人所处的岗位是不一样的,楼主和我不一样,请因地制宜。 最后回复楼主的问题,需要了解 netty ,但是似乎楼主可能处于高段位?我也好像觉得我们公司高工不会 netty |
4
wxw752 2022-09-09 10:02:59 +08:00
公司的 ws 服务器就是我用 netty 写的,可以去学一下,真的没多难。
|
5
leeyuzhe 2022-09-09 10:08:32 +08:00
用法有必要学习,原理或者源码看个人需求
|
6
assiadamo 2022-09-09 10:33:21 +08:00
只用 java ,聚焦网络层和性能的需要重点了解,其他的就是学习他的编码风格、设计模式、数据结构啥的
但更重要的是了解操作系统级的 socket 编程以及 TCP/IP 协议细节 |
7
KevinBlandy 2022-09-09 11:15:55 +08:00 1
我个人觉得 netty 是集并发编程,设计模式,socket 编程,响应式的各种优秀实践于一身的大成。可以好好读一读。
|
8
DeepRedApple 2022-09-09 11:22:54 +08:00
有
|
9
yazinnnn 2022-09-09 11:30:11 +08:00
netty
⬇ vertx ⬇ kotlin ⬇ quarkus ⬇ ⬇ ⬇ ⬇ ⬇ (接受各种 Monad) (拒绝各种 monad) 注重性能 注重云原生 缝合怪 ⬇ ⬇ ⬇ ⬇ ⬇ haskell clojure rust go .net/F# ⬇ ⬇ 范畴论 scheme/racket |
10
yazinnnn 2022-09-09 11:32:58 +08:00 6
netty
⬇ vertx ⬇ kotlin- ⬇ quarkus ⬇------------------------⬇--------------------⬇---------------------⬇-------------------⬇ (接受各种 Monad)------(拒绝各种 monad)-----------注重性能---------------注重云原生--------------缝合怪 ⬇------------------------⬇--------------------⬇---------------------⬇-------------------⬇ haskell--------------clojure----------------rust--------------------go----------------.net/F# ⬇-----------------------⬇ 范畴论---------------scheme/racket 这缩进... |
11
securityCoding 2022-09-09 13:14:21 +08:00 via Android
网络框架,学学也可以
|
12
Jooooooooo 2022-09-09 13:26:00 +08:00
重点要学的其实是 nio 那一套.
|
13
awalkingman 2022-09-09 13:38:12 +08:00
写 java 的程序员有两种,一种是用过 netty 的,一种是没用过 netty 的。
|
14
xianyv 2022-09-09 13:40:49 +08:00
学了学 netty 的皮毛,只是会用,到现在也没研究源码. 混迹在中小公司中,几乎没有用武之地
|
15
zoharSoul 2022-09-09 14:01:12 +08:00
没有必要
|
16
keppelfei 2022-09-09 14:11:24 +08:00
有段时间弄了一个即时通讯的项目,学习了不少,netty 真的很不错。
|
17
iyaozhen 2022-09-09 14:27:28 +08:00
有必要,你要是高级 JAVA ,不懂这个说不过去
|
18
ma836323493 2022-09-09 15:21:44 +08:00
netty in action. 学学手动撸一个出来
|
19
huang119412 2022-09-09 15:30:07 +08:00
netty 源码其实挺简单的,比 J.U.C 简单。可以研究一下
|
20
zr8657 2022-09-09 15:32:12 +08:00
有,学 netty 的过程会复习计算机网络和 IOS 知识,我学完以后对网络有了新的认知
|
21
carytseng 2022-09-09 16:16:08 +08:00
我熟悉 netty 是从对接一个 tcp 的设备开始的,在工作中学习是最深刻的。
|
22
wxlwsy 2022-09-09 20:21:15 +08:00
如果你想研究 netty 底层可以先写点 nio 和 aio 原生代码的非常有用.
|
25
urnoob 2022-09-09 23:17:26 +08:00 via Android 1
我是一个用过并且看过源码的人,我是这么认为的
netty 要看源码就看下从接受链接到 handler 这一条线就可以了。你只要理解数据是怎么过来的就行,不需要细节。这样有助于你使用它。 这个过程中会涉及到 nio 操作,你可以忽略,转而看下 linux 用 epoll 三函数怎么用会清晰很多。也能学到底层一些东西。 内存分配那块没必要看。 |
26
wxw752 2022-09-10 15:23:06 +08:00
@choice4 集群实现也简单,业务逻辑上稍微改改就行,根据 channelId 判断长连接是不是连在当前服务实例中。
如果在当前服务实例就正常处理,否则搞个发布订阅的中间件通知给其他实例,redis,zk,mq 都行。 |
27
mmdsun 2022-09-11 00:18:39 +08:00
不做研发、不造轮子用不上,看你在公司干的活是什么。
当然可以面试提升 B 逼格 |
28
xuanbg 2022-09-12 10:09:29 +08:00
不想自己造个 nio 的轮子替代 netty ,或者基于 netty 进行二次开发,就没必要系统深入地学习 netty 。
学习任何知识,都要问自己这几个问题,而不是人学亦学。 1 、你学它有什么用没有? 2 、投入的时间和精力能给你带来什么好处? |
29
diagnostics 133 天前
@wxw752 #4 netty 本来就是简化网络编程的,怎么简化网络编程这个比较难,要学 IO 模型,网络编程,线程模型,零拷贝等等
|
30
wxw752 133 天前
@diagnostics #29 哥们你这个坟一铲子挖哪年去了
|