查看: 5261| 回复: 18
跳转到指定楼层
上一主题 下一主题
收起左侧

关于concurrent programming

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本人目前cs硕,在上这门课,觉得有一定难度,经常很多问题想不清楚,要花很久时间。比如reader/writer,semaphore,H2O,..... 以前本科是ee,不是cs的。
想请问在一般的SWE工作中,concurrent programming涉及的多吗?如果是必须的话,我就考虑再选选类似的课,加强一下,毕竟基础差。如果不是,我就选选别的方面的课,感觉不是很感兴趣。

评分

参与人数 1大米 +1 收起 理由
seanysx2001 + 1 赞一个

查看全部评分


上一篇:请教一题幼儿园级Boolean Algebra
下一篇:请问有熟悉Javascript 测试的嘛?

相关帖子

全局:
并发涉及到很多东西,如果做后端(不对,前端也一样)一定要好好掌握。如果是做java 找一本书叫Java Concurrency in Practice,Doug Lee也是其中的一个作者。 这本书有中文版,Doug Lee,真乃神人也。如果是C的话主要关注一下Linux Programming相关的(例如APUE),毕竟这个年代应该没有人用Windows和OSX做后端:-)。前端的话如果是Android,也和linux有关,IOS完全没经验,JS主要是通过异步IO来simulate Concurrency Programming。并发编程本身的概念并不多,无非就是Thread/Lock/Atomic/Conditions 等等涉及到CPU和Memory的操作。Pattern也不多,记得一两个经典的就好。困难的部分其实是结合IO。

评分

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

查看全部评分

回复

使用道具 举报

推荐
384john 2020-8-6 08:04:49 | 只看该作者
全局:
后端的说一下看法吧。多线程相关的具体coding的部分,我认为没有5年以上的经验(平均水平而言),老板根本碰都不会让你碰,现阶段学这部分的coding太早且没必要。concurrent必然是业务的核心部分,且牵涉到这方面coding的业务场景根本不适合新人,而且可能会造成公司很大的业务损失。大公司对新人的需求一般更倾向于versatile,新人技术栈的广度比深度更重要。再其次,每家公司对多线程会有不同的轮子框架,你到时候就会发现根本看不到什么semaphore, blockingqueue,一般都是入职后现学。

但是!但是来了!未来如果走后端的话,多线程的概念是非常有必要了解的,否则就是一个CRUD developer。我看你目前练手的是java,java后端而言,concurrent那部分的知识是一个独立的领域,是一个进阶到senior及以上的一道坎。但如果是后端的话,有太多东西的学习优先度高于原生的concurrency包。拓宽下知识挺好,特意去学这方面的coding没必要。

评分

参与人数 2大米 +5 收起 理由
haoxjoy + 2 给你点个赞!
BZydNpRW + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
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 很有用的信息!

查看全部评分

回复

使用道具 举报

全局:
还会涉及到,并且用的频率还蛮高的。建议上一下。

虽然上了之后,可能还是分不清
回复

使用道具 举报

🔗
tinlittle 2020-8-6 06:22:54 | 只看该作者
全局:
工作中用Python,Node,还有前端用不上。用Java的话,会涉及到。没兴趣,学不好的话,可以有选择的绕道。了解一下Async,lock free编程作为替代。
回复

使用道具 举报

🔗
iloveniw 2020-8-6 06:57:31 | 只看该作者
全局:
tinlittle 发表于 2020-8-6 06:22
工作中用Python,Node,还有前端用不上。用Java的话,会涉及到。没兴趣,学不好的话,可以有选择的绕道。了 ...

除非做frontend, 尽量别绕道。lock free, async这些有时候performance会suffer. 所以,我建议lz还是去认认真真学习一下下。你只要搞明白为什么需要semaphore, 有哪些好处坏处,其实挺容易理解的。加油!
回复

使用道具 举报

无效楼层,该帖已经被删除
全局:
concurrency很多啊,最近就有两个项目有涉及到,比方说double checked locking。
回复

使用道具 举报

🔗
nicezg 2020-8-6 07:41:44 | 只看该作者
全局:
做infra 的话还是会涉及到的,其实都是调用API,lol
回复

使用道具 举报

🔗
cs900601 2020-8-6 07:43:45 | 只看该作者
全局:
本帖最后由 cs900601 于 2020-8-5 17:47 编辑

一种嵌入式Linux中、boost::asio和C++17新特性到处都是,异步加上lambda函数的风格甚至看起来有点像JavaScript
诚然并行与异步还是不同,但应该算是近亲,和goroutine什么的也很像,最重要的一个特色就是像CUDA线程一样不能抢占(不过新GPU可能不太一样了)


不过有时候异步更好还是多线程更好并不明显,需要试才知道,在试的过程中就要与并行的东西打交道,比如C++20会引入的barrier

回复

使用道具 举报

🔗
fxlj007 2020-8-6 07:44:03 | 只看该作者
全局:
tinlittle 发表于 2020-8-6 06:22
工作中用Python,Node,还有前端用不上。用Java的话,会涉及到。没兴趣,学不好的话,可以有选择的绕道。了 ...

我觉得async比基于多线(进)程的semaphore等等更难理解。

concurrency归根结底是CS里很核心的一部分,不建议跳过。如果看定义和解释看不懂的话,就多看看实例代码。
回复

使用道具 举报

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

本版积分规则

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