- 博客(64)
- 问答 (1)
- 收藏
- 关注
原创 大数据量sql优化
说明: 表里有 406243206 多数据,每天需要捞出100万的数据进行处理。条件有day_id, sub,注意: 一定要加 force index (PRIMARY),不然可能会存在mysql 走不到主键索引的情况。等相关条件,表中已经建立了联合索引,但还是会出现慢sql,sql运行时常10多s的都有。当时观察日志时 发现 有一些sql,执行时间在20s。最后发现是没用走主键索引!1、先根据 条件查询出最大的ID,和最小的ID。2、根据条件和最大ID,最小ID,查询sql。
2024-08-28 15:52:08 276
原创 【redis分布式锁】
1、当设置等待时间为-1,0时,过期时间设置为5s。线程1执行失败,锁释放失败。2、当设置等待时间为-1,0时,过期时间设置为15s。3、当设置等待时间为15s,过期时间为20s,线程1 10s释放锁,线程2 10s前失败,10s后成功。锁有效时间时,锁会释放掉,如果业务取解锁时,则会解锁失败。3、只有过期时间设置为-1时,锁才会自动续约,否则当。1、等待获取锁时间为 -1,0;4、当设置等待时间为15s,过期时间为-1时,锁释放成功。业务线执行时间>锁过期时间时 会报错当前线程未持有锁。
2024-08-21 15:01:31 231
原创 MYSQL优化之【FileSort】
mysql版本是使用8.0mysq建立的索引:mysql查询语句:联合索引建立好后,条件和orderby按照顺序书写,可以发现Extra并没有出现FileSort(这种查询比较慢)的文件排序!!
2021-06-25 11:37:18 160
原创 Mysql的数据同步机制
在分布式系统下,mysql集群是常用的一种为了抗住高并发量的一个架构方式。那么如何来保证数据的一致性?如何做到数据同步呢?接下来我们就来讨论下,mysql如何做的mysql数据同步图流程...
2021-06-07 14:36:19 226
原创 ThreadLoal深入分析
ThreadLocal是能够实现变量在多线程直接的操作互不干扰,是属于线程内部的局部变量。那么它是如何做到的呢?下面我们来分析源码。1.0 public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry.
2021-05-28 09:36:56 123
原创 项目中的优化总结(各个方面都可以写)
面试时,说说项目中做了哪些优化过程。项目中进行过sql调优吗?数据量有多少?答:有,比如我们有一个业务列表查询,是查询采购计划单列表,其中一个查询条件商品名称是在采购计划单详情中。数据量左表8000多条数据,右表为12万左右。接口超时时间为1s。第一步查看服务日志,正常调用了。第二步骤查看网关服务超时了。第三步骤分析代码,查看sql.在sql中执行,发现比较慢。EXPLAINselect * from sys_user t1 LEFT JOIN sys_user_role t2 on .
2021-05-27 11:49:46 592
原创 Mysql联合索引,索引失效探究,索引下推原理分析。
我们都知道组合索引例如name_phone,名字和电话的组合索引,where name = xx and phone = 123这样严格的顺序才会使索引生效,像where phone = 123这样是不会走索引的。那么mysql是如何做的呢?单值索引联合索引从上图可以看到:B+Tree 会优先比较 name 来确定下一步应该搜索的方向,往左还是往右。如果 name相同的时候再比较 phone。失效原因:但是如果查询条件没有name,就不知道第一步应该查哪个节点,因为建立搜索树的时候.
2021-05-27 09:52:23 944
原创 Redis
- Redis缓存机制说明:缓存中的数据其实是数据库数据的备份.缓存机制其实就是有效的降低了用户访问真实物理设备的访问频次.前提:缓存一般保存到内存中问题:1.缓存的内存空间如何维护?2.如何保证数据一致性?3.缓存中的数据如何保证不丢失?4.如何实现缓存高可用Redis介绍网址: https://redis.io/Redis 是一个开源(BSD许可)的,key-value存储的.内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符
2021-05-25 17:28:35 273 1
转载 消息队列【RocketMq|RabbitMq】
- RabbitMq、ActiveMq、RocketMq、kafaka应用解耦订单系统写入消息队列,然后返回用户下单成功,库存系统去订阅消息,进行入库流量销峰应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到 错误页面秒杀业务根据消息队列中的请求信息,再做后续处理通过消息队列缓解服务器压力.异步处理Ro
2021-05-25 17:27:56 428
原创 Zookeeper
- Zookeeperzookeeper是什么ZooKeeper是一个分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。当客户端发起请求时,zookeeper返回正确的服务器地址.集群原理总结:Zookeeper --原子广播—Server之间的同步—。Zab协议:两种模式–》1.恢复模式(选主)2.广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复(选主)模式,当领导者被选举出来,且大多数Serv
2021-05-25 17:25:43 73
原创 Dubbo
- dubbo参考大神的dubbo面试的18问:https://blog.csdn.net/weixin_44337261/article/details/88149072dubbo是什么Dubbo是阿里巴巴SOA服务化治理方案的核心框架,Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。dubbo架构1.当服务的提供者启动时,会将服务的名称:IP:端口会写入注册中心.2.注册中心内部会维护服务列表,某个服务提供者关机了,服务还能正常进
2021-05-25 17:24:20 117
原创 Mysql事务ACID实现原理分析
参考。https://blog.csdn.net/qq_40741855/article/details/115768427
2021-05-10 10:26:34 125
原创 Mybatis的多级查询
举例:1个用户有多个订单,1个订单对应1个用户,那么: 1、查询用户时要不要直接把关联的订单查询出来?查询用户时不查询订单信息,get订单列表时再去数据库查询,也就是延迟加载(查询)优点:提升了数据库性能(查单表肯定比关联快)缺点:get订单列表时还要再去数据库查询,需要等待,2、查询订单时要不要把关联的用户查询出来?查询订单时把用户信息查询出来,因为1对1的数据量很少可以直接查询常用的关联数据查询有2种:关联查询、嵌套查询,使用嵌套查询来实现延迟加载的1、关联查询:将所有的信息都查询出来,.
2021-05-08 17:06:42 695
原创 帆软报表
帆软报表JSON处理后,求和:sql语句 IFNULL(REPLACE ( REPLACE( GROUP_CONCAT( t2.other_fee -> '$[*].feeTotal' ) ,"[",'') ,"]", '') , 0) as '分摊纯数字(总计)', -- 例如: 原始数据库数据: [{"feeCode":"10045","feeName":"预估运费","feeTotal":100.0000}],[{"feeCode":"10045","feeName":"预估运费
2021-04-07 16:06:11 694
原创 MYSQL,SQL,MYBATIS
-- sql: select t1.* , sum(t2.delivery_num) as deliveryQuality, sum(t2.package_num) as deliveryNumber, group_concat( DISTINCT t2.des_location) as desWarehouseNames from external_deliver_order t1 left join external_
2021-03-17 17:04:14 125
原创 docker
docker查询容器日志信息:docker psdocker inspect 53394bca48fc找到宿主机器"MergedDir": "/var/lib/docker/overlay2/e25c5484435deb8689b853507d6d9a41f625255b5012043faa8045349c437674/merged"然后进入:/opt/svr/jar/logs/history/ 下载日志文件参考:/var/lib/docker/overlay2/239e94e072
2021-03-17 16:58:58 111
原创 JAVA秒杀系统的设计与实现
主要逻辑流程存在问题:一:用户多次下单解决方案:1.1前端控制,1.2分布式锁实现redis(key:商品id+用户id)不存在则设置代表获取锁成功,否则失败。二:库存超卖解决方案:思路 :(redis redission zookpeer等)分布式锁实现,在原子操作中,获取key的锁,来一套扣减库存,生成订单的操作。同时可以用sql where stock > 0 或者加版本号来实现。理解分布式锁:(附带了优化思路)参考:https://blog.csdn.net/u.
2020-06-21 13:43:31 4472
原创 JAVA面试源码分析
SpringBoot面试20道题目:https://blog.csdn.net/zl1zl2zl3/article/details/83715633springBoot的源码分析讲解的非常好,感谢!!!https://www.cnblogs.com/hello-shf/p/10976646.html一:springBoot初始化过程二:spring初始化对象过程1,第一步:Resource定位 2,第二步:BeanDefinition的载入 3、第三个过程:注册BeanDefinition
2020-06-20 11:21:31 277
原创 枚举实现单例模式
https://www.cnblogs.com/happy4java/p/11206105.html/** * 单例模式 */public enum A{ instance; public A getInstance(){ return A.instance; } }
2020-05-21 20:32:53 92
原创 工作方式的思考
问题:有时候突然觉得自己不知道该干啥了?自己专心做事情时,很容易做着做着就去做其他的事情了,想到这种情况的解决办法。解决方法:将每天或者说一段时间内需要完成的事情一个一个列下来,做完一个清除一个,这样就很容易看清除,目前在做什么,以及接下来需要做什么。...
2020-04-19 00:12:24 125
原创 java8最全日期处理demo
最近想整理下java8的日期处理方式,于是今天着手整理了下。附上相关代码代码import javax.xml.crypto.Data;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.*;import java.time.format.DateTimeForma...
2020-03-15 14:01:19 139
原创 史上最全的ideal快捷键。
笔记CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里Ctr+shift+U 大小写转化CTRL+ALT+L 格式化代码https://blog.csdn.net/youanyyou/article/details/95274135有待更新
2020-03-14 22:49:11 165
原创 史上最简单的excel处理工具(02)完整demo
引言:太不巧了,刚做完数据的导入工作,又收到一个需求需要做相关的导入导出,正好对于其它的一些工具都有用过,正好拿刚遇见的myExcel练手。开发环境demo是springBoot-web项目.依赖包就省了添加页面html(pom文件需要添加thmef文件依赖)<!DOCTYPE html><html lang="en"><head> ...
2020-03-11 21:41:24 299
原创 ideal开发工具自定义注释详解
类注释方法模板:/*** @program: ${PROJECT_NAME}** @description: ${description}** @author: zzs** @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}**/2,方法注释选择第二个接着选择第一个分别为快捷键和显示的内容。/** * @...
2020-03-09 21:43:24 370
原创 史上最简单的excel处理工具(01)
遇到个需求需要将部分数据导入到数据库,调研已经将数据整理成excel表格了,于是果断选择从excel读取数据,处理数据后,然后入库。在开源中国溜达了一番,找到个MyExcel工具,使用简单,功能强大。于是试着一顿操作。步骤引入依赖包<dependency> <groupId>com.github.liaochong</groupId> &...
2020-03-06 21:12:03 619
原创 单链表反转与合并两个有序的单链表使之后的单链表任然有序的感想
1单链表反转思路分析: 1. 主要思路:1遍历以前的单链表将节点取出cur * 2cur.next=head.next[让当前节点指向新链表的第一个节点] * 3head.next=cur[让新链表的头节点指向当前的节点]:这样子就连接起来了 * 4让pre的head.next=new...
2020-02-29 17:06:51 329
原创 ideal:无法加载主类的错误解决方案
问题描述:自己昨天写的代码,运行main程序能正常运行,今天再加载时候就出现了outpath的问题,找不到输出目录。然后一通乱改之后连运行小绿三角都没了,有点头疼。解决方案:修改下自己项目root目录下的文件名,重新加载项目就可以了,ideal会提示是否清楚old的outpath输出路径,选择clean。然后就可以了...
2020-02-28 12:37:13 272
原创 ideal几个插件-让你的工作效率爆表
1 GsonFormat:作用:根据信息生成对应的class对象信息用法:1装上插件 2鼠标右击-Generate 3,确定2 GenerateAllSetter作用:一键生成对象的所有set方法用法:1,装插件 2 鼠标点击new的对象上右键tips(或者alt+enter)3Jrebel 插件(破解版)作用:让你的项目支持热部署,在也不用担心改了代码之后,需要重启项...
2020-02-25 12:39:31 994
原创 springCloud踩坑
说明:注册中心网关biz业务 调用 authory业务获取数据biz参数:请求参数为nullbiz:报错autory接收参数:报错:显而易见远程调用时候不允许参数为null的值传递...
2020-02-14 11:09:07 136
原创 有了这项计划再也不用担心身体健康了
一个人对自己的身体都管理不好更别提其它的了,太长时间没有锻炼身体了,今日重拾锻炼计划。aim:1:深蹲202 2022:仰卧起坐202 2033:俯卧撑153 203每天晚间三选二做2020/2/12...
2020-02-12 21:39:42 90
原创 Stream操作666
总结:Stream操作:1.中间操作、终端操作。2.数据结构->StreamStream->数组、list、等相互转化3.常用操作Intermediate:map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unorderedTermi...
2020-01-14 16:18:09 608
原创 Oracle数据库windows环境采坑
1,环境是oracle数据库装了,然后用Navicat Preminum连接数据库。2,遇到cid.dll不能用,先后指定Oracle安装目录的cid.ll和navicat的Preminum都不行,最后还是用的navicat的。3,用了还是报错呀,报错为:不能监听Oracle的服务4,找到:D:\zzs\oracel\oracleInstall\app\oracle\product\10.2...
2019-12-07 17:22:37 155
原创 ideal字体和编码本项目和新项目
ideal配置:https://www.cnblogs.com/loveyoulx/p/9521731.html
2019-12-07 14:26:45 163
原创 习惯
运动计划:每天晚上跑步半小时,维持自己的身体健康。每当自己去医院时,都会发现医院的生意时真的好啊,太多太多的人了,我们为什么连自己都照顾不好?戒烟烟这种东西就不用说了吧? 卧槽,每次戒,每次抽mmp的。真的要戒烟了...
2019-12-05 20:14:30 192
原创 阅读书籍感悟
《自卑与超越》1,成年人的世界,拼命才能好命,上升到社会和国家的层面的意义。2,当你发现生命的意义是贡献他人的时候,你才会活得开心和自由。3,老天给了你低的启动,是想让你打出一个绝地反击的故事,自卑感是前进的动力,自卑情结才是最致命的。4,是什么原因照成他的自卑,是自卑情结。5,家庭,学校带来的影响好像只有竞争关系,这样的教育是不全面的,比如需要教育合作。不要给自己设限,要持续不断的努力...
2019-12-03 11:06:01 308
原创 学习感悟
1.最近学习springCloud教程时,看到一位博主的生活感悟,他说学习不建议碎片化,以目的驱动,专项学习,我感觉挺有道理的。比如最近学习springCloud,学习就完整的学习。再比如以后再深入学习mysql相关知识,就专项突破的学习2.在学习的过程中,一点一点的成就感、一点一点的看得到的东西,都是学习的动力...
2019-12-01 22:01:49 117
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人