V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  nlzy  ›  全部回复第 3 页 / 共 26 页
回复总数  506
1  2  3  4  5  6  7  8  9  10 ... 26  
2022-06-16 01:44:50 +08:00
回复了 bbsabc2 创建的主题 程序员 作为一名二本计算机专业的教师,如何点亮学生的技能树
我也是三本院校的计算机学生,下周就毕业啦。

我在学校里算是学得比较好的(可能是这届最好的?)。其实也曾经天天骂学校开一堆什么 JSP 什么 SpringBoot 这样的技术课程,也希望老师可以多开一些基础的课程,希望讲义和实验也能跟上网上的优质公开课。至少我都是自己购买教材、自己在网上找公开课资源,靠着自学把计算机基础知识打牢的。

我这样的学生吧,对于学校开什么课程其实是不太关心的。课上得好我会去认真听,课上得不好我会旷课自己学自己的。只要不是上课又烂又爱抓考勤来卡人的老师,我都在期末教师评价里给了满分。

其实路都是自己走出来的,所以老师在课程改革的努力就没有意义吗?不是!我的同学在校期间,大部分对于就业的发展方向是没有概念的,学校教什么就学什么,也不会主动自学去拓宽知识。学校的教学内容对他们的知识面影响很大,老师这个时候该给学生指好路、带好路的。就像楼上说的“不能放弃这些学生,不是人人名牌大学,他们也要上学工作。”

我是反对楼上说的抓基础、抓原理的,真正对基础和原理感兴趣的学生一个年级可能就两三人,他们会自己学的。别把重点放在基础和原理上,且不说师资力量能不能教得好,也不说学生能不能学的进去,就单说就业:像我们学校出来的,能在小厂干开发就算不错,大多数人还是混个运维或者测试的岗位,也算专业对口。面试这样的公司和这样的岗位能要多少基础知识和底层原理?普通学校侧重“计算机科学与技术”里面的“技术”二字,不仅不丢人,相反我觉得务实得很。

楼上说的把数学课全删,基础课删大半我觉得还是过了,至少我学校这届高数线代离散都有,C 语言、数据结构、算法设计、计算机网络、数据库原理、操作系统原理、组成原理、体系结构、编译原理这些核心课程都还是全的。

回到课程的设置上,我觉得 Java 后端、Web 前端都没什么问题,身边的同学都有靠这个吃上开发这碗饭的。MySQL 和 Linux 也搞一搞,不管是做后端开发还是做运维都要用。软件测试必开,毕竟开一门课就能让学生多投一种岗位,性价比高得不行。

嵌入式或许可以搞搞,我印象里嵌入式相关的岗位好像不太看重学校层次。缺点是需要的课时数量实在是太多,不适合让所有学生把相关课程都搞完。

人工智能就真的拉倒吧。
2022-05-18 03:55:26 +08:00
回复了 moonheart 创建的主题 Linux 切换到 Debian sid 使用一个月的体验
> Debian 11 的 ISO 自带的内核是 5.10, 当时安装的时候就发现不对劲,Wi-Fi 不工作;一番搜索之后才发现我的笔记本网卡是 MT7921 ,要从 5.15 内核才支持。

Debian 有 backports 源,目前 Debian 11 backports 中的内核版本是 5.16
2022-05-10 08:20:16 +08:00
回复了 void59468 创建的主题 C++ gcc 可变长度数组
-Werror=vla
2022-05-08 14:25:01 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@chanlk 上完整代码
2022-05-08 07:26:21 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
直接给结论:如果语句 4 执行了,4 一定能保证读到 a 的值是 42 。A 和 B 线程的执行顺序不影响这个结论。

反对楼上说法的说法:“Happens Before 原则,只提到同一个线程内的连续上下文,并没有提跨方法、跨线程的问题。”

Java 8 语言规范 Threads and Locks 那一章对 Happens-before Order 的第一句介绍偏偏就是:“Two actions can be ordered by a happens-before relationship.”。而 action 一词在那章规范中就专指跨线程:“We will usually refer to inter-thread actions more succinctly as simply actions.”
2022-04-08 23:40:15 +08:00
回复了 dangyuluo 创建的主题 C++ CPU 指令重排是 cache 同步太慢的表征么?
“这种重排是不可能发生的”,“CPU 某个核心上的指令重排现象”。我认为此处“重排”楼主意指内存乱序。

“多核 CPU 也是可以对指令进行重排的”,“CPU 是可以把指令重排成如下顺序”。我认为此处“重排”楼主意指乱序执行。

仅仅是“重排”这一词的使用就出现了混乱,主楼的其他部分就更不值得细细推敲了。我以为此处的混乱,正是楼主感到迷惑的根源:即使没有乱序执行,store buffer 就足以导致写读乱序。即使指令集架构保证读读连贯,也不能说明微架构没有投机加载。这两个东西就是风马牛不相及。更何况内存顺序是指令集架构定义的,而乱序执行是微架构的具体特性,连抽象层面甚至都不是一个层级。把两个根本不相干的事物混淆在一起,不感到迷惑才奇怪呢!不仅迷惑了自己也迷惑了读者,所以也不怪楼下有老哥留下“一顿胡扯”,“看着头大”的暴躁回复。

一个混乱的问题真的很难去回答,建议楼主可以把自己帖子里的“重排”一词,换成指代更清晰的“编译器重排”、“乱序执行”或“内存乱序”后再重新提问。同时诚挚向楼主安利《 A Primer on Memory Consistency and Cache Coherence, Second Edition 》一书以正视听。
@LeeReamond 外层循环的运行次数肯定少于内层循环。这也是没考虑 sqrt() 对性能的影响的原因,它们的运行次数都远远少于那两个表达式。
看了眼源码,是用试除法计算素数。那汇编都不用细看了,只要编译器不作妖,程序的瓶颈肯定是 l <= t 和 if (c % l == 0) 这两句。和缓存、访存关系都不大了。

虽然有一个 if ,但是这个分支比较好预测:即使是静态预测,每个不同的 c 也只会预测失败一次,所以和分支也没什么关系。循环条件同理。

同一个 c 的每一轮试除,l 是循环变量,而 c 和 t 是不变的,所以上述良好的分支预测再加上投机执行,是可以掩盖掉他们的延迟的,所以程序的瓶颈大概就是 l <= t 和 c % l 这两句的吞吐了。前者是整型转浮点然后比较,后者是一个除法。

上网查资料,zen2 的 div 吞吐率倒数是 13-44 ,zen3 是 7-12 。而 cvtsi2sd 和 comisd 在 zen2 和 zen3 上都是 1 。瓶颈在前者,后者可以忽略掉,而前者在 zen2 和 zen3 的性能差距正好大约是三倍。(浮点和整数除法的执行单元应该不冲突吧)

这大概就是楼主想要的答案了。

至于 mov %rdx, %rax ,寄存器重命名阶段就已经处理掉了,不会是瓶颈。

(唉,我为什么要大半夜不睡觉去分析这种编译器优化都没开,代码也没有仔细写的程序呢)
2022-01-24 19:23:22 +08:00
回复了 amiwrong123 创建的主题 C++ c++函数返回临时变量和局部变量,有什么区别?
https://zh.cppreference.com/w/cpp/language/return

自动从局部变量和形参移动
这题也可以看成是 DFA 的典型例题,就像 #15 说的:“作业基本都是这种东西”。而 DFA 和正则表达式可以互相转换,所以构造出 DFA 再一步步转成正则就可以做出来了。

我做了做,得到了 ^(0(11)*0)*(1|01(11)*0)(0(11)*0)*((1|01(11)*0)(0(11)*0)*(1|01(11)*0)(0(11)*0)*)*$

最后的结果我自己也看不懂,这只是我机械地套用公式得到的,所以楼主没必要为看不懂这些正则而灰心丧气啦。
2021-09-03 00:29:42 +08:00
回复了 hutng 创建的主题 硬件 Intel 即将发布的大小核 CPU,各位怎么看
多核性能强单核性能也强的处理器谁不喜欢呢,我很看好大小核的前景
2021-08-11 16:54:20 +08:00
回复了 nlzy 创建的主题 求职 [深圳] 2022 届毕业生,求不 996 的 C++ 实习( Java / Node.js 亦可)
@hjiang
@7S5cVx
抱歉,不考虑其他城市
2021-05-06 14:38:07 +08:00
回复了 d0m2o08 创建的主题 Linux 各位吴彦祖,请问 debian 安装的时候必须设置一个普通用户么?
上网搜 "debian preseed",然后使用以下配置:
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
2021-05-03 12:46:20 +08:00
回复了 zhongpingjing 创建的主题 Java 假如 CPU 只有一个核心,使用 CAS 并发竞争的问题
。。。。。。这些都是计算机操作系统课程里的基本知识了

即使计算机只有一个 CPU 核心,操作系统也可以为进程提供同时运行的假象,这叫并发。背后的原理楼上提了,就是分时调度。

题外话:在编写并发程序的时候,即使 CPU 只有一个核心,也必须要施同步(如加锁)。
2021-04-09 10:11:32 +08:00
回复了 WangLiCha 创建的主题 问与答 现在从零开始学习 C/C++最合适的 IDE 是什么?
首先排除 CLion,因为被宇宙第一 IDE Visual Studio 全方位吊打:Visual Studio 起码不用手写 CMakeLists.txt ,使用更流畅,个人使用还免费。

其次排除 Dev-C++,功能太弱。及时的错误提示、智能的自动补全以及完善的调试器对初学者的帮助真的很大,而 Dev-C++ 做不到。

最后排除 Visual Studio Code,不能开箱即用是最大的缺点,环境出了问题初学者不会修,被麻烦的又会是楼主。

所以答案当然是 Visual Studio 啦,来和我念:宇 宙 第 一 I D E !

PS: 我最近要打很多算法题,也是那种不用写项目但是要写很多程序片段,和楼主的需求很接近。我日常使用 Linux 机,所以选择的是 Visual Studio Code ;赛场上没有这玩意,正式比赛的时候用 Visual Studio 。
2021-04-05 20:49:46 +08:00
回复了 lithium148 创建的主题 编程 数组里有百万个值,如何加快速度?
虽说图像处理一律建议使用现成的库,但是两百万个整数,每个元素仅仅是简单的加减,那这数据量一点都不多,运行时间几分钟肯定是代码写错了。别听楼上说的整什么多线程、SIMD 、GPU,我看还是先把代码写对吧。
2021-03-07 19:33:04 +08:00
回复了 xuegy 创建的主题 程序员 如何提升程序抢占内存带宽的能力?
打不过就加入,你也用 GPU 解矩阵
@nlzy #22 修正:C 也支持函数指针,也能算 first-class function,只是这玩意比起别的语言里的函数,它实在是太难用了。
> Javascript 的闭包特性是否来源于某种设计失误?或是某种设计领先?
这个特性来源于 Scheme,JavaScript 的设计很大程度上受到了 Scheme 的影响。这个特性是 JavaScript 这门狗屎语言里少数不多的“抄对了”的地方,这个特性再加上 JavaScript 对 first-class function 的支持,使得 JavaScript 有了不错的“函数式”编程能力,语言的表达力和灵活性都大大提高了。
但也不能说领先,因为它只是在照抄 Scheme,而 Scheme 是 1973 年的编程语言了。

> 其他语言中不都是如此设计的?
现代的支持 first-class function 的语言很多都是这样的。不支持 first-class function 的语言,比如 C,就不会这么设计。
1  2  3  4  5  6  7  8  9  10 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5852 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 59ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.