自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spark的shuffle的write原理逻辑

1. shuffle 逻辑流程 2. shuffleDependency是什么 shuffleDependency是两个Stage中的连接属性。 shuffleDependency即是上游Stage的一个参数。有是下游Stage的一个属性。 3. shuffleDependency的Handler最优选择。 shuffleDependency在注册shuffleManager的时候会调用registerShuffle。 registerShuffle会选择..

2021-09-14 22:11:26 911

原创 redis理论

1.redis 的应用场景会话缓存消息队列(排行榜,计数)发布订阅,消息通知商品列表,评论列表redis数据类型String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)redis的持久化方式1. RDB(快照):每隔一段时间对数据进行快照存储。(会丢失最后一次的快照)2. AOF:持久化的每次记录对服务器写的操作。当服务器重启的时候会执行这些命令来恢复数据。 redis还会的文件进行后台重写。以至于AOF文件不会太大。(数据相对完整)3

2021-04-15 13:22:41 161

原创 深度redis

1.关系型数据库建表:必须给出schema类型:字节宽度存:倾向于行级存储2.数据库表很大,性能下降怎么办如果表有索引:增删改查变慢;查询速度1.1个或者少量的查询依然很快2.并发大的时候会受到硬盘带宽影响速度3.memcached和redis 的不同相同:都是key---value的形式不同:memcached没有类型的概念,redis有类型的区分4.为什么 Redis 中要使用 I/O 多路复用这种技术首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但

2021-04-15 13:22:24 168

原创 spring Boot启动流程

springBoot的启动流程1.执行注解1.@SpringBootconfiguration2.@componetScan3.@EnableAutoConfigruation2.执行静态方法SpringApplication.run会初始化springApplication对象,加载资源。比如:springContextInit和ApplicationListener3.执行springApplication对象的run方法。4.初始化Envionment,执行Listeners.envi

2021-04-15 13:21:58 886

原创 mysql调优

1. show profile (查看SQL语句的性能)1. show profile 查询近期执行的sql 语句(会返回近期执行的sql列表)2. show profile for query 2 (查看近期列表的第二条sql)all:显示所有性能信息 show profile all for query nblock io:显示块io操作的次数 show profile block io for query ncontext switches:显示上下文切换次数,被动和主动 show p

2021-04-14 10:12:36 106

原创 慢查询

Mysql 慢查询用法show global status; show status like 'Com_%'// 根据执行的sql语句(次数)Com_select:查询Com_update:修改次数Com_insert:插入次数Com_delete:删除的次数 // 此处是影响的行数(比如查询一次显示20行,那么行数增加20行)InnoDB_rows_read:执行select操作的次数 InnoDB_rows_updated:执行update的次数InnoDB_rows

2021-04-14 10:12:06 68

原创 mysql深度

Mysql高级mysql 分层连接层服务层引擎层存储层索引优化的优劣势优势:提高索引效率,降低IO成本降低数据排序成本,降低CPU的消耗劣势索引也要占用空间索引会降低更新表的速度Mysql 慢查询能干什么:表的读取顺序id相同,执行顺序由上而下id不同,id的序号会递增,id的值越大越先被执行。id相同不同,同时存在。数据读取操作的操作类型simple(简单查询)primary(包含任何的子查询,的最外层叫做primary)subquery

2021-04-14 10:11:35 287

原创 mysql面试问题

1. 数据库事务的四个特性及含义(ACID)原子性,一致性,隔离性,持久性1、原子性:事务被认为不可分的一个工作单元,要么全部正常执行,要么全部不执行。2、一致性:事务操作对数据库总是从一种一致性的状态转换成另外一种一致性状态。3、隔离性:一个事务的操作结果在内部一致,可见,而对除自己以外的事务是不可见的。4、永久性:事务在未提交前数据一般情况下可以回滚恢复数据,一旦提交(commit)数据的改变则变成永久(当然用update肯定还能修改)。ps:MYSAM 引擎的数据库不支持事务,所

2021-04-14 10:11:04 75

原创 Mybatis解析

Mybatis 解析1.创建SqlSessionFactory第一步:解析Configuration.xml,讲xml配置文件转化为流的形式,(或者其他形式,主要是满足SqlSessionFactoryBuilder().build())第二步:SqlSessionFactoryBuilder().build()来创建SqlSessionFactory从而的到SqlSession(可以和数据库沟通,Mybatis最总要的部分)SqlSession的创建过程:SqlSessionFactoryBu

2021-04-14 10:10:35 173 1

原创 线程池

ThreadPoolExecutor定义了七大核心属性corePoolSize(int):核心线程数量。默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到任务队列当中。线程池将长期保证这些线程处于存活状态,即使线程已经处于闲置状态。除非配置了allowCoreThreadTimeOut=true,核心线程数的线程也将不再保证长期存活于线程池内,在空闲时间超过keepAliveTime后被销

2021-04-14 10:09:31 942

原创 juc

JUC提供的一些实现:Atomic : AtomicInteger  原子操作类Locks : Lock, Condition, ReadWriteLock  可重入读写锁Collections : Queue, ConcurrentMap 并发集合Executer : Future, Callable, Executor 线程执行池,异步Future等Tools : CountDownLatch, CyclicBarrier, Semaphore 减数器,等待器,信号量我个

2021-04-14 10:08:28 80

原创 concurrentHashMap

concurrentmap1.concurrentHashmap是设计非阻塞的,在更新的时候会锁住局部部分数据。但不会把整个表都锁住。同步读取操作完全是非阻塞的。在保证合理同步的前提下效率很高。坏处不能保证反应最近的更新。例如线程A调用putAll大量写入数据,期间线程B调用get,则只能get到目前为止顺利插入的数据。2.JDK1.8版本来看ConcurrentHashMap的数据结构已经趋近于hashmap,相对而言concurrentHashmap只是增加了同步的操作来控制并发。JDK1.7 使

2021-04-14 10:07:48 514

原创 CAS

cascas是检查并替换。原理: 两个线程同时访问主内存,这时主内存的共享变量是3,线程1拿取到3,但是这时开始GC,线程1挂起。这时线程2到来,线程二也在主内存中拿去到3,并对主内存的3进行修改,变成4。线程1这时结束挂起。再来主内存替换时,发现原值已经被替换。那么他会从头再来一次,拿取到4,进行操作。直到他拿到的值,在替换的时候和主内存的值相同时,才进行替换。只就是CAS原理保证原子性1.cas保证原子性,但是不能解决ABA的问题2.Synchorized保证原子性: java还提供了lock

2021-04-14 10:07:20 202 2

原创 redis深度理论

1.关系型数据库建表:必须给出schema类型:字节宽度存:倾向于行级存储2.数据库表很大,性能下降怎么办如果表有索引:增删改查变慢;查询速度1.1个或者少量的查询依然很快2.并发大的时候会受到硬盘带宽影响速度3.memcached和redis 的不同相同:都是key---value的形式不同:memcached没有类型的概念,redis有类型的区分4.为什么 Redis 中要使用 I/O 多路复用这种技术首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但

2020-12-10 15:29:26 154

原创 redis 的简单理论

1.redis 的应用场景会话缓存消息队列(排行榜,计数)发布订阅,消息通知商品列表,评论列表redis数据类型String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)redis的持久化方式1. RDB(快照):每隔一段时间对数据进行快照存储。(会丢失最后一次的快照)2. AOF:持久化的每次记录对服务器写的操作。当服务器重启的时候会执行这些命令来恢复数据。 redis还会的文件进行后台重写。以至于AOF文件不会太大。(数据相对完整)3

2020-12-10 15:28:42 93

转载 线上排查故障

CPU一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁 gc 以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用 jstack 来分析对应的堆栈情况。使用 jstack 分析 CPU 问题我们先用 ps 命令找到对应进程的 pid(如果你有好几个目标进程,可以先用 top 看一下哪个占用比较高)。接着用top -H -p pid来找到 CPU 使用率比较高的一些线程然后将占用最高的 pid 转换为 16

2020-06-02 08:57:36 172

原创 Spring IOC源码流程图

2020-04-30 14:25:05 379

原创 什么是Http协议

什么是Http协议http协议是建立在客户端和服务器之间的一个协议。客户端和服务器端需要数据的传输。而传输的时候,需要按照我们制定规则或者协议去传输数据。Http协议建立在TCP/ip的基础上的一个网络协议。HTTP协议属于网络七层结构最上层(应用层)的协议Http协议是一个无状态的协议(不会记录访问时的信息)Http是一个客户端和服务器端请求和应答的一个标准(TCP).客户端是终端用...

2019-12-16 09:21:16 847

转载 适配器、命令、外观模式

外观模式外观模式其实大家都不陌生,平时在写代码的时候多多少少都用到过。所谓外观模式,就是将常用的复杂的操作(复杂的接口序列)简化包装,暴露出一个新的接口,是非常自然常用的思想,个人以为几乎都不用将它当成一种模式看待,近似一种本能的行为。程序猿最大的美德不就是懒惰么?定义提供了一个统一的接口,用来访问子系统中的一群接口序列,外观定义了一个高层接口,让子系统更容易使用。实现可以为原有类添加新...

2019-10-06 10:11:59 169

转载 关于零拷贝的一些理解

关于零拷贝的一些理解零拷贝"零拷贝"中的"拷贝"是操作系统在I/O操作中,将数据从一个内存区域复制到另外一个内存区域. 而"零"并不是指0次复制, 更多的是指在用户态和内核态之前的复制是0次.CPU COPY通过计算机的组成原理我们知道, 内存的读写操作是需要CPU的协调数据总线,地址总线和控制总线来完成的因此在"拷贝"发生的时候,往往需要CPU暂停现有的处理逻辑,来协助内存的读写.这种...

2019-08-07 15:59:43 177

转载 并发资源控制

1. 控制资源并发访问–SemaphoreSemaphore可以理解为信号量,用于控制资源能够被并发访问的线程数量,以保证多个线程能够合理的使用特定资源。Semaphore就相当于一个许可证,线程需要先通过acquire方法获取该许可证,该线程才能继续往下执行,否则只能在该方法出阻塞等待。当执行完业务功能后,需要通过release()方法将许可证归还,以便其他线程能够获得许可证继续执行。Sem...

2019-06-17 11:44:57 407

转载 内存模型

转载:https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485068&idx=1&sn=c37267fe59978dbfcd6a9a54eee1c502&scene=21#wechat_redirect

2019-05-18 14:59:39 75

原创 抽象工厂模式

在这里插入图片描述

2019-05-16 14:17:48 132

原创 类加载

类加载:加载: 根据类的全类名查找到类,并加载成二进制字节流,加载到JVM中区验证:校验加载的类文件是不是有效的1.校验class文件格式2.检查包含了final的类型是否有子类。类中final方式是否有被子类重写,确保 子类和父类的兼容。准备: 给类变量,静态变量分配内存,并给基础类型赋值,解析: 常量池中的类,接口,方法,字段符号引用,并将其替代为直接引用的过程.初始化...

2019-05-16 10:17:59 58

原创 java 获取注解上的值

查看字段上的注解 : Foo2Annotation annotation = Foo.class.getDeclaredField("id" //注解字段).getAnnotation(Foo2Annotation.class // 注解类名); 查看方法上的注解 : FooAnnotation annotation = Foo.class.getAnnotation(Fo...

2019-05-10 17:40:07 1949

原创 程序计数器(PC)和对象创建

1. 程序计数器:1. 是什么 : 是一块较小的内存,可以看成字节码行号指示器。2. 干什么 : 通过改变计数器的值来获取下一条需要执行的字节码。为每个线程都分配一个程序计数器,因此,程序计数器的内存空间是线程私有的(java是支持多线程的当CPU执行A线程的时候就会挂起B线程,执行完B线程,在执行A线程。CPU不会记住A线程执行到那个位置。他只会埋头苦干,而时程序计数器来记录当前线程执行的字...

2019-04-29 15:57:28 1286

原创 synchronized和volatile和happens-before

1. volatile可见性java编程语音允许线程访问共享变量,为了确保共享变量的准确性和一致,其他线程能够立即看得到修改的值。执行原理: volatile保证了变量的可见性。被volatile修饰的变量。标志着线程的本地内存无效。当一个线程修改了变量之后会立刻更新到主内存中,其他线程读取共享变量时,会直接从主内存中读取。原子性执行一个操作或多个操作,要么全部执行并且执行过程不会被任何...

2019-04-19 14:15:35 519 1

原创 spring依赖注入

spring依赖注入注册Bean@Configuration //告诉spring这是一个注册类@Bean 给容器中注册一个bean,类型为返回值类型,id默认是用方法名作为id;可以指定value设置bean名称;@ComponentScan //自动扫描,value指定扫描的路径,@Scope //限制bean的作用域范围singleton单实例,启动是创建容器proto...

2019-04-11 13:50:20 124

转载 Effective Java 阅读 1.静态工厂方法代替构造行数

Effective Java 阅读 1.静态工厂方法代替构造行数静态工厂方法代替构造行数- 第一优势在于,它们有名字 例如: ```Date date0 = new Date();Date date1 = new Date(0L);Date date2 = new Date("0");Date date3 = new Date(1,2,1); ``` 他们的构造函数相同,但是需...

2019-04-02 17:52:41 121

原创 MySQL基础面试

1. 数据库事务的四个特性及含义(ACID)原子性,一致性,隔离性,持久性1、原子性:事务被认为不可分的一个工作单元,要么全部正常执行,要么全部不执行。2、一致性:事务操作对数据库总是从一种一致性的状态转换成另外一种一致性状态。3、隔离性:一个事务的操作结果在内部一致,可见,而对除自己以外的事务是不可见的。4、永久性:事务在未提交前数据一般情况下可以回滚恢复数据,一旦提交(com...

2019-04-02 15:35:04 94

转载 全局异常处理

通常一个web程序在运行过程中,由于用户的操作不当,或者程序的bug,有大量需要处理的异常。其中有些异常是需要暴露给用户的,比如登陆超时,权限不足等等。可以通过弹出提示信息的方式告诉用户出了什么错误。而这就表示在程序中需要一个机制,去处理这些异常,将程序的异常转换为用户可读的异常。而且最重要的,是要将这个机制统一,提供统一的异常处理。因为我设计这个结构的主要目的是为了简化代码。在探寻spring的...

2018-06-19 20:50:40 1307

原创 java中static了解

2018-04-14 14:37:59 72

空空如也

空空如也

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

TA关注的人

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