自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MVC执行流程

三个阶段配置阶段、初始化和运行阶段配置阶段对注解和xml的配置阶段,配置DispatcherServlet的url匹配规则和spring主配置文件的加载路径和配置注解,比如@Autowired、@Controller、@Service、@RequestMapping等加载配置信息web容器调用DispatcherServlet的init()方法,init方法初始化IOC容器,根据配置好的包扫描路径,扫描出相关的类然后进行反射实例化,然后缓存到IOC容器中,给属性自动赋值,比如加了@Autowire

2022-05-03 15:16:06 2214

原创 mysql优化小tips

mysql优化小tips1、where后面不接计算语句、isnull判断(如果需要判空可以设置默认值然后查询有没有默认值存在即可),否则会导致索引失效全表扫描,同样建索引也要建在where和order by后面2、where后不要用or来连接条件,能用between尽量不用in,同样会导致索引失效变为全表扫描3、exists和in的区别。exists擅长外表小内表大的情况,仅在内表中可以使用到索引;in是将内外表进行连接4、尽量使用数字型字段...

2021-11-05 15:12:23 101

原创 GC的各种相关

四种主要的垃圾收集器:串行、并行、并发、和G1串行serial:单线程环境进行回收,会暂停所有用户线程,不适合服务器环境(只使用一个线程去回收,在回收过程中可能会产生较长的停顿,只有单线程环境下有奇效)开启的话Young使用复制,Old使用标记整理并行GC(ParNew):多个垃圾多个线程并行工作,此时用户线程时暂停的,适用于大数据处理等弱交互场景(串行的多线程版本)开启也是Young复制,Old标记整理并行回收GC(Parallel):也是新生代垃圾收集器,使用复制算法,也是一个并行多线程的垃圾收

2021-11-05 14:01:03 175

原创 zookeeper

开源的分布式协调服务,它是一个为分布式应用提供一致性基于观察者模式设计模式的服务管理框架,它相当于一个文件系统+通知机制。分布式应用基于Zk可以实现数据发布、订阅、负载均衡、命名服务 分布式协调、通知、集群管理、master选举、分布式锁和分布式队列等功能。 工作原理:原子广播,保证各个server之间的同步 Zab协议,Zab协议有两种模式,恢复模式和广播模式 CAP理论(C:一致性 A:可用性 P:分区容错性): 一般分布式系统最多只能满足两项,P...

2021-10-26 17:25:59 88

原创 docker

111

2021-09-06 09:06:47 73

原创 java序列化

序列化注意项1.父类实现了序列化,则子类自动实现了序列化,即子类不需要显式实现Serializable接口,子类构造时会递归调用父类构造。2.当父类没有实现序列化,而子类需要实现时,子类需要显式实现Serializable接口,并且父类中需要有无参的构造函数。3.序列化只对对象的属性进行保存,而不会保存其方法。4.当类中的实例变量引用了其他对象,那么在对该类进行序列化时,引用的对象也会被序列化(需要这个引用的对象也实现Serializable接口,否则会出现java.io.NotSerializab

2021-07-22 10:36:49 550

原创 dubbo

dubbo服务暴漏过程利用spring配置文件扩展自定义解析。在DubboNamespaceHandler类中将对应的标签解析类集合。对应服务类的ServiceBean实现了spring的监听接口,在springIOC容器刷新完成后调用该类下的onApplicationEvent()方法,执行export()启动暴露服务本地暴露和远程暴露远程服务暴露的是dubbo的协议而本地暴露的是injvm的协议为什么需要本地暴露:因为可能存在引用自身服务的情况,避免不必要的网络通信...

2021-07-15 15:04:47 73

原创 redis

XB处理方案1、设置随机值2、热点数据不设过期时间(在更新时刷新缓存)XT处理方案1、对参数设置校验(不信任一切请求参数)JC处理方案1、设置热点数据永不过期2、加互斥锁

2021-05-13 10:16:21 201

原创 spring

6特核心依赖注入、AOP、事件、验证、数据绑定、类型转换测试数据访问事务、DAO支持、JDBC、ORM(对象关系映射)、编组XMLweb支持(Spring MVC)集成语言

2021-05-04 19:11:52 114

原创 Synchronized

sychronized原理Synchronized是java提供的原子性内置锁,这种内置的开发者看不到的也被称为监视器锁,监视锁即moniter,是对象与生俱来的一个隐藏字段。使用sychronized会在编译后在代码块前后加上monitorenter和monitorexit字节码指令,也就是加锁和解锁,它们依赖操作系统底层互斥锁实现。它的作用主要就是实现原子性操作和解决共享变量的内存可见性问题。在使用moniterenter进入时如果moniter为0,表示可以获取后续代码并将moniter加1,如果

2021-04-02 17:08:21 73

原创 hash

死链问题和扩容数据丢失是慎用其主要原因三个基本存储概念table:存储所有节点的数据的数组slot:哈希槽,即table[i]这个位置bucket:哈希桶。table[i]上所有元素形成的表或数的集合死链问题扩容在添加元素的时候,如果元素个数达到threshold,并且数组下标已经存在值则进行扩容。扩容2倍。size是存放元素的个数,length数组容量的大小(capcity)— resize(2*table.length)...

2021-01-18 09:42:10 153

原创 exist和in的区别

exist如果A表中有x条数据,exist就是将这x条记录逐条取出来然后判断x遍是否有这条记录(外表小,内表大),先进行外表循环,每次循环再对内表进行查询仅在内表上可以使用到索引in1、将子查询中的结果全部查出来再分成m个,再进行m次查询,也可以理解为多个or拼接(外表大,内表小)2、in的子查询返回结果必须只有一个字段将外表和内表进行join连接...

2020-11-18 17:18:50 406

原创 mysql的三种删除的区别

Delete1、delete属于DML操作语言,只会删除数据不会删除表结构。会走事务。2、在InnoDB中,delete实际不会真正将数据删除,只是逻辑删除,占用空间也不会释放,只是将数据设置为不可见。但下次插入数据的时候这部分空间可用,也就是重用->覆盖;而MyISAM则会立刻释放空间3、delete执行时,会先将数据缓存到rollback segement中,事务commit后生效4、...

2020-11-16 09:57:47 1611

原创 linux

tail可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。-f 循环读取-n<行数> 显示文件的尾部 n 行内容

2020-09-01 11:03:43 82

原创 rmq

4大核心组件nameServer、Broker、producer、Consumerconsumer组和producer组通过分组将消息均摊,实现天然的负载均衡producer的三种消息发送方式同步发送:发送消息方接受到收方的回响之后才发下一个数据包。一般用于重要消息。例如通知邮件异步发送:发出数据后不等收方发回应,接着发下个数据包。单向发送:只负责发送而不等待服务器回应且没有回调函数触发Consumer消费者分为拉取型(主动从消息服务器拉取信息)和推送型(封装了消息拉取,需要注册消费监听器

2020-09-01 10:59:53 292

原创 ThreadLocal

threadLocal的用途为多线程解决并发问题提供了一种新思路为了解决多线程访问资源时的共享问题threadLocal提供的是线程本地的实例。与普通的的变量区别在于,每个使用完该变量的线程都会初始化一个完全独立的实例副本。通常被private static修饰。当一个线程结束后,它所使用的所有threadLocal相对的实例副本都可以被回收线程映射ThreadLocal...

2020-08-13 10:28:02 107

原创 mysql

mysql逻辑架构传输层:最上层是一些客户端和连接服务,类似于客户端/服务端工具实现类似于tcp/ip的通信。主要完成类似于连接处理、授权认证、及相关的安全方案。在该层引入了线程池的概念。为安全通过的客户端提供线程。同样在该层可以实现SSL的安全链接,服务器也会为安全接入的每个客户验证它所具有的操作权限。服务层:主要完成核心服务功能,如sql接口,并完成缓存的查询,sql的分析优化以及部分内置函数的执行,所有跨存储引擎的功能也在这一层实现。该层服务器会解析查询并创建相应的内部解析树,并完成相应的优化如

2020-08-11 22:01:07 171

原创 springboot

springboot自动化配置原理主要的两个注解:@EnableAutoConfiguration和@SpringBootConfiguration@EnableAutoConfiguration该注解上又import了一个选择器AutoConfigurationImportSelector.class,利用该选择器为spring容器导入组件重写了父类selectorImports方法,通过扫描METE-INF/spring.factories路径下的这个文件获取configurations的L

2020-08-10 17:40:32 116

原创 抽象类和接口的区别

接口与类的区别? * 1.接口不能被实例化 * 2.接口没有构造方法 * 3.接口中所有的方法必须是抽象方法 * 4.接口中不能包含成员变量,除了static和final变量(jdk1.8之前) * 5.接口不能被类继承,而是被类实现 * 6.接口支持多继承 */抽象类和接口的区别? * 1.抽象类中的方法可以有方法体,接口只能有方法的声明 * 2.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的 * 3.接口中不能含有静态代码

2020-08-05 16:58:58 92

原创 hashmap和linkedhashmap

hashMap线程不安全底层是数组+链表(散列表)+红黑树(1.8之后添加红黑树)- 数组加快访问速度,链表解决hash冲突不保证插入顺序,但是输出顺序不会改变。遍历时entryset首先会遍历数组再遍历链表linkedHashMap线程不安全严格保证顺序,双向链表维护插入数据引用父类hashmap的put方法,put方法插入的是hashmap的内部类Node类型的节点建立新的Node节点时,将Node添加至entry中,并将hash、key、value赋值在Entry中,再将其添加至

2020-07-16 11:41:21 113

原创 B和B+

二叉树特点:左子树小于根节点键值,右子树大于根节点键值概念:系统从磁盘取出数据到内存中是以磁盘块(block)为基本单位的。位于同一磁盘块的数据会被一次性读取出来而不是需要什么取什么...

2020-07-15 10:11:57 1611

原创 @Transaction

@Transactional注解使用注意必须用在public方法上。如果使用在别的方法上(比如protected,private)不会报错,但是事务不会生效要在类方法上使用该注解(注解不能被继承),可以在接口上使用,但是需要配置相应的接口代理,所以不推荐在接口上使用不要图省事,将注解放在类上声明,会使所有方法都有事务,为了性能考虑,最好的使用方式是在接口上使用同类方法中调用(注解在类上),事务不生效;同样,A调B方法,B有A没有,事务同样不生效spring事务在抛异常的时候会回滚,但如果catc

2020-07-07 15:09:25 392

原创 maven的生命周期

cleanpre-clean 执行清理前的准备工作clean 清理上次构建生成的文件post-clean 执行清理后的工作defaultvalidate 验证项目和资源是否合规可用compile 编译代码test 测试代码package 打包(例如jar、war)integration-test 继承测试verify 运行所有检查,验证包是否有效且达标install 安装到本地仓库,此时可以作为其它工程的依赖使用deploy 发布到远程仓库,使项目共享sitepre

2020-07-07 11:02:49 83

原创 集合框架整理

ArrayList继承了list,底层是数组。它将元素存储到数组的缓存区中,初始容量为10,它的容量就是此数组缓存区的长度。当添加第一个元素的时候,空的ArrayList就将扩展为DEFAULT_CAPACITY

2020-07-07 09:17:57 150

原创 Hystrix

Hystric概念主要的三大功能:服务熔断就是直接拒接请求,然后请求降级返回给请求端一个友好提示服务降级else if、which-case就是服务降级的表现。当服务调用不成功或者在等待超时的时候不会直接返回错误,而是fallback一个友好信息。服务限流排队请求服务,有序进行Hystric操作@HystricCommond(fallback=)...

2020-06-08 17:08:22 84

原创 Eureka

概念服务提供与发现是网络通信交互的第一步,服务端在提供服务的时候会将服务的地址等信息注册到注册中心上,消费者根据服务地址来获取该服务。 在微服务体系中有许多的服务,服务端给这些服务提供管理功能的eureka的注册中心的功能,实现高可用。它实质就是一个KV键值对,key存服务名,value存服务地址。配置eureka主注册中心@EnableEurekaServer配置服务到注册中心@EnableEurekeClient启动流程首先启动eureka注册中心启动服务提供者的注册服务(服务地址以别

2020-06-03 17:23:21 119

原创 JUC并发

LOCK的继承体系ReentranLock对Lock的实现是基于sync,而sync继承了AbstractQueuedSynchronazier(AQS),这个AQS是juc

2020-06-02 15:09:43 133

原创 类是如何实例化的

类是如何实例化的(执行角度)确认类元信息是否存在。在new的时候,JVM会先查看metaspace(元空间)中是否存在。如果不存在,再双亲委派模式下使用当前类加载器以ClassLoader+包名+类名为Key进行查找对应的.class未见。如果没有找到该文件,则抛出ClassNotFoundException;如果找到,则对该类进行加载,并生成对应的Class类对象。分配对象内存。首先计算对象占用内存大小,然后进行同步操作,比如采用CAS保证分配操作的原子性。设定默认值。成员变量值都需要设定默认值。

2020-05-25 20:48:44 253

原创 JVM

静态编译器是如何将源码转化成字节码的?首先词法解析通过空格分隔出单词、操作符、控制符等信息,将其形成token信息流后传递给语法解析器语法解析器收到token信息流后将其按照java语法规则组装成语法树最后语义解析器会检查关键字是否合理、类型是否匹配、作用域是否正确等。完成值后生成字节码...

2020-05-25 18:02:31 319

原创 类定义规范(访问权限)

如果不允许外部直接通过new来创建对象,构造方法必须是private工具类不允许有public或default的构造方法(工具类就是为了给全局调用的,调用的时候只需类名调用静态方法就可以了,没有必要创建工具类对象)类非static成员变量并且与子类共享必须用protected类成员变量并且仅在本类使用必须用private若是static成员变量,必须考虑是否为final类成员方法只供类内部调用,必须是private类成员方法只对继承类公开那么限制为protected...

2020-05-24 15:38:58 548

原创 网络协议TCP/IP

关于网络协议网络发展需要解决的问题:如何无障碍的发送和接受数据。也就是大家都可以用可以相互理解的方式解包和打包,不同的设备在不同类型的操作系统顺畅通信。TCP/IP(transmission imformation protocol / internet protocol),中文译’'传输控制协议/因特网协议四层协议框架链路层:以字节为单位把0和1分组,写入源和目标机器的物理地址来传输数据网络层:根据ip定义网络地址,区分网段。子网进行解析协议、转发数据包,即ip数据包传输层:当数据包通过网络

2020-05-21 23:51:00 152

空空如也

空空如也

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

TA关注的人

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