- 博客(43)
- 收藏
- 关注

原创 MYSQL调优分析
Mysql 调优1. 排除缓存干扰临时的直接再命令行执行set global query_cache_size=0set global query_cache_type=0永久的修改配置文件my.cnf ,添加下面的配置即可。query_cache_type=0query_cache_size=02. 查看执行计划 explain Sql 解释 https://www.cnblogs.com/tufujie/p/9413852.html3. 避免回表查询在这.
2020-07-20 16:16:34
314

原创 controller用于接收请求的注解在spring容器里面的解析过程
spring中对于controller的注解解析和映射的匹配原理本文中主要针对AbstractMethodHandlerMapping中的每一个方法进行断点并分析原理来了解这一处理过程的。 /** * Configure the naming strategy to use for assigning a default name to every * mapped handler m...
2019-07-08 21:29:59
560

原创 FutureTask初步使用与传值示例
对于FutureTask的分析我在上个章节大致介绍过了 可点下链接进行查阅https://blog.youkuaiyun.com/horse_xiao/article/details/94589682本章的重点是讲述的是FutureTask的初步使用以及通过传入一个List的集合 ,对集合中的每个数据进行相应的操作初步使用首先定义一个接口去实现callable接口package c...
2019-07-03 21:47:56
1280
原创 mysql 几种不同日志介绍
前言对于开发者而言大部分情况只需要关注数据库的sql就可以了,但个别情况下了解数据库的日志信息能够帮我们更好的定位一些问题。MYSQL的日志种类1. redo log(重做日志) indodb 引擎2. undo log(回滚日志)indodb 引擎3. binlog(二进制日志)4. relay log(中继日志)5. error log(错误日志)6. slow query log(慢查询日志)7. general log(一般查询日志)详细描述redo l.
2021-11-18 19:16:48
1219
原创 spring bean的加载过程
前景提要:spring中bean的加载过程的默认配置单例模式,且允许循环依赖。单例加载模式为懒加载。在添加注解@denpendOn的情况下会比变成从从BeanDefinition中的BeanDefinitionMap中获取该类的配置信息中加载到BeanFactory.运行流程类的扫描过程扫描过程:beanFactory主要通过BeanDinition的相关子类来获取类信息。由上图可见BeanDinition的子类中记载了扫描的对象的配置信息以及基本信息。其中当我们需要扫描一个新的
2021-11-16 14:08:09
1090
原创 RocketMQ基本信息
正文简介RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里参考Kafka特点研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。功能发布/订阅消息传递模型财务级交易消息各种跨语言客户端,例如Java,C / C ++,Python,Go可插拔的传输协议,例如TCP,SSL,AIO内置的消息跟踪功能,还支持开放式跟踪多功能的大数据和流生态系统集成按时间或偏移量追
2021-11-13 14:33:52
1817
原创 redis 不同数据结构使用场景
String使用场景:1.缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力。2.计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。3.session:常见方案spring session + redis实现session共享。hashhash在实际项目中有可能多表关联查询,redis怎么存:可以sql先关联起来,然后存到视图,r..
2021-11-12 11:27:27
1464
原创 redis key的淘汰策略
Redis中共有下面八种内存淘汰策略:volatile-lru:设置了过期时间的key使用LRU算法淘汰;allkeys-lru:所有key使用LRU算法淘汰;volatile-lfu:设置了过期时间的key使用LFU算法淘汰;allkeys-lfu:所有key使用LFU算法淘汰;volatile-random:设置了过期时间的key使用随机淘汰;allkeys-random:所有key使用随机淘汰;volatile-ttl:设置了过期时间的key根据过期时间淘汰,越早过期越早淘汰;noe
2021-11-10 17:48:38
872
原创 Redis的缓存击穿/穿透/雪崩及解决方案
1 缓存击穿:在访问的时候查询一个不存在的数据。所以在缓存访问的时候会DB访问的操作。解决方案: 常见的有布隆过滤器(将所有储存的数据存入一个bitmap中 一个一定不存在的数据会被该过滤器拦截)另一种在DB储存不到数据的时候也进行缓存记录。但是这个key的过期时间设置短一些正常五分钟就够了 。2 缓存穿透:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮解决方案:设置.
2021-11-10 17:09:50
1779
原创 MYSQL 基础信息
Page是MySQL Innodb存储的最基本结构,也是Innodb磁盘管理的最小单位,了解page的一些特性,可以更容易理解MySQL。由上图可见表的组成 TableSpace -> Segment -> Extent(固定大小64Page) -> Page . 当Tablespace 小于32M时候一次扩增一个Extent 当 大于32M的时候一次扩增4个Extent .Page是表空间的最小单位默认大小为16KB (Linux 的page大小为4KB)MYSQL5.7后...
2021-11-10 13:15:28
1293
原创 记环境切换引发的一次问题
问题描述:某日由于业务需要公司整体环境进行了一次置换。相应的部分接口需要重新进行测试这时候问题就来了 首先本人有个保存草稿箱的接口,这个时候A同事告诉我保存草稿接口数据可以正常保存,但是在查询草稿列表的时候只能获取固定两条数据。what fuck!之前一直好好的。肯定是操作不对。于是我抱着打脸的心态进行了验证。此时进行第一次查验结果如下emmm ,根据查询条件真的有四条然而从控制台中打印的sql来看total = 2 。或许是由于独写分离的原因导致主从复制不一致...
2021-08-18 21:14:22
107
原创 redis基本介绍及应用场景
redis介绍及应用Redis 基本数据类型StringHashListSetZsetRedis 持久化rdb :每隔一定时间,或者操作某个函数,或者操作达到一定频率会将数据以日志的形式记录到rdb文件中,所以在服务器宕机的时候会丢失一定时间的数据。 Aof :Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。R
2020-07-20 16:31:24
184
原创 springcloud整合springboot admin
springboot admin通常在项目中需要监控项目中接口的响应时间内存的占用以及当前项目的访问量等等一些情况 springboot admin则是实现该种目的的一种方式下面就springcloud整合springboot 进行一个案例的演示目录结构展示在上图结构中由于在测试服务器中运行可一部分程序所以我直接在eruka上面进行对springboot admin的展示 正常情况下应该...
2019-12-17 16:51:13
2867
1
原创 mysql哈希连接
MySQL 开发组于 2019 年 10 月 14 日 正式发布了 MySQL 8.0.18 GA 版本,带来了一些新特性和增强功能。其中最引人注目的莫过于多表连接查询支持 hash join 方式了。我们先来看看官方的描述:MySQL 实现了用于内连接查询的 hash join 方式。例如,从 MySQL 8.0.18 开始以下查询可以使用 hash join 进行连接查询:SELECT *...
2019-10-24 20:13:44
711
原创 CMMI-3编码人员问题访谈
问题列表编码阶段的参考文档主要有哪些?如何确保编码的准确?公司是否定义了编码标准?是否被遵循?答:1.需求设计编码标准等 2. 走查,单元测试 3. Java、C#等编码标准是否编写用户手册,安装手册?由谁编写?答: 编写了,由开发人员编写你的项目是否识别了可替代的集成顺序?是如何选择最合适的集成顺序的?答: 1. 根据系统架构关系、业务关系 2. 先根据架...
2019-10-15 15:34:27
3687
原创 基于springboot的WebApplicationType分析
在springboot中WebApplicationType是选择服务的启动类型通过他可以选择性的嵌入不同的服务器示例/** * Copyright 2013-2033 Xia Jun(3979434@qq.com). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not us...
2019-07-25 14:40:00
10583
1
原创 对redis中的field设置过期时间
基于Jedis对hashKey进行过期设置在redis中通过需要对订单等信息进行存在时间设置对于Key-Value的形式可以直接使用expire函数设置但是对于 Key-Field-Value则没有现成的函数进行设置 以下就是针对这一场景进行的。方案以多线程的方式进行对需要设置过期时间的hashKey值的进行线程等待删除操作。将需要所有删除的Key-Field-Value 以及存在...
2019-07-20 14:44:56
15389
2
原创 linux查看端口占用情况以及内存占用情况
命令free -h 查看内存占用情况h 以最接近的单位去显示使用情况b 以Byte为单位显示内存使用情况。k 以KB为单位显示内存使用情况。m 以MB为单位显示内存使用情况。g 以GB为单位显示内存使用情况。o 不显示缓冲区调节列。s<间隔秒数> 持续观察内存使用状况。t 显示内存总和列。V 显示版本信息。...
2019-07-13 10:00:20
1291
转载 JDK8新特新-Stream()
一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。转载链接 :https://blog.cs...
2019-07-12 14:15:51
422
原创 基于netty的http服务器并整合springboot
概述:这是一个基于netty的http服务器其中整合了spring的相关配置 ,但是他只是在大体上实现了http的功能对于映射他的实现方法是一个类一个映射而不是mvc的一个类多个映射。-这是本人在git上找到的netty工程我在上面进行了比较详细的注解方便与新学的或者相对spring框架的注解配置有些更深入的理解。如果想看spring框架初始化中对注解做的一些匹配工作可以看链接:https...
2019-07-11 21:38:36
5126
原创 自定义注解的使用和对注解下的类方法调用
概述:注解开发对于java的web开发来说用的很少但是了解注解开发的原理有助我们更好的理解在框架中是如何实现注解与方法的执行示例定义注解package com.action.Annotion;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(R...
2019-07-09 23:55:13
1589
原创 JDK源码分析-Executor
在Executor中主要提供了对线程的创建 使调用者无需关心线程问题而只需要关注任务的引入问题减少耦合度。package java.util.concurrent;/** * An object that executes submitted {@link Runnable} tasks. This * interface provides a way of decoup...
2019-07-06 00:41:38
187
原创 netty源码分析-ChannelFuture
概述 对于netty中的channelfuture来说它主要是一个基于对java中future的一个升级 对于jdk中的future来说函数执行结果是通过get()方法进行获取的 。 然而jdk中future 的get()方法是有两种形式一种是非阻塞(在结果为计算完成时返回空)的直接获取返回值一种是通过阻塞的形式等待返回值。虽然在通过isdone方法可以获取方法是否执行完成但是...
2019-07-05 20:20:35
572
原创 netty源码分析-NioEventLoopGroup
/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance * w...
2019-07-05 10:31:24
140
原创 责任链模式
概述责任链模式:如果有多个对象都有机会处理请求,责任链可使请求的发送者和接收者解耦,请求沿着责任链传递,直到有一个对象处理了它为止示例首先定义一个抽象类用来做接口调用对象package com.kun.chainofresponsibility.chainms;/** * @author kun * @data 2019/4/1 20:10 */public abs...
2019-07-05 00:44:07
118
转载 Netty 中ChannelOption的各种属性作用总结
1. ChannelOption.SO_KEEPALIVEChanneloption.SO_KEEPALIVE参数对应于套接字选项中的SO_KEEPALIVE,该参数用于设置TCP连接,当设置该选项以后,连接会测试链接的状态,这个选项用于可能长时间没有数据交流的连接。当设置该选项以后,如果在两小时内没有数据的通信时,TCP会自动发送一个活动探测数据报文。2.ChannelOption.AL...
2019-07-04 20:37:32
1272
原创 基于jdk1.8 FutureTask源码初步分析
概述自jdk1.5之后 java提供了一个异步回调的类那就只FutureTask通过该类我们可以在多线程的环境下获得每个线程中函数执行之后的结果。分析首先我们从Thread函数开始分析/** * If this thread was constructed using a separate * <code>Runnable</code> run ob...
2019-07-03 21:11:14
196
原创 netty初步使用与了解
概述就我个人的感受来说netty是一个nio的封装框架,他能够很简洁的进行tcp udp协议的开发使用。所以对于netty的使用大部分是基于rpc框架的开发 比如duboo.。rpc 与webServicerpc简称远程方法调用 通过tcp udp websocket协议 进行数据的二进制传输和调用 与webService其实也可以称为rpc 但是最主要的不同是WebService是基...
2019-07-03 19:53:03
173
原创 spring事务
事务的四大特性1.原子性:执行一个事务中的多条sql语句要么全部成功要么全部失败2.一致性:执行一个事务其中设计到的数据总量需要保持不变3.隔离性:各个事务执行过程中是相互不可见的4.持久性:数据修改后会保存到硬盘中不会随着系统的崩溃或者停止造成数据丢失事务操作过程中可能会触发的错误操作1.脏读:同一条数据先被一个事务进行修改但是未提交该事务同时另一个事务也读取了这一条数据...
2019-07-03 13:19:46
403
原创 springmvc处理流程初步分析
对于springmvc来说主要分为 DispatcheServlet HandlerMapping HandlerAdapter ViewResolvr DispatcheServlet拦截请求HandlerMappingHandlerMapping实际上是一个接口他的方法只有一个那就是gethandler通过他的参数httpRequest可以看出该接口的实现类中...
2019-07-03 13:19:24
196
原创 io流
io流的储存所有文件在都是以字节的形式储存在硬盘中,在用户访问文件的时候,通过在文件中设置的编码格式从而展示出对应的字符。io流的分类A.根据处理数据类型的不同分为:字符流和字节流B.根据数据流向不同分为:输入流和输出流C.按功能分:节点流(一线的,离源最近的)和过滤流节点流:从特定的地方读写的流类过滤流:使用节点流作为输入或者输出,过滤流是使用一个已经存在...
2019-07-03 13:18:58
111
原创 nio
概述 nio故名思意为非阻塞型io但是在java中nio其实并非如此 在java中nio设计的模式为异步阻塞模型也叫reactor模型介绍 nio主要由三个部分组成selector, channel ,buffer. select 通过select方法阻塞监听channe的读写l事件 channel通过buffer将读取的信息写入buffer中去或者通过buffer中的...
2019-07-03 13:18:38
204
原创 nio零拷贝
概述nio的零拷贝并不是实际意义上的零拷贝而是指jvm由用户空间到内核空间实现的零拷贝。user space :用户空间Kernel space: 内核空间Hardware: 储存空间 可看作时硬盘下图为普通的io模型由图可见在普通io模型中会先从jvm中发送read()的本地方法之后用户空间模式转为内核空间模式之后由内核空间发起对硬盘数据的访问并复制到内核空间 之后内核空间将数据复...
2019-07-02 12:46:29
249
原创 策略模式
概述在策略模式中需要将一个对象的可变属性以接口的形式拆分出来之后通过引入接口实现类来设置该对象的成员方法从而实现插拔式构造示例以鸭子为例不同的鸭子声音 与能否飞行是不一样当然还有其它的这里就不多写了接下来为实现类接下设置一个抽象类引入该种类下的对象属性以及成员方法-----共有的属性为非静态方法不同的标识为抽象方法这样就可以在他的子类中强制重写该方法子类通过继承来获得父类...
2019-07-02 11:34:31
128
原创 装饰着模式
概述装饰者模式主要是为了增强原有的方法 在不修改原函数 且避免代码重复性的前提下创造的一种设计模式增强方法的几种方式1.修改原有的方法。弊端 :对于原有的调用可能会产生问题2.创建该类的子类,在子类的方法中重新实现一遍父类的方法并对该方法进行增强弊端: 代码复用性太差3. 装饰者模式实例被装饰者装饰者感受:与jdk代理的方式差不多...
2019-07-02 11:30:40
116
原创 观察者模式(消息订阅模式)
概述:观察者模式(有时又被称为发布(发布 ) - 订阅(订阅)模式,模型 - 视图(查看)模式,源 - 收听者(听众)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。实例被监听对象其中currenConditions时观察对象...
2019-07-02 11:20:46
444
原创 命令模式
概述命令模式简而言之就是以将命令当成对象,控制器通过调用命令对象来完成相应的功能从而达到解耦合的设计。实例首先设计你想要操作的实例这里面以radio为例然后设计通用的命令接口接下来设计命令对象我在这边设计的为打开和关闭最后一步则是控制器对象在该控制器对象中我们可以通过给控制器传入不同的命令对象从而实现了代码的复用。...
2019-07-02 11:17:11
131
原创 外观模式
概述外观模式与观察者模式在一定程度上有相通的地方那就是对于命令的封装 ,然而不同的是命令模式是对于单个命令的封装 而外观模式则是将所有命令封装到一个类中提供给外部接口访问实例以上为三个机器的实体类包括其中机器的操作函数接下来将这些实体在一个类中统一调度生成对应的函数对外开放...
2019-07-02 11:15:04
108
原创 适配器模式
概述适配器模式就是将两个或者多个具有相同点的对象通过实现同一个接口从而达到能够一个对象的函数能够匹配多个对象 减少开发成本和压力实例本实例以鸭子和火鸡作为范本 将火鸡通过鸭子的函数展示出来首先鸭子的接口火鸡接口对象最后继承鸭子接口...
2019-07-02 11:00:56
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人