希望所有计算机专业同学都知道这些老师

C语言教程——翁凯老师、赫斌

翁恺老师是土生土长的浙大码农,从本科到博士都毕业于浙大计算机系,后来留校教书,一教就是20多年。

翁恺老师的c语言课程非常好,讲解特别有趣,很适合初学者学习。

郝斌老师的思路是以初学者的思路来思考的,非常适合小白,你不理解的问题,基本上他都会详细说一下。

C++——侯捷老师

看了候老师的课有种醍醐灌顶的感觉,强烈建议自学c++ 者仔细看候捷老师的课,会受益匪浅。

数据结构课程——陈越、王卓老师

青岛大学王卓老师的数据结构与算法基础,课程评价很高,通俗易懂,适合零基础入门。

陈越老师,被同学们尊称为“姥姥”,为各种同学答疑解惑,事无巨细,非常有热情和接地气,是个亲切的长辈一样的存在。

陈姥姥的课简单易懂,评价也非常高,认真学了肯定有很大的收获~

操作系统——李治军老师、向勇、陈渝

李治军老师的操作系统课程非常棒,讲解很清晰、详细,配图也相当丰富,对初学者很友好。

我看过不同老师讲的操作系统课程,觉得比较好的入门级课程是清华大学开设的网课《操作系统》,该课程由清华大学老师向勇和陈渝授课,虽然大彬上不了清华大学,但是至少可以在网上选择听清华大学的课嘛。

计算机网络——郑烇、杨坚老师

中科大郑烇、杨坚老师的计算机网络,老师讲课很幽默,思路很清晰,最重要的是,可以跟中科大学生一起完成专业知识的学习~

数据库——战德臣老师

哈尔滨工业大学战德臣老师的数据库系统原理,是国家精品课程,值得大家去学习。

机器学习——吴恩达、李沐

吴恩达老师,斯坦福计算机系的副教授,师从机器学习的大师级人物 Michael I. Jordan。吴老是,徒弟遍布美国名校,他们这一大学派的主要研究和贡献集中在统计机器学习(Statistical Machine Learning)和图模型(Probabilistic Graphical model)等。

更重要的是,他在学术圈内圈外知名度很高!除了师承之外,还有一个重要原因是他在斯坦福公开课里面主讲机器学习,讲的的确是非常好,在工程界非常受欢迎。

bilibili 2021新人奖UP主、亚马逊资深首席科学家,李沐老师的机器学习课程,可以说是机器学习入门课程的天花板,非常适合新手入门,没有很复杂的推导过程和数学知识,偏向于运用的角度。

python系列课程——嵩天

嵩天老师是国内大学Python教育的先行者, 是Python语言进入计算机等级考试的关键人物,为推广Python语言进入大学教育序列,作了很大贡献。嵩天老师的python系列视频深入浅出,值得零基础入学。

Java基础课程——韩顺平

韩顺平老师的Java课程主要面向初学者,讲课幽默风趣,通俗易懂,善于用已知的概念解释编程问题,对初学者非常友好,是自学Java很不错的选择!

最后给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

Github地址

本文转载于网络 如有侵权请联系删除

相关文章

  • Windows、linux下Redis使用,操作步骤说明

    简介Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过RedisSentinel提供高可用,通过RedisCluster提供自动分区。1.Window下安装①下载地址:https://github.com/MSOpenTech/redis/releases。 ②Redis支持32位和64位。这个需要根据你系统平台的实际情况选择,这里我们下载Redis-x64-xxx.zip压缩包到C盘,解压后,将文件夹重新命名为redis。 ③打开文件夹,内容如下: ④打开一个cmd窗口使用cd命令切换目录到C:\redis运行:redis-server.exeredis.windows.conf复制如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.windows.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面: ⑤

  • STL学习笔记(4)常用容器 vector

    vector容器基本概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必害怕空间不足而一开始就要求一个大块头的array了。Vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,一旦vector旧空间满了,如果客户每新增一个元素,vector内部只是扩充一个元素的空间,实为不智,因为所谓的扩充空间(不论多大),一如刚所说,是”配置新空间-数据移动-释放旧空间”的大工程,时间成本很高,应该加入某种未雨绸缪的考虑,稍后我们便可以看到vector的空间配置策略。vector迭代器Vector维护一个线性空间,所以不论元素的型别如何,普通指针都可以作为vector的迭代器,因为vector迭代器所需要的

  • 大数据开发:关于JVM内存模型JMM详解

    一.JMM的定义Java程序内存的分配是在JVM虚拟机内存分配机制下完成。Java内存模型(JavaMemoryModel,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。简要言之,jmm是jvm的一种规范,定义了jvm的内存模型。它屏蔽了各种硬件和操作系统的访问差异,不像c那样直接访问硬件内存,相对安全很多,它的主要目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题。可以保证并发编程场景中的原子性、可见性和有序性。二.JMM的重排序屏障从Java源代码到最终实际执行的指令序列,会经过三种重排序。但是,为了保证内存的可见性,Java编译器在生成指令序列的适当位置会插入内存屏障指令来禁止特定类型的处理器重排序。对于编译器的重排序,JMM会根据重排序规则禁止特定类型的编译器重排序;对于处理器重排序,JMM会插入特定类型的内存屏障,通过内存的屏障指令禁止特定类型的处理器重排序。这里讨论JMM对处理器的重排序,为了更深

  • Python|对多角星的绘制

    1前言在初步学习python的过程中,对python绘图有了一定程度的认识,在结合书本知识及学长帮助下,开始自我摸索python绘图的基本技巧。2准备安装python环境以及pycharm。3步骤3.1调用turtle,开始绘图 importturtle复制3.2调整画笔尺寸及颜色 turtle.pensize(10) turtle.color("yellow")复制3.3控制画笔向前运行200个单位,并左转160°turtle.forward(200) turtle.left(160)复制3.4重复3.3指令,控制画笔运行。 turtle.forward(200) turtle.left(160) turtle.forward(200) turtle.left(160) turtle.forward(200) turtle.left(160) turtle.forward(200) turtle.left(160) turtle.forward(200) turtle.left(160) turtle.forward(200) turtle.left(160) t

  • 女朋友问敖丙:什么是分布式事务?

    你知道的越多,你不知道的越多前言上一篇文章已经讲完分布式了,那暖男说要讲分布式事务那就一定会讲,只是我估计大家没料到暖男这么快就肝好了吧?事务想必大家并不陌生,至于什么是ACID,也是老生常谈了。不过暖男为了保证文章的完整性确保所有人都听得懂,我还是得先说说ACID,然后再来介绍下什么是分布式事务和常见的分布式事务包括2PC、3PC、TCC、本地消息表、消息事务、最大努力通知。事务严格意义上的事务实现应该是具备原子性、一致性、隔离性和持久性,简称ACID。原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的中间状态。隔离性(Isolation),指的是多个事务并发执行的时候不会互相干扰,即一个事务内部的数据对于其他事务来说是隔离的。持久性(Durability),指的是一个事务完成了之后数据就被永远保存下来,之后的其

  • 一个可以查看其他人的实时位置的行车记录仪程序

    BlackVue是一家拥有自己的社交网络的行车记录仪公司。通过在车内安装一个小型的互联网行车记录仪,BlackVue用户可以在行车记录仪的摄像机检测到异常事件(例如有人与停放的汽车相撞)时收到警报。客户还可以允许其他人收听/收看他们的摄像机拍摄的画面,简称投稿,从而让其他人“充分体验在全世界驾驶的兴奋和乐趣”此外,他是一家韩国公司,国内也有售卖这个行车记录仪。然而,实际上BlackVue的APP程序可以在几天甚至几周内实时提取和存储用户的GPS位置。这也就导致了一个双刃剑:保护你的安全的同时威胁到了你的安全。 通常,BlackVue允许任何人创建一个帐户,然后查看正在广播其位置和实时供稿的摄像机地图。默认情况下不启用此广播,并且用户在设置或配置自己的摄像机时必须选择该选项。目前来看,进入APP后,能看到全球的使用该BlackVue并开启了社交功能的客户,以及实时供稿的用户。实时供稿是啥意思?比如下面这个稿子,直接被BlackVue作为广告进行宣传。实际上,这些车主的GPS数据是可用的,并且可以公开访问。这也就意味着,它可以使行车记录仪用户广播他们的摄像机进行拍摄所上传的稿件和驱动器,实

  • 4.4 Bond Risk 债券风险

    59OnefactorHedge59.1描述一个IRfactor,识别IRfactor的公共例子Interestratefactor是影响利率曲线上各个独立利率的randomvariableshedger需要理解在利率变化时如何hedgeinvestor需要决定当利率发生期望改变的最优投资portfoliomanager需要知道当利率发生期望改变是的portfolio波动率A/Lmanager需要匹配利率敏感资产和负债59.2定义和计算DV01,根据收益率变化计算价格变化DV01:dollarvalueofan01,当利率变动一个basispoint(0.0001)的时候price变动多少59.3给出DV01,计算要对冲一个option的bond的faceamount59.4定义,计算和解释Effectiveduration,给出一个yield变化,计算price变化Effectiveduration=:利率减少一个单位的bondvalue :利率增加一个单位的bondvalue59.5比较和对比DV01和effectiveduration对价格的敏感度DV01度量的是yield每变化

  • 工具 | 常用工具镜像网站又更新了(Golang、Chrome、VsCode、NDK等)

    欢迎扫码关注公众号flysnow_org,订阅镜像的后续更新。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。 最近Golang,AndroidNDK、Chrome以及VSCode等都更新了新版,为了让大家更好的下载这些新版本的工具软件,特地对这些工具等进行了一次更新。AndroidNDKAndroidNDK最新版本为android-ndk-r14b,可以下载使用了。所有AndroidNDK版本下载地址http://mirrors.flysnow.org/最新版本下载地址:http://mirrors.flysnow.org/android/ndk/android-ndk-r14b-darwin-x86_64.ziphttp://mirrors.flysnow.org/android/ndk/android-ndk-r14b-linux-x86_64.ziphttp://mirrors.flysnow.org/android/ndk/android-ndk-r14b-windows-x86.ziphttp://mirrors.flysnow.org/android/ndk/android

  • Mysql性能参数优化

    1.Max_connections (1)简介 Mysql的最大连接数,如果服务器的并发请求量比较大,可以调高这个值,当然这是要建立在机器能够支撑的情况下,因为如果连接数越来越多,mysql会为每个连接提供缓冲区,就会开销的越多的内存,所以需要适当的调整该值,不能随便去提高设值。 (2)判断依据 showvariableslike'max_connections'; +-----------------+-------+ |Variable_name|Value| +-----------------+-------+ |max_connections|151| +-----------------+-------+ showstatuslike'Max_used_connections'; +----------------------+-------+ |Variable_name|Value| +----------------------+-------+ |Max_used_connections|101| +----------------------+-------+ (

  • SpringCloud学习笔记:声明式调用Feign(4)

    1.Feign简介   Feign采用声明式API接口的风格,将JavaHTTP客户端绑定到它的内部。   Feign的首要目标是简化JavaHTTP客户端调用过程。 2.Feign客户端示例      Feign依赖:spring-cloud-starter-feign   EurekaClient依赖:spring-cloud-starter-eureka   Web依赖:spring-cloud-starter-web   SpringBoot测试依赖:spring-boot-starter-test <?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0

  • java rpc

    这两天看公司的一个server的源码。 然后看了下里面的rpc实现,感觉很有意思。 大概实现一个rpc工具需要做如下工作: 1、定义序列化的对象,用于在client和server之间传递(接口的参数可以是序列化的,也可以把所有信息封装到一个可序列化对象当中进行传递) 比如:有接口ISample,方法有test(T1x1,T2x2) 你可以选择设置T1和T2为可序列化的,client端就可以直接通过代理调用这个方法 也可以如下:test(Invocationinvo)->test(T1X1,T2X2) 传递的是封装好的可序列化的对象 2、选择io模式,是bio还是nio。当然现在大部分都是nio了 3、定义client和server的结构。这时候涉及动态代理。 4、server端要存储一个map:保存接口和对应的实现类的hash关系。 5、在server初始化的时候,需要传递被代理的对象,同时放到4中的map中 6、client获取动态代理的时候只需要传递接口的class就行,server会通过map去查询被代理实例 7、client中要实现以下socket,在执行代理的时候,连接

  • C++中的Struct和Class异同

    C++中为了和语言兼容,保留了C语言中的struct关键字,并且进行了适当扩充. C语言=>struct只是包含成员变量,但不包括成员函数 C++中=>struct和class非常类似,既可以包括成员变量,又可以包括成员函数 也就是说C++中,struct和class基本上是可以通用的,只有几个小细节的不同,主要包括以下几方面: 1.使用class时,类中的成员默认都是private属性;而使用struct时,结构体中的成员默认都是public属性 2.class继承默认是private继承.而struct继承则默认是public继承 3.class可以用在模板参数中,但是struct不可以   template<classT>--可以 template<typenameT>--可以 template<structT>--不可以 structStaff { public: Tname; };复制  

  • Linux Vim -d 比较两个文件

    背景 LinuxVim-d使用笔记 正文 1.使用vim的比较模式打开两个文件:vim-dfile1file2或vimdifffile1file22.如果已经打开了文件file1,再打开另一个文件file2进行比较::vertdiffsplitfile2如果没有用vert命令,diffsplit则会分上下两个窗口。3.如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。分别在两个窗口里面输入命令::diffthis4.如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新::diffupdate5.定位到不同点:[c  跳到前一个不同点]c  跳到后一个不同点6.在窗口间跳转:ctrl-ww  跳到下一个窗口ctrl-wh  跳到左侧窗口ctrl-wl  跳到右侧窗口ctrl-wj  跳到下方的窗口ctrl-wk  跳到上方的窗口7.合并文档:dp   &nb

  • 动态规划( python)

        动态规划的三要素:最优子结构,边界和状态转移函数,最优子结构是指每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到(子问题的最优解能够决定这个问题的最优解),边界指的是问题最小子集的解(初始范围),状态转移函数是指从一个阶段向另一个阶段过度的具体形式,描述的是两个相邻子问题之间的关系(递推式)   重叠子问题,对每个子问题只计算一次,然后将其计算的结果保存到一个表格中,每一次需要上一个子问题解时,进行调用,只要o(1)时间复杂度,准确的说,动态规划是利用空间去换取时间的算法.   判断是否可以利用动态规划求解,第一个是判断是否存在重叠子问题, 例子: 爬楼梯 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定n是一个正整数。 示例1: 输入:2 输出:2 解释:有两种方法可以爬到楼顶。 1.1阶+1阶 2.2阶 示例2: 输入:3 输出:3 解释:有三种方法可以爬到楼顶。 1.1阶+1阶+1阶 2.1阶+2阶 3.2阶+1阶https://leetcode-cn.com/expl

  • 「10.14」小P的2048(模拟)&#183;小P的单调数列(性质,DP)&#183;小P的生成树(乱搞)

    A.小P的2048 模拟.....又没啥可说的,以后要认真打打模拟题了...   B.小P的单调数列 考场$n^2log(n)$的SB思路有人听吗 正解当然不是这样, 事实上我们每次选取的只有一段区间,或是两段区间 假设三段区间$a,b,c$,假设$(a+b)/2>(a+b+c)/3$得出$(a+b)/2>c$ 假设$c>(a+b+c)/3$得出$c>(a+b)/2$,也就是说我们我们不如选一个或两个区间优 其实自己想想也发现我们选多个区间不如选其中最大的一两段值更大 然后就很简单了 C.小P的生成树 重新学了波向量??对不起老杨QAQ..... 然后我们发现最后求得是向量的模,所以对于最大生成树的边的大小 我们可以把它投影到一个向量上$(cos,sin)$,然后我们可以通过向量相乘的方式求出他在新的向量下 的投影,然后我们可以求出任意两条边在某条投影上的长度相同 然后划分区间,求最大生成树 听说直接$rand$即可$AC$

  • 不要让一棵树来掌管我们的婚姻

    不要让一棵树来掌管我们的婚姻婚姻有一次下班回家的路上,我买了一盆水培红掌。 我是一个养花小白,放多少水,多长时间换一次水都不清楚,所有的水培知识都得去网上查。 我把它放在电脑桌上,每天坐在电脑前都会望着它出神,啧啧称叹,一天天,嫩绿的小叶片渐渐长大,整个花株越来越茂绿,突然有一天,我在叶片底下发现了一个小花苞,内心欣喜不已,几天后,嫩红色的花卷就开始一点点地绽开,和大红花依偎在一起的画面,惹人不尽怜爱。 令人没想到的是大红花很快就开始枯萎,先是鲜红变成暗红,三天后我下班回来看到连花茎都折了,略有不舍地剪掉那一枝花茎,甚是惋惜,整个枯萎的过程很快,但是它给我们演示出一个生命周期所应该拥有的样子:生机、娇艳与凋零。 过年,我闲来无事,就在老家四处闲逛,到处都是溜孙子的爷爷和奶奶,老人家沉稳淡定,小孩子淘气活泼,他们自成一道风景。 年年岁岁花相似,岁岁年年人不同,每年都会有新人加入抱孙子的行列,也会有人因为各种原因退出了。 老人与小孩就像那两朵花儿,在时间的力量下,新旧必然交替,一朵刚刚绽开,一朵就渐渐枯萎,随着时间流逝,衰老与新生是生命永远也无法逃遁的局,但一些经得起时间考验的东西仍然需

  • 下载文件 http路径ftp路径

    ///<summary> ///下载文件http路径ftp路径 ///</summary> ///<paramname="uri">文件地址</param> ///<returns>字节数组</returns> staticprivatebyte[]ConvertFileToByte(stringuri) { byte[]by=null; if(!string.IsNullOrEmpty(uri)) { WebRequestwebRequest=null; WebResponsewebResponse=null; try { if(uri.StartsWith("https://",StringComparison.CurrentCultureIgnoreCase) ||uri.StartsWith("http://",StringComparison.CurrentCultureIgnoreCase)) { webRequest=(HttpWebRequest)WebRequest.Create(uri); we

  • Flood Fill 图染色

    题目描述 现在有一个仅包含‘X’和‘O’的二维板,请捕获所有的被‘X’包围的区域 捕获一个被包围区域的方法是将被包围区域中的所有‘O’变成‘X’ 例如 XXXX XOOX XXOX OXXX 执行完你给出的函数以后,这个二维板应该变成: XXXX XXXX XXXX OXXX #definedfssolve typedefvector<vector<char>>g; intdx[]={0,0,-1,1},dy[]={-1,1,0,0}; classSolution{ public: voidsolve(vector<vector<char>>&board){ intn=board.size(); if(n<1)return; intm=board[0].size(); for(inti=0;i<n;++i){ dfs(board,i,0,'*'); dfs(board,i,m-1,'*'); } for(inti=0;i<m;++i){ dfs(board,0,i,'*'); dfs(board,n-

  • 3.2

    1.get()采用立即加载方式,而load()采用href="http://www.haosou.com/s?q=%E5%BB%B6%E8%BF%9F%E5%8A%A0%E8%BD%BD&ie=utf-8&src=wenda_link" target="_blank">延迟加载;get()方法执行的时候,会立即向数据库发出查询语句, 而load()方法返回的是一个***(此***中只有一个id属性),只有等真正使用该对象属性的时候,才会发出href="http://www.haosou.com/s?q=sql%E8%AF%AD%E5%8F%A5&ie=utf-8&src=wenda_link" target="_blank">sql语句2.如果数据库中没有对应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException

  • Linux 虚拟机安装后的配置和一些命令符笔记

    一、安装后的配置 1、设在终端的字体为等宽字体比如:DejaVuSansMono2、将当前的普通用户加入到sudo用户组adduserensudochmod+w/etc/sudoersmousepad/etc/sudoers3、编辑source.list加入国内的源两个选一个##163源debhttp://mirrors.163.com/debian/jessiemainnon-freecontribdebhttp://mirrors.163.com/debian/jessie-updatesmainnon-freecontribdebhttp://mirrors.163.com/debian/jessie-backportsmainnon-freecontribdeb-srchttp://mirrors.163.com/debian/jessiemainnon-freecontribdeb-srchttp://mirrors.163.com/debian/jessie-updatesmainnon-freecontribdeb-srchttp://mirrors.163.com/de

  • 代码抽离应用举例

    拿项目中的路由代码抽离举例: 源代码    。。。此处省略一大堆。。。  我们可以看到,constantRoutes文件在router文件夹里的index.js里写了很多很多,很臃肿。 改进后:新建一个common.js文件,把上面那一坨代码全部搬进去  common.js文件内容如下:  规律: 一个抽离的文件 constxxx=[]   导出后是exportdefaultxxx 再举一个抽离的例子,以下是我把某个echart公共样式单独做的抽离:  然后引用:   在这里额外补充一个技能,当我们想一次性集中引入很多路由文件的时候,可以借用webpack里的require.context方法,详见此文>>>(使用require.context实现前端工程自动化)。 当然,你也可以不这么折腾,直接一个个的importxxxfromxxx,类似于这样↓↓↓  只要你不觉得麻烦就好。  附上index里的代码: constfiles

相关推荐

推荐阅读