- 博客(281)
- 资源 (22)
- 问答 (6)
- 收藏
- 关注
原创 Mybatis执行流程
1 mapper接口和映射文件如何绑定解析mapper配置信息,比如package配置、全限定名xml映射等方式,解析xml并将其与对应的mapper接口映射起来,用一个hashmap(knownMappers)映射起来。然后遍历Mapper接口中所有方法,将每个方法的全限定名作为key存在mapperStatements中。注意点:同一个value会存储2次,一个全限定名作为key,另一个就是只用方法名(sql语句的id)来作为key。 所以如果全局只存在一个方法名,就可以直接...
2021-02-12 13:38:45 242
原创 SQL执行计划简述
SQL执行计划分析索引的执行计划主要可以根据EXPLAIN SELECT * FROM xxxx 来看1 type下面以 const>ref>range>index>all,其中级别能达到const、ref都很好,range看筛选出来情况,如果筛出10w条数据那就坑了(另外主键/唯一索引 用 IS NULL,type=ref,二级索引是type=ref_or_null)-- MySQL版本:5.7.22-- 等值查询EXPLAIN SELECT.
2021-02-10 09:28:47 226 1
原创 数据库死锁产生原因及场景
什么是数据库死锁?两个或以上事务同时对一批资源占用锁,并形成循环,就会造成事务死锁,一般报错如下:com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction1 插入场景:(user_id和pool_id是联合唯一索引)场景:有一个job,定时会查出一批数据,然后分页,每页一千条数据.
2021-02-10 00:25:31 1502
原创 Spring解决循环依赖问题
1 Spring解决循环依赖问题(可以用@Lazy解决)?A依赖于B,B依赖于C,C依赖于A。仅能解决单例非构造方法注入的循环依赖,通过三级缓存singletonObjects、earlySingletonObjects、singletonFactories来提前曝光获取(即对应bean实例被创建出来但其属性没有被设置好的情况下就去提前获取)来解决循环依赖。什么是循环依赖?A、B类直接或间接相互引用什么情况下循环依赖可被解决?1 必须都是单例2 依赖注入的方式不能全是构..
2021-02-09 23:16:21 191
原创 ScheduledExecutorService原理解析
ScheduledExecutorService是基于DelayQueue,所以要先对DelayQueue做讲解DelayQueue 内部实现参考链接:https://www.zybuluo.com/mikumikulch/note/712598延迟阻塞队列 = 阻塞队列 + 延迟获取任务功能举个例子,DelayQueue可通过重写compareTo来处理排序private static DelayQueue<DelayTask> delayQueue = ne...
2020-09-26 14:52:30 2601 1
原创 Mybatis打印完整日志插件
配置日志打印其实挺烦的,而且很多打印的SQL是待占位符,比如:SELECT * FROM xxx WHERE id = ?这样子看起来比较麻烦还有一个问题就是如果要打印这个,那就需要每次都在自己本地改下代码,可能还需要根据不同项目做不同配置,具体的通用配置链接可参考如下:https://blog.csdn.net/fangzefeng_911/article/details/79697724综合如上不如用IDEA的插件,优点如下:1 无须更改代码配置2 可打印完..
2020-09-26 09:29:44 1076
原创 Paxos与ZAB、Raft对比
什么是Raft?Raft一种用来管理日志复制的一致性算法分为三个角色:leader(集群主节点)、follower(跟随节点)、candidate(无leader情况下会有follower升级为这个)升级顺序:follower->candidate->leader (不能跨级别晋升)选举过程:- 服务刚启动全部都是follower角色,并经过一段时间才会有follower成为candidate(避免出现多个candidate分散选票),另外raft会把日志写入...
2020-09-20 09:59:38 2134
原创 RabbitMQ推拉模型
聊聊消息中间件的Push模型和Pull模型RabbitMQ两种模式都有,一般用Push模式,设置Qos避免内存爆了。- Pull模式大致用:-------------------- GetResponse response = channel.basicGet(QUEUE_NAME, false); System.out.println(new String(response.getBody())); channel.basicAck(response...
2020-08-13 21:36:20 3059
原创 微信朋友圈设计方案简述
1 手机发送朋友圈,然后把数据先暂存到本地,本线线程异步把图片、视频资源上传到CDN,并且把发送的朋友圈相关数据(还有上传返回的链接)发送到后台服务器。2 然后本机刷自己朋友圈的时候直接从本地拉取图片、视频资源即可--如果发送的过程中,手机没电或者进程被关闭了怎么办?---- 删除是不可能删除的,只能后面重启朋友圈的时候重发(后台服务器根据当前朋友圈的发送时间戳和用户唯一标识做幂等性就行了)3 后台服务器接受到发送的朋友圈后,先把数据插入 朋友圈发布表、相册表(用户自己的相册...
2020-08-09 21:37:28 3508
原创 JVM编译优化
参考文章: 方法内联: https://www.toutiao.com/a6530421233337500164/?tt_from=weixin&utm_campaign=client_share×tamp=1520505006&app=news_article&utm_source=weixin&iid=27056549301&utm_medium=toutiao_ios&wxshare_count=1 整体描述: htt.
2020-06-13 13:40:41 383
转载 iframe跨域通信(postMessage)
iframe跨域通信(postMessage)前言❝跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。所谓同源是指相同的域名、协议和端口,只要其中一项不同就为跨域❞需求背景在web项目中通过iframe嵌入另一个第三方web项目,第三方web项目里点击某个按钮要实时调用web项目的全局函数打开某个全局弹窗或者进...
2020-04-10 19:51:11 904
原创 jdk版本问题导致的error: reference to query is ambiguous
1用的是开源项目Davinci,在其之上进行改造情况是这样的,在test的jenkins环境中是可以正常构建的当前项目的,但是准备上预发布的时候发现jenkins报错如下:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-...
2020-04-10 19:48:42 1734
原创 正则表达式一些场景的应用(含SQL解析)
实际场景1 -WITH临时表的拆分因为公司发展需要,要对sql进行改造拼装,借此需要一些比较奇葩的正则表达式来处理。由于公司采用的是基于Presto的阿里收费平台ADB,所以一下以ADB语法作为讲解。假设有一个sql如下:WITHtmp1 AS ( select xxx ),tmp2 AS ( select xxxx ),tmp3 AS ( select xx...
2020-04-02 16:20:31 591
原创 短链接原理分析
参考链接: https://blog.csdn.net/weixin_37186559/article/details/84833108为什么要用短链接?原来的链接长度过长,发微博什么之类展示也不好看。比如下面这串:https://www.baidu.com/s?wd=%E7%9F%AD%E9%93%BE%E6%8E%A5&rsv_spt=1&rsv_iqid=0x...
2020-03-29 09:37:27 910
转载 H5与iOS/Android交互
H5与iOS/Android交互场景H5页面需要调用微信分享接口,但是在APP环境下无法通过H5去调微信分享接口,需要由APP端去调起接口,这时候H5应该如何对接APP呢?实现思路首先我们先来判断一下当前H5所处环境,如果非APP环境下,我们走常规的微信分享方式,这里提供一个网上通用的判断浏览器、设备类型工具类/* 判断浏览器类型 */const browser = { ve...
2020-03-26 20:25:15 581
原创 简述一次线上dubbo超时重复赠送问题
产生问题业务方反馈用户赠送次数异常,经排查后发现存在重复的赠送记录。排查过程然后进行排查,排查SQL为:# 查出所有赠送有问题的的数据select user_id,count(*) AS total from `xxxx`.`record`WHERE change_num=10 AND `source`=100 AND gmt_create >...
2020-03-18 20:03:43 362
原创 View List与Sub View List设计规范
因公司业务发展,需要改造一个BI平台Davinci。考虑到davinci的View List中的View只是作为一个宽表来进行设计的,无法将两个View进行关联。所以需要修改源码。可修改源码,并将View划分为View和Sub View,其逻辑上分别对应维表、事实表。然后定义好View与Sub View之间的关联主键,就可进行数据的复用。举个真实的metabas...
2020-03-12 14:42:25 293
原创 维表与事实表
BI平台分为事实表、维表,然后两种表聚合成一个宽表。(注意这里取的BI平台是Davinci:https://edp963.github.io/davinci/)其维表、事实表的关系图如下:一个维表会对应多个事实表,而维表和事实表所有关联起来就形成一个宽表,其关系如同mysql中的外键索引,如A表中有B_id,A作为维表,B作为事实表,A(维表)可通过B_id来关联B...
2020-03-05 23:12:15 12435
原创 JVM调优参数杂谈
配置为:- jdk1.8- 服务器:4核8G开篇:本篇仅以博主观念来讲解JVM一般会用到的参数,不做线上实例的讲解(因为展开太多了(╬▔皿▔)凸)。首先上来就是一套稍微全一点的jvm参数配置(建议一般3G的堆大小即可,可根据实际情况调整(考虑到系统还有其他会用到内存、系统自己也会用内存)):-Xms3072M -Xmx3072M -Xmn2048M-X...
2020-03-02 19:58:05 499
原创 Tomcat版本与依赖冲突抛错问题
某一天线上突然出现如下报错(不影响引用启动,但就是报错了!!):28-Feb-2020 23:44:45.149 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.startup.ContextConfig.processAnnotationsJar Unable to process Jar entry [modul...
2020-02-29 16:48:58 931
原创 线上nginx访问日志匹配处理及nginx限流简单处理
今天部门开会提到了个问题,恶意刷接口怎么处理?就当做是一个作业,去学会如何简单的分析nginx日志。1先看nginx日志# whereis nginx //找到nginx目录位置2进入访问日志目录,这里可以看到是access.log文件# cd /etc/nginx/logs3对当前访问日志进行ip访问次数分析(分...
2020-01-06 22:32:00 763
原创 JVM简单调优及工作中例子记录
前序:Jvm调优需要我们对系统有所了解,其中比较关键的是对核心业务的理解,特别是会造成频繁GC的部分,比如高并发造成的不及时回收。要知道为什么会造成频繁GC,首先我们要懂怎么估算java类的大小下面列举各个基本类型和字符串估算的表格,以及测试的类 基本类型 大小(字节) 取值范围 装箱基...
2019-12-29 15:27:39 846 1
转载 用Redis快速实现BloomFilter!
转自: https://zhuanlan.zhihu.com/p/55574882背景最近工作上有个类似需求是: 现有约3亿条数据词典存在于一个csv文件A中,作为数据源。对于 用户输入的任意单词M,需要快速的在A中匹配M单词是否存在。(A文件约3G大小左右,总行数三亿)拿到这个需求,你的第一想法怎么做呢?正常思路可能是: 将csv文件A导入某关系型数据库。 s...
2019-11-22 20:21:16 404
原创 Redis HyperLogLog使用简述
参考文章: https://www.xuchuruo.cn/%E7%BB%9F%E8%AE%A1UV%E6%95%B0%E6%8D%AE-HyperLogLog.html工作中用到了Redis的HyperLogLog,下面就做一个记录场景:有一个to C端的H5程序,现需要统计每个页面的用户访问UV(每天共有多少个ip访问的总次数),本来想用redis的set做一个去重...
2019-11-21 22:50:50 439
原创 线上系统异常linux跟踪命令大致流程(JVM)
参考文章: https://mp.weixin.qq.com/s/OihP6sS1-HzyOP_H3odX8gMAT参考文章: https://www.cnblogs.com/AloneSword/p/3821569.html1 如果不知道CPU核数,可以先看CPU核数mpstat -P ALL 2 1 //每2秒打印一次,并且只打印一次其他:如何要看详细请用sa...
2019-11-14 20:13:07 819
原创 netty源码解析之netty解码器
1 ByteToMessageDecoder.java类的基本结构如下:其中ByteToMessageDecoder类是累加器的基础类,其核心方法如下://ByteToMessageDecoder.java@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws ...
2019-11-13 22:06:51 312
原创 Netty源码解析之ByteBuf简析
ByteBuf是什么?首先当前类是ByteBuf.java类,是netty缓存的抽象类。主要包含如下几个Index0<=readerIndex<=writerIndex<=capacity包含的方法大致如下setXxx //设置当前index对应的值readXxx //读...
2019-11-11 20:38:34 952
原创 链表学习技巧及常用常规链表操作
单链表反转-参考链接:https://blog.csdn.net/geekmanong/article/details/51097196https://www.jianshu.com/p/bd6a64d36916合并两个有序链表-参考链接:https://www.cnblogs.com/xugenpeng/p/9850372.html删除链表倒数第N个节点-参考链...
2019-11-02 22:59:47 314 1
原创 Netty源码解析之Pipeline解析
首先初始化Pipeline如下创建channel会调用到如下方法protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); unsafe = newUnsafe(); pipeline = newChannelPipeline();}...
2019-10-31 23:13:25 725
原创 Netty源码简析之客户端新连接接入
总结:Netty新连接注册流程:Netty在服务端绑定NioEventLop,并轮询到accept事件,服务端调用jdk底层accept()方法获取客户端channel,并且封装成客户端的NioSocketChannel。并且创建一系列的组件,如unsafe(读写)、pipeline(数据、业务处理)。服务端通过ServerBootStrapAcceptorg给当前客户端分配chan...
2019-10-26 22:38:10 329
原创 Netty源码简析之NIOEventLoop解析
举一个Netty服务端创建例子如下:EventLoopGroup bossGroup = new NioEventLoopGroup(1);EventLoopGroup workerGroup = new NioEventLoopGroup();try {ServerBootstrap b = new ServerBootstrap();b.group(b...
2019-10-13 23:30:54 292
原创 Netty源码简析之初始化服务端Channel及Selector的注册过程
这里接着上文的《服务端Channel的创建》- https://blog.csdn.net/qq_28666081/article/details/102424327初始化channel很简单,直接看如下代码:// AbstractBootStrap.javafinal ChannelFuture initAndRegister() { Channel channel...
2019-10-10 21:59:54 897
原创 Netty源码简析之服务端Channel的创建
1 引入netty的maven依赖如下<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.6.Final</version></depend...
2019-10-09 00:37:21 401
原创 mysql常用报表处理及数据迁移写法SQL
熟悉一些常用的sql写法便于工作中快速导出数据,本文不涉及到业务,所以对表库做了名字的修改,仅提供一些用法的说明。以下直接举例子并讲解1 单表批量数据迁移场景:日志迁移具体实例:将test_log2日志表2的数据全部迁移到test_log1日志表1sql:INSERT INTO `xxx`.test_log1( `operate_account_id...
2019-09-28 08:34:54 589 2
原创 Spring Transaction(spring事务)源码简析
核心接口:PlatformTransactionManager.java 还有其抽象类AbstractPlatformTransactionManager:简述Spring事务基础结构的中心接口。代码详解public interface PlatformTransactionManager { commit(); rollback(); be...
2019-09-26 23:51:42 291
原创 非分布式锁的简易使用
1 Lock锁的设计/*** 全局的锁*/public class LockHelper {private static final Logger log = LoggerFactory.getLogger(LockHelper.class);/*** 锁类型*/public enum Lo...
2019-09-26 23:40:35 2426
转载 什么, 0.3 - 0.2 ≠ 0.1 ?
标签: 公众号文章惨痛的历史教训记得还在上学那会儿,给我们上《运筹学》的老师留了一个课程实验,就是让我们每个人都去实现一个书中所讲的算法。由于当时完全没有什么分层、模块化的啥概念,写代码就是一股脑往里塞逻辑,写出来的代码用一坨形容完全不为过。当我实现完算法之后,开始弄几个值作为输入进行测试,发现有的值可以测试成功,有的却不行,怎么办呢?调试呗,面对着那么一大坨乱糟糟的代码,调试简直是灾...
2019-08-31 17:10:48 490
转载 聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
参考自:https://juejin.im/post/5d5789d26fb9a06ad0056bd9前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没有泛型的情况的下,通过对类型 Object...
2019-08-24 22:30:40 263 1
转载 12 个超燃的 IntelliJ IDEA 插件!
(阅读请跳转原文看)转自:https://mp.weixin.qq.com/s?__biz=MzU0MzQ5MDA0Mw==&mid=2247486831&idx=1&sn=4110b4a27355033f8c5fc2cbf3d15d94&chksm=fb0be7fbcc7c6eed122726d4f561e39b0df24bf1e1a99907e5eee9213d...
2019-08-17 20:01:15 1477 1
原创 JVM垃圾收集器
参考:《实战Java虚拟机》1 垃圾回收器:串行回收器特点:串行、独占适用于单核处理器的服务器,Client模式(现在基本都是Server模式)默认使用的垃圾收集器。多核下就不推荐使用了。回收算法:新生代复制算法,老年代标记压缩用法: -XX:+UseSerialGC 新生代,老年代都用串行回收器 -XX:+UseParNewGC ...
2019-07-27 22:42:49 376
Linux高性能服务器编程.pdf
2018-12-18
Maven权威指南中文版pdf(高清带完整目录).pdf
2018-12-17
构建高性能Web站点(修订版).pdf
2018-12-16
TOMCAT权威指南(中文版).pdf
2018-12-16
架构探险 从零开始写Java Web框架.pdf
2018-12-16
程序员的SQL金典(完整清晰版).pdf
2018-12-16
大数据概念介绍.pdf
2018-12-16
深入分析Java Web技术内幕修订版书籍.pdf
2018-12-16
七周七并发模型_PDF电子书下载 带书签目录 高清完整版
2018-12-16
《操作系统精髓与设计原理(原书第6版)》PDF中文版
2018-12-15
《算法导论》课后习题完整答案(包含思考题)
2018-12-15
Java面试宝典2017版
2018-12-15
swoole websocket实现五子棋
2017-05-11
swoole实现的你画我猜
2017-03-28
nodejs基于express简易聊天室
2016-07-27
PHP SOCKET如何释放所占用的端口
2015-11-24
PHP SOCKET如何释放所占用的端口
2015-11-23
PHP SOCKET如何释放所占用的端口
2015-11-23
PHP的curl模拟·登录老是失败出现了405错误
2015-08-20
Laravel5.0如何引入js,css,image这些啊
2015-08-19
php中如何用curl模拟http头信息进行模拟登陆并获取信息
2015-08-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人