07 2022 档案
摘要:Button 控件是 Tkinter 中常用的窗口部件之一,同时也是实现程序与用户交互的主要控件。通过用户点击按钮的行为来执行回调函数,是 Button 控件的主要功用。首先自定义一个函数或者方法,然后将函数与按钮关联起来,最后,当用户按下这个按钮时,Tkinter 就会自动调用相关函数。按钮控件使
阅读全文
摘要:Label(标签)控件,是 Tkinter 中最常使用的一种控件,主要用来显示窗口中的文本或者图像,并且不同的 Lable(标签)允许设置各自不同的背景图片。下面对 Label(标签)的常用属性做简单介绍: 属性名称 说明 anchor 控制文本(或图像)在 Label 中显示的位置(方位),通过方
阅读全文
摘要:主窗口控件(window)是一切控件的基础,它好比是一台高速运转的机器,而其他控件则相当于这台机器上的部件,比如齿轮、链条、螺丝等等。由此我们知道,主窗口是一切控件的基础,所有的控件的都需要通过主窗口来显示。Tkinter 提供了一些关于主窗口对象的常用方法,在本节对这些方法做简单的介绍。 创建一个
阅读全文
摘要:我们知道,一个完整的 GUI 程序,其实是由有许多小的控件(widgets)构成的,比如按钮、文本框、输入框、选择框、菜单栏等等。在学习 Tkinter GUI 编程的过程中,不仅要学会如何摆放这些控件,还是掌握各种控件的功能、属性,只有这样才能开发出一个界面设计优雅,功能设计完善的 GUI 程序。
阅读全文
摘要:本节使用 Tkinter 编写第一个 GUI 程序,通过对程序代码的详细解读来讲解 Tkinter 的编码逻辑,以及使用 Tkinter 过程中的一些注意事项。 注意:程序中涉及的其他知识点(比如控件参数等)会在后续内容做详细介绍。 一个最简单的 Tkinter 程序至少应包含以下四个部分: 导入
阅读全文
摘要:Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可以直接使用它,而无须另行安装。作为一款 Python GUI
阅读全文
摘要:图形用户界面(Graphical User Interface,简称 GUI),是计算机图形学技术的一种,它一般由窗口、下拉菜单或者对话框等图形化的控件组成。用户通过点击菜单栏、按钮或者弹出对话框的形式来实现与机器的交互,GUI 的存在拉近了人与计算机的的距离,让人机交互的过程变得简单舒适、有温度。
阅读全文
摘要:在开始学习相关知识点之前,我们有必要先学习精灵和碰撞检测的含义。精灵(英文译为 Sprite),其实在一个游戏程序中,精灵本质指的是一张张小尺寸的图片,比如游戏中的各种道具、人物、场景装饰等,它们都可以看做成一张张小的“精灵”图。除此之外,人物的移动也可以看做是一系列小精灵图构成的序列(按帧组成的序
阅读全文
摘要:文本是任何一款游戏中不可或缺的重要要素之一,Pygame 通过pygame.font模块来创建一个字体对象,从而实现绘制文本的目的。该模块的常用方法如下所示: 方法 说明 pygame.font.init() 初始化字体模块 pygame.font.quit() 取消初始化字体模块 pygame.f
阅读全文
摘要:Pygame 中提供了一个draw模块用来绘制一些简单的图形状,比如矩形、多边形、圆形、直线、弧线等。pygame.draw模块的常用方法如下表所示: 方法 说明 pygame.draw.rect() 绘制矩形 pygame.draw.polygon() 绘制多边形 pygame.draw.circ
阅读全文
摘要:事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,比如鼠标点击、键盘敲击、游戏窗口移动、调整窗口大小、触发特定的情节、退出游戏等等,这些都可以看做是“事件”,Pygame 会接受用户产生的各种操作(或事件),这些操作随时产生,并且操作量可大可小,那么 Pygame 是如
阅读全文
摘要:Rect(rectangle)指的是矩形,或者长方形,在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。函数的语法格式如下: rect =pygame.Rect(left,top,width,height) Rect 表示的区域必须位于一个 Surface 对象之上
阅读全文
摘要:pygame.time 时间控制模块,是 Pygame 中使用频率较高的模块,其主要功能是管理时间和游戏帧数率(即 FPS)。时间在游戏开发中承担着非常重要的作用,比如释放某个技能所消耗的时间,或者播放动画、声音的持续时间,这些都需要时间来管理。time 模块另外一个重要作用是控制游戏帧数率(即 F
阅读全文
摘要:pygame.transform 模块允许您对加载、创建后的图像进行一系列操作,比如调整图像大小、旋转图片等操作,常用方法如下所示: 方法 说明 pygame.transform.scale() 将图片缩放至指定的大小,并返回一个新的 Surface 对象。 pygame.transform.rot
阅读全文
摘要:通过前面内容的介绍,我们对 Surface 对象有了大体上的认识。Pygame 针对文本、图像、颜色提供了不同模块来生成它们各自的 Surface 对象。Surface 模块是Pygame 中专门用来新建图像的,通过该模块可以创建一个 Surface 对象,语法格式如下: Surface=pygam
阅读全文
摘要:Pygame 使用pygame.display显示模块中的方法创建游戏的主窗口: screen = pygame.display.set_mode(size=(),flags=0) 上述函数有两个参数常用参数: size:元组参数,用来设置主窗口的大小 flags:功能标志位,表示创建的主窗口样式,
阅读全文
摘要:Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它。Pygame 语法简单、明了,秉持了 Python 语言一贯的风格。同时,它作为一个游戏开发库来说,具有图形编程的基本特点,如果您对于图形编程从未了解过,即使您有 Python 编程基础
阅读全文
摘要:Pygame 的下载非常简单,可分为两种方式:一是通过 Python 的包管理器 pip 来安装;二是下载二进制安装包进行安装。其中使用 pip 包管理器安装是最简单、最轻量级的方法,下面以 Windows 系统为例对上述两种方式进行讲解。 图1:可爱的Pygame 1) pip包管理器安装 这是最
阅读全文
摘要:Python 是当下最为火热,且功能最为全面的一门编程语言。Python 之所以深受大家喜爱, 除了可以被应用到“人工智能”领域之外,还可以延伸到数据分析、Web 开发、自动化测试、自然语言处理、游戏开发等各个领域。这一切的实现得益于 Python 有一个强大的第三方库(网址:https://pyp
阅读全文
摘要:GIF(Graphics Interchange Format,图形交换格式)是一种“位图”图像格式,它以.gif作为图像的扩展名。GIF 图片非常适合在互联网中使用,这是因为它采用了图像预压缩技术,该技术的应用,在一定程度上减少了图像传播、加载所消耗的时间。与其他格式的图片相比,GIF 还有一项非
阅读全文
摘要:NumPy 是 Python 科学计算的基础数据包,它被大量的应用于机器学习领域,比如图像识别、自然语言处理、数据挖掘等。ndarray 是 NumPy 中的数组类型,也称为 ndarray 数组,该数组可以与 Pillow 的 PIL.Image 对象实现相互转化。 ndarray数组创建图像 下
阅读全文
摘要:Pillow 提供了颜色处理模块 ImageColor,该模块支持不同格式的颜色,比如 RGB 格式的颜色三元组、十六进制的颜色名称(#ff0000)以及颜色英文单词("red")。同时,它还可以将 CSS(层叠样式表,用来修饰网页)风格的颜色转换为 RGB 格式。 注意,在 ImageColor
阅读全文
摘要:为图片添加水印能够在一定程度上避免其他人滥用您的图片,这是保护图片版权的一种有效方式。因此,当您在微博、或者博客等一些公众平台分享图片的时候,建议您为自己的图片添加一个水印,来证明这张图片属于您。添加水印的方式的有很多种,比如通过一些图像处理软件,或者手机美图软件都可以实现添加水印的操作,但是这种操
阅读全文
摘要:由于成像设备、传输媒介等因素的影响,图像总会或多或少的存在一些不必要的干扰信息,我们将这些干扰信息统称为“噪声”,比如数字图像中常见的“椒盐噪声”,指的是图像会随机出现的一些白、黑色的像素点。图像噪声既影响了图像的质量,又妨碍人们的视觉观赏。因此,噪声处理是图像处理过程中必不可少的环节之一,我们把处
阅读全文
摘要:图像的几何变换主要包括图像翻转、图像旋转和图像变换操作,Image 类提供了处理这些操作的函数 transpose()、rotate() 和 transform(),下面分别对它们进行讲解。 transpose()翻转操作 该函数可以实现图像的垂直、水平翻转,语法格式如下: Image.transp
阅读全文
摘要:图像的剪裁、复制、粘贴是图像处理过程中经常使用的基本操作,Pillow Image 类提供了简单、易用的 API 接口,能够帮助您快速实现这些简单的图像处理操作。 图像裁剪操作 Image 类提供的 crop() 函数允许我们以矩形区域的方式对原图像进行裁剪,函数的语法格式如下: crop(box=
阅读全文
摘要:我们知道,图像(指数字图像)由许多像素点组成,像素是组成图像的基本单位,而每一个像素点又可以使用不同的颜色,最终呈现出了绚丽多彩的图像。它们的本质就是图片呈现颜色时需要遵循的规则,比如 RGB、RGBA、CYMK 等,而图像的分离与合并,指的就是图像颜色的分离和合并。Image 类提供了用于分离图像
阅读全文
摘要:在图像处理过程中经常会遇到缩小或放大图像的情况,Image 类提供的 resize() 方法能够实现任意缩小和放大图像。resize() 函数的语法格式如下: resize(size, resample=image.BICUBIC, box=None, reducing_gap=None) 参数说明
阅读全文
摘要:Pillow 库支持多种图片格式,您可以直接使用 open() 方法来读取图片,并且无须考虑图片是何种类型。同时,Pillow 能够很轻松地实现图片格式之间的转换。图片格式之间的转换主要有以下两种方法,下面分别对它们进行了介绍: save() 顾名思义,save() 方法用于保存图像,当不指定文件格
阅读全文
摘要:Image 对象有一些常用的基本属性,这些属性能够帮助我们了解图片的基本信息,下面对这些属性做简单的讲解: 1) size:查看图像的尺寸 from PIL import Image im = Image.open("C:/Users/Administrator/Desktop/c-net.png"
阅读全文
摘要:mage 类是 Pillow 库中最为重要的类,该类被定义在和与其同名的 Image 模块中。使用下列导包方式引入 Image 模块: from PIL import Image 使用 Image 类可以实例化一个 Image 对象,通过调用该对象的一系列属性和方法对图像进行处理。Pilow 提供了
阅读全文
摘要:Pillow 安装非常简单和方便,有三种安装途径,分别是: pip包管理器安装 二进制包安装 Anaconda安装 下面对上述安装方式做简单介绍。 注意,PIL 库与 Pillow 库不允许在同一环境中共存,如果您之前安装了 PIL 库,请卸载后,再安装 Pillow。 pip包管理器安装 通过 P
阅读全文
摘要:PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评。自 2011 年以来,由于 PIL 库更新缓慢,目前仅支持 Python 2.7 版本,这明显无法满足 Python3 版本的使用需求。于是一群 Python
阅读全文
摘要:随着业务的不断发展,单体架构已经无法满足我们的需求,分布式微服务架构逐渐成为大型互联网平台的首选,但所有使用分布式微服务架构的应用都必须面临一个十分棘手的问题,那就是“分布式事务”问题。在分布式微服务架构中,几乎所有业务操作都需要多个服务协作才能完成。对于其中的某个服务而言,它的数据一致性可以交由其
阅读全文
摘要:Sentinel 是由阿里巴巴中间件团队开发的开源项目,是一种面向分布式微服务架构的轻量级高可用流量控制组件。Sentinel 主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度帮助用户保护服务的稳定性。Sentinel 具有以下优势: 丰富的应用场景:Sentinel 承接了阿里巴巴
阅读全文
摘要:Nacos 英文全称为 Dynamic Naming and Configuration Service,是一个由阿里巴巴团队使用 Java 语言开发的开源项目。Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台(参考自 Nacos 官网)。Nacos 的命名是由 3 部分
阅读全文
摘要:Spring Cloud 本身并不是一个拿来即可用的框架,它是一套微服务规范,这套规范共有两代实现。 第一代实现: Spring Cloud Netflix, 第二代实现: Spring Cloud Alibaba。 2018 年 12 月12 日,Netflix 公司宣布 Spring Cloud
阅读全文
摘要:在分布式微服务系统中,几乎所有服务的运行都离不开配置文件的支持,这些配置文件通常由各个服务自行管理,以 properties 或 yml 格式保存在各个微服务的类路径下,例如 application.properties 或 application.yml 等。这种将配置文件散落在各个服务中的管理方
阅读全文
摘要:在微服务架构中,一个系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。这种客户端直接请求服务的方式存在以下问题: 当服务数量众多时,客户端需要
阅读全文
摘要:在微服务架构中,一个应用往往由多个服务组成,这些服务之间相互依赖,依赖关系错综复杂。例如一个微服务系统中存在 A、B、C、D、E、F 等多个服务,它们的依赖关系如下图。 图1:服务依赖关系 通常情况下,一个用户请求往往需要多个服务配合才能完成。如图 1 所示,在所有服务都处于可用状态时,请求 1 需
阅读全文
摘要:Netflix Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如 Eureka、Ribbon 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称
阅读全文
摘要:Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。Netflix Ribbon 是 Netflix 公司发布的开源组件,其主要功能是提供客户端的负载均衡算法和服务调用。Spring Cloud 将其与 Netflix 中的其他开源服
阅读全文
摘要:Eureka 一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进 S
阅读全文
摘要:国际化(Internationalization 简称 I18n,其中“I”和“n”分别为首末字符,18 则为中间的字符数)是指软件开发时应该具备支持多种语言和地区的功能。换句话说,软件应该能够同时应对多个不同国家和地区用户的访问,并根据用户地区和语言习惯,提供相应的、符合用具阅读习惯的页面和数据。
阅读全文
摘要:除了传统的 XML 配置文件外,我们还可以通过“注解+配置类”的方式代替 web.xml 和 Spring MVC 的配置文件,来实现对 Spring MVC 的配置工作。本节,我们来详解介绍下如何通过注解来配置 Spring MVC。 1. 使用初始化类代替 web.xml 我们知道,Spring
阅读全文
摘要:文件下载 文件下载的含义十分简单,它指的就是将服务器中的文件下载到本机上。下面我们就结合一个实例,来演示下如何在 Spring MVC 中实现文件的下载功能,可以分为以下步骤。1. 在《Spring MVC文件上传》一节中创建的 springmvc-file-demo 的工程中,修改 success
阅读全文
摘要:在实际的项目开发中,文件的上传和下载可以说是最常用的功能之一,例如图片的上传与下载、邮件附件的上传和下载等。本节我们将对 Spring MVC 中的文件上传功能进行讲解。在 Spring MVC 中想要实现文件上传工作,需要的步骤如下。 1. 编写 form 表单 在 Spring MVC 项目中,
阅读全文
摘要:在实际的应用开发中,经常会不可避免地遇到各种可预知的、不可预知的异常,此时我们就需要对这些异常处理,以保证程序正常运行。Spring MVC 提供了一个名为 HandlerExceptionResolver 的异常处理器接口,它可以对控制器方法执行过程中出现的各种异常进行处理。Srping MVC
阅读全文
摘要:本节,我们将通过 Spring MVC 拦截器(Interceptor)来实现一个用户登录权限验证的案例。在本案例中,只有登录后的用户才能访问系统主页,若没有登录就直接访问主页,则拦截器会将请求拦截并跳转到登录页面,同时在登录页面中给出提示信息。若用户登陆时,用户名或密码错误,则登录页也会显示相应的
阅读全文
摘要:拦截器(Interceptor)是 Spring MVC 提供的一种强大的功能组件。它可以对用户请求进行拦截,并在请求进入控制器(Controller)之前、控制器处理完请求后、甚至是渲染视图后,执行一些指定的操作。在 Spring MVC 中,拦截器的作用与 Servlet 中的过滤器类似,它主要
阅读全文
摘要:我们知道,Spring MVC 在传递数据时,通常都需要对数据的类型和格式进行转换。而这些数据不仅可以常见的 String 类型,还可以是 JSON 等其他类型。JSON 是近些年一种比较流行的数据格式,它与 XML 相似,也是用来存储数据的。但相较于 XML,JSON 数据占用的空间更小,解析速度
阅读全文
摘要:在实际的项目开发中,经常会涉及到一些需要进行格式化的数据,例如金额、日期等。以金额为例,当金额为 10 万元时,在比较正式的场合往往要写成 ¥100000;而日期也可以被写作多种格式,例如 yyyy-MM-dd、yyyy-MM-dd hh:ss:mm 等。这些数据都要经过一定的格式化处理才能够正常使
阅读全文
摘要:我想您一定十分诧异,为什么仅仅通过一些注解,控制器方法就能够得到各种类型的参数,其实这都要归功于 Spring MVC 的类型转换机制。Spring 提供了一种 Converter(类型转换器)的类型转换工具。在 Spring MVC 中,它的作用是在控制器方法对请求进行处理前,先获取到请求发送过来
阅读全文
摘要:在 Spring MVC 中,我们可以通过 @RequestMapping +@PathVariable 注解的方式,来实现 RESTful 风格的请求。 1. 通过@RequestMapping 注解的路径设置 当请求中携带的参数是通过请求路径传递到服务器中时,我们就可以在 @RequestMap
阅读全文
摘要:Spring MVC 是对 Servlet 的进一步封装,其本质就是一个 Servlet,因此在 Spring MVC 中也存在转发和重定向的概念。在 Spring MVC 中,我们可以在逻辑视图名中通过“forward:”和“redirect:”两个关键字来表示转发和重定向。 请求转发 我们可以在
阅读全文
摘要:RESTful(REST 风格)是一种当前比较流行的互联网软件架构模式,它充分并正确地利用 HTTP 协议的特性,为我们规定了一套统一的资源获取方式,以实现不同终端之间(客户端与服务端)的数据访问与交互。 什么是 REST 说到 REST,我们可能会想到英文单词 rest(意为:休息、放松等),但这
阅读全文
摘要:在 Spring MVC 中,控制器在接收到 DispatcherServlet 分发过来的请求后,会继续调用 Model 层对请求进行处理。Model 层处理完请求后的结果被称为模型数据,会将模型数据返回给 Controller。Controller 在接收到 Model 层返回的模型数据后,下一
阅读全文
摘要:Spring MVC 提供了多种获取请求参数的方式: 通过 HttpServletRequest 获取请求参数 通过控制器方法的形参获取请求参数 使用 @RequestParam 注解获取请求参数 通过实体类对象获取请求参数(推荐) 下面我们就对这些获取请求参数的方式一一进行介绍。 通过 HttpS
阅读全文
摘要:本节,我们将通过一个简单的 Java Web 应用来演示下如何创建 Spring MVC 程序。 创建 Java Web 项目 首先,我们需要使用 Eclipse 创建一个 Java Web 项目,具体步骤如下。1. 在 Eclipse 中,依次单击 File -> New -> Dynamic W
阅读全文
摘要:Spring MVC(全称 Spring Web MVC)是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架,是 Spring 为表示层(UI)开发提供的一整套完备的解决方案。 注:三层架构分为表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL),表示层则包含前台页面
阅读全文
摘要:MVC 模式,全称为 Model-View-Controller(模型-视图-控制器)模式,它是一种软件架构模式,其目标是将软件的用户界面(即前台页面)和业务逻辑分离,使代码具有更高的可扩展性、可复用性、可维护性以及灵活性。通常情况下,一个完整的 Java Web 应用程序,其结构如下图所示。 图1
阅读全文
摘要:本节我们利用 Servlet 监听器接口,完成一个统计网站在线人数的案例。当一个用户登录后,显示欢迎信息,同时显示出当前在线人数和用户名单。当用户退出登录或 Session 过期时,从在线用户名单中删除该用户,同时将在线人数减 1。本案例可以通过如下 2 种方案实现: 使用 HttpSessionL
阅读全文
摘要:监听器 Listener 是一个实现特定接口的 Java 程序,这个程序专门用于监听另一个 Java 对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即自动执行。监听器的相关概念: 事件:方法调用、属性改变、状态改变等。 事件源:被监听的对象( 例如:request、sess
阅读全文
摘要:Javax.Servet 包中提供了一个 FilterCofig 接口,它与 ServletConfig 接口相似,用于在过滤器初始化期间向其传递信息。FilterConfig 接口由容器实现,容器将它作为参数传入过滤器的 init() 方法中。通过 filterConfig 对象就可以获得 Fil
阅读全文
摘要:在 Web 应用中,可以部署多个 Filter,若这些 Filter 都拦截同一目标资源,则它们就组成了一个 Filter 链(也称过滤器链)。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递,直到传递给目标资源。 FilterChain 接口 javax.servlet
阅读全文
摘要:Servlet Filter 又称 Servlet 过滤器,它是在 Servlet 2.3 规范中定义的,能够对 Servlet 容器传给 Web 资源的 request 对象和 response 对象进行检查和修改。Filter 不是 Servlet,不能直接访问,它本身也不能生成 request
阅读全文
摘要:Session 是服务器端会话技术。当浏览器访问 Web 服务器的资源时,服务器可以为每个用户浏览器创建一个 Session 对象,每个浏览器独占一个 Session 对象。由于每个浏览器独占一个 Session,所以用户在访问服务器的资源时,可以把数据保存在各自的 Session 中。当用户再次访
阅读全文
摘要:HTTP(超文本传输协议)是一个基于请求与响应模式的无状态协议。无状态主要指 2 点: 协议对于事务处理没有记忆能力,服务器不能自动维护用户的上下文信息,无法保存用户状态; 每次请求都是独立的,不会受到前面请求的影响,也不会影响后面的请求。 当浏览器发送 HTTP 请求到服务器时,服务器会响应客户端
阅读全文
摘要:重定向属于客户端行为。服务器在收到客户端请求后,会通知客户端浏览器重新向另外一个 URL 发送请求,这称为请求重定向。它本质上是两次 HTTP 请求,对应两个 request 对象和两个 response 对象。 重定向的工作流程 重定向的工作流程如下: 用户在浏览器中输入 URL,请求访问服务器端
阅读全文
摘要:在 Servlet API 中,定义了一个 HttpServletResponse 接口,它继承自 ServletResponse 接口。HttpServletResponse 对象专门用来封装 HTTP 响应消息,简称 response 对象。Servlet 容器会针对每次请求创建一个 respo
阅读全文
摘要:Web 应用在处理客户端的请求时,经常需要多个 Web 资源共同协作才能生成响应结果。但由于 Serlvet 对象无法直接调用其他 Servlet 的 service() 方法,所以 Servlet 规范提供了 2 种解决方案: 请求转发 请求包含(了解即可) 下面我们主要对请求转发进行介绍。 请求
阅读全文
摘要:一般情况下,浏览器(客户端)通过 HTTP 协议来访问服务器的资源,Servlet 主要用来处理 HTTP 请求。Servlet 处理 HTTP 请求的流程如下: Servlet 容器接收到来自客户端的 HTTP 请求后,容器会针对该请求分别创建一个 HttpServletRequest 对象和 H
阅读全文
摘要:一般情况下,浏览器(客户端)通过 HTTP 协议来访问服务器的资源,Servlet 主要用来处理 HTTP 请求。Servlet 处理 HTTP 请求的流程如下: Servlet 容器接收到来自客户端的 HTTP 请求后,容器会针对该请求分别创建一个 HttpServletRequest 对象和 H
阅读全文
摘要:Servlet 容器启动时,会为每个 Web 应用(webapps 下的每个目录都是一个 Web 应用)创建一个唯一的 ServletContext 对象,该对象一般被称为“Servlet 上下文”。ServletContext 对象的生命周期从 Servlet 容器启动时开始,到容器关闭或应用被卸
阅读全文
摘要:Servlet 容器初始化 Servlet 时,会为这个 Servlet 创建一个 ServletConfig 对象,并将 ServletConfig 对象作为参数传递给 Servlet 。通过 ServletConfig 对象即可获得当前 Servlet 的初始化参数信息。一个 Web 应用中可以
阅读全文
摘要:当 Servlet 容器接收到请求后,容器会将请求的 URL 减去当前应用的上下文路径,使用剩余的字符串作为映射 URL 与 Servelt 虚拟路径进行匹配,匹配成功后将请求交给相应的 Servlet 进行处理。以 servletDemo 为例,若 URL 为“http://localhost:8
阅读全文
摘要:客户端通过 URL 地址来访问 Web 服务器中的资源,Servlet 程序若想被外界访问,就必须被映射到一个 URL 地址上。很多时候,该 URL 地址和 Servlet 程序的物理路径(在硬盘上的存储位置)并不一致,因此它被称为虚拟路径。Servlet 与虚拟路径的对应关系就叫做 Servlet
阅读全文
摘要:load-on-startup 是 web.xml 中的一个节点,是 servlet 元素的子元素,用来标记 Servlet 容器启动时是否初始化当前 Servlet,以及当前 Servlet 的初始化顺序。load-on-startup 元素取值规则如下: 它的取值必须是一个整数; 当值小于 0
阅读全文
摘要:生命周期是指事物从创建到毁灭的过程。人的生命周期就是从出生到死亡的过程,在这个过程中,必定会有一些与生命周期息息相关的事件,如:出生、吃饭、上学、死亡等。这些事件会在生命周期中的某个特定时刻发生。Servlet 也有生命周期,Servlet 的生命周期就是 Servlet 从创建到销毁的过程。Ser
阅读全文
摘要:在 Servlet 中,web.xml 扮演的角色十分的重要,它可以将所有的 Servlet 的配置集中进行管理,但是若项目中 Servelt 数量较多时,web.xml 的配置会变得十分的冗长。这种情况下,注解(Annotation)就是一种更好的选择。与 XML 不同,注解不需要依赖于配置文件,
阅读全文
摘要:Servlet 没有 main() 方法,不能独立运行,但它可以作为 JavaWeb 应用的一个组件被部署到 Servlet 容器中,由容器来实例化和调用 Servlet 的方法,例如:doGet() 、doPost() 等。那么,JavaWeb 应用是什么呢?Servlet 是如何部署和访问的呢?
阅读全文
摘要:在 Servlet 中,一个动态网页对应一个 Servlet 类,我们可以通过 web.xml 配置文件将 URL 路径和 Servlet 类对应起来。访问一个动态网页的过程,实际上是将对应的 Servlet 类加载、实例化并调用相关方法的过程;网页上显示的内容,就是通过 Servlet 类中的某些
阅读全文
摘要:Tomcat 解压完成以后会看到如表1所示的很多目录,这些目录都有各自的用途,初学者有必要了解一下。 Tomcat 子目录及其说明 子目录 说明 bin 命令中心(启动命令,关闭命令……) conf 配置中心(端口号,内存大小……) lib Tomcat 的库文件。Tomcat 运行时需要的 jar
阅读全文
摘要:Servlet 是基于 Java 的动态网站开发技术,它的所有类和组件都是基于 Java 实现的,要想使用 Servlet,就必须提前配置好 Java 运行环境。相信各位读者都已经掌握了如何搭建 Java 环境,此处就不再赘述了,不了解的读者请转到: Java JDK下载与安装教程 Java JDK
阅读全文
摘要:您可能已经知道,部署动态网站一般需要 Web 服务器的支持,例如: 运行 PHP 网站一般选择 Apache 或者 Nginx; 运行 ASP/ASP.NET 网站一般选择 IIS; 运行 Python 网站一般选择内置的 WSGI 服务器模块——wsgiref。 Web 服务器是一种对外提供 We
阅读全文
摘要:Servlet 是 Server Applet 的缩写,译为“服务器端小程序”,是一种使用 Java 语言来开发动态网站的技术。Servlet 虽然被称作“小程序”,但是它的功能却异常强大,因为它是基于 Java 的,几乎可以使用所有的 Java API,Java 能做的事情,Servlet 也能做
阅读全文
摘要:我们知道 Nexus 可以远程下载和缓存中央仓库索引,但是对于国内用户来说,Nexus 远程更新索引使用的站点位于国外且部分索引文件较大,经常会出现下载速度缓慢或索引文件不完整等情况。下面我们将介绍一种更加快捷可靠的索引更新方式:离线更新中央仓库索引。离线更新中央仓库索引,顾名思义,就是直接将索引文
阅读全文
摘要:与 Nexus 2.x 相比,Nexus 3.x 为我们提供了更多实用的新特性,随着 Nexus 3.x 对 Maven 的支持越来稳定,很多公司和组织都陆续将数据从 Nexus 2.x 迁移升级到 Nexus 3.x。SonaType 官方建议我们,使用最新版本 Nexus 2.x 升级到最新版本
阅读全文
摘要:前 Nexus 分为 Nexus 2 和 Nexus 3 两个大版本,它们是并行的关系。与 Nexus 2 相比,Nexus 3 具有很多优势,例如支持更多的仓库格式、优化了用户的使用界面以及更加强大的搜索功能等等。目前使用最多的,运行最稳定是 Nexus 2,但随着 Nexus 3 对 Maven
阅读全文
摘要:如果仅仅是为了代理远程的公共仓库,那么 Nexus 的代理仓库就完全能够满足需要,但是我们知道,Nexus 除了代理仓库外,还有另一种仓库:宿主仓库。宿主仓库的主要作用是存储公司或组织内部的构件,以及一些无法从公共仓库获取的第三方构件(JDBC 驱动),供用户下载使用。用户可以通过配置 Maven
阅读全文
摘要:Nexus 作为最流行的 Maven 私服之一,使用它主要目的之一:代理远程仓库,即当 Maven 需要下载构件到本地仓库使用时,不再请求外部的远程仓库,而直接从 Nexus 中下载。本节我们将介绍如何配置 Maven 从 Nexus 下载构件。将 Nexus 的代理仓库配置到 Maven 项目中,
阅读全文
摘要:我们知道,Maven 中央仓库为用户提供了多达数十万构件,而 Nexus 可以代理所有的远程仓库(包括 Maven 中央仓库),可见 Nexus 仓库中构件的数量相当庞大。用户想要在这么多构件中,快速的查找自己所需的构件,一个最直接有效的方式就是:搜索。Nexus 作为一款成熟的仓库管理工具,它通过
阅读全文
摘要:本节,我们将介绍如何创建自定义宿主仓库、代理仓库和仓库组,为后面的工作做准备。 创建 Nexus 宿主仓库 首先,我们需要创建两个宿主仓库,分别用来存储从本地上传到 Nexus 的 Snapshot 和 Release 版本的构件,操作步骤如下。1. 点击左边导航栏中的 Repositories,如
阅读全文
摘要:exus 作为一款 Maven 仓库管理器,仓库(Repository)自然是 Nexus 最核心的概念。Nexus 中提供了许多仓库概念,如代理仓库、宿主仓库以及仓库组等。Nexus 为每一种仓库都提供了丰富的配置参数,方便我们根据自身需要进行定制。 Nexus 仓库属性 点击左边导航栏中的 Re
阅读全文
摘要:目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,它们是并行的关系,目前使用最多,运行最稳定的是 Nexus 2.x,下面我们以 Nexus 2.x 为例,演示 Nexus 的安装过程。1. 进入 Nexus 2.x 下载页面,根据本机操作系统,选择对应的版本进行下载,
阅读全文
摘要:Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。 Maven 私服其实并不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降
阅读全文
摘要:像泡沫悬浮着 在风里小心穿梭 我也曾痴迷着 爱情脆弱的颜色 你走向她那一刻 画面跟着颤抖 比错过残忍的 是没可能挽留 你如何形容我 我偶尔也会猜测 是朋友是过客 还是绝口不提呢 是不是我能给的没她多 是否再绚烂的星河 天亮都要失色 听说你为她做的 件件是我曾经求而不得 我够不着的烟火 偏偏降落在别人
阅读全文
摘要:1.region 区域 2.tear 眼泪 3.besides 此外 4.farewell 告别 5.grateful 感激的 6.front 前面的 7.pass 通过 8.will 意志 9.but 除了 10.lack 缺乏 11.total 总的 12.per 每 13.bid 出价 14.
阅读全文
摘要:嘿 意不意外,她背影 那么轻快,嘿 要明白,人会来就会离开,世上唯一不变 是人都善变,路过人间 爱都有 期限,天可怜见 心碎在所难免,以为痛过几回 多了些修炼,路过人间 就懂得防卫,说来惭愧 人只要有机会,就又沦陷,嘿 别再猜,她可曾 想过回来,嘿 醒过来,你很好 她也不坏,快快抹干眼泪 看昙花多美
阅读全文
摘要:1.低音高唱 1)低音位置哼鸣声音从胸腔出发 (2)不要发气泡音用手感受胸腔震动 2.胸前共鸣 1) ma音练习哼鸣→ma~ (2)o音练习感受胸腔 鼻咽腔震
阅读全文
摘要:1.唇颤音练习:发“嘟”1234543212.哼鸣练习:发“嗯”从低往高 找到拉警报的状态3.头声练习:发“wu”找到火车声的状态混声:强混,弱混,平衡混声,气混声 平衡混声:真声和假声的位置是5:5 的比列气流和声音是一个平衡状态 5:5 的比列 共鸣点往鼻咽腔走,声带拉长1.“娜娜”2.“内”1
阅读全文
摘要:掌握:1.胸腹式呼吸方法来练习气息找到横隔膜,丹田位置(用鼻子吸气用嘴吐气)吸气时:纸巾放入鼻子下方,吸住不让纸巾掉落,感受横隔膜下沉,气息吸入肺部,腰腹部扩张吐气时:把纸巾放入手掌心,往纸巾中心吹气,不让纸巾掉落,感受小腹(丹田)往里收紧推动气流,腰腹部往里收紧 练气方法: 发“si”(思,丝,斯
阅读全文
摘要:1.golden 金色的 2.glow 发光 3.mechanism 机械装置 4.image 图片
阅读全文
摘要:1.resident 居民 2.numerous 为数众多的 3.power 力量 4.agriculture 农业 5.attract 吸引 6.gold 黄金 7.old 老的 8.also 也 9.believe 相信 10.work 劳动 11.steal 偷 12.leader 领袖 13
阅读全文
摘要:1.bar 条 2.snack 小吃 3.paste 面团 4.trace 仔细寻找 5.delicate 精巧的 6.teacher 老师 7.them 他们 8.determine (使)下决心 9.visitor 游客 10.expect 期望 11.notice 注意 12.buy 买 13
阅读全文
摘要:1.down 沿着 2.base 以...为据点 3.stock 股份 4.preference 喜好 5.inspire 激励 6.owner 主人 7.simply 只是 8.drink 喝 9.customer 客户 10.office 公司 11.coffee 咖啡 12.serve 服务
阅读全文
摘要:1.innocent 清白的 2.the 这个 3. save 保存 4.major 严重 5.edition 版次 6.series 串联 7.derive 来自 8.specialize 专门从事 9.make 污点 10.friend 朋友 11.let 让 12.boy 男孩 13.acti
阅读全文
摘要:1.hundred 很多 2.back 向后 3.some 有些 4.pile 一堆 5.item 一件 5.sequence 一系列 6.ruin 毁灭 7.charge 价钱 8.belong 应在 9.issue 重要 10.interesting 有趣的 11.can 能 12.praise
阅读全文
摘要:1.phrase 短语 2.tradition 传统 3.they 他们 4.harvest 收获 5.amount 数量 6.envelope 信封 7.extend 延伸 8.replace 取代 9.senior 高级 10.earn 赢得 11.light 光 12.early 早期的 13
阅读全文
摘要:1.about 关于 2.welcome 欢迎 3.nowadays 现在 4.struggle 努力 5.through 穿过 6.biology 生物学 7.unusual 特别的 8.dish 盘子 9.refuse 拒绝 10.least 最小的 11.or 或者 12.to 到 13. p
阅读全文
摘要:1.drum 鼓 2.zero 零 3.forever 永远的 4.salesman 推销员 5.area 区 6.language 语言 7.revolutionary 革命的 8.crystal 水晶 9.reward 奖励 10.mount 奖励 11.me 我 12.eighty 八十 13
阅读全文
摘要:成招时间:2021.5.1 用时:2周 难度:❤❤❤❤❤ 心得:长板的第14个招式,转身要跳起来,这个也是熟能生巧,非常难
阅读全文
摘要:成招时间:2021.5.21 用时:2天 难度:❤ 心得:会shovit就会这个,一样的感觉
阅读全文
摘要:成招时间:2021.7.20 用时:3月 难度:❤❤❤❤❤ 心得:长板的第十二个招式,非常的难,重点是用脚腕的力量就行了,发力之后前脚要往前面跳,后脚跟上
阅读全文
摘要:成招时间:2021.7.15 用时:10天 难度:❤❤❤❤❤ 心得:长板的第11个招式,这个只能熟能生巧,肩膀的力量非常重要
阅读全文
摘要:成招时间:2021.7.10 用时:1月 难度:❤❤❤❤❤ 心得:长板的第10个招式,非常难,一直成不了,成了也不好看,脚腕的力量非常重要
阅读全文
摘要:成招时间:2021.6.10 用时:4天 难度:❤ 心得:长板的第九个招式,不难
阅读全文
摘要:成招时间:2021.6.2 用时:2天 难度:❤ 心得:长板的第八个招式,不难
阅读全文
摘要:成招时间:2021.5.30 用时:2天 难度:❤ 心得:长板的第七个招式,不难
阅读全文
摘要:成招时间:2021.5.24 用时:2天 难度:❤ 心得:长板的第六个招式,不难,
阅读全文
摘要:成招时间:2021.5.22 用时:2天 难度:❤ 心得:长板的第五个招式,不难
阅读全文
摘要:成招时间:2021.5.20 用时:2周 难度:❤ 心得:长板的第四个招式,开始十分的难,板子不断向后退,一直找不到方法,后面才知道下角的幅度小一点,板上的腿跳一下就行了
阅读全文
摘要:成招时间:2021.5.4 用时:3天 难度:❤ 心得:长板的第二个招式,明白走一步,再走一步就很简单
阅读全文
摘要:成招时间:2021.5.1 用时:2周 难度:❤ 心得:长板的第一个招式,开始十分的难,根本不敢在板上走,但明白走一步,再走一步就很简单了
阅读全文
摘要:Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。SpringBoot 默认使用以
阅读全文
摘要:一.@Import:用来导入配置类或者一些需要前置加载的类. 1.1 源码解析1.1.1 导入配置的三种类型@Import支持 三种方式1.带有@Configuration的配置类(4.2 版本之前只可以导入配置类,4.2版本之后 也可以导入 普通类)2.ImportSelector 的实现3.Im
阅读全文
摘要:// 表示把参数按照特定的解析规则进行解析 String encode(CharSequence rawPassword); // 表示验证从存储中获取的编码密码与编码后提交的原始密码是否匹配。如果密码匹配,则返回true;如果不匹配,则返回false。第一个参数表示需要被解析的密码。第二个参数表示
阅读全文
摘要:当什么也没有配置的时候,账号和密码是由Spring Security定义生成的。而在实际项目中账号和密码都是从数据库中查询出来的。 所以我们要通过自定义逻辑控制认证逻辑。如果需要自定义逻辑时,只需要实现UserDetailsService接口即可。接口定义如下: 1.返回值UserDetails 这
阅读全文
摘要:1.SpringSecurity 本质是一个过滤器链: 从启动是可以获取到过滤器链: org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter org.springframework
阅读全文
摘要:注册原生组件 在Java Web阶段我们学过的Web原生组件有Servlet、Filter、Listener等,但在Spring Boot项目中我们的项目默认是以Jar包方式进行部署的,而不是war方式,所以默认没有web.xml,自然不能通过web.xml来配置使用原生组件,因此Spring Bo
阅读全文
摘要:1.Spring Boot 异常处理自动配置原理 Spring Boot 通过配置类 ErrorMvcAutoConfiguration 对异常处理提供了自动配置,该配置类向容器中注入了以下 4 个组件。 ErrorPageCustomizer:该组件会在在系统发生异常后,默认将请求转发到“/err
阅读全文
摘要:它可以根据 URL 对请求进行拦截,主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能上。 在 Spring Boot 项目中,使用拦截器功能通常需要以下 3 步: 定义拦截器; 注册拦截器; 指定拦截规则(如果是拦截所有,静态资源也会被拦截)。 1.定义拦截器 在 Spring Bo
阅读全文
摘要:介绍Spring Boot通过WebMvcAutoConfiguration来提供一些默认配置;大多数时候使用默认的配置即可满足要求。但有时可能需要做一些个性化定制,此时就需要使用以下方式来进行。 SpringBoot 1.5 及以前是通过继承 WebMvcConfigurerAdapter 抽象类
阅读全文
摘要:Spring Boot 默认为我们提供了 3 种静态资源映射规则: WebJars 映射 默认资源映射 静态首页(欢迎页)映射 1.WebJars 映射 为了让页面更加美观,让用户有更多更好的体验,Web 应用中通常会使用大量的 JS 和 CSS,例如 jQuery,Backbone.js 和 Bo
阅读全文
摘要:常见的日志级别如下(优先级依次升高)。 序号 日志级别 说明 1 trace 追踪,指明程序运行轨迹。 2 debug 调试,实际应用中一般将其作为最低级别,而 trace 则很少使用。 3 info 输出重要的信息,使用较多。 4 warn 警告,使用较多。 5 error 错误信息,使用较多。
阅读全文
摘要:1.Spring Factories 机制 Spring Boot 的自动配置是基于 Spring Factories 机制实现的。Spring Factories 机制是 Spring Boot 中的一种服务发现机制,这种扩展机制与 Java SPI 机制十分相似。Spring Boot 会自动扫
阅读全文
摘要:1.@ImportResource //将 beans.xml 加载到项目中 @ImportResource(locations = {"classpath:/beans.xml"}) @SpringBootApplication public class HelloworldApplication
阅读全文
摘要:1.@ConfigurationProperties(prefix = "person") @ConfigurationProperties:告诉 SpringBoot 将本类中的所有属性和配置文件中相关的配置进行绑定; prefix = "person":配置文件中哪个下面的所有属性进行一一映射
阅读全文
摘要:1.pom <!-- spring-boot-starter-parent 是所有 Spring Boot 项目的父级依赖,它被称为 Spring Boot 的版本仲裁中心, 可以对项目内的部分常用依赖进行统一管理。 --> <parent> <groupId>org.springframework
阅读全文

浙公网安备 33010602011771号