自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u014274324的专栏

一切始于细节

  • 博客(53)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 paxos,zk(zab),etcd(raft),es(bully),es(raft)源码和问题分析

本篇不太适合初学者,也只说选举和存在的问题,各个中间件的处理,建议有一定的了解之后再进行阅读。有三个人:a,b,c,他们确定有聚餐,旅游,唱歌,待在家,钓鱼,跑步第一阶段:确定谁能提出方案:比如a,(a可能提出聚餐或者旅游或者待在家)比如b,(b可能提出旅游或者唱歌或者钓鱼),比如c,(c可能提出唱歌或者聚餐或者跑步)第二阶段:确定方案:a提聚餐或者旅游都能被通过,提待在家不能被通过,其他类似下面主要针对上面的情况进行分析:1:源码1:paxospaxos的选举我不再多说,pax

2021-04-17 17:21:22 942

原创 百万级qps系统的实现

常规的缓存系统的设计缓存系统大概分为2种:1:数据量不大,拉取全量的数据,缓存在本地。2:数据量很大,根据二八定理,只拉取活跃的数据缓存在本地。下面我主要说下第一种方案,我们的系统主要是第一种方案,如果有时间会说下第二种。缓存中心的设计:1:缓存中心采用一主多从的架构2:主节点检测到数据的更新,会扫描库里全部的数据,更新到缓存里3:数据库做了读写分离,扫描的也只是从库4:为了避免太大的数据库压力,只有主节点拉取数据库的数据5:从节点只拉取主节点的缓存数据,不再

2021-03-14 20:56:57 4125 10

原创 分布式id生成器

分布式id生成器在稍微规模大一点的公司,基本上都会有的,网上的样例也比较多,本编主要讲的是公司内的一些使用吧,大家影响可能更深刻一点。分布式id有哪些要求呢?全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。 单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。

2020-08-09 19:25:48 506

原创 mysql的mvcc和加锁分析

1:数据库的隔离级别数据库的隔离级分类分为四类READ_UNCOMMITTED,READ_COMMITTED,REPEATABLE_READ,SERIALIZABLE。1.1:READ_UNCOMMITTED读未提交时,读事务直接读取主记录,无论更新事务是否完成1.2:READ_COMMITTED读提交时,读事务每次都读取undo log中最近的版本,因此两次对同一字段的读可能读到不同的数据(幻读),但能保证每次都读到最新的数据。1.3:REPEATABLE_READ每次都读

2020-08-08 21:01:38 2242

原创 注册中心以及演进

注册中心现在是服务框架实现服务治理的核心,随着服务的增多,注册中心也是大势所趋,但是对于大多数的公司来说,小型注册中心是够用的,但是对于大厂来说,显起来不那么够用。1:dubbo注册中心服务提供方(Provider)所在的应用在容器中启动并运行(这个容器可以说是该应用部署的tomcat) 服务提供方(Provider)将自己要发布的服务注册到注册中心(Registry) 服务调用方(Consumer)启动后向注册中心订阅它想要调用的服务 注册中心(registry)存储着Provid.

2020-08-01 21:42:46 1061

原创 mq消息队列

mq消息队列本质上是一个文件系统,我主要介绍一下kafka,顺便和我司的jmq对比一下,因为我司是自研的消息系统,在网上也有开源的(https://github.com/chubaostream/joyqueue),但是对于kafka这种大家所熟知的消息队列,阿里的rocketmq,我司的jmq都能看到kafka设计的影子,聊kafka更容易理解,感兴趣的可以京东技术的关注公众号。1:kafka的文件设计kafka的每个topic都可以创建多个partition,每个partition可以.

2020-07-26 20:17:14 500

原创 Redis存储结构和数据复制

redis被很多的公司使用,这一篇主要针对redis的数据结构和数据复制,因为这二块是redis比较核心的地方,当然redis的slot和哨兵这些也很优秀,不在本篇的讨论范围。1:redis的组织形式众所周知,实现索引的形式一般:b+树或者hash索引,redis大家所熟知的key,value的结构,也就是后者,这种结构一般我们称之为字典,在java当中我们也不陌生,HashMap和HashTable也是实现字典的具体形式,redis如何实现字典的呢?下面我们进入正题,redis的内存组织形式。

2020-07-20 00:02:57 810

原创 zookeeper-一个简单又复杂的东西

zookeeper为什么说是一个简单又复杂的东西,复杂是指从理论上上来看,真的很复杂,很多人根本看不懂,为什么又说简单呢?简单是指从代码层面上来说,实现理论并不复杂,反而异常的清晰。下面说下复杂的东西:paxos。1:paxospaxos统治了现在基本上所有一致性算法的理论基础,chubby和zookeeper都是以paxos为理论的一致性算法,但是由于paxos不容易实现和即使实现在使用当中也会出现一些问题,基本上没有中间件完全的用paxos,基本上都是在理论基础上的变种。下面简单的说一下paxo

2020-07-12 20:41:37 596

原创 网络I/O模型和netty的模型

五种网络I/O模型分别是阻塞I/O,非阻塞I/O,多路复用I/O,信号驱动I/O,异步I/O,netty使用的是第三种:多路复用I/O,下面我们分别介绍下下面各种I/O。1:阻塞I/O这幅图看起来不太友好,特别是对新接触网络编程的新手来说,可能一头雾水,其实这个网络模型的特征就在于发起系统调用的同时,内核空间在等待数据到来,这个时候数据还没准备好,程序会一直阻塞,当数据到来,数据从内核到用户态转变,拷贝数据完成,才把数据返回。这么说可能还不太好理解,那么直接贴代码:try { in

2020-07-05 19:46:55 565

原创 Lucene查询分析-结果合并

elasticsearch是近年来比较火的分布式查询中间件了,elasticsearch的搜索引擎是LUCENE,前几年比较火的solr的搜索引擎也是lucene,能被那么多的中间件作为搜索引擎,我们看下他到底有什么神奇之处,先简单的说下lucene的数据结构:1:倒排索引常规的关系型数据库都是正排索引:id name age sex 1 小明 10 女 2 小黑 12 男 从结构上来看,关系型数据库存储的结构化数据,对于扩展数据

2020-07-04 20:41:18 1088

原创 缓存穿透,缓存击穿,缓存雪崩处理

为了应对越来越大的流量,缓存便成为系统服务必不可少的一部分,但使用缓存就会出现缓存击穿和缓存穿透的威胁。一、背景介绍 互联网应用逐步深入到生活的各个角落,为了满足越来越多用户使用互联网应用的需求,几乎所有互联网公司都采用缓存的方案来解决瞬时流量超高,或者长期流量过高的问题。但使用缓存存在风险——缓存穿透和缓存击穿:简单的讲就是如果该数据原本就不存在,那么就会发生缓存穿透;如果缓存内容因为各种原因失效,那么就会发生缓存击穿。 具体一点来说,如果缓存中不存在需要查询的内...

2020-07-01 16:49:50 300

原创 Garbage First(g1)垃圾回收器

cms优秀么?优秀,但是对于日渐庞大的内存,特别是堆内存超过8g之后,stop the world的时间会被无限拉长,cms并不能给与太大帮助,跨代对象的扫描也是问题,更何况final remark是要扫描整个年轻代,这点看是很难接受的,g1是如何解决这些问题,针对这些问题,设计上怎么去下手,下面就介绍下g1垃圾回收器,先介绍几个概念:Regioncms是有严格意义上的分区,这种划分的特点是各代的存储地址(逻辑地址)是连续的。而g1的内存没有严格意义上内存分区,所有的内存被分为一个个大小的Reg

2020-06-27 19:13:18 542

原创 jvm,apache-commons-pool的PhantomReference引起的一次线上内存崩掉的分析

前一段时间,临部门的兄弟泰国站的项目,系统上线二天,或者重启之后系统总是莫名的shutdown,我对这方面比较感兴趣,也处理过一些这种问题,就写下处理的过程:左边是没有修改之前的,右边是修改之后的,分析这个问题之前,我先介绍一下工具,用的是Mat(Memory Analyzer Tool),我比较喜欢用这个,导入内存dump快照:一般选择leak suspects report这个view就可以了,看下面的视图:从上面的视图,可以看出com.mysql.jdbc.NonRegiste

2020-06-26 16:17:13 519

原创 Concurrent Mark Sweep(cms)垃圾回收器

好长时间没写过博客了,突发奇想,开始写下最近几年的积累吧,先从Concurrent Mark Sweep(cms)开始,希望自己没有太懒吧,坚持写完吧,先介绍以下概念:GC ROOT这里我引用下RednaxelaFX的原话,所谓“GC roots”,或者说tracing GC的“根集合”,就是一组必须活跃的引用(重点)。例如说,这些引用可能包括:所有Java线程当前活跃的栈帧里指向GC堆里的对象的引用;换句话说,当前所有正在被调用的方法的引用类型的参数/局部变量/临时值。 V...

2020-06-26 00:14:55 1562 7

原创 连接池的基本实现

对于池的概念,大家都不陌生,储存昂贵的资源,比如线程,jdbc连接,线程池有现成的,这里就不献丑了,主要写下连接池吧连接池类public class ConnectionPool { private static volatile ConnectionPool connPool; private static final String url = "jdbc:mysql://local

2017-01-12 15:46:52 413

原创 java常规八种基本类型

最近确实有点忙,但也反思了很多东西,学的东西很多,ssh,设计模式,hadoop等等,什么样的基本都学了,追求学的东西多,但是却也明白了一个道理,盲目的学习并不一定好,当然我也不是说学习这些东西不好,只是我们需要对于基础知识的把我握更加更牢固一点,学了一个东西,必须知道,为什么要选择他,他有什么好处,有什么坏处,我们从中又能够学习到什么,糊里糊涂的还没明白一个东西能够干什么,就开始用,那样就有点多

2015-09-11 14:16:10 1260

原创 设计模式之适配器模式

对于设计模式,是长期代码的一种优化,我结合一些实例,,以自己的见解讲解一下我的浅识。说到适配器模式,第一点比较重要的是uml图的理解,也许你现在不理解代码,但是理解了uml图,对于你以后的认识会有很大帮助。适配器模式主要分为类适配器,对象适配器和缺省适配器。现在我们看一下类适配器的uml结构图上面可以看出,适配器模式包括三部分Target(目标),Adaptee(源),Adap

2015-05-13 16:10:01 625

原创 设计模式之单例模式

网上有那么多的资料,我们为什么还要费时费力的去写博客呢?我想应该是要写出自己本身对一个问题的看法,否则真的没必要写,直接转载别人的就可以了。以前总是有点应付的感觉,对自己的这样的行为真的很惭愧。话不多说,直入正题。单例模式也是被用的次数最多的模式之一,接下来我们说下单例模式最简单的一种写法:class Singleton1{ private static Singleton1 s

2015-04-18 08:10:10 714

原创 工厂方法和抽象工厂

csdn没有在移动上布网,最近移动校园网登不上csdn,今天终于能登上了,小草鸟就写下最近在学的设计模式。工厂估计也差不多是用的最多的了,对于工厂方法和抽象工厂比较容易混,笔者在这里说下自己的学习的一些理解。工厂模式:产品对于工厂,当然是生产产品的了,当然我们得有产品类,为了扩展性良好,先定义一个产品接口public interface Animal { pub

2015-04-13 22:18:01 568

原创 sql个人总结4

说到sql,无疑存储过程很重要,这篇就和大家讨论储存过程。1:储存过程a:不带参数的储存过程USE testGOCREATE PROCEDURE WLY --储存过程,不带参数ASSELECT * FROM roleGOb:带参数的储存过程USE testGOCREATE PROCEDURE WLY1 @A INTAS DECLARE @B INTS

2015-03-06 18:06:31 696

原创 sql个人总结3

说到sql,不免会想到t-sql,这篇主要就是要和大家讨论的t-sql语句。1:赋值a:为变量单个赋值BEGIN DECLARE @SID INT, @SNAME VARCHAR(1)SET @SID=0 --只能为一个变量赋值SET @SNAME='A'PRINT @SIDPRINT @SNAMEENDGOb:select为变量赋值

2015-03-06 17:37:00 549

原创 sql个人总结2

前一篇说了sql语句的数据库操作,这一篇就说下表的操作。1:先说下表的插入,更新,删除这些操作。a:插入 insert规正式的插入:/* insert into tablename(column) values(?) */ /* column也可以没有,可以是一张表,没有值的列用null补齐 */insert into student(sid,sname) values(1,'1'

2015-03-03 16:47:48 807

原创 sql语句个人总结1

以前的数据库课程很多学的不太精,现在回顾一下以前的学习。创建数据库的语句/* 创建数据库 */create database wly on primary( name='wly_data', --主数据文件的逻辑名称 filename='F:\sql语句\mdf数据库\wly_data.mdf',

2015-02-17 11:08:28 1041

原创 spring bean源码简单解析

最近在看spring的源码,发现看这个还是有点早,看的很吃力,有多东西还不是很明白,像代理等,我感觉spring用abstract模板来写主要功能,用接口来拓展功能,用的出神入化,但也让很多简单的东西变得不那么好懂了,就是写的啰嗦了,个人感觉。下面就是下spring bean源码的学习:private static final Resource RETURNS_NULL_CONTEXT

2015-02-15 11:16:41 768

原创 spring mybatis简析

好多天没有发博客了,下面就直接说下我正在学习的mybatis。下面就说下mybatis在spring中最简单的配置:              

2015-02-09 15:55:26 837

原创 for in结构的简单理解

js对于for in结构的运算的效率比for结构低,这个是很明显的。下面我介绍下for in结构:对于对象:for(var prop in student){ document.write(prop+""+student[prop]);}输出为:id 1name 小明这里prop为属性,后面为属性值对于一个数组:for(var i in a

2015-01-05 20:15:21 1112

原创 maven之简单解析

好久没写东西了,主要是学业最近比较重,下面我写下myeclipse web的一个项目管理的maven。我以myeclipse10为demo,我们得先下载一个maven,这个可以去官网下载。1:把你的maven加到myeclipse里面去下面new ->other ->maven project接下来增加目录层次结构src/main/java,src/test

2015-01-02 22:00:32 824

原创 ejb简析

对于分布式的网站来说,ejb是一个不错的选择,很好的诠释了面向接口的编程。下面我简要的说下我对于ejb的基本认识。首先,建一个ejb project,接下来是一个远程接口:Hello.javapublic interface Hello { public String hello(String name);}接下来是一个本地接口:HelloLocal.java

2014-11-25 17:04:29 950

原创 spring完整demo实例

我前几篇分散的说了spring mvc,这一篇我完整的说一下,仅供参考,如果大家要用,只需要改下路径就行,可能比较长,大家耐心看哦。我会在最后把工程连接贴上。先贴hibernate的连接配置:hibernate.propertiesdataSource.url=jdbc\:mysql\://127.0.0.1\:3306/dormdataSource.password=123456

2014-11-01 20:09:58 3608

原创 权限表设计之代码解析

在权限表设计中已经说了权限表的结构,在这里我说下代码user表@Entity@Table(name="user")public class User implements Serializable{ private static final long serialVersionUID = 6177417450707400228L; @Id @GeneratedValu

2014-10-27 18:42:41 1041

原创 hibernate之实体@onetomany和@manytoone双向注解

hibernate大家想必已经很熟悉,现在的注解太流行了,我就说下注解的作用。下面是User类:@onetomany@Entity@Table(name="user")public class User implements Serializable{ private static final long serialVersionUID = 6177417450707

2014-10-25 22:42:39 4059

原创 struts之验证框架

对于格式的验证,我们可以自己写js来验证,当然struts已经封装了验证框架,下面说下我的学习哦。验证框架分为了服务器端的验证和前台的xml配置验证(这里相当于js),下面先说下服务器端的验证。1:由于action类继承了ActionSupport这个类,其中这个类又实现了Validateable, ValidationAware接口,所以我们可以直接的重写validate()这个方法

2014-10-18 23:27:12 662

原创 struts之拦截器

拦截器是为了让一些自己不希望发生的事情进行预防,下面我说一下struts自定义拦截器。下面我贴下struts.xml里的自己定义的拦截器:

2014-10-17 22:43:46 752

原创 绝对路径和相对路径的区别

对于路径的理解,有的时候很模糊,总感觉明白,但有时却想不通,下面就说下我对于路径的理解。绝对路径,顾名思义,就是绝对的,完整的路径,打个比方,就像是:C:\Program Files (x86)\Microsoft Office绝对路径就是这样的完整的路径,不是路径的一部分。下面就是相对路径,相对路径又分了二种情况:第一种:是相对于当前页面的。my.html;../my.h

2014-10-16 18:04:21 750

原创 hibernate入门级

hibernate是数据层的架构,想必大家很熟了吧,话不多说,直接贴代码。首先是hibernate.cfg.xml的配置,实际上这里就是数据库的配置:<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/d

2014-10-14 21:56:43 609

原创 java io流之int数组数据的插入与取出

java io流大家都很熟悉吧,有时候如果用的不熟,对于数据的处理真的很头疼,下面是对与int数组的处理。下面是代码:public class Stream { private int a[]; private BufferedWriter bufferedWriter; private BufferedReader bufferedReader; priv

2014-10-08 17:05:31 2102

原创 经典排序之归并排序

归并排序 与插入排序不同的是二个有序数组彼此的插入,而插入排序是一个数向有序里插入。思想是吧一个数组分成若干个最小的有序数组,然后把这些小的有序数组,进行合并。下面是代码:public class MergeSort { public int[] sort(int[] nums, int low, int high){ int mid = (low + high) /

2014-10-07 22:29:59 675

原创 经典排序之插入排序

插入排序的思想很简单,就是每向有序序列中插入一个数,就把这个数依次与其他数比较,逐次替换。下面是代码public class InsertSort { public void insertSort(int a[]){ int length=a.length; int i; int keyword; for(int j=1;j<length;j

2014-10-07 22:23:28 633

原创 struts学习之入门级

学了spring mvc的一些东西,下面是我学习的struts结构,都用反射来做,其实感觉有的地方相通。下面是web.xml的配置 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* in

2014-10-06 22:13:55 671

原创 经典排序之快速排序

快速排序堪称最经典的排序,思想是选一个基准值,一般选第一个。然后所有的值与基准值比较,大的位置不变,小的位置与第一个大的位置互换,就这样进行第一轮排序,然后对于基准值二边的再进行排序,依次类推,直到为剩一个。下面是快排的代码:public class QuickSort { public void quickSort(int a[],int start,int end){

2014-10-05 15:53:21 762

spring完整demo实例

这是我自己总结的spring的一些特征,希望对你有所帮助,只需要改下路径就能用

2014-11-01

spring kaptcha无模糊jar包

该资源是笔者根据自己所需调整的kaptcha的jar包,更适合大家用,如有问题,请仔细看源码

2014-10-02

springmvc demo

这是我自己总结的spring mvc的各个方面的代码,方便易懂,方便大家交流和学习。

2014-08-26

spring mvc所需jar包

这里面是spring mvc所需要的各种jar包,不需要大家再搜集了,用到的直接放到目录下就可以了。

2014-08-26

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

TA关注的人

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