后端开发基础能力以及就Java的主流开发框架介绍
前言:java语言开发转后端,必须了解后端主流的一些东西,共勉。
后端开发需要具备以下基础能力:
1.编程语言:熟练掌握至少一门编程语言,如Java、Python、Ruby、PHP、C#等。
2.数据结构和算法:具备扎实的数据结构和算法基础,能够灵活运用常见的数据结构和算法解决问题。
3.数据库:了解常见的数据库系统,如MySQL、Oracle、SQL Server等,能够熟练操作和管理数据库。
4.网络协议和通信:了解常见的网络协议,如HTTP、TCP/IP等,熟悉常用的网络通信方式和技术,如RESTful API、WebSocket等。
5.操作系统:了解至少一种操作系统,如Linux、Windows等,能够熟练使用命令行工具和进行系统配置。
6.版本控制:了解常见的版本控制工具,如Git、SVN等,能够熟练使用进行代码管理和协作开发。
7.安全性:了解常见的Web安全问题和防范措施,如SQL注入、XSS攻击、CSRF攻击等。
8.分布式系统:了解分布式系统的基本原理和常用技术,如分布式缓存、消息队列、负载均衡等。
9.软件工程:了解软件工程的基本知识,如需求分析、设计模式、重构等,能够进行高质量的代码编写和系统设计。
10.沟通协调:具备良好的沟通和协调能力,能够与团队成员、用户和其他相关人员进行有效的沟通和协调。
后端开发需要了解的基础框架包括:
Spring:Java领域最流行的开源框架之一,提供了一系列企业级开发所需的组件和工具,如IoC容器、AOP、事务管理、Web框架等。
Django:Python领域最流行的开源框架之一,提供了高效、灵活和安全的Web开发解决方案,包括ORM、模板引擎、路由、表单等。
Ruby on Rails:Ruby领域最流行的开源框架之一,提供了一种快速开发Web应用的方式,具有高效、简单、优雅的特点,如MVC架构、Active Record、RESTful API等。
Flask:Python领域的微框架,提供了一个简单而灵活的Web开发框架,包括路由、模板引擎、ORM等。
Express:Node.js领域最流行的Web应用框架之一,提供了一系列可扩展的中间件和路由组件,可以帮助开发者快速构建高性能的Web应用。
Laravel:PHP领域最流行的Web应用框架之一,提供了高效、安全、可维护的Web开发解决方案,包括ORM、路由、模板引擎等。
Gin:Go语言领域的Web框架之一,提供了高性能、高效率的Web开发解决方案,包括路由、中间件、模板引擎等。
以上框架都是业界比较流行的后端开发框架,掌握其中一种或多种框架,都能够快速、高效地完成后端开发工作。
以Java语言开发为例,介绍Spring ,SpringMVC,SpringBoot,MyBatis,Swagger,事务管理,路由,表单,中间件等知识点
1.Spring
Spring是一个开源的Java框架,由于其轻量级、便捷性和可扩展性,成为了Java开发中最广泛使用的框架之一。Spring框架由多个模块组成,其中最核心的是Spring Core模块,它提供了IoC容器、AOP、事件驱动等基础功能。
在Spring开发中,通常使用Spring Boot来快速构建应用程序。Spring Boot是一个基于Spring框架的快速开发框架,它提供了开箱即用的配置、自动化的依赖管理和可插拔的Spring应用程序功能,使得Spring应用程序的开发变得更加简单和高效。
Spring开发中的一些常见技术和工具包括:
Spring MVC:一个基于MVC设计模式的Web框架,用于构建Web应用程序。
Spring Data:一个用于简化数据访问的框架,支持各种类型的数据存储,包括关系型数据库、NoSQL数据库、图数据库等。
Spring Security:一个用于身份验证和授权的框架,提供了基于角色的访问控制、单点登录、加密等功能。
MyBatis:一个开源的持久化框架,用于将Java对象映射到数据库表中。
Maven:一个用于构建、打包和发布Java应用程序的工具,可以自动化地处理依赖关系和构建过程。
IntelliJ IDEA:一个常用的Java集成开发环境,提供了丰富的开发工具和插件,能够大幅提高开发效率。
以上是Spring开发中的一些常见技术和工具,它们的使用可以帮助开发人员更加高效地开发Spring应用程序。
在SpringMVC和MyBatis出现之前
后台服务器的开发主要依赖于JSP/Servlet技术。JSP/Servlet是一种Java Web开发技术,它通过Java代码和HTML标记的混合编写,实现Web应用程序的开发。 在JSP/Servlet技术中,Servlet是一种Java类,用于处理HTTP请求和响应。通过继承或实现Servlet接口,开发人员可以自定义Servlet类,并重写其doGet()、doPost()等方法来处理HTTP请求和响应。JSP则是一种在HTML中嵌入Java代码的技术,可以用于动态生成Web页面。 在JSP/Servlet技术中,使用JDBC或直接使用SQL语句进行数据库操作。JDBC是一种Java API,用于连接和操作数据库。通过JDBC,开发人员可以使用Java代码来执行SQL语句,并将结果返回给Web应用程序。 虽然JSP/Servlet技术已经不再是主流的Java Web开发技术,但它仍然被广泛应用于一些小型Web应用程序的开发中。对于大型的Web应用程序,SpringMVC和MyBatis等技术已经成为了更加流行的选择,它们可以大幅提高开发效率和应用程序的可扩展性。
SpringMVC
Spring和SpringMVC是两个不同的框架,虽然它们都属于Spring框架的一部分,但是它们的作用和使用场景是不同的。 Spring框架是一个面向对象的框架,它可以帮助开发人员构建企业级应用程序,提供了IoC(Inverse of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)等特性,可以使开发人员更加容易地管理对象之间的依赖关系,并且可以在程序运行时动态地添加切面。 SpringMVC是基于Spring框架的一种Web框架,它也是一个MVC框架。SpringMVC提供了一种灵活、模块化的Web开发体验,可以帮助开发人员快速开发Web应用程序。SpringMVC的核心组件包括DispatcherServlet、Controller、HandlerMapping、ViewResolver和ModelAndView等,通过这些组件可以实现请求的分发、处理和响应。 因此,Spring框架和SpringMVC框架的区别在于前者是一个面向对象的框架,提供了IoC和AOP等特性,而后者是一个Web框架,提供了MVC架构模式的支持,可以帮助开发人员快速开发Web应用程序。
SpringMVC是基于Spring框架的一种Web框架,它是一种MVC(Model-View-Controller)架构模式的Web框架。SpringMVC可以帮助开发人员快速开发Web应用程序,并且提供了灵活、模块化的Web开发体验。 SpringMVC的优点包括:
高度模块化:SpringMVC各个模块之间的耦合度较低,开发人员可以根据需要自由组装模块。
灵活的配置方式:SpringMVC的配置方式非常灵活,可以使用注解、XML配置文件等方式进行配置。
易于集成:SpringMVC可以与其他框架(如Spring、Hibernate等)进行集成,提供完整的Web开发解决方案。
易于测试:SpringMVC的代码结构清晰,易于进行单元测试和集成测试。
完善的异常处理机制:SpringMVC提供了完善的异常处理机制,可以对异常进行统一处理,提高Web应用程序的健壮性。
SpringMVC的核心组件包括:
DispatcherServlet:分发请求到Controller的核心组件。
Controller:处理请求并返回响应的组件。
HandlerMapping:管理Controller的组件,将请求映射到对应的Controller上。
ViewResolver:根据请求返回对应的视图组件。
ModelAndView:Controller返回的数据模型和视图信息的封装。 总的来说,SpringMVC是一种优秀的Web框架,它的灵活性、易用性和可扩展性都非常优秀,是现代Web应用程序开发中不可或缺的一部分。
SpringBoot
SpringBoot和SpringMVC是两个不同的框架
SpringBoot是一个开箱即用的框架,它基于Spring框架,可以帮助开发人员快速构建Spring应用程序。SpringBoot提供了自动配置、可执行的JAR包等特性,可以大大简化Spring应用程序的开发和部署过程。 因此,SpringBoot和SpringMVC的区别在于:
自动配置:SpringBoot具有自动配置的特性,可以根据应用程序的需求自动配置。而SpringMVC需要手动进行配置。
开箱即用:SpringBoot可以快速构建完整的Spring应用程序,而SpringMVC只是一个Web框架。
微服务:SpringBoot可以用于构建微服务应用程序,而SpringMVC不是专门用于构建微服务的框架。
简化开发:SpringBoot可以大大简化Spring应用程序的开发和部署过程,而SpringMVC需要手动进行配置和部署。 总的来说,SpringBoot和SpringMVC都是优秀的框架,可以帮助开发人员快速开发应用程序,但是它们的使用场景和特性有所不同。如果你需要快速构建一个完整的Spring应用程序,那么SpringBoot是一个不错的选择;如果你只需要构建一个Web应用程序,那么SpringMVC是一个非常好的选择。
2.MyBatis
MyBatis是一种Java持久化框架,它可以帮助开发人员在Java应用程序中使用SQL数据库。它支持各种关系数据库,包括MySQL、Oracle、PostgreSQL和SQL Server等。MyBatis的主要优势在于它的简单性、灵活性和可扩展性。在后端开发中,MyBatis的主要作用是将Java对象映射到数据库表中的数据。 以下是使用MyBatis进行后端开发的一些步骤:
定义数据模型:首先,需要创建Java对象来表示数据库中的数据。这些Java对象应该与数据库表中的列相对应,这样就可以将Java对象映射到数据库表中的数据。
创建映射文件:MyBatis使用XML文件来定义Java对象和数据库表之间的映射关系。这些映射文件包含了SQL语句和参数映射,以及Java对象和数据库表之间的映射规则。
配置数据源:在使用MyBatis之前,需要配置数据源以连接到数据库。可以使用JNDI数据源、Java Database Connectivity (JDBC)数据源或其他数据源来配置数据源。
编写SQL查询:在映射文件中定义的SQL语句可以包含各种查询操作,如SELECT、UPDATE、DELETE和INSERT等。这些查询操作可以使用动态SQL来构建复杂的查询语句。
调用MyBatis API:最后,在Java应用程序中调用MyBatis API来执行SQL查询。MyBatis API包括SqlSession、SqlSessionFactory和Mapper等类,可以帮助开发人员执行SQL查询和管理数据库连接。 总之,MyBatis是一种非常强大的Java持久化框架,可以帮助开发人员轻松地将Java对象映射到数据库表中的数据。在后端开发中,MyBatis可以大大简化数据库操作,提高开发效率和代码质量。
3.SpringCloud 依赖注入
SpringCloud是一个用于构建和部署基于微服务的应用程序的框架。它提供了一组工具和库,用于构建分布式系统,并帮助开发人员实现开发云原生应用程序的常见模式和最佳实践。SpringCloud的一些关键功能包括服务发现和注册、负载均衡、熔断、分布式跟踪和配置管理。它还与其他流行的开源项目如Netflix OSS、Docker和Kubernetes集成。SpringCloud建立在流行的Spring Framework之上,为开发可扩展和具有弹性的云原生应用程序提供了一个强大而灵活的平台。
SpringCloud利用依赖注入实现了微服务之间的解耦合。在Spring Framework中,依赖注入是一种实现IOC(Inversion of Control,控制反转)的方式。通过IOC,对象的创建、初始化、销毁等控制权从调用者转移到容器中,使应用程序更加灵活、可扩展和可重用。 在SpringCloud中,每个微服务都是一个独立的应用程序,它们之间需要相互调用和协作。SpringCloud利用依赖注入解决了微服务之间的依赖关系。通过在微服务之间注入依赖对象,SpringCloud可以在运行时自动装配并管理这些对象的生命周期,从而实现了微服务之间的解耦合。 SpringCloud利用Spring Framework的依赖注入机制,通过注解或XML配置等方式将依赖对象注入到微服务中。这些依赖对象可以是其他微服务、数据库连接、消息队列、缓存等,SpringCloud会自动管理它们的创建、初始化和销毁等过程,从而实现了微服务之间的解耦合。
后端模块解耦用的是依赖注入吗
是的,依赖注入是一种常见的解耦方式,也是后端模块解耦的一种常用技术。依赖注入通过将对象的创建和管理交给容器来实现解耦合,使得模块之间不再紧耦合,提高了代码的可维护性和可扩展性。 在后端模块中,依赖注入通常用于实现模块之间的解耦关系。例如,一个模块需要调用另一个模块的功能时,可以通过依赖注入的方式将所需模块的接口注入到调用模块中,从而实现模块之间的解耦合。这样,在需要修改或替换模块时,只需要修改或替换对应的接口实现即可,而不需要修改调用模块的代码,从而提高了代码的可维护性和可扩展性。 依赖注入还可以通过配置文件或注解等方式实现,使得开发人员可以更加方便地管理对象的依赖关系。在后端模块中,常用的依赖注入框架包括Spring Framework和Google Guice等。这些框架可以帮助开发人员实现依赖注入,从而实现后端模块的解耦合。
4.Swagger 注解使用
Swagger是一种用于设计、构建、文档化和使用RESTful Web服务的开源框架。它提供了一套工具,可以方便地创建和维护API文档,同时也可以自动生成客户端代码和服务器端代码。在后端开发中,Swagger可以用于定义API的输入和输出参数、请求和响应格式、错误码等信息,从而让API更加易于使用和理解。Swagger还可以通过UI界面展示API的基本信息、请求参数、响应结果等,方便开发人员进行测试和调试。在后端开发中,Swagger可以集成到Spring Boot、Node.js等常用框架中,为API的开发和管理带来极大的便利。
在使用 Swagger 构建 API 文档时,可以使用一些注解来描述接口的信息,以下是一些常用的 Swagger 注解:
@Api:用于描述整个 API 的信息,包括标题、描述、版本等。
@ApiOperation:用于描述单个接口的信息,包括接口名称、接口描述、请求方法等。
@ApiParam:用于描述接口中的参数,包括参数名称、参数类型、是否必填、说明等。
@ApiModel:用于描述数据模型,包括模型名称、描述、字段等。
@ApiModelProperty:用于描述数据模型中的字段,包括字段名称、数据类型、说明等。
@ApiResponse:用于描述接口的响应信息,包括响应码、响应消息、响应数据等。
@ApiResponses:用于描述接口的多个响应信息。
@ApiIgnore:用于忽略某个接口或模型,不在文档中显示。 以上注解可以在后端代码中使用,通过 Swagger 的解析和扫描,自动生成 API 文档。
5.Redis
后端开发中的Redis是一种开源的内存数据库,它支持多种数据结构,并提供了丰富的操作命令。Redis以高速、高并发和高可靠性而著称,常用于缓存、消息队列、计数器、会话管理和实时数据分析等场景。与传统的关系型数据库相比,Redis在处理大量数据时具有更高的性能和更低的延迟,尤其适合于需要快速读写数据的场景。Redis还支持数据的持久化,可以将数据保存到硬盘中,以保证数据的安全性和可恢复性。在后端开发中,Redis被广泛应用于各种系统中,如Web应用、移动应用、游戏等。
淘宝大量订单时使用Redis主要是为了提高订单处理的性能和效率,具体的步骤如下:
订单生成:用户下单后,订单信息会保存到MySQL数据库中。
写入Redis缓存:将订单信息写入Redis缓存中,以加快订单的读取速度和减轻MySQL数据库的压力。
订单查询:在订单查询时,首先从Redis缓存中读取订单信息,如果缓存中不存在,则从MySQL数据库中读取。
数据更新:如果订单状态发生改变,比如付款或发货,将订单状态更新到MySQL数据库和Redis缓存中。
分布式锁:为了避免多个线程同时修改同一个订单,需要使用分布式锁,比如Redis实现的分布式锁来保证数据的一致性和可靠性。
Redis集群:为了支持高并发和高可用性,可以使用Redis集群来扩展Redis缓存的容量和提高Redis的可用性。
总之,淘宝大量订单时使用Redis主要是为了提高订单处理的性能和效率,通过将订单信息保存到Redis缓存中,减轻MySQL数据库的压力,同时使用分布式锁来保证数据的一致性和可靠性,使用Redis集群来扩展Redis缓存的容量和提高Redis的可用性。
分布式锁的具体实现流程如下:
获取锁:当一个进程需要获取锁时,它向Redis发送一个SETNX命令,如果返回值为1,说明成功获取了锁,否则说明锁已经被其他进程获取,当前进程需要继续等待。
设置过期时间:为了避免死锁和多个进程同时持有锁,需要为锁设置一个过期时间。在获取锁成功后,需要再发送一个EXPIRE命令,为锁设置一个过期时间,确保在一定时间内锁会自动释放,即使获取锁的进程意外崩溃或者被杀死了,锁也可以自动释放,避免锁被永久占用。
释放锁:当进程不再需要锁时,需要发送一个DEL命令来释放锁,同时通知其他进程锁已经被释放,其他进程可以再次尝试获取锁。
使用Lua脚本:为了避免获取锁和设置过期时间之间的竞态条件,可以使用Redis提供的Lua脚本来实现获取锁和设置过期时间的原子操作,确保锁的正确性和可靠性。
总之,分布式锁的具体实现流程包括获取锁、设置过期时间、释放锁和使用Lua脚本来实现原子操作,其中设置过期时间和释放锁是保证锁的正确性和可靠性的重要步骤,而使用Lua脚本可以避免竞态条件导致的问题
6.事务管理
在后端开发中,事务管理是非常重要的一部分。事务是一组操作的集合,这些操作要么全部成功,要么全部失败。在数据库操作中,事务管理通常用于确保数据库的完整性和一致性。 在后端开发中,我们通常使用数据库事务来管理操作。在事务中,一组数据库操作被视为一个单独的执行单元。如果其中任何一个操作失败,整个事务将被回滚到初始状态。这样可以确保数据的完整性和一致性。 在使用事务时,需要注意以下几点:
事务应该尽量短,以减少锁定时间和资源占用。
在事务中,应该尽量避免长时间的查询操作,以避免锁定。
操作中应该使用合适的隔离级别,以避免并发问题。
操作完成后,应该及时释放资源。 事务管理是后端开发的重要部分,需要开发人员具备一定的数据库知识和经验,以确保数据的完整性和一致性。
7.中间件
在后端开发中,中间件是指位于客户端和服务器之间的一组处理程序。中间件可以用来处理请求、响应或执行其他任务。中间件通常由Web框架提供支持,例如Express.js、Flask、Django等。以下是一些常见的中间件功能:
路由:中间件可以根据请求的URL和HTTP方法来确定哪个请求处理程序应该被调用。
认证和授权:中间件可以用来验证用户身份和授权访问资源。
日志记录:中间件可以用来记录请求和响应的日志,以便于调试和监控。
错误处理:中间件可以用来处理请求和响应中的错误,例如404 Not Found、500 Internal Server Error等。
缓存:中间件可以用来缓存响应结果,以提高应用程序的性能。 在Web框架中,中间件通常按照顺序执行。每个中间件都可以对请求和响应进行处理,并将控制权传递给下一个中间件。中间件可以修改请求和响应对象,也可以决定是否将控制权传递给下一个中间件。如果中间件决定不传递控制权,则请求处理过程将停止,并返回响应。Redis可以用作缓存、消息队列、任务队列等中间件
在使用中间件时,需要注意以下几点:
中间件的顺序很重要,不同的顺序可能导致不同的结果。
每个中间件应该只负责一个功能,以保持代码的清晰度和可维护性。
中间件应该遵循一致的接口和规范,以便于组合和重用。
中间件应该对请求和响应进行适当的验证和过滤,以避免安全漏洞和数据错误。 中间件是后端开发中非常重要的一部分,它可以用来处理请求、响应或执行其他任务。好的中间件设计可以大大提高应用程序的性能和可维护性。
8.路由
在后端开发中,路由是指将传入的请求分发到相应的处理程序的过程。
路由通常由请求的URL和HTTP请求方法决定。路由器可以根据URL和请求方法来决定将请求传递给哪个处理程序。
在后端开发中,路由通常由Web框架提供支持。以下是一些常见的Web框架和它们的路由实现:
Express.js:Express.js是Node.js的Web框架,它使用中间件来处理路由。路由由HTTP请求方法和URL路径组成
Spring MVC:Spring MVC是Java的Web框架,它使用注解来定义路由。路由由HTTP请求方法和URL路径组成。
在路由中,HTTP请求方法用于指定对资源的请求类型,如GET、POST、PUT、DELETE等。URL路径用于指定请求的资源路径。路由通常与处理程序直接相关联,处理程序负责处理请求并返回响应。 路由是后端开发中非常重要的一部分,它决定了如何将请求分配给处理程序。好的路由设计可以大大提高应用程序的性能和可维护性。
9.表单
在后端开发中,表单是指由用户填写的一组数据。表单通常由HTML表单元素组成,例如文本框、下拉列表、单选框等。当用户提交表单时,表单数据会被发送到后端服务器,后端服务器可以使用表单数据来执行相应的操作。 在后端开发中,表单数据通常以两种格式发送到后端服务器:GET和POST。GET方式将表单数据附加在URL中,而POST方式将表单数据封装在HTTP请求体中。以下是一些常见的表单处理操作:
接收表单数据:后端服务器可以通过访问HTTP请求对象来接收表单数据。对于GET方式,表单数据可以从请求URL中获取。对于POST方式,表单数据可以从HTTP请求体中获取。
验证表单数据:后端服务器应该验证表单数据的有效性。表单数据验证通常包括数据类型、格式、长度、范围等方面。
处理表单数据:后端服务器可以使用表单数据来执行相应的操作,例如将数据存储到数据库中、发送电子邮件等。
返回响应:后端服务器应该返回相应的响应给客户端。响应通常包括状态码、消息、重定向URL等方面。 在表单处理中,需要注意以下几点:
表单数据应该进行有效性验证,以避免安全漏洞和数据错误。
表单数据应该进行适当的转义和过滤,以避免跨站脚本攻击和SQL注入攻击。
表单数据应该在处理过程中进行适当的保护,以避免敏感数据泄露。
返回的响应应该包括适当的状态码和消息,以提供错误处理和调试信息。 表单是后端开发中非常重要的一部分,它涉及到数据的收集、验证、处理和返回。好的表单设计可以大大提高应用程序的性能和可维护性。
10.定时任务
后端开发定时任务指程序员编写的一种自动执行某些任务的程序,它按照预定的时间间隔或时间点自动执行,不需要人工干预。在后端开发中,定时任务通常用于处理一些需要周期性执行的任务,比如定时备份数据、定时发送邮件、定时更新缓存等。定时任务可以提高工作效率,减少人工操作,提高程序的健壮性和可靠性。常见的定时任务框架有Quartz、Spring Task等。
11.SSL
SSL(Secure Sockets Layer)是基于TCP/IP协议的安全通信协议,
它使用数字证书来认证服务器和客户端,使用加密来保护传输数据的完整性和私密性,以及提供可靠的消息认证机制,可以有效地防止数据被篡改和拦截。
SSL使用的加密方式有哪些?
SSL使用的加密方式主要有RSA、Diffie-Hellman、AES等。其中,RSA是一种非对称加密算法,它使用公钥和私钥来加密和解密数据;Diffie-Hellman则是一种密钥交换算法,它可以用于客户端和服务器之间的安全通信;AES是一种对称加密算法,它可以有效地保护传输数据的完整性和私密性。
创造价值,乐哉分享!
相关文章:
后端开发基础能力以及就Java的主流开发框架介绍
前言:java语言开发转后端,必须了解后端主流的一些东西,共勉。 后端开发需要具备以下基础能力: 1.编程语言:熟练掌握至少一门编程语言,如Java、Python、Ruby、PHP、C#等。 2.数据结构和算法:具…...
H2数据库连接时用户密码错误:Wrong user name or password [28000-214] 28000/28000 (Help)
H2数据库连接时用户密码错误: 2023-03-03 08:25:07 database: wrong user or password; user: "SA" org.h2.message.DbException: Wrong user name or password [28000-214]出现的问题配置信息原因解决办法org.h2.message.DbException: Wrong user name or password …...
青岛诺凯达机械盛装亮相2023济南生物发酵展,3月与您相约
BIO CHINA生物发酵展,作为生物发酵产业一年一度行业盛会,由中国生物发酵产业协会主办,上海信世展览服务有限公司承办,2023第10届国际生物发酵展(济南)于2023年3月30-4月1日在山东国际会展中心(济…...
【JAVA程序设计】【C00111】基于SSM的网上图书商城管理系统——有文档
基于SSM的网上图书商城管理系统——有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架开发的网上在线图书售卖商城项目,本项目分为三种权限:系统管理员、卖家、买家 管理员角色包含以下功能: 用户信息管理、权限管理、订…...
基于卷积神经网络CNN的三相故障识别
目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,为节能减排,减少电能损…...
Java工厂设计模式详解,大厂的Java抽象工厂模式分享!
我是好程序员-小源!本期文章主要给大家分享:Java工厂设计模式。文中使用通俗易懂的案例,使你快速学习和轻松上手!一、什么是Java抽象工厂模式1. Java抽象工厂是23种设计模式中创建型模式的一种,Java抽象工厂是由多个工…...
Git 企业级分支提交流程
Git 企业级分支提交流程 首先在本地分支hfdev上进行开发,开发后要经过测试。 如果测试通过了,那么久可以合并到本地分支develop,合并之后hfdev和development应该完全一样。 git add 文件 git commit -m ‘注释’ git checkout develop //切换…...
C/C++每日一练(20230303)
目录 1. 字符串相乘 2. 单词拆分 II 3. 串联所有单词的子串 1. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3"…...
Python3-条件控制
Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程: if 语句 Python中if语句的一般形式如下所示: if condi…...
KDZD地埋电缆故障测试仪
一、产品特性 ★电缆故障测试仪(闪测仪) (1)使用范围广:用于测量各种不同截面、不同介质的各种电力电缆、高频同轴电缆,市话电缆及两根以上均匀铺设的地埋电线等电缆高低阻、短路、开路、断线以及高阻泄漏…...
爆款升级!新系列南卡Neo最强旗舰杀到,业内首款无线充骨传导耳机!
中国专业骨传导耳机品牌NANK南卡于近日发布了全新南卡Neo骨传导运动耳机,打造一款佩戴最舒适、音质体验最好的骨传导耳机。推出第2代声学響科技技术,提供更优质的开放式骨传导听音体验,透过不一样的音质体验,打造更好的骨传导耳机…...
基于Spring Boot+Thymeleaf的在线投票系统
文章目录 项目介绍主要功能截图:后台登录注册个人信息展示投票数据显示首页展示对战匹配分数排行榜部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅…...
【每日一题Day135】LC1487保证文件名唯一 | 哈希表
保证文件名唯一【LC1487】 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用࿰…...
计算机系统的基本组成 第一节
一、计算机系统 计算机系统是指:电子数字通用、计算机系统 由硬件和软件两个子系统组成 硬件是保存和运行软件的物质基础 软件是指挥硬件完成预期功能的智力部分 重点: 计算机系统部件 五个 1、数据运算部件:完成对数据的运算处理功能…...
Scrapy爬虫框架入门
Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘、数据监测和自动化测试等领域。下图展示了Scrapy的基本架构,其中包含了主要组件和系统的数据处理流程(图中…...
最新使用nvm控制node版本步骤
一、完全卸载已经安装的node、和环境变量 ①、打开控制面板的应用与功能,搜索node,点击卸载 ②、打开环境变量,将node相关的所有配置清除 ③、打开命令行工具,输入node-v,没有版本号则卸载成功 二、下载nvm安装包 ①…...
Linux内核4.14版本——drm框架分析(1)——drm简介
目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 1.4.1 DRM Framebuffer 1.4.2 CRTC 1.4.3 Encoder 1.4.4 Connector 1.4.5 Bridge 1.4.6 Panel 1.4.…...
Google的一道经典面试题 - 767. 重构字符串
文章目录Google的一道经典面试题 - 767. 重构字符串767. 重构字符串1054. 距离相等的条形码结论Google的一道经典面试题 - 767. 重构字符串 767. 重构字符串 题目链接:767. 重构字符串 题目大意:给定一个字符串 s ,检查是否能重新排布其中的…...
E8-公共选择框相关的表
起因 昨天同事和我说,要在一个表单里加一组可选项。于是我去了公共选择框维护。这时候才发了这么个问题,前几天我在本机的测试环境里做的流程,导入到我们的生产环境里,表单里所用到的共公选择框的选项都在,在表单里是…...
再学C语言41:变长数组(VLA)
处理二维数组的函数:数组的行可以在函数调用时传递,但是数组的列只能被预置在函数内部 示例代码: #define COLS 4 int sum(int arr[][COLS], int rows) {int r;int c;int temp 0;for(r 0; r < rows; r){for(c 0; c < COLS; c){tem…...
物联网WEB大屏数据可视化
最近了解WEB大屏显示。一般像嵌入式这类的,MQTT协议会走的多一些,走订阅和发布的策略,网上走了一圈之后,目前有几个实现方案。这里对比一下几个物联网协议,相对而言MQTT更合适物联网,其它几个协议不是干这个…...
新:DlhSoft Gantt Chart for WPF Crack
用于 Silverlight/WPF 4.3.48 的 DlhSoft 甘特图灯光库 改进甘特图、网络图和 PERT 图表组件的 PERT 关键路径算法。2023 年 3 月 2 日 - 17:09新版本特征 改进了甘特图、网络图和 PERT 图表组件的 PERT 关键路径算法。Silverlight/WPF 标准版的 DlhSoft 甘特图灯光库 DlhSoft …...
C++基础(一)—— C++概述、C++对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)
1. C概述1.1 c简介“c”中的来自于c语言中的递增运算符,该运算符将变量加1。c起初也叫”c withclsss”.通过名称表明,c是对C的扩展,因此c是c语言的超集,这意味着任何有效的c程序都是有效的c程序。c程序可以使用已有的c程序库。为什…...
Rust学习总结之if,while,loop,for使用
目录 一:if的使用 二:while的使用 三:loop的使用 四:for的使用 本文总结的四种语句(if,while,loop,for)除了loop,其他的三个在C语言或者Python中都是常见…...
Java知识复习(十一)RabbitMQ
1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息 3、Producer和…...
thinkphp图片压缩类
<?php namespace app\lib; /** * 图片压缩类:通过缩放来压缩。 * 如果要保持源图比例,把参数$percent保持为1即可。 * 即使原比例压缩,也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例,则体积会更小。…...
如何将图数据库应用于电影智能推荐
导读 电影,是一种结合视觉与听觉的现代艺术。如今,电影已不单是人们娱乐消遣的生活方式,也逐渐成为国家文化软实力的重要标志之一。据有关数据统计,2021年中国影视行业市场规模达2349亿元,同比增长23.2%,预…...
CSS实现动画效果的菜单收起展开图标,html实现动画效果的箭头
效果 实现代码 此处JS代码引入了jquery <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.menu-icon{position: absolute;left: 20%;top: 30%;transition: all .3s;}.menu-icon:before, .menu…...
大数据平台小结
搭建大数据平台启动流程1、启动Nginx服务(在bdp-web-mysql服务中)cd /usr/local/nginx/# 启动Nginx ./sbin/nginx# 查看端口是否存在 netstat -tunlp|grep 200012、启动zookeeper(在bdp-executor-realtime123)cd /app/bdp/apache-…...
力扣-139单词拆分
力扣-139单词拆分 1、题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "…...
网站信息内容建设实施办法/北京昨天出啥大事了
资料来源 https://opensource.com/alternatives/gmail本文是对原文翻译,在调试 privmx 时么有成功,这些代码大多用于 php5 ,对PHP7 不兼容。相关资料 https://www.oschina.net/news/66088/open-source-alternatives-gmailhttps://webmail.…...
网站建设公司导航/公司网络推广网站
chrony有两个核心组件,分别是:chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。chronyc:提供一个用户界面,用于监控性…...
wordpress 主题 结构/推广点击器
iOS常用传值小结 ************************************* 最简单的用第二个界面的label来显示第一个界面的textField中的文本 (一)属性传值----前向后传值 1.我们首先要在RootViewController的基础上创建一个DetailViewController,然后我们要记住传值过程中用到什么…...
团购网站怎么做推广/百度收录官网
报错:叫我们删除log4j-over-slf4j.jar, 选中项目 然后搜索对应的包,然后排除即可,我这边已经排除了,就ok了 ctrlF搜索哦! 版本问题,使用插件解决吧: https://yidajava.blog.csdn.net/article/details/103668676...
成都网站建设 今网科技/网站推广的四个阶段
TimeUnits 可以为 Seconds, Minutes, Hours 或 Days (或仅使用这些单词的首个字母). 如果 Value 为空, 则使用当前时间代替. 同样地, 如果 Var 是空变量, 则使用当前时间代替. 计算隔几天前(后)是哪个日期 var1 ; 赋值为空, 这样下面将会使用当前时…...
树莓派wordpress速度如何/google广告投放
2019年中国振动测试设备市场规模达到了XX亿元,预计2026年可以达到XX亿元,未来几年年复合增长率(CAGR)为XX%。本报告研究中国市场振动测试设备的生产、消费及进出口情况,重点关注在中国市场扮演重要角色的全球及本土振动测试设备生产商&#x…...