自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

早就戒了的博客

快夸夸我!

  • 博客(17)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis实现消息队列

能实现消息队列的中间件有很多啊,kafka,RabbitMQ,RocketMQ等,不知道为什么还要利用Redis去实现消息队列的功能呢?Redis实现消息队列和上述专业的消息队列中间件比,没有什么优势。所以,还是别用Redis实现了。如果你还坚持使用Redis来实现,那么好吧,接下来就介绍用Redis如何实现消息队列吧!PUSH/POPRedis中五大数据结构之一—列表,其PUSH和POP命令遵循F

2017-12-28 15:02:40 3747

原创 单例模式

单利模式有很多种实现方式,每一种方式都有自己合适的场合。常用的单利有:懒汉式、饿汉式、线程安全式、双重检查式和登记式。实现单利最重要的一点是构造方法是private的,这使得实例不能被外界所创建。懒汉式这是最简单的一种单利模式,但是带来的问题是线程不安全。这里所谓的不安全是指在创建第一个实例时是线程不安全的。可以看到,当我们初次使用时才会创建实例,所以叫懒汉式。public class Simple

2017-12-26 15:52:34 19640

原创 工厂模式

作为常见的设计模式,工厂模式可以分为三类。简单工厂、工厂方法以及抽象工厂模式。下面我将以代码示例来解释。简单工厂最简单的一种工厂模式,概括起来就是有一个工厂类,客户端需要什么,此工厂就生产什么。//商品接口public interface Products {}//商品Apublic class ProductsA implements Products { public Products

2017-12-26 14:49:49 292

原创 使用位运算实现加减乘除

经常看到类似”不使用XXX符号的前提下,实现加、减、乘、除“?第一次遇见的同学可能会懵,如果你记起来一个叫位运算的东西就会豁然开朗了。算法概述加法:比如5+6。小学的时候数学老师告诉我们的是,先求不算进位的值,也就是1,然后再将进位结果(这里是1)加入,直到进位为0。使用位运算也是同样的道理。只不过我们对于进位和不进位的结果的产生感到陌生而已。位运算中两个数相加的不进位结果:a^b,进位结果a&b;

2017-12-25 17:40:45 498

原创 红黑树的插入3张图让你学会

红黑树的插入相比较其删除是比较简单的。总的分为两步: 第一步,找到节点位置,插入节点即可,默认插入的节点是红色的(这样不会影响平衡)。 第二步,将调整颜色,避免出现红—红的出现,这是红黑树不允许的。再次强调红黑树的定义: (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] (

2017-12-24 17:26:55 316

原创 红黑树的删除—10张图学会

如果要学红黑树,那么就必须知道二叉树,毕竟红黑树本身就是一个二叉搜索树。只不过红黑树比一般的二叉搜索树更加稳定,也就是更加平衡,但是有没有AVL树那么的稳定,这换来的是红黑树比AVL数有更好的插入和删除效率,但是查找效率并没有比AVL差很多。下文我将用RBT代替红黑树。二叉搜索树的删除介绍RBT的删除,就先要知道二叉搜索树的删除(知道的同学可以直接跳过)。删除分为四步: 1.找到删除点假设为X

2017-12-23 15:21:12 15025 11

原创 Redis事务机制和分布式锁

Redis事务机制严格意义来讲,Redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的;Redis的事务实质上是命令的集合,在一个事务中要么所有命令都被执行,要么所有事物都不执行。 一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。在MySQL中我们使用START TRANSACTION 或 BEGIN开启一个事务,使用COMMIT提交一个事务;而在Re

2017-12-19 13:28:01 17141 4

原创 Redis数据结构及其常用命令

Redis中数据结构有五种,分别是字符串、链表、集合、散列、有序集合,接下来我简单介绍这五种数据结构以及相应的操作命令。String在Redis中,字符串可以存储三种类型:字节串整数浮点数常用操作命令:set:设置键-值get:获得键对应的值del:删除给定键的值自增自减命令:incr:加一incrby:加上某一整数decr:减一decrby:减去某一个数incrbyflo

2017-12-18 22:31:41 341

原创 贪心算法例题

简介贪心算法(greedy)分阶段地工作,在每一个阶段都可以认为所做的决定是最好的,而不用考虑后果。这就意味着得到的是局部最优解决方案,当算法结束时,如果一个一个局部最优解能组成全局最优解决,那么就说明这个算法是正确的;如果不是,则此算法的到的结果就是一个次优解。因此,如果使用贪婪算法得到问题的最优解,那么问题就必须满足一定的条件。找零钱问题这个问题在我们的日常生活中非常普遍了。假设1元、2元、5元

2017-12-18 13:24:23 835

原创 Spring之IOC的实现

在Springl下如果我们需要使用某一个bean,我们不需要手动的new一个,而是问Spring的BeanFactory拿一个你需要的Bean即可,这就是所谓的IOC,Spring控制了Bean的创建和毁灭,我们只需要问Spring拿即可。BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactory.xml"));Be

2017-12-15 22:43:00 238

转载 动态规划:最长子序列问题

关于动态规划中的最长子序列问题有很多优秀的解读,在这里推荐一位博主的关于最长子序列的文章,非常不错,配有大量的图片和文字解答,在这里推荐给大家。[本文章转载自这里](http://blog.csdn.net/hrn1216/article/details/51534607)1.基本概念 首先需要科普一下,最长公共子序列(longest common sequence)和最长公共子串(longes

2017-12-14 21:26:23 5606 4

原创 Spring的AOP实现

如果需要在Spring中使用AOP是非常简单的,只需要在Bean上加上@AspectJ,在方法上加@PointCut、@Before等注解就可以实现你想要的逻辑,最后在XML配置文件中加入即可。那么Spring是如何实现的呢?动态AOP标签我们从AopNamespaceHandler中的init()方法开始分析:1.配置文件中在遇到aspectj-autoproxy标签的时候我们会

2017-12-14 13:15:58 400

原创 Spring之容器的实现

对于经常使用spring框架的同学,对于下面的这段代码肯定不会陌生ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");(1)读取配置文件applicationContext (2)找到配置文件中定义的配置并实例化以上是Spring实现容器的基础,虽然只有短短的一行,但是里面却包含了

2017-12-13 21:28:55 272

原创 动态规划之01背包问题

最近刷leetcode时遇见了好几道动态规划,因此对如何解动态规划这类题目也稍有心得。什么是动态规划?可能大家都知道官方的具体解释,巴拉巴拉一堆解释。而在我看来,动态规划就是一种对于问题的拆分。将一个问题拆分成一个一个子问题,总问题的解决办法就依靠着这些子问题的解决而解决。好比你爬上10层楼,你需要先解决1楼到2楼,2楼到3楼。。。。。。最后9楼到10楼。状态转移方程怎么来的?问题描述: 有编号分

2017-12-07 11:41:34 337

原创 谈谈RabbitMQ

消息通信常见的web服务之间的通信机制有两种 ,同步和异步。 同步方法有RMI、Hessin、Burlap、HTTP invoker,虽然同步通信比较简单,但是存在如下问题:服务需要等待,耦合度高!而异步通信就不存在这些问题,它无需等待,web服务只要将消息发送后就可以马上继续执行;对象对象和解耦;位置独立,消息发起者只需要知道 消息服务器的位置就可以发送消息,消息接收也无需知道发起者的具体位置,

2017-12-06 20:56:24 6596 2

原创 RabbitMQ的安装与入门

RabbitMQ的安装这里暂时使用window环境,稍后补充linux下的安装。首先,因为RabbitMQ由ERLANG实现,所以首先需要安装ERLANG环境,安装好之后才是RabbitMQ的安装和配置。ERLANG环境1.先去官网下载最新的OPT。直接打开exe文件执行安装,记录下安装的目录文件路径。2.将ERLANG加入系统环境: 3.此时打开erlang表示成功。 RabbitMQ安装

2017-12-04 22:56:07 575 2

原创 Redis持久化方式AOF和RDB

一谈到数据缓存,大家的脑海里面就会跳出Redis和Memcached。对于两者的比较在这里不展开详细分析,但是两者的最大区别在于Redis可以实现数据的持久化,并且提供更多的数据结构如list、set、hash等的存储。这里主要就Redis的两种持久化方式——AOF和RDB展开讨论。1.1RDBRDB是Redis默认的持久化方式,它是通过快照方式完成的,当符合一定条件时,Redis会将内存中的数据进

2017-12-04 15:50:35 424

空空如也

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

TA关注的人

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