- 博客(27)
- 收藏
- 关注
原创 微服务 请求流程
协调阻断一切使构建分布式系统更加容易SpringCloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,熟称微服务全家桶网关: 可以限流 鉴权 熔断降级 过滤 负载均衡用户或手机端app发送请求,通过网关去找相应的服务...
2020-06-07 22:08:38 1442
原创 readis事务
Redis事务的概念:Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。Redis事务没有隔离级别的概念:批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。Redis不保证原子性:Redis中
2020-06-05 23:30:16 165
原创 MySQL
数据库的三大范式:1.保证列不可在拆分,2.非主键列完全依赖与主键列,不能只依赖于主键的一部分。3.非主键列只依赖于组件,不能依赖于其他非主键列。innodb与my萨姆的区别:前者支持行锁和acld事务操作和外键约束,后者不支持事务和行锁。前者用于储存大量数据对于经常改变的数据应该使用char而不是varchar因为后者容易产生碎片。四大隔离级别:读提交 读未提交 可重复度 串行化...
2020-06-05 23:28:25 143
原创 mybatis分页有几种方式?
有两种一种是逻辑分页,一种是物理分页:逻辑分页:mybatis使用自带的roomboos一次性查询出多个数据,然后在对数据进行检索。物理分页:使用手写sql或使用分页插件pageherlp查询出指定条数的分页数据。...
2020-05-26 15:27:32 1005
原创 mybatis中的#和$
#符号是预编译,$符号是字符转替代符,当使用#时,mybatis会将#括号里的数值变成?,配合跑铺忒 死踢们特的set方法注入。可以有效防止sql注入。
2020-05-26 15:09:18 157
原创 spring支持的五种作用域
singleton:spring ioc容器中只存在一个实例,bean以单例模式存在,系统默认的potoType:每次从容器中调用bean时都会创建一个实例。request:每次thhp请求都会创建一个bean;session:同一个http session共享一个bean实例;个喽bou- session...
2020-05-24 17:32:00 423
原创 悲观锁和乐观锁的理解
悲观锁:每次获取数据时,都会感觉数据要被修改,所以每次获取数据时,都会加锁,在使用完成后解锁,由于数据加锁,其他线程不能对该数据进行读写操作,其他线程都会进行等待。 用于读少写多。森龟奈斯的实现就是悲观锁乐观锁:在每次获取数据时,都不会感觉数据要被修改,所以每次获取数据时,都不会加锁,而在更新数据时判断该数据有没有被修改过。如果数据被其他线程修改则不更新,否则更新,可以使用 mySQL的瓦神来记录数据版本号和readis的我去来监视数据。使用场景读多写少...
2020-05-24 10:15:43 111
原创 迭代器
迭代器接口提供了遍历所有collection接口。我们可以从一个collection中使用迭代器方法来获取迭代器实例,迭代器可以遍历中删除元素,他是更加安全的因为他在遍历当前集合时元素被更改的时候会抛出并发修改异常Iterator 和 ListIterator 有什么区别:Iterator 只能单向遍历,ListIterator 可以双向遍历ListIterator 是继承了irerator接口然后又实现了一些自己的新方法。ListIterator只能遍历list集合,而iterator能遍历set
2020-05-20 18:57:19 100
原创 WEB面试
JSP 和 servlet 有什么区别:JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式JSP 侧重于视图,servlet 主要用于控制逻辑。九大内置对象:request:封装客户端的请求session:封装用户会话的对象page:JSP 页面本身application:封装服务器运行环境的对象config:Web 应用的配置对象;response:封装服务器对客户端的响应四大作用域:page:代表与一个页面相关的对象和属性request:代表与一个页面
2020-05-20 16:20:19 112
原创 线程问题
创建线程有哪几种方式?继承Thread类实现run方法实现Runnable接口实现Callable接口runnable和callable的区别:runnable没有返回时callable有返回值,callable是runnable的补充。线程和进程的区别:一个应用程序必须有一个进程,而进程下可以有多个或一个线程,线程又被称作轻量级进程并行和并发有什么区别:并行:多个服务器或多个核心数同时执行多个任务;并发:多个任务同时在一个服务器或核心上交替执行;线程有哪些状态:new:尚未启动r
2020-05-20 16:02:01 93
原创 数据库优化和索引的使用
数据库优化:选取最合适的字段属性,尽可能减少自定义字段的宽度,尽量把字段设置NotNull,省份、性别最好用枚举类型,使用join来代替子查询,事务处理,建立索引,优化查询语句索引的目的:快速访问数据表中的特定信息,提高检索速度。建立唯一性索引,保证数据表中每行数据的唯一性。加速表与表之间的连接使用分组和排序子句进行检索数据时,可以显著减少查询中分组和排序的时间。为数据表频繁使用,用于缩小查询范围的字段和需要排序的字段添加索引。对于数据表中重复值较多,不经常使用的字段不推荐建立索引。...
2020-05-18 17:13:15 97
原创 Spring
核心: IOC DI AOPIOC:控制反转,也就是把创建对象跟对象之间的关系交给Spring容器来管理在java传统开发中需要使用一个对象通常会new调用构造函数来创建一个对象,而在Spring开发模式中,spring使用工厂模式为我们创建了所需的对象,我们直接调用spring提供的对象就行了。依赖注入:spring使用javaBean的set方法或者代参构造函数为我们在创建所需对象时将其属性自动设置所需要的值的过程AOP:面向切面编程:我们在面向对象编程中,把一个事物纵向切成一个个对象,而在面向
2020-05-17 23:33:59 228
原创 MyBatis
#是符号是预编译处理,将传入的对象都当成一个字符串,会给传入的数据加一个分号。美元符号将传入的数据显示在sql中。#能很大程度防止sql注入,能用#符号尽量不用$符号MyBatis的编程步骤是什么样的:1.创建SQLsessionFactory2.通过SQLsessionFactory创建session3.调用session执行数据库操作4.session。commit()提交事务5.session。coloes)()关闭会话使用Mapper接口调用时:1.namespace必须是map
2020-05-16 10:32:30 136
原创 常用的一些类,包,和接口
常用的类:HashMap,Array,String,Java.util.Date,Integer,Class常用的包:java.long,java.io,java.sql,java.util常用的接口:List,Map,Servlet
2020-05-15 18:21:30 150
原创 集合
List:单列元素的集合,允许储存重复值,有序的。Set:单列元素的集合,不允许存重复值,内部排序,无序的。Map:双列元素的集合,不允许key为空。Array集合可以包含基本类型和对象类型,ArrayList只能包含对象类型Array大小是固定的而ArrayList大小是动态变化的。ArrayList:基于数组,善于查询,不允许有重复值,线程不安全LinkedList:线程不安全,基于链表,善于添加删除,内存占用要比ArrayList大,为每一个节点储存了两个引用一个指向前一个元素,一个指向后
2020-05-15 18:11:25 149
原创 Iterrator迭代器
iterator接口提供了很多实现对集合元素进行迭代的方法,每一个集合类都包含了可以返回迭代器示例的迭代方法。iterator可以用来迭代List和Set集合而ListIterator只能迭代List集合
2020-05-15 17:23:13 210
原创 List Set Map集合存取时各有什么特点
List跟Set都是单列元素的集合List元素是有序的也就是说通过add方法添加时会按先后顺序一个个添加Set是无序的,List里允许添加重复值,Set则不允许,Set集合每次添加元素也就是用add方法时会判断集合里有没有与这个元素equery相同的会返回true跟falseMap跟前两者不同他是双列元素的集合,用put方法存键值对,不可以存在相同的键,用get(键)来获取当前键的值总结List有序存放值,可以有重复值,Set无法拥有重复值,Map保存键值对键不可以有相同的,value可以有多个值.
2020-05-13 19:51:28 224
原创 java内存分配与静态
静态方法不能访问非静态的数据和方法,因为这两项都依赖于具体的实例,而静态方法在对象实例化之前也就是编译期间就已经被装载了,而类中的实例变量和实例对象必须在对象开辟堆内存之后才能使用 所以静态方法不能访问非静态的数据和方法当一个对象被实例化时,先根据引用类型分配内存空间,然后再调用构造函数...
2020-05-13 19:24:58 103
原创 静态与抽象
static变量是属于类的,当程序编译期时静态绑定的,静态属于字节码,不需要对象就可以运行他在所有实例化的对象中值都是一样的,接口和抽象方法都可以有静态变量,因为静态变量只是为了找一个容身之处,抽象类不可以有静态的抽象方法,因为抽象方法也就是说不能被分配内存空间,而静态的方法在类实例化之前就分配了内存空间,这样是矛盾的抽象类里可以有静态变量,静态方法,因为静态变量和方法是在编译期间静态绑定的属于字节码,可以不用实例化对象就能获取,但是不可以有静态的抽象方法,因为静态属于字节码不需要对象就能运行,在
2020-05-13 19:14:22 189
原创 java面试题理解
封装:把描述一个实物的属性和行为的代码封装到一个类中,这个类的属性用变量定义,行为用方法定义继承:在原有类的基础上衍生一个子类,提供继承关系的就是父类,多态:指的是程序中定义的引用类型变量所指向的具体类型不确定,需要在程序运行期间才确定 父类类型的变量引用子类的事例。抽象:把描述一些实物相似和共性的代码写在这个类里,这个类只考虑这些事物的相同和共性之处使用final修饰变量时,引用的变量不能变,但是引用变量里的内容可以变 比如final StringBuffer a=new StringBuff
2020-05-13 18:14:29 119
原创 Mybatis requestMap
一个省有多个市 一对多根据市省id联表查询出其下所有的市 返回结果resultMapcolumo指的是数据库里的值 property是类里的属性ofType指的是集合存放的类型 property指的是实体类属性名如果是映射单对象,直接使用association来映射。而如果关系 是一个集合,则需要使用collection来描述...
2020-05-12 16:21:00 708
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人