优化

Hibernate 性能优化法则

余生长醉 提交于 2019-11-27 06:16:28
原文同步至: http://waylau.com/tips-to-boost-your-hibernate-performance/ Hibernate 是 Java EE 应用中流行的 JPA 框架,简单易用,但很多使用过 Hibernate 的开发者都普遍反映 Hibernate 性能低下。究其原因,还是使用者没有对 Hibernate 进行过深入理解,对 Hibernate 的应用也只是浮于表面。本文介绍了几种简单实现 Hibernate 性能优化的方法。 启用 Hibernate 数据统计策略 没有测量就没有优化。启用 Hibernate 数据统计策略,用来做优化前后的数据对比。 将 hibernate.generate_statistics 置为 true ,日志级别 org.hibernate.stat 置为 DEBUG ,Hibernate 会收集内部统计数据,比如查询的性能、缓存命中情况等。 做到这一步,你可以避免常见的问题,比如,查询缓慢,查询次数太多,缓存没有使用等情况。还有一点要注意,数据库的测试数据量大小对于查询结果影响也很大。 改进慢查询 慢查询并不是一个真正的 JPA 或 Hibernate 的问题。这种性能问题在每一个框架中都有可能发生,甚至是普通的 SQL 或者 JDBC,这时就需要在固定的 SQL 和数据库级别进行分析。如果你选择这样做了

多线程的内存可见性

六眼飞鱼酱① 提交于 2019-11-27 00:22:30
可见性 :一个线程对共享变量的修改能够及时的被其他线程看到。 共享变量 :如果一个变量在多个工作线程的工作内存中都存有副本,那么这个变量就是这几个线程的 共享变量。 Java内存模型(JMM) :描述了Java各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中取出变量这样的底层细节。 两条规定 :   1、线程对共享变量所有的操作都必须在自己的工作内存中进行,不能直接从主内存中读取。   2、不同线程之间无法直接访问其他线程工作内存中的变量,线程间变量值的传递需要通过主内存来进行。 指令重排序 :   代码书写的顺序与实际实行的顺序不同,指令重排序是编译器或处理器为了提高性能而做的优化。   1、编译器优化的重排序(编译器优化)   2、指令级并行重排序(处理器优化)   3、内存系统的重排序(处理器优化) 不可见的原因 :线程的交叉执行,重排序结合线程交叉执行,共享变量未及时更新。 voltaile实现内存的可见性 :   深入来说是通过加入内存屏障和禁止重排序优化来实现的   1、对volatile修饰的变量执行写操作时,会在写操作后加一条store屏障指令   2、对colatile修饰的变量执行都操作时,会在读操作之前load屏障指令   volatile修饰的变量不能保证原子性,只能保证可见性。   多线程中安全的使用volatile变量

磁盘的优化

你。 提交于 2019-11-26 22:20:30
调度算法   写入优化     优化方式     1、调整算法     2、调整队列       调整算法: vim /usr/lib/tuned/《已经选择的优化策略》/tuned.conf       查看算法: cat /sys/nlock/sda/queue/scheduler       配置文件位于 /sys/block/sda(需要优化的磁盘)/queue/     在 noob算法下       无任何优化(多用在存储已经优化的情况下)     在 deadline的算法模式下       read_expire读过期为最大读取时间(默认为500ms)       write_expire写过期为最大写入时间(默认为5000ms)     在 anticipatory(猜想)算法下       其中 antic_expore的等待时间下(默认6ms),会判断下一个IO是否位于附近,如果相近则继续处理     在 cfq算法下        针对每个 io进行单独的算法。       使用 ionice命令优化特定进程在磁盘上的优先级         -p 进程ID         -n 优先级         -c 类         class1 (real-time) 同优先级谁先访问磁盘随先读取 优先级同类最高          优先级 0-7(0最重要)  

新手网站seo优化掌握的基础知识

落花浮王杯 提交于 2019-11-26 21:21:12
1.新做的网站是需要进行域名注册,并且域名的名称都是需要考虑的,一开始打算建设网站就要做好准备。 2.选择稳定的服务器,保证网站的后期发展,同时也要确保优化后的网站速度、访问速度,这样对网站更加有利。 3.网站根据业务以及产品进行关键词选择,关键词的选择是需要重视的,不仅仅只是针对网站的关键词优化,更多的是能够让客户通过关键词识别到网站,同时也要实现搜索引擎的排名,为了能够更加精准的优化网站,需要树立核心关键词以及长尾关键词。 4.网站结构对优化也产生了重要的作用,好的结构同样是最后期优化有所帮助,其实建设网站的时候就要需与seo进行商讨才能够对网站有更好的帮助,不浪费时间有能够达到想要的目的。 5.网站建设后一般设置新闻板块利于搜素引擎经常抓取,标识网站是有人专业管理,同时更新的文章内容追求原创更好,有时候思路不足就使用伪原创,但高质量文章总是获得更多的喜欢。 以上是新手建站需要了解的几个基本点,中安云城也是在网站建设和优化上不断摸索得出来的结果,只有不算学习不断实践才能够获得更好的结果。 来源: 51CTO 作者: 中安云城 链接: https://blog.51cto.com/14596637/2453176

网站seo优化还有那些比较好的办法

半城伤御伤魂 提交于 2019-11-26 21:21:01
目前互联网的发展,企业建站是必不可少的一部分,同样也被人越来越重视了,但是单纯的建站能够有什么作用呢,你的网站没有得到优化排名做出来客户也无法及时搜索到,相当于也并没有为自己的目的而去盈利,因此这就需要涉及到网站seo优化,那么如果能够投入网站seo优化的帮助,可以为企业的网站带来什么好的要素呢。 1.树立企业品牌形象 网站其实也相当于是企业在互联网上的一个名片,如果能够将名片打出去那么就能代表一个企业的品牌和文化形象等多个方面。 2.产品服务直接展示 通过网站让潜在客户或客户直接访问到,可直接查看服务以及产品,能够更加直接深入了解到具体是做什么,灵活的将企业的文化资讯展示出来,这也就是网站的价值所在,通过这个媒介可以更好的维护企业形象以及宣传企业的动态,增强客户对企业的信任感。 3.完善客服对客户的需求 网站一般都会设置直接在线交流,客户看到网站后存在的一些问题,可以直接通过网站进行沟通,同时客服也能够通过网站对访问的客户进行一个数据统计,了解客户想知道的内容,更加完善网站的不足。 4.增强客户对企业的粘度 通过互联网与网站之间的关系进行一个宣传,可以让更多人能够看到我们的网站,并且实时更新,让客户能够对我们的网站关注更加紧密,不断促进客户与我们之间的粘度。 5.实现互联网营销 建设网站企业不仅仅只是宣传企业品牌,最终目的都是为了达到营销的效果,能够通过网站增加线上销售

冒泡排序

孤街醉人 提交于 2019-11-26 19:27:20
无论是迷宫游戏、扫雷游戏,还是常用的搜索引擎,甚至高端AI人机博弈等都需要算法来更好的实现。 算法是软件方面提升计算机效率的利器。 算法与数据结构分不开,用代码实现算法,至少会涉及到一种数据结构,数据结构通常有: 线性结构 树形结构 图 算法就要分别对应不同数据结构去排序。 当一个算法思想提出后,往往还需要更多时间去思考这个算法的优化。不断挖掘算法的潜力。 算法分类: 分治算法:归并排序、快速排序 贪心算法:最小生成树 动态规划:最短路径 递归搜索:树形结构 学习算法先从时间复杂度为O(n^2)学起,因为他们实现最简单,在并不复杂时,简单易用。高效率的算法往往实现也更复杂。 那就首先从算法从八大基本排序算的 冒泡排序法学起吧。 本文以升序排序为例。 冒泡排序定义及实现 冒泡排序,类似生活中于水中往上冒的气泡,越往上的气泡越大,故此得名。在冒泡排序中,每次比较前后两个数据,如果前一个比后一个大,则他们交换位置,这样从头到尾执行一次,则最大的数,就会被交换到最后一个位置,因为它比其他数都要打。进行第二轮排序,则次大的数会被交互到倒数第二位,以此类推。 首先来看一个基础的冒泡排序java代码实现: 从这里可以看到,因为有两次for循环每个循环最大会进行n次,所以时间复杂度为O(n^2). 优化一 优化1:在全部数据中,一旦前面有一个数比后面的大,就一定会发生交换,把大的数换到后面去。

MySQL优化概述

淺唱寂寞╮ 提交于 2019-11-26 16:43:00
MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈。 CPU在饱和的时候一般发生在 数据装入内存或从磁盘上读取数据时候 。 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上, 那么查询量相当大的时候那么平瓶颈就会出现在网络上。 我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。除了服务器硬件的性能瓶颈,对于MySQL系统本身,我们可以使用工具来优化数据库的性能。 MySQL优化方案 Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化 索引优化 1.索引 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的也是最容易出现问题的,还是一些复杂的查询操作,因此对查询语句的优化是重中之重, 加速查询最好的方法就是索引。 索引:简单的说,相当于图书的目录,可以帮助用户快速的找到需要的内容。 在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。 总结:索引的目的在于提高查询效率,与我们查询图书所用的目录是一个道理:先定位到章,然后定位到该章下的一个小结,然后找到页数。相似的例子还有:查字典,查地图等。 2

sql效能优化总结

≡放荡痞女 提交于 2019-11-26 15:03:01
Sql 效能优化总结 前一段时间公司系统遇到了严重的系统效能问题,经过一段时间的努力,现在已缓解了不少,今天抽空总结下,希望能起到抛砖引玉的作用,若你也遇到同样的问题,不妨多交流下。 环境:Windows2003+Sql2005 一直以来,不断的系统维护,新功能的增加,和一些新系统的应用,已经使现有的数据服务器不堪重负,虽然服务器的硬件配置已经比较顶级(一般的企业不会有这么顶级的配置),但还是逐渐难以应付大量的数据响应。用户也逐渐开始投诉系统效能问题。这个问题是一路积累出来的,现在浮出水面而已。其中一些旧系统当中使用的sql语句存在严重的效能问题,只是以前的应用相对较少,服务器可以轻松应付,现在随着应用不断增加,已经达到了瓶颈,逐渐难以支撑,问题浮现。 由于不想有较大的投资,又想解决现存问题,所以,经过分析,主要从以下几个方面入手考虑,解决问题。 数据服务器架构调整,分散服务器压力,(读写分离) 针对耗费资源较多的具体应用进行针对性的优化 对一些已经不使用的旧数据进行封存处理 经过以上措施,现系统效能问题已有较大改善,但这是个逐步改善,持续优化的过程。 后续会对刚提到的几点逐一进行介绍,待续。。。 转载于:https://www.cnblogs.com/JerryTian/archive/2012/06/21/2558344.html 来源: https://blog.csdn

oracle 不走索引的原因

让人想犯罪 __ 提交于 2019-11-26 14:31:34
create table tb2 as select * from emp; alter table tb2 modify empno number(4) not null; 翻到20W行 create index idxtb21 on tb2(empno); select INDEX_NAME from dba_indexes where table_name='TB2';--验证index建立起来 set autotrace on; select distinct empno from tb2;--走index select distinct ename from tb2 where empno=7934;--未走index select distinct ename from tb2 where empno=7934;--hint后,也未走index create index idxtb22 on tb2(ename);--难道和ename有关系?(按理说应该没关系,建上吧) select ename from tb2 where empno=7934;--还是不走index 重建index alter index idxtb21 rebuild ; 1.alter index xxx rebuild [online]; 是否加online,要看你的系统需求