自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 spring initializer

@RestController就是@Controller和@ResponseBody的合体。resources文件夹中目录结构templates保存所有的模板页面; Spring Boot把应用打包成可执行的jar包,使用嵌入式的Tomcat,所以默认不支持JSP页面,可以使用模板引擎(freemarker)application.propertiesSpring Boot 应用的配置文件,可修改一些默认配置...

2020-06-27 14:00:00 676

原创 Springboot HelloWorld

一个功能:浏览器发送hello请求,服务器接收请求并处理,响应hello World字符串。1.创建一个maven工程;(jar)2.导入依赖spring boot相关的依赖首先它继承了一个父项,然后是web模块的一个依赖3.编写主程序;@SpringBootApplication来标注一个主程序类(MainApplication),说明这是一个Spring Boot应用(Application)SpringApplication.run(MainApplication.class,a

2020-06-27 01:53:17 171

原创 微服务

微服务:一种架构风格,一个应用应该是一组小型服务;可以通过HTTP的方式进行互通。单体应用:所有页面都放在这,代码也放在这。把整个应用打成WAR包,部署在tomcat里面。应用访问数据库,提供前端访问页面。优点是测试简单,因为只是一个应用,不涉及多个应用的互联互调。部署简单,只需要把整个应用打成WAR包,部署在tomcat里面。水平扩展比较简单,相同的应用复制十几份,放在十几个服务器里面,通过负载均衡机制,提高并发能力。缺点是一个小小的错误,要重新部署。所有功能单元都放在一个应用里面

2020-06-25 12:31:28 184

原创 文件上传

文件上传1.表单准备:必须有enctype="multipart/form-data" <form action="${ctp}/upload" method="post" enctype="multipart/form-data"> 用户头像:<input type="file" name="headerimg"/><br/> 用户名称:<input type="text" name="username"/><br/>

2020-06-23 22:43:16 152

原创 8.HttpEntity,ResponseEntity

@RequestBody请求体,获取一个请求的请求体内容就不用@RequestParam@RequestMapping("/testRequestBody") public String testRequestBody(@RequestBody String body){ System.out.println("请求体: "+body); return "success"; } 只有表单才有请求体,点链接没有请求体。enctype就是encodetype就是编...

2020-06-22 09:18:08 1567

原创 数据校验

数据校验:重要数据提交之前,只做前端校验是不安全的;(页面很有可能禁用掉js)(绕过页面,提交表单,也发送相同的请求)重要数据一定要加上后端校验1.把请求中员工的每一个属性给取出来,太累了按照规则校验校验失败了,直接让它在再来到添加页面,提示重新填写。SpringMvc 可以JSR3032.javabean封装值的时候有个注解帮你校验校验失败就不封装@Emailprivate String email;J

2020-06-19 20:09:57 485

原创 数据绑定

SpringMCV封装自定义类型对象的时候?1.隐含模型中看看有没有这个隐含对象2.再来看是不是Session的属性3.都不是就new一个对象javabean要和页面提交的数据进行一一绑定数据绑定期间的数据类型转换1.页面提交的所有数据都是字符串2.Integer age,Date birth数据绑定期间的数据格式化问题数据校验 我们提交的数据是合法 校验失败else if (attrName != null) { WebDataBinder binder =

2020-06-17 21:53:07 207

原创 sql存储过程

一组预先编译好的SQL语句集合,理解成批处理语句本来服务器的三条指令都要访问数据库,现在把三条指令包装起来,减少数据库的访问次数。一.创建语法create procedure 存储过程名(参数列表)BEGIN 存储过程体(一组合法有序的SQL语句) END参数模式 参数名 参数类型 stuname varcharin 需要调用方传过来值 out 返回值inout

2020-06-08 22:57:56 159

原创 8.demo

员工列表展示访问index.jsp—发送/emps请求------控制器查询所有员工----放在请求域中------转发到list页面展示员工添加:在list页面点击“员工添加”------来到添加页面之前查出所有的部门信息,然后在添加页面进行展示-------访问员工添加页面add.jsp------输入员工数据-----点击保存------处理器收到员工保存请求------进行保存------保存完成来到列表页面...

2020-06-06 20:48:28 183

原创 7.ajax

SpringMVC快速的完成ajax功能?对于服务器来说,返回json数据页面:$.ajax();@ResponseBody将返回的数据放在响应体中如果返回的是对象,自动将对象转为json格式

2020-06-06 18:07:19 90

原创 sql优化 /show Profile

mysql提供可以用来分析当前会话中语句执行的资源损耗情况。、show Profile 进行sql分析建立连接多少时间查缓存多少时间释放表多少时间

2020-06-02 00:43:53 113

原创 sql调优/慢查询日志

运行时间超过long_query_time的SQL,会被记录到慢查询日志中默认情况下,mysql数据库没有开启慢查询日志,一般不开,会带来性能影响show_query_log 开启show variables like 'slow_query_log';SET GLOBAL slow_query_log = 1show variables like 'slow_query_log';查看long_query_time默认值show variables lik...

2020-06-02 00:36:46 139

原创 学习笔记3-java连接redis

导入jar包java连接redis - jedis编写Test类写的是客户端java程序要 操作 存在redis里面的数据Jedis jedis = new Jedis();主机要连着Linux上的redis连接服务器,有两个参数ip地址(host)和端口号(port)String result = jedix.ping(); 返回一个字符串System.out.println(result);jedis.close();jedis用完要关闭jedis set一个k

2020-05-28 22:03:20 97

原创 学习笔记-redis配置文件不懂

注释掉 绑定ip 因为它默认只接受本机的访问请求。关闭保护模式tcp-backlog一次请求到达后 到 接受进程处理前的队列 所允许存在的请求个数吞吐量:redis处理请求的速度timeout一个空闲的客户端维持多少秒会关闭TCP keepalive客户端检测volatile-lru:最近最少移除key,使用设置过期时间的key 365天1天没用 2天1天没用allkeys-lru:使用lru算法移除key样本数量最应该删除的...

2020-05-28 20:48:53 91

原创 学习笔记2 Redis

Redis相关知识1.端口63792.默认16个数据库,类似数组,下标从0开始,初始默认使用0号数据库。3.所有数据库相同的密码开启redis redis-cliset a aset设置键值对,键:a,值:aget aget查看键的值,查看到a的值select 1select选择1号数据库get a在当前数据库不能访问键:anilnil相当于java中的nullselect 0select选择0号数据库get aget查看键

2020-05-28 19:15:33 129

原创 笔记1解决session的存储问题

负载均衡功能客户端发送请求,经过负载均衡(一种算法),把我的这个请求,分散到不同的服务器上优点原本一个服务器要处理所有请求,现在这个压力可以平摊开。session常见应用场景记录用户登录状态。登录成功,登录信息存session里面。下次用到,从session里面取。过期时间session过期时间默认半个小时,登录超时。 如果超时后,想继续操作,判断session中有没有登录信息,有的话可以继续操作。登录状态= 普通/超级用户 == 哪个组,判断.

2020-05-25 22:53:56 609

原创 MyBatis-1

和数据库交互,持久化层框架,MyBatissql全部写在配置文件。解耦。MyBaits底层就是对原生JDBC的一个简单封装。轻量级框架。为什么不用原生jdbc?sql语句是硬编码在程序中,数据库层和java编码耦合(1)导包日志包也导一下 log4j依赖类路径 log4j.xml配置文件(2)1.创建表2.创建javabean封装表的数据3.操作数据库的接口 dao接口(3)mybatis全局配置文件 (mybatis-config)这下面是配置数据源(数据库连接池)的

2020-05-22 18:32:08 502

原创 6.视图解析

转发的页面如果在当前项目下, 可以写相对路径。 或者写forward:/xx.jsp(有前缀的返回视图,独立解析)有前缀的转发和重定向跟视图解析器无关。重定向:redirect:视图解析器,根据返回值,创建视图对象;视图对象才能真正的转发(隐含模型的数据取出来,放在请求域中)或者重定向到页面(常用的视图对象:InternalResourceView)》》渲染视图转发只是渲染视图的一种。...

2020-05-22 14:43:31 301

原创 redis基本数据类型

请求串行化一个一个去处理。(事务隔离级别)多线程+锁 (memcached)单线程+多路IO复用(Redis)前提:单线程!!!!!多个请求去访问Redis的时候,请求全部加一个监视的效果。监视(而不是等待)这个请求是否就绪,如果就绪,Redis直接处理。Redis没有堵塞态,一直对请求进行处理。处理客户端的请求,是通过linux的epoll函数包装进行的,快速的IO读写。16个数据库select 7 ...

2020-05-21 23:26:42 167

原创 索引学习笔记

用哈希表来实现索引。考虑这个数据库表 user,我们需要检索 id=4 的数据,SQL 语法是:select * from user where id=4;用哈希算法,先计算这个id=4的hash值,假设hash(4)=42314231直接映射到这行数据所在磁盘文件指针 0x77。哈希算法有个碰撞问题不同的数据算出来的hash值可能一样比如hash(7)可能跟 hash(199)一样映射到的磁盘文件指针也一样。解决碰撞问题:链地址法。用链表把碰撞的数据连..

2020-05-20 23:53:31 86

原创 NoSql入门概述

应用层 ========= Dao层 ======= 一个Mysql实例1.数据量大,一个机器放不下时。2.数据的索引(B+ Tree)一内存放不下时。3.访问量(读写混合)一个实例不能承受。Dao层跑到Cache层。数据库受伤害的比较大的,是频繁的查询。如果频繁的查询一些比较固定的数据,可以把他拿出来放在缓存里面。对于数据库的信息,写的操作放在主库。读的操作放在从库。主库的写压力开始出现瓶颈MyISAM...

2020-05-20 21:07:59 141

原创 异常

程序分为编译过程和运行过程。分类:编译时异常和运行时异常。RuntimeException,运行时的异常。编译的过程,运行的过程。1.Errorjava虚拟机无法解决的严重问题。运行过程需要java虚拟的加载器和节字运行器。JVM系统内部错误,资源耗尽等严重情况。比如:StackOverflowError(栈溢出)和OOMjava虚拟机帮我们分配内存空间,结果内存都不够,new的时候,是在堆的空间的。OutOfMemoryError2.Exception(可以处理)1.空指针

2020-05-20 17:54:45 74

原创 mybatis 缓存机制

1.缓存:暂时的存储一些数据,加快系统的查询速度。2.CPU:主频:4-2.7GHZ内存:4G-8G 1333MHZ(相当于缓存区,把硬盘的一些东西存起来)CPU:一级缓存(4MB)二级缓存(16MB)放马上处理的东西。给前端放个缓存数据库, 直接数据放在内存中。不像mysql数据库,数据放在硬盘内,进行io读写。如果1号员工,不经常修改。把上次查询的数据,暂时放在一些地方。 避免跟数据库交互。MyBaits缓存机制:Map;能保存查询出的一些数据。跟数据库获取连接,发送sq

2020-05-18 23:02:37 185

原创 dispatcherservlet3

invokeHandlerMethod 方法执行的细节找到handlerMethodToInvoke方法解析器 methodResolver如果SessionAttribute标注的属性,在session中有值会把这些拿来放在隐含模型中。(addAttribute)方法解析器 methodResolver找到getModelAttributeMethods方法(获取标注@ModelAttribute 注解的方法)attributeMethodToInvoke:找到要执行的方法roso

2020-05-18 14:30:16 108

原创 DispatcherServlet 2

1.所有请求过来DispatcherServlet收到请求2.调用doDispatch()方法进行处理(1).getHandler(): 根据当前请求(request)在HandlerMapping中找到这个请求的映射信息,获取到目标处理器类。(2).getHandlerAdapter(): 根据当前处理器类,找到当前类的HandlerAdapter(适配器)(3).使用刚才获取到的适配器(AnnotationMethodHandlerAdapter),执行这个目标方法(handler);A

2020-05-16 17:11:50 102

原创 cpu调度算法

cpu调度算法1.FCFS(先来先服务)无法保证周转时间,2.SJF(短作业优先)这种方法周转时间最小。但是如果中间有个任务现在要执行,必须要等到前面的任务执行完才行,响应时间无法保证。3.时间片轮状调度,每个任务分几个时间片,响应时间就可以保证。4.优先级调度优先高的进程,一直执行,可能会产生饥饿。...

2020-05-14 10:03:09 237

原创 进程通信(1)

1.信号量可以实现同步,进程间通过信号量走走停停读写信号量的代码一定是临界区。临界区就是 一次只允许一个进程进入的 的那段代码。但是共同修改信号量,会出现问题。比如说一个进程只修改了信号量没保存,时间片到了切过去了。调度的问题。你也不知道时间片什么时候没,时钟中断什么时候发生。后果:在内核,又没有保护共享数据造成竞争错误。中断了,才有调度,所以要阻止中断。关中断,硬件指令cli开中断,硬件指令 sti3.cpu上面有个中断寄存器。中断寄存器怎么工作?每次时钟中断,就在上面打个1

2020-05-14 08:32:09 115

原创 线程的通信

为什么需要线程通信?因为多个线程,操作这个共享数据。1.调用wait()方法线程阻塞。一旦执行wait(),会释放锁(同步监视器)。**.wait必须使用在同步代码块,同步方法2.有wait就有notify()方法notify() 唤醒被wait()的一个线程,如果多个线程被wait,就唤醒优先级较高的那个。notifyall() 一旦执行此方法,就会唤醒所有被wait()的线程然后wait和notifyall,notify调用者,必须是这个同步监视器。然后这三个方法定义在Obje

2020-05-13 23:57:28 81

原创 线程安全问题

线程安全问题1.synchronized 关键字。其实是一个内置锁,通过锁对象的moinitor的取用与释放,来实现加锁和解锁。锁对象可以是任何一个对象。synchronized 关键字实现同步代码块 sychronized(同步监视器){ //需要同步的代码 } 同步监视器==锁对象,Object obj = new Object();需要同步的代码 = 操作共享数据的代码共享数据:多个线程共同操作的变量。要求:多个线程必须要共用同一把锁。缺点: 同步代码块里面只有一个

2020-05-13 23:25:37 119

原创 java集合

java 集合类存放于java.util包中,是一个用来存放对象的容器。 集合中只能放对象 (int变成引用类型)conllection接口,单列集合子接口 List Set List 有序,可重复的集合 集合中的每个元素,有其对应的顺序索引。 可以通过索引来访问。 元素的添加顺序 = 索引 Collection接口 继承 List接口 实现 ArrayList Vector:List接口的实现.

2020-05-13 19:09:32 150

原创 5.dispatcherServlet源码分析

DispatcherServlet:前端控制器DispatcherServlet继承于FrameworkServletFrameworkServlet继承了HttpServletBeanHttpServletBean继承了HttpServlet也就是说1.如果发送请求2.首先一定是来到这个HttpServlet 的 doPost方法和doGet方法3.FrameworkServlet重写了doPost方法和doGet方法叫processRequest(request,respon

2020-05-12 01:36:15 212

原创 4.ssm配置 数据输出

控制器处理请求后的结果,如何带给另外一个页面?方法1.控制器方法的参数 传入 原生API session。方法2:控制器方法的参数 传入 Map,或者Model或者ModelMap在另一个页面,验证数据放在哪个域。(请求域)Map是一个集合接口(interface)(jdk)model是一个接口 (interface)(spring)ModelMap是一个类,继承LinkedHashMap,Map接口旗下的实现类。不管是map,model,modelmap最后都是BindingA

2020-05-11 22:45:33 253

原创 3.ssm有关乱码

控制器方法的参数还可以写原生apiHttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。request对象作为一个Map容器使用时,主要是通过以下的方法来操作setAttribute(String name,Object o)方法,将数据作为request对象的一个属性,存放。例如:request.setAttribute(“data”,data)

2020-05-11 19:36:08 154

原创 2.ssm配置RequestMapping/获取请求中的参数

@RequestMapping 请求映射告诉SpringMVC, 控制器里的这个方法处理哪个请求从源码中发现,RequestMapping可以标明在方法上,也可以标明在类上。

2020-05-11 00:13:18 1929

原创 1.ssm配置前端控制器

导包**Springmvc是spring的web模块;所有模块的运行都是依赖核心模块(Ioc模块)ioc模块需要用的包:前端控制器的配置Springmvc有个独特的思想:多了前端控制器,拦截请求。前端控制器看这个请求谁能处理,就把这个请求转发到可以处理的控制器。这个前端控制器是个servlet应该在web.xml中配置这个servlet,并拦截所有请求。服务器启动时,创建servlet对象,load on start up 值越小,优先级越高init-param 初始化参

2020-05-10 22:32:24 923

原创 ssm蓝图

Spring眼中的mvc:1.多了前端控制器,拦截请求!!!!!!!!!!2.前端控制器看这个请求谁能处理,就把这个请求转发到可以处理的控制器。1.控制器Contoller:控制网站的跳转逻辑。处理请求的时候,就要调用业务模型。两种模型:数据模型 javabean对象业务模型 业务逻辑service1.业务逻辑处理完,返回数据模型将返回的数据模型给我们的控制器,控制器再转交给前端控制器3.前端控制器在看哪些页面,能把这些数据模型进行展示。数据模型派发给指定的页面。1.页面收到这些数

2020-05-10 21:50:47 93

原创 事务的传播行为

事务的传播行为 propagation

2020-05-09 21:17:33 92

原创 数据库事务

当前会话的事务隔离级别/全局的事务隔离级别transaction / isolation / level查询当前的事务隔离级别(mysql默认可重复读)设置当前会话的事务隔离级别用这个数据库session1 开事务,读操作,读出学生session2 开事务写操作,写成管理员事务2并没有提交数据,被事务1读到了(脏读现象,脏数据)事务1读到了这个数据,事务2一回滚,就读不到了。...

2020-05-09 20:50:44 92

原创 spring源码整理

1.Spring-AOP底层就是动态代理。2.为什么环绕通知没有影响其他切面?有个LogAspectRroxy(Log切面/日志记录切面) 目标方法的执行=Log切面 给目标方法创建一个动态代理对象。Log切面 method.invoke()//环绕通知ProceddingJoinPoint调用proceed方法如果只有一个切面,环绕通知顺序执行。如果有两个切面目标方法被另外一个切面包。调用proceed之后,进入到第二个切面执行了。相当于你method.invoke是第

2020-05-09 16:39:31 129

原创 Spring事务

事务管理这个代码的固定模式可以作为一种横切关注点但是自己要写切面类很麻烦。因为多线程,1.不同线程获取的connection不一样。所以要保证线程同步性。2.定义connection哪种异常需要回滚。但是这个切面已经有了事务切面===事务管理器事务管理器是个接口,里面有很多实现类。用原生jdbc操作数据库,可以用DataSourceTransactionManger事务管理器。这个事务切面。持久层框架来用不同的事务管理器。这个事务管理器就可以在目标方法运行前后进行事务控制(事..

2020-05-09 15:22:40 173

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除