自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 复习-https相关

请求url后续过程至于为什么使用UDP,请参看为什么域名根服务器只能有13台呢? - 郭无心的回答dns解析及其迭代过程:https://www.cnblogs.com/gopark/p/8430916.htmldns解析迭代和递归:https://blog.csdn.net/wytheonly/article/details/37925067强制缓存和协商缓存:https://j...

2019-08-18 09:49:27 297

原创 netty学习心得

.

2019-08-07 19:56:57 392

原创 rabbitMQ实战

rabbitmq整合springAMQP实战

2019-07-06 19:21:15 313

原创 TTL以及死信队列

TTL是time to live的缩写 也就是生存时间rabbitmq支 持消息过期时间,在消息发送时候可以进行指定rabbitmq支持队列过期时间,从消息入队列开始计算,只要超过了队列的超时设置,那么消息会自动消除死信队列:DXL利用DXL,当消息在一个队列中变成死信之后,它能被重新publish到另一个exchange,这个exchange就是DLX...

2019-07-06 16:35:19 368

原创 消费端ACK与重回队列

消费端的手工ACK和NACK(确认·处理失败)消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿(如果多次nack,我们可以先发送ack 然后日志记录 后面坐人工补偿)——如果由于服务器宕机等严重问题 那我们需要手工进行ack保障消费成功消费端的重回队列消费端重回队列是为了对没有处理成功的消息,把消息重新会送给broker一般我们实际...

2019-07-06 14:29:16 395

原创 消费端限流

什么是消费端的限流假设一个场景,首先我们rabbitmq服务器上面有上万条没有处理的消息,我们随便打开一个消费者客户端,会出现下面情况:巨量消息瞬间全部推送过来,但是我们当个客户端没有办法进行处理这么多的数据,可能会造成服务器宕机。rabbitmq提供一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或者channel设置qos...

2019-07-06 10:34:10 272

原创 消费端自定义监听

我们一般就是在代码中编写while循环,进行consumer.nextDelivery方法进行获取吓一跳消息,然后进行消息处理。但是我们使用自定义的consumer更加方便,解耦行更加强,也是实际工作中最常见的使用方法。主要是继承defaultconsumer类,然后实现 handledelivery方法。delivertype就是ACK,而且可以不断自己增加的。...

2019-07-02 15:15:05 237

原创 confirm 确认消息 return 返回消息

//1.创建一个ConnectionFactory,并进行配置。ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory .setHost("192.168.11.76");connectionFactory .setPort(5672);//默认端口号connect...

2019-06-30 15:40:09 779

原创 幂等性

幂等性:可能你对一件事情进行操作,这个操作可能要执行多次,那么最终操作的结果都是相同的。好像执行一条sql语句,执行多次之后结果都是一致的。我们可以借鉴数据库的乐观锁的机制:比如我们要执行更新一条库存的sql语句update T_REPS set count = count-1,verson = verson +1 where verson = 1就是一开始读取时候,先读取versio...

2019-06-29 21:57:13 292

原创 消息如何保证100%的投递成功

什么是生产端的可靠性投递保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(broke)确认应答 完善的消息补偿机制消息落库,对消息状态进行打标记消息的延迟投递,做二次确认,回调检查Q:事务?保证数据源一致 tcc 用补偿机制设定一个time lock 分布式定时任务 (可能出现重复抓取任务) 保证统一个时间点 只有一个任务执行定时任务会造成...

2019-06-29 21:34:12 513 6

原创 rabbitmq进阶二

消息如何保障100%的投递成功 幂等性的概念详细介绍 在海量订单产生的业务高峰期,如何避免消息的重复消费问题 confirm 确认消息 return 返回消息自定义消费者 消息的ACK与重新回队列 (就是消息签收问题) 消息限流(mq服务消息堆积,这个时候要通过消息限流,控制消费端一次性接收消息的数量。保证服务的稳定性有可能数据一次性过来很多 但是消费端的消费能力不强,就会导致服...

2019-06-29 19:46:09 201

转载 根据CPU核心数确定线程池并发线程数

在Java中,通过下面的代码,我们可以很容易地获取到系统可用的处理器核心数目: 1 Runtime.getRuntime().availableProcessors(); 基本原则是:应用程序的最小线程数应该等于可用的处理器核数。具体场景又分为以下两种情况:(1)如果所有的任务都是计算密集型的,则创建处理器可用核心数那么多个线程就可以了。在这种情况下...

2019-06-02 12:28:37 2294

原创 五月 牛客网Java

5.23从现在开始每天在牛客网上面刷关于Java相关的知识 准备好秋招:这是五月份的 加油

2019-05-23 20:08:00 172

原创 Java版本KMP

Java版本KMPhttps://leetcode-cn.com/problems/implement-strstr/import java.util.Scanner;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;public class Main { public in...

2019-05-22 20:20:36 199

原创 rabbitMQ入门

rabbitMQ整体架构模型是什么样子的 rabbitMQ消息是如何流转的 rabbitMQ安装与使用 命令行与管控台 rabbitMQ消息生产与消费(Java) rabbitMQ交换机详解 rabbitMQ队列 绑定 虚拟主机 消息JMXrabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,rabbitMQ使用的就是Erlang语言来编...

2019-05-14 16:09:33 403

原创 Redis之集群

节点,槽指派,命令执行,重新分片,转向,故障转移,消息节点一个redis集群中通常有多个节点组成,刚刚开始的时候每一个节点都是相互独立的,它们都是处于一个只包含自己的集合之中,然后各个节点之间需要通讯,所以用cluster meet <ip> <port> 进行握手,握手成功后,node节点集群中的所有节点都会创建相对应的节点。启动服务器时候通过c...

2019-05-08 22:10:48 153

转载 Redis之哨兵

主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实...

2019-05-08 09:55:05 196

原创 Redis之复制(主从一致)

通过命令slaveof命令加ip 设定注定复制的主服务器旧版复制只要是由两个部分组成的同步:让从服务器的数据库状态更新至主服务器数据库状态 命令传播:将对主服务器的写改操作,传送给从服务器,使得主从服务器状态重写一致同步:从服务器向主服务器发送SYNC命令 主服务器创建子进程进行RDB文件创建与写入,与此同时将该时刻接收的写改操作压入到缓冲区中,RDB文件完成后。发送RDB文...

2019-05-08 09:44:39 299

原创 Redis之服务器

命令请求过程1.发送命令请求(在客户端中将命令转换为协议格式),然后通过链接到服务器的套接字,将协议格式的命令发送给服务器2.读取命令请求读取套接字中的协议格式的命令,然后放在客户端状态的输入缓冲区中。 对输入缓冲区中命令请求进行解析,然后更新命令参数以及命令个数。 调用命令执行器,执行指定命令的解析3.命令执行器执行:首先根据argv[0]参数,在命令表格中查找指定的命令,然后...

2019-05-08 08:53:44 166

原创 redis之redis客户端

redis服务器是典型的一对多服务器程序一个服务器处理多个客户端使用I/O多路复用技术实现的文件事件处理器,redis服务器采用单线程单进程处理命令请求,并与多个客户端进行网络通信。1.redisserver有list* clients保存客户端状态套接字描述 fd=-1或者大于-1 ...

2019-05-07 21:56:44 448

原创 redis之RDB持久化以及AOF持久化

redis是属于内存数据库,所有数据保存在内存中服务器进程推出后则数据库状态清除数据库状态:非空数据库和键值对手动执行RDB保存 根据服务器配置选项定期执行RDB保存 生成一个经过压缩生成的二进制文件,将某一时刻数据库状态保存在RDB文件中,存储在磁盘上 加载 生成RDB有两个命令可以生成RDB文件,一个是SAVE,另外一个是BGSAVE区...

2019-05-06 18:06:40 172

原创 redis之单机数据库的实现

redis只要是由服务器和客户端组成的。每一个服务器端都会有一个redisServer结构struct redisServer{redisDb *db;//一个数组,保存服务器所有的数据库int sum;//数据库个数,默认是16个}每一个客户端都会有一个redisclient结构体redisclient{redisDb *db;//记录当前数据库,通过server...

2019-05-06 16:01:01 214

原创 对象

Q:使用对象的好处redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。 可以针对不同的使用场景,为对象实现多种数据结构。从而优化对象在不同场景下的使用效率。redis使用引用技术,来判断判断该对象是否需要回收。 然后就是通过实现对象共享。对象的种类 字符床对象 列表对象 哈希对象 集合对象 有...

2019-05-06 13:30:41 230

原创 redis之整数集合 压缩列表的实现

整数集合整数集合是redis用于保存整数值的集合抽象数据结构,并且保证集合中不会出现重复的整数typedf struct intset{uint32_t encoding;//编码方式uint32_t length;//集合包含的元素个数int8_t contents[];//保存元素的数组}intset;contents数组是整数集合的底层实现,整数集合的每一...

2019-05-06 12:16:09 331

原创 redis之链表与字典

每一个链表节点使用一个adlist.h/listNode结构表示:typedef struct listNode{//前置节点structlistNode *prev;//后置节点structlistNode *next;//节点值void *value;};链表typedef struct list{//表头节点listNode *head;...

2019-05-04 17:11:53 219

原创 简单动态字符串

主要的数据结构是:SDS(动态字符串) 双端链表 字典 压缩字典 整数集合 跳跃表set msg “hello world”键值对的键是一个字符串对象,对象底层的实现是一个保存着字符串“msg”的SDS键值对的值是一个字符串对象,底层实现也是SDS所以说SDS(动态字符串)是其他对象实现的基础。每个sds.h/sdshdr结构都表示一个SDS值struct sd...

2019-05-04 10:44:34 464

原创 redis数据结构与对象

简单动态字符串链表字典跳跃表整数集合压缩列表对象

2019-05-04 10:05:58 162

转载 代理

在Java中代理有三种静态代理和jdk动态代理都是要求目标类一定要实现公共接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候就可以使用以目标对象子类的方式类实现代理,这种方法就叫做:Cglib代理。jdk动态代理是通过重写invocationhandle,首先传入目标对象的实现对象target,然后就是重写invocationhandle的invoke方法,来...

2019-05-03 14:43:06 223

原创 AOP(spring中)

Q为什么需要切面A:事务模块不仅仅是为特定业务提供服务,还要处理系统辅组功能(日志记录,安全管理)。这时候我们就需要aop,将核心代码以及次要代码分隔开。这样做有两个好处:1.关注点代码都集中于一处,而不是分布在多代码,方便管理2.其次,服务模块更加简洁,因为他们只用关注功能逻辑的代码。以后需要添加辅助功能时候,也不会干涉到原本的类。 然后就会在运行期间,根据切入点动态织入目标对象中...

2019-05-03 10:45:05 260

原创 阿里面经记录之二

作者:小、麦链接:https://www.nowcoder.com/discuss/186196来源:牛客网1. volatile的底层如何实现,怎么就能保住可见性了?2. 三个线程如何实现交替打印ABC3. 线程池有哪些创建方式和安全性问题4. 有哪些线程池的类型5. 线程池中LinkedBlockingQueue满了的话,线程会怎么样6. 线程池的底层原理和实现方法7....

2019-05-02 20:59:44 342

转载 springmvc与前端数据交互实例

springmvc与前端数据交互实例Q:为什么使用逻辑视图A:将控制器中请求处理的逻辑和视图中的渲染实现解耦合是springmvc的一大特征。控制器方法都是没有直接产生浏览器中渲染所需的HTML。这些方法只是将一些数据填充到模型中,然后通过模型传递给一个用来渲染的视图(逻辑视图),然后将逻辑视图名字以及local对象传入视图解析器中,返回一个view对象(view接口接收模...

2019-05-01 14:39:55 577

转载 【Spring】浅谈ContextLoaderListener及其上下文与DispatcherServlet的区别

转自:https://www.cnblogs.com/weknow619/p/6341395.html一般在使用SpingMVC开发的项目中,一般都会在web.xml文件中配置ContextLoaderListener监听器,如下:<listener> <listener-class>org.springframework.web.context.Cont...

2019-04-29 19:25:49 299

原创 装配bean以及高级装配bean

创建应用对象之间协作关系的行为,通常称为装配,这也就是依赖注入的本质。配置spring容器有三种方法 在xml中进行显示配置 在Java中进行显示配置 隐式的bean发现机制和自动装配机制 一般而言,spring配置的风格有多种:可以相互搭配。但是一般而言建议是使用自动装配机制,显示配置越少越好 如果有些源代码不是由你来维护,但是你要为其装配,这里只能使用显...

2019-04-28 16:03:01 367

原创 spring容器扩展

通过应用上下文实现IOC容器(所以说应用上下文就是IOC容器)将获取到配置文件加载到应用上下文处,然后根据配置文件进行实例化。 通过应用上下文.getbean获取对象实例。spring在启动时候读取应用程序提供的bean配置信息(可以从三方面:xml Java 注解),并在spring容器中生成一份相对应的bean配置注册表,然后根据这张注册表实例化bean,装配好bean之间的依赖关系,...

2019-04-28 13:00:21 183

原创 spring实战解读--(spring总视)

如何降低Java开发复杂性,spring采取下面四种方法:1.基于pojo的轻量级和最小入侵性编程;POJO(一个简单的Java类对象),spring非侵入式编程模型意味着这个类在非spring应用或者是spring应用中都可以使用它。 spring不会强迫你使用spring特有的接口(使框架和代码绑定),最坏情况下就是使用了spring注解,但是任然是pojo。2.通过依赖注入和面...

2019-04-28 09:39:54 258

原创 阿里巴巴面经准备

作者:flipped丶链接:https://www.nowcoder.com/discuss/184555?type=2&order=0&pos=1&page=1来源:牛客网一面 3.141. 自我介绍2. 说说项目3. 负责哪一块4. 说一下项目架构和部署情况5. 说说权限管理https://blog.csdn.net/HNUST_LIZEMI...

2019-04-27 21:23:03 270

原创 Javaweb权限管理

权限管理一般都是使用Shiro框架实现 拦截器(继承或者实现HandlerInterceptor),然后就是将拦截器注册 通过实现WebMvcConfigurerAdapter 。然后今天我主要是想讲一下自己项目中的权限管理设置:因为项目中只有使用者一个角色,所以权限方面只需要判断是否有登陆既可。在访问control层方法前 进行拦截判断,当前线程是否进行了用户登陆。 通过co...

2019-04-27 14:57:41 880

转载 权限认证 cookie VS token

权限认证 cookie VS token我前公司的应用都是 token 授权的,现公司都是维护一个 session 确认登录状态的。那么我在这掰扯掰扯这两种权限认证的方方面面。工作流程先说 cookiecookie 登录是有状态的,服务端维护一个 session 客户端维护一个 cookie,cookie 只保留 sessionID 服务端要保存并跟踪所有活动的 sess...

2019-04-27 14:38:57 201

转载 linklist模拟队列 栈

LinkedList是用双向链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。底层是一个双向链表,链表擅长插入和删除操作,队列和栈最常用的2种操作都设计到插入和删除importjava.util.LinkedList;importjava.util.Queue;//用linkedList模拟队列,因为链表擅长插入和删除publiccl...

2019-04-17 09:09:57 311

原创 完美世界面经准备

Q:cas如果一直失败的解决方案:cas属于自旋锁,在1.6就引入了适应性自旋锁,(1.6是写死的 后面可以改变)通过比较自旋锁时间阈值(上一次该锁的自旋时间 还有当前状态所决定的) 来决定以下操作:超过阈值后 阻塞后续线程的。Q:concurrenthashmap的实现:在ConcurrentHashMap中通过一个Node<K,V>[]数组来保存添加到map中的键...

2019-04-16 20:46:35 467

空空如也

空空如也

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

TA关注的人

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