mlydaemon的专栏

私信 关注
北海宇微
码龄9年

生命源于感动,感动让我们有了羁绊,让我们有了不舍,让我们在生去生命那—刻可以笑看人生一一一一我来过 ​​​​

  • 198,158
    被访问量
  • 116
    原创文章
  • 33,371
    作者排名
  • 10
    粉丝数量
  • 于 2012-02-22 加入CSDN
获得成就
  • 获得15次点赞
  • 内容获得1次评论
  • 获得63次收藏
荣誉勋章
兴趣领域
  • #设计
    #交互
TA的专栏
  • 供应链库存管理概述
    4篇
  • 应用部署
    2篇
  • Java基础
    30篇
  • Java算法
    1篇
  • 分布式系统
    11篇
  • 微服务架构
    8篇
  • 数据集市
    3篇
  • Redis实战
    5篇
  • 项目管理
    1篇
  • 常用工具使用
    3篇
  • 论文翻译
    1篇
  • RocketMQ
    26篇
  • 企业架构
    2篇
  • SpringBoot
    2篇
  • JDK源码
  • 深入浅出Nginx
    24篇
  • Nginx基础架构
    11篇
  • Nginx数据结构
    12篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

供应链库存管理-柔性快反供应链

柔性快反供应链是新零售模式下的产物,体现的是全链环节一体化的紧密协同过程,将商品企划、设计、生产、分销、零售等环节紧密结合,以月/周为单位做PDCA循环(即计划-plan,执行-do,检查-check,处理-act). 这种模式要求参与企业做好关于分工与协作、信任与交易、产品与服务以及如何更好的服务顾客.要做到这一点其实非常困难,首先外部环境,供应链各个节点的利益点不同,不可能做到信息共享,利益共享.这点上7-11的加盟店商业模式非常值得借鉴,加盟店模式下7-11完全控制价格和消费...
原创
144阅读
0评论
0点赞
发布博客于 4 月前

供应链库存管理-供应链库存案例分析

供应链管理的实现,是把供应商、生产厂家、分销商、零售商等在一条供应链上的所有节点企业都联系起来进行优化,是生产资料以最快的速度,通过生产、分销环节变成增值的产品,到达有消费需求的消费者手中.这不仅可以降低成本,减少社会库存,而且使社会资 源得到优化配置,更重要的是通过信息网络、组织网络实现了生产以及销售的有效链接和物流、信息流、资金流的合理流动. 供应链库存管理主要是核心企业的供应链模式和运营战略的影响.而且通常是融合出现的,根据运策略的不同对不同的场景采用不同的供应链库存管理策略.
原创
377阅读
0评论
0点赞
发布博客于 4 月前

供应链库存管理-库存控制策略

根据企业在供应链中所担任的角色不同,生产商,供应商,分销商,零售商,物流服务商的库存管理策略各有侧重.但是对于库存物资本身要满足库存物资最优化的原则,及管理成本最优,储存成本最优,物资价值最大化等多角度综合最优.整体上来说都包括物资价值控制,库存变动控制,库存盘点这样的三个层面.
原创
105阅读
0评论
0点赞
发布博客于 4 月前

供应链库存管理概述

VMI是一种供应链集成化运作的决策代理模式,它把客户的库存决策权代理给供应商,由供应商代理分销商或批发商行使库存决策的权力。JMI是一种风险分担的库存管理模式。风险分担表明如果把各地的需求集合起来处理,可以降低需求的变动性,因而当把不同地点的需求汇集起来,一个顾客的高需求很可能被另一个顾客的低需求所抵消。需求变动性的降低能够降低安全库存。CMI是零售商,或者说销售阶段主导,第三方物流是物流主导.CPFR听起来是很高大上,也确实非常有效,只是需要解决的问题也很多.首要问题就是信任问题
原创
220阅读
0评论
0点赞
发布博客于 4 月前

阿里云负载均衡SLB 详解

SLB概念负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(Elastic Compute Service,简称 ECS)的流量分发控制服务。负载均衡服务通过设置虚拟服务地址,将位于同一地域的多台ECS实例虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。负载均衡服务会检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实
转载
191阅读
0评论
0点赞
发布博客于 5 月前

CountDownLatch、CyclieBarrier与SamePhore都可用来控制线程的执行,那么他们之间有什么区别呢

CountDownLatch、CyclieBarrier与SamePhore都可用来控制线程的执行,那么他们之间有什么区别呢1.CountDownLatch:CountDowenlatch可以看成一个线程等待多个线程,当多个线程执行完毕后最后线程才会执行.2.CyclicBarrier:工作原理是多个线程等一个线程,当一个线程到达的时候就使用await方法进入屏障,直到最后一个线程到达屏障的时候屏障才会解除,所有到屏障的线程才会被唤醒继续往下执行.3.SamePhore是信号量的意思,它的使用场景是多
原创
47阅读
0评论
0点赞
发布博客于 7 月前

Java算法-八皇后问题

本文旨在在于记录一个百度上看来的算法,算法让我吃惊的地方在于将数组下标的功能发挥的淋漓尽致。八皇后问题常规算法矩阵维护法、递归法、迭代法、手动堆栈法四种。但是本质都是在描述同一行、同一列或同一斜线上(右上到左下,左上到右下)四种关系。在百度上看到的一种算法privateint[]rup =newint[(2*8)+1];//右上至左下是否有皇后和privateint[]lup=newint[(2*8)+1];//左上至右下是否有皇后仅用两个一维数组就完美的展现出了这种关系...
原创
64阅读
0评论
0点赞
发布博客于 8 月前

Java笔试题摘录-基础中的基础

1.存在使i + 1 < i的数吗()答案:存在解析:如果i为int型,那么当i为int能表示的最大整数时,i+1就溢出变成负数了,此时不就<i了吗。2.存在使i > j || i <= j不成立的数吗()答案:存在解析:比如Double.NaN或Float.NaN3.下面哪个流类属于面向字符的输入流( )A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader答案:D解析:J
原创
237阅读
0评论
0点赞
发布博客于 8 月前

一致性Hash算法

个人觉得一致性Hash算法相较普通Hash算法,重点就是引入了Hash环作为标准参照一致性Hash算法解决的是数据落点问题,通过一致性Hash算法可以将数据均衡的分配到分布式环境下的多台服务器上,比如Redis缓存集群每台服务器分别存储一部分数据;分布式数据库每个数据库可以存储固定标准的数据;Nginx等负责均衡服务可以将用户请求分配到同一台服务器等常见。
原创
35阅读
0评论
0点赞
发布博客于 8 月前

散列表、位图、布隆过滤器

布隆过滤器是一种概率的状态管理方案,相对位图而言它通过牺牲准确性为代价,进一步节约了内存空间。布隆过滤器通过多重hash算法对一个值进行多点定位,但是不排除多个值映射到同一组定位点的问题。在不要求高精确度的前提下,是应对大数据的一种很好的解决方案。
原创
6030阅读
0评论
0点赞
发布博客于 8 月前

分布式id生成算法-雪花算法(SnowFlake)Java实现

唯一性ID在很多场景下都有重要的应用,在分布式系统中,有一些需要使用全局唯一ID的场景而且对ID唯一性要求更为严格,比如全链路追踪技术,数据库分片技术,订单号生成系统等等都需要唯一性ID。常见的分布式ID生成策略有UUID,Redis自增序号,snowflake算法等。这些算法各自有自己的优缺点,比如UUID字符串过长,无序;redis自增序号对Redis有依赖。本文主要介绍twitter的snowflake算法原理,以及一个git上的算法实现
原创
291阅读
0评论
0点赞
发布博客于 8 月前

Java序列化基础

简介序列化:将对象写入到IO流中反序列化:从IO流中恢复对象意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:程序创建的每个Jav
原创
30阅读
0评论
0点赞
发布博客于 8 月前

服务限流,分流,降级,熔断

异常处理,降级,熔断本质上都是快速结束流程,释放资源。但不同的是异常处理着眼于异常,降级和熔断主要体现在精简流程,流程虽然精简了但是服务依然可用。降级和熔断本质也差不多,都是简化服务复杂度,降低请求频率,但是不同的是降级降的降的是自己接受服务请求的频率,而熔断降的是请求上游服务的频率
原创
240阅读
0评论
1点赞
发布博客于 8 月前

多线程锁总览

在谈论某种技术的时候,我习惯先梳理概括这个技术解决的是什么问题,这样便于我们归纳总结,分类理解。关于锁,我的理解而言,锁解决的是多线程场景下共享资源使用的问题。明白了这个关键点后那么问题就很明确了,就很利于我们对所进行理解了,整体上看分为下面几种。(先做一下备注,后面在细化了)悲观锁和乐观锁乐观锁和悲观锁都是一种多线程锁理论,并不是真实存在的一种机制。悲观锁,又称PCC(Pessimistic Concurrency Control)。主要体现在写频繁的场景中,为防止读取时数据被修改,在获取数据的时
原创
50阅读
0评论
0点赞
发布博客于 8 月前

Mysql事务隔离级别实现机制

在MySQL中默认隔离级别是RR(REPEATABLE-READ),RR隔离级别增加了间隙锁,可以有效的避免幻读,阻止不可重复读。听起来是不是感觉万无一失了,其实不是这样的,我们在工作中事务的声明和加锁是分多个阶段执行的,这个很好理解。毕竟事务声明后,可能要执行查询更新等多个操作,总不能声明事务的时候就直接加锁吧,这个时候你也不知道为哪一行记录加锁啊。但是这样就造成了多个事务声明后,由于不可重复的的原因,后生成的事务对记录的变更对新事物不可见。通俗点说,A事务先于B事务声明,此时如果A事务对记录产生变更,那
原创
76阅读
0评论
0点赞
发布博客于 8 月前

数据库大表调优策略总结

数据库层次的调优最常见的策略是分表(垂直分表),其次是sql优化,索引优化,而后是缓存。再之后是主从复制,读写分离,分库分表分区。更进一步是服务优化比如全文索引(lunace),数据热点,机器学习。这些策略看起来非常有效,实际上基本是鸡肋,特别是sql调优和索引优化这部分。为什么这么说呢,软件设计不仅仅是技术栈的使用,还有很重要的一部分是逻辑的优化。比如在一个大表里面为了避免数据重复,需要重复多次的去查表验证或者查缓存。此时按理说sql优化,索引优化,所有的数据库优化都很重要。但是问题是你一定要这样吗?
原创
56阅读
0评论
0点赞
发布博客于 8 月前

日志采集系统Flume和Kafka

flume和Kafaka可以说各有所长,同样作为日志系统,flume日志采集做的比较好,适合多生产者场景,kafaka消息队列做的比较好,适合多个消费者场景。但是由于个人原因吧,我对使用hadoop系列组件比如HDFS或者Hbase进行数据存储,存在本能的抗拒,所以我这里只推荐Flume+Kafaka+mysql的日志采集模式,Flume做日志采集,使用Kafaka做数据传输,使用Mysql作为数据存储这样的架构。其他的使用方法欢迎大家一起讨论。如果有机会探讨一下Flume的架构模式,这个还是有很多值得我们
原创
181阅读
0评论
0点赞
发布博客于 8 月前

数据与链表,指针,集合的区别

讨论数据结构之间的区别,本质上是讨论数据结构的构造,内存分配,增删改查效率,应用场景这几个层次来考虑,针对数据和链表的区别我们大概可以做如下的归纳。数组:线性数据结构;连续内存空间,无法改变容量;存储相同类型数据;支持随机访问(查询),插入、删除较慢(时间复杂度O(n),因为要涉及遍历定位);业务开发中,适合做底层数据结构。(这点不知道你有没有和我一样在探索String,Nginx,Redis等等吧的时候,也一样疑惑或底层数据结构为什么都是数组)链表:链式数据结构;非连续内存,内存可扩充;存储相同数据类
原创
1622阅读
0评论
0点赞
发布博客于 8 月前

分布式无处不在,数据库事务弱一致性是否必然

在计算机系统中,指令是计算机运行的最小的功能单位。在一个多核计算机中,以指令为单位,涉及两条及以上指令的操作都将面临事物一致性的问题。因为两条以上指令涉及多个CPU协作,已经不满足事务一致性的原则了。深入计算机对机器指令的执行以计算机元器件转变为单位,其实每条指令执行,到元器件最终发生转变,这个过程也是被拆分为若干执行过程。如果我们对计算机运行机制不是很理解,那么我们把原子操作放大一点,比如数据库原子操作,比如分布式事务原子性,比如分布式应用原子性。其实基本上我们的任务计算机操作都是非原子性的,当我们在谈论
原创
1644阅读
0评论
0点赞
发布博客于 8 月前

java中String类为什么要设计成final

这是个很有趣的问题,String设计成final类型,不能被继承、不能被重写,简言之String是不可变的。问题在于为什么不可变呢?这主要是性能与安全性的考虑。String是JVM中使用频率非常高的数据类型,涉及很多底层操作,因此SUN公司的工程师在设计String时,很小心的把整个String设置成final禁止继承,避免被其他人继承后破坏。另外一方面String作为高频使用数据类型,SUN对String的内存分配做了很多优化,比如字符串常量池,就是基于String的不可变性来实现的。String内存
原创
1598阅读
0评论
0点赞
发布博客于 8 月前

进程内缓存一致性

首先这个是我们不需要考虑的问题,进程内缓存应该在一个进程,一个请求结束后失效。如果需要长时间有效多个进程数据一致,可以使用redis,codis,memcached等外部缓存。对哪些已经使用进程内缓存来实现多进程数据一致性的问题,通常有三种方案:1.缓存变化探活,如果任何一个进程内缓存变化,则通知其他缓存。2.缓存同步多写,双写。例如利用ROcketMQ等消息队列的消息可靠性,同步将缓存变化更新到所有进程。3.唯一数据中心,进程定时去数据中心拉去数据。经典的分布式系统理论-CAP一致性(cons
原创
98阅读
0评论
0点赞
发布博客于 8 月前

Redis缓存穿透、缓存雪崩问题

穿透雪崩主要是因为查询数据库造成的,那么读写分离,缓存数据查询失败不去查数据库就好了。查的时候有即是有,无即是无,不会再查数据库,缓存的穿透和雪崩问题就不存在了。其次添加数据库和缓存同步功能,保证数据库和缓存数据是一致的即可(需要注意的是这时候数据库数据是有限和相对稳定的,其实如果是海量数据同时放入缓存这种设计策略,我个人认为本身就有些胡闹)。缓存穿透问题现象:请求缓存中么有对对应key的时候去数据库取,大量的缓存穿透可能造出数据库不可用。解决方法:1.数据库查询为空,则空值更新缓存(会增加缓存无
原创
1593阅读
0评论
0点赞
发布博客于 8 月前

Redis基础介绍

简单的说就是11225531,单进程单线程,两种实现方式,两种数据保存模式,五种数据结构,五种数据类型,三种特性,一个文件
原创
1582阅读
0评论
0点赞
发布博客于 9 月前

系统CPU飙高和GC频繁,如何排查

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致系统
转载
54阅读
0评论
0点赞
发布博客于 9 月前

线程池的介绍

线程池的概念线程池是一种多线程使用模式,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。不同的线程池启动线程和停止线程的模式不一样,整体而言线程池会提供空闲线程执行任务。线程池的工作机制线程池模式下,接受任务的主体是线程池,线程池将任务分配给线程。 线程池负责线程的启动,停止,状态监管,任务分配。 线程池的优势 ...
原创
67阅读
0评论
0点赞
发布博客于 9 月前

ThreadLocal源码解读内存泄漏分析

早在JDK1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。但是ThreadLocal并不是一个线程,他是一个线程变量。意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。伴随整个线程生命周期存在,可以作为线程执行,对象跨层,父子线程通信,线程追踪的标记。ThreadLocal作用1、在进行对象跨层传递的时候,使用ThreadLocal可
原创
1614阅读
0评论
0点赞
发布博客于 9 月前

项目管理之项目经理的成败

项目管理流程在PMP中分为五大过程组,十大领域,47个过程,在具体项目中可以根据项目特点适当裁剪和添加,灵活应对。启动过程、规划过程、执行过程、监控过程、收尾过程。启动过程:制定项目章程,识别干系人规划过程:制定项目管理计划,规划范围管理,收集需求,定义范围,创建WBS,规划进度管理,定义活动,排列活动顺序,估算活动资源,估算活动持续时间,制定进度计划,规划成本管理,估算成本,制定预算,规划质量管理,规划人力资源管理,规划沟通管理,规划风险管理,识别风险,实施定性风险分析,实施定量风险分析,规划风险应对
原创
1681阅读
0评论
0点赞
发布博客于 9 月前

springCloud五个常见组件

springCloud五个常见组件服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器——Netflix Hystrix服务网关——Netflix Zuul分布式配置——Spring Cloud Config(图片来自网络)
原创
1626阅读
0评论
0点赞
发布博客于 9 月前

HashMap无序,LinkedHashMap,TreeMap的有序性

HashMap无序,LinkedHashMap会多一个链表存储元素顺序,TreeMap实现SortedMap接口可以对元素进行排序。
原创
48阅读
0评论
0点赞
发布博客于 9 月前

单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式单例模式的五种实现方式1、懒汉式,线程不安全2、懒汉式,线程安全3、饿汉式4、双检锁/双重校验锁(DCL,即 double-checked locking)双检在于1.读取共享变量状态,2创建过程加锁,防止指令重排行public class Singleton { private volatile static Singleton si...
原创
1571阅读
0评论
0点赞
发布博客于 9 月前

双亲委派是什么,怎么打破

双亲委派是JVM类加载机制,目的是确保JVM中使用类的一致性(换言之就是确保公共类都是JVM定义的类)。首先我们看一下JVM启动到代码执行需要那些工作,首先需要启动JVM环境,也就是<JAVA_HOME>lib中定义的各种环境,其次可能需要扩展额外的依赖,也就是<JAVA_HOME>libext中的各种jar包,还有就是运行程序的代码。综上JVM加载器一共包括启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在<JA
原创
324阅读
0评论
0点赞
发布博客于 9 月前

Java多线程的开发中有三种特性:原子性、可见性和有序性

在java开发中高并发,多线程其实是一个问题。需要解决的也是一个问题,那就是内存共享问题。这个如果我们知道JVM的内存模型,这个问题其实很简单,也很基础。本文不谈内存模型,我们直观的进入高并发,多线程所需要面对的开发问题:原子性、可见性和有序性问题。原子性(Atomicity)原子性描述的是多线程执行的问题。原子性是指在一个操作中在cpu一个调度中是连续不可中断的,要么执行成功,要么执行失败。纵观一下几乎说有的原子性说的都是同一个理论。分布式数据库原子性,分布式事务原子性,数据库原子性...
原创
112阅读
0评论
0点赞
发布博客于 9 月前

JAVA 内存模型-内存可见性

Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。主要有两个原则,一个是线程不能直接操作主内存,一个是每个线程只能操作工作内存。换句话说,JVM内存分为两种,主存区和工作内存区。主内存对所有线程共享,工作内存只对所属线程开放,线程之间不能直接互相访问,变量在程序中的传递依赖主存来完成。内存可见性通过对java内存模型的理解,内存的可见性,是指共享变量在主存中对线程是可见的,在工作内存中对其他线程不可见。共享变量需要通过从主内存复制到工作内存,
原创
42阅读
0评论
0点赞
发布博客于 9 月前

全链路追踪目的

微服务背景下1.故障快速定位跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。2.各个调用环节的性能分析分析调用链的各个环节耗时,分析系统的性能瓶颈,找到系统的薄弱环节针对性优化3.数据分析分析用户的行为路径,经过了哪些服务器上的哪个服务加以应用。4.调用拓扑图Trace系统设计目标低侵入、低损耗、大范围部署基本实现埋点日志内容,通过记录traceId、RPCId、调用的开始时间,调用类型,协议类型,调用方ip...
转载
281阅读
0评论
0点赞
发布博客于 9 月前

微服务常见技术框架

摘了了一下常见的微服务技术框架,仔细看一下,其实微服务离我们很近很近。在日常的开发中我们距离微服务架构缺少的只是微服务的治理部分。不过我觉得这未必是一件坏事,微服务架构本身就应该合理控制架构的规模,避免架构本身的治理工作超过业务本身提供的服务。
原创
1642阅读
0评论
0点赞
发布博客于 9 月前

微服务的注册发现

前言 服务注册发现是分布式服务中定位服务使用服务的重要机制,也是服务集群中的重要机制。在我们之前了解的微服务架构中,服务的注册发现同样有着重要的作用。服务注册、服务发现 注册发现机制主要是在分布式集群中给服务提供的服务定位定位和服务负载均衡机制,自身有两个有用的步骤。服务注册——该步骤存储的信息至少包括正在运行的服务的主机和端口信息。服务发现——该步骤允许其他用户可以发现在服务注册阶段存储的信息。常规的服务发现机制有两种一种是客户端服务发现(client-side ...
原创
62阅读
0评论
0点赞
发布博客于 9 月前

Metrics使用常规概念介绍

在我们系统运营过程中,需要时刻掌握系统的运行状态。状态监控是进行预警告警,异常排除,故障排查,应急实施的重要依据。在常规运维系统中我们有很好的工具可以监控服务器的运行状态,但是对业务系统的运行状态监控往往是比较欠缺的。本文介绍的是一个java运行状态监控工具Metrics。Metrics本来是一个Java库, 捕获JVM和应用程序级指标,当我们需要为某个系统某个服务做监控、做统计,就需要用到Metrics。Metrics可以监控代码级别的数据指标,比如TPS,RT等指标。这个指标能反应系统当前的处理能力,帮
原创
355阅读
0评论
0点赞
发布博客于 9 月前

阿里文娱搜索算法实践与思考

导读:视频搜索是涉及信息检索,自然语言处理( NLP ),机器学习以及计算机视觉 ( CV ) 等多领域的综合应用场景,随着深度学习在这些领域的长足进展以及用户对视频生产和消费的广泛需求,视频搜索技术的发展在学术和工业界都取得了飞速的发展,本文将以优酷为例,分享视频搜索的算法实践,首先介绍优酷搜索的相关业务和搜索算法体系,从搜索相关性和排序算法的特点和挑战到技术实践方案的落地,最后会深入介绍优酷在多模态视频搜索上的探索和实践。本次分享主要包括: 视频搜索简介 基础相关性和排序模型 .
转载
105阅读
0评论
0点赞
发布博客于 9 月前

微服务架构_全新视角体验新一代微架构

微服务架构和任何架构一样,是一把双刃剑,善用者天下无敌,滥用者会陷入无底深渊。在使用过程中我认为重点应该在系统基础架构本身,而非框架的使用(当然很多时候有些框架是我们必须用)。
原创
1683阅读
0评论
0点赞
发布博客于 9 月前

关于Docker的一些不得不知道的事

Docker是基于LXC(Linux容器虚拟技术,Linux Container)的开源的应用容器引擎,属于轻量级的虚拟化技术。传统的虚拟化方式是在硬件层面实现虚拟化,需要在操作系统上虚拟化独立的操作系统层,并在虚拟化处理的操作系统层上运行应用,不仅要管理虚拟化的操作系统还需要管理应用。而Docker虚拟化技术是操作系统层面上的虚拟化,直接复用本地主机操作系统,并在虚拟化的操作系统上运行应用,不需要额外管理操作系统,只需要关注应用本身就可以了。在Docker中有三个核心概念,镜像(Image),仓库(Co
原创
76阅读
0评论
0点赞
发布博客于 9 月前

Apache 的架构师们遵循的 30 条设计原则

本文作者叫 Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。他是 Apache Axis2 项目的联合创始人,也是 Apache Software 基金会的成员。他是WSO2流处理器(wso2.com/analytics)的联席架构师。Srinath 撰写了两本关于 MapReduce 和许多技术文章的书。他获得了博士学位。来自美国印第安纳大学。Srinath 通过不懈的努力最终总结出了30条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构...
转载
1552阅读
0评论
0点赞
发布博客于 9 月前

说说哪些NotePad++中,你一定不能错过的鲜为人知的特性

如果说我们日常生活工作中有什么一定要在电脑上处理的,那一定是文本编辑了。相信文本编辑时你一定用过NotePad++,但是你一定也会觉得NotePad++比文本编辑器,好不了多少。如果是这样的话,Notepad++那长长的工具栏你一定没有用过吧。
原创
158阅读
0评论
0点赞
发布博客于 9 月前

Linux常用命令整理

Linux常用命令整理1.pwd 命令用于查看当前工作目录路径。pwd2.目录切换命令cd3.查看目录信息命令ll4.创建文件夹命令mkdir5.文件删除命令rm6.查看机器的负载情况在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。uptime7.查看服务器实时性能vmstat 1vmstat(8) 命令,每
原创
1570阅读
0评论
0点赞
发布博客于 9 月前

分布式数据库之分库分表总结

常见的数据库分库分表主要有基于基于应用层和基于分布式中间件两种方案。基于应用层的实现方案直接连接数据库,额外开销少,但是应用入侵,不变后续扩展。需要应用主动进行数据库和表的路由,实现起来比较麻烦,常见的第三方有sharding-JDBC、TDDL等。基于中间件的应用无入侵,对用户透明。常见的中间件有MyCat,Cobar,DDM等。...
原创
1628阅读
0评论
1点赞
发布博客于 9 月前

华为云分布式数据库中间件DDM

分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,一个实现了Mysql协议栈的数据库代理服务器,通过代理服务器将底层数据库存储引擎以集群方式管理起来。DDM提供分库分表、读写分离、弹性扩容等能力,而且服务器集群管理对用户完全透明,用户通过DDM管理控制台进行数据库运维,使用JDBC等驱动服务或SQL客户端连接数据库,进行数据读写。一、DDM架构:二、功能介绍:水平拆分:在创建分布式数据库后,只需选择拆分...
原创
349阅读
0评论
0点赞
发布博客于 9 月前

数据库集群

关于数据库集群和分布式数据库,说一下我的理解。在我看来数据库集群是一种应用架构模式,分布式数据库是一种软件设计模式。比如问数据库是不是分布式数据库,问的其实是这个数据库是否支持分布式数据库的特性。如果问数据库是不是集群,问的其实是数据存储服务是否使用多台数据库服务器。有一点差别,因为集群的时候是“是否使用多台数据库服务器”,这里并不区分数据库服务器是不是分布式数据库服务器。如果是可以称之为分布式数据库集群,如果不是可以称之为数据库集
原创
57阅读
0评论
0点赞
发布博客于 9 月前

NewSQL发展概述

在NewSql之前,我们接触了Sql,NoSql(Not only Sql),NewSql。NewSql 被定义为下一代数据的发展方向,他是对各种新的可扩展/高性能数据库的简称,兼具Nosql数据库的海量存储管理能力和关系数据库的ACID特性和SQL便利性。简单的来说:SQL+NoSQL=NewSQL。NewSQL系统虽然在的内部结构变化很大,但是它们有三个显着的共同特点,它们都支持关系数据模型;它们都使用SQL作为其主要的接口;满足分布式数据库特点。
原创
346阅读
0评论
0点赞
发布博客于 9 月前

NoSQL数据库如何选型

NoSQL数据库在体系结构和功能上各不相同,整体来说,NoSQL数据库选型需要从数据模型和存储特性两方面综合考虑。目前在市场上有超过24个开源和商业NoSQL数据库,常见有MongoDB,Redis,Memcached,其中Redis、Memcached用作缓存提供数据共享服务方面比较成熟,MongoDB在存储文件方面比较合适(建议不用,主要是接口不一致,数据不一致,事务不一致,你可能会说NoSql不注重这款,可问题是我们业务注重这块啊,即便是最业务无关的日志功能,一旦遇到问题,数据不一致也很麻烦)
原创
1869阅读
0评论
0点赞
发布博客于 9 月前

分布式数据库简述

我一直主张不要过度纠结新技术,应该把重点放在解决业务问题上,让我们一直在解决问题的路上,而不是在追逐新技术的途中。就像本文,本意是总结分布式数据库,却意外的进入到NewSql时代,不得不说喜忧参半啊。在起初查询了很多资料,都没找到2013年之后分布式数据库的发展,这个是我的一个疑惑,想必也是诸位的疑惑。其实原因很简单,数据存储截止目前经历文件存储,关系数据库,Nosql,NewSql四个阶段。分布式数据库为生先死。
原创
1848阅读
0评论
0点赞
发布博客于 9 月前

RocketMQ4.7.0新特性

三月24日(March 04, 2020)Apache RocketMQ发布了4.7.0最新版本。这次的新版本中增加了一个新特性(同步复制更改为管道方式)。同时也做了一些优化,包括防止客户端提交过于频繁,添加MessageExt的获取BrokerName方法等。修复的bug包括修复MessageClientIDSetter注入问题,修复关于异步发送重试的问题等。本文对部分更新进行翻译,然后补充一下最新的源码。(没办法每次都看英文版太累了,本文摘录了一部分自己感兴趣的内容。)
原创
435阅读
0评论
0点赞
发布博客于 9 月前

分布式事务的新生:一个叛教者的见解

论文原本结构,个人感觉有些不符合中文阅读习惯,所以在保持原文翻译的基础,分阶段做了目录。这个版本是一个更新和缩写版的论文,在2007年使用同样的名字首次发表在CIDR(数据库研究创新会议)上,内容和原版基本相同。不同于第一版本,在这个版本中作者首次提出了TCC(Tentative Operations, Confirmation,and Cancellation)的概念。译文全文3万字左右,还是耐心看几遍吧,作者提出的一下假设,发表的观点,做出的推论细看其实很有价值。
原创
89阅读
0评论
1点赞
发布博客于 9 月前

Life-beyond-Distributed-Transactions.pdf

PAT HELLAND 本文是一个更新和缩写版的论文,在2007年使用同样的名字首次发表在CIDR(数据库研究创新会议)上。
pdf
发布资源于 9 月前

分布式事务实施方案总结

一、术语介绍TX协议:应用或者应用服务器与事务管理器的接口XA协议:全局事务管理器与资源管理器的接口。两阶段提交协议(Two-phase Commit,2PC)BASE理论:BA指的是基本业务可用性,支持分区失败,S表示柔性状态,也就是允许短时间内不同步,E表示最终一致性,数据最终是一致的,但是实时是不一致的。CAP定理:对于共享数据系统,最多只能同时拥有CAP其中的两个幂等操作:重复调用多次...
原创
1601阅读
0评论
0点赞
发布博客于 10 月前

分布式事务概述

RocketMQ官网介绍中这样描述RocketMQ的事务消息“消息队列 RocketMQ 版提供类似 X/Open XA 的分布式事务功能,通过消息队列 RocketMQ版事务消息能达到分布式事务的最终一致”。这段描述给我带来的困惑一点都不比出门没带手机更让我难受的多。我的逻辑回路里面一个高可用的分布式服务是无法满足分布式事务的一致性。因为消息传递过程具有不可靠性,所以分布式服务要做到每个环节都满足事务的ACID,最终事务也满足ACID是不可能的。那么剩下的问题就是理解出现了分歧,本文的目的就是在于解决分布
原创
988阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ可视化管理控制台-使用指南

RocketMQ提供一个自带web项目rocketmq-console-***.war,对RocketMQ集群进行可视化管理。控制台提供运维管理,查询消息,查询消息轨迹,查看消费者状态,重置消费位点,死信队列,全球消息路由,查看订阅关系,资源报表,监控报警。
原创
676阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ安装部署

一、简介rocketMQ二、相关术语1.Nameserver 为整个MQ集群提供服务协调与治理,可集群部署。集群中Nameserver互相独立,彼此没有通信关系,每个节点独立记录维护完整的Topic、Broker的信息,及监控Broker的运行状态。2.Broker 为MQ集群提供消息中转、存储服务。Broker分为Master与Slave,一个Maste...
原创
1594阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ生产者及消费者实现-官网实例

生产者有三种模式,同步,异步(提供重试机制),单向。消费者提供错误重试机制。
原创
1978阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ常见问题--producer消息重试

RocketMQ生产者的消息重试是在异步模式下实现消息重发机制,这也是RocketMQ消息可靠性的一方面,话不多说标记一下源码。
原创
1741阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ常见问题——顺序消费原理以及实现

RocketMQ提供局部顺序一致性的机制,Broker为每个Topic每个QueueID构建消息队列(ConsumerQueue),实现了单个队列中的消息严格有序。按照业务划分消息队列,然后将需要顺序消费的消息发往同一队列,消费者根据消息队列拉取消息进行消费,即可做到顺序消费。顺序消费原理1.生产者Producer端:生产端实现有序性,依赖于MessageQueue选择能力,Ro...
原创
1686阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ常见问题-消息有序性

RocketMQ能做到顺序消费,但是单独依赖RocketMQ做不到消息有序性,保证消息有序性必须进行业务干预。通常来讲,顺序消费是指消息的消费顺序和消息的投递顺序保持一致,但是消息有序性是指消息参数的顺序与消息最终的使用顺序保持一致。我之前的观点是消息的生命周期包含消息产生源,消息发送,消息投递,消息消费,消息持久化(业务使用消息)。而实际上RocketMQ只负责了消息发送,消息投递,消息消费这三个阶段,在消息的整个生命周期中如果没有任何干预,当消息产生源产生无序的消息,消息队列(RocketMQ顺序
原创
534阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ消息存储--Index构建过程

RocketMQ中Broker在收到生产者发送的消息时,会将消息持久化到磁盘,这些消息以文件的形式存储在内存或者磁盘中,不能被直接用来消费,这个也很好理解,毕竟消息会有一个很大的体量,如果直接操作的话效率会很低。RocketMQ的Index提供一个全局索引,可以通过key和时间戳进行消息查询。
原创
1639阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ消息存储--ConsumeQueue构建过程

通过源码追溯,我们发现Store包里的DefaultMessageStore是Consumer的构建入口(DefaultMessageStore做了很多工作并不仅限于构建ConsumerQueue)。DefaultMessageStore提供ConcurrentMap(private final ConcurrentMap<String/* topic */, Con...
原创
239阅读
0评论
0点赞
发布博客于 10 月前

Rocketmq消息存储(顺序写,随机读)

RocketMQ消息存储高性能,底层依赖于nio提供的基于内核的I/O管理(ZeroCopy)。在RocketMQ中,文件的读取主要通过MappedByteBuffer进行操作,文件的中转主要通过FileChannel模型。文件基于内核操作,以及大部分的使用基于内存都是直接提高RocketMQ的关键点。对RocketMQ消息存储的理解,我是分两部分进行的,第一部分是梳理消息存储...
原创
2352阅读
0评论
0点赞
发布博客于 10 月前

Rocketmq消息存储(顺序写,随机读)--DefaultMessageStore的启动梳理

先写一半开个头,后面补吧。 消息存储是有ConsumerQueue和CommitLog配合完成。一个Topic里面有多个MessageQueue,每个MessageQueue对于一个ConsumerQueue.ConsumerQueue是一个逻辑队列里面记录者消息的物理存储地址,consumer根据消息的consumeQueue找到消息存储具体路径,从而读取里面信息Commit...
原创
299阅读
0评论
0点赞
发布博客于 10 月前

ZeroCopy高性能零拷贝(DMA)

操作系统的核心是内核,独立于分内核应用程序,可以访问受保护的内存空间,也可以访问底层硬件设备。为了避免用户进程直接操作内核,保证内核安全,操作系统将虚拟内存划分为两部分,一部分是内核空间(Kernel-space),一部分是用户空间(User-space)。在传统文件读取流程中,数据信息需要经过用户空间之后才能在底层设备之间进行转换(比如磁盘与磁盘之间,网卡与网卡之间,磁盘与网卡,网...
原创
1853阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ常见问题-服务高可用

MQ架构配置顺序写、随机读、零拷贝同步刷盘SYNC_FLUSH和异步刷盘ASUNC_FLUSH同步复制和异步复制,同步BrokerRoe配置发送端高可用双主双从架构:当Master不可用是,组内其他Master可用,但是机器资源不足的时候,需要手工将Slave转成Master消费端高可用Broker读写分离:Master提供读写,Slave支持读Consumer消费自动切换:当Ma...
原创
1525阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ常见问题-RocketMQ消息堆积问题-TOPIC队列扩容

划个重点:RocketMQ是按照队列进行消息负载的,如果consumer中的一台机器由于机器硬件、系统、远程RPC或者JavaGC等原因导致该机器上的消息队列不能及时处理,整个消息队列的消息都会堆积。
原创
3356阅读
1评论
0点赞
发布博客于 10 月前

RocketMQ常见问题-RocketMQ消息堆积问题-consumer消费异常

工具:RocketMQ控制台现象描述业务量无明显高峰,RocketMQ服务器性能正常,consumer服务器性能正常,这种情况下RocketMQ服务告警。问题分析1.确认消费者GROUP状态,GROUP管理-选中GROUP-消费者状态查询,查看消费者GROUP状态是否高于预期2.消息轨迹跟踪,消息轨迹-创建查询-Message ID查询-输入对于的消息。如果消息阻塞会出现,消息投递给B...
原创
2363阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ常见问题-RocketMQ消息堆积问题

RocketMQ消息堆积主要分为三个层次的问题: 其一是producer生产速率过快,什么场景呢,比如producer故障,比如DOS攻击,比如业务高峰(超过企业预估的,例如 12306订票,双十一下单,这些一开始的时候都有超过预期的情况)。 其二是Broker消息堆积,比如Broker的性能瓶颈,Broker同步策略导致消...
原创
4448阅读
0评论
2点赞
发布博客于 10 月前

RocketMQ常见问题-如何保证消息传递的可靠性

作为一个消息中间件,RocketMQ的消息可靠性就是指确保消息数据不丢失。具体而言就是从消息在生产者产生,经过服务端投递,一定能被消费者消费。消息生产者Producer消息发送有三种方式:同步,异步,单向(Oneway)1.同步发送 ,需要同时等待SendResult sendResult = producer.send(message);2.异步发送,异步线程发送出去...
原创
1869阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ常见问题-消息重复消费和消息重复的问题

RocketMQ不解决消息重复问题,RocketMQ不解决消息重复问题,RocketMQ不解决消息重复问题,重要的事情说三遍。基本上说我很讨厌有人问这个问题,问这个问题首先你对消息的生命周期缺乏理解,其次RocketMQ的定位不是很清楚,RocketMQ单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节。换句话说单机RocketMQ的每分钟...
原创
2372阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ启动多个Producer实例

RocketMQ启动过多个Producer实例,本质就是producer实例的问题方法一:采用RocketMQ 自身管理Producer实例,这种情况可以通过设置不同的InstanceName来实现。方法二:将Producer对象交给Spring管理,通过Spring容器生成两个不同的Producer实例。
原创
573阅读
0评论
0点赞
发布博客于 10 月前

MQ同类产品对比以及选型-RocketMq的背后故事

2012年RocketMQ是阿里巴巴开源的消息中间件,着眼与用于交易核心消息的流转,做为阿里巴巴开源的消息中间件,主要面向有序消息场景能够提供更大的消息堆积能力,拉模式,消息持久化在磁盘。。阿里巴巴消息中间件起源于2001年的五彩石项目,Notify在这期间应运而生,用于交易核心消息的流转。到2012年RocketMQ正式开源RocketMQ名字的由来没有找到相关人的表述,...
原创
2288阅读
0评论
0点赞
发布博客于 10 月前

MQ同类产品对比以及选型-Kafka的背后故事

Kafka诞生于LinkedIn,使用Scala语言编写,目标是为处理实时数据提供一个统一、高通量、低等待的平台。Kafka设计之初是为了解决Linkedin公司数据管道(datapipe)问题(主要是监控和跟踪系统的需求,也就是日志)。截至2015年8月, Kafka帮助LinkedIn的使用量增长了超过1万亿条消息,每天消耗的数据超过1 PB。Kafka名字的由来 ...
原创
2270阅读
0评论
0点赞
发布博客于 10 月前

MQ同类产品对比以及选型-RabbitMQ的背后故事

RabbitMQ是采用Erlang语言实现的AMQP开源版本,用于解决JMS消息协议标准化使得大型系统之间应用程序之间的结合变动的脆弱(JMS的解耦特性)。为什么叫RabbitMQ 兔子行动非常迅速而且繁殖起来也非常疯狂,所以就把Rabbit用作这个分布式软件的命名----《RabbitMQ实战》。RabbitMQ产生背景1、消息队列系统最早由26岁孟买工程师...
原创
750阅读
0评论
0点赞
发布博客于 10 月前

JMS接口API和技术规范

JMS(JAVA Message Service,java消息服务)API是Java平台上有关面向消息中间件(MOM)的技术规范,2001年6月25日sun公司发布第一个版本,后经过多次完善。它是一个接口和语义的集合,这些语义定义了应用程序组件基于JavaEE平台创建、发送、接收和读取消息的标准和规范。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
原创
2224阅读
0评论
0点赞
发布博客于 10 月前

java快速创建List

嗯 创建方式跟JDK的版本有关,JAVA8中可以使用Arrays.asList,Java9中可以使用List.of。public static void main(String[] args) { // TODO Auto-generated method stub //1.使用Collections.addAll()方法,前提还是需要手动 new ArrayList Array...
原创
1146阅读
0评论
0点赞
发布博客于 10 月前

Java 8 使用lambda表达式和函数式接口

Java 8 在语言层面引入Lambda表达式,用以支持函数式编程风格。Lambda表达式使用五行代码转换为单个语句来解决匿名内部类的庞大性。 这个简单的水平解决方案解决了内部类提出的“垂直问题”。本文对lambda的介绍分为三个方面,语法、常规使用和综合应用三个部分。1.语法(参数类型 参数名称) ‐> { 代码语句 }:参数非必须,大括号非必须(对于返回值问题,没有大括号的时候表达式的执...
原创
648阅读
0评论
0点赞
发布博客于 10 月前

Java 中判断两个对象是否相等

嗯先铺垫一下Java中的相等问题,比较方法有equals和==,比较的方向有内容相等和对象相等。1.equals:只能比较对象,比较对象地址是否相等;可以重写equals方法,比如String重写equals方法改为内容是否相等。2.==:可以比较基础数据类型和对象,基础数据类型比较值是否相等,对象比较地址是否相等。看一个经典的问题,String的equals问题。public...
原创
1178阅读
0评论
0点赞
发布博客于 10 月前

RocketMq 消费者

总结一下RMQ消费者的一些问题。
原创
1626阅读
0评论
1点赞
发布博客于 10 月前

XML解析中转义字符问题

XML中不允许出现一些特殊字符,这些字符需要使用转义字符代替.XML文件中不允许出现一些特殊字符,对这些特殊字符XML采用转义字符代替或者使用<![CDATA[ ]]>声明,<![CDATA[]]>标记所包含的内容为纯文本,不会进行转义;XML特殊字符显示结果 描述 转义字符 十进制 < 小于号 &...
原创
1048阅读
0评论
0点赞
发布博客于 10 月前

SAXParseException 前言中不允许有内容

项目中使用cml作为工作流配置文件,今天运行时一直报以下异常,折腾一番后总结为:读取文件异常,文件格式不符合要求或者文件编码不符合要求,检查一下读取的文件,如果没有问题的话,检查以下应用程序是否读取了其他不符合要求的文件。javax.xml.bind.UnmarshalException - with linked exception:[org.xml.sax.SAXParseExc...
原创
2002阅读
0评论
0点赞
发布博客于 10 月前

java反射遍历实体的所有属性名称和值-自定义和jdk自带类型

问题的产生是由于泛型方法中如果实体本身就是基础数据类型的类该如何对实体进行处理,首先上一段代码吧:/** * @param <T>:声明方法是一个泛型方法,T声明泛型类型 * @param T 声明返回类型 * @param classz:泛型类型的具体类型,体现“参数化” * @param classz * @return */public static...
原创
2288阅读
0评论
0点赞
发布博客于 10 月前

java泛型方法实现要点

java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。优点是类型安全、消除强制类型转换、提高的运行效率、潜在的性能收益。这里的重点是"参数化类型",这表明两个关键信息,一个是声明的是类型,第二个是声明的类型是由使用的参数决定。带返回值的泛型方法示例/** * @param &...
原创
1024阅读
0评论
0点赞
发布博客于 10 月前

Java 语言中xml和bean之间的相互转换(Try-with-resources)

XML 指可扩展标记语言,XML 被设计用来传输和存储数据,常用的场景是数据交换和信息配置。虽然后期随着信息技术的发展在数据交换场景的地位远不如从前,但是作为信息配置工具,特别是配置信息多和配置信息复杂的场景,依然有着比较广泛的应用。 然后闲话不多说,先上一段Java版本的xml和对象相互转换的代码。/** * java对象转换为xml文件 *...
原创
616阅读
0评论
0点赞
发布博客于 10 月前

Java -Byte[]和String之间的转换问题

Java语言中将字符串和字节数组之间相互转换的场景很多,比如我们常见的,socketChannel,netty,RocketMQ这类的应用在数据传输过程中都需要将字串转换为Byte数组,然后再将Byte数据转换为String。比如RSA,DES之类的加解密场景,也是需要对转换为Byte数据后进行。本文总结了Byte[]和String之间的转换原理以及实现。 首先来一段代...
原创
807阅读
0评论
0点赞
发布博客于 10 月前

HashMap的两种遍历方法EntrySet或者KeySet性能分析

首先列举几种HashMap的遍历方法1.迭代器entrySet Map map = new HashMap();  Iterator iter = map.entrySet().iterator();  while (iter.hasNext()) {   Map.Entry entry = (Map.Entry) iter.next();   Object key = en...
原创
1593阅读
0评论
0点赞
发布博客于 10 月前

Java动态代理三种实现模式

代理模式是指客户端通过代理对象访问实际对象的设计模式。通常我们在处理同一种类型的服务,这个服务的大部分都是相同的,只是在具体的细节上存在差异。这种情况为了避免重复处理相同的服务部分,我们就可以将具体实现细节抽象出来,通过代理实现,在整体结构上种类繁多的服务看起来如同只有一个服务,区别只是在于服务具体的细节不一样。Java提供三种方式实现动态代理:JDK代理,CGLIB和通过编译...
原创
702阅读
0评论
0点赞
发布博客于 10 月前

git清除本地账号密码

git的使用分为两种ssh和http,清除本地账号密码首先需要确定使用的是哪种模式。查看模式命令如下:1.git config --list查看2.git remote -v查看如果是http模式可以运行一下两个命令实现1.查看本地安全策略(git config --list也可以查看,实际上这个命令可以查看所有了设置了)git config credential.helper...
原创
2910阅读
0评论
1点赞
发布博客于 10 月前

RocketMQ 消费者Consumer消息的消费策略

RocketMQ 消费者Consumer消息的消费策略简略记录一下消费者消费消息跟group和消息队列(准确点说是消息队列的offset)以及消费模式有关(以下未特别说明默认为集群模式)。1.对同一个group的消费者实例,每个消费者group只能消费一次消息。消费完成后移动消息队列的offset,保证其他消费者不会重复消费。2.多个Group消费者,每个group都会订阅一份消息,每个...
原创
1105阅读
0评论
0点赞
发布博客于 10 月前

RocketMQ生产者Producer启动时是否需要指定TOPIC

Producer启动是和Name Server建立连接不需要指定TOPIC,Producer发送消息需要和Broker(master)建立连接需要指定TOPIC。关于这个结论我们可以从Producer的使用和连接机制着手理解,理论结合实际嘛。启动代码和消息发送代码/*1.producer的配置 init-start方法在实例化对象的时候执行,通过配置文件我们可以直观的发现“...
原创
2123阅读
0评论
0点赞
发布博客于 10 月前

SpringBoot2.0以后MAVEN依赖问题

SpringBoot2.0以后MAVEN依赖问题,这里呢我记录一个自己踩的坑“Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/ErrorCoded。”=缺少spring-boot-starter-jdbc依赖。项目SpringBoot版本升级到2.2.6.RELE...
原创
2265阅读
0评论
0点赞
发布博客于 10 月前

Spring Boot2.0以上版本WebServerFactoryCustomizer进行WebServer的个性化配置

SpringBoot从1.5.3升级到2.1.6有不少问题,比较典型的一个是WebServer的个性化设置问题。在1.5.3中可以直接通过实行EmbeddedServletContainerCustomizer就可以方便设置。@ComponentScan(basePackages ={"******"})@SpringBootApplication(exclude={DataS...
原创
4064阅读
0评论
0点赞
发布博客于 10 月前

JDK源码解读-Map合并-HashMap的putAll方法

JDK1.8为Map提供了丰富的Map合并方法,包括Map中声明的putAll、merge方法,Stream API 提供的Stream.concat(),Stream.of(),以及Stream API 的增强库提供的append().toMap方法都提供了很好的解决方案。Stream的可以参考一下https://blog.csdn.net/w605283073/article/de...
原创
2336阅读
0评论
0点赞
发布博客于 10 月前

企业架构-数据服务总线思路

数据服务总线是快速数据集市构建工具,提供企业内部以及跨企业间不同业务主题之间数据共享和同步服务,设计的目的是对最终业务数据进行预处理,以减少业务复杂度提高访问效率。背景描述 在常规的业务系统中数据通常是分散存储,数据源的位置从同一个系统的不同服务,到不同系统的不同服务,以及到跨企业服务。直接导致请求链路增加,业务复杂度提高,系统稳定性降低。同时数据源分散也导致用...
原创
4810阅读
0评论
0点赞
发布博客于 10 月前

Redis源码初探之数据结构-跳跃表

Redis中有两个地方用到了跳跃表,一个是有序集合键,一个是集群节点的内部数据结构。1.数据结构/* ZSETs use a specialized version of Skiplists */typedef struct zskiplistNode { sds ele;/**/用于存储字符串类型的数据 double score;/*排序分值*/ struct z...
原创
3939阅读
0评论
0点赞
发布博客于 1 年前

Redis源码初探之数据结构

Redis可以存储键和5种不同类型的数据结构,它们是STRING(字符串),lIST(列表),SET(集合),HASH(散列表),ZSET(有序集合)。1.字符串(String)可以是字符串、整数或者浮点数。Redis对整个字符串或者其中部分执行操作。对整数和浮点数执行自增或者自减操作。2.链表(List)链表的每个节点都包含一个字符串.Redis可以从链表两端插入或者弹出元素。/*链表...
原创
3990阅读
0评论
0点赞
发布博客于 1 年前

Nginx源码初探之基础架构 -进程之间的通信

Nginx进程之间的通信机制介绍 进程之间的通信方式如共享内存,套接字、管道、消息队列、信号等。Nginx框架选择了三种方式:共享内存、套接字、信号来访问共享资源。同时Nginx使用了原子操作、信号量、文件锁来实现各个进程直降安全有序的访问资源。1.共享内存 共享内存是Linux下提供的最基本的进程间的通信方式,他通过mmap或者shmget系统调用内存中创建了一块连续...
原创
4030阅读
0评论
0点赞
发布博客于 1 年前

Nginx源码初探之upstream机制 -UPSTREAM机制介绍

upstream机制介绍 Nginx访问上游服务器主要是基于upstream机制。upstream机制是事件驱动框架与HTTP框架的综合,它既属于HTTP框架的一部分,又可以处于基于TCP的应用层协议。为了帮助Nginx实现反向代理功能,upstream机制处理提供基本的与上游交互的功能之外,还实现里转发上游应用层协议的响应包体到下游客户端的功能。 Nginx访问上...
原创
6368阅读
0评论
0点赞
发布博客于 1 年前

Nginx源码初探之HTTP模块 -HTTP框架执行流程

HTTP框架主要是针对基于TCP事件框架解决HTTP的网络传输、解析、组装等问题。主要涉及四个方面。第一,集成事件驱动机制,第二HTTP模块协同,第三HTTP框架允许将一个请求分为多个子请求,第四基础工具接口,比如接受HTTP包体,发送HTTP响应头部,响应包体等。。通过HTTP框架处理HTTP请求,探索HTTO请求在Nginx中的生命周期。HTTP框架执行流程和一般的HTTP请求...
原创
4009阅读
0评论
0点赞
发布博客于 1 年前