优化
大雄小方
想回到过去,试着让故事继续...
展开
-
线程池学习总结
线程池学习总结什么是线程池?线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程池来管理。如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。线程池状态:RUNNING:运行状态,这个状态下可以接受任务来处理SHUTDOWN:待关闭状态,这个状态下不会在接受...原创 2019-04-29 22:22:06 · 100 阅读 · 0 评论 -
MySQL单表、双表、三表优化
MySQL单表、双表、三表优化学习了mysql中使用explain进行sql语句性能分析,总结一下mysql单表、双表、三表优化在看这篇文章之前,应该要先理解好左连接、右连接等一些知识。(链接)单表优化:单表优化就要注意SQL语句是否能够正确利用到联合索引(即走不走索引)例如:建立联合索引 a_b_c_index(a,b,c)#查询a为xx值,b大于xx值 以c排序的最大一行数据S...原创 2019-05-20 10:53:00 · 447 阅读 · 0 评论 -
MySQL慢查询日志
MySQL慢查询日志关于MySQL的基本使用记录一下。介绍:开启慢查询日志后,设定一个阀值,会将超过这个阀值设定的时间的查询语句记录下来,默认是不开启的,在实际场景中也不建议开启,会影响性能,除了要测试调优的时候再开启。日志位置:var/lib/mysql/xxx-slow.log开启方法:--查看状态SHOW VARIABLES LIKE '%slow_query_log%';...原创 2019-05-20 20:50:10 · 92 阅读 · 0 评论 -
MySQL优化之exists、in
MySQL优化之exists、in很多关于MySQL关于exists和in的介绍中,都说使用exists优于in,其实这种说法是不准确的,要根据实际场景来进行分析。以前使用的方式:--出现笛卡儿积,占用内存select * from A a, B b where a.id = b.id; 优化原则:小表驱动大表,即小的数据集驱动大的数据集。使用in的情况:select * from...原创 2019-05-20 22:44:07 · 177 阅读 · 0 评论 -
MySQL性能分析思路总结
MySQL性能分析思路总结总结一下对mysql性能分析的大概思路。分析开启慢查询日志(slow_query_log)设定一个阈值,通过查询日志记录下这些慢的SQL语句,然后进行分析1、是否建立了索引?2、建立了索引,是否有达到走索引的效果?如:遵循最左前缀原则;是否使用了范围查找(>、<、in、between);是否使用了not in、!=、<>导致全...原创 2019-05-20 22:57:19 · 229 阅读 · 0 评论 -
幂等操作的一些思考
幂等操作的一些思考总结一下关于幂等操作的思考什么是幂等操作?就是无论执行一次还是100次、1000次,所影响到的结果都是相同的,比如一般将HTTP中的GET、PUT、DELETE操作作为幂等操作,而POST是非幂等操作。如何避免非幂等操作?我结合我一个项目来总结一下:1、防止用户重复下订单:秒杀过程用户可能会由于兴奋或紧张导致重复点击下订单的按钮,这就可能导致重复下了多个一模一样的订...原创 2019-05-11 10:33:34 · 179 阅读 · 0 评论 -
NIO学习总结
NIO学习总结NIO是一种提高服务器处理连接数量的一种模式,在处理高并发场景有很大的作用,来总结一下关于它的一些原理。首先要认识一下关于系统几种不同的IO模式:同步阻塞IO同步非阻塞IOIO多路复用信号驱动式IO异步IO此处总结:阻塞、非阻塞是面向调用者的,而同步、异步是面向被调用者的。IO多路复用使用select/poll/epoll函数,多个进程的IO都可以注册在同...原创 2019-05-15 22:43:37 · 105 阅读 · 0 评论 -
MyBatis缓存机制
MyBatis缓存机制学习了关于Mybatis的一级缓存、二级缓存相关的知识,做一下总结…一级缓存:mybatis中一级缓存是一种基于sqlSession的缓存(是默认开启的,并且是无法关闭的,不过可以在select标签中的flushCache设置为true,使得查询都清除缓存)。一级缓存失效情况:不同sqlsession会导致一级缓存失效同一个sqlsession,但是查询条件不同...原创 2019-05-27 17:48:46 · 123 阅读 · 0 评论 -
前置拦截器的使用
前置拦截器的使用在项目开发中,想要实现一个防刷的功能,主要是通过在redis中缓存URL(path+userId)被某个用户访问次数的标记,当在规定时间内访问次数过多则会进行拒绝访问,防止恶意刷单破坏公平性,也过滤了一些访问底层数据库的无效操作。初步实现:刚开始是在控制层对应接口方法上加一层验证代码,这样导致了控制层代码显得很臃肿,而且如果其他方法也需要的相同的验证,还要再写一段类似的代码,...原创 2019-05-04 22:59:42 · 1342 阅读 · 0 评论 -
RabbitMQ学习总结
RabbitMQ入门总结学习了消息队列中间件RabbitMQ,在这里做一些学习总计。什么是RabbitMQ?采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦RabbitMQ作用?1、可以实现生产者与消费者之间的解耦2、在高并发场景下,可以实现削峰限流的作用,防止突然大量访问到数据库导致宕机,3、可以使用消息队列达到...原创 2019-04-24 17:54:13 · 147 阅读 · 0 评论 -
深入学习Redis
深入学习Redis入门了redis之后,(入门链接)来深入学习redis,并进行总结Redis的数据结构应用场景String:key-value结构中,value不仅可以是String,也可以是数字类型。可以应用在比如博客粉丝数量、评论数量、阅读数量的缓存。redis也提供了计数器类型的命令(incr、decr等)Hash:Hash表中可以储存多个K-V结构元素,可以用来储存用户的信...原创 2019-04-10 21:39:52 · 465 阅读 · 0 评论 -
Redis入门学习总结
Redis入门对redis进行学习总结Redis介绍Redis是使用c语言开发的一个高性能键值数据库。Redis可以通过一些键值类型来存储数据。键值类型: String字符类型 map散列类型 list列表类型 set集合类型 sortedset有序集合类型Redis的数据结构String介绍:Redis中的字符串结构是类似java中的ArrayList结构,是可以动态扩容的,...原创 2019-04-08 17:49:16 · 936 阅读 · 0 评论 -
项目开发之秒杀优化
项目开发之秒杀优化用CDN来储存静态资源智能DNS解析(nginx)用redis进行缓存,来减少数据库压力1.redis获取数据是没有序列化的,要自己序列化(从redis中获取后反序列化为对象,导入redis中序列化为字节流)2.热点数据放在redis中对表执行顺序进行调整:在一个事务中给表行加锁的时间尽量缩短使用数据库的存储过程(一般少用,简单的逻辑且并发要求高...原创 2019-04-09 10:43:16 · 167 阅读 · 0 评论 -
页面缓存优化
页面缓存优化在做网站时,对页面进行缓存优化,可以有效提高网页的响应速度,提高用户体验这里我来总结一下一些使用的缓存技巧。主要分为服务端缓存以及客户端缓存。服务器端缓存分为页面缓存、URL缓存、对象缓存页面缓存当访问页面时候,如果是第一次访问,可以将网页数据取出并存储在redis缓存中,当用户下一次访问的时候直接从缓存中获取就可以,不需要再访问底层数据库了。比如商品列表相关的页面,如...原创 2019-04-21 21:50:48 · 233 阅读 · 0 评论 -
Redis之主从复制、哨兵、集群
Redis之主从复制、哨兵、集群Redis在主从模式下会有许多问题需要考虑,这里写了一些关于redis在多服务器下的一些问题分析和总结。学习的文章源地址:https://www.cnblogs.com/kismetv/p/9236731.html#t61Redis的主从复制在读了关于redis主从复制的文章后,总结一下主从复制的作用、过程以及可能存在的问题。作用1、实现故障恢复:主从...原创 2019-04-18 09:57:28 · 1591 阅读 · 0 评论 -
模拟压力测试报告
今天要将web应用在Linux环境下进行运行来进行压测,总结一下过程。压测工具:JMETElinux系统运行环境搭建:先在Linux环境下建立java环境,参考链接打jar包,在cmd命令行项目目录中执行 mvn clean package然后将jar包上传到Linux系统,我这里使用的是Filezilla进行上传(usr/local/jar)运行jar包,我是用的是nohup ja...原创 2019-04-28 09:30:49 · 3279 阅读 · 0 评论 -
redis主从、哨兵、集群环境搭建
redis主从复制模式配置系统环境:Ubuntu节点个数:3个,一主两从机器有限,用端口来区分各个节点模拟多台服务器创建节点并启动1、首先可以先从redis自带的redis.conf文件拷贝过来,我将三个节点的配置文件都放在/usr/local/redis/conf/ms中;2、对这些配置文件进行简单的设置(三个端口分别为:6380、6381、6382)3、启动节点通过终端启动:...原创 2019-04-18 22:13:16 · 25446 阅读 · 0 评论 -
Rabbit相关配置问题
Rabbit相关配置问题基本安装过程Ubuntu https://blog.csdn.net/nextyu/article/details/79250174Linux https://blog.csdn.net/fxq8866/article/details/62042108安装目录 :/usr/lib/rabbitmq启动关闭: service rabbitmq-server st...原创 2019-04-24 16:38:36 · 419 阅读 · 0 评论 -
JVM垃圾回收调优入门
JVM垃圾回收调优入门垃圾回收是程序运行中影响性能很关键的一环,分析垃圾回收情况并对其参数进行一些调优是非常有必要的。主要指标:吞吐量、停顿时间、GC原因工具:gceasy、gcviewer选择垃圾回收器并行收集器介绍:这里的并行是指垃圾回收线程并行回收,而不是垃圾回收线程和应用程序线程并行,故在进行垃圾回收的时候,应用程序会被暂停执行。特点:吞吐量优先,不过会影响程序的响应时间...原创 2019-06-19 11:56:31 · 143 阅读 · 0 评论