自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (12)
  • 收藏
  • 关注

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

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

2020-06-09 09:57:32 2338

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

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

2020-06-09 09:33:40 1910

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

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

2020-06-08 19:08:07 1790

原创 进程内缓存一致性

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

2020-06-07 15:38:19 341

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

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

2020-06-07 15:13:27 1677

原创 Redis基础介绍

简单的说就是11225531,单进程单线程,两种实现方式,两种数据保存模式,五种数据结构,五种数据类型,三种特性,一个文件

2020-06-06 16:37:35 1649

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

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

2020-06-06 15:36:28 218

原创 线程池的介绍

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

2020-06-06 14:43:33 212 1

原创 ThreadLocal源码解读内存泄漏分析

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

2020-06-06 12:05:01 1738

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

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

2020-06-06 10:00:18 1866

原创 springCloud五个常见组件

springCloud五个常见组件服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器——Netflix Hystrix服务网关——Netflix Zuul分布式配置——Spring Cloud Config(图片来自网络)

2020-06-05 18:10:46 1759

原创 HashMap无序,LinkedHashMap,TreeMap的有序性

HashMap无序,LinkedHashMap会多一个链表存储元素顺序,TreeMap实现SortedMap接口可以对元素进行排序。

2020-06-05 11:28:50 207

原创 单例模式

单例模式(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 1625

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

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

2020-06-05 09:57:24 839

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

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

2020-06-05 09:35:23 335

原创 JAVA 内存模型-内存可见性

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

2020-06-05 08:33:06 166

转载 全链路追踪目的

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

2020-06-04 15:52:45 1132

原创 微服务常见技术框架

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

2020-06-04 15:30:57 2687

原创 微服务的注册发现

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

2020-06-04 14:47:01 599

原创 Metrics使用常规概念介绍

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

2020-06-04 10:40:46 5051

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

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

2020-06-04 09:10:45 258

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

微服务架构和任何架构一样,是一把双刃剑,善用者天下无敌,滥用者会陷入无底深渊。在使用过程中我认为重点应该在系统基础架构本身,而非框架的使用(当然很多时候有些框架是我们必须用)。

2020-06-04 08:50:38 1820

Life-beyond-Distributed-Transactions.pdf

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

2020-05-08

netty socketio 在线聊天程序

netty socketio 在线聊天程序 源码可以运行。可以用来开发需客服模块,在线聊天室,广告推送等功能

2017-12-19

pushlet 简单实例 最快熟悉pushlet 运行原理一目了然

pushlet 简单实例 最快熟悉pushlet 运行原理一目了然 简单描述

2013-07-22

pushlet+ajax 网页版聊天软件 服务器推送技术

pushlet+ajax 网页版聊天软件 服务器推送技术 点击姓名就可以实现聊天 里面包含js版本的和ext版本的 已加入到项目中了

2013-07-22

dwz用户手册 最新公布

dwz用户手册 最新公布

2013-03-26

struts2.3.12+spring3.2+hibernate4.1.9 web网站框架

前几天更换了最新版本的ssh,发现这次变化还是挺大的,费了很大劲才整理好,这是我整理的struts2.3.12+spring3.2+hibernate4.1.9 web网站框架,希望大家用的时候可以省点事吧,里面有用spring代理写的接口调用。

2013-03-17

颜色提取器

网页开发必要的工具

2012-08-10

oa系统源码

软件源码,,可以直接使用的成熟源代码软件源码,,可以直接使用的成熟源代码

2012-03-11

U9_SOA_战略与价值_(合作伙伴版

用友公司战略文档,用来学习SOA技术很重要的文档

2012-02-24

空空如也

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

TA关注的人

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