Ru1Z2e

@Ru1Z2e

  • 谈笑风生
    Hypocrisy rotartsinimdA Post #4

    我的毕设是写一个简单的 Web API,虽然我啥也不会(我找到了工作,但实习、项目都没有涉及到苍穹外卖什么的。。。纯废物)

    但是感觉应该不是太难。希望可以拿捏。

    第一优先级:过年。

    当前任务列表为:
    规划、设计(口糊)一下架构;
    用 php 还是 java?(反正都不太会)
    加密算法选型?公网传输。
    写个本机 demo

  • ❤️ Liked post in 延迟满足的骗局
    深入交流
    Ogiso_Setsuna 小木曽 雪菜 Post #1

    我们来玩一个游戏:

    扔硬币,如果扔出的是正面则重复扔硬币,直到扔出反面为止,一次游戏结束。一次游戏的奖金是根据扔硬币的次数决定的,即:
    如果第 1 次就扔出反面,奖金 2 块;
    如果第 2 次才扔出反面,奖金 4 块;
    ...
    如果第 n 次才扔出反面,奖金 2^n;

    问:你最多愿意每次花多少钱玩这个游戏?

    很显然,这个游戏的期望是

    E = 2*(1/2) + 4*(1/2)(1/2) + ... + 2^n(1/2)^n + ...
    = 1 + 1 + 1 + ...
    = ∞

    所以理论上我们花费任意有限的价格去参与游戏应该都是划算的。但是,这个结论明显与人们的直觉相悖。事实上,现实中几乎没有人愿意花费 20 以上的价格去玩这个游戏,更不用说花费任意有限的价格了。

    然而,在现实中人们精力有限、生命有限,只能进行有限次游戏。这时,使用基于“无限次”游戏假设计算出的“期望值”来进行决策,是否会存在问题呢?

    我们再仔细观察一下游戏的规则,发现无穷大的期望,来自于在时间的无穷远方,将一个高阶无穷大的奖励压缩进了一个无穷小的概率。对任何现实中的人来说,高阶无穷大和无穷大没有什么区别,因此没有人能够拿到最终的这个所谓无穷大的收益。

    这使我们不得不反思,延迟满足是否总是那么行之有效?如果把一个超级巨大的奖励放在一个非常漫长的延时之后,真的会有人实现吗?延迟满足在此时真的还有意义吗?

    我又想到了强化学习中的 Q-learning,距离当前时刻越近,所得到的 reward 越高(我没有仔细研究过 RL,不清楚是否大部分的 reward 都是这么设置的)。这看起来也很有道理:在实现一个目标的开始阶段,你得到的 reward 越高,你越可能保持在正确的道路上。而如果是越往后 reward 越高,你更有可能在开始阶段走了一条奇怪的路子摆烂,直到最后一步,虽然 reward 奇大无比,但是你因为开始偏离得太多,几乎完全不可能得到这个 reward 了。

    所以我在想,也许我们应该给自己在更近的阶段设置更多的奖励,我们才能 keep motivated,而不是把一个巨大的奖励藏在无穷远处,画饼充饥。延迟满足并不总是有效,因为人的生命与精力并不是无穷的。一味欺骗自己、麻痹自己,相信那个无穷远处的高阶无穷大奖励,恰恰是不理性的,反而容易让人堕入虚无的深渊。

  • 学习资料
    Charles_Xavier Charles_Xavier Post #1

    课程:COMP201553-数据库基础及应用 01(2022,2023 春 DB)
    教材:姚普选。数据库系统——基础、设计及应用 [M].西安:西安电子科技大学出版社,2013.
    教师:赵英良
    学分:2.0
    授课学时:20.0
    上机学时:12.0
    开课单位:电子与信息学部

    本课程基于华为云 OpenGauss DB,采用 PostgreSQL 语言。
    笔者于大一下学习此课程。
    鉴于所用教材有所过时,故将笔者所学整理上传。如有错讹,敬请斧正。

    hint:
    赵老师教学要求比较严格,但是讲解很清晰。如有特殊情况,反馈时应有理有据。
    实验 6 内容考试不涉及。

    实验:
    实验 1 DBMS 的安装和基本使用方法.pdf|attachment (2.5 MB)
    实验 2 SQL 数据查询.pdf|attachment (1.3 MB)
    实验 3 数据的完整性.pdf|attachment (658.2 KB)
    实验 4 存储过程和函数.pdf|attachment (377.5 KB)
    实验 5 数据库安全性.pdf|attachment (801.8 KB)
    实验 6 Python 编写 openGauss 数据库应用程序.pdf|attachment (1.5 MB)
    课程笔记:
    数据库基础设计及应用.pdf|attachment (703.0 KB)
    题库:
    数据库基础及应用题库.docx|attachment (349.9 KB)

  • upload_bot Post #1

    如何成为一个计算机知识体系完整的毕业生

    作者:冯昱尧 (知乎)

    转自:回答链接


    一般来说我喜欢把计算机或者直白一点讲“写代码”的知识分为三大类别:基础知识、领域知识和碎片知识。

    基础知识指的是你要吃写代码这碗饭必须掌握的通识性质的内容。即数学 + 计算机五大件。

    领域知识指的是你要精研某个方向时所要掌握的知识。写代码不同的方向之间差别还是很大的,很难多方面兼顾。

    碎片知识指的是一些实践中经常用的技巧或者一些不成体系,但又很有用的“常识”。这些知识虽然很琐碎,但是对于项目实践来说是必不可少的。

    1. 基础知识

    数学

    先说数学,我知道很多有经验的前辈都会告诉你数学其实没有什么用处,基本上平时做业务之类的根本用不上。这话没有问题,毕竟你做做 GUI 什么的是不需要微积分的。而且工作中大量的内容也是业务相关的,但是作为你选择某一方面精研之前的通识知识还是非常有必要掌握它的。不然你的路只会越走越窄。

    有相当一部分领域知识其实是需要数学基础的,比如图形学、机器学习、游戏里的物理模拟等等。主要内容就是三门课 微积分线代概率。个人感觉常用程度上来说应该是 线代 > 概率 > 微积分的。

    接下来是计算机五大件《数据结构》、《计算机组成原理》、《操作系统》、《计算机网络》和《编译原理》。这五门课是你以后做任何方向的基础。

    有的同学可能觉得这几门课中的某几门没有什么卵用。然而事实上在任何一个方向中深入以后都会和这几门课的内容纠缠在一起(计算机网络可能特殊一点,毕竟有单机的程序)。而且这几门课中所表述的思想以及解决问题所使用的模式和方法论可以说涵盖了整个计算机知识体系的精华。有时候虽然是完全不相干的领域,但是解决问题的思路却和某几门课中的方法惊人的相似。

    数据结构

    《数据结构》是所有课程的基础,重要性就不用提了,没有数据结构基本上没法写代码。

    计算机组成原理

    《计算机组成原理》这个可以薄弱一些,毕竟写代码其实和硬件打交道的机会不多。但是整个计算机运行的流程一定要搞清楚,例如缓存、内存、寄存器、CPU 是如何执行指令的,IO 设备是怎么输出的。一般汇编语言也会在这门课程中教一部分。有部分对于性能要求很高的程序会需要这方面的知识,比如高性能的服务器、游戏等等。

    操作系统

    《操作系统》理论上来讲你所有写到的程序都是运行在操作系统上的。文件系统
    、内存管理、进程管理、I/O 这都是写一个程序必不可少的内容。缺了这一门你可能就会出现写多线程程序却不知道怎么加锁之类的低级错误。如何进行进程间的通信?如何使用系统调用?如何处理文件?等等等等

    计算机网络

    《计算机网络》这一部分其实和《操作系统》有一小部分重叠。作为一个合格的程序员,至少要能闭着眼睛说出来 TCP/IP 五层协议栈是什么每层的主要功能是什么。不过在实践中一般重点把握传输层,自上而下掌握到 IP 层就可以了。对于编写网络程序来说是必不可少的内容。

    编译原理

    《编译原理》很多人觉得我又不发明编程语言,《编译原理》没什么卵用。其实不然,你看 web 里常用的模板引擎不就是用编译原理的知识写的么。那帮搞前端的程序员搞到最后哪个不是在搞编译(笑)。掌握这门课一来可以让你在处理程序错误的时候更加的熟练,另一方面可以利用编译的知识写一些小工具,能够大大提高工作效率。在这里推荐一本书《编程语言实现模式》代替大部头学院派的《编译原理》来看真的是非常棒,作为基础知识肯定够用了。

    其他

    此外就是掌握若干门编程语言。一定是若干门而不是一门,一方面可以改变你用程序定位自己职位的想法,另一方面可以开阔视野让你在解决问题时找到最适合的工具。个人觉得静态/动态、面向过程/面向对象、编译/解释。总共凑个三门能够把这几个都覆盖了应该够用了。比如 C++、C#、Lua(写游戏),Java、Js、Python/PHP(偏 web 一点),C++、Python、Matlab(科学计算)之类的组合都是不错的。

    最后就是软件工程的内容,大部头的东西可能大家没有兴趣看,但是一些软工的常识还是要知道的比如 bug 只和行数相关啊,往项目中不断加人并不会加速之类的。设计模式什么的还是要知道的,最起码常用的单例、工厂、装饰器等等都要清楚。我不是提倡过度设计,但是如果不知道你看别人的代码很可能会一脸懵逼。

    2. 领域知识

    对于不同的细分方向所需要掌握的领域知识是不同的,在你打好基础以后,如果想要成为一个“有用”的程序员,必然还需要掌握至少一个方面的领域知识。

    比如说做 web 的 HTTP 协议要搞清楚吧,前端的同学浏览器相关的东西什么响应式啦、什么 Restful、什么兼容性、什么跨域、什么 XSS 什么浏览器渲染网页的要搞清楚吧。

    我本职工作是做游戏的其他的就不乱说了。拿游戏来举例子吧。首先要熟悉一款游戏引擎吧,其次游戏中常用的编程模式要知道吧,像什么游戏循环、双缓冲、更新方法、对象池。AI 方面行为树和状态机要清楚。渲染方面基本的一个渲染流程要明白,能写 shader 最好等等。只是举个简单的例子,意思就是再掌握基础以后你需要将这些基础应用到一个特定的领域上去,你的体系才算是完整,不然就算是一个毛胚生。

    3. 碎片知识

    为什么叫做碎片知识呢,因为这部分内容其实还蛮难划分的,甚至你很难叫他“知识”,也许只是一些小技巧,常识之类的东西,但是却在工作中有很重要的地位。

    这里推荐一本书《程序员修炼之道:从小工到专家》虽然名字很山寨但是确实是一本好书。因为不存在体系我想到哪里就写到哪里了,可能会有遗漏,不过大家领会这个意思就好:

    调试

    调试其实是一门学问,但是很少有人会把调试作为一个单独的课程或者知识体系来说。但是他对于你写代码来说又是必不可少的。至少要会二分调试法吧,单步调试/日志输出调试,小黄鸭调试法等等。再复杂一点,如何利用操作系统提供的工具去 Attach 进程,监控他们的工作状态。调试网络程序时如何抓包等等。都是需要花时间来学习的。

    版本管理

    什么分支合并、如何解决冲突、如何合作、如何回滚等等。

    工具

    各种 IDE 啦,编辑器啦,包管理,Diff 工具,工作流管理等等等等。需要花费一定的时间去学习。

    检索信息

    如何查找一手资料,查找官方文档、如何快速切入一个新的库或者项目等等,无数次有人私信里边问我文档里写的清清楚楚的东西,让我觉得这实在是一种需要学习的能力。

    开源文化

    什么是开源、如何加入一个社区、如果为开源项目做贡献、如何编写文档等等

  • 伍欣格 Post #9

    受教了,现在大二,还要搞社会实践,平常自制力也不强,学完培养方案的课程就看番打游戏,项目科研经历基本为 0,大三要好好准备了

  • 🦐😟👟 Post #7

    真的会这样吗
    现在大一学计算机我也好痛苦
    完全不知道以后要干嘛…

  • 伍欣格 Post #1

    你交计算机的卷王分级:
    一等卷王出国交流成为人上人(快回来,班里发金条了)
    二等卷王在某不知名大厂实习,利用工作之余把学校的课程作业写完邮寄回交
    三等卷王在课堂上教老师上课
    四等卷王弄科研,搞竞赛,卷绩点,各种奖学金和荣誉称号拿到手软
    鼠鼠我连培养方案内的课程都学不明白,做模电实验数电实验提心吊胆,要退学力。
    鼠鼠的最终归宿:
    217951D90E1A50BCFB60CC18930DE8F6|375x500

  • Komeiji_Koishi Komeiji_Koishi Post #4

    现在的人越来越极端了,以前没这么多 jump 的,军训也没那么多瓜。学生和学校都更加极端了

  • Urdak Urdak Post #2

    你说的仲英是去年的吧,那个好像是因为毕业,去年确实很多,所以暑假给仲英彭康封了阳台,全校窗户装限位器