优化

报表性能优化方案之善用参数注入

雨燕双飞 提交于 2019-12-04 13:10:25
1. 问题描述 对于多数据集关联报表,当数据很大时报表的展现速度就会很慢,或通过写sql语句又很复杂。为此FineReport提供一种,既可加快报表的展现速度,又不用编写复杂的sql语句的方案。即使用动态参数注入功能。 2. 原理 动态参数注入,是通过注入的值对数据库中的数据进行操作的,只是取对应的数据,所以会提高报表的性能。 3. 示例 新建模板 展现多个关联数据表的数据 SQL语句,ds1:SELECT * FROM [订单] SQL语句,ds2:SELECT * FROM 订单明细 报表样式 传统做法:先定义多个数据集,然后在报表中设置过滤条件,或使用连接将多个数据表定义成一个sql,但这两种方案会产生的一系列问题(具体下面有介绍)。而使用动态参数注入的功能可解决大数量报表展现的速度,下面对比看下这三种做法。 3.1 设置过滤 此方法是定义两个数据集查询出所有数据,然后在报表中设置过滤条件。 分页预览query_like.cpt,从日志中可看出,是将第二个数据集中的数据全部取出了,如下所示: 注:对于数据量大的报表,若将数据全部取出会降低报表的性能,因此会降低报表的展现速度。 3.2 定义sql 若是采用将两个数据集定义成一个数据集,则SQL语句为:select a.订单ID,订购日期,到货日期,发货日期,产品ID,单价,数量,进价,折扣 from 订单 a,订单明细 b

编译-O 选项对性能提升作用

坚强是说给别人听的谎言 提交于 2019-12-04 03:22:13
编译-O 选项对性能提升作用 https://www.cnblogs.com/pigerhan/p/3526889.html GCC -O 选项 这个选项控制所有的优化等级。使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候。 -O设置一共有五种:-O0、-O1、-O2、-O3和-Os。 让我们来逐一考察各个优化等级: -O0:这个等级(字母“O”后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级。这样就不会优化代码,这通常不是我们想要的。 -O1:这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。 -O2:-O1的进阶。这是 推荐的 优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。 -O3:这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且 在使用gcc4.x的系统里不应全局启用 。自从3.x版本以来gcc的行为已经有了极大地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包 将 产生更大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为

如何做seo优化才能获取搜索引擎排名?

心已入冬 提交于 2019-12-04 00:04:29
现在网络上有很多网站,但是排名和流量都不理想,所以很多企业会很苦恼。所以我们经常思考如何使网站被搜索引擎喜欢,被用户喜欢,有一个良好的排名和流量? 在这个鱼龙混杂的网络中,seo优化实际上是seo网站优化的一部分。许多做网站优化的公司只是做内容,外链,甚至是做黑帽seo。网络上的网站越来越多,同一搜索引擎的算法也越来越完善。根据以往的优化方法,很难取得良好的优化效果,织梦平台小编认为网站优化需要SEO+UEO的结合,这是网站优化的新发展方向。 所谓的ueo就是优化用户体验,也就是优化网站以满足用户的体验。面对网站在用户层面的内容优化,本着为访问者服务的原则,提高网站功能、运营、视觉等网站要素,以获得访问者的青睐,并通过UEO提高流量转化率。 一、网站内容优先优化 网站的内容包括很多方面。这些内容是网站的生命线。只有网站中独特、创新和原创的内容才能被接受和认可。独特、创新、原创的内容可以概括为一句话,这是用户需要的内容,可以为用户创造价值。这个站点中的内容优化应该朝着这个方向工作。 二、创建外部链 将被动外部链更改为主动外部链。首先,依靠天然转发的高质量内容在站点中得到真正的外链。第二,利用博客、微博、高权重论坛、高权重B2B平台培育优质外链。这里需要强调的是,外链应该关注“自然”的外链,这也是百度未来对外链态度的一个方向。当然,它强调的是用户自发复制或留下的外部链,而不是由站长的

详解C中volatile关键字

为君一笑 提交于 2019-12-03 23:43:00
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short flag; void test() { do1(); while(flag==0); do2(); } 这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由别的程序更改,这个程序可能是某个硬件中断服务程序。例如:如果某个按钮按下的话,就会对DSP产生中断,在按键中断程序中修改flag为1,这样上面的程序就能够得以继续运行。但是,编译器并不知道flag的值会被别的程序修改,因此在它进行优化的时候,可能会把flag的值先读入某个寄存器,然后等待那个寄存器变为1。如果不幸进行了这样的优化,那么while循环就变成了死循环,因为寄存器的内容不可能被中断服务程序修改。为了让程序每次都读取真正flag变量的值,就需要定义为如下形式: volatile short flag; 需要注意的是,没有volatile也可能能正常运行

Centos7基础优化操作项

霸气de小男生 提交于 2019-12-03 22:42:44
1.基础优化操作项:更新yum源信息 第一个:就近使用yum源地址,安装软件更快。 curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 第二个:安装RHEL/CentOS官方源不提供的软件包 curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 2.安全优化:关闭SELinux及iptables(在工作场景中,如果有外部IP一般要打开iptables,高并发流量的服务器可能无法开启) # 关闭selinux sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config grep SELINUX=disabled /etc/selinux/config setenforce 0 getenforce 3.关闭firewalld防火墙服务 systemctl stop firewalld systemctl disable firewalld systemctl

SEO优化攻克目标关键词的三大锦囊

有些话、适合烂在心里 提交于 2019-12-03 21:21:05
当我们优化一个网站的目标关键词的时候,首先需要思考以下三大问题。 第一问:目标关键词怎么确定? 第二问:优化目标关键词的重点是什么? 第三问:提升和维护排名的主要工作是什么? 回答这3个问题,我们总结出了这些答案。 SEO优化攻克目标关键词的三大锦囊 第一个锦囊Sift:筛选(选择目标关键词) 1、内容相关性和密度 首先确定3-5个目标关键词,目标关键词必须与网站内容有相关性,关键词相关性越强能给网站带来流量和转换。 2、搜索次数频率 选择关键词搜索次数多、竞争程度小的词。 3、竞争性程度分析 用百度指数搜索,搜索量大于1000属于高难度的词,搜索量在100-1000之间的就是竞争难度一般,搜索量在100以下的就是竞争难度较小的。 第二个锦囊Enhance:提权(提高权重) 1、增加多样化的外链 不要单一只做纯文本URL外链,可以选择锚文本、超链接等多种形式。 2、做好站内锚文本 在页面正文中、人工或者自动添加其他页面的内部链接。 第三个锦囊Repeat:重复(站内锚文本、站外锚文本) 1、做站内锚文本可以在页脚添加一行首页和导航页面上的关键词锚文本链接。 2、做站外锚文本注意多样性、相关性和数量均匀分布,所有锚文本。 3、锚文本都尽量采用绝对地址。 如果你成功攻克目标关键词,能够给网站带来稳定的流量,同时也能带动网站的长尾关键词,在之后的优化工作中也会轻松很多。 来源:

暴搜的美学

不羁的心 提交于 2019-12-03 15:27:52
暴搜的美学 引言:在noip,csp的比赛中一般情况下都会有大量的部分分可拿,某些题可以通过暴搜AC, 甚至于还可以吊打标称。。。在某些弱省,拿满暴力分就有省一的说。。。。 然而,不管怎样,本文所述的就好比教你如何让你的弓箭射得更准,长矛投得更远,即使你掌握的再好,也比不过好比电磁炮,激光枪的其他优秀算法。 本文的意图就在于分享一些比较使用的搜索小技巧,展示搜索的精妙之处,在考场上遇到不会的题时可以写写暴力骗骗分。电磁炮,激光枪偶尔也会有出故障的时候。 真正的oier的思维是不会局限于暴搜的,所以当你因为用了一些本文中所提到的搜索技巧而AC了某些题目时,请放下你的暴搜,去领悟题目的美。学习暴搜,运用暴搜,并且脱离暴搜。 Part.1 暴搜的定义 本文所讲的暴搜是指在可承受的数据规模内,利用计算机的高速运算能力,对题目所求的答案进行寻找。一般来说,有两种风格不同的搜索。DFS和BFS。DFS即为深度优先搜索,一般是递归调用自己,利用函数的参数进行状态转移。BFS主要是横向地讨论每一个可能的状态,一般利用队列维护其状态。 DFS 和 BFS 该如何决策呢? 总的来说 DFS 的上镜率远高于BFS,所以一般首选DFS 一般情况下,求最优解的情况可以考虑BFS,因为BFS的搜素顺序是横向发展的,所以第一个搜到的值一定是最优值,但BFS正因为是横向搜索所以不方便进行剪枝的优化 同时

synchronize底层原理

╄→尐↘猪︶ㄣ 提交于 2019-12-03 11:34:06
1、普通同步方法,锁是当前实例对象 2、静态同步方法,锁是当前类的class对象 3、同步方法块,锁是括号里面的对象 synchronize底层原理: Java 虚拟机中的同步(Synchronization)基于进入和退出Monitor对象实现, 无论是显式同步(有明确的 monitorenter 和 monitorexit 指令,即同步代码块)还是隐式同步都是如此。 同步代码块:monitorenter指令插入到同步代码块的开始位置,monitorexit指令插入到同步代码块的结束位置,JVM需要保证每一个monitorenter都有一个monitorexit与之相对应。任何对象都有一个monitor与之相关联,当且一个monitor被持有之后,他将处于锁定状态。线程执行到monitorenter指令时,将会尝试获取对象所对应的monitor所有权,即尝试获取对象的锁; 对象头: Hotspot虚拟机的对象头主要包括两部分数据:Mark Word(标记字段)、Klass Pointer(类型指针)。其中Klass Point是是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据,它是实现轻量级锁和偏向锁的关键。 Mark Word:用于存储对象自身的运行时数据,如哈希码(HashCode)、 GC分代年龄

Java 程序优化:字符串操作、基本运算方法等优化策略(一)

依然范特西╮ 提交于 2019-12-03 09:14:53
针对 Java 程序编写过程中的实际问题,本文分为两部分,首先对字符串相关操作、数据切分、处理超大 String 对象等提出解决方案及优化建议,并给出具体代码示例;然后对数据定义、运算逻辑优化等方面提出解决方案及优化建议,并给出具体代码示例。 由于本文所尝试的实验都是基于联想 L430 笔记本,i5-3320CPU,4GB 内存基础上的,其他机器上运行代码可能结果有所不同,请以自己的实验环境为准。 字符串操作优化 字符串对象 字符串对象或者其等价对象 (如 char 数组),在内存中总是占据最大的空间块,因此如何高效地处理字符串,是提高系统整体性能的关键。 String 对象可以认为是 char 数组的延伸和进一步封装,它主要由 3 部分组成:char 数组、偏移量和 String 的长度。char 数组表示 String 的内容,它是 String 对象所表示字符串的超集。String 的真实内容还需要由偏移量和长度在这个 char 数组中进行定位和截取。 String 有 3 个基本特点: 1. 不变性; 2. 针对常量池的优化; 3. 类的 final 定义。 不 变性指的是 String 对象一旦生成,则不能再对它进行改变。String 的这个特性可以泛化成不变 (immutable) 模式,即一个对象的状态在对象被创建之后就不再发生变化

暂且叫它-\"蒙伪树\"-吧-

痞子三分冷 提交于 2019-12-03 05:16:19
今天我看到 o oo 聚聚画线段树,但是ta画的不是很好,于是本人饶有兴趣的研究了那棵无聊的树。 但是它并不满足树的性质,于是命名为伪树。 为了防止太弱和别的巨型数据结构撞名导致尴尬,于是又挂了自己$id$的一部分,叫"蒙伪树"($\text{Miemeng's Erroneous Tree}$)可以简称$\text{MET}$。 其实是样辉三角? 我伪了。 先来张图: 有啥用: 显然没啥用,可以用上面多的要命的节点维护区间最值,或是一些其他的信息。 时间复杂度: 建树:$O(N^2)$ 查询:$O(1)$ 修改:$O(N)$ 所以它是暴力,恩? 空间复杂度: $O(N^2)$ (为什么我不开二维数组?) 一些乱七八糟的性质: 1> 当我们将$LCA$的编号标记为两个数取平均值后的值,这样每一个值就控制了一些点。 这样就可以建一棵新树。 别问我为什么又画了一个(上面的图太丑了,而且我把它丢了) 这样就变成前缀和啦,所以我们可以得出结论,前缀和是对$\text{MET}$的优化(其实$\text{MET}$是对大部分数据结构的劣化(捂脸 于是对前缀和进行位运算优化,得到树状数组。 然后我们发现里面有很多点是无效的,于是删除一些节点。 发现它(像)是线段树。 于是我们又得出结论,线段树也是对$\text{MET}$的优化。 最后我扯一句,如果用倍增优化可以把$\text{MET}