当前位置: 首页 > 编程日记 > 正文

MySQL全面优化,速度飞起来

在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。

MySQL全面优化,速度飞起来

图-MySQL查询过程

一、优化的哲学

注:优化有风险,涉足需谨慎

1、优化可能带来的问题

1、优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统;

2、优化手段本来就有很大的风险,只不过你没能力意识到和预见到;

3、任何的技术可以解决一个问题,但必然存在带来一个问题的风险;

4、对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果;

5、保持现状或出现更差的情况都是失败!

2、优化的需求

1、稳定性和业务可持续性,通常比性能更重要;

2、优化不可避免涉及到变更,变更就有风险;

3、优化使性能变好,维持和变差是等概率事件;

4、切记优化,应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进行优化!

所以优化工作,是由业务需要驱使的!

3、优化由谁参与

在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与。

二、优化思路

1、优化什么

在数据库优化上有两个主要方面:即安全与性能。

  • 安全->数据可持续性;
  • 性能->数据的高性能访问。

2、优化的范围有哪些

存储、主机和操作系统方面:

  • 主机架构稳定性;
  • I/O规划及配置;
  • Swap交换分区;
  • OS内核参数和网络问题。

应用程序方面:

  • 应用程序稳定性;
  • SQL语句性能;
  • 串行访问资源;
  • 性能欠佳会话管理;
  • 这个应用适不适合用MySQL。

数据库优化方面:

  • 内存;
  • 数据库结构(物理&逻辑);
  • 实例配置;

说明:不管是设计系统、定位问题还是优化,都可以按照这个顺序执行。

3、优化维度

数据库优化维度有四个:

硬件、系统配置、数据库表结构、SQL及索引。

MySQL全面优化,速度飞起来

优化选择:

优化成本:硬件>系统配置>数据库表结构>SQL及索引;

优化效果:硬件<系统配置<数据库表结构<SQL及索引;

三、优化工具有啥?

1、数据库层面

检查问题常用工具:

1)MySQL

2)msyqladmin:MySQL客户端,可进行管理操作

3)mysqlshow:功能强大的查看shell命令

4)show [SESSION | GLOBAL] variables:查看数据库参数信息

5)SHOW [SESSION | GLOBAL] STATUS:查看数据库的状态信息

6)information_schema:获取元数据的方法

7)SHOW ENGINE INNODB STATUS:Innodb引擎的所有状态

8)SHOW PROCESSLIST:查看当前所有连接session状态

9)explain:获取查询语句的执行计划

10)show index:查看表的索引信息

11)slow-log:记录慢查询语句

12)mysqldumpslow:分析slowlog文件的

不常用但好用的工具:

1)Zabbix:监控主机、系统、数据库(部署zabbix监控平台)

2)pt-query-digest:分析慢日志

3)MySQL slap:分析慢日志

4)sysbench:压力测试工具

5)MySQL profiling:统计数据库整体状态工具

6)Performance Schema:MySQL性能状态统计的数据

7)workbench:管理、备份、监控、分析、优化工具(比较费资源)

关于Zabbix参考:

http://www.cnblogs.com/clsn/p/7885990.html

2、数据库层面问题解决思路

一般应急调优的思路:针对突然的业务办理卡顿,无法进行正常的业务处理,需要立马解决的场景。推荐:37 个 MySQL 数据库小技巧,不看别后悔!

1)show processlist;

2)explain select id ,name from stu where name='clsn'; # ALL id name age sex;

select id,name from stu where id=2-1 函数 结果集>30;show index from table;

3)通过执行计划判断,索引问题(有没有、合不合理)或者语句本身问题;

4)show status like '%lock%'; # 查询锁状态

kill SESSION_ID; # 杀掉有问题的session。

常规调优思路:针对业务周期性的卡顿,例如在每天10-11点业务特别慢,但是还能够使用,过了这段时间就好了。

1)查看slowlog,分析slowlog,分析出查询慢的语句;

2)按照一定优先级,一个一个排查所有慢语句;

3)分析top SQL,进行explain调试,查看语句执行时间;

4)调整索引或语句本身。

3、系统层面

Cpu方面:

vmstat、sar top、htop、nmon、mpstat;

内存:

free、ps-aux;

IO设备(磁盘、网络):

iostat、ss、netstat、iptraf、iftop、lsof;

vmstat命令说明:

1)Procs:r显示有多少进程正在等待CPU时间。b显示处于不可中断的休眠的进程数量。在等待I/O。

2)Memory:swpd显示被交换到磁盘的数据块的数量。未被使用的数据块,用户缓冲数据块,用于操作系统的数据块的数量。

3)Swap:操作系统每秒从磁盘上交换到内存和从内存交换到磁盘的数据块的数量。s1和s0最好是0。

4)Io:每秒从设备中读入b1的写入到设备b0的数据块的数量。反映了磁盘I/O。

5)System:显示了每秒发生中断的数量(in)和上下文交换(cs)的数量。

6)Cpu:显示用于运行用户代码,系统代码,空闲,等待I/O的Cpu时间。

iostat命令说明:

实例命令:iostat -dk 1 5

iostat -d -k -x 5 (查看设备使用率(%util)和响应时间(await))

1)tps:该设备每秒的传输次数。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。

2)iops :硬件出厂的时候,厂家定义的一个每秒最大的IO次数

3)"一次传输"请求的大小是未知的。

4)kB_read/s:每秒从设备(drive expressed)读取的数据量;

5)KB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

6)kB_read:读取的总数据量;

7)kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

4、系统层面问题解决办法

你认为到底负载高好,还是低好呢?在实际的生产中,一般认为Cpu只要不超过90%都没什么问题。推荐大家看下:MySQL 调优/优化的 101 个建议!

当然不排除下面这些特殊情况:

Cpu负载高,IO负载低:

1)内存不够;

2)磁盘性能差;

3)SQL问题--->去数据库层,进一步排查SQL 问题;

4)IO出问题了(磁盘到临界了、raid设计不好、raid降级、锁、在单位时间内tps过高);

5)tps过高:大量的小数据IO、大量的全表扫描。

IO负载高,Cpu负载低:

1)大量小的IO写操作:

autocommit,产生大量小IO;IO/PS,磁盘的一个定值,硬件出厂的时候,厂家定义的一个每秒最大的IO次数。

2)大量大的IO 写操作:SQL问题的几率比较大

IO和cpu负载都很高:

硬件不够了或SQL存在问题。

四、基础优化

1、优化思路

定位问题点吮吸:硬件-->系统-->应用-->数据库-->架构(高可用、读写分离、分库分表)。

处理方向:明确优化目标、性能和安全的折中、防患未然。

2、硬件优化

主机方面:

根据数据库类型,主机CPU选择、内存容量选择、磁盘选择:

1)平衡内存和磁盘资源;

2)随机的I/O和顺序的I/O;

3)主机 RAID卡的BBU(Battery Backup Unit)关闭。

CPU的选择:

CPU的两个关键因素:核数、主频

根据不同的业务类型进行选择:

1)CPU密集型:计算比较多,OLTP - 主频很高的cpu、核数还要多

2)IO密集型:查询比较,OLAP - 核数要多,主频不一定高的

内存的选择:

OLAP类型数据库,需要更多内存,和数据获取量级有关。

OLTP类型数据一般内存是Cpu核心数量的2倍到4倍,没有最佳实践。

存储方面:

1)根据存储数据种类的不同,选择不同的存储设备;

2)配置合理的RAID级别(raid5、raid10、热备盘);

3)对与操作系统来讲,不需要太特殊的选择,最好做好冗余(raid1)(ssd、sas、sata)。

4)raid卡:

主机raid卡选择:

实现操作系统磁盘的冗余(raid1);

平衡内存和磁盘资源;

随机的I/O和顺序的I/O;

主机raid卡的BBU(Battery Backup Unit)要关闭。

网络设备方面:

使用流量支持更高的网络设备(交换机、路由器、网线、网卡、HBA卡)

注意:以上这些规划应该在初始设计系统时就应该考虑好。

3、服务器硬件优化

1)物理状态灯

2)自带管理设备:远程控制卡(FENCE设备:ipmi ilo idarc)、开关机、硬件监控。

3)第三方的监控软件、设备(snmp、agent)对物理设施进行监控。

4)存储设备:自带的监控平台。EMC2(hp收购了)、 日立(hds)、IBM低端OEM hds、高端存储是自己技术,华为存储。

4、系统优化

Cpu:

基本不需要调整,在硬件选择方面下功夫即可。

内存:

基本不需要调整,在硬件选择方面下功夫即可。

SWAP:

MySQL尽量避免使用swap。
阿里云的服务器中默认swap为0。

IO :

raid、no lvm、ext4或xfs、ssd、IO调度策略。

Swap调整(不使用swap分区)

/proc/sys/vm/swappiness的内容改成0(临时),/etc/sysctl. conf上添加vm.swappiness=0(永久)

这个参数决定了Linux是倾向于使用swap,还是倾向于释放文件系统cache。在内存紧张的情况下,数值越低越倾向于释放文件系统cache。

当然,这个参数只能减少使用swap的概率,并不能避免Linux使用swap。

修改MySQL的配置参数innodb_flush_ method,开启O_DIRECT模式:

这种情况下,InnoDB的buffer pool会直接绕过文件系统cache来访问磁盘,但是redo log依旧会使用文件系统cache。

值得注意的是,Redo log是覆写模式的,即使使用了文件系统的cache,也不会占用太多。

IO调度策略:

#echo deadline>/sys/block/sda/queue/scheduler 临时修改为deadline 

永久修改

vi /boot/grub/grub.conf
更改到如下内容:
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet

5、系统参数调整

Linux系统内核参数优化:

vim/etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65535:# 用户端口范围
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fin_timeout = 30
fs.file-max=65535:# 系统最大文件句柄,控制的是能打开文件最大数量

用户限制参数(MySQL可以不设置以下配置):

vim/etc/security/limits.conf 
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

6、应用优化

业务应用和数据库应用独立;

防火墙:iptables、selinux等其他无用服务(关闭):

 chkconfig --level 23456 acpid off
chkconfig --level 23456 anacron off
chkconfig --level 23456 autofs off
chkconfig --level 23456 avahi-daemon off
chkconfig --level 23456 bluetooth off
chkconfig --level 23456 cups off
chkconfig --level 23456 firstboot off
chkconfig --level 23456 haldaemon off
chkconfig --level 23456 hplip off
chkconfig --level 23456 ip6tables off
chkconfig --level 23456 iptables off
chkconfig --level 23456 isdn off
chkconfig --level 23456 pcscd off
chkconfig --level 23456 sendmail off
chkconfig --level 23456 yum-updatesd off

安装图形界面的服务器不要启动图形界面runlevel 3。

另外,思考将来我们的业务是否真的需要MySQL,还是使用其他种类的数据库。用数据库的最高境界就是不用数据库。

五、数据库优化

SQL优化方向:执行计划、索引、SQL改写。

架构优化方向:高可用架构、高性能架构、分库分表。

1、数据库参数优化

调整

实例整体(高级优化,扩展):

  • thread_concurrency:# 并发线程数量个数
  • sort_buffer_size:# 排序缓存
  • read_buffer_size:# 顺序读取缓存
  • read_rnd_buffer_size:# 随机读取缓存
  • key_buffer_size:# 索引缓存
  • thread_cache_size:# (1G—>8, 2G—>16, 3G—>32, >3G—>64)

连接层(基础优化)

设置合理的连接客户和连接方式:

max_connections # 最大连接数,看交易笔数设置 
max_connect_errors # 最大错误连接数,能大则大
connect_timeout # 连接超时
max_user_connections # 最大用户连接数
skip-name-resolve # 跳过域名解析
wait_timeout # 等待超时
back_log # 可以在堆栈中的连接数量

SQL层(基础优化)

  • query_cache_size:查询缓存 >>> OLAP类型数据库,需要重点加大此内存缓存,但是一般不会超过GB。
  • 对于经常被修改的数据,缓存会立马失效。
  • 我们可以实用内存数据库(redis、memecache),替代他的功能。

2、存储引擎层(innodb基础优化参数)

default-storage-engine
innodb_buffer_pool_size # 没有固定大小,50%测试值,看看情况再微调。但是尽量设置不要超过物理内存70%
innodb_file_per_table=(1,0)
innodb_flush_log_at_trx_commit=(0,1,2) # 1是最安全的,0是性能最高,2折中
binlog_sync
Innodb_flush_method=(O_DIRECT, fdatasync)
innodb_log_buffer_size # 100M以下
innodb_log_file_size # 100M 以下
innodb_log_files_in_group # 5个成员以下,一般2-3个够用(iblogfile0-N)
innodb_max_dirty_pages_pct # 达到百分之75的时候刷写 内存脏页到磁盘。
log_bin
max_binlog_cache_size # 可以不设置
max_binlog_size # 可以不设置
innodb_additional_mem_pool_size #小于2G内存的机器,推荐值是20M。32G内存以上100M

转载于:https://www.cnblogs.com/CQqf2019/p/11118727.html

相关文章:

LTE - PRACH 时频资源介绍

PRACH&#xff1a; Physical Random Access Channel. PRACH用于传输random access preamble RA-preamble Format 一共包含4种格式&#xff0c;其中format0-3 用于frametype 1(FDD), format 0-4 用于frametype 2(TDD). spec: 36.211- table5.7.1-1另外参考sharetechnote&#xf…

对面向对象基本原则的总结

&#xff08;一&#xff09;代理模式 应用场景&#xff1a;当一个类的某些功能需要由别的类来实现&#xff0c;但是又不确定具体会是哪个类实现。 优势&#xff1a;解耦合 敏捷原则&#xff1a;开放-封闭原则 实例&#xff1a;tableview的 数据源delegate&#xff0c;通过和pro…

python turtle画画 30排以内_Python竟能画这么漂亮的花,帅呆了(代码分享)

阅读本文大概需要3分钟关于函数和模块讲了这么久&#xff0c;我一直想用一个好玩有趣的小例子来总结一下&#xff0c;同时也作为实战练习一下。趣味编程其实是最好的学习途径&#xff0c;回想十几年前我刚毕业的时候&#xff0c;第一份工作就给手机上写app&#xff0c;当时觉得…

关于Windows 2003下开启防火墙后不能通过FTP问题解决

在Windows server 2003上做了个基于IIS的FTP服务。但是不久就发现一个问题&#xff0c;当系统开启防火墙后在其它机子上不能登录FTP服务器&#xff0c;但是又不想把Windows的防火墙晾起来&#xff0c;所以就尝试下突破这个限制。当时做了两步处理&#xff1a;&#xff08;1&…

【多线程】ConcurrentLinkedQueue 的实现原理

1. 引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式&#xff1a;一种是使用阻塞算法&#xff0c;另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁&#xff08;入队和出队用同一把锁&#xff09;或两个锁&#xf…

shell 脚本简单入门

好久不写shell脚本&#xff0c;有些生疏。总结下shell的语法&#xff0c;以便后续参考&#xff0c;快速捡起来。 shell 脚本执行的3种方式&#xff1a; 1). ./xx.sh &#xff08;xx.sh 需要有执行权限&#xff09; 2). source xx.sh 3). bash xx.sh 变量定义 var2 //注意&…

ubuntu 在线安装mysql_Ubuntu下安装MySQL5.6

我想我们不应该在安装软件上面耽误太多时间&#xff0c;但是很多时候&#xff0c;我们去被安装挡在了门外&#xff0c;尤其是初次在Linux下。作为一个程序猿&#xff0c;最近决定转战linux&#xff0c;MySQL是必须要有的&#xff0c;讲一下我的安装过程。在Ubuntu下安装MySQL有…

js循环动态绑定带参数函数遇到的问题及解决方案[转]

今天写原生javascript时&#xff0c;想利用绑定事件实现类似jquery中on方法的功能&#xff1a;于是有了for循环里绑定事件&#xff0c;无意中发现定义类能解决好多问题&#xff01; 例如&#xff1a;一个不确定长度的列表&#xff0c;在鼠标经过某一条的时候改变背景 1 2 <…

基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?...

复现过程 首先&#xff0c;我创建了一个基于Picture Library的图片文档库&#xff0c;名字是 Pic Lib 创建完毕后&#xff0c;我点击它的Upload 下拉菜单&#xff0c;点击Upload Picture按钮 在弹出的对话框中点击 Upload Multiple Files按钮 结果返回了下面的错误页面 如果查看…

vi 环境,跳转函数定义

1, 安装 sudo apt-get install exuberant-ctags 2. 生成tags ctags -R . 3. 跳转 将光标移到想要跳转的函数或变量 快捷键 " CTRL ] " 4. 回转 回到跳转之前的位置&#xff0c; 只需要通过快捷键“ CTRL T ” 其它更详细&#xff1a; https://www.cnblogs.com/ca…

linux kernel内存回收机制

http://www.wowotech.net/linux_kenrel/233.html无论计算机上有多少内存都是不够的&#xff0c;因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式&#xff1a;如果一个很少使用的页的后备存储器是一个…

Python 学习笔记01

print&#xff1a;直接输出 type&#xff0c;求类型 数据类型&#xff1a;字符串&#xff0c;整型&#xff0c;浮点型&#xff0c;Bool型 note01.py # python learning note 01 print(Hello world!) a 10 print a print type(a) a 1.3 print a,type(a) print a Tr…

vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

前言&#xff1a;当使用vue-cli进行开发时时常需要动态配置一些设置&#xff0c;比如接口的请求地址(axios.defaults.baseURL)&#xff0c;这些设置可能需要在项目编译后再进行设置的&#xff0c;所以在vue-cli里我们需要对这些配置文件进行抽离&#xff0c;不让webpack把配置文…

intel xdk 打ios的ipa包

1、打包 2、点击edit。下载csr文件&#xff0c;然后上传到苹果开发者网址&#xff0c;生成cer文件 上面两步搞完&#xff0c;把最后的按钮设置成"yes" 3、上传配置文件 转载于:https://www.cnblogs.com/linn/p/3844930.html

《C++程序设计POJ》《WEEK7 输入输出和模板》《流操纵算子》《文件读写》《二进制文件读写》...

函数指针&#xff0c;运算符重载 人懂我精&#xff0c;人精我深 用的时候查一查手册 dat 二进制文件 如果不指定文件夹&#xff0c;就是生成在当前文件夹&#xff0c;什么是当前文件夹&#xff1f;可执行文件所在的文件夹 绝对路径 相对路径 文件的读写指针 ifstream ofsteam s…

linux内存管理 之 内存节点和内存分区(Zone)

https://www.cnblogs.com/youngerchina/p/5624516.html Linux支持多种硬件体系结构&#xff0c;因此Linux必须采用通用的方法来描述内存&#xff0c;以方便对内存进行管理。为此&#xff0c;Linux有了内存节点、内存区、页框的概念&#xff0c;这些概念也是一目了然的。 内存节…

BZOJ 3585: mex( 离线 + 线段树 )

离线, 询问排序.先处理出1~i的答案, 这样可以回答左端点为1的询问.完成后就用seq(1)将1到它下一次出现的位置前更新. 不断这样转移就OK了--------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define M(l, r…

yum安装mysql后密码_Centos7:yum安装MySQL5.7后如何设置root密码

Centos下安装软件的方式很简单&#xff0c;只需要通过yum install xxx命令即可。第一步当然检查是否有mysql的yum源&#xff0c;命令&#xff1a;yumlist|grep mysql-community[主要还是安装开源的社区版]如果没有如图所示的和mysql*相关的数据源&#xff0c;可去官网上下载相关…

iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

使用Block的地方很多&#xff0c;其中传值只是其中的一小部分&#xff0c;下面介绍Block在两个界面之间的传值&#xff1a;先说一下思想&#xff1a;首先&#xff0c;创建两个视图控制器&#xff0c;在第一个视图控制器中创建一个UILabel和一个UIButton&#xff0c;其中UILabel…

Vscode 调试 Flutter 项目

1、Vscode 中打开 flutter 项目进行开发 2、运行 Flutter 项目 flutter run r 键:点击后热加载&#xff0c;也就算是重新加载吧。p 键:显示网格&#xff0c;这个可以很好的掌握布局情况&#xff0c;工作中很有用。 o 键:切换 android 和 ios 的预览模式。q 键:退出调试预览模…

Linux地址映射--线性映射与非线性映射

一&#xff0c;线性映射与非线性映射 1. 内存管理 物理内存管理&#xff1a; Linux内存最小管理单位为页&#xff08;page&#xff09;&#xff0c;通常一页为4K。初始化时&#xff0c;linux会为每个物理内存也建立一个page的管理结构&#xff0c;操作物理内存时实际上就…

第三方消息推送回调Java app消息推送第三方选择

由于最先集成的是极光,因此根据官方给的推送设备区分方式中,选择了使用标签tag来进行区分管理方式,其接口提供了设置和清理标签, 每次设置会覆盖上次的结果,当然这个需要和极光后台进行交互,是异步返回的。5、由于其接口没有使用免费和付费区分,对于接口的访问没有限制,从使用的情况来看,经常会出现不准的情况,并且设置标签的效果其实是添加,导致业务需要改变标签时,需要先清除在设置,然而接口又经常出问题,导致这部分也是一塌糊涂了;如果想使用不受免费版本限制特性的推送服务,可以联系平台提供的商务对接,购买付费版本。

[SDOI2015]权值

问题描述&#xff1a; 有一个长度为n的实数序列&#xff0c;,下标从1开始&#xff0c;其中第k个位置的实数为p (sin(a k b) cos(c k d) 2)&#xff0c;sin和cos采用弧度制&#xff0c;其中p&#xff0c;a&#xff0c;b&#xff0c;c&#xff0c;d均为给定的整数。你需要…

为什么前后端都需要进行数据校验?

前端和后端各自的数据完整性校验是相辅相成的。前端校验可以提供即时反馈和优化用户体验,减轻后端服务器压力;后端校验是最终的安全防线,确保数据的完整性和一致性。通过前后端的数据完整性校验机制的结合,可以提供更可靠和安全的应用程序。

多个网站共享一个mysql数据库_如何在多个Postgresql数据库之间共享表

是的,模式是解决方案.使用单个Postgresql集群,使用单个数据库.为所有应用用户创建一个组&#xff1a;CREATE ROLE app;创建全局“应用程序”模式,其中所有全局共享应用程序表都将生效.CREATE SCHEMA AUTHORIZATION app;CREATE TABLE app.objects ( objectid int PRIMARY KEY );…

solr安装-tomcat+solrCloud构建稳健solr集群

solrCloud的搭建可以有两种方式&#xff1a;使用solr内嵌的jetty来搭建&#xff1b;使用外部web容器tomcat来搭建。对于使用jett来搭建参考solr官方的手册照着做肯定ok&#xff0c;下面我主要讲的是如何使用tomcat来搭建solrCloud。废话不多说&#xff0c;开始我们的工作&#…

[pytorch][stepbystep]在pytorch上实现卷积神经网路(CNN)的裁剪(purning)

利用VGG-16对Dogs-vs-Cats数据集进行训练&#xff0c;裁剪VGG-16可以获得3x的运算加速和4x的模型减小 简介 puring神经网络是一个古老的idea,具体可以追溯到1990年&#xff08;与Yann LeCun的最佳脑损伤[1]工作&#xff09;。这个想法是&#xff0c;在网络中的许多参数中&#…

linux内存布局及页面映射

在Linux系统中&#xff0c;以32bit x86系统来说&#xff0c;进程的4GB内存空间&#xff08;虚拟地址空间&#xff09;被划分成为两个部分 ------用户空间和内核空间&#xff0c;大小分别为0-3G&#xff0c;3-4G。用户进程通常情况下&#xff0c;只能访问用户空间的虚拟地址&…

codeforces Kyoya and Colored Balls

题解见&#xff1a;http://blog.csdn.net/libin56842/article/details/46650209 注意这里的组合数取模~~~ 1 /*Author :usedrose */2 /*Created Time :2015/8/7 13:31:44*/3 /*File Name :2.cpp*/4 #pragma comment(linker, "/STACK:1024000000,1024000000") 5 #inc…

存储mysql数据存在特殊字符时处理_转义 存储数据时特殊符号的处理

function url_base64_encode($str){//将这个方法处理后的数据可以存储&#xff0c;不会有特殊符号if($str"")return "";$codebase64_encode($str);//$codedHQ;$codestr_replace(,"!",$code);//把所用""替换成"!"$codestr_re…