- 博客(115)
- 资源 (12)
- 收藏
- 关注
原创 每日一坑:eclipse2021 +lombok安装
先记一下笔记贴一下错误:Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @baa9ce4说一下解决.
2021-09-05 07:40:55
1412
6
原创 06-redis知识图谱,生产问题汇总
加机器,扩容永远是解决问题的最佳途径。良好的服务高可用性,不是简单的通过对应用的配置和调优来实现的。简单的说,就是你不可能通过调优让rocketmq达到kafka的吞吐量。你也不可能通过简单的调优,让kafka达到rocketmq的一致性。...
2021-03-26 09:43:22
323
原创 大数据分析之OLTP与OLAP的区别
业务类系统主要供基层人员使用,进行一线业务操作,通常被称为OLTP(On-Line Transaction Processing,联机事务处理)。数据分析的目标则是探索并挖掘数据价值,作为企业高层进行决策的参考,通常被称为OLAP(On-Line Analytical Processing,联机分析处理)。从功能角度来看,OLTP负责基本业务的正常运转,而业务数据积累时所产生的价值信息则被OLAP不断呈现,企业高层通过参考这些信息会不断调整经营方针,也会促进基础业务的不断优化,这是OLTP与O.
2021-03-23 16:32:43
307
原创 02-故障隔离和服务恢复
SAE 作为一个 Serverless 平台,具备很多自运维的能力,故障隔离即将故障的应用节点从注册中心摘除。服务恢复即应用恢复后重启服务器。
2021-03-11 14:52:24
285
1
原创 Serverless 提高 Java 微服务治理效率
Serverless 应用引擎(SAE)基于 Alibaba CloudToolkit 插件+ 跳板机可以实现:本地服务订阅并注册到云端 SAE 内置的注册中心; 本地服务可以和云端 SAE 服务互相调用。在传统的发布流程中,客户端有一个服务端调用报错期,这是由于客户端没有及时感知到服务端下线的实例造成的,这种情况主要是因为服务提供者借助微服务,通知消费者来更新服务提供的列表造成的。当微服务注册中心感知到服务下线以后,会通知服务消费者其中一个服务节点已下线,这里有两种方式:注册中心的推送和消费者的轮
2021-03-11 14:47:30
255
2
原创 01-keepalived脑裂现象
由于某些原因,导致两台keepalived高可用服务器在指定时间内,无法检测到对方存活心跳信息,从而导致互相抢占对方的资源和服务所有权,然而此时两台高可用服务器有都还存活。可能出现的原因:1、服务器网线松动等网络故障;2、服务器硬件故障发生损坏现象而崩溃;3、主备都开启了firewalld 防火墙。4、在Keepalived+nginx 架构中,当Nginx宕机,会导致用户请求失败,但是keepalived不会进行切换,所以需要编写一个检测nginx的存活状态的脚本,如果nginx不存活,则ki
2021-03-09 16:33:25
946
1
原创 供应链库存管理-柔性快反供应链
柔性快反供应链是新零售模式下的产物,体现的是全链环节一体化的紧密协同过程,将商品企划、设计、生产、分销、零售等环节紧密结合,以月/周为单位做PDCA循环(即计划-plan,执行-do,检查-check,处理-act). 这种模式要求参与企业做好关于分工与协作、信任与交易、产品与服务以及如何更好的服务顾客.要做到这一点其实非常困难,首先外部环境,供应链各个节点的利益点不同,不可能做到信息共享,利益共享.这点上7-11的加盟店商业模式非常值得借鉴,加盟店模式下7-11完全控制价格和消费...
2020-10-26 14:40:53
3122
原创 供应链库存管理-供应链库存案例分析
供应链管理的实现,是把供应商、生产厂家、分销商、零售商等在一条供应链上的所有节点企业都联系起来进行优化,是生产资料以最快的速度,通过生产、分销环节变成增值的产品,到达有消费需求的消费者手中.这不仅可以降低成本,减少社会库存,而且使社会资 源得到优化配置,更重要的是通过信息网络、组织网络实现了生产以及销售的有效链接和物流、信息流、资金流的合理流动. 供应链库存管理主要是核心企业的供应链模式和运营战略的影响.而且通常是融合出现的,根据运策略的不同对不同的场景采用不同的供应链库存管理策略.
2020-10-26 12:43:29
6552
原创 供应链库存管理-库存控制策略
根据企业在供应链中所担任的角色不同,生产商,供应商,分销商,零售商,物流服务商的库存管理策略各有侧重.但是对于库存物资本身要满足库存物资最优化的原则,及管理成本最优,储存成本最优,物资价值最大化等多角度综合最优.整体上来说都包括物资价值控制,库存变动控制,库存盘点这样的三个层面.
2020-10-22 11:14:12
1961
原创 供应链库存管理概述
VMI是一种供应链集成化运作的决策代理模式,它把客户的库存决策权代理给供应商,由供应商代理分销商或批发商行使库存决策的权力。JMI是一种风险分担的库存管理模式。风险分担表明如果把各地的需求集合起来处理,可以降低需求的变动性,因而当把不同地点的需求汇集起来,一个顾客的高需求很可能被另一个顾客的低需求所抵消。需求变动性的降低能够降低安全库存。CMI是零售商,或者说销售阶段主导,第三方物流是物流主导.CPFR听起来是很高大上,也确实非常有效,只是需要解决的问题也很多.首要问题就是信任问题
2020-10-21 19:36:14
4039
转载 阿里云负载均衡SLB 详解
SLB概念负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(Elastic Compute Service,简称 ECS)的流量分发控制服务。负载均衡服务通过设置虚拟服务地址,将位于同一地域的多台ECS实例虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。负载均衡服务会检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实
2020-09-14 17:23:55
3020
原创 数据与链表,指针,集合的区别
讨论数据结构之间的区别,本质上是讨论数据结构的构造,内存分配,增删改查效率,应用场景这几个层次来考虑,针对数据和链表的区别我们大概可以做如下的归纳。数组:线性数据结构;连续内存空间,无法改变容量;存储相同类型数据;支持随机访问(查询),插入、删除较慢(时间复杂度O(n),因为要涉及遍历定位);业务开发中,适合做底层数据结构。(这点不知道你有没有和我一样在探索String,Nginx,Redis等等吧的时候,也一样疑惑或底层数据结构为什么都是数组)链表:链式数据结构;非连续内存,内存可扩充;存储相同数据类
2020-06-09 09:57:32
2412
原创 分布式无处不在,数据库事务弱一致性是否必然
在计算机系统中,指令是计算机运行的最小的功能单位。在一个多核计算机中,以指令为单位,涉及两条及以上指令的操作都将面临事物一致性的问题。因为两条以上指令涉及多个CPU协作,已经不满足事务一致性的原则了。深入计算机对机器指令的执行以计算机元器件转变为单位,其实每条指令执行,到元器件最终发生转变,这个过程也是被拆分为若干执行过程。如果我们对计算机运行机制不是很理解,那么我们把原子操作放大一点,比如数据库原子操作,比如分布式事务原子性,比如分布式应用原子性。其实基本上我们的任务计算机操作都是非原子性的,当我们在谈论
2020-06-09 09:33:40
1947
原创 java中String类为什么要设计成final
这是个很有趣的问题,String设计成final类型,不能被继承、不能被重写,简言之String是不可变的。问题在于为什么不可变呢?这主要是性能与安全性的考虑。String是JVM中使用频率非常高的数据类型,涉及很多底层操作,因此SUN公司的工程师在设计String时,很小心的把整个String设置成final禁止继承,避免被其他人继承后破坏。另外一方面String作为高频使用数据类型,SUN对String的内存分配做了很多优化,比如字符串常量池,就是基于String的不可变性来实现的。String内存
2020-06-08 19:08:07
1823
原创 进程内缓存一致性
首先这个是我们不需要考虑的问题,进程内缓存应该在一个进程,一个请求结束后失效。如果需要长时间有效多个进程数据一致,可以使用redis,codis,memcached等外部缓存。对哪些已经使用进程内缓存来实现多进程数据一致性的问题,通常有三种方案:1.缓存变化探活,如果任何一个进程内缓存变化,则通知其他缓存。2.缓存同步多写,双写。例如利用ROcketMQ等消息队列的消息可靠性,同步将缓存变化更新到所有进程。3.唯一数据中心,进程定时去数据中心拉去数据。经典的分布式系统理论-CAP一致性(cons
2020-06-07 15:38:19
393
原创 Redis缓存穿透、缓存雪崩问题
穿透雪崩主要是因为查询数据库造成的,那么读写分离,缓存数据查询失败不去查数据库就好了。查的时候有即是有,无即是无,不会再查数据库,缓存的穿透和雪崩问题就不存在了。其次添加数据库和缓存同步功能,保证数据库和缓存数据是一致的即可(需要注意的是这时候数据库数据是有限和相对稳定的,其实如果是海量数据同时放入缓存这种设计策略,我个人认为本身就有些胡闹)。缓存穿透问题现象:请求缓存中么有对对应key的时候去数据库取,大量的缓存穿透可能造出数据库不可用。解决方法:1.数据库查询为空,则空值更新缓存(会增加缓存无
2020-06-07 15:13:27
1708
转载 系统CPU飙高和GC频繁,如何排查
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致系统
2020-06-06 15:36:28
252
原创 线程池的介绍
线程池的概念线程池是一种多线程使用模式,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。不同的线程池启动线程和停止线程的模式不一样,整体而言线程池会提供空闲线程执行任务。线程池的工作机制线程池模式下,接受任务的主体是线程池,线程池将任务分配给线程。 线程池负责线程的启动,停止,状态监管,任务分配。 线程池的优势 ...
2020-06-06 14:43:33
234
1
原创 ThreadLocal源码解读内存泄漏分析
早在JDK1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。但是ThreadLocal并不是一个线程,他是一个线程变量。意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。伴随整个线程生命周期存在,可以作为线程执行,对象跨层,父子线程通信,线程追踪的标记。ThreadLocal作用1、在进行对象跨层传递的时候,使用ThreadLocal可
2020-06-06 12:05:01
1768
原创 项目管理之项目经理的成败
项目管理流程在PMP中分为五大过程组,十大领域,47个过程,在具体项目中可以根据项目特点适当裁剪和添加,灵活应对。启动过程、规划过程、执行过程、监控过程、收尾过程。启动过程:制定项目章程,识别干系人规划过程:制定项目管理计划,规划范围管理,收集需求,定义范围,创建WBS,规划进度管理,定义活动,排列活动顺序,估算活动资源,估算活动持续时间,制定进度计划,规划成本管理,估算成本,制定预算,规划质量管理,规划人力资源管理,规划沟通管理,规划风险管理,识别风险,实施定性风险分析,实施定量风险分析,规划风险应对
2020-06-06 10:00:18
1896
原创 springCloud五个常见组件
springCloud五个常见组件服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器——Netflix Hystrix服务网关——Netflix Zuul分布式配置——Spring Cloud Config(图片来自网络)
2020-06-05 18:10:46
1788
原创 HashMap无序,LinkedHashMap,TreeMap的有序性
HashMap无序,LinkedHashMap会多一个链表存储元素顺序,TreeMap实现SortedMap接口可以对元素进行排序。
2020-06-05 11:28:50
231
原创 单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式单例模式的五种实现方式1、懒汉式,线程不安全2、懒汉式,线程安全3、饿汉式4、双检锁/双重校验锁(DCL,即 double-checked locking)双检在于1.读取共享变量状态,2创建过程加锁,防止指令重排行public class Singleton { private volatile static Singleton si...
2020-06-05 10:08:09
1642
原创 双亲委派是什么,怎么打破
双亲委派是JVM类加载机制,目的是确保JVM中使用类的一致性(换言之就是确保公共类都是JVM定义的类)。首先我们看一下JVM启动到代码执行需要那些工作,首先需要启动JVM环境,也就是<JAVA_HOME>lib中定义的各种环境,其次可能需要扩展额外的依赖,也就是<JAVA_HOME>libext中的各种jar包,还有就是运行程序的代码。综上JVM加载器一共包括启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在<JA
2020-06-05 09:57:24
865
原创 Java多线程的开发中有三种特性:原子性、可见性和有序性
在java开发中高并发,多线程其实是一个问题。需要解决的也是一个问题,那就是内存共享问题。这个如果我们知道JVM的内存模型,这个问题其实很简单,也很基础。本文不谈内存模型,我们直观的进入高并发,多线程所需要面对的开发问题:原子性、可见性和有序性问题。原子性(Atomicity)原子性描述的是多线程执行的问题。原子性是指在一个操作中在cpu一个调度中是连续不可中断的,要么执行成功,要么执行失败。纵观一下几乎说有的原子性说的都是同一个理论。分布式数据库原子性,分布式事务原子性,数据库原子性...
2020-06-05 09:35:23
364
原创 JAVA 内存模型-内存可见性
Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。主要有两个原则,一个是线程不能直接操作主内存,一个是每个线程只能操作工作内存。换句话说,JVM内存分为两种,主存区和工作内存区。主内存对所有线程共享,工作内存只对所属线程开放,线程之间不能直接互相访问,变量在程序中的传递依赖主存来完成。内存可见性通过对java内存模型的理解,内存的可见性,是指共享变量在主存中对线程是可见的,在工作内存中对其他线程不可见。共享变量需要通过从主内存复制到工作内存,
2020-06-05 08:33:06
195
转载 全链路追踪目的
微服务背景下1.故障快速定位跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。2.各个调用环节的性能分析分析调用链的各个环节耗时,分析系统的性能瓶颈,找到系统的薄弱环节针对性优化3.数据分析分析用户的行为路径,经过了哪些服务器上的哪个服务加以应用。4.调用拓扑图Trace系统设计目标低侵入、低损耗、大范围部署基本实现埋点日志内容,通过记录traceId、RPCId、调用的开始时间,调用类型,协议类型,调用方ip...
2020-06-04 15:52:45
1189
原创 微服务常见技术框架
摘了了一下常见的微服务技术框架,仔细看一下,其实微服务离我们很近很近。在日常的开发中我们距离微服务架构缺少的只是微服务的治理部分。不过我觉得这未必是一件坏事,微服务架构本身就应该合理控制架构的规模,避免架构本身的治理工作超过业务本身提供的服务。
2020-06-04 15:30:57
2735
原创 微服务的注册发现
前言 服务注册发现是分布式服务中定位服务使用服务的重要机制,也是服务集群中的重要机制。在我们之前了解的微服务架构中,服务的注册发现同样有着重要的作用。服务注册、服务发现 注册发现机制主要是在分布式集群中给服务提供的服务定位定位和服务负载均衡机制,自身有两个有用的步骤。服务注册——该步骤存储的信息至少包括正在运行的服务的主机和端口信息。服务发现——该步骤允许其他用户可以发现在服务注册阶段存储的信息。常规的服务发现机制有两种一种是客户端服务发现(client-side ...
2020-06-04 14:47:01
630
原创 Metrics使用常规概念介绍
在我们系统运营过程中,需要时刻掌握系统的运行状态。状态监控是进行预警告警,异常排除,故障排查,应急实施的重要依据。在常规运维系统中我们有很好的工具可以监控服务器的运行状态,但是对业务系统的运行状态监控往往是比较欠缺的。本文介绍的是一个java运行状态监控工具Metrics。Metrics本来是一个Java库, 捕获JVM和应用程序级指标,当我们需要为某个系统某个服务做监控、做统计,就需要用到Metrics。Metrics可以监控代码级别的数据指标,比如TPS,RT等指标。这个指标能反应系统当前的处理能力,帮
2020-06-04 10:40:46
5143
转载 阿里文娱搜索算法实践与思考
导读:视频搜索是涉及信息检索,自然语言处理( NLP ),机器学习以及计算机视觉 ( CV ) 等多领域的综合应用场景,随着深度学习在这些领域的长足进展以及用户对视频生产和消费的广泛需求,视频搜索技术的发展在学术和工业界都取得了飞速的发展,本文将以优酷为例,分享视频搜索的算法实践,首先介绍优酷搜索的相关业务和搜索算法体系,从搜索相关性和排序算法的特点和挑战到技术实践方案的落地,最后会深入介绍优酷在多模态视频搜索上的探索和实践。本次分享主要包括: 视频搜索简介 基础相关性和排序模型 .
2020-06-04 09:10:45
276
原创 微服务架构_全新视角体验新一代微架构
微服务架构和任何架构一样,是一把双刃剑,善用者天下无敌,滥用者会陷入无底深渊。在使用过程中我认为重点应该在系统基础架构本身,而非框架的使用(当然很多时候有些框架是我们必须用)。
2020-06-04 08:50:38
1844
原创 关于Docker的一些不得不知道的事
Docker是基于LXC(Linux容器虚拟技术,Linux Container)的开源的应用容器引擎,属于轻量级的虚拟化技术。传统的虚拟化方式是在硬件层面实现虚拟化,需要在操作系统上虚拟化独立的操作系统层,并在虚拟化处理的操作系统层上运行应用,不仅要管理虚拟化的操作系统还需要管理应用。而Docker虚拟化技术是操作系统层面上的虚拟化,直接复用本地主机操作系统,并在虚拟化的操作系统上运行应用,不需要额外管理操作系统,只需要关注应用本身就可以了。在Docker中有三个核心概念,镜像(Image),仓库(Co
2020-05-23 12:20:25
176
转载 Apache 的架构师们遵循的 30 条设计原则
本文作者叫 Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。他是 Apache Axis2 项目的联合创始人,也是 Apache Software 基金会的成员。他是WSO2流处理器(wso2.com/analytics)的联席架构师。Srinath 撰写了两本关于 MapReduce 和许多技术文章的书。他获得了博士学位。来自美国印第安纳大学。Srinath 通过不懈的努力最终总结出了30条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构...
2020-05-18 17:26:32
1811
原创 说说哪些NotePad++中,你一定不能错过的鲜为人知的特性
如果说我们日常生活工作中有什么一定要在电脑上处理的,那一定是文本编辑了。相信文本编辑时你一定用过NotePad++,但是你一定也会觉得NotePad++比文本编辑器,好不了多少。如果是这样的话,Notepad++那长长的工具栏你一定没有用过吧。
2020-05-13 11:37:58
373
原创 Linux常用命令整理
Linux常用命令整理1.pwd 命令用于查看当前工作目录路径。pwd2.目录切换命令cd3.查看目录信息命令ll4.创建文件夹命令mkdir5.文件删除命令rm6.查看机器的负载情况在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。uptime7.查看服务器实时性能vmstat 1vmstat(8) 命令,每
2020-05-11 18:45:17
1716
原创 分布式数据库之分库分表总结
常见的数据库分库分表主要有基于基于应用层和基于分布式中间件两种方案。基于应用层的实现方案直接连接数据库,额外开销少,但是应用入侵,不变后续扩展。需要应用主动进行数据库和表的路由,实现起来比较麻烦,常见的第三方有sharding-JDBC、TDDL等。基于中间件的应用无入侵,对用户透明。常见的中间件有MyCat,Cobar,DDM等。...
2020-05-11 18:19:29
2036
原创 华为云分布式数据库中间件DDM
分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,一个实现了Mysql协议栈的数据库代理服务器,通过代理服务器将底层数据库存储引擎以集群方式管理起来。DDM提供分库分表、读写分离、弹性扩容等能力,而且服务器集群管理对用户完全透明,用户通过DDM管理控制台进行数据库运维,使用JDBC等驱动服务或SQL客户端连接数据库,进行数据读写。一、DDM架构:二、功能介绍:水平拆分:在创建分布式数据库后,只需选择拆分...
2020-05-11 17:51:52
2578
原创 数据库集群
关于数据库集群和分布式数据库,说一下我的理解。在我看来数据库集群是一种应用架构模式,分布式数据库是一种软件设计模式。比如问数据库是不是分布式数据库,问的其实是这个数据库是否支持分布式数据库的特性。如果问数据库是不是集群,问的其实是数据存储服务是否使用多台数据库服务器。有一点差别,因为集群的时候是“是否使用多台数据库服务器”,这里并不区分数据库服务器是不是分布式数据库服务器。如果是可以称之为分布式数据库集群,如果不是可以称之为数据库集
2020-05-11 16:07:08
442
Life-beyond-Distributed-Transactions.pdf
2020-05-08
pushlet+ajax 网页版聊天软件 服务器推送技术
2013-07-22
struts2.3.12+spring3.2+hibernate4.1.9 web网站框架
2013-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人