[置顶] 系统设计:关于高可用系统的一些技术方案

可靠的系统是业务稳定、快速发展的基石。那么,如何做到系统高可靠、高可用呢?下面从技术方面介绍几种提高系统可靠性、可用性的方法:扩展、隔离、解耦、限流、降级、熔断、自动化测试、灰度发布 & 回滚。...
阅读(235) 评论(0)

Java 进阶:异常影响性能吗?

Java 进阶:异常影响性能吗?曾经在给一个业务系统增加限流功能,使用的限流组件在流量超过阈值时,会直接抛异常,异常导致 CPU 占用率飙升。第一次遇到这样的情况,让我们不得不思考,异常怎么会对性能造成这么大的影响?下面我们写几个测试程序观察一下。...
阅读(96) 评论(0)

Java 进阶:如何让线程主动让出 CPU

在 Java 中,有哪些方法可以让线程让出 CPU 呢?...
阅读(26) 评论(0)

深入理解 Java 泛型

泛型的本质是参数化类型,相比于直接使用 Object 的好处是:编译期强类型检查、无需进行显式类型转换。这里介绍一些泛型的用法、特性,以及如何在运行时获取泛型参数类型信息。...
阅读(29) 评论(0)

Java 迭代器介绍

迭代器介绍迭代器模式迭代器模式是一个典型的设计模式,提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。因为屏蔽了细节,可以针对不同实现的容器,提供一致的标准化的访问方法。...
阅读(69) 评论(0)

Java 注解:注解处理器获取泛型真实类型

注解 annotation 是 Java 中的一大特性,是插入代码中的元数据。注解的使用能够大大简化代码的编写,所以在很多框架中得到了使用,比如 spring、hibernate-validator。泛型的真实类型信息会在编译期间擦除,注解处理器正是运行在编译期间,能够用来获取泛型真实信息。...
阅读(154) 评论(0)

降级熔断框架 Hystrix 源码解析:滑动窗口统计

一个滑动窗口统计主要分为两步: 1. bucket 统计,bucket 的大小决定了滑动窗口滚动时间间隔; 2. window 统计,window 的时长决定了包含的 bucket 的数目。 Hystrix 实现滑动窗口利用了 RxJava 这个响应式函数编程框架。...
阅读(174) 评论(0)

Java 线程同步基础类 LockSupport 解析

LockSupport 类提供了基本的线程同步原语,是实现 AbstractQueuedSynchronizer 和 ReentrantLock 的基础。...
阅读(107) 评论(0)

Java 同步框架 AQS 深入分析

AQS 框架提供了先进先出的阻塞锁实现,在此基础上,提供了独占和共享等多种模式供使用方实现。除此之外,还提供了一个条件变量的实现。 锁是一种线程同步机制,用于保护对临界资源的访问。条件变量提供了一个“等待 - 唤醒”的机制,在阻塞队列里起到了生产者和消费者之间的通信的作用。...
阅读(98) 评论(0)

Java 同步原语 synchronized 剖析和锁优化

本文解析了 synchronized 的底层实现,介绍了 JVM 中优化锁的一些方法,以及实际编程中使用的一些锁优化方法。...
阅读(130) 评论(0)

日志压缩资源消耗优化: Linux CGroup 的使用

我们有一个系统,本身压力比较大,平常 CPU 占用率在 60% 左右。在整点之后的日志压缩时,CPU 占用率更是飙到来 80%,造成系统 Load 经常报警,烦不胜烦。 使用 top 命令查看后发现,gzip 压缩进程占用 CPU 资源过多,于是想到了利用 CGroup 来限制日志压缩进程的资源占用。...
阅读(107) 评论(0)

深度剖析 JDK7 ConcurrentHashMap 中的知识点

看源码时候的一点儿总结:锁分离 Lock Stripping、Unsafe、自旋、顺序一致性 Sequential Consistency、权衡 Trade Offs。...
阅读(108) 评论(0)

系统性能优化概述

如何做性能优化 确定优化目标 定位性能瓶颈 制定优化方法 测试优化效果...
阅读(81) 评论(0)

Hadoop Mapreduce Mapper和Reducer源码

Mapper public class Mapper { /** * The Context passed on to the {@link Mapper} implementations. */ public abstract class Context implements MapContext { } /** * Called once a...
阅读(1350) 评论(0)

叉积、线段相交判断、凸包

一、叉积 叉积的计算是线段方法的核心。对于向来p1和p2,叉积是由点(0,0)、p1、p2和p1+p2构成的平行四边形的有向面积。另一种与之等价但更有效的的叉积定义方式是将其看做矩阵行列式: p1×p2 = x1y2 - x2y1 = - p2×p1 若p1×p2为正,则相对于原点(0,0)来说,p1位于p2顺时针方向;若p1×p2为负,p1位于p2逆时针方向;若为0则方向相同,...
阅读(6261) 评论(0)

利用Java反射机制-访问Android隐藏API

通过类名获取类。 Class serviceManager = Class.forName("android.os.ServiceManager"); 获取方法 Method method = serviceManager.getMethod("getService", String.class); 调用方法 method.invoke(serviceManager.newIns...
阅读(4152) 评论(0)

Android:获取屏幕完整宽高,包含状态栏

WindowManager mWindowManager = (WindowManager) this .getSystemService(Context.WINDOW_SERVICE); Display mDisplay = mWindowManager.getDefaultDisplay(); DisplayMetrics mDisplayMetrics = new Displ...
阅读(2843) 评论(0)

Android NDK: 子线程中C调用Java

在底层c++生成的子线程中调用Java,需要JniEnv。而这个JniEnv的生成,需要用AttachCurrentThread方法。 1. 获取JVM,以及静态方法实例 static JavaVM* g_JavaVM = NULL; static jobject gInterfaceObject; ​ void initClassHelper(JNIEnv *e...
阅读(3469) 评论(0)

Ubuntu下安装Hadoop和配置Eclipse开发Hadoop

1. 安装hadoop 具体见:http://www.cnblogs.com/tippoint/archive/2012/10/23/2735532.html tips:不一定要新建hadoop用户,在当前用户下操作就行。 运行hadoop自带的wordcount例子: http://wenku.baidu.com/view/17144225af45b307e8719785.htm...
阅读(1962) 评论(2)

重建二叉树

根据中序遍历和前序遍历重建二叉树,同时验证是否合法。 #include #include using namespace std; #define TREELEN 6 struct Node { Node* pLeft; Node* pRight; char value; }; Node* rebuild(char *preOrder, char *inOrder, int...
阅读(670) 评论(0)
171条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:582089次
    • 积分:6992
    • 等级:
    • 排名:第3405名
    • 原创:165篇
    • 转载:6篇
    • 译文:0篇
    • 评论:95条
    我的推荐
    博客专栏
    最新评论