12
返回列表 发新帖
楼主: RELAY2014
跳转到指定楼层
上一主题 下一主题
收起左侧

关于concurrent programming

🔗
lovelove 2020-8-6 08:54:52 | 只看该作者
全局:
同支持前面推荐的Java Concurrency in Practice,我认为这是讲并行编程最好的书没有之一(超过了Doug Lea早年自己写的那本),全面,深入,而且不难懂。你认真学完之后基本就是Java并行编程的专家了。

并行编程跟普通编程最大的区别就是很难debug,一定要在设计和实现的阶段就搞对,不然的话在PROD出的都是各种各样的怪问题,有死锁的,有时对时错的,有时快时慢的,而且测试的时候很难发现,所以深刻的理解是必须的,如果打算将来做后端,投入时间认真学绝对值得。而且在这个过程中你学到的并行的思想,对系统设计也有很大的帮助。

补充内容 (2020-8-6 21:43):
补充一点,这本书最大的优点,就是如果你认真学习完了,不仅仅懂得用java.concurrent里的class,而且知道是为什么这样work的,所谓知其然也知其所以然。其他的很多书,要么特别艰深,CS科班读起来都很累

补充内容 (2020-8-6 21:45):
要么特别浅显,只会调API,但是不知道为什么,也不知道会出现什么样的edge case,怎么处理。

评分

参与人数 1大米 +3 收起 理由
BZydNpRW + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
slowloris 2020-8-6 13:05:14 | 只看该作者
全局:
384john 发表于 2020-8-6 08:04
后端的说一下看法吧。多线程相关的具体coding的部分,我认为没有5年以上的经验(平均水平而言),老板根本 ...

"有太多东西的学习优先度高于原生的concurrency包",  能详细说下这部分么,您觉得有哪些东西对于后端开发比concurrency重要?
回复

使用道具 举报

全局:
个人观点,有的公司可能永远不会用到,毕竟所有技术都是为实现实际业务需求的,而且实际工作中可以用别的应用退而求其次地“替代”。而有的公司可能会有,但那部分代码一般属于一些service owner自己管辖范围,除非负责人不在了否则也不会让人轻易修改,当然你可以看看了解熟悉。如果真有需要人从零开始准备写concurrent 了一般也有architect 和principal 级别的定方向或实现。

补充内容 (2020-8-6 13:51):
能实现performance improve 可以考虑到的地方太多了,如果非要用concurrent 一般是实在别的方面由于各种原因无法做出更大的改进了
回复

使用道具 举报

🔗
384john 2020-8-6 14:21:59 | 只看该作者
全局:
slowloris 发表于 2020-8-6 13:05
"有太多东西的学习优先度高于原生的concurrency包",  能详细说下这部分么,您觉得有哪些东西对于后端开发 ...

我后端只了解java,只能给个大概的概念。我的理解里后端开发从零开始总是得带着如下几个问题。
1. 如何完成基础业务。java的话,得至少知道怎么开发一个基础的RESTful api来和前端做交互,涉及spring和一些基础的有关web service的注解。有了后端数据怎么和db做交互,需要依赖类似hibernate,jpa等框架。还有就是常用的关系型数据库mysql之类,虽然不同db有自己的dialect而且不少公司后端并不直接接触db,但基础的sql必须得会,因为能用的地方太多。另外的话,类linux的shell脚本的了解,小公司很多时候都是直接通过shell来做服务器的管理还有debug。
2. 怎么部署?
3. 怎么让系统更robust?
4. 如何性能提升和扩展现有架构?并发就属于这里考虑的范畴。
5. 数据安全。
除了第一个问题是绝对核心外,另外几个不同问题根据不同公司规模还有后端开发的职责会有不同,考虑的时候会有先后不同。有些后端偏data,需要了解hadoop;有的偏运维,需要了解docker和kubernetes;有的更偏中台,各类mq还有kafka得多了解;有涉及到cloud,需要了解aws之类的;甚至有些后端需要自己写automation的testing,selenium。后端作为整个系统最中心的位置,往往会根据具体的职责不同做一定程度的延伸。学不完的啦。。。

评分

参与人数 2大米 +4 收起 理由
desperatelife + 3 给你点个赞!
slowloris + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| RELAY2014 2020-8-6 19:00:00 来自APP | 只看该作者
全局:
lovelove 发表于 2020-08-05 17:54:52
同支持前面推荐的Java Concurrency in Practice,我认为这是讲并行编程最好的书没有之一(超过了Doug Lea早年自己写的那本),全面,深入,而且不难懂。你认真学完之后基本就是
感谢推荐,一定会看
回复

使用道具 举报

🔗
 楼主| RELAY2014 2020-8-6 19:00:25 来自APP | 只看该作者
全局:
RainListenerI 发表于 2020-08-05 17:36:02
并发涉及到很多东西,如果做后端(不对,前端也一样)一定要好好掌握。如果是做java 找一本书叫Java Concurrency in Practice,Doug Lee也是其中的一个作者。 这本书有中
谢谢推荐,一定会看
回复

使用道具 举报

🔗
beer 2020-8-6 21:34:39 | 只看该作者
全局:
用得到的。我今天merge的一个PR就是解决race condition的。多个线程都会读取一个文件,会相互race。我们只能同时让其他一个写,读无所谓。然后用”java.nio.file.StandardOpenOption. CREATE_NEW“ 解决了。但是更复杂的场景,肯定是要更多Concurrent Programming的知识的。
回复

使用道具 举报

全局:
楼中讲的真好,马克一哈
回复

使用道具 举报

🔗
necokeine 2020-8-7 16:50:38 | 只看该作者
全局:
Hi, 我是做infra 做consensus的,平时主要写C++啥的,我们对并发用的很多,面试也面的很多,这个真的蛮重要的,一步走错可能就是个大issue。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表