后端知识那么多,重点要学啥?

前端什么知识点最难学? 这个最就很难判断,每个人的理解程度不一致,但有两种人,觉得难的他还没学会,会的不觉得难,但是前端不一样了,会了也难,因为谁都对前端提点建议(啥也不懂的老板、产品经理、项目经理、后端、设计) 从小白刚入门的时候会觉得css难,记得东西比较多,js比较庞大也有可能会学乱。但是要说什么在前端比较重要的话,js学好比较重要。Vue和React这两个都是非常优秀的框架,开始不必纠结于选择哪个框架,会了一个,另一个就简单了。这样还纠结的话,我推荐你先学习 React。 Vue 相对来讲偏向通过模板的方式也. 阅读详情

图片

最近有小伙伴问我,一名后端工程师的学习路线是什么?其实现在很多程序员都不是科班出生的,大学压根没学过什么计算机相关的课程。非科班出生的程序员的劣势在于基础会稍差,比如计算机基础、计算机网络等都了解的不多,不过没关系,只要你利用业余时间系统的来学习,照样可以做到后来居上。但是问题是,我们的学习路径是什么?该如何学,网上课程那么多,我到底该看哪一个?打开自己的收藏夹,数不清的资料全部在吃灰,到头来一个也没学。

图片

其实同类型的资料我们保存1-2个就足够了,然后一段时间内专心学习一门知识,猥琐发育,最后惊艳所有人。

图片

ok,废话不多说,我今天要分享的就是后端工程师的学习路径和相关的书籍、视频,由于后端语言居多,所以本文不会分享语言相关的内容。

计算机组成原理

首先要讲的自然就是计算机组成原理相关的知识了,当然这并不是和你单单的介绍计算机是什么组成的,不是教你如何组装电脑,而是告诉你比如计算机是如何运算我们的数据的、CPU这个大脑是如何高效处理我们的逻辑的、CPU又是如何与内存之间通信的,加快执行我们的程序在CPU维度有哪些优化以及我们运行程序的时候如何解决CPU和内存、内存和磁盘之间的速度鸿沟等等...

这里我和大家推荐 《计算机组成与设计 硬件/软件接口》 这本书

图片

学习这本书你可以获取以下知识:

  1. 计算机是怎么从大型设备逐渐发展到今天的个人PC机,以及计算机系统结构中的8个伟大的思想:面向摩尔定律的设计、抽象的简化设计、加速大概率事件、通过并行提高性能、通过流水线提供性能、通过预测提供性能、存储器层次、通过冗余提高可靠性。

  2. 如何判断一个CPU的性能?最直白的反应就是CPU够不够快,也就是我们的程序要跑多久,这个响应时间我们一般称之为CPU执行时间,这里需要注意的是CPU执行时间并不包含程序执行期间涉及的IO,再细分的话,又可以分为用户CPU时间和系统CPU时间

  3. 有无符号数和无符号数是如何表示的?CPU如何进行比较运算、分支判断、循环执行的?我们的代码其实是要经过编译、汇编、链接这样几个流程的,加法、减法、乘法、除法以及浮点数相关的运算在计算机层面是如何被实现的。

  4. CPU是如何进行数据冒险,控制冒险的?流水线技术是如何提供吞吐的,处理器的数据通路和控制同路是如何设计的。

  5. 再接下来就是存储器相关的知识了,比如虚拟内存技术、程序分段技术、分页技术,当发生缺页后如何找到磁盘页的,以及为了提升地址的查询速度,做了哪些优化,页表的好处与坏处是什么?TLB的好处与坏处是什么?

总之,学习了计算机组成之后,内功绝对可以大增。如果觉得书本知识枯燥难以阅读的话,我这里再给你推荐个视频:计算机科学速成课(https://www.bilibili.com/video/BV1EW411u7th)

图片

非常生动形象的课,一共40集,每集大概10分钟,全部看完7个小时足矣,非常适合入门,这个视频配上书籍,简直完美。

操作系统

学习计算机组成原理之后,我们会了解计算机各个硬件之间是如何协调工作的,那么接下来就是肝操作系统了,操作系统是处于计算机硬件与软件资源之间的程序。从程序员的角度来看,学习操作系统可以帮助我们更好的了解程序是如何被调度的等等。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务,操作系统也提供一个让用户与系统交互的操作界面。这里和大家推荐 《现代操作系统》 这本书

图片

通过学习这本书你可以获得以下知识:

  1. 进程是什么、进程的模型、进程的创建、进程的终止、进程的层次结构、进程的实现、多道程序的设计模型

  2. 线程是什么、线程模型、用户空间的线程、内核空间的线程、单线程与多线程的优缺点

  3. 进程间可以通过哪些方式来通信,什么是进程间的竞争条件、临界区

  4. 调度过程涉及到的算法,比如先来先服务、短作业优先算法、最短剩余时间优先以及比较公平的时间片轮转调度

  5. 常见的页面置换算法有哪些,比如最优页面置换算法、最近未使用页面置换算法以及最近最少使用页面置换算法等等

  6. 文件系统的了解,比如有关文件的构造、命名、访问、使用、保护、实现和管理是怎么设计的

  7. IO设备的了解,比如如何读写IO设备的内容,常见的有内存映射IO、直接存储器存取

  8. 了解什么是死锁,造成死锁的条件以及解决死锁的经典方法,如何预防死锁等等

这是由清华大学的老师讲的操作系统视频课,简单、通俗易懂,每段视频的时长也不长,大概就10来分钟。

TCP/IP

当具备了计算机组成、操作系统的基础知识后,接下来就可以看看网络相关的内容了,计算机网络中面试官最喜欢问的就是TCP/IP相关的知识了,关于这方面的知识,我推荐一本书 《图解》TCP/IP

图片

这本书全文基本都是图文结合的,阅读起来非常轻松,不得不说这个日本作者很牛逼,可以把很复杂的网络协议解释的这么简单,关键图文的方式更加容易记忆。

我这里还推荐一本掘金小册 《深入理解 TCP 协议:从原理到实战》

图片

这本小册,我记得当时花了2-3天就看完了,整个阅读体验非常丝滑,也是非常通俗易懂的书籍,如果想要应付面试,这本小册绝对是个不错的选择。总之通过以上两本书,你可以获得以下知识:

  1. 网络的分层模型

  2. TCP协议为什么是可靠的协议

  3. 什么叫面向连接、基于字节流、全双工的协议

  4. 数据包是如何被拆分的,MTU和MSS分别是什么,位于哪一层

  5. 为什么TCP、IP的握手需要三次,挥手要四次,挥手三次行不行

  6. 三次握手太慢,有没有更快的方式

  7. TIME_WAIT是什么状态?TIME_WAIT是哪一方的状态,为什么TIME_WAIT那一方需要持续2个MSL的时间

  8. 不知道你有没有遇到过"Connection Reset" 或者"Connection refused" ,它们代表什么意思

  9. 发送方没收到接收方的ACK怎么办,发送方重传的机制是怎么样的,多久重传才合适

  10. 如果接收方没有能力接受大量的数据怎么办,这就引入了滑动窗口的概念,滑动窗口是如何控制数据窗口大小的

  11. 一开始发送方并不知道接收方能接收多少数据,那如何发送数据呢,每次发一点太慢,每次发很多对方又接收不了

总之,如果你的工作不是搞网络的,又不想花费大量时间来阅读TCP相关的知识,那么上面两本书个人觉得足够了。

数据结构与算法

这方面我看的书比较少,所以不打算推荐书籍,数据结构与算法可能大家更加注重的算法,BAT等大厂的面试离不开算法,以前听到小道消息,据说字节跳动的面试官一般算法题都会从leetcode上挑选原题,并且也不会太难,所以这方面的知识,我还是直接建议大家动手练写,直接去leetcode上刷题,比如每日2道,一个月下来就是60道

图片

如图所示,具体的算法分类大概这么多,大家刷题的时候,注意不要把精力全部都放在一种类型上,尽量广一点,当然有很多冷门的类型,个人觉得也不必花费太多时间,像热门的算法如数组、字符串、动态规划、图、链表等可以多花点心思。

这里再推荐一个学习数据结构的有趣网站 visualgo(https://visualgo.net/zh)

图片

这个网站通过动图的方式帮助你了解各种数据结构是怎么样的形式。

图片

比如对于这个二叉搜索树来说,每次走到哪个节点,对应的代码还给你展示出来,确实很生动。

MySQL

MySQL应该是每个后端工程师必备的技能,当然这里说的不是简单的CURD,而是稍微高级点的,比如索引知识、架构模式、高可用等等,由于现在MySQL基本都是使用InnoDB存储引擎,因此我推荐 《MySQL技术内幕 InnoDB存储引擎》

图片

通过这本书,你可以了解到以下知识:

  1. MySQL几种存储引擎的介绍与比较

  2. InnoDB的架构模式

    图片

  3. 插入缓冲、两次写、自适应哈希、异步IO、刷新邻接页分别是为了解决什么问题

  4. 日志类型,比如错误日志、慢查询日志、二进制日志等

  5. 索引相关知识,为什么用b+树索引,聚集索引和辅助索引的区别,b+树索引的分裂与管理,什么情况下用联合索引,覆盖索引为什么好

  6. 锁相关的知识,InndoDB会涉及哪些锁,行锁有哪些算法,死锁怎么避免

  7. 什么是脏读、幻读,如何解决

  8. 事务相关的知识,这个是重中之重了,比如redo log、undo log是干什么的,事务的隔离级别有哪些,它们有什么区别?XA事务是在什么地方体现的,长事务会有什么问题

自古MySQL就是后端同学面试中的必考技能,并且随着互联网卷的程度越来越高了,MySQL问的姿势也多了,因此这方面是需要多花时间学习的。

当然如果条件允许的话,也推荐看林晓斌老师的《MySQL45讲》,但是这门课不适合新手小白,适合有一定MySQL基础的从业人员,看完绝对收获满满。

Redis

说了数据库,就得说缓存了,说到缓存,那就是当下最流行的NoSQL数据库Redis,Redis面试的重要程度不亚于MySQL,我这里和大家推荐 《redis的设计与实现》

图片

通过这本书,你可以获得以下知识:

  1. 基本的底层数据结构以及优缺点,比如SDS、整数集合、跳跃表、压缩列表

  2. 哈希表是如何解决冲突的

  3. 持久化相关的,AOF和RDB的区别,它们的优缺点是什么,AOF和RDB的过程会阻塞主进程吗

  4. redis的过期键是如何删除的

  5. redis的事件模型,文件事件和时间事件分别是什么

  6. serverCron函数是干嘛的

  7. 主从复制模式下,旧版和新版的复制模式有什么区别

  8. 哨兵、分片

  9. lua脚本解决原子性的问题

这本书侧重原理与实现,阅读起来也是通俗易懂,适合新手小白和需要进阶的工程师。

Java后端期末考试复习重点 java后端期末考试复习重点 选择题 15个 填空题 10个 MongoDB是非关系型数据库(NoSQL) 程序填空 3题 7空 1. 多线程 (启动线程 两种方法,形态,判断线程个数) 2. 文件流 ( IO 流 填选也有 分类 io流基础(读写 reader write stream)) 3. JDBC 数据库 (12 章 JDBC是什么 连接数据库:下载 配置 创建处理对象 statement preperstatement预处理 性能(好处)crud exute 返回值 excuteupdate 阅读详情

相关推荐

到底要学前端还是后端?

整体上来看,前端社区会更活泼一点。如果你是这样一种情况:喜欢直观,可见的开发体验,那就选前端。就是,那么,你就很适合做前端开发。前端更多的不是功能问题,是易用性问题UI设计是一种观点测试是一种观点服务验收是一种观点客户又是一种观点所以前端还要多考虑这些,普遍领导管理者都是后端出身,他也觉得前端简单,在整个项目中分量不那么重要。按晋升空间,优先后端,你看过那个前端前辈是项目经理的。前端人员比后端少,按普遍配置,两个后端加一个前端,前端在开发中连个讨论的都没有,或许有人会说,你公司小,舍不得找前端。

m0_57290404的博客 891

详解后端工程师必看学习路线图(含初、中、高阶)

设计模式:网关模式,Gateway、边车模式,Sidecar、服务网格,Service Mesh、防腐层,Anti-corruption Layer、分布式锁、配置中心、异步通讯、幂等性。工程:监控追踪、服务/资源调度、流量控制、数据调度、开发与运维自动化、负载均衡+健康检查、服务发现+动态路由+健康检查、自动化运维。弹性(容错)设计:服务降级、服务限流、熔断设计、补偿事务、隔离设计、异步通讯、幂等性设计、重试设计、bulkhead。算法与数据结构:性能分析、基本数据结构(列表、树等)、排序、查找、图。

zf888999666的博客 2818

面向面试的Java后端必会知识点概述及面经

这是一篇面向面试的Java后端开发知识点大纲,也是博主本人实习&秋招面试的面经总结(阿里&腾讯&字节&京东等)。可以帮助你快速掌握混入实习队伍的所需知识图谱,也可以用来查漏补缺。博主本人水平有限,如有错漏请指出,感谢。

weixin_43765802的博客 4060

后端开发要掌握的东西

后端工程师至少要掌握一种编程语言。掌握一种编程语言,指的是要足够了解这种语言的功能和语法特性,能够理解它的设计原理、能力边界与高级功能,这样也有助于其他语言的学习。后台开发中,熟练使用Linux系统是最为关键的一环,毕竟后端服务多数都运行在Linux系统上。后台服务程序会处理各种数据,如订单、合同、用户数据等,这些数据一般存储到数据库中。后端开发中,由于系统自身的漏洞引发的恶意攻击等安全问题,防止程序被别人篡改。由于前端与后端的工作密切相关,所以后端工程师也应了解有关前端的知识。

weixin_52896512的博客 1678

亲身体验!后端工程师学习路径、书籍、视频推荐

最近有小伙伴问我,一名后端工程师的学习路线是什么?其实现在很多程序员都不是科班出生的,包括我自己,大学压根没学过什么计算机相关的课程。非科班出生的程序员的劣势在于基础会稍差,比如计算机基础...

编程与实战的博客 1060

PX4实战(十):PX4导航模块(Navigator)详解

本文将对 PX4 固件 v1.14.3 版本中的 Navigator(导航)模块进行详尽的技术剖析。作为飞行控制栈中的高层决策核心,Navigator 模块承担着将抽象的任务指令转化为具象的底层控制设定点的关键职责。本文基于对 src/modules/navigator 目录下源代码的深究研究与架构反推,详细阐述了该模块的文件组织结构、基于状态机的控制逻辑、uORB 异步通讯机制、核心任务模式(Mission)与返航模式(RTL)的实现细节,以及地理围栏(Geofence)与任务可行性检查(Feasibil

PX4-SLAM-PNC 669

一份完整的后端学习路线

大家好呀,我是捡田螺的小男孩。最近很多读者跟我聊天,想要一份后端学习路线。很重要,清晰的学习路线,能让你在成功道路上事半功倍。所以趁着这个周末,给大家整理一份完整的(偏Java方向)。相信看完后,不管是还在学校读书的学生还是已经工作的伙伴,都会有帮助的。

weixin_42907150的博客 1万+

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 582

后端开发:需要学习哪些技术?

互联网行业发展至今,后端开发的职责早已不再是过去简单地围绕着数据库编排 CRUD(Create、Retrieve、Update、Delete)服务。很多时候,后端应用的第一行代码尚未写就,工程师便需要与产品、运营、法务等人员和网络、中间件、操作系统、数据、算法、运维、安全等技术体系打交道,互联网企业对工程师的要求越来越高。

AC_King2016的博客 8210

高频电磁场仿真-主题064-伴随变量法与灵敏度分析

在电磁器件优化设计中,梯度信息对于指导优化方向至关重要。考虑一个典型的电磁优化问题: 其中 p=[p1,p2,...,pn]Tp = [p_1, p_2, ..., p_n]^Tp=[p1​,p2​,...,pn​]T 是设计参数向量(如几何尺寸、材料参数等)。传统有限差分法的困境:示例: 一个具有100个设计参数的天线优化问题伴随变量法(Adjoint Variable Method, AVM)通过引入伴随场,将梯度计算复杂度从 O(n)O(n)O(n) 降低到 O(1)O(1)O(1):伴随变量法在计算

kkchenjj的博客 413

芒果YOLOv8改进52:主干Backbone篇之GhostNetV2:提出原创GhostNetV2 架构升级版:引入长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干,打造高效轻量级检测器

长距离注意力机制增强廉价操作,打造轻量级检测器

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1612

学伴(KnowAI)项目开发实战:从零构建一个AI驱动的在线教育平台

摘要 学伴(KnowAI)是一个AI驱动的个性化学习平台,旨在解决当前在线教育中缺乏反馈和学习路径规划的问题。该项目通过以下核心功能提供完整学习闭环: 智能评测:学完自动生成AI测验验证学习效果 24小时学伴:基于LangGraph+RAG的对话助手随时答疑 个性化推荐:根据学习历史智能推荐课程 技术栈采用全栈方案: 前端:Vue3+TS+Element Plus 后端:FastAPI异步架构 数据库:MySQL+Redis+MongoDB+ES多级存储 AI层:LangChain+DeepSeek构建多A

2301_81109281的博客 406

FANUC机器人S523 新款PN板卡与西门子PLC通信配置介绍

FANUC机器人S523 新款PN板卡与西门子PLC通信配置介绍

Robot_PLC_HMI_Automation 355

java后端开发需要学什么

java后端开发需要学的知识有:1、Java基础语法和oop特性;2、数据库相关知识,例SQL语言、MySQL、非关系型数据库;3、Web基础知识;4、Web主流框架,例Spring、SpringMVC、Mybatis;5、前端知识等。 本篇文章将大致介绍后端从基础到独立后端的学习路线,仅供参考。 Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射 的特性,很多框架的技术都依赖它,比如 Spring 核心的

machacoder的博客 9096

【数据集】3D-GloBFP:全球首个三维建筑轮廓数据集

【数据集】3D-GloBFP:全球首个三维建筑轮廓数据集

WW、forever的博客 1691

基于Cesium移动的天空云

天空中的云朵也算是一种天气气候的效果,它能更加逼真的反映当前的天气状况,可以是白云朵朵,也可以是乌云密布,结合其他天气效果,可以组合形成较为真实的三维可视化场景。

星云数海的博客,一个专注GIS十多年的GISer人。 449

Java后端开发需要学什么

java后端开发需要学的知识有:1、Java基础语法和oop特性;2、数据库相关知识,例SQL语言、MySQL、非关系型数据库;3、Web基础知识;4、Web主流框架,例Spring、SpringMVC、Mybatis;5、前端知识等。 本篇文章将大致介绍后端从基础到独立后端的学习路线,仅供参考。 推荐课程:Java教程。 Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射 的特性,很多框架的技术.

m0_70565884的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

学python重点是什么_当我们学Python时,重点学什么技术容易就业?

推荐下小编的Python学习群;629440234,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2019最新的Python和0基础入门教程,欢迎初学和进阶中的小伙伴。每天晚上20:00都会开直播给大家分享Python知识和路线方法,群里会不定期更新最新的教程和学习方法(进群送2019Python学习教程),大家都是学习Python的,或是转行,或是大学生,还有工作中想...

weixin_28953369的博客 163

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++后端开发重点知识点

将“理论理解 -> 实践验证 -> 项目集成”形成一个闭环,每学完一个知识点进行实践,保证深入理解为未来开发生涯打下坚实的基础。这个阶段的目标是:不仅要知道是什么,还要知道为什么,并且能写代码证明它。这是你简历上的亮点,能串联起上面绝大部分知识点。核心技术:IO多路复用(epoll)。这是“高性能”的基石。核心架构:Reactor模式(单Reactor多线程/多进程,或多Reactor)。这是现代高性能网络服务器的标准设计。编程语言:C++17/20目标:能处理高并发连接(数千以上),性能指标可通过压测工具

m0_74979597的博客 864

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java后端需要学算法吗_从事Java后端工作,还需提升哪些知识和技能?

原标题:从事Java后端工作,还需提升哪些知识和技能?很多小伙伴想转行做Java的后端工作,但是又不知道到底该学习些什么。今天小编就跟你们聊聊做Java的后端工作,需要学习和了解什么哪些知识点和技能。首先要明确后端包括哪些职业:DBA(数据库维护优化专家),Developer(程序猿),Architect(构架师),Scrum master及类似(敏捷开发专家),Project Manager(产...

weixin_34259816的博客 2576

mysql重点知识

一、数据类型 1、整数类型: int int后的宽度是显示宽度,不是存储宽度,所以不用加宽度。 2、日期类型: year 年 date 日 time 时分秒 datetime 年月日时分秒,8个字节 timestamp 年月日时分秒,4个字节 now() 当前时间,根据字段约束填入表中 3、字符类型 char(5) 定长的字符 varchar(5) 可变长字符 字符...

weixin_43173892的博客 399

Java后端工程师如何学AI

本文为Java后端工程师提供了系统化的AI学习路径,从数学基础到深度学习,再到Java AI生态实践。文章详细规划了四个阶段的学习内容(数学基础、机器学习、深度学习、Java AI实践),推荐了实践项目和资源,并给出时间规划建议。针对常见学习问题提供解决方案,最后给出职业发展建议。适合希望拓展AI技能的后端工程师参考,建议结合个人基础有选择地分阶段学习,注重理论与实践结合,逐步构建完整的AI知识体系和应用能力。

new_daimond的博客 1888

java后端开发需要学什么_从事Java后端开发,要学习哪些知识和技能?

首先要明确后端包括哪些职业:DBA(数据库维护优化专家),Developer(程序猿),Architect(构架师),Scrum master及类似(敏捷开发专家),Project Manager(产品狗),Maintenance&IT support(通讯和服务器相关),当然这只是一个大致的分类,并没有一个清晰的界限。按程序猿内功而言:关系型数据库,领域驱动设计(Domain-Drive...

weixin_42128015的博客 4491

Go后端 vs Go AI应用开发重点关注什么?怎么学?怎么面试?

Go后端岗适合喜欢“建系统、稳架构”的人,是技术生态的“压舱石”;AI应用岗适合对AI感兴趣、擅长“落地转化”的人,是风口上的“弄潮儿”。俩方向不冲突——后端能力是AI应用的基础,AI知识能让后端工程师更有竞争力。不管选哪条路,“动手实战+持续学习”都是唯一的通关密码。后端工程师多盯CNCF动态,AI应用工程师多关注Go和AI框架的新集成。把技术学扎实,用项目攒经验,你肯定能在Go技术浪潮里站稳脚跟,一路升级打怪!如果你对这篇文章的内容感兴趣,欢迎链接我:wangzhongyang1993。

王中阳讲编程 900
上一篇: 当今Java的就业前景和就业方向如何?
下一篇: 那么在这篇文章中,村长来为大家捋一捋Java后端开发的学习路线。先来说说Java后端开发路线。实际上,Java后端开发,要比C++后端开发更加普遍,岗位更多并且需求更多,各大厂招聘的也大多都是Java
JavaASDN
博客等级 码龄2年 236粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值