精华内容
下载资源
问答
  • web后端开发学习路线_学习后端Web开发的最佳方法
    千次阅读
    2020-08-15 17:24:29

    web后端开发学习路线

    My previous article described how you can get into frontend development. It also discussed how the front end can be a place filled with landmines – step in the wrong place and you'll be overwhelmed by the many frameworks of the JavaScript ecosystem.

    我以前的文章描述了如何进行前端开发 。 它还讨论了前端如何成为一个充满地雷的地方-进入错误的地方,JavaScript生态系统的许多框架会让您不知所措。

    In this blog article, let's see how you can get into back end development. Along the way, I'll answer some of the most common questions people ask me about it.

    在这篇博客文章中,让我们看看如何进行后端开发。 在此过程中,我将回答人们问我的一些最常见问题。

    什么是后端开发? (What is Backend Development?)

    Front end development involves what a user sees on the screen when they open a specific URL owned by you. Even in a completely static environment (with only HTML/CSS), when someone opens a website, some server on the planet needs to respond to you with those HTML and CSS files.

    前端开发涉及用户打开您拥有的特定URL时在屏幕上看到的内容。 即使在完全静态的环境(只有HTML / CSS)中,当有人打开网站时,地球上的某些服务器也需要使用这些HTML和CSS文件来响应您。

    That server is just a computer, just like the one you use yourself to browse the internet. But it has been tuned for performance, and doesn't have unnecessary components like a mouse or keyboard attached. And it sits with tons of other computers probably in a data warehouse.

    该服务器只是一台计算机,就像您自己用来浏览互联网的计算机一样。 但是它已经过性能调整,并且没有多余的组件,如鼠标或键盘。 它与数以千计的其他计算机一起放置在数据仓库中。

    Programming those computers in some special way is called back end development.

    以某种特殊方式对这些计算机进行编程称为后端开发

    You may think that backend development is called what it is because it runs behind the user's back. A visitor to your website never really "accesses" the back end completely. They just communicate with your server, either directly through ports for very limited access (like transferring HTML/CSS files) or not even that – buried deep under CDNs or firewalls (like Cloudflare).

    您可能会认为后端开发就是所谓的,因为它在用户背后运行。 您网站的访问者永远不会真正完全“访问”后端。 它们只是直接通过端口与您的服务器进行通信,以进行非常有限的访问(例如传输HTML / CSS文件),甚至不进行通信–将它们深深地埋在CDN或防火墙(如Cloudflare)下。

    Now that we have a raw understanding of what back end development means, let's get into some real questions.

    现在,我们对后端开发的含义有了一个初步的了解,让我们进入一些实际的问题。

    后端需要前端编程知识吗? (Is front end programming knowledge required for the back end?)

    TLDR; No.

    TLDR; 没有。

    Back end development, as mentioned above, involves the programming of a computer sitting probably on the other side of the planet responsible for responding to what your users say from their own computers.

    如上所述,后端开发涉及对计算机的编程,该计算机可能位于地球的另一侧,负责响应用户从其自己的计算机发出的信息。

    If you're a full-time backend developer, you do not really need to care about what goes on inside those HTML, CSS and JavaScript files you send to the user's browser. Instead, you've to focus more on the performance of the server, the server code, and throughput.

    如果您是一名全职后端开发人员,那么您实际上不必关心发送到用户浏览器HTML,CSS和JavaScript文件中的内容。 相反,您必须更多地关注服务器的性能,服务器代码和吞吐量。

    后端开发有哪些内容? (What goes into back end development?)

    Well, going by the books, you may say that a person who codes an application that can respond to HTTP requests is a back end developer.

    好吧,按照这些书,您可能会说,编写可以响应HTTP请求的应用程序的人是后端开发人员。

    But in reality, sometimes back end developers are able to do much more than just writing server scripts. They have the knowledge to set up reverse proxy servers (NGiNX/HAProxy), enable compression and other ways to speed up the site, and set up a production docker environment.

    但是实际上,有时后端开发人员不仅可以编写服务器脚本,还能做更多的事情。 他们具有设置反向代理服务器(NGiNX / HAProxy),启用压缩和其他方式以加快站点速度以及建立生产docker环境的知识。

    To qualify as a back end developer, I'd say the bare minimum skills you need are:

    要成为合格的后端开发人员,我想说的是,您需要的最低技能是:

    1. Good knowledge about a programming language in which you can write HTTP servers. Examples: C#, Java, Node, PHP, Python, etc. (there are many!)

      对可以用来编写HTTP服务器的编程语言的丰富知识。 示例:C#,Java,Node,PHP,Python等(有很多!)
    2. Manage to host using cPanel (traditional) or using bash terminal (cloud hosting/traditional)

      使用cPanel(传统)或bash终端(云托管/传统)管理托管
    3. Working with Version Control Systems (VCS) like git for managing and deploying builds

      使用git等版本控制系统(VCS)来管理和部署构建

    Just like every game comes with minimum and recommended specifications, for back end developers, my recommend specifications would be (inclusive of the minimum skills):

    就像每款游戏都有最低要求和推荐规格一样,对于后端开发人员,我的推荐规格将是(包括最低要求):

    1. NGiNX for static file assets and server management

      NGiNX用于静态文件资产和服务器管理
    2. Database Management skills (SQL/NoSQL)

      数据库管理技能(SQL / NoSQL)
    3. Security of backend (Writing safe and robust code, running applications in docker containers with limited privileges, protection against DoS attacks)

      后端的安全性(编写安全可靠的代码,以有限的特权在Docker容器中运行应用程序,防范DoS攻击)
    4. Autoscaling/Load balancing

      自动缩放/负载平衡

    Alright, too much talking about what goes into back end development. But how do you become one?

    好吧,过多地讨论了后端开发的内容。 但是你如何成为一个?

    从最低要求开始 (Start with minimum requirements)

    Like I said, for the back end, just like games, we have a set of minimum requirements and recommended requirements. The minimum requirements consists of 3 things:

    就像我说的那样,对于后端,就像游戏一样,我们有一组最低要求和建议要求。 最低要求包括三件事:

    学习后端编程语言 (Learn a backend programming language)

    When people learn by themselves, they usually do not have a team or anyone who can do front end development. They're all on their own. So you'll often have to create webpages and servers all by yourself, at least in the beginning.

    人们自己学习时,通常没有团队或任何可以进行前端开发的人。 他们全靠自己。 因此,至少在开始时,您通常必须自己全部创建网页和服务器。

    Although there are a lot of choices for back end programming languages, and I cannot think of any popular system language which doesn't support HTTP servers out of the box. The advantage of choosing Node is that your front end JavaScript skills are transferrable to the back end.

    尽管后端编程语言有很多选择,但我想不出任何不支持HTTP服务器的流行系统语言。 选择Node的好处是您的前端JavaScript技能可以转移到后端。

    Nonetheless, you can choose from a variety of languages like Java, C++, C#, Python, PHP, etc.

    但是,您可以从多种语言中进行选择,例如Java,C ++,C#,Python,PHP等。

    How do you pick one, you might ask. The answer is the same as it was in the front end development article: you have gotta try everything initially and see which one clicks the best with you.

    您可能会问,如何挑选一个。 答案与前端开发文章中的答案相同:您必须首先尝试一切,然后看看哪个点击最适合您。

    Node is easy as you might have already done JS programming for the front end. But if you're a Python or Java developer, you might find those easy to pick up. It depends on your profession and taste completely.

    Node很容易,因为您可能已经为前端完成了JS编程。 但是,如果您是Python或Java开发人员,则可能会发现它们很容易上手。 这完全取决于您的职业和品味。

    了解有关管理托管的信息 (Learn about managing hosting)

    Gone are the days when you'll have to manually purchase servers and set them up in your home, connect to your ISP, do all that stuff yourself. This is the era of cloud computing. Now, when hosting your website, you have mainly 2 options:

    您将不得不手动购买服务器并在家里设置它们,连接到ISP,自行完成所有这些工作的日子已经一去不复返了。 这是云计算的时代。 现在,在托管网站时,主要有两种选择:

    1. Going for managed hosting servers like HostGator or GoDaddy.

      用于托管主机服务器,例如HostGator或GoDaddy。
    2. Going for cloud hosting providers like GCP, AWS, or DigitalOcean.

      寻找GCP,AWS或DigitalOcean等云托管提供商。

    What is the difference between the two? In both cases, the servers are owned and operated by the respective companies. But the major difference is that managed hosting is more GUI friendly, has a rich set of tools for seeing the filesystem, monitoring usage, managing your official domain emails, uploading/downloading files from your server, and so on. It's basically a setup for people with less technical skills.

    两者有什么区别? 在这两种情况下,服务器均由各自的公司拥有和运营。 但是主要的区别是托管托管更易于使用GUI,具有丰富的工具集,可用于查看文件系统,监视使用情况,管理官方域电子邮件,从服务器上载/下载文件,等等。 基本上,它是为技术技能较弱的人准备的。

    For that reason, I do not recommend managed sites like HostGator or GoDaddy for seasoned developers. Still, it might be a good platform to make mistakes and learn on, primarily because you usually have prepaid plans for them. You'll also have a nice UI for managing things, which doesn't allow you to accidentally shoot up your bills.

    因此,我不建议经验丰富的开发人员使用托管网站如HostGator或GoDaddy。 尽管如此,它仍然可能是犯错和学习的好平台,主要是因为您通常会为他们预先准备好计划。 您还将拥有一个不错的用户界面来管理事情,这不允许您意外地付账。

    But when you start picking up speed, I recommend that you switch to a cloud provider. This takes away all the nice tools from cPanel that you used to manage files and folders on servers. But at the same time, it will challenge you to level up your skills a lot.

    但是,当您开始加快速度时,建议您切换到云提供商。 这消除了cPanel中用于管理服务器上文件和文件夹的所有漂亮工具。 但是与此同时,它将挑战您大量提高您的技能。

    Today, a lot of cloud providers offer a decent free trial, too, so that you can actually try out their platform before going full in. I host my website for developers - codedamn - on DigitalOcean and find it to be at a sweet balance of site complexity and features.

    如今,许多云提供商也提供了不错的免费试用版,因此您可以在全面试用之前实际试用他们的平台。我在DigitalOcean上为开发人员托管了我的网站-Codedamn,并发现它与网站的复杂性和功能。

    You can use this link to signup on DigitalOcean and get free $100 credits. DigitalOcean instances are as cheap as $5 a month, so you have a runway of about 20 months on that instance, great deal, huh?

    您可以使用此链接在DigitalOcean 上注册免费获得$ 100的信用 。 DigitalOcean实例的价格低至每月5美元,因此您在该实例上的运行时间约为20个月,是吗?

    Anyway, you can choose any cloud provider. Then it's important to learn to manage the server using just the command line by ssh'ing into it.

    无论如何,您可以选择任何云提供商。 然后,重要的是学会通过仅使用命令行来管理服务器。

    了解版本控制系统 (Learn about Version Control Systems)

    There are other solutions apart from Git for VCS. But Git is the most used and simplest to understand.

    除了适用于VCS的Git之外,还有其他解决方案。 但是Git是最常用和最容易理解的。

    As an individual, you might not appreciate it right away. But you'll understand why it is so important the moment you start working either in a team on multiple features simultaneously in your project.

    作为个人,您可能不会立即欣赏它。 但是当您开始在一个团队中同时在项目中同时处理多个功能时,您就会理解为什么如此重要。

    Git allows you to manage your workflow using commits and branches. Commits are like checkpoints in your codebase - the ones you can always revert to if you screw up.

    Git允许您使用提交和分支来管理工作流。 提交就像代码库中的检查点一样-如果您搞砸了,可以随时恢复到这些检查点

    Branches are like alternate realities of your project, where something completely different could happen. These alternate realities can be created from any point in time and can be merged back again at any time.

    分支就像项目的替代现实 ,其中可能会发生完全不同的事情。 这些替代现实可以在任何时间点创建,并且可以随时重新合并。

    If those realities can be merged together with compatibility, then it's fine. But if there's a conflict (like if you're alive in one reality and dead in other), then you have to manually make a choice. Other changes can be merged automatically.

    如果可以将这些现实与兼容性合并在一起,那就很好。 但是,如果存在冲突(例如,您在一个现实中还活着而在另一个现实中死了),那么您必须手动做出选择。 其他更改可以自动合并。

    Git is super interesting, and once you get hang of it, you'll want to use it in every project. You get to keep a history of your work in an efficient manner (it compresses and stores only the difference between commits).

    Git非常有趣,一旦您掌握了它,就可以在每个项目中使用它。 您可以高效地保留工作历史记录(它仅压缩和存储提交之间的差异)。

    It also allows you to create online git repositories on sites like GitHub, which acts as a central source of truth for your website. Sites like GitHub can be configured with special webhooks that can actually update your website whenever you add a new checkpoint (a new commit) without you ever needing to manually go to the server and update it yourself.

    它还允许您在GitHub之类的网站上创建在线git存储库,这是网站真相的主要来源。 可以像GitHub这样的网站配置特殊的Webhook,这些Webhook实际上可以在您添加新的检查点(新的提交)时更新您的网站,而无需手动转到服务器并自行更新。

    I'm a big believer in learning by doing. And the best way to do something comes out of necessity or interest. Once you consider yourself good enough with the minimum requirements, it's time to acquire the recommended skills. This includes all the tools like Docker and NGiNX mentioned above.

    我坚信边做边学。 而做某事的最好方法是出于必要或兴趣。 一旦您认为自己的最低要求足够好,就可以开始学习推荐的技能。 其中包括上述所有工具,例如Docker和NGiNX。

    DevOps is also something which fits in super nicely with back end developers. You could try and explore TravisCI or CircleCI for automated build deployments. Continuous Integration and Deployment (CI/CD) is a topic that could take another whole blog post, so I'll not get into that. In fact, once it is set up correctly, it'll save you a ridiculous amount of developer time!

    DevOps也非常适合后端开发人员。 您可以尝试探索TravisCICircleCI进行自动构建部署。 持续集成和部署(CI / CD)是一个主题,可能需要撰写另一篇完整的博客文章,因此我不再赘述。 实际上,一旦正确设置,它将为您节省大量的开发时间!

    Then comes databases, which I placed in recommended skills. But you're gonna need databases for pretty much any application which involves some sort of data persistence generated by the user.

    然后是数据库,我把这些数据库放在推荐的技能上。 但是,几乎所有涉及用户生成的数据持久性的应用程序都将需要数据库。

    Databases are usually easy to begin working with, but harder to maintain and tweak properly. The best way to start working on a back end tech stack is to have everything together on a single server - the code of your application, the reverse proxy servers, the database, etc. Then as you become more proficient in each thing, you can decouple it from the existing business logic.

    数据库通常很容易上手,但是很难维护和正确调整。 开始在后端技术堆栈上工作的最佳方法是将所有内容整合到单个服务器上-您的应用程序代码,反向代理服务器,数据库等。然后,当您精通每件事时,您可以将其与现有业务逻辑分离。

    By doing this, you're enabling an architecture that can be highly scaled. A database-operation intensive application could have an optimized solution for databases. And a heavy traffic bound site should have a good CDN mechanism to offload static assets, and so on.

    通过这样做,您可以实现高度可扩展的体系结构。 数据库操作密集型应用程序可能具有针对数据库的优化解决方案。 流量受限的站点应该具有良好的CDN机制来卸载静态资产,依此类推。

    结论 (Conclusion)

    There's so much to learn, but it's all achievable if you don't give up. Let me know what you think about this post through my twitter and Instagram handles. It'll mean a lot to me if we connect over there!

    有很多东西要学,但是如果您不放弃,这一切都是可以实现的。 让我知道您对我的TwitterInstagram句柄的看法。 如果我们在那里连接对我来说意义重大!

    Also, if you're interested, checkout codedamn - a developer-focused platform for learning technologies like backend development! I even posted a YT video on spinning up your own simple website server in 2 minutes! Check that out and let me know what you think!

    另外,如果您有兴趣,请签出codedamn-一个面向开发人员的平台,用于学习后端开发等技术! 我什至在2分钟内发布了一个YT视频,介绍了如何旋转您自己的简单网站服务器 ! 检查一下,让我知道您的想法!

    Peace!

    和平!

    翻译自: https://www.freecodecamp.org/news/learn-backend-development/

    web后端开发学习路线

    更多相关内容
  • 2021服务外包-后端技术培训 什么是后端? 1、后端是在后台工作的,控制着前端的内容,主要负责程序设计架构思想,管理数据库等。后端更多的是与数据库进行交互以处理相应的业务逻辑,需要考虑的是如何实现功能、数据...

    2021服务外包-后端技术培训

    什么是后端?

    1、后端是在后台工作的,控制着前端的内容,主要负责程序设计架构思想,管理数据库等。后端更多的是与数据库进行交互以处理相应的业务逻辑,需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等,涉及动态语言如PHP、ASP、JSP等。

    2、后台开发就是来解决这样的需求的。为了让各个服务器同时并行工作,他们研究分布式算法,把大任务拆成小任务,分布给各个服务器单独运算。为了提高数据库的存取速度,他们研究非关系型数据库,也就是NoSQL,把它们用在社交、O2O应用的后台。为了解决硬盘速度远远跟不上内存速度的问题,他们研究缓存技术,简单来说就是数据从硬盘里取出来就不放回去了,这样下次还用就不用再去硬盘取了。当然,也有一些后台开发专注于业务逻辑,前端想请求什么样的数据,大家坐在一起商量一个协议,他们负责写个接口,前端来调用就是了。

    C/S

    C/S(Client/Server):又称客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sql Server等。客户端需要安装专用的客户端软件,结果图如下:
    这里写图片描述

    举个栗子:以电脑上的qq为例,qq APP就是Client客户端,存放所有用户信息的地方就是qq的Server服务器。

    B/S

    B/S(Browser/Server):又称浏览器/服务器模式。是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
    结构图如下:
    在这里插入图片描述
    举个栗子:我们经常访问的百度为例,当我访问百度时,我的电脑就是客户机之一,百度的代码存放的地方就是web服务器,而百度用户的信息及百度的一些基本数据信息就是数据库服务器

    后端技术栈

    CGI

    ASP、PHP、JSP

    Java

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
    Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
    在这里插入图片描述

    设计模式

    https://www.bilibili.com/video/BV1G4411c7N4

    数据库

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

    每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

    我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

    所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

    RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

    • 1.数据以表格的形式出现
    • 2.每行为各种记录名称
    • 3.每列为记录名称所对应的数据域
    • 4.许多的行和列组成一张表单
    • 5.若干的表单组成database

    MySQL

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

    https://www.bilibili.com/video/BV1xW411u7ax

    Redis

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

    Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

    它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    Java EE

    Java EE,Java平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为Jakarta EE。[1]是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。

    JDBC

    Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

    https://www.bilibili.com/video/BV1eJ411c7rf

    前端知识

    HTML5/CSS

    JavaScript

    https://www.bilibili.com/video/BV14W411u7bC

    JQuery

    AJAX

    https://www.bilibili.com/video/BV1JW411u77A

    Java Web

    Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

    https://www.bilibili.com/video/BV1Y7411K7zz

    三层架构

    在这里插入图片描述

    UI( 表现层 ): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

    BLL:( 业务逻辑层 ): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

    DAL:( 数据访问层 ): 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。

    MVC模式

    在这里插入图片描述

    Model (模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。

    View (视图) - 视图代表模型包含的数据的可视化。

    Controller (控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

    SSM(SpringMVC+Spring+MyBatis)

    Spring

    Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。

    https://www.bilibili.com/video/BV1Vf4y127N5

    IOC

    Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

    AOP

    AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。

    在不改变原有的逻辑的基础上,增加一些额外的功能。代理也是这个功能,读写分离也能用AOP来做。

    SpringMVC

    SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

    MyBatis

    MyBatis是对JDBC的封装,它让数据库底层操作变的透明。MyBatis的操作都是围绕一个sqlSessionFactory实例展开的。MyBatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

    页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

    Spring Boot

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
    在这里插入图片描述

    Spring Cloud

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    https://www.bilibili.com/video/BV18E411x7eT

    在这里插入图片描述

    在这里插入图片描述

    服务与服务之间的解耦。很多公司在业务高速发展的时候,服务组件也会相应的不断增加。服务和服务之间有着复杂的相互调用关系,经常有服务A调用服务B,服务B调用服务C和服务D …,随着服务化组件的不断增多,服务之间的调用关系成指数级别的增长。这样最容易导致的情况就是牵一发而动全身,经常出现由于某个服务更新而没有通知到其它服务,导致上线后惨案频发。这时候就应该进行服务治理,将服务之间的直接依赖转化为服务对服务中心的依赖。Spring Cloud 核心组件Eureka就是解决这类问题。

    Spring Cloud Alibaba

    Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。

    Java分布式开发

    分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统。

    例如淘宝,平时大家都会使用,它本身就是一个分布式系统,我们通过浏览器访问淘宝网站时,这个请求的背后就是一个庞大的分布式系统在为我们提供服务,整个系统中有的负责请求处理,有的负责存储,有的负责计算,最终他们相互协调把最后的结果返回并呈现给用户。

    zookeeper、dubbo

    大数据

    随着IT行业的发展,系统运行的时间越来越长,搜集到的数据也越来越多,传统的数据库已经不能支撑全量数据的存储工作;另一方面,数据越来越多,单机的计算已经成为瓶颈。

    在当前大数据环境下,海量数据,呈爆发式增长,数据类型复杂多样,因此,对数据的处理需要更强大的技术和手段,因此也衍生出了很多大数据处理框架。

    Hadoop、Spark、Storm

    其他

    Maven

    在这里插入图片描述

    https://www.bilibili.com/video/BV1Te411W7N6

    Git

    在这里插入图片描述

    https://www.bilibili.com/video/BV1Te411W7N6

    docker

    在这里插入图片描述
    https://www.bilibili.com/video/BV1Ls411n7mx

    学习路线

    Java + 数据库

    目前许多主流框架都是以java编写的,学好Java是进入后台开发的第一步,也是关键的一步。

    数据库是后台的数据仓库,推荐学习MySQL,开源且免费,后续专业课也会使用。

    Java WEB 前端

    HTML+CSS+JavaScript,JQuery+Ajax,当前由于前后端分离的思想,页面大多由前端负责,但是基础的前端技术对理解HTTP请求或者学习爬虫等都是有好处的。

    JavaEE + Web框架

    JavaEE是在 JavaSE 的基础上构建的扩展应用框架,重要的内容有JDBC,Servlet,JSP等。Web框架建议学习Spring、Spring MVC、MyBatis,也可从Spring Boot学起。
    在这里插入图片描述
    在这里插入图片描述

    学习资料和工具

    视频

    bilibili

    https://www.bilibili.com/

    尚硅谷

    http://www.atguigu.com/

    传智播客(黑马程序员)

    http://www.itcast.cn/

    http://www.itheima.com/

    网易云课堂

    https://study.163.com/

    书籍

    Java

    四大名著: Java编程思想、Java核心技术、Java语言程序设计与数据结构、Effective Java中文版

    在这里插入图片描述

    Java Web

    学习建议

    • 保持对技术的热情

      兴趣是最好的老师,学习热爱的事物往往能事半功倍。

    • 面向搜索引擎编程

      遇到Bug先尝试自行解决,如果无法解决可通过Google或者百度查看网上有没有处理相同Bug的经验

    • 学会查阅官方文档

      官方文档是一项技术最权威、最全面的解读,而且很多官方文档写的很好,要学会通过官方文档学习新技术。

    • 博客和论坛

      分享自己的问题,学习,生活。例如:CSDN、博客园、简书、知乎

    • 用好GitHub

      GitHub上有许多有趣的项目和他人整理的学习资料,快去探索新世界吧!。

    参考文章

    spring aop 及实现方式

    什么是前端、后端

    展开全文
  • 本文是20学年软件创新实验室第二次培训总结,主要分享了大学生如何开发一款App,讲解了什么是Java后端开发,分享了下Java后端开发的技术路线以及怎么去自学。


    前言

    由于软件服务外包协会培训,此次培训由我们Java后端学习小组负责,特写一篇博文以作总结。


    一、浅谈如何开发一款App

    相信大家在选择IT这条路的时候,很期待的一件事情就是开发一款属于自己的App,包括我自己在内,但是无奈没有什么概念,这种想法往往就会扼杀在萌芽阶段。
    所以这里我来讲一讲我们大学生如何来开发一款App

    1.一个好的idea

    一个好的idea往往是一个App的起源,比如你现在看到的qq、微信、淘宝等有名的App,都是起源于一个小小的idea。
    这个idea往往确定了你这个App的方向,决定了你这款App的发展趋势。
    但是有一个好的idea是远远不够的,有多少项目是被扼杀于idea阶段;又有多少项目虽然有一个好的idea,但没有一个好的实施手段,终究走向失败。
    所以一个好的idea只是你开发一个App的第一步

    2.根据这个idea完善好具体的需求

    有了idea后,我们接下来要做的就是根据这个idea进行拓展,深挖需求并形成需求报告。
    这里的需求是确切的、具体的,也就是说不该出现那种乍一看不知道怎么去实现的需求。
    这个阶段其实是非常耗时的,因为你要从一个idea转变成具体的需求报告,尤其是这个idea并不完善时,这个任务难度也会增大。

    3.分工合作

    作为大学生团队,想要开发出一个初代App,你必须要以下人员配置:
    美工、前端、后端。
    这个配置是必不可少的,当然如果前端会干美工的活,那也可以不用美工。
    PS:我还是建议有美工的配置,毕竟人家专业嘛。

    说完人员配置,再说说分工,一般开发一个App也有以下步骤,分工如下:
    在这里插入图片描述

    每个人负责自己的部分,各司其职,协作开发。此时负责人的领导力将会发挥大作用,如何让每个成员贡献自己的一份力量则是负责人该好好思考的问题。

    4.设计阶段

    作为大学生团队,对于一般的App开发,所需的设计主要分为以下三个:

    ①UI设计

    UI设计主要由美工来完成,这里放一些我自己在做的那个App的部分UI设计初稿以作参考
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    这个是我们实验室一位美工大佬做的,比我们当初设计的专业多了!

    ②接口设计

    什么是接口设计呢?
    大家或许常常听到面向接口编程,但往往不知道什么是接口。

    在App中,我们说的接口通常是指前后端交互的一个规范,它明确了请求的方式和请求路径以及响应的数据格式等等,它是连接前后端的桥梁。当然,它还有另一个名字,就是我们常说的API。

    所以说接口很重要,需要在编写之前就确定好接口,不然到后面开发的时候前后端就会因为接口问题产生矛盾,所以我们要在正式编写之前把接口设计好。

    这里我拿我在做的那个App为例,展示一下接口长什么样子。
    PS:我们是在网易的NEI平台上做接口管理的
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    以上是一个简单的接口演示,其实接口设计的内容远不止这些,在这个过程中还要制定前后端交互规范等等…

    ③架构设计

    为什么别人淘宝能抗住双十一那上亿的并发量,为什么我们的App稍微来个两三百的流量冲击服务器就直接宕机了呢。

    这背后就是架构的力量,为什么人家淘宝能抗住那么高的流量冲击?那是因为人家背后的系统设计是极其复杂的,并不是我们这种简单的单体垂直架构能比的。

    但这并不是说架构设计一定要越复杂越好,如果一个只有几十流量的App你却要把它设计成能抗住上万并发的分布式系统,这只能说明你有钱有时间。

    一个好的架构设计应该是根据App自身的情况来进行设计,千万不要过度设计,一个能抗住上万并发的系统肯定比我们平时随便编写的系统要好,但是这是以系统复杂度和高昂的维护成本为代价的。
    在这里插入图片描述

    5.开发阶段

    前端:前端拿到美工设计的UI设计稿后就可以开始逐步写代码去实现了,但是这并不是说前端一定要等着美工把所有都设计出来再做,我们完全可以把确定下来的页面先完成。

    后端:根据之前的架构设计搭建出一套自己框架环境,然后在这之上去逐步完善接口。

    PS:一般大学生开发的App一般都是选择最传统的单体垂直架构,不推荐去玩那些分布式微服务之类的,那种系统复杂度高,且服务器也是一笔巨大的开销,这对大学生而言一般无力承担。
    等你的App发展好了,得到学校的支持之后,再去玩那些也不迟,这时就要对之前的代码拆分重构,当然最好是写的时候就考虑到这点,这样后期拆分也会容易很多。

    6.测试阶段

    写完代码之后,此时应该做把后端写好的东西打包部署进行测试。
    而测试大致分为以下几类:

    单元测试
    这个最好是在写代码的时候就进行,每写完一部分代码,就进行一次单元测试,这有利于你检查出错误,因为这时候的bug还是比较好找的,等你到之后部署上线进行联调测试时,bug定位将会极其困难。

    接口测试
    这个最好也在开发阶段就先自己简单测试一下,测试成功了再提交代码,当然,在正式部署到服务器上测试时,要对每个接口进行测试,看是否返回预期的数据

    联调(实机测试)
    这个一般就是以一个用户的角度体验我们写出来的App,从注册到登录,再到使用,看看这个过程是否有bug或者体验不好的地方存在。

    这个阶段就是一个循环往复的过程,测试出bug了就重新去改代码,改好后再测试,直至测试后发现没什么太大的问题,在进入下个阶段。

    7.上线阶段

    接下来要做的就是将你的程序真正发布到生产环境中,再把你的App推到各大应用市场。
    在这里插入图片描述

    8.运维阶段

    到此已经开发出了一个初代App,此时进入运维阶段,开发人员根据用户的反馈和实际运行的情况来进行修改、调整,但App开发之路到此并未结束,根据后期业务和用户量变化,当初设计的东西都可能会发生改变,这就会促使App开始迭代,促使架构升级更新…
    在这里插入图片描述

    之后涉及的东西与此次培训无关,就不再赘述,有兴趣的同学可以去自行了解一下架构演进方面的知识。

    总之,一个App的开发绝不仅仅你看到的那么简单!

    二、Java后端开发在其中扮演了什么角色

    现在我们已经大概了解了大学生开发一个App的流程,现在我们来思考一个问题:
    Java后端开发在App开发中扮演了什么角色?

    要回答这个问题,我们必须要知道什么是Java后端开发。
    什么是Java后端开发呢?
    或者我们换个问法——前后端开发的区别是什么?

    拿我们身边最常用社交软件qq、微信举例,你看到所有图片、布局以及你点击滑动所产生的交互效果,这都是前端的功劳;那么后端干了什么呢?看看你的聊天记录,看看你的账号信息,这些数据哪来的?就是从后端传过来的。

    如果从分布来界定的话,那么你手机上的App就是前端,后台服务器上跑的程序就是后端。

    所以回到最初的问题上来,Java后端开发到底扮演什么角色呢?

    我觉得如果说前端负责的是数据的展示和用户的交互的话,那么后端就是负责数据的存储和数据的处理。后端上的东西是用户不可见的,但是又跟用户息息相关。后端开发就是默默担任着这种工作。

    三、初探后端开发知识体系

    其他大佬的建议

    先放大佬给的路线图:
    在这里插入图片描述

    这个是b站up主CodeSheep推荐的学习路线,其中包括了很多学科基础知识,像数据结构,算法,计算机网络,操作系统等等,这些东西看似对于我们开发而言收效没有直接学专门的技术来的快,但是这些知识会为我们未来打基础,我们能走的多远在于这些根基是否牢固。

    但是上面有些技术并不是全都要学,比如统一方面的技术只需学其一即可。

    下面给出培训班的学习路线:
    在这里插入图片描述

    这其实是个很实用的学习路线,它上面讲的东西如果认真去学,那么你确实可以在短时间内成为一个大佬,但是再往前走还是要回过头来修炼“内功”,看看那些经典的书籍和大佬写的博客。

    我的建议

    在这里我把Java学习分为几个阶段:
    PS:这里阶段的划分是根据我自己技术进步的感觉来划分的

    1.Java基础阶段

    这个阶段主要是学习Java基础知识,掌握Java基本类库的使用。
    在这个阶段后,你会感觉自己终于学会了们新的语言,会感觉到自己技术的进步。

    2.初涉开发阶段

    此时你开始接触开发所需的基本知识,如数据库,服务器,网络协议,jdbc,git,maven等等…
    此时你学了很多知识,对于开发有了大致的印象,但会感觉到学了很多,但是有点难以串起来,此时你需要一个小项目来串联你所学的技术。

    3.框架开发阶段

    此阶段你开始接触框架,学习典型的SSM,SpringBoot,此时你会发现原来开发可以这么简单。
    此时你应该尝试用自己的所学去做项目,比如搭建自己的个人博客。就比如我的博客,当初我还为此写了一篇博客【项目实战】个人博客(SpringBoot,SSM,thymeleaf,Semantic UI)——从设计思路到部署一站式教学

    接下来你一般会遇到困惑——我是该继续往上学,去学分布式微服务呢?还是往下学,学习源码原理来巩固基础呢(因为此时你也大概明白自己基础的薄弱)。

    当然,无论你选择哪个,或者你选择两个同时进行,都没关系,前者会提升你的眼界,让你从一个设计者的角度去分析问题,后者会夯实你的基本素养,为你未来找工作打下坚实基础。
    PS:我的建议是两者齐头并进的。

    4.源码、原理阶段

    此时你应该回归底层,去探究一些底层原理,如jvm的运行机制,spring框架的核心原理等等…可以多看看一些经典的书籍(比如Thinking in Java)和大佬博客以及一些好的课程。
    这个阶段你会发现之前学的真的好不扎实!

    5.架构设计阶段

    有了上述的基础,你就可以开始研究架构方面的知识,你应该以一个设计者的角度去学习,可以从当前的单体架构开始学习,一直到现在流行的分布式微服务…
    尤其是你自己去维护一个App,然后试着去模拟架构演进的过程时,这会非常有意思!

    四、如何自学Java

    这块内容其实我在我曾经写的另一篇博文用我的亲身经历来告诉你如何自学Java?讲过了,你是否学的好,在于你的目标是否能够支撑你接下来的自学之路,在此就不多做赘述了。


    总结

    以上就是20学年软件创新实验室第二次培训的内容,主要分享了大学生如何开发一款App,讲解了下什么是后端开发,分享了下Java后端开发的技术路线以及怎么去自学。

    在这里插入图片描述

    至于我为什么不去讲那些具体的知识点呢,这我是有考量的,首先,在有限的时间内教不了多少知识点,而且效果不一定好;其次,初学者如果直接从具体知识点入手,就像我们打开一个项目直接去看源码一样,很容易迷失在其中,渐渐失去学习的方向和兴趣。所以我此次培训采用自顶而下的讲解思路,先从宏观讲App开发,激起大家的学习兴趣和热情,再慢慢往下讲解Java后端开发,给大家一个方向上的指导,再教大家如何去自学Java,毕竟,授人以鱼不如授人以渔嘛。最后再开始实验室传统——手把手教讲解安装jdk,idea以及配置环境的步骤以及原因。

    其实培训时不止讲了这些,还有环境配置和答疑环节没有写到,但我觉得那些没有必要记录,再加上我时间有限,所以未过多记录。

    最后,祝大家都能以梦为马,不负青春韶华。为着目标,努力前进吧!

    PS:该培训已录屏,具体地址:浙江师范大学软件服务外包协会20学年第二次技术培训——Java后端技术培训

    微信推文:第二次培训——Java后端技术

    展开全文
  • python后端开发培训

    2021-12-11 15:35:28
    还有一个培训机构,你一打开他的网页,立马就弹出一个在线聊天框,防不胜防。 今天州的先生给大家带了一个后端 Python + 前端 Vue 的小项目教程。 这个教程分为上中下三篇,其中: 上篇使用 Django 传统的 MTV ...

    云想衣裳花想容,春风拂槛露华浓。

    在线聊天室在如今的互联网是一个很常见的产品,在各类电商的网页客服中,我们都可以接触到在线聊天。还有一个培训机构,你一打开他的网页,立马就弹出一个在线聊天框,防不胜防。

    今天州的先生给大家带了一个后端 Python + 前端 Vue 的小项目教程。

    这个教程分为上中下三篇,其中:

    上篇使用 Django 传统的 MTV 模式进行开发,实现一个在线聊天室的功能。中篇在上篇基础上加入数据存储,实现聊天记录的保存。下篇则采用后端 Django + 前端 Vue 对传统的 Web 模开发式进行改造。非常适合学了 Django 之后写项目无从下手的朋友们。

    本篇为上篇,我们将使用 Django 的传统开发模式,借助视图和模板完成一个在线聊天室应用的开发。

    最终效果如下所示:

    直接开干吧!

    创建虚拟环境

    为了不与计算机上现有的 Python 模块冲突,我们新起一个 Python 虚拟环境:

    python -m venv django3_env进入虚拟环境,然后激活它。

    安装依赖库

    后端我们使用的是 Django3 框架(在本文编写时,Django 的最新版本为 3.2,所以我们不需要指定它的版本):

    pip install django还有一个重要的依赖库——Channels。

    Channels 封装了 Django 的原生异步视图支持,让 Django 项目不仅可以处理 HTTP,还可以处理需要长时间连接的协议,比如:WebSockets、MQTT、聊天机器人、业余无线电等等。

    简而言之,就是为 Django 提供了异步和非 HTTP 处理的能力。

    pip install channels因为 Channels 中的一个功能需要使用到 Redis 作为数据通道和缓存,所以我们得安装 Redis 以及其 Python 相关的包。

    而 Redis 在 Windows 上没有官方的支持,所以在这里,州的先生使用一个 Redis 的替代品 Memurai 来当 Redis 使用:

    安装完成后即会作为 Windows 的服务在后台启动。

    然后安装 Channels 的 Redis 配套库:

    pip install channels_redis创建项目

    安装好所有的依赖项之后,我们开始创建 Django 项目:

    django-admin startproject chat_backend然后进入 chat_backend 目录,创建一个应用:

    python manage.py startapp chat配置项目

    接着我们进行必要的配置,下述操作在 settings.py 文件中进行。

    添加 channels、chat 应用到 Django 项目的应用列表:

    INSTALLED_APPS =['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','channels','chat',]在项目根目录下新建名为templates的文件夹,然后定义 HTML 模板路径:

    TEMPLATES = [ {'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [ BASE_DIR / 'templates' ],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages', ], }, },]

    然后指定 asgi 应用:

    ASGI_APPLICATION ="chat_backend.asgi.application"最后,指定 Channels 使用的数据通道后端,在这里我们使用的是 Redis:

    CHANNEL_LAYERS = {'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer','CONFIG': {"hosts": [('127.0.0.1', 6379)], }, },}

    其中主机地址和端口号填写 Redis 启动后显示的默认值。

    创建视图

    在这个「在线聊天室」里面,一共有两个页面。一个是首页,用于输入房间号和用户名;另一个则是聊天房间的页面,用于进行聊天。

    我们在 chat 应用的 views.py 下新建两个视图函数:

    # 首页defindex(request):return render(request,'index.html',locals())# 聊天室defroom(request,room_name): room_name = room_name username = request.GET.get('username', '游客')return render(request,'room.html',locals())

    其中,视图函数index()返回 index.html,视图函数room()返回 room.html,这两个 HTML 文件需要我们在templates文件夹中进行创建。

    定义路由

    视图函数创建好之后,我们为其绑定路由,在 chat 应用下新建一个名为urls.py的文件,在其中写入如下内容:

    from django.urls import pathfrom chat.views import *# HTTP URLurlpatterns = [ path('',index,name="index"), path('<str:room_name>/',room,name="room")]

    然后在 chat_backend 文件夹下的 urls.py 文件内引入 chat 应用的 url 配置:

    urlpatterns = [ path('admin/', admin.site.urls), path('', include('chat.urls')),]

    至此,「在线聊天室」这个项目的 HTTP 部分已经完成了开发。

    访问首页,会显示如下图所示的页面:

    我们可以输入房间号和用户名进入房间,进入房间后的页面如下图所示:

    但是现在我们还不能进行在线聊天,因为在线聊天最核心的部分——WebSocket后端,我们还没有编写。

    编写 WebSocket 后端

    WebSocket 是一个长连接的双向通信协议。通过 WebSocket 我们可以在客户端和服务器端之间建立实时的通信,而不是像 HTTP 那样,只有客户端发起,服务器端才会响应。

    在这里,我们借助 Channels 在 Django 中实现 WebSocket。

    首先,在 chat 应用下新建一个名为consumers.py的文件(意为消费者,是 Channels 中的一个重要概念),在其中,我们引入 WebSocket 类:

    from channels.generic.websocket importAsyncWebsocketConsumer然后继承这个类,新建一个名为ChatConsumer的类,并在其中重写 WebSocket 的连接、关闭连接、消息接收等方法,代码如下所示:

    classChatConsumer(AsyncWebsocketConsumer):# 连接 async defconnect(self):self.room_name = self.scope['url_route']['kwargs']['room_name']self.room_group_name = 'chat_%s' % self.room_name# 加入聊天室 await self.channel_layer.group_add(self.room_group_name,self.channel_name ) await self.accept()# 关闭连接 async defdisconnect(self, close_code): await self.channel_layer.group_discard(self.room_group_name,self.channel_name )# async defreceive(self, text_data=None, bytes_data=None): data = json.loads(text_data) message = data['message'] username = data['username']# Send message to room group await self.channel_layer.group_send(self.room_group_name, {'type': 'chat_message','message': message,'username': username } )# 接收消息 async defchat_message(self, event): message = event['message'] username = event['username']# 发送消息到 Websocket await self.send(text_data=json.dumps({'message': message,'username': username }))

    最后,我们在 asgi 中重新声明路由。打开 chat_backend 目录下的 asgi.py 文件,将内容修改为如下所示:

    import osfrom django.core.asgi import get_asgi_applicationfrom django.urls import pathfrom channels.auth import AuthMiddlewareStackfrom channels.routing import ProtocolTypeRouter, URLRouterfrom chat.consumers import ChatConsumeros.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chat_backend.settings')application = ProtocolTypeRouter({"http": get_asgi_application(),"websocket": AuthMiddlewareStack( URLRouter([ path("ws/<str:room_name>/",ChatConsumer.as_asgi()), ]) )})

    如上代码所示,HTTP 通过 get_asgi_application 以传统的 HTTP 路由进行处理,而 WebSocket 则通过 Channels 的 URLRouter 进行处理。这样我们的项目启动之后就可以同时支持 HTTP 访问和 WebSocket 访问。

    前端连接 WebSocket

    后端提供了 WebSocket 服务,前端需要进行连接和处理才行。

    来看看前端的处理过程。

    首先,通过 new 一个 WebSocket对象,来创建 WebSocket连接:

    // 建立一个 websocket 连接const chatSocket = new WebSocket('ws://' + window.location.host + '/ws/' + roomName + '/' );

    然后编写 WebSocket 各类事件的回调函数:

    // websocket连接关闭后的回调函数 chatSocket.onclose = function(e) {console.error('The socket closed unexpectedly'); };// websocket连接从服务器收到消息的回调函数 chatSocket.onmessage = function(e) {const data = JSON.parse(e.data);if (data.message) {if(data.username == userName){document.querySelector('#chat-record').innerHTML += ('<div class="right_msg">' + data.username + '<div class="right-record"><span>' + data.message + '</span></div></div><br>'); }else{document.querySelector('#chat-record').innerHTML += ('<div class="left_msg">' + data.username + '<div class="left-record"><span>' + data.message + '</span></div></div><br>'); } } else { alert('消息为空!') } };

    这样前端就完成了对后端 WebSocket 的连接和消息接收。

    最后

    运行项目,我们就可以在网页上进行实时在线聊天了。

    当然,现在这个项目还有很多问题,比如:

    聊天记录不会保存,刷新页面之后聊天记录就会消失。没有用户认证和鉴权,谁都能输入房间号和用户名进入聊天室。接下来,让我们继续完善这个「在线聊天室」,敬请期待!

    展开全文
  • 192018-11-19 11:22:01 +08:00 8如果是长远的后端开发,那就要全面深入的发展,首先是语言,没有哪种语言,是和后端或者 web 开发划等号的,Java 要想深入,不要过多的搞设计模式。语言知识你要掌握的知识的一部分,...
  • 后端开发常用官方文档、中文文档整理 名称 链接 Spring Framework 中文 Springboot 中文 Mybatis3 中文 Mybatis-plus 中文 JAVA语言 中文 Mysql 英文 Redis 英文 RabbitMQ 中文 RocketMQ ...
  • 自己不懂技术,想了想,就去了培训机构学习java。(选对专业确实很重要) 目前培训也接近了尾声,就写写日记发表一下自己的学习心得。 1,学习心得:… 感觉java这样面向过程的学习,就是对接口,接口的一系列api的...
  • C++后端开发面试

    2021-01-15 00:02:46
    对于一般的小公司,对于应届生会要求其至少熟练使用一门编程语言以及相应的开发工具,号称熟悉linux C++ 开发的面试者,不熟悉 GDB 调试基本上不是真正的熟悉 linux C++ 开发;号称熟悉汇编或者反汇编,不熟悉 IDA ...
  • javaEE后端开发和大数据开发(HadoopSpark...)哪个就业前景好?本科计算机毕业一年了最近在自学想选择一个方向努力有JavaSE基础想知道这两个方向市场怎么样我知道javaEE后端开发需求应该大一些但不知道大数据开发...
  • CDN 落地实践 阿里P8级架构师番外篇: Nginx/Tengine玩儿很大 解读Nginx 解读Nginx原生版本 互联网高级应用 二次开发 阿里P8级架构师第七篇:干亿流量高并发高可用分布式系统之核心服务设计篇 分布式架构之网关层设计...
  • 想要继续学习B/S应用开发主流框架学习者必经第3阶段,只有能够熟练运用这些开发框架,才能够更好的胜任日常工作中的开发,当然也是对自身技术实力的一种扩充,可以说是Java后端开发者的必备技能。本阶段学习要求:...
  • PHP强制转化有几种形式_后端开发PHP强制转化有3种形式:1、在要转换的变量之前加上用括号括起来的目标类型;2、使用转强函数,如“intval()”,“strval()”;3、使用“settype()”函数,只需将要转换的变量传入第一...
  • java大一大二有一点点基础,之前主要是做前端vue,想转后端学习一下,报了个培训班,一周五节课,一天学,靠谱吗?这种问题该怎么回答?不如我换一种问法:计算机大学4年能学会吗?能找到工作吗?请回答…哎,是不是...
  •  web前端培训分享:前端开发与后端开发的区别是什么?在实际开发过程中,前端开发人员精通JS能熟练应用JQuery,懂CSS能熟练运用这些知识,进行交互效果的开发;后端开发人员会写Java代码SQL语句,能做简单的数据库...
  • 1、前端开发: 网站的“前端”是与用户直接交互的部分,包括你在浏览网页...2、后端开发: 为了让服务器、应用、数据库能够彼此交互,后端工程师需要具有用于应用构建的服务器端语言,数据相关工具,PHP框架,版本控制
  • 1、首先要明确后端包括哪些职业DBA(数据库维护优化专家)Developer(程序猿)Architect(构架师)Scrummaster及类似(敏捷开发专家)ProjectManager(产品狗)Maintenance&ITsupport(通讯和服务器相关)当然这只是一个大.....
  • 对于这种情况,我们建议“在工作中边学边用”(以编码道场、培训等形式),创造一个可以进行这种实验的安全环境。 这样可以帮助团队评估他们对 Java 的使用状况,以及是否值得在 Kotlin 上投入。 “我看不出 Kotlin ...
  • 对于这种情况,我们建议“在工作中边学边用”(以编码道场、培训等形式),创造一个可以进行这种实验的安全环境。 这样可以帮助团队评估他们对 Java 的使用状况,以及是否值得在 Kotlin 上投入。 “我看不出 Kotlin ...
  • 培训出身到从业java后端开发 ----记录自己某一时刻的想法和持续学习的过程 培训后的第一份工作 2020年6月13日,我正式开始了线下培训Java开发的学习生活,半年的学习之后,在2020年12月找到了第一份Java开发的工作,...
  • 学完Python我们能从事:Python全栈工程师、Python工程师、自动化工程师、Linux运维工程师、Python爬虫工程师、金融自动化交易、前端开发工程师、大数据分析和数据挖掘等等。 要想有高薪资,就必须有优秀的Python技术...
  • 由于我对java编程语言特别感兴趣,所以我报名了达内Java培训培训班,专业的进行java编程方面的学习。主要学习了java核心技术、mysql数据库的相关操作和使用、mybatis连接数据库、web编程SSM框架等基础知识,还做过...
  • 逻辑思维弱的程序员后端开发总结

    千次阅读 2020-07-28 15:17:56
    说一下自己对于后端开发的感觉,培训的时候觉得,好复杂啊,每个类对象都有相互的包含关系,还有继承关系,逻辑思维弱一点,容易搞混来。(因为当时从美工设计,美术类,大家明白,形象思维,不增加讲究逻辑,讲究...
  • 第二章: java后端开发什么水平才算合格?相信作为毕业就混进某厂,至今11年,参加过若干次秋招,也经常作为部门面试官的我,可以告诉你一些答案吧。 什么算合格?如果你只想成为一个coder,干着外包的体力活,自然...
  • Web开发,从标配的SSH到现在SpirngMVC + MyBatis组合。 IDE,从当年如火如荼的JBuilder到Eclipse,再到更好用的IDEA。 … 而本文,我主要谈一下那些Java知识“已经过时”,没必要继续学习了。您也可以把本文看做上篇...
  • 1、测试服务器的建立; 2.GET/POST请求的实现; 3.GET请求参数的获取; 4.POST请求参数的获取; 5.文件上传的实现; 6.静态文件服务; 7.cookie的使用;...9.简单项目开发实践; 10.框架服务器的部署
  • 后端开发所有的框架技术都是为web项目服务的,结论就是必须学!接触Java少说十年了,见证了: JavaEE框架从百花齐放到Spring一统天下; Web开发从SSH标配也编程了SpringMVC+MyBatis组合; IDE从JBuilder到Eclipse...
  • 今天我就根据我自己的经验和大家分享一下关于我对转行C/C++后端开发的一些看法。 其实刚毕业的时候并不清楚什么是传统行业和互联网行业,只是因为自己学的是通信专业,后面就随便在嵌入式这个行业一直做。后面的市场...
  • 在长沙学习后端开发哪个培训机构好? 后端开发应具备哪些技术?</p>
  • 后端python培训

    2021-12-21 18:58:47
    书声琅琅教育番茄老师介绍,零基础的朋友学python相对来讲难度要大,但是很多python大牛都是从零基础上来的,对于这些python大牛来讲,参加合理的培训指导和有一套python学习路线是分不开的,有目标有计划的学习才能...
  • Java后端开发。大学本科的时候我是如何赚到10w+?

    千次阅读 多人点赞 2020-08-12 09:09:36
    我是 Guide 哥,Java 后端开发。一个会一点前端,喜欢烹饪的自由少年。 很多小伙伴比较好奇 Guide 是如何从大四的时候就已经自给自足,并且用自己赚的钱去了很多地方旅游(重庆、恩施、三亚…)。 今天我就说一下,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,089
精华内容 9,635
热门标签
关键字:

后端开发培训