5 程序猿进阶

尚未进行身份认证

目前在杭州市工作,希望能够找到一群志同道合的兄弟,一起创业。

等级
TA的排名 2w+

Kafka 入门到放弃

kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。一、中间件常识【1】消息系统分类(两种):1)、Peer-to-Peer:发送到队列中的消息仅仅被一个接受者接受。支持异步“即发即弃”的消息传送方式,也支持同步“请求应答”传送方式。2)、发布/订阅模式:发布到一个主题的消息,可以被多个订阅者所接收。也...

2019-09-15 17:21:55

Redis 的线程模型

一、概述【1】、Redis是基于Reactor模式开发的网络事件处理器:这个处理器被称为文件事件处理器(fileeventhandler),这个文件事件处理器是单线程的,所以Redis才叫做单线程的模型:■文件事件处理器使用I/O多路复用(multiplexing)机制监听多个套接字Socket,根据Socket上的事件来选择对应的事件处理器进行处理。■...

2019-09-15 12:49:35

Spring AOP 源码分析

阅读前提:需了解AOP注解开发流程:https://blog.csdn.net/zhengzhaoyang122/article/details/80057901一、注解@EnableAspectJAutoProxy在配置类中添加注解@EnableAspectJAutoProxy,便开启了AOP(面向切面编程)功能。此注解也是了解AOP源码的入口。@EnableAs...

2019-09-14 14:02:54

Facebook 的 Thrift

Thrift源于Facebook,在2007年Facebook将Thrift作为一个开源项目提交给了Apache基金会。对于当时的Facebook来说,创造Thrift是为了解决Facebook各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性,因此Thrift可以支持多种程序语言,如C++、C#、Cocoa、Erlang、Haskell、J...

2019-09-14 10:45:41

Java 序列化的缺点

Java提供的对象输入流(ObjectInputStream)和输出流(ObjectOutputStream),可以直接把Java对象作为可存储的字节数据写入文件,也可以传输到网络上。对于程序员来说,基于JDK默认的序列化机制可以避免操作底层的字节数组,从而提高开发效率。Java序列化的主要目的是网络传输和对象持久化。一、无法跨语言无法跨语言,是Java序列化...

2019-09-12 21:33:19

MyCat 分片

如今随着互联网的发展,数据的量级也是呈指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL是无法满足的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候...

2019-09-08 20:17:43

原子操作——CAS

锁主要分为两种:乐观锁和悲观锁,而synchronized就属于一种悲观锁,每次在操作数据前都会加锁。乐观锁是指:乐观的认为自己在操作数据时,别人不会对当前数据进行修改,因此不会加锁。如果有人对数据进行了修改,则重新获取修改后的数据,进行操作。直到成功为止。而乐观锁的这种机制就是CAS(compareandswap)比较并交换。一、什么是CASCAS(CompareAnd...

2019-09-03 22:40:30

Redis 性能优化

一、Linux操作系统【1】ulimit与TCPbacklog:1)、修改ulimit:通过ulimit修改openfiles参数,redis建议把openfiles至少设置成10032,因为maxclients是10000[客户端的数据是以文件的形式进行保存的],另外redis内部最多会使用32个文件描述符。ulimit-n10032...

2019-09-01 16:00:50

Redis 事务

Redis事务:可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,一次性、顺序性、排他性的执行一系列命令。一、常用命令【1】、:开启一个事务【2】、:执行事务中的命令。可以看到开始到之间,所有的命令都会被加入到一个命令队列中。当执行命令后,将QUEUED中所有的命令执行。【3】、:放弃事务...

2019-08-31 23:02:44

ActiveMQ 持久化消息

为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制。ActiveMQ的持久化机制有JDBC、AMQ(了解)、KahaDB和LevelDB,无论哪种持久化方式,消息存储逻辑都是一致的。当消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等再试图将消息发送给接受者,成功则将消息从存储中删除,失败则继续尝试发送。消息中心启动以后...

2019-08-30 22:06:42

Redis 故障排查

要进行Redis的故障定位,一般通过分析Redis日志、应用日志和Redis的监控信息来定位相关问题。一、Redis日志设置1)、日志文件:Redis默认日志在控制台打印,启动时即可看到对应日志打印到控制台上。建议修改redis.config的默认配置:[logfile""],为其指定记录日志的文件[logfile"/usr/redis/log/redis.l...

2019-08-25 17:53:54

设计模式——策略模式

在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。一、策略模式基本介绍【1】策略模式(StrategyPatte...

2019-08-25 15:20:59

Redis 集群

一、Redis-Cluster简介【1】Redis集群(Redis-Cluster)提供了在多个Redis节点间共享数据的功能。【2】Redis集群通过分区来提高可用性。可自动分割数据到不同的节点上,集群的部分节点失败或者不可达时能够继续处理请求。【3】RedisCluster集群模式通常具有高可用性、可扩展性、分布式等特性。【4】Redis集群采用P2P模式,是完全...

2019-08-25 11:19:33

Redis 哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库[基于主从复制模块]。一、Redis哨兵概念哨兵(Sentinel):是一个分布式系统,可自动干预Redis主从切换,主要用于管理多个Redis服务器,执行监控(Monitoring)、通知(Notification)、自动故障迁移(Automaticfailover)任务。二、R...

2019-08-24 20:58:39

Redis 主从复制

一、Redis的复制复制(Replication):是Redis实现高可用的基础。且在复制过程中,主节点/从节点都是非阻塞的,但是从节点在执行同步时使用的是旧数据集提供查询。Redis复制启动图与流程说明:1)、当从节点连接到主节点时,会发送psync命令给主节点,runId是主节点的ID,如果没有默认是-1;offset是从节点保存复制偏移量,主节点根据复制偏移...

2019-08-24 16:47:00

Redis 持久化

一、Redis持久化方式(RDB)【1】RDB(RedisDataBase):在指定的时间间隔内将内存中的数据集以快照的形式写入磁盘,也就是行话讲的Snapshot(快照),它恢复时是将快照文件直接读到内存里。Redis会单独创建(Fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进...

2019-08-23 23:22:34

Redis 数据结构

一、Redis的五大数据类型【1】String(字符串):String是Redis最基本的类型,一个key对应一个value。String类型时二进制安全的。意思是Redis的String可以包含任何数据。一个键最大能存储512MB。【2】Hash(哈希):Hash是一个键值对集合,类似Java里的Map。Redis的Hash是一个String类型的...

2019-08-22 22:41:19

设计模式——解释器模式

在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的表达式(例如:正则表达式等),那么这些问题实例将是该表达式的一些句子,这样就可以用“编译原理”中的解释器模式来实现。一、解释器模式基本介绍【1】解释器模式(InterpreterPattern):是指给定一个语言(表达式),定义它的文法的一种表示。并定义一个解释器,使用该解释器来解释...

2019-08-21 22:45:49

设计模式——备忘录模式

备忘录模式(MementoPattern):保存对象的某个状态,以便在未来需要的时候进行数据的恢复。相当容易理解,举个简单的例子:Word软件在编辑时按Ctrl+Z组合键时能撤销当前操作,使文档恢复到之前的状态;一、备忘录模式的基本介绍【1】备忘录模式(MementoPattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将...

2019-08-19 23:16:51

设计模式——中介者模式

在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,班长和团支书等干部需要记住同学们的电话,且同学中如果有人的电话修改了,需要告诉所有干部,自己的手机号修改了,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”...

2019-08-18 21:27:47

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。