5 EthanPark

尚未进行身份认证

中科大硕士. 擅长领域高并发企业级应用性能优化。喜爱钻研源码。业余参与国外Spring以及Servlet,JDBC等Spec的翻译。

等级
TA的排名 1w+

Load和CPU利用率

首先,top命令是没有计算load的平均值的,top命令只不过是在不停的从/proc/loadavg文件来读取load的平均值.(strace显示top命令会打开/proc/loadavg并且会定期从中读取load的平均值信息).当使用man proc的时候,会有如下说明: /proc/loadavg 该文件的前三个属性,分别表示在1分钟,5分钟和15分钟内,任务队列中进程的平均个数.

2017-08-13 16:30:10

Top命令基础

本文主要描述了Linux中top命令的一些用法以及意义

2017-06-23 22:36:32

Pipes-and-Filters模式

Pipe和Filter模式将执行复杂处理的任务分解为可重复使用的一系列离散元素。这种模式可以提高性能,可扩展性和可重用性,允许执行部署和缩放独立处理的任务元素。问题一个应用程序可能根据其处理的不同的信息需要执行各种复杂的任务。一个简单的,但不灵活的方法就是可以将应用的处理作为一个单独的模块。但是,如果部分相同的处理需要在应用程序的其他地方,这种方法可能会减少代码重构,重用,优化的机会。下图1说明了单

2017-06-11 16:34:27

Java内存管理(三)——卡片表

在垃圾回收的过程中,会碰到一个问题,就是老年代中的对象可能引用年轻代中的对象。在这种情况下,每次遍历老年代的对象来查找所有存活对象的时候就会消耗相当的时间。而且,在应用中,通常来说,这种引用是非常少的(某些研究表明,这种情况的引用占总引用量的1%都不到)。但是这些引用需要遍历整个老年代对象是一个相当大的Overhead。Card-tableJVM中会维护一个卡片表的数据结构,主要用于查看老年代中指向

2017-05-24 15:34:33

Spring ORM数据访问——JPA

JPASpring JPA在org.springframework.orm.jpa包中已经可用,Spring JPA用了Hibernate集成相似的方法来提供更易于理解的JPA支持,与此同时,了解了JPA底层实现,可以理解更多的Spring JPA特性。Spring中JPA配置的三个选项Spring JPA支持提供了三种配置JPAEntityManagerFactory的方法,之后通过EntityM

2017-05-17 19:41:14

Spring ORM数据访问——Hibernate

Hibernate我们将首先介绍Spring环境中的Hibernate 5,然后介绍使用Hibernate 5来演示Spring集成O-R映射器的方法。本节将详细介绍许多问题,并显示DAO实现和事务划分的不同变体。这些模式中大多数可以直接转换为所有其他支持的ORM工具。本章中的以下部分将通过简单的例子来介绍其他ORM技术。 从Spring 5.0开始,Spring需要Hibernate ORM

2017-05-16 19:52:45

Spring ORM数据访问——概述

介绍一下Spring中的ORMSpring框架在实现资源管理、数据访问对象(DAO)层,和事务策略等方面,支持对Java持久化API(JPA)以及原生Hibernate的集成。以Hibernate举例来说,Spring有非常赞的IoC功能,可以解决许多典型的Hibernate配置和集成问题。开发者可以通过依赖注入来配置O-R(对象关系)映射组件所支持的特性。Hibernate的这些特性可以参与Spr

2017-05-15 21:38:17

Java内存管理(二)

前文描述了一些关于串行收集器的知识,本文继续针对垃圾收集器进行描述。并行收集器(parallel collector)在硬件发展到今天,很多的机器上面的物理内存会更高,并且拥有更多的CPU资源。并行收集器,也被称作吞吐收集器,就是用来更好的利用多个CPU性能,增加垃圾回收的吞吐量的一种垃圾收集器。并行收集器的年轻代回收年轻代使用的算法在串行收集器和并行收集器上是一致的。只是使用了多个CPU,通过降低

2017-04-29 15:23:13

Java内存管理(一)

Java相比传统语言(C,C++)的一个优势在于其能够自动管理内存,从而将开发者管理内存任务剥离开来。 本文大体描述了J2SE 5.0 release中JVM对于内存是如何管理的。并且为选择和配置对应的收集器,配置收集器的参数提供了一些建议和参考。手动VS自动内存管理内存管理是能够识别哪些释放的对象不再使用,释放掉这些对象所占用空间的一个

2017-04-20 20:50:44

Competing-Consumers模式

Competing-Consumers模式支持多个并发消费者来处理消费消息队列上接收到的消息。该模式令系统能够并发的处理消息,并且优化吞吐,增加扩展性和可用性,同时平衡工作负载。问题在云环境中运行的程序可能需要处理大量的请求。相对于同步的处理每个请求,通常更常用的技术是由应用将请求通过消息系统来传给其他的服务(消费者服务),然后由其他的服务来异步处理。该策略能够确保应用中的业务逻辑不会因为请求的处理

2017-03-21 23:44:44

Priority-Queue模式

Priority Queue模式优先级队列模式:将请求根据优先级进行分流,令高优先级的请求能够比低优先级的请求更快的接收和处理。优先级队列模式对于针对需要根据不同的客户端来实现不同的服务级别的情况下十分实用。问题应用可能会将某些指定的任务代理到一些其他的服务或应用上面。比如,会存在需要执行一些后台处理,或者与其他应用或者服务集成的情况。在云环境中,通常使用消息队列来代理任务和后台的处理。在很多时候,

2017-03-19 00:46:02

Event-Souring模式

Event-Sourcing模式使用仅附加存储来记录或描述域中数据所采取的动作,从而记录完整的一系列系列事件,而不是仅存储实体的当前状态。因为存储包含全部的事件,可以用来具体化域对象。Event-Sourcing模式可以简化复杂的域中的任务,避免了数据模型和业务领域的同步和引发的争用问题;增强性能,扩展性,以及响应;为事物数据提供一致性;保留全部的事件执行历史,可以跟踪和实现回滚之类的补偿操作。问题

2017-03-08 23:45:57

Materialized View模式

Materialized-View模式是在要求数据格式不利于查询操作的情况下,根据多个数据仓库的数据生成预生成的视图的一种模式。这种模式可以帮助支持高效的查询和数据提取,提高应用程序的性能。问题在存储数据时,开发人员和数据管理员考虑的第一优先级通常集中在如何存储数据,而不是如何读取数据。所选择的存储格式通常与数据的格式、管理数据大小和数据完整性的要求,以及存储的类型密切相关。例如,使用NoSQL存储

2017-02-22 12:43:24

公平锁与非公平锁

在ReentrantLock中很明显可以看到其中同步包括两种,分别是公平的FairSync和非公平的NonfairSync。公平锁的作用就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的;而非公平锁是允许插队的。默认情况下ReentrantLock是通过非公平锁来进行同步的,包括synchronized关键字都是如此,因为这样性能会更好。因为从线程进入了RUNNABLE状态,可以执行开始,

2017-02-17 13:32:14

Java线程和多线程(十五)——线程的活性

当开发者在应用中使用了并发来提升性能的同时,开发者也需要注意线程之间有可能会相互阻塞。当整个应用执行的速度比预期要慢的时候,也就是应用没有按照预期的执行时间执行完毕。在本章中,我们来需要仔细分析可能会影响应用多线程的活性问题。死锁死锁的概念在软件开发者中已经广为熟知了,甚至普通的计算机用户也会经常使用这个概念,尽管不是在正确的状况下使用。严格来说,死锁意味着两个或者更多线程在等待另一个线程释放其锁定

2017-02-17 13:22:49

Pessimistic and Optimistic locking

事务隔离通常通过锁定任何对事务中资源的访问来实现的。总的来说,有两种方法针对事务的锁定:乐观锁(Pessimistic locking)和悲观锁(Optimistic locking)悲观锁(Pessimistic locking)悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现

2017-02-15 15:35:34

Sharding模式

将数据存储为一组水平的数据分区。这种模式可以在存储和访问大量的数据的时候提高可扩展性。场景和问题由单个服务器托管的数据存储可能受到下列限制:存储空间限制。基于大规模云应用所使用的数据仓库,可能会包含海量的数据,并且数据增长速度非常的快。一个服务器通常只提供有限容量的磁盘存储,当然它可能是可以替换现有的磁盘与较大的,或添加进一步磁盘到服务器以增加存储量。但是,该系统将最终达到一个硬件的限制,一味地增

2017-02-06 20:57:59

Data Partitioning Guidance

在很多大规模的解决方案中,数据都是分成单独的分区,可以分别进行管理和访问的。而分割数据的策略必须仔细的斟酌才能够最大限度的提高效益,同时最大限度的减少不利影响。数据的分区可以极大的提升可扩展性,降低争用以及优化性能。为何进行数据分区绝大多数的云应用和云服务都会将存储和检索数据作为其业务的一部分。而应用所使用的数据仓库的设计对于系统的性能,吞吐,扩展性都有着非常重要的影响。其中在大规模系统中常用的一种

2017-02-03 17:20:32

Health Endpoint Monitoring模式

Health Endpoint Monitoring模式是一种用来监控服务健康状态的模式。Health Endpoint Monitoring模式通过在应用内额外暴露一个可以进行功能检查的接口来实现,可以由外部工具定期访问暴露在外部的端点来检查服务的状态。该模式可以有效验证服务是否可用。问题监控应用的状态通常是一种很好的应用实践。通常来说,也是业务的一个需求。针对一些中间层和共享的服务也同样如此。因

2017-01-25 21:16:00

Command and Query Responsibility分离模式

CQRS模式,就是命令和查询责任分离模式。CQRS模式通过使用不同的接口来分离读取数据和更新数据的操作。CQRS模式可以最大化性能,扩展性以及安全性,还会为系统的持续演化提供更多的弹性,防止Update命令在域模型Level发生冲突。问题在传统的数据管理系统中,更新数据以及请求数据的命令是通过数据仓库中的同一类型的实体来执行操作的。这些实体属于关系数据中的表的一列或者几列。通常,在这些系统中,所有的

2017-01-22 00:33:04

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!