01 2021 档案
摘要:<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.4.2</version> <dependency> <groupId
阅读全文
posted @ 2021-01-30 17:25
巧克力曲奇
摘要:<!--<dependency>--> <!--<groupId>org.apache.shiro</groupId>--> <!--<artifactId>shiro-spring-boot-web-starter</artifactId>--> <!--<version>1.4.2</versi
阅读全文
posted @ 2021-01-30 17:07
巧克力曲奇
摘要:伪代码 @Mapper UserMapper extends BaseMapper{ } 如果是springboot,在启动类中使用@MapperScan("mapper接口所在包全名")即可,不用一个一个的在Mapper接口中加@Mapper注解。@Mapper注解是识别他为mybatis的map
阅读全文
posted @ 2021-01-30 14:16
巧克力曲奇
摘要:默认情况,Spring Boot项目错误页面如下。 当项目实际上线,如果给用户显示这个页面就不是很友好。当系统出现异常时应该给用户显示更加友好的错误页面。 1 设置具体的状态码页面 在templates/下新建error文件夹,在error中新建:状态.html的页面。例如当出现500时显示的页面为
阅读全文
posted @ 2021-01-29 15:12
巧克力曲奇
摘要:① 如果我们当前的maven项目本身就是war类型的项目,直接打包即可 但是如果我们当前的maven项目是jar类型的项目,我们需要将项目修改 为war类型,修改项目的pom文件,使用packaging标签设置值为war 并且需要在项目中创建webApp文件夹,并设置为资源文件夹。 ② 在Sprin
阅读全文
posted @ 2021-01-29 14:03
巧克力曲奇
摘要:1 SpringBoot项目打包插件 必须保证项目中包含SpringBoot打包插件。pom.xml中检查 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-m
阅读全文
posted @ 2021-01-29 13:51
巧克力曲奇
摘要:SpringBoot项目可以是jar类型的maven项目,也可以是一个war 类型的maven项目,取决于我们要不要整合jsp使用。但是不管 是哪种项目类型, 已经不是我们传统意义上的项目结构了,在本 地使用SpringBoot的启动器即可 访问我们开发的项目。如果我们将项目功能开发完成后,需要使用
阅读全文
posted @ 2021-01-29 13:49
巧克力曲奇
摘要:可以在项目中创建SwaggerConfig,进行配置文档内容。 1 配置基本信息 Docket:摘要对象,通过对象配置描述文件的信息。 apiInfo:设置描述文件中info。参数类型ApiInfo select():返回ApiSelectorBuilder对象,通过对象调用build()可以创建D
阅读全文
posted @ 2021-01-29 11:56
巧克力曲奇
摘要:Swagger是一套围绕Open API规范构建的开源工具,可以帮助设计,构建,记录和使用REST API。 Swagger工具包括的组件: Swagger Editor :基于浏览器编辑器,可以在里面编写Open API规范。类似Markdown具有实时预览描述文件的功能。 Swagger UI:
阅读全文
posted @ 2021-01-29 11:17
巧克力曲奇
摘要:mkdir: XX(创建一个空目录XX指目录名) pwd: 显示当前目录的路径 git init 把当前的目录变成可以管理的git仓库,生成隐藏的.git文件。 git add XX 把XX文件添加到暂存区。 git commit -m “XX” 提交文件 -m后面的是注释 git status 查
阅读全文
posted @ 2021-01-29 10:57
巧克力曲奇
摘要:1.手动部署 ① 使用maven将拆分后的SSM项目整体打包到本地仓库中 ② 在idea中找到SSM拆分后的war类型的web项目将其target文件夹 下的war包上传到Linux中的tomcat中,然后启动Linux中的tomcat 在本地的浏览器中访问Linux中的web项目 注意:访问项目的
阅读全文
posted @ 2021-01-28 17:57
巧克力曲奇
摘要:在版本回退那里,已经知道每次提交,git都会把他们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在git里,这个分支叫主分支,即master。切换分支即可以理解为切换时间线。 在版本控制过程中,使用多条线同时推进多个任务。每条线成为一个分支。 例如: 1.1.1 创建分支 gi
阅读全文
posted @ 2021-01-28 17:31
巧克力曲奇
摘要:1 安装及初始化本地仓库 安装完成后打开Git Bash窗口 输入git --version 输出版本信息证明安装成功 填写用户名和邮箱作为一个标识 git config --global user.name "用户名" git config --global user.email "邮箱地址" 在
阅读全文
posted @ 2021-01-28 17:04
巧克力曲奇
摘要:1 Git概念 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。 本质:项目开发的管理工具,使用Git可以方便的完成团队的协作开发。以及项目 开发过程中的资源管理。 分布式的概念: 我们目前开发一个功能,是在一个项目中将功能进行实现。然后将开发好的功能部署到tom
阅读全文
posted @ 2021-01-28 16:40
巧克力曲奇
摘要:Shiro支持很多第三方缓存工具。官方提供了shiro-ehcache,实现了把EHCache当做Shiro的缓存工具的解决方案。其中最好用的一个功能是就是缓存认证执行的Realm方法,减少对数据库的访问。 1 添加依赖 添加shiro-ehcache依赖。 commons-io主要是为了使用里面的
阅读全文
posted @ 2021-01-28 16:01
巧克力曲奇
摘要:1 修改ShiroConfig 秘钥长度为16位,使用的时AES加密。 @Configuration public class ShiroConfig { @Autowired private MyRealm myRealm; @Bean public DefaultWebSecurityManag
阅读全文
posted @ 2021-01-28 15:30
巧克力曲奇
摘要:问题: maven的项目,是由maven来进行编译的。maven会将项目编译为以前的javaSE和javaEE的结构来运行。但是maven在编译项目的时候,不会讲java目录下的配置文件编译到项目中,也就是maven默认认为java目录下只有java代码,没有其他文件。这样造成在SSM项目中,map
阅读全文
posted @ 2021-01-28 14:55
巧克力曲奇
摘要:1 自定义Realm类 在项目中新建com.bjsxt.realm.MyRealm public class MyRealm extends AuthenticatingRealm { @Override protected AuthenticationInfo doGetAuthenticatio
阅读全文
posted @ 2021-01-28 14:30
巧克力曲奇
摘要:Shiro是不依赖于容器的,所以建立一个普通的Maven项目就可以。 1 添加依赖 <dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version
阅读全文
posted @ 2021-01-28 13:49
巧克力曲奇
摘要:INI英文名称(InitializationFile) INI文件是Window系统配置文件的扩展名. Shiro的全局配置文件就是.ini文件,ini中数据都是固定数据,后面会用数据库中数据替代下面users和roles(固定数据部分) .ini文件内容的语法和.properties类似都是key
阅读全文
posted @ 2021-01-28 13:00
巧克力曲奇
摘要:1 第一行 第一行中示例出了一些语言。无论是什么语言都需要包含Subject 1 Subject 主体。每个用户登录成功后都会对应一个Subject对象,所有用户信息都存放在Subject中。可以理解:Subject就是Shiro提供的用户实体类。 2 Security Manager Shiro最
阅读全文
posted @ 2021-01-28 12:24
巧克力曲奇
摘要:Cron表达式是一个字符串,分为6或7个域,每一个域代表一个含义 Cron有如下两种语法格式: (1) Seconds Minutes Hours Day Month Week Year (2)Seconds Minutes Hours Day Month Week 1.1 结构 corn从左到右(
阅读全文
posted @ 2021-01-27 17:31
巧克力曲奇
摘要:新建Maven项目SpringQuartz。 1.1 添加依赖 由于spring-boot-starter-web并没有依赖spring-conext-support,所以需要单独添加此依赖。 <parent> <groupId>org.springframework.boot</groupId>
阅读全文
posted @ 2021-01-27 16:18
巧克力曲奇
摘要:① 如果我们当前的maven项目本身就是war类型的项目,直接打包即可 但是如果我们当前的maven项目是jar类型的项目,我们需要将项目修改 为war类型,修改项目的pom文件,使用packaging标签设置值为war 并且需要在项目中创建webApp文件夹,并设置为资源文件夹。 ② 在Sprin
阅读全文
posted @ 2021-01-27 15:01
巧克力曲奇
摘要:Spring Boot是Spring公司的一个顶级项目,和Spring Framework是一个级别的。 Spring Boot实际上是利用Spring Framework 4 自动配置特性完成。编写项目时不需要编写xml文件。发展到现在,Spring Boot已经具有很很大的生态圈,各种主流技术已
阅读全文
posted @ 2021-01-27 13:59
巧克力曲奇
摘要:支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 原有MP的Mapper模式 ① 创建项目完成Spring和MP的集成 ② 创建数据库表对应的实体类 ③ 创建mapper接口并继承BaseMapper接口 ④
阅读全文
posted @ 2021-01-27 12:26
巧克力曲奇
摘要:[1] 全局配置策略介绍 问题: 假如我们每个实体类和数据库中的表名都不一致,表的格式都是t_表名 类名呢没有t_字符,比如t_student表和Student类。这样每个实体类 上我们都要使用@TableName注解来表名类和表的映射关系,过于麻烦 怎么办? 解决: 使用MP的全局配置策略。Glo
阅读全文
posted @ 2021-01-27 11:56
巧克力曲奇
摘要:@TableName注解 作用:表明实体类对应的数据库表 使用:在类名上使用,值为对应的表的表名 示例: 官方说明: @TableId 作用:表明类中的某个属性为主键字段对应的属性 使用:在为主键的属性上使用 示例: 官方说明: @TableField 作用:表明普通属性映射的表中的字段,值为字段名
阅读全文
posted @ 2021-01-27 10:58
巧克力曲奇
摘要:在mapper层创建StudentMapper接口并继承BaseMapper接口 MyBatis和Mybatis Plus的使用比较 MybatisPlus包含了Mybatis的所有功能,也就说在MybatisPlus中我们仍然可以按照Mybatis的方式来完成数据库的操作(无侵入)。 Mybati
阅读全文
posted @ 2021-01-27 10:23
巧克力曲奇
摘要:[1] 什么是LomBok lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个属性,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为
阅读全文
posted @ 2021-01-26 18:13
巧克力曲奇
摘要:MP的代码生成器介绍 问题: 目前我们在开发SSM项目的时候,会先搭建一个SSM的开发环境。 我们会根据数据库的表在pojo包中创建对应的实体类,而且可以不 关心项目功能的同时,在mapper层对数据库的表的基础增删改查功 能提前实现,同理,在service层可以将基础的业务代码提前声明。 然后再根
阅读全文
posted @ 2021-01-26 17:43
巧克力曲奇
摘要:① jar类型的配置示例 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins
阅读全文
posted @ 2021-01-26 16:20
巧克力曲奇
摘要:1 pom文件的作用 在maven项目中,通过maven来获取和管理第三方的资源。每个maven 项目默认是有一个pom文件的。该文件是用来告诉maven当前项目中需要 使用的资源的,该文件会被maven自动加载识别。我们需要在pom配置文 件中声明需要使用的资源的坐标即可。 注意: 当pom文件被
阅读全文
posted @ 2021-01-26 15:13
巧克力曲奇
摘要:maven的war类型项目的创建 ① 点击file-->new-->moudle-->maven,然后选择项目的模版 ① 声明当前项目自己的资源坐标,方便其他项目调用 ① 直接点击下一步 ① 声明项目在本地的存储路径,一般是工作空间 ① 点击finish,完成创建,在窗口中点击import chan
阅读全文
posted @ 2021-01-26 14:50
巧克力曲奇
摘要:jar类型项目的结构和特点 ① jar类型项目的结构 ① jar类型项目的特点 jar类型的项目,相当于我们以前的JAVASE项目。 jar项目编译后的项目结构体系和原有的JAVASE项目编译后的结构体系相 同 默认在test目录下的测试代码是不会编译到项目中的。
阅读全文
posted @ 2021-01-26 14:19
巧克力曲奇
摘要:在本地安装并配置maven 将maven的压缩包解压到指定的文件夹中 maven的目录介绍 配置maven的本地仓库地址 在conf文件夹下编辑setting.xml文件在第54行声明本地仓库地址 配置maven的云仓库地址 在conf文件夹下编辑setting.xml文件在第159行声明云仓库地址
阅读全文
posted @ 2021-01-26 13:23
巧克力曲奇
摘要:问题: 既然我们现在创建项目是通过maven工具来进行创建的,但是项目开发完成后 运行项目的不是maven。比如web项目,以前我们直接使用IDE工具创建一个 tomcat服务器能够直接识别的web项目结构,完成功能开发,等开发完成后, 我们可以直接将项目放到tomcat服务器中运行,但是使用mav
阅读全文
posted @ 2021-01-26 13:21
巧克力曲奇
摘要:监听器的作用是监听一些事件的发生从而进行一些操作, 比如监听ServletContext,HttpSession的创建,销毁,从而执行一些初始化加载配置文件的操作, 当Web容器启动后,Spring的监听器会启动监听,监听是否创建ServletContext的对象, 如果发生了创建ServletCo
阅读全文
posted @ 2021-01-26 11:46
巧克力曲奇
摘要:[1] 项目的概念 在刚开始学习java时,我们直接手动创建单个的java文件,并在该文件中声明对 应的功能代码,自己使用java和javac命令完成文件的编译和运行,当时感觉特 别的神奇,尤其是在控制台中显示出”hello world”时,简直是惊为天人,美滋 滋。但是随着我们的深入学习,我们发现
阅读全文
posted @ 2021-01-26 10:48
巧克力曲奇
摘要:[1] 传统方式中项目jar包资源的问题 传统方式中项目jar包资源的问题: 问题一: 项目中的jar包资源需要我们自己从网上下载后,手动 导入到项目中使用,一旦jar包资源过多,容易造成遗 漏并且不好管理。 问题二: 假如我们有两个项目,项目A和项目B,如果项目A中需要使用项目B 中的某些资源,需
阅读全文
posted @ 2021-01-26 09:59
巧克力曲奇
摘要:[1] Wrapper条件构造器的介绍 问题: 目前我们可以使用mp完成基本的增删改查操作,但是我们在进行数据操作 时,很多时候Sql语句中的筛选条件是非常复杂的,比如or关键,>,<,模 糊查询等,怎么办? 解决: mp提供了功能非常强大的Wrapper条件构造器 本质: 条件构造器其实就是一个对
阅读全文
posted @ 2021-01-25 18:03
巧克力曲奇
摘要:在Src下创建MVC的包结构 在src下创建和配置SSM相关配置文件 注意: 其他配置和原有SSM流程不变,在applicationcontext.xml文件中 将Mybatis的工厂bean替换为MybatisPlus的工厂bean即可。 在web.xml中配置SSM相关信息 在数据库中创建测试表
阅读全文
posted @ 2021-01-25 17:40
巧克力曲奇
摘要:[1] 为什么使用MyBatis Plus? A、再之前学习的Mybatis中 我们对单表的增删改查的操作,都是自己再mapper.xml中进行代码的书写,这样一来我们书写的代码比较的麻烦。 B、我们目前封装数据库的实体的时候,每一表都需要自己的书写实体类,这样一来,我们书写的代码就比较的麻烦。 [
阅读全文
posted @ 2021-01-25 16:51
巧克力曲奇
摘要:[1] easyui-panel 面板 作用: 在网页中显示一个面板效果,可以在面板中显示网页中的数据 使用: ① 在jsp页面中引入EasyUI的资源 ② 在页面创建一个div标签,并设置其class属性,属性值为‘easyui-panel’ ③ 在div标签上使用属性data-options设置
阅读全文
posted @ 2021-01-25 15:45
巧克力曲奇
摘要:数据库设计 1.1 权限表:平时小型项目中可以省略. 1.2 用户组表:对用户进行分组,每个用户组绑定多个角色,把用户放入到用户组后,具有对应多个角色. 1.3 角色组:角色组对应多个角色,用户组和角色组 1.4 完成访问控制时,需要对什么类型表进行访问控制(在简单版中)把需要控制的内容和角色进行直
阅读全文
posted @ 2021-01-25 13:41
巧克力曲奇
摘要:数据库原型及其问题. 根据上面数据库表设计方案带来的问题: 2.1 新建一个用户时: 2.1.1 在用户表中添加一条数据. 2.1.2 在关联表中添加N条数据 2.1.3 每次新建一个用户需要添加:1+N(关联几个)条数据 第三节.RBAC设计方案(简单版) 解决传统项目设计方案中创建用户时教繁琐的
阅读全文
posted @ 2021-01-25 13:09
巧克力曲奇
摘要:[1] 问题: 当浏览器发起一个ajax请求给服务器,服务器调用对应的单元方法处理ajax请求。 而ajax的请求在被处理完成后,其处理结果需要直接响应。而目前我们在单元方 法中响应ajax请求,使用的是response对象,需要我们自己将要响应的数据转换 为json字符串响应,比较麻烦,而我们一直
阅读全文
posted @ 2021-01-25 11:04
巧克力曲奇
摘要:核心组件:(SpringMVC 四大组件) 1.1 DispatchServlet: Servlet分发器,整个SPringMVC框架入口. 1.2 HandlerMapping:寻找URL所请求的HandlerMethod,找@RequestMapping() 1.2.1 使用实现类Default
阅读全文
posted @ 2021-01-25 10:39
巧克力曲奇
摘要:[1] 下载的基本流程 文件的上传是将用户本地的资源发送到服务器,让服务器存储到其硬盘中的过程。 而下载和上传正好是相反的过程。下载是用户发起请求,请求要下载的资源。服务器 根据请求,将其硬盘中的文件资源发送给浏览器的过程。 [2] 下载的请求数据 用户通过浏览器发起下载请求,服务器在接收到请求后,
阅读全文
posted @ 2021-01-22 18:06
巧克力曲奇
摘要:如何在页面中显示一个按钮,用户可以点击该按钮后选择本地要上传的文件 在页面中使用input标签,type值设置为”file”即可 确定上传请求的发送方式 上传成功后的响应结果在当前页面显示,使用ajax请求来完成资源的发送 上传请求的请求数据及其数据格式 请求数据: 上传的文件本身 普通数据:用户名
阅读全文
posted @ 2021-01-22 17:49
巧克力曲奇
摘要:问题: 目前我们在完成功能开发时,会将项目相关的页面资源及静态资源直接声明 在web目录下,或者web目录下的子文件夹中。而web目录及其声明的子 目录中的资源,在浏览器中是可以直接被访问到的。也就是说,只要我们知道 某个资源的URL地址,在浏览器中是可以直接发起请求访问该资源的,极不安全。 实现方
阅读全文
posted @ 2021-01-22 17:23
巧克力曲奇
摘要:作用: 作为数据流转的载体,SpringMVC官方提供的一个对象。 使用:在单元方法上声明Model类型的形参即可。 注意:Model对象是由DispatcherServlet创建并作为实参传递给单元方法使用 特点: 请求转发: model对象中存储的数据,相当于存储到了request对象中 我们在
阅读全文
posted @ 2021-01-22 17:01
巧克力曲奇
摘要:PageContext对象 作用域范围:当前jsp页面内有效 request对象 作用域范围:一次请求内。 作用: 解决了一次请求内的资源的数据共享问题 session对象 作用域范围:一次会话内有效。 说明:浏览器不关闭,并且后台的session不失效,在任意请求中都可以获取 到同一个sessio
阅读全文
posted @ 2021-01-22 16:29
巧克力曲奇
摘要:问题: 在学习了SpringMVC的配置流程以及单元方法请求数据的获取后,我们可以 使用SpringMVC搭建一个项目,并声明单元方法来处理请求,在单元方法中 使用SpringMVC提供的方式来获取请求信息,然后根据功能需求,声明请求 处理的逻辑代码,进行请求的处理。当请求处理完成后,我们需要将此次
阅读全文
posted @ 2021-01-22 15:36
巧克力曲奇
摘要:注意: 浏览器发起静态资源请求,DispatcherServlet会先按照正常的单元方法逻辑 进行处理,如果找不到对应的单元方法,则根据SpringMVC的配置文件的静 态资源,判定此次请求是否为静态资源请求,如果是则将资源响应给浏览器,如 果不是,则响应404.也就说,不要设置某个单元方法的路径和
阅读全文
posted @ 2021-01-22 15:07
巧克力曲奇
摘要:[1] SpringMVC的Dispatcher的拦截范围问题 问题: 按照SpringMVC的使用流程,需要在web.xml文件中配置DispatcherServlet 的拦截范围,而我们配置的拦截范围为”/”,表示拦截除jsp请求以外的所有请求。 这样造成,请求是js,css,图片等静态资源的请
阅读全文
posted @ 2021-01-22 09:38
巧克力曲奇
摘要:[1] 浏览器服务器交互的编码格式介绍 问题: 在浏览器和服务器的数据交互流程中,处理英文数据以外还有中文数据。 浏览器发起的请求数据中包含中文,服务器响应的数据包含中文。而浏览器 默认的编码格式为iso-8859-1,也就说浏览器默认发送给服务器的请求数据的 编码格式为iso-8859-1。同理,
阅读全文
posted @ 2021-01-21 18:06
巧克力曲奇
摘要:[1] restful格式请求的介绍 问题: 目前我们浏览器发起请求给服务器的时候,一般我们常用的请求方式有两个,get 和post方式。不管get还是post方式,请求数据的格式都是键值对格式,get 方式请求数据是在请求地址上以问号隔开的形式,拼接在请求地址后,post请求 呢是有专门的请求实体
阅读全文
posted @ 2021-01-21 17:06
巧克力曲奇
摘要:1. 形参属性名即为请求数据的键名 问题: 让DispatcherServlet将请求数据获取后传递给单元方法,但是请求数据的获取需要数据的键名,而DispatcherServlet不是我们自己声明的无法修改其底层代码,怎么将请求数据的键名告诉给DispatcherServlet呢? 解决: 在单元
阅读全文
posted @ 2021-01-21 16:52
巧克力曲奇
摘要:在src下创建MVC的包结构 配置web.xml文件,配置SpringMVC的Servlet 在src下创建并配置springmvc.xml文件
阅读全文
posted @ 2021-01-21 16:07
巧克力曲奇
摘要:问题: 在学习了Spring之后,基于MVC设计模式的项目,我们可以使用Mybatis将数据库替换,使用Spring将Controller层和Service层,以及Service层和数据库层之间进行解耦。但是基于MVC的模式中,在Controller层中的Servlet为请求的代码入口。tomcat
阅读全文
posted @ 2021-01-21 14:45
巧克力曲奇
摘要:① @Component:使用在普通java类上 ② @Service:使用在业务层类上 作用:声明一个类的对象为bean对象,相当于配置了bean标签。 注意:相当于使用的是无参数构造器来创建对象。 问题: 只使用@Service注解,和 A a=new A();的效果是相同的,创建的 是一个没有
阅读全文
posted @ 2021-01-21 12:52
巧克力曲奇
摘要:问题: 在学习了Spring的知识后,需要被Spring管理的资源都是通过配置文件的形式来告诉Spring容器对象管理谁以及如何管理。但是随着使用次数的增多,我们发现配置文件中配置的标签越来越多,每次我们创建一个新的项目时,将配置好的配置文件在该项目中只需要修改一下数据库连接参数即可正常使用,但是因
阅读全文
posted @ 2021-01-21 12:25
巧克力曲奇
摘要:1. name=”” 哪些方法需要有事务控制 1.1 支持*通配符 2. readonly=”boolean” 是否是只读事务. 2.1 如果为true,告诉数据库此事务为只读事务.数据化优化,会对性能有一定提升,所以只要是查询的方法,建议使用此数据. 2.2 如果为false(默认值),事务需要提
阅读全文
posted @ 2021-01-20 18:00
巧克力曲奇
摘要:问题: 目前我们已经能够使用SpringAOP的SchemaBased方式来实现功能扩展。在使用SchemaBased方式实现功能扩展时,发现一个扩展代码就需要声明对应的实现了指定的接口的类,这样造成代码的结构体系过于繁杂。一个通知一个类。 解决: 在一个类中声明所有的通知方法。这样又会造成Spri
阅读全文
posted @ 2021-01-20 17:17
巧克力曲奇
摘要:[1]前置通知 使用: ①声明一个普通Java类,实现BeforeAdvice接口。 ②在Spring配置文件中配置前置通知的bean对象 ③配置组装 方法: 方法名:before 调用者:代理对象中的扩展方法调用 方法体:声明切点之前执行的扩展代码 参数: Method method, Objec
阅读全文
posted @ 2021-01-20 16:22
巧克力曲奇
摘要:问题: 我们可以直接从Spring容器中获取mapper层的实例化对象完成数据库操作。而在业务层方法中很多时候因为业务逻辑的复杂性,会出现在业务层方法中调用多个数据库操作。而之前我们学习过事务的管理,在同一个业务中只要有一个数据库操作执行失败,其他的就算执行成功也会一并回滚。但是在Spring整合M
阅读全文
posted @ 2021-01-20 16:05
巧克力曲奇
摘要:SpringAOP底层默认使用的JDK动态代理,但是同时也支持cglib动态代理。需要导入cglib的jar以及在Spring的配置文件中开启Cglib动态代理
阅读全文
posted @ 2021-01-20 15:19
巧克力曲奇
摘要:①导入cglib相关jar包 ②声明真实对象和真实方法 ③创建类并声明方法完成扩展代码的声明 ④使用Cglib提供的方法获取代理对象 ⑤使用代理对象完成功能处理
阅读全文
posted @ 2021-01-20 13:22
巧克力曲奇
摘要:动态代理的特点: 代理对象和代理方法是动态生成的。底层流程和静态代理一致 动态代理的种类: 动态代理既然代理对象和代理方法是动态生成的,为了便于用户的调用,要求代理方法和真实方法的方法名,形参,返回值必须保持一致,具体实现如下: ①jdk动态代理(官方提供): 原则:真实对象和代理对象实现相同的接口
阅读全文
posted @ 2021-01-20 12:20
巧克力曲奇
摘要:① 切点是某包某类的无参数的方法: 示例: execution(* com.bjsxt.service.impl.Student.test()) ② 切点是某包某类带有参数的方法 示例: execution(* com.bjsxt.service.impl.Student.test(String,i
阅读全文
posted @ 2021-01-20 12:16
巧克力曲奇
摘要:代理设计模式的概念: 将对某个功能的调用以及使用的代码封装起来,避免调用方式以及使用代码的直接 暴露。 代理设计模式的好处: ①简化代码的使用流程 ②保护真实的方法的调用方式 代理设计模式的种类: ①静态代理 ②动态代理 [1] 静态代理 相关概念: 真实对象:要进行功能扩展的对象 真实方法:要进行
阅读全文
posted @ 2021-01-20 12:08
巧克力曲奇
摘要:注意: SpringAOP的注解方式实现是基于AspectJ方式的。 SchemaBased方式是没有的。 使用: ① 必须在applicationcontext.xml文件中声明注解的使用路径,方便Spring容器对象的扫描,提升扫描效率。 示例: AOP的注解: ① @Component 作用:
阅读全文
posted @ 2021-01-20 11:09
巧克力曲奇
摘要:我们可以使用IOC的知识将代码中层与层之间的耦合性进行解耦,便于后期维护.但是在实际生产环境中,我们发现随着公司业务的增长,我们会升级某个业务层的业务方法的代码逻辑.升级后的业务方法还需要兼容以前的逻辑处理,也就说再保留原有功能逻辑的基础上,在方法中新增新的逻辑代码.而这个时候,就需要我们去修改当前
阅读全文
posted @ 2021-01-19 17:49
巧克力曲奇
摘要:问题: SpringIOC的DI依赖注入后,我们可以根据对象之间的依赖关系的 责任链,让Spring容器对象帮我们创建有一个组装好的对象,比如A中有B,B 中有C,C中有D.将A,B ,C,D都创建为Bean对象,然后使用ref属性告诉Spring 对象之间的依赖关系的组装规则,假如依赖责任链特别长
阅读全文
posted @ 2021-01-19 16:57
巧克力曲奇
摘要:问题: Spring容器对象根据配置文件创建对象的时机默认发生在Spring容器对象在被创建的时候,也就是说,我们一旦获取到Spring容器对象,意味着可以直接获取Spring容器中的对象使用了.那么,如果我对同一个bean对象,连续获取N次,获取到的是不是同一个对象呢?因为spring容器对象底层
阅读全文
posted @ 2021-01-19 16:40
巧克力曲奇
摘要:导入的jar包: 在src下创建并配置applicationcontext.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xs
阅读全文
posted @ 2021-01-19 16:00
巧克力曲奇
摘要:目前我们开发功能的流程中,在service层会手动创建SQLSession对象,并使用SQLSession对象获取Mapper接口的实例化对象,但是我们真正使用的是Mapper接口的对象,目前的代码编写方式极大的影响了开发效率,而且mybatis层和service 层之间的耦合性非常高 解决: 使用
阅读全文
posted @ 2021-01-19 15:09
巧克力曲奇
摘要:遇到的问题 如果我们做一个请求时候多次使用sqlsession对象这样就会造成sqlsession 浪费,也就是资源浪费,效率也会降低 我们需要达到的目的就是用户发出的一个请求中实现sqlsession的共享 请求没有改变,线程就不会改变 最终的目的就是在同一个线程中实现数据sqlsession的共
阅读全文
posted @ 2021-01-19 12:54
巧克力曲奇
摘要:01 Mybatis中的缓存简介 缓存的好处:只是查询才有缓存 (增删改没有缓存的),可以增块访问的速度 sqlsession级缓存 (一级缓存) 默认开启的 所有的操作是公用同一个SQLsession对象并且执行的是同一条SQL语句的时候才会走缓存 02缓存的缺点 可能存在数据的脏读 执行修改、删
阅读全文
posted @ 2021-01-19 12:14
巧克力曲奇
摘要:Auto_Mapping 数据注入的方式 [1]自动注入方式 Auto_Mapping (自己封装的实体属性和数据库的字段是一样的情况Mybatis会自动的注入) [2]手动注入的方式 resultMap 作用:解决自己做的实体的封装和数据库的字段不一致的问题 resultType和resultMa
阅读全文
posted @ 2021-01-19 12:11
巧克力曲奇
摘要:查询所有学生所在班级的信息(一对一) 班级查询学生的操作(一对多) 遇到的问题: 查询的SQL语句非常的简单,但是如何把查询的数据接受这个就是一个问题 [1]把每一个实体中的字段拿出来组建成一个新的实体 返回还是resultType 存在的问题:映射的内容会出现重复的字段 [2] resultMap
阅读全文
posted @ 2021-01-19 10:59
巧克力曲奇
摘要:[1]什么是N+1的查询方式 如果没有N+1的方式我们想要实现多表的查询,自己书写查询的业务逻辑代码(java) mybatis希望通过自己标签配置的方式来解决这个问题 [2]执行的操作 查询学生所在班级的信息(一对一) 查询班级中所有学生的信息(一对多) 使用的时候书写标签需要注意: 查询出来返回
阅读全文
posted @ 2021-01-19 10:20
巧克力曲奇
摘要:如何进行多表的查询 1、业务代码的方式 (实现的方式,书写业务逻辑的java代码实现) 查询学生所在班级的信息 (一对一查询) 1、先把所有学生查询出来(clazzno) select* from student 2、拿着clazzno去clazz表中查询班级的信息 select * from cl
阅读全文
posted @ 2021-01-19 10:02
巧克力曲奇
摘要:我们在使用Java代码处理某个问题的时候,需要创建A对象,调用 A对象中的某个方法,但是A对象的创建依赖B对象,而B对象的 创建又依赖于C对象,C对象的创建又依赖于D对象.....,如下: D d=new D(); C c=new C(d); B b=new B(c); A a=new A(b);
阅读全文
posted @ 2021-01-18 17:22
巧克力曲奇
摘要:[2] 通过构造器方式 ①无参数构造器(创建一个没有初始化数据的对象) ②有参 数构造器(创建一个带有初始化数据的对象) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem
阅读全文
posted @ 2021-01-18 16:24
巧克力曲奇
摘要:[1]Spring框架的介绍 概念:Spring是一个控制反转(IOC)和面向切面的(AOP)的轻量级 框架. 使用范围:任何java程序. 作用: ①简化企业项目的开发的流程.提升开发效率 ②便于代码的后期维护升级. ③将代码之间的耦合性降低. SpringIOC的使用 SpringAOP的使用
阅读全文
posted @ 2021-01-18 15:46
巧克力曲奇
摘要:稍微复杂一些 直接使用Servlet实现有难度,一般使用apache commons组件中commons-fileUpload组件,大大降低操作的难度。 commons-fileUpload离不开commons-io组件 commons-fileUpload的常用类 FileItemFactory
阅读全文
posted @ 2021-01-18 15:42
巧克力曲奇
摘要:监听器: 监听事件,处理事件的对象. 使用观察者设计模式实现的. 观察者设计模式: 分为三个角色, 分别是:事件源, 事件, 监听器. 事件: 就是发生的事情, 其中包含事件源 事件源: 发生事情的根源, 触发事件的资源(对象)(发生事件的场所) 监听器: 处理事件的逻辑., 根据事件,获取事件源,
阅读全文
posted @ 2021-01-18 12:34
巧克力曲奇
摘要:01为什么使用过滤器? 我们目前书写项目中遇到的问题? A、目前使用的baseServlet的优点就是方便可以进行乱码的统一的处理,但是如果我们以后不使用servlet,那么我们在进行中文乱码处理的时候就需要在每一个servlet 中去书写,但是比较麻烦。 B、在进行登陆拦截处理的时候,我们需要把拦
阅读全文
posted @ 2021-01-18 11:01
巧克力曲奇
摘要:01Mybatis的运行原理 1. 运行过程中涉及到的类 1.1 Resources MyBatis中IO流的工具类 1.1 加载配置文件 1.2 SqlSessionFactoryBuilder() 构建器 1.2.1 作用:创建SqlSessionFactory接口的实现类 1.3 XMLCon
阅读全文
posted @ 2021-01-18 09:35
巧克力曲奇
摘要:01配置别名 <typeAliases> <!--单独的给某一个文件起别名 --> <typeAlias type="com.bjsxt.pojo.Flower" alias="a"/> <!--给整个包下面的文件起别名 这时候别名的名称就是类的名称 不区分大小写--> <package name=
阅读全文
posted @ 2021-01-16 17:41
巧克力曲奇
摘要:01第一步 导包 mysql驱动包+mybatis的核心包+mybatis的依赖 02 配置mybatis.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD
阅读全文
posted @ 2021-01-16 17:31
巧克力曲奇
摘要:提问:Mybatis查询结果映射到实体类的时候,实体类为什么必须有一个空的构造函数? 类中如果没有构造函数,隐藏是无参构造函数,方便实体类需要通过Mybatis进行动态反射生成。如果实体类中一旦声明构造函数,无参构造函数则不存在。select * from table_name 如果“*”表示的字段
阅读全文
posted @ 2021-01-16 14:10
巧克力曲奇
摘要:我们在定义一个类的时候,如果需要重新写一个构造函数,就必须要写一个无参构造函数,如下代码所示,那这到底是为什么? public class Fruit { private String name; // 必须显式声明一个无参构造函数 public Fruit(){} public Fruit(Str
阅读全文
posted @ 2021-01-16 14:07
巧克力曲奇
摘要:无参构造器也叫无参构造方法,在我们创建类时候,可以不用写构造方法,因为系统会默认给我们提供一个无参构造方法,如果我们自己写了无参构造方法,那么我们这个就将默认的覆盖了。 (这时候你可能回想,既然会默认提供无参构造,我又为什么每次都要写无参构造呢?) 那么为什么一定要有这么一个无参构造方法呢? 1、因
阅读全文
posted @ 2021-01-16 14:03
巧克力曲奇
摘要:实体类中用基本类型好,还是用包装类型好? 如果您也考虑这个问题欢迎指正我的观点,如果您正在考虑这个问题,欢迎评论一起讨论一下这个问题 刚才又想到了关于module或者实体类的建立的问题,用基本类型(int,long)好主要是,还是用包装类型(Integer,Long)好? 在过去很长时间我都自己冥想
阅读全文
posted @ 2021-01-16 13:51
巧克力曲奇
摘要:一般情况下,我们在定义实体类时会继承Serializable接口,类似这样: 一般情况下,我们在定义实体类时会继承Serializable接口,类似这样: 我们在实体类中引用了Serializable这个接口,那么这个接口到底有什么?细心的你会发现我们还定义了个serialVersionUID变量。
阅读全文
posted @ 2021-01-16 13:24
巧克力曲奇
摘要:/****经典版的结合*****/ //发送ajax请求 $.ajax({ //发送请求方式是否是异步 async:true, //发送请求的方式 type:"get", //发送请求地址 url:"JqAjaxServlet", //可能携带的参数 //data:"uname=sxt&pwd=12
阅读全文
posted @ 2021-01-16 11:05
巧克力曲奇
摘要:01普通文本 out.print("Ajax响应内容"); var text= xhr.responseText; 02json格式 1、更改对象的toString 方法 Student stu=new Student(1,"张三","男"); eval("var json="+text); 2、手
阅读全文
posted @ 2021-01-16 09:23
巧克力曲奇
摘要:01为什么使用过滤器? 我们目前书写项目中遇到的问题? A、目前使用的baseServlet的优点就是方便可以进行乱码的统一的处理,但是如果我们以后不使用servlet,那么我们在进行中文乱码处理的时候就需要在每一个servlet 中去书写,但是比较麻烦。 B、在进行登陆拦截处理的时候,我们需要把拦
阅读全文
posted @ 2021-01-15 17:10
巧克力曲奇
摘要:01创建XMLHttpRequest对象 不同浏览器创建方式不同 可以提取为方法供调用 function createXMLHttpRequest(){ if(window.ActiveXObject){//IE xhr = new ActiveXObject("Microsoft.XMLHTTP"
阅读全文
posted @ 2021-01-15 14:36
巧克力曲奇
摘要:实现步骤 给用户名文本框绑定onblur事件 开发服务器端判断用户的是否可用功能 使用Ajax完成功能 创建XMLHttpRequest对象 建立到服务器的连接 设置服务器在完成后要运行的回调函数 发送请求 代码实现 <%@ page contentType="text/html;charset=U
阅读全文
posted @ 2021-01-15 11:05
巧克力曲奇
摘要:方案1:传统方案 提交表单,服务器端处理,错误后跳转到注册页面,同时显示错误信息。返回客户端的使用整个注册页面。 缺点:较大的网络流量,用户体验不好 方案2:使用Ajax方案。 用户名的确认和用户书写其他表单项可以同时进行;返回客户端的至少错误信息; 优点:较小的网络流量,用户体验好
阅读全文
posted @ 2021-01-15 10:40
巧克力曲奇
摘要:如何解决HTTP协议无状态问题 HTTP是无状态的协议,客户每次读取web页面时,服务器都打开新的连接,而且服务器也不会自动维护客户的上下文信息 那么要怎么才能在多次请求之间共享信息呢(比如实现网上商店中的购物车)? 服务器端如何判断一个客户的分时段的连接是不是属于同一个客户? session和co
阅读全文
posted @ 2021-01-14 17:41
巧克力曲奇
摘要:1、需求说明: 使用绝对路径完成页面跳转 使用相对路径完成页面跳转 路径分类 1.1 绝对路径 <h3>绝对路径 (包括协议、IP地址、端口号、需要访问的地址){范围:同一个服务器中所有的项目+局域网中服务器中的项目+外网服务器中的项目}</h3> <a href="http://127.0.0.1
阅读全文
posted @ 2021-01-14 16:53
巧克力曲奇
摘要:1、书写一个servlet的方式 Servlet必须直接或间接实现 javax.servlet.Servlet 接口 通过继承javax.servlet.GenericServlet 类实现跨协议的 Servlet 通过继承javax.servlet.HttpServlet实现HTTP Servle
阅读全文
posted @ 2021-01-14 15:30
巧克力曲奇
摘要:1、生命周期 servlet是一个单实例 多线程的程序 servlet的生命周期 【1】类加载 "com.bjsxt.servlet.LifeServlet" Class clazz= Class.forName("com.bjsxt.servlet.LifeServlet"); 【2】实例化 (离
阅读全文
posted @ 2021-01-14 15:29
巧克力曲奇
摘要:1、统计访问人数1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
阅读全文
posted @ 2021-01-14 15:12
巧克力曲奇
摘要:1、代码实现 <script type="text/javascript"> $(function(){ /******单击事件的绑定********/ $("#bu1").click(function(){ alert("单击事件"); }) $("#bu1").dblclick(function
阅读全文
posted @ 2021-01-14 14:04
巧克力曲奇
摘要:1 DOM操作元素的属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript"> function demo1(){ //获得元素对象 var inp=d
阅读全文
posted @ 2021-01-14 12:30
巧克力曲奇
摘要:1.2DOM节点分类node 元素节点 element node <a href="链接地址">我的链接</a> 属性节点 attribute node href="链接地址" 文本节点 text node 链接地址 我的链接 1.3.DOM节点关系 父子关系(parent-child):<html
阅读全文
posted @ 2021-01-14 12:22
巧克力曲奇
摘要:第一节 JavaScript中BOM对象 1 认识BOM对象 1.1 什么是BOM BOM是Browser Object Model的简写,即浏览器对象模型。 BOM由一系列对象组成,是访问、控制、修改浏览器的属性的方法 BOM没有统一的标准(每种客户端都可以自定标准)。 BOM的顶层是window
阅读全文
posted @ 2021-01-14 10:14
巧克力曲奇
摘要:1.什么是事件 事件是可以被 JavaScript 侦测到的行为 事件也是满足某些条件就可以触发指定的函数 网页中的每个元素都可以产生某些可以触发 JavaScript 函数的事件。比方说,我们可以在用户点击某按钮时产生一个 onClick 事件来触发某个函数 事件通常与函数配合使用,这样就可以通过
阅读全文
posted @ 2021-01-14 09:40
巧克力曲奇
摘要:数组的声明 function demo1(){ //方式一 var arr1=new Array(); //方式二 5:数组的长度 var arr2=new Array(5); //方式三 具体的元素 var arr3=new Array(1,1.2,true,'bjsxt',new Date())
阅读全文
posted @ 2021-01-13 17:46
巧克力曲奇
摘要:01JS中函数的声明方式 三种方式 02JS中参数的传递 A、js中形参的个数和实参的个数可以不一致 B、js中没有方法的重载 ,重名的方法只会覆盖 03JS中函数的返回值 没有定义方法的返回值默认返回 undefined 04函数的执行符 ()--函数的执行符--jquery的封装原理 <html
阅读全文
posted @ 2021-01-13 17:24
巧克力曲奇
摘要:01 算数运算符 + - * / % ++ -- 三木运算 02逻辑运算符 & | ! && || < > >= <= != ^ 03连接运算符 + 04特殊运算符 ==(等值符 使用较多) 比较的时候先比较类型 ,类型一致比较内容,类型不一致统一的转化成number,然后在比较内容 (等同符) 比
阅读全文
posted @ 2021-01-13 17:16
巧克力曲奇
摘要:01变量的声明 var 变量名=初始值; 变量名的要求遵循java中标识符的规范即可 02变量的使用 A、js中的变量名是可以重复的,但是重复的变量名值会覆盖 B、js中的变量是区分大小写 C、js中的分号可以省略的(不建议省略) D、js中的双引号和单引号表示 的含义是一样的,都代表字符串 03数
阅读全文
posted @ 2021-01-13 17:10
巧克力曲奇
摘要:1.脚本语言 脚本语言是一种简单的程序,是由一些ASCII字符构成,可以使用任何一种文本编辑器编写。一些程序语言(如C、C++、Java等)都必须经过编译,将源代码编译成二进制的可执行文件之后才能运行,而脚本语言不需要事先编译,只要有一个与其相适应的解释器就可以执行。 脚本语言是指在web浏览器内有
阅读全文
posted @ 2021-01-13 17:07
巧克力曲奇
摘要:浮动 可以让多个块标签处于同一行 不用转换成行内元素 宽和高以及盒子模型的特征的以保留 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .outerDiv{ bo
阅读全文
posted @ 2021-01-13 16:12
巧克力曲奇
摘要:盒子模型 什么是网页的布局 房子 >>> 格局 网页 >>> 格局 网页内容的主体规划 1盒子模型 >>>> 标签和标签存在包含关系时 位置的调整 2浮动 >>>> 多个块标签处于同一行的位置处理问题 3定位 >>>> 块标签在页面指定位置的处理问题 块标签>>>> 独立占用一行的标签 行内标签>>
阅读全文
posted @ 2021-01-13 15:16
巧克力曲奇
摘要:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> /* * 标签名选择器 给页面所有同名的标签定义样式的选择器 语法 标签名{样式} * */ span{ background-color: sk
阅读全文
posted @ 2021-01-13 12:21
巧克力曲奇
摘要:块标签 >>>> 块元素 在页面上独占一行的标签 行内标签 >>>> 行内元素 在页面上不会独占一行的标签 span 行内标签 一般用于在网页上划定一个范围 一般结合CSS样式 帮助我们确定某些现实效果的作用范围 div 块标签 一般用于做网页的布局 CSS的引入方式 <!DOCTYPE html>
阅读全文
posted @ 2021-01-13 10:15
巧克力曲奇
摘要:继承关系(泛化关系 Generalization) a) 语义: 类和子类的关系,接口和子接口的关系; 一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能 b) 语法:extends c) 符号: 一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父
阅读全文
posted @ 2021-01-12 13:53
巧克力曲奇
摘要:DML更多操作 select * from class select * from student2 -- 1.快速创建数据库表 结构和数据完全相同 create table class2 AS select * from class select * from class2 -- 2.快速创建数据
阅读全文
posted @ 2021-01-08 15:24
巧克力曲奇
摘要:外键约束 外键约束(FOREIGN KEY,缩写FK)是用来实现数据库表的参照完整性的。外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。 外键是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须具有主键约束或者唯一约束。被依赖的表我们通常称
阅读全文
posted @ 2021-01-08 15:15
巧克力曲奇
摘要:l 数据库表列类型 1.整数类型 整数类型 大小 表数范围(有符号) 表数范围(无符号) 作用 TINYINT 1字节 (-128,127) (0,255) 小整数值 SMALLINT 2字节 (-32768,32767) (0,65535) 大整数值 MEDIUMINT 3字节 (-8388608
阅读全文
posted @ 2021-01-08 12:17
巧克力曲奇
摘要:第一节 线程通信 1.1 线程通信引入 l 应用场景:生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止 如果仓库中放有产品,则消费者可以将产品取
阅读全文
posted @ 2021-01-07 15:26
巧克力曲奇
摘要:4.1 问题的提出 应用场景: 多个用户同时操作一个银行账户。每次取款400元,取款前先检查余额是否足够。如果不够,放弃取款 分析 使用多线程解决 开发一个取款线程类,每个用户对应一个线程对象 因为多个线程共享同一个银行账户,使用Runnable方式解决 思路 创建银行账户类Account 创建取款
阅读全文
posted @ 2021-01-07 14:43
巧克力曲奇
摘要:新生状态: 用new关键字建立一个线程对象后,该线程对象就处于新生状态。 处于新生状态的线程有自己的内存空间,通过调用start进入就绪状态 就绪状态: 处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪队列,等待系统为其分配CPU 当系统选定一个等待执行的线程后,它就会从就绪状态进入
阅读全文
posted @ 2021-01-07 14:03
巧克力曲奇
摘要:线程定义和创建3:实现Callable接口 JDK1.5后推出了第三种定义线程的方式,实现Callable接口 public class RandomCallable implements Callable<Integer> { @Override public Integer call() thr
阅读全文
posted @ 2021-01-07 13:46
巧克力曲奇
摘要:2.1 线程定义和创建2:实现Runnable接口 【示例2】使用多线程实现龟兔赛跑2 public class TortoiseRunnable implements Runnable { //private int num = 100; /** * 线程体,线程要执行的任务 */ @Overri
阅读全文
posted @ 2021-01-07 13:32
巧克力曲奇
摘要:第一节 进程和线程 1.1 进程和线程 l 程序Program n 程序是一段静态的代码,它是应用程序执行的蓝本 l 进程Process n 进程是指一种正在运行的程序,有自己的地址空间 l 进程的特点 n 动态性 n 并发性 n 独立性 n 并发和并行的区别 u 并行:多个CPU同时执行多个任务
阅读全文
posted @ 2021-01-07 13:27
巧克力曲奇
摘要:序列化和反序列化 什么是序列化和反序列化 序列化 :Serialization 将对象的状态信息转换为可以存储或传输的形式的过程。对象(内存) >字节数组 字节序列(外存、网络) 反序列化:DeSerialization 字节数组 字节序列(外存、网络) >对象(内存) 什么时候需要序列化和反序列化
阅读全文
posted @ 2021-01-07 12:22
巧克力曲奇
摘要:缓冲字符流BufferedReader和BufferedWriter 问题:之前的文件读写都是按照字节、字符或者数组来实现的,对于文本文件而言,能否按照行,一行行读写呢。 提供了BufferedReader和BufferedWriter实现按行读写 package com.bjsxt.ios3; i
阅读全文
posted @ 2021-01-07 10:48
巧克力曲奇
摘要:package com.bjsxt.ios3; import java.io.*; /** *1.只要关闭高层流即可,底层流不用手动关闭;因为高层的关闭方法就是把底层流关闭 * *2.何时将输出缓冲区的内容写入硬盘 * 1.输出缓冲区满,自动写入硬盘(刷新 flush) * 2.close()会先刷
阅读全文
posted @ 2021-01-07 10:42
巧克力曲奇
摘要:Map集合类型 Map 特点:存储的键值对映射关系,根据key可以找到value HashMap 采用Hashtable哈希表存储结构(神奇的结构) 优点:添加速度快 查询速度快 删除速度快 缺点:key无序 LinkedHashMap 采用哈希表存储结构,同时使用链表维护次序 key有序(添加顺序
阅读全文
posted @ 2021-01-06 17:52
巧克力曲奇
摘要:hashtable 也叫散列表 特点:快 很快 神奇的快 结构:结构有多种 最流行、最容易理解:顺序表+链表 主结构:顺序表 每个顺序表的节点在单独引出一个链表 哈希表是如何添加数据的 1.计算哈希 码(调用hashCode(),结果是一个int值,整数的哈希码取自身即可) 2.计算在哈希表中的存储
阅读全文
posted @ 2021-01-06 17:29
巧克力曲奇
摘要:public static void main(String[] args) { //创建一个集合set对象 //Set<Student> set = new TreeSet<Student>(); //Set<Student> set = new HashSet<Student>(); Set<S
阅读全文
posted @ 2021-01-06 16:34
巧克力曲奇
摘要:/** * 功能:存储多个学生的分数 * 不变的是什么? *1.运算结果没有变 * 2.执行的功能代码没有变 * * 变化的什么? * 1.底层的结构变了 * ArrayList:数组 * LinkedList:双向链表 * 2.具体的执行过程变化了 list.add(2,99) * ArrayLi
阅读全文
posted @ 2021-01-06 15:19
巧克力曲奇
摘要:public class TestArrayList { public static void main(String[] args) { //1.创建一个ArrayList对象,用来存储多个分数 ArrayList list = new ArrayList(); //2.向ArrayList添加分
阅读全文
posted @ 2021-01-06 15:03
巧克力曲奇
摘要:选择排序的算法 1) 整个数列分成两部分:前面是有序数列,后面是无序数列 2) 初始状态下,整个数列都是无序的,有序数列是空 3) 一共n个数,需要n-1趟循环(一趟都不能少) 4) 每比较完一趟,有序数列数量+1,无序数列数量-1 5) 每趟先假设无序数列的第1个元素(整个数列的第i个元素)是最小
阅读全文
posted @ 2021-01-06 14:25
巧克力曲奇
摘要:第一节 排序 1.1排序概述 排序(sorting)的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。 内部排序和外部排序 一类是整个排序过程在内存储器中进行,称为内部排序; 另一类是由于待排序元素数量太大,以至于内存储器无法容纳全部数据,排序需要借助外部存储设备才能完成,这类排序
阅读全文
posted @ 2021-01-06 14:14
巧克力曲奇
摘要:import java.io.File; import java.io.IOException; public class dirtest { public static void main(String[] args) { //使用file指向一个文件 File file=new File("E:
阅读全文
posted @ 2021-01-06 12:01
巧克力曲奇
摘要:import java.io.File; import java.nio.file.FileStore; public class Main { public static void main(String[] args) { File file=new File("E:\\xxxx\\xxxxxx
阅读全文
posted @ 2021-01-06 12:00
巧克力曲奇

浙公网安备 33010602011771号