优化

MySQL 百万级分页优化(Mysql千万级快速分页)

家住魔仙堡 提交于 2019-12-03 03:57:08
一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 复制代码 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 网上很多优化的方法是这样的 复制代码 代码如下: SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10; 是的,速度提升到0.x秒了,看样子还行了 可是,还不是完美的! 以下这句才是完美的! 复制代码 代码如下: SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010; 比上面那句,还要再快5至10倍 另外,如果需要查询 id 不是连续的一段,最佳的方法就是先找出 id ,然后用 in 查询 复制代码 代码如下: SELECT * FROM table WHERE id IN(10000, 100000, 1000000...); 再分享一点 查询字段一较长字符串的时候,表设计时要为该字段多加一个字段,如,存储网址的字段 查询的时候,不要直接查询字符串,效率低下

mysql的limit经典用法及优化

让人想犯罪 __ 提交于 2019-12-03 03:56:32
用法一 SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1; 比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取。 用法二 SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2,1; 而这个SQL,limit后面是从第2条开始读,读取1条信息。 这两个千万别搞混哦。 用法三 select * from tablename <条件语句> limit 100,-1 从第100条后开始-最后一条的记录 用法四 select * from tablename <条件语句> limit 15 相当于limit 0,15 .查询结果取前15条数据用法五 mysql低版本不支持limit offset limit offset 在mysql 4.0以上的版本中都可以正常运行,在旧版本的mysql 3.23中无效 limit m offset n 等价于 limit m,n limit 的优化 mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降 来源:一亩三分地博客 MYSQL的优化是非常重要的

报表性能优化方案之多种报表服务器内存修改方法

↘锁芯ラ 提交于 2019-12-03 01:11:17
服务器内存修改 各应用服务器的内存配置方法不尽相同,如下列出了常用服务器的JVM参数(-Xms,-Xmx)配置方法。 JVM参数定义: - Xms: 初始化内存大小 - Xmx: 可以使用的最大内存 示例工具 以下示例工具:报表开发工具FineReport Tomcat 服务器内存修改 1. 问题描述 java应用程序运行过程中会使用web应用服务器的内存,如执行报表获取的数据,运算的中间数据等都需要暂存在服务器内存中。 当没有空内存可用时,就会出现内存溢出错误: java.lang.OutOfMemoryError:Java heap space 。 2. 解决方案 为了避免内存溢出的问题,我们一方面应适当启用磁盘缓存,另一方面可以根据实际情况调整服务器内存大小。 下面说明如何调整服务器内存大小。 · 解压版通过 start.bat 启动 tomcat 在windows系统中,找到 %Tomcat_Home%/bin/catalina.bat ,对这个文件进行编辑。 找到这样一行代码: 1. rem ----- Execute The Requested Command --------------------------------------- 在其下添加 1. set JAVA_OPTS= -Xms256M -Xmx512M ms代表初始时内存大小,mx代表最大

对返回的数据的封装优化,格式的统一(Spring Boot)

匿名 (未验证) 提交于 2019-12-03 00:41:02
金额为必填项, 无论业务成功与否,都将返回内容规范化为: 【错误码(code为0,正常),(code为1,异常)】 msg源于实体类中的金额字段: @NotNull ( message = "金额为必填项" ) private double money ; 1,http请求返回到最外层的对象 2,封装成一个ResultUtil,优化代码 3,使用(对传入的Girl对象使用@Valid注解,验证,处理金额是否为空): 太长了图片显示不全,挡住的部分是: bindingResult.getFieldError.getDefaultMessage(); 参考源于: imooc――Spring Boot进阶之Web进阶――2-4统一异常处理(上) 转载请标明出处: 对返回的数据的封装优化,格式的统一(Spring Boot) 文章来源: 对返回的数据的封装优化,格式的统一(Spring Boot)

人工智能数学基础――最优化方法

匿名 (未验证) 提交于 2019-12-03 00:30:01
最优化理论(optimization)研究的问题是判定给定目标函数的最大值(最小值)是否存在,并找到令目标函数取到最大值(最小值)的数值 。 目标函数(objective function)或评价函数 ,大多数最优化问题都可以通过使目标函数 f ( x ) f ( x ) 最小化解决,最大化问题则可以通过最小化 f ( x ) f ( x ) 实现。 全局最小值(global minimum) ,也可能找到 局部极小值(local minimum) ,两者的区别在于全局最小值比定义域内所有其他点的函数值都小;而局部极小值只是比所有邻近点的函数值都小。 无约束优化(unconstrained optimization)和约束优化(constrained optimization) 两类。无约束优化对自变量 x x 的取值没有限制,约束优化则把 x x 的取值限制在特定的集合内,也就是满足一定的约束条件。 线性规划(linear programming) 就是一类典型的约束优化,其解决的问题通常是在有限的成本约束下取得最大的收益。约束优化问题通常比无约束优化问题更加复杂,但通过拉格朗日乘子(Lagrange multiplier)的引入可以将含有 n n 个变量和 k k 个约束条件的问题转化为含有 ( n + k ) ( n + k ) 个变量的无约束优化问题

人工神经网络基础

匿名 (未验证) 提交于 2019-12-03 00:27:02
神经网络中最基本的成分是神经元模型,在生物神经元中每个神经元与其他神经元相连,当他“兴奋”时就会向连接的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过一个“阈值”那么他就会被激活,即兴奋起来,向其他神经元发送化学物质。 1943年,【McCulloch and Pitts】将上述的情形抽象为如图所示的简单模型,这就是一直沿用至今的“M-P神经元模型”。在这个模型中,神经元接收来自n个其他神经元的输入信号,这些信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理已产生的神经元的输出。 阈值的目的是:使通过激活函数后得到的非线性图像可以左右移动而增加解决问题的能力 理想中的激活函数是阶跃函数,他将输入值映射成为0或1,1对应神经元的兴奋。0对应神经元的抑制,然而阶跃函数具有不连续不光滑等不好的性质,因此常用Sigmoid函数作为激活函数,典型的Sigmoid函数如如所示,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此也常被称为挤压函数。 激活函数通常选择非线性的函数,非线性的函数比起线性的函数进行任意的线性组合,或者在复合一个线性函数,仍得到一个线性函数;而非线性的函数进行线性符合或者在复合非线性函数之后得到的就不再是一个线性函数,它将呈现一个更加回环曲折的图像。 激活函数的主要作用是

关于NB模块的功耗优化

匿名 (未验证) 提交于 2019-12-02 23:32:01
对于物联网终端模块,需要关注其功能、性能、安全成本、能耗等。最近折腾NB芯片模块的功耗,整理下过程中的一些想法。 功耗的组成及优化 从芯片电路角度,功耗分为动态功耗和静态功耗,电容充放电过程中的功耗.动态功耗包括翻转功耗(有效功耗)和短路功耗(无效功耗)。参考《参考SoC设计方法与实现》,芯片模块功率可以表示如下: p = 1 / 2 C V d d 2 f N s w + Q s c V d d f N s w + I l e a k V d d p=1/2*C*V_{dd}^2*f*N_{sw}+ Q_{sc}*V_{dd}*f*N_{sw}+I_{leak}*V_{dd} p = 1 / 2 C V d d 2 f N s w + Q s c V d d f N s w + I l e a k V d d 其中: C为结电容 f为工作频率 V d d V_{dd} V d d 为电压 Qsc为工作过程中的短路能量 I l e a k I_{leak} I l e a k 为漏电电流 N_{sw}数目 总能耗和时间有关系: W = p t W=p*t W = p t 对于通信芯片模块的优化需要考虑选择:性能基础上尽量降低功耗、低功耗基础上保证性能或是两者的权衡。功耗优化在整个系统设计过程中都应当纳入考虑范畴,从系统设计到电路级、门级都可考虑优化。目前所做优化基于已有芯片硬件

Jemalloc优化MySQL和Nginx

无人久伴 提交于 2019-12-02 22:40:18
Redis 2.4版本之后,默认使用jemalloc来做内存管理;tengine也整合jemalloc 。jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。如下图: 图片来源: facebook 最左边的就是glibc的malloc,最右边的就是jemalloc。从图表上可以看出,jemalloc的性能有glibc的两倍以上。非常压 倒性的性能差异。因此,使用了jemalloc的应用程序自然会快很多。Jemalloc旁边的就是tcmalloc。Tcmalloc的性能与其相差甚 微,低jemalloc2.1.0慢4.5%。图上和tcmalloc的1.4版本,而现在已经到2.1版本,因此实际上这两者应该是不相仲伯的。 Jemalloc的创始人jason evans也意识到这一点,说在cpu core 8以上的计算机上jemalloc效率更高。 MySQL 性能测 试–jemalloc内存管理: http://www.linuxeye.com/Linux/1914.html 安装jemalloc cd lnmp/src wget http://www.canonware.com/download/jemalloc/jemalloc-3.4.0.tar.bz2 tar xjf jemalloc-3.4.0.tar.bz2 cd

MySQL数据优化总结-查询备忘录

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、优化分类 二、测试数据样例 参考mysql官方的sakina数据库。 三、使用mysql慢查询日志对有效率问题的sql进行监控 第一个,开启慢查询日志。第二个,慢查询日志存储位置。第三个,没有使用索引的也会记录到慢查询日志中。第四个,超过1秒之后的查询记录到慢查询日志中(通常设置100ms)。 3.1、分析慢查询日志文件 3.1.1 tail命令 tail -50 /home/mysql/sql_log/mysql_slow.log,输入文件中的尾部内容,即末尾50行数据. 我们抽出其中一条,查看,如下图所示。 query_time,查询耗时(单位秒);lock_time,锁表时间。rows_sent,发送请求的行数;rows_examined,查询数据导致扫描表用到的行数。 3.1.2 官方mysqldumpslow工具 mysqldumpslow ,默认随mysql安装。 mysqldumpslow -h,可查询工具支持的命令。 mysqldumpslow -s r -t 10 /var/lib/mysql/localhost-slow.log | more ,返回结果如下图所示。 3.1.3 pt-query-digest工具 比mysqldumpslow反馈的信息多。 pg-query-digest --help 查看帮助,查看使用命令。 pg-query-digest

一次Java面试题目记录

匿名 (未验证) 提交于 2019-12-02 21:52:03
记忆得不太清楚了,不过一些基本问过的题目还是记得住的,就写一点吧。 maven的使用情况问一点。 snapshot和release版本的区别? maven的生命周期有了解过吗? 如何把自己写的架包推送到私服上?maven有一个deployed命令 maven有一个mirrors对吧,配置多个镜像的时候,多个镜像之间是怎么产生作用的?互相之间的作用是怎样的?调用顺序是。 如果有冲突会怎样?mirror本身是排除冲突的,我说的是你使用的哪一个插件的冲突,你配置的都是centre只会取一个。 mirror里面有一个mirror of 标签,就是中心镜像,只会取这里的。 项目的依赖,本地,远程,私服顺序应该是怎样的,(本地,私服,远程吧) java的内存模型了解过吗? 堆跟栈分别存储的内容是什么? 方法名是存在于哪里? public void 名字() 这个名字存在于哪里 堆里面的结构了解吗?内存垃圾回收的过程了解吗? JVM最大的标准是什么?最小1/16的内存 最大1/4的内存 怎么修改java进程起的内存,控制他的范围大小? 线程的一些问题? 你可以说出几种线程安全的类型? hashtable?stringbuffer?ConcurrentHashMap,vector。 我们为什么需要线程安全? 乐观锁,悲观锁的概念? 乐观锁局部操作的范围内,悲观锁首先觉得所有都可能出现线程安全问题。