自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (3)
  • 收藏
  • 关注

转载 如何计算Java对象所占内存的大小

摘要本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论了Java对象头格式并结合JDK源码对对象头中的协议字段做了介绍,涉及内存模型、锁原理、分代GC、OOP-Klass模型等内容。最后推荐JDK自带的Hotspot Debug工具——HSDB,来查看对象在内存中的具体存在形式,以论证文中所述内容。背景目前我们系统的业务代码中大...

2019-06-27 12:51:38 1240

转载 Java Serializable:明明就一个空的接口嘛

对于 Java 的序列化,我一直停留在最浅显的认知上——把那个要序列化的类实现 Serializbale 接口就可以了。我不愿意做更深入的研究,因为会用就行了嘛。但随着时间的推移,见到 Serializbale 的次数越来越多,我便对它产生了浓厚的兴趣。是时候花点时间研究研究了。01、先来点理论Java 序列化是 JDK 1.1 时引入的一组开创性的特性,用于将 Java 对象转换为字节...

2019-06-25 19:43:09 156

转载 深入理解7种垃圾收集器

**如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。**Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版本中正式提供了商用...

2019-06-25 19:34:35 8018

转载 分布式系统理论之Quorum机制

一,Quorum机制介绍在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的。因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区、网络通信故障问题无法避免。因此,只能尽量地在C 和 A 之间寻求平衡。对于数据存储而言,为了提高可用性(Availability),采用了副本备份,比如对于HDFS,默认每块数据存三份。某数据块所在的机器宕机了,...

2019-06-20 21:02:49 205

转载 分布式系统理论之租约机制学习

一,租约机制介绍在分布式系统中,往往会有一个中心服务器节点。该节点负责存储、维护系统中的元数据。如果系统中的各种操作都依赖于中心服务器上的元数据,那么中心服务器很容易成为性能瓶颈及存在单点故障。而通过租约机制,可以将中心服务器的“权力”下放给其他机器,就可以减轻中心服务器的压力。当然,租约机制还有许多其他的用途:比如,确定集群中结点的状态,还可以实现分布式下的读写锁……如下图,GFS ma...

2019-06-20 20:53:20 1286

转载 分布式系统理论之两阶段提交协议

一,两阶段提交协议介绍两阶段提交协议是用来保证分布式系统事务的协议。在分布式系统中,一个事务需要由多台机器协调完成,机器之间通过网络来通信,如何保证一组操作在多台机器上要么都做,要么都不做呢?(事务的ACID特性)【比如,一个事务包括三个操作A,B,C,操作A,B,C分别 在机器1,2,3上完成,如果机器1成功提交了操作A,机器2成功提交了操作B,但是机器3执行操作C失败了,则需要撤消所有...

2019-06-20 19:46:32 4512

转载 红黑树、B(+)树、跳表、AVL对比

在网上学习了一些材料。这一篇:https://www.zhihu.com/question/30527705AVL树:最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树红黑树:平衡二叉树,广泛用在C++的STL中。map和set都是用红黑树实现的。我们熟悉的STL的map容器底层是RBtree,当然指的不是unordered_map...

2019-06-19 20:42:56 10174 2

转载 深夜学算法之SkipList:让链表飞

1. 前言上次写Python操作LevelDB时提到过,有机会要实现下SkipList。摘录下wiki介绍:跳跃列表是一种随机化数据结构,基于并联的链表,其效率可比拟二叉查找树。我们知道对于有序链表,查找的时间复杂度为O(n),尽管真正的插入与删除操作节点复杂度只有O(1),但都需要先查找到节点的位置,可以说是查找拉低了有序链表的性能。简单地讲,SkipList采用“空间换时间...

2019-06-19 20:32:00 147

转载 分布式事务之TCC事务

TCC 事务介绍在08年的软件开发2.0技术大会上,支付宝程立在PPT大规模SOA系统中的分布事务处理,提出TCC概念。 在网络上搜索分布式事务相关的博客,基本都会提及这个PPT,目前很多分布式事务开源项目也都是基于TCC的思想实现。TCC 将事务提交分为 Try - Confirm - Cancel 3个操作。Try:预留业务资源/数据效验 Confirm:确认执行业务操作 Ca...

2019-06-19 20:16:03 777

转载 分布式事务之TCC

来源:云栖社区 |作者:绍辉 | 原文地址见文末一、TCC简介TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题;TCC是服务化的两阶段编程模型,其Try、Confirm、Cancel 3个方法均由业务编码实现;其中Try操作作为一阶段,负责资源的检查和预留,Confirm操作作为二阶段提交操作,执行真正的业务,Cancel是预留资源的取消;...

2019-06-19 20:07:40 13732

转载 Kafka是靠什么机制保持高可靠,高可用的?

面试大厂时,一旦简历上写了 Kafka,几乎必然会被问到一个问题:说说 Acks 参数对消息持久化的影响?这个 Acks 参数在 Kafka 的使用中,是非常核心以及关键的一个参数,决定了很多东西。所以无论是为了面试还是实际项目使用,大家都值得看一下这篇文章对 Kafka 的 Acks 参数的分析,以及背后的原理。如何保证宕机的时候数据不丢失?如果想理解这个 Acks 参数的...

2019-06-18 20:58:56 797

转载 分布式事务

http://www.cnblogs.com/LBSer/p/4715395.html  前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。  上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记...

2019-06-18 20:46:13 205

转载 Java GC调优

当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。本篇会介绍这些通用的GC优化策略和相关实践案例,主要包括如下内容:优化前准备: 简单回顾JVM相关知识、...

2019-06-18 20:24:06 538 1

转载 Java多线程编程-(6)-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier

前几篇:Java多线程编程-(1)-线程安全和锁Synchronized概念Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用Java多线程编程-(4)-线程间通信机制的介绍与使用Java多线程编程-(5)-使用Lock对象实现同步以及线程间通信倒计时CountDownLatc...

2019-06-18 18:51:02 142

转载 Java多线程编程-(5)-使用Lock对象实现同步以及线程间通信

前几篇:Java多线程编程-(1)-线程安全和锁Synchronized概念Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用Java多线程编程-(4)-线程间通信机制的介绍与使用在《Java多线程编程-(4)-线程间通信机制的介绍与使用》已经学习了,可以使用方法wait/noti...

2019-06-18 17:24:46 101

转载 Java多线程编程-(4)-线程间通信机制的介绍与使用

上一篇:Java多线程编程-(1)-线程安全和锁Synchronized概念Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用线程间通信简介我们知道线程是操作系统中独立的个体,但是这个单独的个体之间没有一种特殊的处理方式使之成为一个整体,线程之间没有任何交流和沟通的话,他就是一个个单...

2019-06-18 14:22:12 516

转载 使用ThreadPoolExecutor产生的 OutOfMemoryError: unable to create new native thread 错误

转载请注明出处:http://www.codelast.com/最近,在使用Java的ThreadPoolExecutor来实现一个并发功能的时候,发现程序刚执行起来不久,就提示了错误: 1 OutOfMemoryError: unable to create new native thread 并且服务器立即陷入类似于“无响应”的状态,无法用Ctr...

2019-06-14 18:37:08 1563

转载 解决 - java.lang.OutOfMemoryError: unable to create new native thread

一、认识问题:首先我们通过下面这个测试程序来认识这个问题:运行的环境(有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码importjava.util.concurrent.CountDownLatch; publicclassTestNativ...

2019-06-14 16:29:51 2521

转载 解决OutOfMemoryError: unable to create new native thread问题

java.lang.OutOfMemoryError共有8种类型,其中java.lang.OutOfMemoryError: unable to create new native thread是很常见的一种,这类错误通常发生在应用试图创建新线程时。可能原因1. 系统内存耗尽,无法为新线程分配内存2. 创建线程数超过了操作系统的限制解决方案1. 排查应用是否创建了过多的线程...

2019-06-14 14:33:14 25071

转载 人工智能编程插件

最近在浏览技术社区,发现了一款 IDE 插件,利用人工智能技术帮助程序员高效写代码、节省开发时间,一下子勾起了我的好奇心。下载之后,使用一番,确实蛮好的,可以有效提升编程效率。这款插件叫:aixcoder,我们可以从它的名字看出特殊性,是一款利用 AI 技术提升编程效率的插件。根据官网信息得知,智能编程助手插件有三大特性:功能很强大,使用起来很简单,aixcoder 已经集成到...

2019-06-13 11:08:33 2815 1

转载 mysql批量提交的优化

背景用户修改布局时,需要批量更新mysql的xxxx_layout_xxxx表。批量操作的数据量是2-30条/次。批量操作是这次项目在技术上比 较关键的一个点,之前批量操作做过性能上的测试,mysql端问题不大,7000+tps,Java端的效率有些差,有优化空间。对批量的性能进行了测试,优化。过程如下。经测试,批量更新30条记录的时间是35ms。由于数据在mysql服务端中会有内存缓...

2019-06-12 14:42:52 1848

转载 JAIN SIP API 简介

摘要本文介绍如何在 Java SE 上使用会话发起协议 (SIP) 开发客户端应用程序。文中展示 JAIN SIP API 这种强大的“SIP 堆栈”。首先介绍一个简单的 IM 应用程序,然后对其进行剖析来了解该技术。关于 JAIN SIP API集成网络 Java API (JAIN)是一个管理电信标准的 JCP 工作组。会话发起协议 (SIP)是一种标准通信协议,之前的文章中已...

2019-06-12 14:41:16 8545 1

转载 docker oom 排查过程

在最近公司产品的一次release中,我们遇到了一个Java OOM的问题,追查了几个小时才解决问题,而且事后发现造成问题的原因很简单,但追查的过程我认为值得记录一下。1. 现象我们的应用是跑在64位的Red Hat Enterprise Linux上的,Heap配置为1G。在那天release跑BAT测试用例的时候,发现不定期地系统会开始不工作,一查后台的日志,能发现不少OutOfMem...

2019-06-12 13:38:39 3642

转载 docker应用,后端服务出现OOM情况排查

参考:https://qingmu.io/2018/12/17/How-to-securely-limit-JVM-resources-in-a-container/#more默认情况下,JVM的Max Heap Size是系统内存的1/4,假如我们系统是8G,那么JVM将的默认Heap≈2G。# docker logscompose_cwtpro-back_1...

2019-06-12 11:34:37 1200

转载 docker OOM问题排查思路

OOM排查背景:微服务架构,几百个服务,运行在不同的容器上,总是莫名的同时出现十几个服务不可用,伴随着各个容器的状态异常,无法ping通,无法ssh上去,大量告警。。。总是莫名的有物理机宕机,每次查的时候总是无疾而终。。。验尸报告:Emmm,故障现场不够新鲜,检查的力度不够。。。故障之间总是有关联的,查出...

2019-06-12 11:30:54 8216

转载 Top-K问题与多路归并排序

Pro1:寻找前K大数方法1:K小根堆后面的值若大于当前根,则替换之,并调整堆大部分人都推荐的做法是用堆,小根堆。下面具体解释下:如果K = 1,那么什么都不需要做,直接遍历一遍,时间复杂度O(N)。下面讨论K 比较大的情况,比如1万。建立一个小根堆,则根是当前最小的第K个数。然后读入N-K个数,每次读入一个数就与当前的根进行比较,如果大于当前根,则替换之,并调整堆。如果小...

2019-06-11 18:30:54 982

转载 Redis高可用原理

Redis 是被广泛使用的基础软件之一,对于架构师和运维人员来说,了解 Redis 的高可用方案和背后的原理,是必备的基础知识。本文作者深入分析了 Redis 高可用的方方面面,并且做了有效总结,相信对广大读者可以起到很好的领路作用。Redis 中为了实现高可用采用了如下两个方式:主从复制数据。 采用哨兵监控数据节点的运行情况,一旦主节点出现问题由从节点顶上继续进行服务。...

2019-06-10 17:27:19 250

转载 贝叶斯公式由浅入深大讲解—AI基础算法入门

1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大。而且概率虽然未知,但最起码是一个确定的值。比如如果问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?”他们会想都不用想,会立马告诉你,取出白球的概率就是1/2,要么取到白球,要么取...

2019-06-10 14:42:39 378

转载 TokuMX

之前的文章介绍过TokuTek公司出品的TokuDB,其主要特色是在拥有完整事务处理能力的前提下,实现了大幅度的数据压缩,并有着良好的性能 表现。TokuTek的工程师再接再厉,把目前非常流行的NoSQL数据库MongoDB的底层替换成与TokuDB同样的存储引擎,达到了非常好的效 果。MongoDB拥有灵活的文档型数据结构和方便的操作语法,在新兴的互联网应用中得到了广泛的部署,但对于其底层的...

2019-06-10 14:03:06 239

转载 LevelDB原理及应用

LevelDBLevelDB之概览  LevelDB是Google传奇工程师Jeff Dean和Sanjay Ghemawat开源的KV存储引擎。  了解原理之前首先要用起来,下面动手实现个例子:安装调试(mac上直接命令行下brew install leveldb即可安装,编译时候记得加上-lleveldb)  example:#include <assert.h>...

2019-06-10 13:12:22 253

转载 HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比

最近小组准备启动一个 node 开源项目,从前端亲和力、大数据下的IO性能、可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型。我们最终把选项范围缩窄在HBase、Redis、MongoDB、Couchbase、LevelDB 五款较主流的数据库产品中,本文将主要对它们进行分析对比。鉴于缺乏项目中的实战经验沉淀,本文内容和观点主要还是从各平台资料搜罗汇总,也...

2019-06-06 19:00:44 595

转载 HTTPS原理

HTTP 存在的问题那我们平时上网可能会存在哪些风险呢?泄密,个人隐私、账户密码等信息可能会被盗取。 篡改,收到的数据可能被第三方修改过,或被植入广告等。 假冒,访问的站点非目标服务器站点。如域名欺骗、域名劫持、钓鱼网站等。可能住你隔壁穿人字拖、说话都略显羞涩的小王,一到夜深人静的时候就开始偷窥你的一举一动!陪你一起看 91 某社区的电影还好,万一窃取了各购物网站或其他站点的登录...

2019-06-06 18:30:52 257

转载 HBase缺陷

缘起随着hadoop系列的兴起,基于HDFS的大规模KV存储系统HBase也进入“大规模使用阶段”。网上的Hbase资料很多,学习成本正在下降。从公开的资料看,国外facebook、国内taobao均宣称在线上环境大规模使用hbase。一切都让人很兴奋。于是,在项目中引入Hbase做存储,最终却选择放弃。HBase设计:看上去很美HBase是模仿google bigtable的开源产品...

2019-06-05 20:59:44 1572

转载 关于算法

1.算法,不止于刷题提到算法,不管是科班出身还是半路出家的程序员可能都会说上几句,算法谁没学过谁不知道啊?对于走工业界路线而非学术路线的同学来说,算法学习的最大作用也许是找工作…… 毕竟工作后,绝大多数时候都用各种成熟的类库,少有自己实现高级数据结构和算法的时候。但刚结束一学期修的算法课,上得我还真跟没学过算法似的,让我大开眼界,虽然每次课上我都听的不是很懂,但每节都期盼着老师又能带来什么新奇的...

2019-06-05 20:54:06 252

转载 ES 在数据量很大的情况下如何提高查询效率

如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了。第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒。你就很懵,每个用户第一...

2019-06-05 20:43:06 16001 7

转载 LevelDB

一、LevelDB入门LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM(Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,...

2019-06-04 16:18:39 438

hadoop-windows

Hadoop 2.7. 6在Windows7下单机部署时的补丁文件包,解决Hadoop在Windows下的安装问题

2018-08-14

Z-Stack API

ZStack 2006版本Api,中文版,

2011-03-30

《Z-Stack API 接口》中文版

ZigBee协议栈编程接口(API),中文版。

2010-04-04

空空如也

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

TA关注的人

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