自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Franco的博客

学习,整理,积累,站在巨人的肩膀上厚积薄发

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 【SpringMVC】DispatcherServlet重要组件之一FlashMapManager

2019-03-29 17:58:04 658

原创 【SpringMVC】DispatcherServlet重要组件之一MultipartResolver

public interface MultipartResolver { boolean isMultipart(HttpServletRequest var1); MultipartHttpServletRequest resolveMultipart(HttpServletRequest var1) throws MultipartException; voi...

2019-03-29 17:42:10 313

原创 【SpringMVC】DispatcherServlet重要组件之一LocaleResolver

public interface LocaleResolver { Locale resolveLocale(HttpServletRequest request); void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale);}未完待续。。。...

2019-03-29 17:37:22 288

原创 【SpringMVC】DispatcherServlet重要组件之一RequestToViewNameTranslator

ViewResolver是根据ViewName查找VIew,但有的Handler处理完后并没有设置View也没有ViewName,这时需要从request获取viewName,RequestToViewNameTranslator就是做这个事情。ublic interface RequestToViewNameTranslator { String getViewName(HttpSer...

2019-03-29 16:42:57 274

原创 【SpringMVC】DispatcherServlet重要组件之一ViewResolver

ViewResolver用来将String类型的视图和Locale解析为View类型的视图。public interface ViewResolver { View resolveViewName(String viewName, Locale locale) throws Exception;}举例:public class BeanNameViewResolve...

2019-03-29 16:37:11 297

原创 【SpringMVC】DispatcherServlet重要组件之一HandlerExceptionResolver

HandlerExceptionResolver作用是根据异常设置ModelAndView,之后再交给render方法进行渲染,render只负责渲染页面,具体ModelAndView是怎么来的render不关心。public interface HandlerExceptionResolver { ModelAndView resolveException( HttpServlet...

2019-03-29 16:19:34 194

原创 【SpringMVC】DispatcherServlet重要组件之一HandlerAdapter

作用使用处理器干活的。共三个方法:package org.springframework.web.servlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public interface HandlerAdapter { boolean...

2019-03-29 15:51:07 399

原创 【SpringMVC】DispatcherServlet重要组件之一HandlerMapping

概括:作用是根据request找到相应处理器Handler和Interceptors,HandlerMapping接口里只有一个方法:HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;我们也可以自己定义一个HandlerMapping,实现方法。protected Hand...

2019-03-29 15:35:07 922

原创 【Redis】懒惰删除

一直以来我们认为 Redis 是单线程的,单线程为 Redis 带来了代码的简洁性和丰富多样的数据结构。不过Redis内部实际上并不是只有一个主线程,它还有几个异步线程专门用来处理一些耗时的操作。Redis 为什么要懒惰删除(lazy free)?删除指令del会直接释放对象的内存,大部分情况下,这个指令非常快,没有明显延迟。不过如果删除的 key 是一个非常大的对象,比如一个包含了千...

2019-03-29 14:36:27 1920

原创 【Redis】LRU

当 Redis 内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换 (swap)。交换会让 Redis 的性能急剧下降,对于访问量比较频繁的 Redis 来说,这样龟速的存取效率基本上等于不可用。在生产环境中我们是不允许 Redis 出现交换行为的,为了限制最大使用内存,Redis 提供了配置参数maxmemory来限制内存超出期望大小。当实际内存超出maxmemory时...

2019-03-28 11:00:36 466

原创 【Redis】过期策略

过期的 key 集合redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定时遍历这个字典来删除到期的 key。除了定时遍历之外,它还会使用惰性策略来删除过期的 key,所谓惰性策略就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除。定时删除是集中处理,惰性删除是零散处理。定时扫描策略Redis 默认会每秒进行十...

2019-03-27 12:14:06 169

原创 【Mysql】InnoDB和Memory

2019-03-25 11:27:32 507

原创 mysql项目中常用优化

1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。 key_len列,索引长度。 r...

2019-03-22 10:38:52 262

原创 【SpringMVC】Tomcat

Tomcat的顶层结构BootStrap启动过程Catalina启动过程Server启动过程Service启动过程Tomcat生命周期管理Lifecycle接口LifecycleBase...

2019-03-21 18:21:42 410

原创 【SpringMVC】Servlet

init:初始化方法,容器启动时呗容器调用(也可能Servlet第一次用到时才被调用);只会被调用一次getServletConfig:获取servletConfig;service:具体处理一个请求;getServletInfo:获取一些Servlet相关信息destory:Servlet销毁,只会调用一次;GenericServlet是Servlet的默认实现:...

2019-03-21 17:30:07 191

原创 Netty&mq(带答案,不断更新)

IO会阻塞吗?readLine是不是阻塞的NIO是什么?适用于何种场景?BIO、NIO、AIO的概念怎么保证消息顺序消费

2019-03-21 15:08:27 892

原创 【Mysql】临时表

2019-03-21 12:15:08 146

原创 [Netty]reactor线程的面纱(三)

作者:简书闪电侠链接:https://www.jianshu.com/p/58fad8e42379上两篇博文(netty源码分析之揭开reactor线程的面纱(一),netty源码分析之揭开reactor线程的面纱(二))已经描述了netty的reactor线程前两个步骤所处理的工作,在这里,我们用这张图片来回顾一下:reactor线程三部曲简单总结一下reactor线程三部...

2019-03-20 18:39:48 280

原创 [Netty]reactor线程的面纱(二)

作者:简书闪电侠链接:https://www.jianshu.com/p/467a9b41833e如果你对netty的reactor线程不了解,建议先看下上一篇文章netty源码分析之揭开reactor线程的面纱(一),这里再把reactor中的三个步骤的图贴一下reactor线程我们已经了解到netty reactor线程的第一步是轮询出注册在selector上面的IO事件(s...

2019-03-20 18:38:15 283

原创 [Netty]reactor线程的面纱(一)

作者:简书闪电侠链接:https://www.jianshu.com/p/0d0eece6d467netty最核心的就是reactor线程,对应项目中使用广泛的NioEventLoop,那么NioEventLoop里面到底在干些什么事?netty是如何保证事件循环的高效轮询和任务的及时执行?又是如何来优雅地fix掉jdk的nio bug?带着这些疑问,本篇文章将庖丁解牛,带你逐步了解nett...

2019-03-20 18:36:43 402

原创 [Netty]nio线程个数以及线程命名规则

作者:简书闪电侠链接:https://www.jianshu.com/p/512e983eedf5概述netty是一个以高性能著称的网络通信框架,许多开源项目都使用了netty作为底层网络通信框架,如avro,dubbo,nats;本文将从源码的角度讲述netty在确定线程个数方面如何保证应用程序性能最优,源码基于netty-4.1.6.Final线程个数在何时达到最优我们知道,...

2019-03-20 18:34:08 4441

原创 【Mysql】join使用

2019-03-19 10:39:47 139

原创 【Redis】紧凑列表

Redis 5.0 又引入了一个新的数据结构 listpack,它是对 ziplist 结构的改进,在存储空间上会更加节省,而且结构上也比 ziplist 要精简。它的整体形式和 ziplist 还是比较接近的,如果你认真阅读了 ziplist 的内部结构分析,那么 listpack 也是比较容易理解的。struct listpack<T> { int32 total_b...

2019-03-18 12:23:52 783

原创 [Netty]netty源码分析之服务端启动全解析

作者:简书闪电侠链接:https://www.jianshu.com/p/c5068caab217来源:简书backgroundnetty 是一个异步事件驱动的网络通信层框架,其官方文档的解释为Netty is a NIO client server framework which enables quick and easy development of network app...

2019-03-15 18:13:18 257

原创 [Netty]服务端启动流程介绍

作者:简书闪电侠链接:https://www.jianshu.com/p/ec3ebb396943来源:简书最小化服务端启动demo我们先来看一下最小化服务端启动demo,我们直接来上代码,然后逐个解释NettyServer.javapublic class NettyServer { public static void main(String[] args) ...

2019-03-15 18:10:50 323

原创 [Netty]Netty是什么?

作者:简书闪电侠链接:https://www.jianshu.com/p/a4e03835921a来源:简书在开始了解Netty是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现?IO编程我们简化下场景:客户端每隔两秒发送一个带有时间戳的"hello world"给服务端,服务端收到之后打印。为了方便演示,下面例子中,...

2019-03-15 18:08:33 289

原创 【Redis】跳跃列表

Redis 的 zset 是一个复合结构,一方面它需要一个 hash 结构来存储 value 和 score 的对应关系,另一方面需要提供按照 score 来排序的功能,还需要能够指定 score 的范围来获取 value 列表的功能,这就需要另外一个结构「跳跃列表」。zset 的内部实现是一个 hash 字典加一个跳跃列表 (skiplist)。hash 结构在讲字典结...

2019-03-15 11:43:34 1004 1

原创 【Redis】快速列表

Redis 早期版本存储 list 列表数据结构使用的是压缩列表 ziplist 和普通的双向链表 linkedlist,也就是元素少时用 ziplist,元素多时用 linkedlist。// 链表的节点struct listNode<T> { listNode* prev; listNode* next; T value;}// 链表struc...

2019-03-14 11:44:57 398

原创 【Redis】压缩列表

Redis 为了节约内存空间使用,zset 和 hash 容器对象在元素个数较少的时候,采用压缩列表 (ziplist) 进行存储。压缩列表是一块连续的内存空间,元素之间紧挨着存储,没有任何冗余空隙。struct ziplist<T> { int32 zlbytes; // 整个压缩列表占用字节数 int32 zltail_offset; // 最后一个元素距离压...

2019-03-13 11:30:00 906

原创 【Redis】事务

Redis 事务的基本使用每个事务的操作都有 begin、commit 和 rollback,begin 指示事务的开始,commit 指示事务的提交,rollback 指示事务的回滚。它大致的形式如下。begin();try { command1(); command2(); .... commit();} catch(Exception e) {...

2019-03-13 10:55:49 159

原创 【Redis】字符串内部结构

Redis 的字符串叫着「SDS」,也就是Simple Dynamic String。它的结构是一个带长度信息的字节数组。struct SDS<T> { T capacity; // 数组容量 T len; // 数组长度 byte flags; // 特殊标识位,不理睬它 byte[] content; // 数组内容}content里面存储了真正的字...

2019-03-11 11:15:32 423

原创 【Redis】持久化

Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis 的持久化机制有两种,第一种是快照,第二种是 AOF 日志。快照是一次全量备份,AOF 日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本。AO...

2019-03-11 10:56:36 122

原创 微服务RPC原理【深度好文】

转自:https://mp.weixin.qq.com/s/y3l9VuIeXxSI0tLG784lqA上一篇《微服务架构,多“微”才合适?》聊了微服务的粒度。微服务离不开RPC框架,RPC框架的原理、实践及细节,是本篇要分享的内容。服务化有什么好处?服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦,如下图所示: 服务A:欧洲团队...

2019-03-08 16:00:15 3053

原创 【Redis】通信协议

RESP(Redis Serialization Protocol)RESP 是 Redis 序列化协议的简写。它是一种直观的文本协议,优势在于实现异常简单,解析性能极好。Redis 协议将传输的结构数据分为 5 种最小单元类型,单元结束时统一加上回车换行符号\r\n。单行字符串 以+符号开头。 多行字符串 以$符号开头,后跟字符串长度。 整数值 以:符号开头,后跟整数...

2019-03-08 14:31:11 212

原创 【Redis】线程IO模型

Redis 是个单线程程序!这点必须铭记。也许你会怀疑高并发的 Redis 中间件怎么可能是单线程。很抱歉,它就是单线程,你的怀疑暴露了你基础知识的不足。莫要瞧不起单线程,除了 Redis 之外,Node.js 也是单线程,Nginx 也是单线程,但是它们都是服务器高性能的典范。Redis 单线程为什么还能这么快?因为它所有的数据都在内存中,所有的运算都是内存级别的运算。正因为 Red...

2019-03-08 14:24:26 183

原创 Token、Cookie、Session

转自:一只躲在角落里的小刺猬文章链接:http://jianshu.com/p/8ef0c5a551d3在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。CookieCookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种...

2019-03-07 17:12:26 175

原创 【Mysql】怎么保证高可用

几种造成主从延迟的情况:1.主库DML语句并发大,从库qps高2.从库服务器配置差或者一台服务器上几台从库(资源竞争激烈,特别是io)3.主库和从库的参数配置不一样4.大事务(DDL,我觉得DDL也相当于一个大事务)5.从库上在进行备份操作6.表上无主键的情况(主库利用索引更改数据,备库回放只能用全表扫描,这种情况可以调整slave_rows_search_algorithms参数适当...

2019-03-06 11:15:02 248

原创 【Mysql】怎么保证主备一致

Mysql主备的基本原理binLog的三种格式statement,row,mixed

2019-03-05 11:14:34 269

原创 【Mysql】索引选择

选择普通索引还是唯一索引?对于查询过程来说:a、普通索引,查到满足条件的第一个记录后,继续查找下一个记录,直到第一个不满足条件的记录b、唯一索引,由于索引唯一性,查到第一个满足条件的记录后,停止检索但是,两者的性能差距微乎其微。因为InnoDB根据数据页来读写的。对于更新过程来说:概念:change buffer当需要更新一个数据页,如果数据页在内存中就直接更新,如果不在内存中,在不...

2019-03-04 15:55:15 847

原创 【Redis】简单限流

如何使用 Redis 来实现简单限流策略?首先我们来看一个常见 的简单的限流策略。系统要限定用户的某个行为在指定的时间里只能允许发生 N 次,如何使用 Redis 的数据结构来实现这个限流的功能?解决方案这个限流需求中存在一个滑动时间窗口,想想 zset 数据结构的 score 值,是不是可以通过 score 来圈出这个时间窗口来。而且我们只需要保留这个时间窗口,窗口之外的数据都可以砍...

2019-03-04 14:50:36 377

Tab切换形势大全及FragmentPagerAdapter保存刷新数据实现

5种Tab实现总结,FragmentPagerAdapter数据保存完美解决

2016-01-14

空空如也

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

TA关注的人

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