建站公司塔山双喜/seo是什么职业

建站公司塔山双喜,seo是什么职业,淘宝官网首页注册账号,hello外贸人才网网站越快,用户的黏性就越高;网站越快,用户忠诚度更高;网站越快,用户转化率越高。简言之,速度是关键。——《Web 性能权威指南》显然,高性能意味着“快”。但对快的定义,在不同的系统…
  • 网站越快,用户的黏性就越高;

  • 网站越快,用户忠诚度更高;

  • 网站越快,用户转化率越高。

简言之,速度是关键。

——《Web 性能权威指南》

显然,高性能意味着“快”。但对快的定义,在不同的系统中,标准是不一样的。为了获得快的体验,通常我们需要平衡成本和收益等方面制定优化方法。

如果说“快”的标准不好把握的话,但我们都对类似这样的典型论述有一致的结论,比如:

  • 内存是快的

  • U 盘是慢的

之所以对这些问题容易有统一的认知,是因为我们已经对需要度量的范围与标准有了较清晰的概念,我们不自觉地预设一些应该受到控制的变量,并将它们与其他某些事物做了对比。比如,在谈 U 盘慢时,往往指的是在同一台计算机上与硬盘、内存等其他存储方法作比较。

类似地,当我们谈论应用的性能时,也需要把应用所在的环境、处理的数据量等情况一同纳入考虑范围内。这些因素常常让速度的定义变得复杂。因此,在谈论高性能之前,我们首先需要对性能进行建模,确定合适的用于反映性能状况的指标,并据此制定明确在各项因素在各种情况下的性能目标。比如,在谈论 Web 应用程序的速度时,我们经常谈到 QPS、TPS 和响应时间等指标,而确定性能目标时,则往往要考虑数据量的多少、并发用户数目和网络带宽等情况。

在性能建模时,越细致、越全面的数据就越真实地反映出系统的状况,从而能为做出正确的决策提供更准确的依据。一般来说,网络、磁盘等 IO 设备、操作系统,以及应用程序运行时(如 CLR、JVM)往往都提供了丰富的性能数据。对于 Web 和云原生系统而言,设计良好的服务端框架(如 Kubernetes),以及对开发人员友好的浏览器(如 Chrome)等也都会提供相关的性能接口。

举例来说,如果考虑一个桌面应用程序,我们需要收集的指标有:

  • 第一个界面出现的时间

  • 第一个界面加载完毕的时间

  • 某些典型事务处理时间

  • 关闭窗口时的等待时间

  • 从开始加载文件到能够编辑文件的时间

在制定性能目标时,我们要选用一些典型的用户机型进行模拟。在收集测试数据时,摆在面前的第一个问题是如何准确获得这么多种类时间?靠人肉掐秒表也是一种思路,不过还是显得太原始了一些。这时,我们需要在应用中添加一些性能埋点,并利用统一的工具收集这些数据(如操作系统提供的性能计数器)。

下面是利用 Windows 性能工具来查看 IO 操作在物理磁盘上执行的情况:

640?wx_fmt=png

这些性能数据不但能够在制定科学的性能目标时提供帮助,更能够在系统的性能未达预期时,在第一时间展示出系统瓶颈所在。一段时间以来,当网站慢时,我总是能够通过 Chrome 开发人员工具提供的网络时间线和性能分析工具快速地发现问题所在,并且运用《高性能网站建设指南》等经典书籍中给出的切实的建议针对性地做出优化。

下面是一个 Chrome 浏览器中加载资源时的资源瀑布图:

640?wx_fmt=png

有人说,所发现了问题时,就是解决了一半,对于一些容易解决的问题尤其如此。不过,一般来说,性能问题往往没那么容易解决——除非是程序的实现有明显的瑕疵(比如陷入了死循环)。相比于逻辑错误问题,解决性能问题一般需要具有一定经验的工程师才能胜任。

在优化应用程序的性能时,一般会由根据距离应用的远近,从外部到内部将优化分为这三个层次:

  • 链路上的优化

  • 结构性优化

  • 应用内优化

链路上的优化指的是在用户操作发出之后、真正到达应用程序逻辑执行之前的过程期间执行的优化;结构性优化指的是对应用程序所处的环境、依赖的资源,以及应用本身的子系统间的关系等方面的优化;而应用内优化则指的是对应用内的实现方式(比如算法和数据结构)进行优化。

举例来说,下图是一个简单的 Web 系统的结构,用户的操作指令发出之后,需要经过互联网到达负载均衡服务器,最后到达两台应用服务器中执行运算逻辑,而应用依赖了读写分离的两个数据库。

640?wx_fmt=png

在上述三种层次上,对系统的性能进行优化时,可以考虑以下措施:

  • (链路上)使用 DNS prefetch 技术减少域名查找时间

  • (链路上)增加负载均衡服务器的出口带宽

  • (结构性)增加一个新的应用服务器

  • (结构性)在应用服务器增加 CPU 核心数和内存

  • (应用内)用多线程技术把操作数据库和访问磁盘的操作同步进行

  • (应用内)消除应用加载数据时的 n+1 问题

一般来说,链路上和结构性方面的优化,对于使用各类编程平台实现的应用程序都一样适用。对于一个 Web 系统来说,HTTP 请求到达 Web 应用之前的所有优化,都属于这两类。时下,关于大流量、大并发系统的性能优化方法,人们已经讨论的很多了。不过,纵观那些优化方法,实际上也都可以从应用内的优化方法上看到类似的方法,可以认为这些优化思想大体是相通的。

从应用内部优化时,业务专家可以通过一些业务流程上的简化等方法来有效地改善应用程序的性能,例如,在某些情形下省略一些不必要的运算等。这类优化主要取决于业务规则的自身特点,难以统一地归纳出具体的经验。而在业务之外的优化方法,各种应用程序之间却是相通的。

通常,在应用内,要在业务流程之外进行性能优化,我们考虑以下方法:

并发与并行 也就是让程序同时做多件事,以及将一件事分为多个小块同时完成。 将按顺序执行(串行)的多个任务改为并行之后,处理时间从多个任务之和变成了多个任务中最慢的任务的时间。计算机系统中某个层次(如应用程序)的并行能力是由它的底层(如操作系统)的并发能力提供支持的。既然多核计算机早已普及,那么就没有理由不好好利用并行处理能力了。

异步 在计算机系统中,运算往往要比输入输出(IO)操作快得多,不少看起来很慢的系统经常是在空置地等待完成 IO 操作。异步化 IO 操作能让计算机不再等待 IO 完成,从而能最大化地利用系统的运算能力。

缓存 不论是运算,还是 IO 操作都是要耗费时间的。“利用空间换时间”经常是有效的优化方法:典型地,在运算斐波那契数列时,如果不是有通项公式,在不用缓存的情况下几乎不可能写出符合时间要求的算法。

精减与压缩 还是 IO 的问题。如果 IO 慢,就更不能让它执行不必要的操作了——比如多执行的 SQL、多加载的 JavaScript 文件等。经常,当数据量少了之后,由于需要处理的内容少了,还同时能够节省运算的时间。

技巧性优化 上面所述的几种方式,是在代码级别的“通用”方法。而面对具体的问题,经常会有一些技巧性优化方法。比如,采用更具针对性的数据结构,或已经证实更高效的算法,更利于运行时进行垃圾回收的代码风格等。

在上述这些方面的优化,在不同类型的应用程序里,有具体的表现形式;而在不同编程平台上,又可能有不同的实现。举例来说,在 Web 前端应用里,异步可表现为异步加载 JavaScript/CSS 文件和异步执行 Ajax;而在一个 Web 后端应用里,异步则表现为对文件、网络等操作的异步执行。如果具体到编程语言,Node.js 应用可能使用一个 nextTick 操作,而一个 ASP.NET 应用则使用一个 async 方法。需要参考其对应编程平台的优化经验进行实施。

640?wx_fmt=png

最后,当我们掌握了优化性能的方法,也不意味着我们一定要用尽各种方法去优化我们编写的每一个应用程序。在编写代码过程中,优先选用更高性能的写法通常是有益的(例如,使用 HashSet 替换 List 来存储需要快速查找的集合)。另一方面,过早优化是所有开发人员都容易忽略的陷阱(例如,集合的元素并不多,又大量用于循环时用 HashSet 替换了 List)。几乎所有新的开发人员都听说过“字符串是不可变量,应该尽量使用 StringBuilder”、“反射的性能很糟糕,应该尽量避免使用”之类的经验之谈。单从字面来理解确实都是金玉良言,但作为一种优化手段,性能优化往往会要求应用程序遵守一些约束,这些约束有时会破坏代码的可读性,有时会改变编写代码的习惯,而这些往往意味着在更广的维度上给团队带来成本。



640?wx_fmt=jpeg

作者和其他三位 ThoughtWorks 同事一同翻译的《.NET 性能优化》一书已于近日出版,各大在线书店有售。本书详细解释了影响应用程序性能的 Windows、CLR 的内部结构,并为读者提供了衡量代码如何独立于外部因素执行优化的知识和工具。书中提供了大量的 C# 代码示例和技巧,将帮您最大限度地提高算法和应用的性能。

尽管成书于数年之前,书中所述的大多数经验仍适用于最新的 .NET 框架和运行时。它不光讲述适用于 .NET 平台的性能优化方法,还详细地讲解了性能度量的指标,以及普适性的性能优化的思路和原理。既授人以鱼,又授人以渔,是不可多得的上佳之作。

欢迎留下您对本文的讨论,以及在日常开展性能优化工作中的感悟。评论获点赞最多的前五位读者将获赠《.NET 性能优化》图书一本(包邮)。

640?wx_fmt=jpeg

dotNET 跨平台读者独享优惠!公众号读者可以通过扫码、点击链接等方式在异步社区购买 《.NET 性能优化》,在结算时输入优惠码 d4c43c-e 即可获得10元现金优惠。优惠购买链接:https://www.epubit.com/book/detail/921 ,也可通过亚马逊、京东和当当等网站自行购买

原文链接:https://blog.jijiechen.com/post/high-performance-considerations/

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Asp.net Core 2.1新功能Generic Host(通用主机)深度学习

什么是Generic Host ?这是在Asp.Net Core 2.1加入了一种新的Host,现在2.1版本的Asp.Net Core中,有了两种可用的Host。Web Host –适用于托管Web程序的Host,就是我们所熟悉的在Asp.Net Core应用程序的Mai函数中用CreateWebHostBuilder创建出来的常用的We…

520 钻石争霸赛 题解

说好的钻石难度,结果本人菜的一地。。只有88分。。。。 文章目录7-1 考试周7-2 真的恭喜你7-3 平均成绩7-4 古风AB难度开始上升7-5 猜近似数字7-6 随机输一次7-7 阶乘的非零尾数7-8 三足鼎立前四题十分钟AC后两题二十分钟自闭第五题玄学卡点不知为何7-1 考试周 模拟…

.NET Core 跨平台物联网框架 ServerSuperIO.Core,一套设备驱动通吃嵌入式、上位机、云服务...

一、概述我们的大数据平台(云)平台的数据接收服务基于ServerSuperIO开发,因为集成的功能比较多,无法实现跨平台,现在跑在Windows下。但是云端体系化、标准化建设,跨平台是必走的技术路线。在ServerSuperIO基…

asp.net core添加全局异常处理及log4net、Nlog应用

一、介绍此篇文章将会介绍项目的全局异常收集以及采用log4net或者NLog记录。众所周知,一旦自己的项目报错,如果没有进行处理都是显示不友好的,有得甚至直接爆出错误页面,看的也是很奇怪。为了避免出现这样的错误以及在错误出现的时…

牛客网 【每日一题】5月20日题目 简单瞎搞题

比赛链接 文章目录题目描述题解:代码:题目描述 输入描述: 第一行一个数 n。 然后 n 行,每行两个数表示 li,ri。 输出描述: 输出一行一个数表示答案。 示例1 输入 5 1 2 2 3 3 4 4 5 5 6输出 26备注: 1 ≤ n , li , ri ≤ 100 题解&#xf…

ASP.NET Core 2.0利用MassTransit集成RabbitMQ

在ASP.NET Core上利用MassTransit来集成使用RabbitMQ真的很简单,代码也很简洁。近期因为项目需要,我便在这基础上再次进行了封装,抽成了公共方法,使得使用RabbitMQ的调用变得更方便简洁。那么,就让咱们来瞧瞧其魅力所在…

《通过C#学Proto.Actor模型》之 HelloWorld

在微服务中,数据最终一致性的一个解决方案是通过有状态的Actor模型来达到,那什么是Actor模型呢?Actor是并行的计算模型,包含状态,行为,并且包含一个邮箱,来异步处理消息。关于Actor的介绍可参考…

[XSY] 计数(DP,NTT,分治)

计数 考虑转化题目,变为网格上有若干个点,要从(0,0)(0,0)(0,0)走到(n,an1)(n,a_{n1})(n,an1​) ,每一步只能往右走一步或往上走一步,且若当前在(i,j)(i,j)(i,j) ,必须满足0≤j≤ai10\leq j\leq a_{i1}0≤j≤ai1​&…

.Net Core应用框架Util介绍(一)

距离上次发文,已经过去了三年半,这几年技术更新节奏异常迅猛,.Net进入了跨平台时代,前端也被革命性的颠覆。回顾2015年,正当我还沉迷于JQuery EasyUi的封装时,突然意识到技术已经过时。JQuery在面对更加复…

使用.NET Core+Docker 开发微服务

.NET Core发布很久了,因为近几年主要使用java,所以还没使用过.NET Core,今天正好有一个c#写的demo,需要做成服务,不想再转成java来实现,考虑使用.NET CORE来尝下鲜,目标是开发一个微服务,然后部…

Steeltoe之Config客户端篇

Steeltoe是一款开源项目,其目标是选取源自Netflix及其它公司的工具,使它们能够运用于.NET社区。它不仅可以在.NET Core上,也可以在.NET Framework 4.X以上使用。此外,大多数的组件能够同时运行在本地机器及Cloud Foundry(一个领先…

[XSY] 绿色(圆方树、树形DP、树上差分)

绿色 题意简述 题解 首先,每次修改完点权后,重新考虑一遍所有路径显然是不现实的,所以我们考虑求出经过每个点的两端同色的简单路径数,这样权值和容易统计和修改。 接下来分析仙人掌上的简单路径性质。一条简单路径上的边&…

牛客网 【每日一题】5月29日 管道取珠

链接: 文章目录题目描述题意:题解:代码:时间限制:C/C 2秒,其他语言4秒 空间限制:C/C 524288K,其他语言1048576K 64bit IO Format: %lld题目描述 管道取珠是小X很喜欢的一款游戏。在本…

半天搭建你的Jenkins持续集成与自动化部署系统

前言相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛。由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,…

.Net业务搭配实用技术栈

前言昨天有篇文章在讨论webform的设计思路,我已经四五年不用webform了,虽然它也提供了HttpModule和httphandle来处理请求,提供了一般处理程序ashx来简化处理流程,但依然会想起它的form runatserver,想起注册客户端脚本…

Service Fabric 用 Powershell 部署应用到本地

前置说明安装 Service Fabric SDK,会在本机 C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK 生成部署脚本,如下图:用VS创建一个 Service Fabric 应用后,有一个部署脚本,位置在 [应用…

ElasticSearch入门 附.Net Core例子

1.什么是ElasticSearch?Elasticsearch是基于Lucene的搜索引擎。它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档。 Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。----来自维基百科的解释…

《.NET 性能优化》送书活动结果公布

截止到9月7日18:00(规则本是12:00,忙的忘记了这事,18点截的图),本次送书活动《.NET 性能优化》共收到100多位同学参与回复,本次很多同学在看到活动的书 ,自行就到异步社区…

hdu-2844 Coins (混合背包+二进制优化)

HDU链接 文章目录题目描述:题意:题解(代码)题目描述: 输入描述: 输出描述: For each test case output the answer on a single line. 输入 3 10 1 2 4 2 1 1 2 5 1 4 2 1 0 0输出 8 4题意: 有n种硬币&…

.NET Core WebApi中实现多态数据绑定

什么是多态数据绑定?我们都知道在ASP.NET Core WebApi中数据绑定机制(Data Binding)负责绑定请求参数, 通常情况下大部分的数据绑定都能在默认的数据绑定器(Binder)中正常的进行,但是也会出现少…