第一章 ApacheFlink介绍 一.Flink优势 1. 目前唯一同时支持高吞吐.低延迟.高性能的分布式流式数据处理框架 2. 支持事件事件概念 3. 支持有状态计算,保持了事件原本产生的时序性,避免网络传输带来的影响 4. 支持高度灵活的窗口操作,Flink将窗口分为Time.Count.Session以及Data-driven等类型的窗口操作,可以灵活的处罚条件定制化来达到对复杂的流传输模式的支持. 5. 基于轻量级分布式快照实现容错,大型计算任务的流程拆解成小的计算过程,task分布到…
程序性能的主要表现点: 执行速度:程序的反映是否迅速,响应时间是否足够短 内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏 启动时间:程序从运行到可以正常处理业务需要花费多少时间 负载承受能力:当系统压力上升时,系统的执行速度.响应时间的上升曲线是否平缓 衡量程序性能的主要指标: 执行时间:程序从运行到结束所使用的时间 CPU时间:函数或者线程占用CPU的时间 内存分配:程序在运行时占用内容的空间 磁盘吞吐量:描述I/O的使用情况 网络吞吐量:描述网络的使用情况 响应时间:系统对用…
衡量系统性能的点 执行速度:即响应时间 内存分配:内存分配是否合理,是否过多消耗内存或者存在内存泄露 启动时间:程序从启动到正常处理业务需要的时间 负载承受能力:当系统压力上升,系统执行速度和响应时间上升曲线是否平缓 系统调优层次 系统设计调优 代码调优 jvm调优 数据库调优 操作系统调优 垃圾回收基础 垃圾回收算法: 引用计数法:每个对象都有一个引用计数器,当被一个对象引用的时候计数器+1,当引用失效的时候计数器-1,当计数器为0的时候就可以被回收掉.这种算法的缺陷是,不能解决循环引用的问题…
1.采用clone()方式创建对象 java语言里面的所有类都默认继承自java.lang.Object,此类里有一个clone()方法: 拷贝对象返回的是一个新的对象,而不是一个对象的引用地址: 拷贝对象与用new关键字操作返回的新对象的区别是这个拷贝已经包含了一些原来对象的信息,而不是对象的初始信息. 工厂模式的实现: 反例 public static Credit getNewCredit(){ return new Credit(); //创建一个新的Credit对象 } 正例 使用cl…
单例模式: 目的: 确保系统中一个类只产生一个实例. 好处: 1.对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销. 2.由于new操作的次数减少,因而对系统内存的使用频率也会降低,减轻GC压力,缩短GC的停顿时间. 单例模式的角色: 角色 作用 单例类 提供单例的工厂,返回单例 使用者 获取病使用单例类 代码实现: public class Singleton { private Singleton(){} private static Si…
Flink介绍-<Fink原理.实战与性能优化>读书笔记 1.1 Apache Flink是什么? 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题.随着雅虎对hadoop的开源,越来越多的大数据处理技术开始涌入人们的视线,例如目前比较流行的大数据处理引擎Apache Spark,基本上已经取代了MapReduce成为当前大数据处理的标准.但是随着数据的不断增长,新技术的不断发展,人们逐渐意识到对实时数据处…
转载自:http://www.cyqdata.com/qblog/article-detail-38993 文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL 4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍…
基于 Flink 1.9 讲解的专栏,涉及入门.概念.原理.实战.性能调优.系统案例的讲解. 专栏介绍 扫码下面专栏二维码可以订阅该专栏 首发地址:http://www.54tianzhisheng.cn/2019/11/15/flink-in-action/ 专栏地址:https://gitbook.cn/gitchat/column/5dad4a20669f843a1a37cb4f 专栏亮点 全网首个使用最新版本 Flink 1.9 进行内容讲解(该版本更新很大,架构功能都有更新),领跑于目…
--From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能指标: 执行时间,CPU时间,内存分配,磁盘吞吐量,网络吞吐量,响应时间. 优化策略: 木桶原理,优化性能瓶颈. 1.2 性能调优的层次 设计调优, 代码调优, JVM调优, 数据库调优, 操作系统调优. 2. 设计优化 2.1 善用设计模式 单例模式: 对于巨大对象,节省创建对象的时间空间: 代理…
参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记:第五讲 Linux性能优化实战学习笔记:第六讲 Linux性能优化实战学习笔记:第七讲 Linux性能优化实战学习笔记:第八讲 Linux性能优化实战学习笔记:第九讲 Linux性能优化实战学习笔记:第十讲 Linux性能优化实战学习笔记:第十一讲 Linux性能优化实战学习笔记:第十二讲 Linux性能优化…
<高性能网站建设进阶指南>: 1.使用局部变量,避免深入作用域查找,局部变量是读写速度最快的:把函数中使用次数超过一次的对象属性和数组存储为局部变量是一个好方法:比如for循环中的.length通常可以保存为局部变量. 2,多个if时,if顺序按概率降序排列 3,当仅判断一两个条件时,if通常比switch更快,当有两个以上条件且条件比较简单(不是范围判定)时,switch通常更快:因为多数情况下,switch语句中执行单个条件的时间比if短: 4,循环中把循环变量递减到0,而不是递增到长度,…
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口优化之外,其它真是无需太多优化. 1. CPU性能优化 (1) 服务器或宿主机主板BIOS中开启Intel Virtualization Technology(简称VT), 如果主板支持In…
一.工作原理剖析 1.图解 二.性能优化 1.设置Shuffle过程中的并行度:spark.sql.shuffle.partitions(SQLContext.setConf()) 2.在Hive数据仓库建设过程中,合理设置数据类型,比如能设置为INT的,就不要设置为BIGINT.减少数据类型导致的不必要的内存开销. 3.编写SQL时,尽量给出明确的列名,比如select name from students.不要写select *的方式. 4.并行处理查询结果:对于Spark SQL查询的结果…
摘要 本文介绍了使用 Pandas 进行数据挖掘时常用的加速技巧. 实验环境 import numpy as np import pandas as pd print(np.__version__) print(pd.__version__) 1.16.5 0.25.2 性能分析工具 本文使用到的性能分析工具,参考:Python 性能评估 学习笔记 数据准备 tsdf = pd.DataFrame(np.random.randint(1, 1000, (1000, 3)), columns=['…
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global 参数名=参数值; set @@global.参数名 :=参数值; 会话参数 set [session] 参数名=参数值; set @@session.参数名 :=参数值; 内存配置相关参数 确定可以使用的内存的上限 确定mysql每个连接使用的内存 sort_buffer_size:需要注意,每个…
mysql性能优化 硬件对数据库的影响 CPU资源和可用内存大小 服务器硬件对mysql性能的影响 我们的应用是CPU密集型? 我们的应用的并发量如何? 数量比频率更好 64位使用32位的服务器版本 32位不能使用超过4G的内容,因此选择的时候需要注意. myisam innodb 磁盘的配置和选择 机械硬盘: 存储容量 传输速度 访问时间 主轴转速 物理尺寸 使用RAID增加传统机器硬盘的性能 RAID:一系列小磁盘组成大磁盘,数据冗余 RAID 0 :成本最低,但是没有数据冗余会造成数据丢失…
性能优化 1.注意session.clear()的运用.尤其是不断分页循环的情况下. a)在一个大集合中进行遍历,遍历取出数据或者对象 b)java会引起内存泄漏吗?在语法上是不可能出现内存泄露的,因为我们是运行在java虚拟机,有垃圾处理机制.但是在实际操作中,比如打开session不关闭,打开sessionfactory不关闭(数据库连接池),打开本地文件不关闭等等,这些都是占用内存的,所以可能操作不当会引起内存泄漏. 2.1+N问题(一对多,多对一)把关联对象也取出来了实际并不需要.导致冗…
前言: 最近参加面试,问到了很多关于mysql的优化方面的问题,回答的不是很好,也是因为原先做的项目流量不是很大,所以对mysql优化不是太了解,所以趁着周末,恶补一下. 本文来源于慕课网sqlercn老师所讲的<性能优化之mysql优化>,根据老师所讲的内容整理所得. 一.为什么需要优化mysql数据库  1.避免出现页面访问错误          由于数据库连接超时产生的5xx错误          由于慢查询造成页面无法加载          由于阻塞造成数据无法提交       2.增…
这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影响,快速花点时间简单过一遍. 然后在对<Systems Performance>进行详细的学习. 由于Ubuntu测试验证更合适,所以在Ubuntu(16.04)+Kernel(4.10.0)环境下做了下面的实验. 全书共9章:1~4章着重于内存的使用,尽量降低进程的内存使用量,定位和发现内存泄露…
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 一.为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MyS…
编写代码 1.尽可能多的使用内置函数2.比对内置函数的时间复杂度,选择复杂度低的 比如 循环20万次-测试isset 和 array_key_exists 耗时 对比isset.php , array_key_exists.php3.尽可能少用魔法函数 对比__get.php no__get.php4.最好不用@错误抑制符号 查看at.php , 利用vlb扩展查看opcode cli: php -dvld.active=1 -dvld.execute=0 at.php 查看opcode //观…
1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问: 第二,控制实例的产生,以达到节约资源的目的: 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信. 2. 尽量避免随意使用静态变量 当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存,如 public class…
文章目录 系统性能监控 系统性能监控- linux uptime top vmstat(虚拟内存统计) pidstat 系统性能监控 - windows 任务管理器 Perfmon Process Explorer 小问题? pslist pslist javaw -d(查看javaw这个进程中的线程信息) Java自带的工具 jps 举个栗子 jinfo 举个栗子 jmap Dump堆 jstack 举个栗子 JConsole Visual VM 实战分析 运行一程序ThreadBlockMa…
PHP一般运行于Linux服务器中,周边主要包括:Linux运行环境.文件存储.数据库.缓存.网络 常见PHP场景的开销次序: 读写内存<<读写数据库(使用内存作为缓存.异步处理)<<读写磁盘<<读写网络数据(网络延迟) 尽量操作内存和数据库,避免操作磁盘和网络数据,一定要避免读取大文件 一.优化网络请求: 可能存在的问题: 1.对方接口的不确定性因素 2.网络稳定性 优化网络请求措施: 1.设置超时时间(数字可以根据自己项目实际情况进行调整) a.连接超时:200ms…
使用ab进行压力测试 ab -n行数 -c并发数 url 重点关注下面两点: 1.Request per secend : 每秒可接收的请求数 2.Time per request : 每次请求所耗费的时间 优化1.多使用PHP自身的功能(如PHP定义的函数.常量),尽量少自己造轮子,自己写的代码冗余较多,可读性不高,且性能低下 PHP每次接受请求后,都会进行编译成底层语言,C->汇编->机器语言,同时接受大量请求,每个请求都会执行一次编译 示例代码如下: bad.php          …
No1: Hybrid就是原生和Html5混合开发app No2: 插件化方法Altas或者DroidPlugin No3: 热修复技术可以把更新补丁上传到云端,此时APP就可以直接从云端下拉补丁直接应用生效 优势: 1)无需重新发版,实时高效热修复 2)用户无感知修复,无需下载新的应用,代价小 3)修复成功率高,把损失降到最低 No4: 热修复框架Sophix:包括代码修复.资源修复.so修复 No5: 代码修复油两大主要方案,一种是阿里系的底层替换方案,另一种是腾讯系的类加载方案 这两种方案…
一,选择优化的数据类型 1.更小的通常更好. 更小的数据类型通常占用更少的磁盘,内存和cpu缓存,通常更快. 2.简单就好 简单的数据类型操作,通常需要更少的CPU周期. 3.尽量避免NULL值 列可为null,会占用更多的存储空间,也使得索引,索引统计,和值比较都更复杂. 二.数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节…
第一章 加载和执行 大多数浏览器都是用单一进程处理UI界面的刷新和JavaScript的脚本执行,所以同一时间只能做一件事,Javascript执行过程耗时越久,浏览器等待响应的时间就越长. 所以,HTML页面在遇到 无阻塞的脚本 尽管减少Javascript文件的大小并限制HTTP请求次数仅仅只是第一步,下载单个较大的Javascript脚本执行也许要锁死大量的事件,所以无阻塞的脚本的意义在于页面加载完成之后再下载脚本. 延迟的脚本 <script defer> 这是告知,延迟脚本内的内容不…
文章目录 内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆溢出 永久区 Java栈溢出 直接内存溢出 小问题? MAT使用基础 柱状图显示 支配树 显示线程信息 显示堆总体信息,比如消耗最大的一些对象等 入引用和出引用 浅堆.深堆 浅堆 深堆 举个栗子 使用Visual VM分析堆 java自带的多功能分析工具,可以用来分析堆Dump Tomcat OOM分析案例 解决方法: 内存溢出(OOM)的原因 在JVM中,有哪些内存区间? 堆.永久区.线程栈.直接内存,此外还有code cac…
文章目录 GC的概念 GC算法 引用计数法 引用计数法的问题 标记清除 标记压缩 小问题 复制算法 复制算法的最大问题是:空间浪费 整合标记清理思想 -XX:+PrintGCDetails的输出 gc思想以及总结 分代思想 依据对象的存活周期进行分类,短命对象归为新生代,长命对象归为老年代. 根据不同代的特点,选取合适的收集算法 GC算法总结整理 可触及性 概念 可触及的 可复活的 不可触及的 举个栗子 注意点 根 Stop-The-World 举个栗子 GC的概念 Garbage Collec…