Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
spring相关视频教程:https://www.bilibili.com/vide...
Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。Spring MVC 角色划分清晰,分工明细。由于 Spring MVC 本身就是 Spring 框架的一部分,可以说和 Spring 框架是无缝集成。性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架,最热门的开发技能。
spring MVC相关视频教程:https://www.bilibili.com/vide...
废话不多说下面一起来进入Spring和Spring MVC框架的世界吧!!!
1. 为什么使用Spring ?
1). 方便解耦,简化开发
通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
2). AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。
3). 声明式事务的支持
4). 方便集成各种优秀框架
5). 降低Java EE API的使用难度
如对JDBC,JavaMail,远程调用等提供了简便封装
2. 什么是IoC,为什使用IoC ?
IoC全称Iversion of Controller,控制反转。
这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。
它能指导我们如何设计出松耦合、更优良的程序。
3. 什么是AOP,为什么使用AOP ?
AOP全称:Aspect-Oriented Programming,面向切面编程。
AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如事务管理、权限控制、日志记录、性能统计等。
AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,使得系统更加健壮,可维护性更好。
4. 什么是Spring的事务管理?
事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。
开发中为了避免这种情况一般都会进行事务管理。
Spring的声明式事务通常是指在配置文件中对事务进行配置声明,其中包括了很多声明属性,它是通过Spring Proxy帮你做代理,自己不用额外的写代码,只要在Spring配置文件中声明即可;通常用在数据库的操作里面;
编程式事务就是指通过硬编码的方式做事务处理,这种处理方式需要写代码,事务中的逻辑可以自己定制;可以是数据库的东东,也可以是其他的操作。
Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理 , 可以通过Spring的注入来完成此功能。
5.Spring框架支持以下五种bean的作用域:
singleton: 默认值,bean在每个Springioc容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的SpringApplicationContext情形下有效。
session:在一个HTTPSession中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext情形下有效。
global-session:在一个全局的HTTPSession中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext情形下有效。
6.什么是Spring的MVC框架?
Spring配备构建Web应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
7. 如何启用注解:
如果使用 则上面内容可以省略
8. Spring MVC的请求流程:
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
9. web.xml的配置
10.注解的处理器映射器和适配器
spring3.1之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
在spring3.1之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。
使用mvc:annotation-driven代替上边注解映射器和注解适配器配置
11. spring 与 mybatis整合过程
第一步:整合dao层
mybatis和spring整合,通过spring管理mapper接口。
使用mapper的扫描器自动扫描mapper接口在spring中进行注册。
第二步:整合service层
通过spring管理 service接口。
使用配置方式将service接口配置在spring配置文件中。
实现事务控制。
第三步:整合springmvc
由于springmvc是spring的模块,不需要整合。
主要配置有:
1). mybatis配置文件sqlMapConfig.xml配置别名自动扫描(实体类)
2). mapper扫描器(接口,数据库访问接口)
3). 数据库连接池配置
4).声明式事务配置
5). 启用注解扫描:
6). 配置注解映射器和适配器:
7). 视图解析器:
8). 配置控制类:DispatcherServlet前端控制器
9). 配置spring配置文件加载类:ClassLoadListener
12. 前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的DispatcherSerlvet.properties。
13.视图解析器配置前缀和后缀:
14.sqlMapConfig.xml,mybatis自己的配置文件。
15. 配置数据源:
16.事务控制(applicationContext-transaction.xml), 在applicationContext-transaction.xml中使用spring声明式事务控制方法。
17. 加载spring配置
18. 静态资源访问不被拦截:
19.@RequestMapping的作用
1).url映射
2).窄化请求映射
3).限制http请求方法
20.controller方法的返回值
需要方法结束时,定义ModelAndView,将model和view分别进行设置。
如果controller方法返回string,
1). 表示返回逻辑视图名。真正视图(jsp路径)=前缀+逻辑视图名+后缀
2).redirect重定向:返回字符串格式为:"redirect:queryItem.action"
3).forward页面转发:返回字符串格式为:“forward:queryItem.action”
在controller方法形参上可以定义request和response,使用request或response指定响应结果:
1). 使用request转向页面,如下:request.getRequestDispatcher("页面路径").forward(request, response);
2). 也可以通过response页面重定向:response.sendRedirect("url")
3). 也可以通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
21. 参数绑定:
直接在controller方法形参上定义下边类型的对象,就可以使用这些对象。在参数绑定过程中,如果遇到下边类型直接进行绑定。
1). HttpServletRequest:通过request对象获取请求信息
2). HttpServletResponse:通过response处理响应信息
3). HttpSession:通过session对象得到session中存放的对象
4). Model/ModelMap:model是一个接口,modelMap是一个接口实现 。作用:将model数据填充到request域。
通过@RequestParam对简单类型的参数进行绑定。
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。
通过required属性指定参数是否必须要传入,如果设置为true,没有传入参数,会报错。
页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。(usename,age;不需要user.username,user.age)
对于controller形参中pojo对象,如果属性中有日期类型,需要自定义参数绑定。将请求日期数据串转成 日期类型,要转换的日期类型和pojo中日期属性的类型保持一致。
22. Spring MVC 和 Struts2 对比
1). Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url
2). 由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。
3). 由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
4). SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
5).springmvc面向方法开发的(更接近service接口的开发方式),struts2面向类开发。
6). springmvc可以单例开发,struts2只能是多例开发。
23. 乱码处理
1).post乱码
在web.xml添加post乱码filter:CharacterEncodingFilter
2).对于get请求中文参数出现乱码解决方法有两个:
a. 修改tomcat配置文件添加编码与工程编码一致,如下:
b. 对参数进行重新编码:
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
24.集合类型绑定
1). 数组绑定:
controller方法参数使用:(Integer[] itemId)
页面统一使用:itemId 作为name
2).list绑定:
pojo属性名为:itemsList
页面:itemsList[index].属性名
3).map 绑定:
pojo属性名为:Map itemInfo = new HashMap();
页面:
姓名:
25. spring 校验
1).项目中,通常使用较多是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。
2).springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)。
校验思路:页面提交请求的参数,请求到controller方法中,使用validation进行校验。如果校验出错,将错误信息展示到页面。
26.数据回显
1). @ModelAttribute还可以将方法的返回值传到页面:在方法上加注解@ModelAttribute
2).使用最简单方法使用model,可以不用@ModelAttribute:model.addAttribute("id", id);
3).springmvc默认对pojo数据进行回显。pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写)
4).public String testParam(PrintWriter out, @RequestParam("username") String username) { //out直接输出
27.异常处理
springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。
系统遇到异常,在程序中手动抛出,dao抛给service、service给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。
28.上传图片
1).在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。
2).在springmvc.xml中配置multipart类型解析器。
3). 方法中使用:MultipartFile attach (单个文件上传) 或者 MultipartFile[] attachs (多个文件上传)
29. Json处理
1).加载json转换的jar包:springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转)
2).配置json转换器。在注解适配器RequestMappingHandlerAdapter中加入messageConverters。如果使用 则会自动加入。
3). ajax
4). Controller(ResponseBody、RequestBody)
5). 注意ajax中contentType如果不设置为json类型,则传的参数为key/value类型。上面设置后,传的是json类型。
30. 拦截器:
1).定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。
a.preHandle :进入 Handler方法之前执行,用于身份认证、身份授权,比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
b.postHandle:进入Handler方法之后,返回modelAndView之前执行,应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
c.afterCompletion:执行Handler完成执行此方法,应用场景:统一异常处理,统一日志处理
2). 拦截器配置:
a. 针对HandlerMapping配置(不推荐):springmvc拦截器针对HandlerMapping进行拦截设置,如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler
最终使用该 拦截器。 (一般不推荐使用)
b.类似全局的拦截器:springmvc配置类似全局的拦截器,springmvc框架将配置的类似全局的拦截器注入到每个HandlerMapping中
31.如何启用注解:
如果使用 则上面内容可以省略
使用mvc:annotation-driven代替注解映射器和注解适配器配置
你可能感兴趣的:(Spring MVC +Spring 框架知识点小总结)
手摸手系列之---camel ftp监听接收解析xml报文并入库生成Java对象实战
码上艺术家
camel xml camel
前言版本:SpringBoot2.4camel3.5.0最近在做跟一个第三方系统的对接,主要流程就是对方生成XML格式的报文,需要我方将其报文发送到海关申报,然后将申报完的数据再组装成XML报文格式发回到对方的FTP服务器。功能其实挺简单,用Apache的camel-ftp很容易就能实现,下面看看具体如何做吧。一、引入camel依赖:org.apache.camel.springbootcamel
手摸手系列之---camel ftp监听本地报文目录,并在报文生成后上传到远程第三方ftp服务器实战
码上艺术家
camel 服务器 运维
前言版本:SpringBoot2.4camel3.5.0上篇文章已经说过项目需求和主要流程,现在已经接收解析xml报文并入库生成Java对象。下一步就是处理完生成的数据生成XML报文,再返回给第三方ftp服务器了。下面看看怎么做。1.增加camel配置,本地监听目录和远程第三方ftp服务器URL。#camel配置camel:#camelftp服务路由地址route:id:XMLRouteftp:s
推荐3D UNet实现:深度学习3D体素数据语义分割的利器!
滑辰煦Marc
推荐3DUNet实现:深度学习3D体素数据语义分割的利器!去发现同类优质开源项目:https://gitcode.com/在这个快速发展的深度学习时代,3DUNet已经成为3D图像处理领域中不可或缺的工具,尤其在医疗影像分析和3D物体识别等任务上展现出强大的潜力。这个开源项目为我们提供了一个高效、灵活的3DUNet实现,支持Tensorflow、PyTorch和Chainer三种主流深度学习框架。
如何理解 Tailwind CSS 的“功能类(Utility-first)”思想?
TailwindCSS是一个基于“功能类(Utility-first)”思想的CSS框架。它与传统的CSS框架(如Bootstrap或Foundation)有很大的不同,不是通过预定义的组件来构建UI,而是通过一系列低级的、原子化的类来构建定制化的设计。这种方法使得开发者可以更加灵活、高效地定制网页布局和样式。在本文中,我们将深入探讨TailwindCSS的核心思想——功能类,并分析它如何帮助开发
Spring-@Configuration注解简析
大家好,我是半夏之沫一名金融科技领域的JAVA系统研发我希望将自己工作和学习中的经验以最朴实,最严谨的方式分享给大家,共同进步写作不易,期待大家的关注和点赞关注微信公众号【技术探界】前言Spring中的@Configuration注解修饰的类被称为配置类,通过配置类可以向容器注册bean以及导入其它配置类,本篇文章将结合例子和源码对@Configuration注解原理进行学习,并引出对Spring
百万架构师第二十二课:源码分析:Spring 源码分析:Spring经典面试答疑|JavaGuide
后端
Spring面试解答上半节:面试中需要注意的细节动脑子,面试是一种交流面试的时候,要用心去感受当时面试场景了解自己,自己的长处、自己的短处(巧妙地扬长避短)了解1.公司的业务场景2.你是去面试什么岗位的?Java高级工程师实际工作经验是1年(如实填写)1、请描述SpringIOC的工作原理答:定位加载注册BeanFactoryBeanDefintion...1-3年1+ApplicationCon
用Python做一个网页
我是学习编程的人 多多照顾我吧求你
python
要用Python做一个网页,你可以使用Flask或Django这样的Web框架。这里以Flask为例,给出一个简单的示例:1.首先,确保你已经安装了Flask。如果没有,可以使用以下命令安装:```bashpipinstallflask```2.创建一个名为`app.py`的文件,并在其中编写以下代码:```pythonfromflaskimportFlask,render_templateapp
PyTorch机器学习与深度学习技术方法
Teacher.chenchong
机器学习 python 开发语言
近年来,随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术,在许多行业都取得了颠覆性的成果。另外,近年来,Pytorch深度学习框架受到越来越多科研人员的关注和喜爱。Python基础知识串讲1、Python环境搭建(Python软件下载、安装与版本选择;PyCharm下载、安装;Python之HelloW
集团公司L1-L5级流程框架方法论:(1)L1级流程:为业务价值链,是业务流程的主干; (2)L2级流程:为运作模式层面的业务子流程,因场景不同而差异化; (3)L3级流程:为实现运营模式所需的业
公众号:优享智库
数字化转型 数据治理 主数据 数据仓库 大数据
集团公司L1-L5级流程框架方法论集团公司L1-L5级流程框架方法论L1级流程:业务价值链定义与作用构成要素与其他流程关系案例分析L2级流程:运作模式层面业务子流程场景差异化原因子流程分类与特点跨场景协同策略案例分析L3级流程:业务能力与业务活动业务能力定义及要求业务活动类型与目的与IT系统关系澄清案例分析L4级流程:业务与IT系统交互过程/工作流交互过程描述方法工作流设计原则常见问题与解决方案案
企业架构业务流程设计五步法
公众号:优享智库
数字化转型 数据治理 主数据 数据仓库 架构
企业架构业务流程设计五步法企业架构与业务流程概述企业架构定义及重要性业务流程概念及作用企业架构与业务流程关系第一步:明确战略目标与需求确定企业战略目标分析业务需求及痛点制定项目目标与计划第二步:梳理现有业务流程调研现有业务流程情况识别关键业务环节及问题评估现有流程效率与效果第三步:设计优化方案与实施路径制定优化策略及原则设计新业务流程框架图规划实施步骤与时间表第四步:落地实施与持续改进搭建支持新流
从小白到高手:人工智能学习中的挑战与突破
博雅智信
人工智能 深度学习 机器学习 python 大语言模型
引言:人工智能学习之路充满挑战学习过程中常见的问题与困境环境安装与配置问题简单报错反复调试,时间浪费大学习进度慢,难以找到合适的方向网上资料过多,选择困难导师催进度,任务压力大不敢多问:与同事、师兄师姐的尴尬理论与实践脱节,缺乏实战经验专注力不足,容易被干扰找一个师傅带着的好处高效解决问题,避免走弯路个性化学习路线与系统化知识框架实战经验的传授与导师的成长指导1.引言:人工智能学习之路充满挑战人工
TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用
Evaporator Core
typescript 前端框架 学习
1.引言在前几篇学习笔记中,我们已经探讨了TypeScript的基础知识和在前端框架(如Angular和React)中的应用。本篇将重点介绍TypeScript在后端开发中的应用,特别是如何与Node.js和Express结合使用,以构建强类型、可维护的后端应用。2.TypeScript与Node.jsNode.js是一个基于ChromeV8引擎的JavaScript运行时,广泛用于构建后端应用。
华为 Ascend 平台 YOLOv5 目标检测推理教程
Lunar*
目标检测 华为 YOLO 目标检测
1.背景介绍随着人工智能技术的快速发展,目标检测在智能安防、自动驾驶、工业检测等领域中扮演了重要角色。YOLOv5是一种高效的目标检测模型,凭借其速度和精度的平衡广受欢迎。华为Ascend推理框架(ACL)是AscendCANN软件栈的核心组件,专为AscendAI加速硬件(如Atlas300I)设计,可实现高性能的深度学习推理。在本文中,我们将介绍如何基于华为AscendACL推理框架对YOLO
大数据毕业设计—基于python+Django自然灾害频发地区情况数据分析系统
qq_1406299528
python 计算机毕业设计 python 大数据 课程设计
一、项目技术开发语言:Pythonpython框架:Django软件版本:python3.7/python3.8数据库:mysql5.7或更高版本数据库工具:Navicat11开发软件:PyCharm/vscode前端框架:vue.js二、项目内容和项目介绍 1.项目内容 1.开发语言:该系统采用Python作为开发语言,Python具有优雅的语法和动态类型,以及解释型语言的本质,使其成为许多
【源码+文档】基于SpringBoot+Vue旅游网站系统【提供源码+答辩PPT+参考文档+项目部署】
万码堂源码
实战项目源码 计算机毕设精品实战案例 spring boot vue.js 旅游
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等。业务范围:免费功能设计、开题报告、任务书
华为CANN架构与Ascend C算子开发
z1931195
华为
CANN架构CANN(ComputeArchitectureforNeuralNetworks)是华为专为应对人工智能场景而推出的一种新型异构计算架构。在当前快速发展的AI技术背景下,CANN致力于提供一种高效且灵活的解决方案,以支持多种AI框架的应用。其设计不仅仅关注于上层应用的兼容性,同时也服务于底层AI处理器的优化和编程需求,发挥了承上启下的关键作用,成为华为昇腾AI处理器计算效率提升的核心
PLUTO:突破基于模仿学习的自动驾驶规划极限
硅谷秋水
机器学习 自动驾驶 人工智能 自动驾驶 人工智能 机器学习 计算机视觉
24年4月来自香港科技大学的论文“PLUTO:PushingtheLimitofImitationLearning-basedPlanningforAutonomousDriving”。PLUTO,突破基于模仿学习的自动驾驶规划极限。改进来自三个关键方面:一种纵向横向感知模型架构,可实现灵活多样的驾驶行为;一种创新的辅助损失计算方法,可广泛应用且可高效地进行批量计算;一种利用对比学习的训练框架,采
Springboot项目如何消费Kafka数据
布朗克168
Kafka spring boot kafka 后端
目录一、引入依赖二、添加Kafka配置三、创建Kafka消费者(一)Kafka生产的消息是JSON字符串1、方式一2、方式二:需要直接访问消息元数据(二)Kafka生产的消息是对象Order四、创建启动类五、配置Kafka生产者(可选)(一)消息类型为json串(二)消息类型为对象Order六、启动Kafka服务七、测试Kafka消费者九、测试和调试十、结语一、引入依赖你需要在pom.xml中添加
SSM框架从入门到精通
布朗克168
# SSM Java开发相关后端框架 经验分享 spring mybatis java
文章目录一、SSM框架概述二、Spring基础(一)配置与依赖注入(二)Bean的生命周期(三)事务管理三、SpringMVC入门(一)控制器实现(二)请求映射(三)模型数据绑定四、MyBatis学习(一)SQL映射文件(二)动态SQL(三)实体类与数据映射五、整合SSM(一)基础集成(二)异常处理六、实战应用(一)项目构建(二)调试与优化(三)常见问题解决七、总结一、SSM框架概述SSM框架是由
腾讯蓝鲸团队最佳实践
卫玠_juncheng
数据库 服务器 python
蓝鲸最佳实践该文档为腾讯蓝鲸团队多年的编程最佳实践总结,包括Python\Golang等多个语言及其相关领域。内容将跟随项目发展与语言/框架的更新不断改进。为了更方便地索引最佳实践,我们建立了一个简单的标号机制BBP,你可以阅读BBP-0000了解更多。目录Python内置数据结构BBP-1001避免魔术数字BBP-1002不要预计算字面量表达式BBP-1003优先使用列表推导或内联函数内置模块B
集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)
公众号:优享智库
数字化转型 数据治理 主数据 数据仓库 架构 微服务 云原生
集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)引言项目背景与目标TOGAF方法论简介规划方案概述企业现状分析与评估业务流程梳理现有IT架构评估存在问题及挑战分析架构设计原则与策略制定架构设计原则确定技术选型及标准化策略安全性、可靠性和可扩展性考虑业务架构规划与设计业务需求梳理与整合业务功能模块划分业务流程优化建议数据
Yii框架中的日历控件如何实现日期选择器
ac-er8888
php 后端 mysql
在Yii框架中,虽然Yii本身不直接提供一个内置的日历控件用于日期选择器,但你可以利用Yii的扩展包或者结合前端库(如jQueryUIDatepicker、BootstrapDatepicker等)来实现这一功能。以下是一些常见的方法来实现日期选择器:1.使用jQueryUIDatepickerjQueryUI是一个流行的jQuery插件集,其中包含了日期选择器组件。你可以通过以下步骤在Yii中集
Java连接TDengine和MySQL双数据源
NUZGNAW
java tdengine mysql
git文件地址:项目首页-SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源-GitCode1、yml配置spring:datasource:druid:mysql:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/testuse
【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元
m0_54804970
spring boot 前端 后端
第七届人文教育与社会科学国际学术会议(ICHESS2024)_艾思科蓝_学术一站式服务平台更多学术会议请看:https://ais.cn/u/nuyAF3目录一、SpringBoot简介1.1SpringBoot的诞生背景1.2SpringBoot的核心特性二、搭建开发环境2.1安装Java环境2.2安装IDE2.3安装Maven或Gradle三、创建SpringBoot项目3.1使用Spring
每天五分钟深度学习框架pytorch:基于vgg块搭建VGG卷积神经网络
每天五分钟玩转人工智能
深度学习框架pytorch 深度学习 pytorch cnn VGG 卷积神经网络
本文重点前面我们使用pytorch搭建了vgg块,本文我们使用vgg块搭建卷积神经网络VGG16,我们先来看一下vgg16的模型结构是什么样的:搭建vgg16importtorchfromtorchimportnndefvgg_block(num_convs,in_channels,out_channels):net=[nn.Conv2d(in_channels,out_channels,kern
SpringBoot 使用ElasticsearchRestTemplate
hbzslb
spring boot java mybatis
1.pom.xml添加org.springframework.bootspring-boot-starter-data-elasticsearch2.6.22.配置文件配置地址spring:data:elasticsearch:cluster-name:elasticsearchcluster-nodes:localhost:92003.开始使用3.0.创建实体类@Data@AllArgsCons
探索极致AI性能:昇腾NPU与PyTorch的完美融合 —— Ascend Extension for PyTorch
尤琦珺Bess
探索极致AI性能:昇腾NPU与PyTorch的完美融合——AscendExtensionforPyTorch去发现同类优质开源项目:https://gitcode.com/项目简介在人工智能领域,高效灵活的框架与强大的硬件加速器是实现先进算法的关键组合。AscendExtensionforPyTorch插件,即torch_npu,正是这样一个解决方案,它无缝对接PyTorch框架,将华为昇腾AI处
FastAPI 中间件使用:CORS 与 GZip 压缩
LensonYuan
python学习教程 fastapi 中间件 GZip CORS 跨域访问
FastAPI中间件详解:CORS与GZip压缩在FastAPI中,中间件(Middleware)是一种强大的工具,用于在请求和响应之间执行全局性任务。本文将深入探讨两个常用的中间件:CORSMiddleware和CustomGZipMiddleware,并通过丰富的示例和知识点,帮助你全面掌握它们的使用场景和实现原理。1.什么是中间件?中间件是一种在请求到达应用程序之前或响应返回客户端之前执行的
Vue中常见设计模式的应用~
Warm
vue.js 设计模式 前端
Vue是基于什么模式?表示既然是Vue中常见的设计模式,首当其冲就先聊聊MVVM模式啦一、mvvm模式Vue.js是一个基于MVVM设计模式的前端框架。它将前端中的UI视图与底层数据和业务逻辑分离开来,使得UI视图与数据和业务逻辑之间不存在耦合性,可以独立编写和测试。MVVM三个组成部分Model(模型):存放业务数据和对数据的操作等View(视图):用户界面,负责呈现UI,并向ViewModel
前端框架: Vue3组件设计模式
苹果酱0567
面试题汇总与解析 课程设计 spring boot vue.js java mysql
前端框架:Vue3组件设计模式在前端开发中,Vue框架一直受到开发者的喜爱。它不仅易于上手,而且功能丰富,尤其是在Vue3中引入了CompositionAPI和Teleport等新特性,进一步提升了开发体验。在Vue3中,组件设计模式是一个非常重要的话题,良好的组件设计模式可以提高代码的可维护性和可扩展性,本文将深入探讨Vue3组件设计模式的相关内容。一、组件化开发模式组件化概念及优势在前端开发中
Java 并发包之线程池和原子计数
lijingyao8206
Java计数 ThreadPool 并发包 java线程池
对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。
这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁C
java编程思想 抽象类和接口
百合不是茶
java 抽象类 接口
接口c++对接口和内部类只有简介的支持,但在java中有队这些类的直接支持
1 ,抽象类 : 如果一个类包含一个或多个抽象方法,该类必须限定为抽象类(否者编译器报错)
抽象方法 : 在方法中仅有声明而没有方法体
package com.wj.Interface;
[房地产与大数据]房地产数据挖掘系统
comsci
数据挖掘
随着一个关键核心技术的突破,我们已经是独立自主的开发某些先进模块,但是要完全实现,还需要一定的时间...
所以,除了代码工作以外,我们还需要关心一下非技术领域的事件..比如说房地产
&nb
数组队列总结
沐刃青蛟
数组队列
数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。
以下是数组队列的功能实现代码:
import List.Student;
public class
Oracle存储过程无法编译的解决方法
IT独行者
oracle 存储过程
今天同事修改Oracle存储过程又导致2个过程无法被编译,流程规范上的东西,Dave 这里不多说,看看怎么解决问题。
1. 查看无效对象
XEZF@xezf(qs-xezf-db1)> select object_name,object_type,status from all_objects where status='IN
重装系统之后oracle恢复
文强chu
oracle
前几天正在使用电脑,没有暂停oracle的各种服务。
突然win8.1系统奔溃,无法修复,开机时系统 提示正在搜集错误信息,然后再开机,再提示的无限循环中。
无耐我拿出系统u盘 准备重装系统,没想到竟然无法从u盘引导成功。
晚上到外面早了一家修电脑店,让人家给装了个系统,并且那哥们在我没反应过来的时候,
直接把我的c盘给格式化了 并且清理了注册表,再装系统。
然后的结果就是我的oracl
python学习二( 一些基础语法)
小桔子
pthon 基础语法
紧接着把!昨天没看继续看django 官方教程,学了下python的基本语法 与c类语言还是有些小差别:
1.ptyhon的源文件以UTF-8编码格式
2.
/ 除 结果浮点型
// 除 结果整形
% 除 取余数
* 乘
** 乘方 eg 5**2 结果是5的2次方25
_&
svn 常用命令
aichenglong
SVN 版本回退
1 svn回退版本
1)在window中选择log,根据想要回退的内容,选择revert this version或revert chanages from this version
两者的区别:
revert this version:表示回退到当前版本(该版本后的版本全部作废)
revert chanages from this versio
某小公司面试归来
alafqq
面试
先填单子,还要写笔试题,我以时间为急,拒绝了它。。时间宝贵。
老拿这些对付毕业生的东东来吓唬我。。
面试官很刁难,问了几个问题,记录下;
1,包的范围。。。public,private,protect. --悲剧了
2,hashcode方法和equals方法的区别。谁覆盖谁.结果,他说我说反了。
3,最恶心的一道题,抽象类继承抽象类吗?(察,一般它都是被继承的啊)
4,stru
动态数组的存储速度比较 集合框架
百合不是茶
集合框架
集合框架:
自定义数据结构(增删改查等)
package 数组;
/**
* 创建动态数组
* @author 百合
*
*/
public class ArrayDemo{
//定义一个数组来存放数据
String[] src = new String[0];
/**
* 增加元素加入容器
* @param s要加入容器
用JS实现一个JS对象,对象里有两个属性一个方法
bijian1013
js对象
<html>
<head>
</head>
<body>
用js代码实现一个js对象,对象里有两个属性,一个方法
</body>
<script>
var obj={a:'1234567',b:'bbbbbbbbbb',c:function(x){
探索JUnit4扩展:使用Rule
bijian1013
java 单元测试 JUnit Rule
在上一篇文章中,讨论了使用Runner扩展JUnit4的方式,即直接修改Test Runner的实现(BlockJUnit4ClassRunner)。但这种方法显然不便于灵活地添加或删除扩展功能。下面将使用JUnit4.7才开始引入的扩展方式——Rule来实现相同的扩展功能。
1. Rule
&n
[Gson一]非泛型POJO对象的反序列化
bit1129
POJO
当要将JSON数据串反序列化自身为非泛型的POJO时,使用Gson.fromJson(String, Class)方法。自身为非泛型的POJO的包括两种:
1. POJO对象不包含任何泛型的字段
2. POJO对象包含泛型字段,例如泛型集合或者泛型类
Data类 a.不是泛型类, b.Data中的集合List和Map都是泛型的 c.Data中不包含其它的POJO
 
【Kakfa五】Kafka Producer和Consumer基本使用
bit1129
kafka
0.Kafka服务器的配置
一个Broker,
一个Topic
Topic中只有一个Partition() 1. Producer:
package kafka.examples.producers;
import kafka.producer.KeyedMessage;
import kafka.javaapi.producer.Producer;
impor
lsyncd实时同步搭建指南——取代rsync+inotify
ronin47
1. 几大实时同步工具比较 1.1 inotify + rsync
最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是 inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使用效率以及同步效率;更为要紧的是,加入inotify
java-9. 判断整数序列是不是二元查找树的后序遍历结果
bylijinnan
java
public class IsBinTreePostTraverse{
static boolean isBSTPostOrder(int[] a){
if(a==null){
return false;
}
/*1.只有一个结点时,肯定是查找树
*2.只有两个结点时,肯定是查找树。例如{5,6}对应的BST是 6 {6,5}对应的BST是
MySQL的sum函数返回的类型
bylijinnan
java spring sql mysql jdbc
今天项目切换数据库时,出错
访问数据库的代码大概是这样:
String sql = "select sum(number) as sumNumberOfOneDay from tableName";
List<Map> rows = getJdbcTemplate().queryForList(sql);
for (Map row : rows
java设计模式之单例模式
chicony
java设计模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的:
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的结构
单例模式的特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
饿汉式单例类
publ
javascript取当月最后一天
ctrain
JavaScript
<!--javascript取当月最后一天-->
<script language=javascript>
var current = new Date();
var year = current.getYear();
var month = current.getMonth();
showMonthLastDay(year, mont
linux tune2fs命令详解
daizj
linux tune2fs 查看系统文件块信息
一.简介:
tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。
二.用法:
Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g grou
做有中国特色的程序员
dcj3sjt126com
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有
Android:TextView属性大全
dcj3sjt126com
textview
android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText 如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输
tomcat虚拟目录安装及其配置
eksliang
tomcat配置说明 tomca部署web应用 tomcat虚拟目录安装
转载请出自出处:http://eksliang.iteye.com/blog/2097184
1.-------------------------------------------tomcat 目录结构
config:存放tomcat的配置文件
temp :存放tomcat跑起来后存放临时文件用的
work : 当第一次访问应用中的jsp
浅谈:APP有哪些常被黑客利用的安全漏洞
gg163
APP
首先,说到APP的安全漏洞,身为程序猿的大家应该不陌生;如果抛开安卓自身开源的问题的话,其主要产生的原因就是开发过程中疏忽或者代码不严谨引起的。但这些责任也不能怪在程序猿头上,有时会因为BOSS时间催得紧等很多可观原因。由国内移动应用安全检测团队爱内测(ineice.com)的CTO给我们浅谈关于Android 系统的开源设计以及生态环境。
1. 应用反编译漏洞:APK 包非常容易被反编译成可读
C#根据网址生成静态页面
hvt
Web .net C# asp.net hovertree
HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件是后台管理的首页。包含生成留言板首页,以及显示用户名,退出等功能。根据网址生成页面的方法:
bool CreateHtmlFile(string url, string path)
{
//http://keleyi.com/a/bjae/3d10wfax.htm
stri
SVG 教程 (一)
天梯梦
svg
SVG 简介
SVG 是使用 XML 来描述二维图形和绘图程序的语言。 学习之前应具备的基础知识:
继续学习之前,你应该对以下内容有基本的了解:
HTML
XML 基础
如果希望首先学习这些内容,请在本站的首页选择相应的教程。 什么是SVG?
SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用来定义用于网络的基于矢量
一个简单的java栈
luyulong
java 数据结构 栈
public class MyStack {
private long[] arr;
private int top;
public MyStack() {
arr = new long[10];
top = -1;
}
public MyStack(int maxsize) {
arr = new long[maxsize];
top
基础数据结构和算法八:Binary search
sunwinner
Algorithm Binary search
Binary search needs an ordered array so that it can use array indexing to dramatically reduce the number of compares required for each search, using the classic and venerable binary search algori
12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
刘星宇
c 面试
12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
1.gets()函数
问:请找出下面代码里的问题:
#include<stdio.h>
int main(void)
{
char buff[10];
memset(buff,0,sizeof(buff));
ITeye 7月技术图书有奖试读获奖名单公布
ITeye管理员
活动 ITeye 试读
ITeye携手人民邮电出版社图灵教育共同举办的7月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
7月试读活动回顾:
http://webmaster.iteye.com/blog/2092746
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《Java性能优化权威指南》