性能优化

网站性能优化总结。

ⅰ亾dé卋堺 提交于 2020-03-04 08:52:58
转自 网站性能优化总结。 1. 使用存储过程, (如果在程序里用exec 存储过程 参数,这样执行似乎并没有快多少) 在数据库里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。 2. 尽量优化数据库语句,使逻辑尽量简单。 @ 还有就是在使用函数时 charindex >like > padindex 效率依次递减。 @查询字段是否包含在以,分隔的字段串时,最好不要用in 速度非常慢。 还有好多,可以总结的,这里就不再描述了。 3. EnableViewState(页面的视图状态)。如果无特殊要求设置为false。 使用ViewState ,每个对象都必须先序列化到 ViewState 中,然后再通过回传进行反序列化,因此使用 ViewState是没有代价的。尽量减少使用对象,如果可能,尽量减少放入 ViewState 中的对象的数目。下面情况基本上可以禁用viewstate: (1)页面控件 (.ascx) (2)页面不回传给自身。 (3)无需对控件的事件处理。 (4)控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理) 单个页面或每个页面都禁用 ViewState,如下所示: 单个页面:<%@ Page EnableViewState="False" %> 每个页面:在 web.config 中 <Pages

性能优化总结。

老子叫甜甜 提交于 2020-03-04 08:52:12
最近在领导的要求下做了一下项目的优化,总结如下: 1. 使用存储过程, (如果在程序里用exec 存储过程 参数,这样执行似乎并没有快多少) 在数据库里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。 2. 尽量优化数据库语句,使逻辑尽量简单。 @ 还有就是在使用函数时 charindex >like > padindex 效率依次递减。 @查询字段是否包含在以,分隔的字段串时,最好不要用in 速度非常慢。 还有好多,可以总结的,这里就不再描述了。 3. EnableViewState(页面的视图状态)。如果无特殊要求设置为false。 使用ViewState ,每个对象都必须先序列化到 ViewState 中,然后再通过回传进行反序列化,因此使用 ViewState是没有代价的。尽量减少使用对象, 如果可能,尽量减少放入 ViewState 中的对象的数目。下面情况基本上可以禁用viewstate: (1)页面控件 (.ascx) (2)页面不回传给自身。 (3)无需对控件的事件处理。 (4)控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理) 单个页面或每个页面都禁用 ViewState,如下所示: 单个页面:<%@ Page EnableViewState="False" %> 每个页面:在 web.config 中 <Pages

JVM性能优化

给你一囗甜甜゛ 提交于 2020-03-03 16:46:59
内存溢出 内存溢出的原因:程序在申请内存时,没有足够的内存空间。 内存溢出的几种方式 : 1,栈溢出:方法死循环递归(StackOverflowError),不断创立线程(OutOfMemoryError) 2,堆溢出:不断创建对象,分配对象大于最大堆的大小(OutOfMemoryError) 3,直接内存:分配的本地内存大小大于JVM的限制。 4,方法区溢出:在经常动态生产大量Class的应用中,CGLib字节码增强,动态语言,大量JSP文件,大量基于OSGi的应用 内存泄漏 程序在申请内存后,无法释放已申请的内存空间。 内存泄漏的集中原因 : 1,长生命周期的对象持有短生命周期对象的引用:例如将ArrayList设置为静态常量,则容器中的对象在程序结束之前是不能被释放的,从而造成内存泄漏。 2,链接未关闭:如数据库连接池、网络链接和IO链接等,只有链接被关闭后,才会回收对应的对象 3,变量作用域不合理:例如 1.一个变量的定义的作用范围大于其使用范围。2.没有及时把对象设置为null 4,内部类持有外部类:内部类的生命周期长于外部类,程序很容易产生内存泄漏。解决办法,使用软引用或弱引用,通过构造方法传递 5,Hash值得变化:在集合中,如果修改参与计算哈希值字段,会导致无法从集合中单独删除当前对象,造成内存泄漏 内存溢出和内存泄漏的区别 内存溢出:实实在在的内存空间不足导致

Java性能优化怎么做?

柔情痞子 提交于 2020-03-02 12:10:06
Java性能优化怎么做?在Java程序中,性能问题的大部分原因并不在于Java语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 1、尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 1)控制资源的使用,通过线程同步来控制资源的并发访问; 2)控制实例的产生,以达到节约资源的目的; 3)控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2、避免随意使用静态变量 当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。 3、避免过多创建Java对象 尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度地重用对象,最好能用基本的数据类型或数组来替代对象。 4、使用final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,**例如Java、lang、String,为String类指定final防止了使用者覆盖length()方法。**另外,如果一个类是final的

Best Practices for Speeding Up Your Web Site(3)

浪尽此生 提交于 2020-03-02 11:06:38
九、 Reduce DNS Lookups tag: content 减少DNS查询 标签:内容 域名系统(DNS)建立主机名到IP地址的映射,就像电话簿映射人名到其电话号码一样。当你键入www.yahoo.com到你的浏览器(地址栏)中,浏览器所连接到的DNS解析器会返回服务器的IP地址。DNS也会有开销。DNS大概会花费20-120毫秒的时间为给定的主机名查询IP地址。浏览器不能从这个域名中下载任何东西,直到DNS查询完全结束。 DNS会缓存结果以为了更好性能。这个缓存可能存在于一个特殊的缓存服务器,该服务器由用户的ISP提供商或者局域网来维护,但是在用户的个人PC机中也会存在缓存的发生。DNS信息会保存在操作系统中的DNS缓存中(DNS Client Service on Microsoft Windows)。大多数的浏览器有自己的缓存,独立于操作系统中的缓存。只要浏览器在自己的缓存中保存DNS记录,就不会向操作系统发送记录请求了。 默认情况下IE将DNS查询结果缓存30分钟,这是在DnsCacheTimeout注册设置中规定的。FIrefox会将DNS查询结果缓存1分钟,这可以通过network.dnsCacheExpiration配置进行控制。(Fasterfox 将时间改为1个小时) 当客户端的缓存是空白(对于浏览器缓存和操作系统缓存)时,DNS查询的(请求

Best Practices for Speeding Up Your Web Site(4)

南楼画角 提交于 2020-03-02 05:39:50
十四、 Make Ajax Cacheable tag: content 使Ajax可缓存 标签:内容 Ajax的显著好处之一是对于用户来说它提供了瞬间的反馈,因为它通过异步方式从后端服务器请求信息。然而,使用Ajax也不能保证用户不翘起拇指来等待这些异步返回的Javascript和XML。在许多站点中,用户是否要等待取决于Ajax的使用方式。例如,在一个基于web的邮件客户端中,用户会持续等待Ajax的请求结果来找到匹配其查询条件所有邮件信息。重要的是要记住"异步"并不代表"瞬间"。 为了提高性能,优化这些Ajax请求是很重要的。提高Ajax性能的最重要的方式是使响应可缓存的,正如在 Add an Expires or a Cache-Control Header 所说的那样。 一些其它的原则同样适用于Ajax: Gzip Components Reduce DNS Lookups Minify JavaScript Avoid Redirects Configure ETags 让我们看一个例子,Web2.0的邮件客户端可能使用Ajax来下载用户的地址簿。如果在上次使用该web邮件应用时,用户没有编辑地址簿,之前的地址响应可以从缓存中被读出来,只要Ajax响应通过 Expires 或者 Cache-Control 头设置为可缓存的。相对于之前缓存过的地址簿

前端性能优化(三)——传统 JavaScript 优化的误区

心不动则不痛 提交于 2020-03-02 02:13:43
注:本文是纯技术探讨文,无图无笑点,希望您喜欢 #####一.前言 软件行业极其缺乏前端人才这是圈内的共识了,某种程度上讲,同等水平前端的工资都要比后端高上不少,而圈内的另一项共识则是—— 网页是公司的脸面! 几年前,谷歌的一项统计表明,如果亚马逊页面加载每慢 100ms,将影响他们 1% 的收入;如果谷歌页面加载慢 500ms,流量将锐减 20%,这个数据现在必将更加恐怖! 在 前端高性能优化(一) 、 (二) 中,笔者介绍了一些关于前端优化的技术,这些技术都依赖于前人的辛苦努力,但我们仍要明白的是,前端的情况十分复杂,优化前端性能是必须 因地制宜、因时制宜。 在本篇文章中,主要介绍的就是在一些条件下,传统优化 JavaScript 的技术并不像我们认为的那样适用。 #####二.JavaScript 模块化误区 加快 JavaScript 加载和执行的速度,一直是前端优化的一个热点。因此我们先来说下 JavaScript 模块化技术的相关知识,希望通过实践来体现模块化技术在使用时的注意事项,避免滥用。 为什么会有模块化技术? 长久以来,编写 JavaScript 一直以文件为单位,一般一个类型的 JavaScript 功能代码会被放在同一个文件里。在一个页面里,引用的文件一般是写死的,也就是不管页面用不用,只要你引入了这个文件,这个文件就会被加载。 举个例子

HashMap原理分析及性能优化

╄→гoц情女王★ 提交于 2020-03-01 22:17:36
文章目录 一.HashMap是什么 二.HashMap继承类对比分析 三.HashMap源码相关单词含义 四.HashMap如何确定哈希桶数组索引位置 五. HashMap 的 put 方法分析 六.HashMap扩容机制 七.HashMap线程安全性 一.HashMap是什么 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。 HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。 这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。 数据结构(JDK1.8): Node<K,V>[] table; 数组+链表+红黑树 二.HashMap继承类对比分析 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是 HashMap、Hashtable、LinkedHashMap和TreeMap , 类继承关系如下图所示: ① HashMap :它 根据键的hashCode值存储数据 ,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。 HashMap非线程安全 ,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致

listview加载性能优化ViewHolder

孤者浪人 提交于 2020-03-01 21:21:14
在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建。 ListView加载数据都是在public View getView(int position, View convertView, ViewGroup parent) {}方法中进行的(要自定义listview都需要重写listadapter: 如BaseAdapter,SimpleAdapter,CursorAdapter的等的getvView方法),优化listview的加载速度就要让convertView匹配列表类型,并最大程度上的重新使用convertView。 getview的加载方法一般有以下三种种方式: 最慢的加载方式是每一次都重新定义一个View载入布局,再加载数据 public View getView(int position, View convertView, ViewGroup parent) { View item = mInflater.inflate(R.layout.list_item_icon_text, null); ((TextView) item

iOS性能优化

旧城冷巷雨未停 提交于 2020-03-01 16:16:58
一、App启动优化 1.App的启动可以分为2种 冷启动(Cold Launch):从零开始启动APP 热启动(Warm Launch):APP已经在内存中,在后台存活着,再次点击图标启动APP APP启动时间的优化,主要是针对冷启动进行优化 通过添加环境变量可以打印出APP的启动时间分析(Edit scheme -> Run -> Arguments) DYLD_PRINT_STATISTICS设置为 1 如果需要更详细的信息,那就将DYLD_PRINT_STATISTICS_DETAILS设置为1 2.App 冷启动分为四大阶段 dyld 加载可执行文件,动态库(递归加载) runtime main() 函数执行后 首屏渲染完成后 一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:1012951431, 分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。 2.1关于dyld 在Mac 、iOS中,是使用了/usr/lib/dyld程序来加载动态库 dynamic link editor,动态链接编辑器 dynamic loader,动态加载器 dyld 的源码 https://opensource.apple.com/tarballs/dyld/ initializeMainExecutable 方法开始的