07 2017 档案

摘要:本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的问题 典型问题的优化思路及实践 如何来实施水平切分 水平切分后常见的问题 典型问题的优化思路及实践 一、用户中心 用户中心是一个非常常见的业 阅读全文
posted @ 2017-07-25 15:52 心碎whn 阅读(297) 评论(0) 推荐(0)
摘要:军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间 阅读全文
posted @ 2017-07-19 11:39 心碎whn 阅读(225) 评论(0) 推荐(0)
摘要:一、缘起 当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表: user( uid bigint, name varchar(16), pass varchar(16), age int, sex tinyint, flag tinyint, sig 阅读全文
posted @ 2017-07-19 10:43 心碎whn 阅读(223) 评论(0) 推荐(0)
摘要:一、为什么难 秒杀系统难做的原因:库存只有一份,所有人会在集中的时间读和写这些数据。 例如小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。 又例如12306抢票,亦与秒杀类似,瞬时流量更甚。 二、常见架构 流量到了亿级别,常见站点架构如上: 1)浏览器端,最上层,会执行到 阅读全文
posted @ 2017-07-19 10:38 心碎whn 阅读(227) 评论(0) 推荐(0)
摘要:本文主要讨论这么几个问题: (1)“缓存与数据库”需求缘起 (2)“淘汰缓存”还是“更新缓存” (3)缓存和数据库的操作时序 (4)缓存和数据库架构简析 一、需求缘起 场景介绍 缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。 例如对于用户的余额信息表acco 阅读全文
posted @ 2017-07-19 10:24 心碎whn 阅读(260) 评论(0) 推荐(0)
摘要:需求缘起 产品第一版:用户有用户名、密码、昵称等三个属性,对应表设计: user(uid, name, passwd, nick) 第二版,产品经理增加了年龄,性别两个属性,表结构可能要变成: user(uid, name, passwd, nick, age, sex) 假设数据量和并发量比较大, 阅读全文
posted @ 2017-07-19 10:00 心碎whn 阅读(504) 评论(0) 推荐(0)
摘要:此处无任何的业务处理,只是简单的页面跳转,写了至少三行有效的代码,在实际的开发中会涉及大量这样的页面转向,若都这样写会特别的麻烦,我们通过在配置类MyMvcConfig里通过重写addViewControllers来简化配置: 阅读全文
posted @ 2017-07-18 23:01 心碎whn 阅读(498) 评论(0) 推荐(0)
摘要:通过@ControllerAdvice。我们可以将对于控制器的全局配置放置在同一个位置,注解了@ControllerAdvice的类的方法可以使用@ExceptionHandler,@InitBinder,@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制 阅读全文
posted @ 2017-07-18 22:31 心碎whn 阅读(280) 评论(0) 推荐(0)
摘要:1. @Controller @Controller注解在类上,表明这个类是Spring MVC里面的Controller,将其声明为Spring的一个Bean,DispatcherServlet会自动扫描注解了此注解的类,并将请求映射到注解了@RequestMapping的方法上,这里特别指出,在 阅读全文
posted @ 2017-07-18 16:48 心碎whn 阅读(277) 评论(0) 推荐(0)
摘要:在checkout项目时,出现如下错误: Error Unable to connect to a repository at URL ‘https://XXXX’ Error Access to ‘https://XXXX ‘ forbidden 在网上找的方法清除本地缓冲(详见http://bl 阅读全文
posted @ 2017-07-17 14:00 心碎whn 阅读(11556) 评论(0) 推荐(0)
摘要:一、一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 阅读全文
posted @ 2017-07-17 09:55 心碎whn 阅读(1996) 评论(0) 推荐(0)
摘要:touch 作用:修改文件时间或者创建新文件 文件三个主要的变动时间 mtime 当文件的内容发生改变的时候,就会更新这个时间 ctime 当文件的权限与属性发生改变的时候,就会更新这个时间 atime 当文件被读取的时候,就会改变这个时间。 touch 文件名 创建一个新的文件。该文件的atime 阅读全文
posted @ 2017-07-15 17:55 心碎whn 阅读(145) 评论(0) 推荐(0)
摘要:sync 在内存中尚未被更新的数据,就会被写入硬盘中;在关机或者重启前,最好多执行几次! basename 获取文件名 dirname 获取目录名 阅读全文
posted @ 2017-07-14 14:47 心碎whn 阅读(169) 评论(0) 推荐(0)
摘要:TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出 阅读全文
posted @ 2017-07-11 17:49 心碎whn 阅读(501) 评论(0) 推荐(0)
摘要:substring(int beginIndex, int endIndex)方法在jdk 6和jdk 7中的实现是不同的。了解他们的区别可以帮助你更好的使用他。为简单起见,后文中用substring()代表substring(int beginIndex, int endIndex)方法。 sub 阅读全文
posted @ 2017-07-11 17:22 心碎whn 阅读(2112) 评论(1) 推荐(1)
摘要:事务应该具有4个属性(ACID): 原子性(A):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(C):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。 隔离性(I):多个事务并发执行时,一个事务的执 阅读全文
posted @ 2017-07-11 16:49 心碎whn 阅读(475) 评论(0) 推荐(0)
摘要:MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC,MVCC最大的好处: 读不加锁。(在MySQL/InnoDB中,所谓的读不加锁,并不适用于所有的情况,而是隔离级别相关的。Serializable隔离级别,读不加锁就不再成立,所有的读操作,都是当前读。) 读写不冲突。 阅读全文
posted @ 2017-07-11 14:21 心碎whn 阅读(199) 评论(0) 推荐(0)
摘要:MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。 MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking)。 BDB 存储引擎采用的是页面锁(page-level locking),但也支持表级锁。 InnoDB存储引擎既支持行级锁(ro 阅读全文
posted @ 2017-07-11 10:35 心碎whn 阅读(2043) 评论(0) 推荐(1)
摘要:转自:架构师之路--58沈剑--一分钟了解索引技巧 花1分钟时间,了解聚集索引,非聚集索引,联合索引,索引覆盖。 举例,业务场景,用户表,表结构为: 聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用primary key来约束。 举例: 阅读全文
posted @ 2017-07-10 16:32 心碎whn 阅读(288) 评论(0) 推荐(0)
摘要:lastlog 查看所有用户最后一次登录的时间 rpm www.rpmfind.net 用来确认函数库需要安装哪个依赖程序的的网站 rpm -ivh 包全名 (安装) rpm -Uvh 包全名(升级) rpm -e 包名 (卸载) rpm -q 包名 查询是否安装(rpm -q httpd) rpm 阅读全文
posted @ 2017-07-10 16:22 心碎whn 阅读(194) 评论(0) 推荐(0)
摘要:tar gzip ,bzip2对于文件目录压缩支持有限,所以出现了tar命令 tar 【选项】 打包文件名 源文件 两步进行 第一步:将文件打包( tar -cvf) tar -cvf 打包文件名 源文件 第二步:压缩成gz格式或者bz2格式 test.tar 压缩成.gz格式 test.tar 压 阅读全文
posted @ 2017-07-10 14:58 心碎whn 阅读(150) 评论(0) 推荐(0)
摘要:.bz2 压缩格式 不能压缩目录 bzip2 源文件 (不保留源文件) bzip2 -k 源文件 (保留源文件) bzip2 -d 压缩文件名 (-k保留压缩文件) bunzip 压缩文件名 (-k 保留压缩文件) mount 格式 mount 【-t 文件系统】【-o 特殊选项 】 设备文件名 挂 阅读全文
posted @ 2017-07-10 14:08 心碎whn 阅读(194) 评论(0) 推荐(0)
摘要:zip压缩格式 zip zip 压缩文件名 源文件 (压缩文件) zip -r 压缩文件名 源文件 (压缩目录) unzip unzip 压缩名 .gz压缩格式 gzip gzip 源文件 (压缩为.gz,源文件会消失) gzip -r 目录 (压缩目录下的所有子文件,但是不能压缩文件) gzip 阅读全文
posted @ 2017-07-10 11:59 心碎whn 阅读(193) 评论(0) 推荐(0)
摘要:grep 格式 grep [选项] 字符串 文件名 选项 作用 在文件中查找字符串 例子 grep "size" anaconda-ks.cfg 在文件中查找包含size的行 grep -v "size" anaconda-ks.cfg 在文件中查找不包含size的行 man 格式 man 命令 选 阅读全文
posted @ 2017-07-10 11:16 心碎whn 阅读(136) 评论(0) 推荐(0)
摘要:whereis whereis 命令名 作用 搜索命令所在的路径以及帮助文档所在的位置 选项 例子 whereis ls 查看ls命令所在的位置与帮助文档所在的位置 whereis -b ls 查看ls命令所在的位置 whereis -m ls 查看ls命令帮助文档所在的位置 whereis cd 阅读全文
posted @ 2017-07-10 11:07 心碎whn 阅读(175) 评论(0) 推荐(0)
摘要:~/.bash_logout 注销时生效的配置文件,默认为空 /etc/updatedb.conf 与locate命令有关,定义了locate查询的一些规则 /etc/updatedb.conf 与locate命令有关,定义了locate查询的一些规则 /etc/profile 修改默认umask与 阅读全文
posted @ 2017-07-09 19:02 心碎whn 阅读(148) 评论(0) 推荐(0)
摘要:以 x=$(y-数值) 为例 阅读全文
posted @ 2017-07-08 14:43 心碎whn 阅读(152) 评论(0) 推荐(0)
摘要:方法一 declare 方法二 expr 方法三 $(()) 或者 $[] 阅读全文
posted @ 2017-07-08 14:37 心碎whn 阅读(156) 评论(0) 推荐(0)
摘要:declare [+/-] [选项] 变量名 declare -i declare -r 将变量声明为只读后,不能删除,不能修改,甚至不能取消变量的类型 declare -a declare -x declare -p declare -p 查询所有的变量的属性 declare -p 变量名 指定变 阅读全文
posted @ 2017-07-08 14:22 心碎whn 阅读(636) 评论(0) 推荐(0)
摘要:read -ptns 变量名 read -p read -t 阅读全文
posted @ 2017-07-07 11:56 心碎whn 阅读(213) 评论(0) 推荐(0)
摘要:$? $$ $! 阅读全文
posted @ 2017-07-07 10:27 心碎whn 阅读(160) 评论(0) 推荐(0)
摘要:$n $# $*与$@的区别 $* 中的所有参数被看成一个整体,在for循环中只循环一次 $@ 中的所有参数是独立的,在for循环中会循环多次 阅读全文
posted @ 2017-07-07 09:58 心碎whn 阅读(160) 评论(0) 推荐(0)
摘要:查看当前的系统语言 方法一:locale LANG 代表这现在系统的语系 locale -a 查看系统所支持的所有语言 方法二:echo $LANG 通过LANG变量,查看当前系统的语言 查看系统的默认语言 cat /etc/sysconfig/i18n 纯字符界面不支持中文,如果在纯字符界面中,强 阅读全文
posted @ 2017-07-06 17:58 心碎whn 阅读(161) 评论(0) 推荐(0)
摘要:环境变量与用户自定义变量的区别 分类 定义 使用【export】定义环境变量 方法一: export 变量名=变量值 方法二: 变量名=变量值 export 变量名 查看 方法一: set 查看所有变量 方法二: env 只可以查看环境变量 常用系统变量 删除环境变量 使用 【unset】删除环境变 阅读全文
posted @ 2017-07-06 17:07 心碎whn 阅读(171) 评论(0) 推荐(0)
摘要:定义 变量名=变量值 例如: x=5 y=7 注意:在=的前后,不能出现空格 调用 用 $ 符号调用 叠加 方法一: 使用 " " 方法二: 使用{} 查看 使用【set】命令 查看系统中全部的变量 【set -u】 当调用未定义的定义变量时会报错(默认无任何提示) 删除变量 使用 【unset】命 阅读全文
posted @ 2017-07-06 16:36 心碎whn 阅读(149) 评论(0) 推荐(0)
摘要:变量的命名规则 变量的分类 阅读全文
posted @ 2017-07-06 16:08 心碎whn 阅读(148) 评论(0) 推荐(0)
摘要:sudo 作用 root把本来只能超级用户执行的命令,赋予普通用户执行。 添加 运行visudo命令,在文件底部添加信息即可! sudo -l 查看用户可以运行的命令 命令要写绝对路径,并越详细对普通用户的限制越大。 use1 ALL=(ALL) /sbin/shutdown 如果这样,user1 阅读全文
posted @ 2017-07-05 15:57 心碎whn 阅读(126) 评论(0) 推荐(0)
摘要:一般分页查询时,通过创建覆盖索引能够比较好的提高性能。一个经常使用的场景:"limit 1000,20",此时MySQL排序出前1020记录后仅仅返回第1001到1020条记录。前1000条记录会被抛弃,查询和排序的代价非常高。 第一种优化思路 在索引上完成排序分页的操作,最后根据主键关联回原表查询 阅读全文
posted @ 2017-07-05 11:37 心碎whn 阅读(248) 评论(0) 推荐(0)
摘要:show status like 'Handler_read%'; Handler_read_key 代表着一个行被索引值读取的次数,值很低表明索引不经常用到,增加索引对性能改善不高。 Handler_read_rnd_text 代表着在数据文件中读取下一行的请求数,如果进行大量的表扫描,Handl 阅读全文
posted @ 2017-07-05 10:17 心碎whn 阅读(2056) 评论(0) 推荐(0)
摘要:VIM 底行模式 命令模式 ACL权限 acl 权限:为了弥补用户对文件权限的不足 查看ACL权限是否开启 查看根分区名称 查看分区下面是否有acl权限 运行 【dumpe2fs -h 根分区 】查看 【Default mount options】 中是否包含acl 。如果没有需要开启 acl 开启 阅读全文
posted @ 2017-07-03 17:25 心碎whn 阅读(237) 评论(0) 推荐(0)
摘要:free free -m free 显示说明 uptime 跟top命令第一行内容相同 cat /proc/cpuinfo 查看cpu信息 uname uname -a uname -r uname -s 阅读全文
posted @ 2017-07-03 12:55 心碎whn 阅读(187) 评论(0) 推荐(0)