7.1 网络I/O介绍 Linux和其他主流操作系统中的网络流量被抽象为一系列的硬件和软件层次. 链路层,也就是最低的一层,包含网络硬件,如以太网设备.在传送网络流量时,这一层并不区分流量类型,而仅仅以尽可能快的速度发送和接收数据(帧). 链路层上面是网络层.这一层使用IP协议和ICMP协议在机器间寻址并路由数据包.IP/ICMP尽其最大努力尝试在机器之间传递数据包,但是它们不能保证数据包是否能真正达到其目的地. 网络层上面是传输层,它定义了TCP和UDP.TCP是可靠的协议,它保证消息通过网络…
5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放到物理内存中,即所谓的驻留集.不属于驻留集却又被应用程序使用的其他内存将被交换到磁盘.由应用程序决定向操作系统请求多少内存,即所谓的虚拟集. 当应用程序使用物理内存时,它首先与CPU的高速缓存子系统交换.现代CPU有多级高速缓存.最快的高速缓存离CPU最近(L1),其容量也是最小的.举个例子,假设C…
6.1 磁盘I/O介绍 一般来说,Linux磁盘的每个分区要么包含一个文件系统,要么包含一个交换分区.这些分区被挂载到Linux根文件系统,该系统由/etc/fstab指定.这些被挂载的文件系统包含了应用程序要读写的文件. 当一个应用程序进行读写时,Linux内核可以在其高速缓存或者缓冲区中保存文件的副本,并且可以在不访问磁盘的情况下返回被请求的信息.但是,如果Linux内核没有在内存中保存数据副本,那它就向磁盘I/O队列添加一个请求.若Linux内核注意到多个请求都指向磁盘内相邻的区域,它会把…
3.1内存性能统计信息 3.1.1 内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU.为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache). 3.1.2 内存子系统(虚拟存储器) 在物理内存寻址时,Linux将其分成块或者内存“页”.内存页面过小,会造成管理内存时产生大的花销:内存页面大时,则容易造成内存的浪费. l  交换(物理内存不足) 内存的大小是固定的,当内存不够用时,内核会使用硬盘作为临时存储器,这个硬盘空间称为交换分区(swap space). 交换分区确…
4.1进程性能统计信息 4.1.1. 内核时间VS用户时间 一个应用程序所耗时间最基本的划分是内核时间与用户时间.内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间.Linux有工具,如time和ps,可以(大致)表明应用程序将其时间花费在应用程序代码上还是话费在内核代码上. 4.1.2 库时间VS应用程序时间 任何应用程序,即便其复杂性非常低,也需要依赖系统库才能执行复杂的操作.这些库可能导致性能问题,因此,能够查看应用程序在某个库中花费了多少时间很重要了.在…
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要记录一些工作中常用的UI渲染性能优化及调试方法,理解这些方法对于我们编写高质量代码也是有一些帮助的,主要内容包括介绍CPU,GPU的职责,UI的overdraw,Hierarchy View工具的使用以及canvas.clipRect()方法防止View的重叠绘制,都是一些老生常谈的玩意,只是为了自己记录一下才写出来,如果您已经掌握,直接跳过就可以了. 一.CPU,GPU的职责介绍 对于大多数手机的屏幕刷新频率是60hz,也就是如…
十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转化为ADO.NET的SQL语句,转化过程中无形降低了EF的执行效率. 但是,使用EF的一个好处就是系统便于维护,减少了系统开发时间,降低了生成成本. OK,上述只是做个简单的对比,那么在实际编码过程中,我们应当怎样提升EF的性能呢? 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,…
第七章——链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器并执行. 2.链接可以执行于编译时,加载时,运行时. 7.1编译器驱动程序 1.大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 7.2 静态链接 1.像Unix ld程序这样的静态链接器以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载运行的可执行目标文件作为输出. 2.输入的可重定位目标文件由各种不同的代码和数据节组成.…
文章目录 Java性能优化 尽量在合适的场合使用单例 尽量避免随意使用静态变量 尽量避免过多过常地创建Java对象 尽量使用final修饰符 尽量使用局部变量 尽量处理好包装类型和基本类型两者的使用场所 慎用synchronized,尽量减小synchronize的方法 尽量不要使用finalize方法 尽量使用基本数据类型代替对象 多线程在未发生线程安全前提下应尽量使用HashMap.ArrayList 尽量合理的创建HashMap 尽量减少对变量的重复计算 尽量避免不必要的创建 尽量在fin…
DevOps工具生态圈 协同开发工具 敏捷开发 可视化 加强团队沟通协作 数据分析 协同开发 持续集成工具 Jenkins 自动化编译 自动化测试 自动化部署 丰富的插件库 版本管理工具 Git 简介易用 系统开销小 性能优良 编译工具 配置管理工具 测试工具 监控工具 Nagios用于监控系统.网络和基础架构,提供监控功能的同时还能发出警报,当监控的系统出现异常情况,Nagios可以迅速发出警报,帮助运维团队发现问题.Nagios安装在Linux平台,可以实现以下功能: >网络服务(SMTP.…