自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 报了Error creating bean with name ‘entityManagerFactory‘ defined in class path resource错误解决方法

首先判断是数据库实体出问题了,先检查数据是否加了@ID,发现已经加了但是包导错了希望能帮助到遇到同样错误的人

2020-07-23 10:52:57 1079

原创 什么是自定义函数?自定义函数和存储过程什么区别?

问题回答a.自带函数数学函数聚合函数字符串函数日期函数加密函数格式化函数类型转换b.自定义也可以定义函数

2020-06-17 16:19:42 818

原创 数据库三大范式与反三范式

1.范式其实是指就是规范的意思,英文Normal form,简称NF,目的,范式可以避免数据冗余,减少数据库的空间,减轻维护数据完成性的麻烦.2.只有关系型数据库才存在范式,总共有1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF,用的最多的就是1NF,2NF,3NF.3.第一范式(1NF)表中的列不可分割,具有原子性4.第二范式(2NF)在1NF的基础上,有主键,非主键列需要完全依赖于主键,不能只依赖于逐渐的一部分5.第三范式(3NF)咋2NF的基础上,非主键需要直接依赖于主键,不

2020-06-17 16:04:31 2163

原创 什么是存储过程?怎么写?有没有用过?

1.存储过程就是具有名字的一段代码,yong来完成一个特定的功能2.优缺点优点 :1.由于应用程序随着时间推移会不断更改 , 增删功能 , SQL 语句会变得更复杂 , 存储过程为封装此类代码提供了一个替换位置 ;2.由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中 , 所以存储过程运行要比单个的 SQL 语句块要快 ;3.由于在调用时只需用提供存储过程名和必要的参数信息 , 所以在一定程度上也可以减少网络流量 , 简单网络负担 ;可维护性高 , 更新存储过程通常比更改 , 测

2020-06-17 15:36:38 2137

原创 sql语言的分类

sql语言分五大类1.DDL数据库定义语言:CREATE,DROP,ALTER(操作的对象是数据库,表)2.DML数据操纵语言:INSERT,UPDATE,DELETE(操作的对象是记录)3.DQL数据查询语言:SELECTselect … from student where 条件 group by 分组字段 having 条件 order by 排序字段执行顺序:from->where->group by->having->order by->selectgro

2020-06-17 14:59:40 200

原创 MySQL的索引失效有哪些情况?

1.避免过度索引2.避免重复和冗余索引3.删除不需要使用的索引4.最常用做限制条件的列放在最左边5.合理使用短索引6.索引字段越小越好7.避免索引失效索引列为nullmysql查询只是用一个索引,多个索引后面失效like百分号前置Not in不会走索引对索引列进行函数操作where条件是Or...

2020-06-17 14:30:12 261

原创 MySQL有哪些数据库存储引擎,有什么区别?

1.存储引擎是什么?有什么用?2.Mysql中常见的存储引擎有哪些?3.MyISAM和innoDB的区别?问题回答1.Mysql中的数据用各种不同的技术储存在文件(或内存)中,这些技术中的每一个技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同功能和能力.在MySQL中将这些不同的技术及配套的相关功能称为存储引擎.2.存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为储存的数据建立索引以及如何更新,查询数据等技术实现的方法3.mysql存储引擎总共有九种,常用

2020-06-17 11:41:01 5255

原创 MySQL哪些字段要设置索引

1.表的主键、外键必须有索引;2.数据量超过300的表应该有索引;3.在where从句,group by从句,order by从句,on从句中的列添加索引4.索引应该建在选择性高的字段上;5.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;6.复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:7.不适合的字段a.表记录少b.经常插入、删除、修改的表,不要建立太多的索引;c.删除无用的索引,避免对执行计划造成负面影响;...

2020-06-17 10:09:17 615

原创 谈谈Spring的IOC和DI

问题回答1.Ioc,控制反转;DI,依赖注入。2.Ioc意味着将你设计好的对象交给容器控制(创建,销毁,调用)。3.Di是组件之间依赖关系由容器在运行期决定4.Ioc和DI其实是一种思想,并不是具体的技术。5.IoC 和 DI 有什么关系呢?其实它们是同一个概念的不同角度描述。由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”。相对IoC 而言,“依赖注入”明确描述了“

2020-06-16 20:05:29 297

原创 使用了Spring框架的好处是什么?

1.轻量级Spring是轻量级,无侵入.2.控制反转(IOC):Spring通过控制反转实现了松散耦合,对象们给出它们 的依赖,而不是创建或查找依赖的对象们.3.面向切面编程(AOP):Spring支持面向切面编程并且把业务逻辑和系统服务分开4.容器:Spring包含并管理应用中对象的生命周期和配置5.MVC框架:Spirng的WEB框架是一个精心设计的框架,是Web框架的一个很好的一个替代品6.事务管理:Spring提供一个持续的事务管理接口,可以通过配置文件或者注解轻松实现.7.异常处理:S

2020-06-16 19:42:12 2481

原创 ssm-说一下Spting事务管理

1.Spring支持编程式事务管理和声明式事务管理两种方式2.现在主流的是声明式事务管理方式,分为基于**<tx>和<aop>**命名的声明式事务管理和基于@Transactional的方式将声明式事务管理3.基于**<tx>和<aop>**命名空间的声明式事务,可以充分利用切点表达式的强大支持,使得管理事务更加灵活.4.基于@Transactional的方式将声明式事务管理,简化到了极致.开发人员只需要在配置文件中加上一行配置,然后在需要实施事务管理的

2020-06-16 17:48:06 142

原创 ssm-说一下SpringAOP?

1.AOP,也就是面向切面编程;其次还有面向过程和面向对象编程2.SpringAOP实现主要是通过代理类的方式实现,有jdk动态代理和CGLIB代理两种方式3.Java动态代理只能够对借口代理,不能对普通类进行代理...

2020-06-16 17:03:04 191 1

原创 ssm-mybatis模糊查询like语句该怎么写?

问题回答1.java中用%,sql使用#{}。建议。2.java中用%,sql使用${}。不建议,会sql注入。3.sql中使用%,sql使用 ${}。不建议,会sql注入。4.sql中使用%,sql使用 #{}。不允许。会sql错误.5.sql中使用%,sql使用 #{}。配合concat函数,建议。简要回答1.不用${},sql注入有风险2.用#{},%号在java中或者sql中都可以使用.sql使用%,需要配合concat函数,建议.辅助理解1、java中用%,sql使用#{}。建

2020-06-15 15:32:12 1072

原创 ssm-#{}和${}的区别是什么

1.#{}是预编译处理,可以有效的防止SQL注入.底层实现依靠PreparedStatement 预编译的时候会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值的时候都会加上两个单引号2.${}直接字符串替换,所以会有sql注入的风险.like,order by,where3.两者都可以使用的时候优先用#{},比如where查询,like查询用#{}.4.order by字段**,from**表名称,只能用${}.5.#{}可以对数据类型进行自动转换,而${}将

2020-06-15 14:35:17 786

原创 Spring用到的设计模式?

1.工厂设计模式:Spring使用工厂通过BeanFactory,ApplicationContext创建bean对象2.代理设计模式:SpringAOP功能的实现3.单例设计模式:Spring中的Bean默认都是单例的4.模板方式模式:Spring中jdbcTemplate,hibernateTemplate等以Template借我的对数据库操作的类,它们就使用到了模板模式5.包装器设计模式:项目需要连接多个数据库,而且不同的客户在每次访问中根据需要回去访问不同的数据库.这种模式让我们可以根据客户

2020-06-15 11:51:01 116

原创 解释Spring支持的几种bean的作用域?

Spring框架支持以下五种bean的作用域:1.singleton :bean在每个Spring ioc 容器中只有一个实例。2.prototype:一个bean的定义可以有多个实例。3.request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。4.session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。5

2020-06-14 20:37:04 4655

原创 Spring依赖注入有哪些方式?

有4中注入方式:1.Set方法注入:注入最简单,最常用的注入方式,支持注解+xml。2.构造器注入:是指带有参数的构造函数注入,支持注解+xml3.静态工厂的方式注入:通过调用静态工厂的方法来获取自己需要的对象,只支持xml。4.实例工厂的方式注入:获取对象实例的方法不是静态的,所以需要new一个工厂类,再调用普通的实例方法,只支持xml。有两种实现方式:1.注解(@Autowired,@Resource,@Required)2.配置文件(xml)简要回答1.set注入,构造器注入,静态工

2020-06-14 20:29:04 2353

原创 SpringMvc常见注解?

1.@Controller:用于定义控制器类2.@ResponseBody:表示方法的返回结果直接写入HTTP response body中3.@PathVariable:获取路径参数4.@RequestParam:用在方法的参数前面5.@RequestBody:请求的json转化为bean去接收6.@RestController:是@Controller和@ResponseBody的合集7.@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射8.@

2020-06-14 20:05:15 88

原创 SpringMVC工作原理/工作流程

SpringMVC工作原理/工作流程1.用户发送请求至前端控制DispatcherServlet;2.DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;4.DispatcherServlet 调用 HandlerAdapter处理器适配器;5.HandlerAdapter 经过适配调用 具体处理器

2020-06-14 17:57:49 147

原创 静态方法是否线程安全?

1.看静态方法是否引起线程安全问题要看在静态方法中是否使用了静态成员2.如果该静态方法不去操作一个静态成员,只在方法内部使用实例字段(instance field),不会引起安全性问题3.如果该静态操作了一个静态字段,则需要静态方法中采用互斥访问的方式进行安全处理....

2020-06-14 15:54:45 1419

原创 进程与线程的区别?

1.程序被载入到内存中并准备执行,他就是一个进程2.单个进程中执行中每个任务就是一个线程3.一个线程只能属于一个进程,但是一个进程可以拥有多个线程.参考进程与线程的关系

2020-06-14 15:40:43 64

原创 说一下自旋锁?

1.在Java中,自旋锁是指尝试**获取锁的线程不会立即阻塞,**而是采用循环的方式去尝试获取锁2.优点是减少线程上下文切换的消耗3.缺点是循环会消耗Cpu.

2020-06-14 15:29:55 64

原创 说一下独享锁/共享锁?

1.独享锁是指该锁一次只能被一个线程锁持有2.共享锁是指该锁可被多个线程锁持有3.对于Java ReentrantLock(重入锁)而言,其实是独享锁.但是对于Lock的另一个实现类ReadWriteLock,其读锁是共享锁,其写锁是独享锁4.读锁的共享锁可保证并发读是非常高效的,读写,写读,写写的过程是互斥的.5.独享锁和共享锁是通过AQS(AbstractQuenedSynchronizer抽象的队列式同步器)来实现的,通过实现不同的方法,来实现独享或者共享6.对于Synchronized而言

2020-06-14 14:46:18 638

原创 说一下死锁和如何避免死锁

死锁Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请.即线程在获取了锁A,但是并没有释放它,而又去申请了锁B,但是锁B已经给另一个线程获取了,在释放锁B之前又要获得锁A,因此发生了闭环,陷入了死锁循环.死琐条件– 独占锁:1.互斥:资源不能被共享,只能由一个进程使用。2.请求与保持:进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。3.不可抢占:有些系统资源是不可抢占的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。4.-- 循环等待

2020-06-14 14:38:50 219

原创 说一下对象锁和类锁?

1.Java的对象锁和类锁在锁的概念上基本上和内置锁是一致的,但是,实际区别大2.对象锁是用于对象实例方法,或者一个对象实例上的3.类锁是用于类的静态方法或者一个类的class对象上的.4.类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个锁只有一个类锁.但是有一点必须注意的是,其实类锁知识一个概念上的东西,并不是真实存在的,他只是用来帮助我们理解锁实例方式和静态方法的区别...

2020-06-14 14:22:36 441

原创 说一下可重入锁?

1.可重入锁又名递归锁,是指同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁2.对于Java ReetrantLock而言,从名字就可以看出是一个重入锁,其名字是Re entrant Lock 重新进入锁。3.对于synchronized而言,也是一个可重入锁.可重入锁的一个好处是可一定程度避免死锁辅助理解 synchronized void setA() throws Exception{   Thread.sleep(1000);   setB(); } synchron

2020-06-14 14:10:33 210

原创 说一下分段锁?

1.分段锁其实是一种锁的设计,并不是具体的一种锁,对于ConccurrentHashMap而言,骑兵法的实现就是通过分段锁的形式来实现高效的并发操作.2.我们以ConccurrentHashMap来说一下分段锁的含义以及设计思想,ConccurrentHashMap中的分段苏称为Segment,它即类似于HashMap(JDK7和JDK8中HashMap的实现)的结构,即内部拥有一个Entry数组,数组中的每个数组又是一个链表;同时又是一个ReentrantLock(Segment继承了Reentrant

2020-06-14 11:55:55 1964

原创 说一下公平锁/非公平锁?

1.公平锁是指多个线程按照申请顺序来获取锁非公平锁是指多个线程获取所得顺序并不是按照申请锁顺序,有可能后申请的线程比先申请的线程优先获取锁,有可能,会造成优先级反转或者饥饿现象.对于Java ReentrantLock而言,通过构造函数指定该锁是否为公平锁,默认是非公平锁.非公平锁的有点在于吞吐量比公平锁大.4.对于Synchronized而言,也是一种非公平锁,由于其不像ReentrantLock是通过AQS来实现的线程调度,所以并没有任何办法使其变成公平锁...

2020-06-14 11:26:28 95

原创 说一下偏向锁/轻量级锁/重量级锁?

1.这三种锁是指锁状态,并且是针对synchronized,这三种锁的状态是通过对象监视器在对象头中的字段来表明的.2.偏向锁是指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁,降低锁的代价.3.轻量级锁是指当锁是偏向锁的时候,被另一个线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,提高性能.4.重量级锁是指当锁为轻量级的时候,另一个线程虽然是自旋,但自旋不会一致持续下去,当自旋一定次数的时候,还没有获取到锁,就会进入阻塞,该锁膨胀为重量级锁,重量级锁会让

2020-06-14 11:17:41 197

原创 说一下互斥锁/读写锁?

1.独享锁/共享锁是一种广义的说法,互斥锁/读写锁,就是具体的实现。2.一次只能一个线程拥有互斥锁,其他线程只有等待3.互斥锁在Java中的具体实现就是ReentrantLocak4.读写锁在Java中的具体实现就是ReadWriteLock...

2020-06-12 20:20:34 142

原创 事物特性

1.事物特性指的是ACID。2.分别时原子性,一致性,隔离性,持久性3解释a.原子性:原子性是指事务包含的操作要么全部成功,要么全部失败。因此事务的操作成功就必须要完全应用到数据库。b.一致性:一致性强调的是数据是一致性的。假设用户A和用户B两者的钱加起来一共是5000,那么不管A还是B如何转账,转几次帐,事务结束后两个用户的钱加起来应该还是5000,这就是事务的一致性。c.隔离性:当多个用户并发访问数据库时,多个并发事务是相互隔离的。事务之间不能相互干扰。d.持久性:一个事务一旦被提交了,那么

2020-06-12 20:16:07 2676 1

原创 说一下乐观锁和悲观锁的区别?

问题回答悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。synchronized、Lock属于悲观锁。Lock有三种实现类:ReentrantLock、ReadLock(读锁)和WriteLock(写锁)。乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁。CAS属于乐观锁。悲观锁适合写操作非常多的场景,乐观锁适合读操作非常多的场景,不加锁会带来大量的性能提升。悲观锁对任意记录进行修改前,先尝试为该记录加上排他锁(ex

2020-06-12 20:11:08 580

原创 说一下Threadlocal关键字?

1.线程本地变量,可以为变量在每个线程中都创建一个副本,使每个线程都可以访问自己内部的副本变量参考链接添加链接描述

2020-06-12 20:07:12 260

原创 ConcurrentHashMap?

1.ConcurrentHashMap是Java的一个线程安全且高效的HashMap的实现2.JDK1.7ConcurrentMap由Segment数组+HashEntry组成,也就是数组+链表3.JDK1.7ConcurrentMap采用了分段锁技术,其中Segment继承与ReentrantLock。支持N个Segment这么多次数的并发。每当一个线程占用访问一个Segment时,不会影响到其他的Segment。4.JDK1.8抛弃了原有的Segment分段锁,而采用了CAS+synchroniz

2020-06-12 20:00:26 105

原创 说一下CAS锁机制?

1.CAS(Compare and Swap 比较并交换),是一种无锁算法,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其他线程都失败,失败的线程并不会挂起,而是被告知这次竞争中失败,并可以再次尝试。2.CAS算法涉及到三个操作数a.需要读写的内存位置(V)b.进行比较的预期原值(A)c.拟写入的新值(B)3.如果内存位置V的值与预期原值A相匹配,那么处理器会自动将该位置值更新为新值B,否则处理器不做任何操作。java 多线程总结篇4——锁机制...

2020-06-12 19:22:15 1407

原创 线程的创建方式有哪些

1.继承Thread类实现2.实现Ruunable接口方式3.实现Callable接口方式4.其中前两种比较常用,但是,需要有返回值需要实现Callable借口辅助理解继承Thread类实现public class MyThread extends Thread{ @Override public void run(){ super.run(); System.out.println("hello") }}调用MyThread thread = new MyThread()

2020-06-12 19:16:34 117

原创 线程池中 submit() 和 execute() 方法有什么区别?

1.execute()参数Runnable;2.submit()参数(Ruunable)或(Ruunable和结果)或(callable)3.excute(Ruunable x)没有返回值。可以执行任务4.submit(Callable x)有返回值,返回一个Future类的对象5.Future对象,a.通过get方法,获取线程返回结果b.通过get方法,解说任务执行时候抛出的异常c.通过idDone方法,可以判断线程是否执行完成辅助理解1.看execute和submit方法的定义看s

2020-06-12 19:06:33 1150

原创 消息等待通知wait/notify具体的应用

1.一个修改了一个对象的值,另外一个线程需要感知到这个变化2.Java中我们使用的对象锁以及wait/notify方式进行线程通信3.等待方遵循的原则:A.获取对象的锁B.不满足条件就调用wait()方发C.条件满足继续执行4.通知方原则:a.获取对象的锁b.改变条件,然后notify参考链接多线程 wait(),notify()方法,案例总结...

2020-06-12 17:43:41 160

原创 数据并发操做可能出现的问题

1,丢失数据2,不可重复读,读第二此,数据就不对了3,读脏数据4,幻读辅助理解脏读:指事物读到了其他事物做了修改而未提交的数据不可重复读:不可重复读两次,读两次就不同了幻读:同一个事物T1在两个不同的时间段t执行同一条查询语句得到的记录数量不同...

2020-06-12 17:27:35 117

原创 工作中那些地方使用了多线程

1.一般业务,web-service-dao-sql基本上用不到多线程2.数据量很大(1000w级别,TB级别)的I/O操作,可以考虑多线程3.比如a.自己做并发测试的时候,模拟3000个并发模拟b.多线程下单抢单,加入支持5000人的并发下单c.多线程写入数据库,假如有1000w条数据要入库d.多线程发送邮件,假如有10w用户需要发邮件e.多线程发送短信,加入有5w用户需要发送短信f.多线程写入redis,假如有1000w的数据要存入redis。g.多线程导入ES索引,假如有1000w的

2020-06-12 17:06:56 1619

Day01_课堂笔记.md

知识简单的java基础入门知识 ,里面包括如何写入门的第一句代码"helloworld",还有注释,关键字,常量,数据类型,变量,标识符,还有数据类型转换.

2020-01-07

空空如也

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

TA关注的人

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