- 博客(51)
- 收藏
- 关注
转载 2.[源码]mybatis二级缓存源码分析(一)----一级缓存与二级缓存的结构关系
上一篇我们介绍了mybatis的一级缓存, 讲解了一级缓存与会话的关系, 一级缓存的生命周期, 一级缓存查询执行的过程等, 其中也有提到二级缓存的地方, 但是都暂且略过了, 而今天这次我们就要来嗑一嗑mybatis二级缓存与一级缓存的关系 ~ 友情提示: 搭配 https://www.jianshu.com/p/36a1d8cf830e食用更香。NO.1 |思维发散二级缓存是用来解决一级缓存不能跨会话共享的问题,范围是namespace级别,可以被多个sqlSession(会话)共享, 生命周期和应用同
2020-08-07 11:59:24 134
转载 1.[源码]mybatis一级缓存源码分析
一. 为什么要有一级缓存 每当我们使用Mybatis开启一次和数据库的会话, 就会创建一个SqlSession对象来表示这个会话。就在这一次会话中, 我们有可能反复执行完全相同的查询语句, 这些相同的查询语句在没有执行过更新的情况下返回的结果也是一致的。相信机智的你已经想到, 如果每次都去和数据库进行交互查询的话, 就会造成资源浪费。 所以, mybatis加入了一级缓存, 用来在一次会话中缓存查询结果。 总结下一级缓存的存在起到的作用: 在同一个会话里面,多次执行相同的sql语句(stateme
2020-07-23 10:02:12 141
原创 虚拟机网络使用桥接模式,和宿主机无法ssh连接却可以ping通
我的宿主机是win10. 桥连,网络,端口都设置好了,最主要的是宿主机和虚拟机之间ping通.仅ssh连接不上.最终找到了上面的方案,但是有一个问题,上面所说的卸载TCP/UDP校验和(IPv4)这个配置在我这里并未找到. 后来发现, 我这里变成了Flow Control, 设置disabled后ssh可以链接了下面说一下我的相关的其他配置(仅我自己亲测有效的配置方案)一.虚拟机网络使用桥
2021-12-01 10:45:44 3281
原创 centos6,yum源停止维护.
https://blog.csdn.net/wojiuwangla/article/details/112186395上面的文章中已经解决这个问题了, 但是没有说明的很清楚.具体需要修改的文件vim /etc/yum.repos.d/CentOS-Base.repo 修改内容# CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update status of
2021-11-29 17:13:07 575
原创 关于Apache maven shade plugin
pom中有很多依赖,但是如果你并不想把所有依赖都打包进入jar中,那么这个plugin就用使用用途了.提取关键点: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <execut
2021-11-13 15:07:19 335 2
转载 Redis列表list 底层原理
Redis列表list 底层原理在版本3.2之前,Redis 列表list使用两种数据结构作为底层实现:压缩列表ziplist双向链表linkedlist因为双向链表占用的内存比压缩列表要多, 所以当创建新的列表键时, 列表会优先考虑使用压缩列表, 并且在有需要的时候, 才从压缩列表实现转换到双向链表实现。压缩列表转化成双向链表条件创建新列表时 redis 默认使用 redis_encoding_ziplist 编码, 当以下任意一个条件被满足时, 列表会被转换成 redis_encodi
2021-09-09 17:50:00 898
转载 Redis慢查询
使用 Redis 的 slowlog get [n] 慢查询日志彻底解决生产问题!_那些年的代码-CSDN博客或多或少,你们可能听过 MySQL 的慢查询日志。其实 Redis 也有,而且 Redis 的慢查询日志对性能的影响很小,因为它就保存在内存中。slowlog 是 Redis 用来记录查询执行时间的日志系统。注意,这个查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。 slowlog 保存在内存里
2021-09-09 13:47:53 103
转载 redis单线程理解
redis 单线程的理解单线程模型Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。1. redis单线程问题单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个
2021-09-09 11:19:43 7319
转载 5.[源码]揭示Mapper类背后的执行逻辑
在上一篇文章[源码]mybatis之JDBC处理器(一)StatementHandler与ParamHandler中,重点在于捋顺StatementHandler创建statement、设置参数,这两个步骤执行流程的逻辑,而忽略了其中参数处理的细节。而且由于我们之前的探究都是使用sqlSession直接调用的方式去做的,所以也没有涉及到全部的参数处理过程(缺少参数转换过程)。为了探究参数处理的整体流程,在这篇文章中,我们将先介绍另外一种执行sql的方式(涉及Mapper动态代理及参数转换)。为参数处理的整.
2020-12-28 17:42:32 180
转载 4.[源码]mybatis之JDBC处理器(一)StatementHandler与ParamHandler
我们都知道,mybatis是一款基于JDBC的持久层框架。而之前Mybatis多级缓存文章中,我们学习了会话、执行器相关的知识,都没有涉及到JDBC,那么它到底在哪里呢?不错,所有JDBC相关操作都在我们今天的主角——StatementHandler之中。StatementHandler负责处理Mybatis中与JDBC相关的逻辑。一次sql请求,会经过会话,然后是执行器,再之后是由StatementHandler执行jdbc最终到达数据库。本篇文章中,我们就要了解StatementHandler执行逻.
2020-12-18 18:25:09 318 2
原创 InstanceAlreadyExistsException
https://blog.csdn.net/sinat_30314715/article/details/79983054
2020-08-28 18:15:43 457
转载 3.[源码]mybatis二级缓存源码分析(二)----二级缓存是如何实现的
上一篇我们介绍了mybatis的二级缓存作用范围, 二级缓存与一级缓存的结构关系, 今天就来介绍二级缓存本身是如何实现的~ 友情提示: 搭配 [源码]mybatis二级缓存源码分析(一)----一级缓存与二级缓存的结构关系 食用更香。NO.1 |如何开启二级缓存开启二级缓存的方式也比较简单, 如下:第一步: MyBatis 配置文件中配置<settings> <setting
2020-08-13 12:28:09 314
原创 对接腾讯广告(广点通) 上传用户行为
前言不知道有没有跟我一样的同学, 每次新对接的一个腾讯产品的时候看着它的api就感觉头疼哈哈官方文档链接 :https://developers.e.qq.com/docs/start账号关于client_id和client_secret, 这个是要在开发者账号中新建应用, 进而获取到client_id和client_secret, 在我向运营姐姐要这个参数的时候, 她以为这个是广告主账号里面应用的appid就给我了, 所以在进行访问授权链接的时候就会提示"加载应用信息失败,您授权的应用id不
2020-05-21 14:57:15 7893 10
原创 集合(四_3)Map_ ConcurrentHashMap源码的学习
参考链接:https://www.javaroad.cn/articles/221 https://zhuanlan.zhihu.com/p/39535461ConcurrentHashMap(jdk1.8) 一、前言 (一)、概述 (二)、CAS 1、概述 ...
2020-05-09 17:12:04 110
原创 集合(四_2)Map_ LinkedHashMap源码的学习
参考网上博文:https://blog.csdn.net/qq_19431333/article/details/73927738整理成思维导图的形式:
2020-05-09 17:11:48 76
原创 集合(四_1)Map_ HashMap源码的学习
参考文章:https://blog.csdn.net/qq_27093465/article/details/52207135根据这篇文章整理归纳有些小小的增加 做了一个思维导图:底层是一个数组+链表+红黑树的结构当有新的元素插入的时候,会对key进行hash(),高位运算,取模运算(因为数组的长度永远都是2的几次幂,所以相当于对数组长度-1 求&),从而得出数...
2020-05-09 17:11:33 111
原创 集合(四)Map 先导篇
HashMap要点概括参考文献:https://blog.csdn.net/qq_27093465/article/details/52207135http://zhangshixi.iteye.com/blog/672697http://blog.csdn.net/lizhongkaide/article/details/50595719https://blog.csdn.ne...
2020-05-09 17:11:15 122
原创 集合(三)Set集合的学习
HashSet实现原理要点概括参考文献:http://zhangshixi.iteye.com/blog/673143lhttps://blog.csdn.net/qq_25868207/article/details/55259978HashSet由哈希表(实际上是一个HashMap实例)支持,不保证set的迭代顺序,并允许使用null元素。 基于HashMap实现,API也是...
2020-05-09 17:10:40 73
原创 集合(二) List集合解析
ArrayList要点概括参考文献:http://zhangshixi.iteye.com/blog/674856lhttps://blog.csdn.net/qq_25868207/article/details/55259978https://www.cnblogs.com/leesf456/p/5308358.htmlArrayList是List接口的可变数组非同步实现,并...
2020-05-09 17:09:24 102
原创 springboot加载外部配置文件-war包直接读取外部配置文件
参考博客地址:https://www.jianshu.com/p/be6c818fe6ff1. springboot支持动态的读取文件,扩展接口:org.springframework.boot.env.EnvironmentPostProcessor我的项目使用场景起因是: 在同一台机器上起了两个tomcat实例, 每个项目的日志文件打印路径要配成不同, 如果每次打包手动修改打印日志的路...
2019-07-04 14:21:08 7423
原创 实现读写分离(springboot+mybatis)(二)
在(一)中直接写了代码, 能力有限 , 只能对(一)中的代码和遇到的坑做一些简单的阐释1. 之所以没有使用aop是因为读写分离不是在一开始就在在我们的规划里面 , 方法名没有按照一定的规则写,所以不好拦截,最后选择了mybatis的插件拦截. 关于插件拦截的学习可以参考以下博客 :https://www.jianshu.com/p/14bf6a4ca7ef2. 最开始的配置中并没有使...
2019-07-03 13:58:45 366
原创 实现读写分离(springboot+mybatis)(一)
直接贴代码吧1. 配置数据源 application.yml文件spring: dbfirst: url: jdbc:mysql://192.168.0.79:3306/ysn?useUnicode=true&autoReconnect=true&rewriteBatchedStatements=true&socketTimeout=30000&...
2019-07-03 10:19:07 314
原创 Java基础-mysql学习(explain执行计划及索引优化)
思维导图详细查看地址:http://naotu.baidu.com/file/880d9b861f0425a3541d8abb03010a14?token=0b8dd57462d6252d
2019-02-12 14:41:34 253
原创 一个简单的秒杀(基于redis)
/** * 秒杀 */ public boolean secKillBubble(Integer bubbleId, Integer userId) { Jedis jedis = getJedis(); Long incr = jedis.incr(RedisConstant.bubbleEntryNum + bubbleId)...
2019-01-08 11:54:43 132
原创 截取带有mojo表情、汉字、英文的字符串
单纯使用substring会把字符串截取的不能转换成完整的utf8//截取数量是3int i = nickName.codePointCount(0, nickName.length());//代码点的数量if(i>=3){ nickName = nickName.substring(nickName.offsetByCodePoints(0, 0), ...
2019-01-08 11:46:05 582
原创 多线程_线程池原理_思维导图
参考链接:https://blog.csdn.net/gol_phing/article/details/49032055
2018-10-06 18:02:47 260
转载 nginx学习(三) 配置文件
三、nginx.conf文件结构(一)概述主要由三块组成:全局块、events块、http块,http块中包含http全局块和多个server块,每个server块中包含server全局块和多个location块,采用就近原则生效。1、全局块:配置一些影响整体运行的指令,通常有服务器用户组,允许生成的worker、process、nginx.pid存放路径,日志存放路径,类型配置文...
2018-09-26 14:15:30 201
转载 nginx学习(二) nginx安装-Linux(Ubuntu)
1、进入Linux2、 安装gcc g++的依赖库sudo apt-get install build-essentialsudo apt-get install libtool3、安装pcre依赖库sudo apt-get updatesudo apt-get install libpcre3 libpcre3-dev4、安装zlib依赖库sudo apt-...
2018-09-25 16:17:55 140
转载 nginx学习(一) 代理概述
一、代理概述(一)正向代理一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求,并制定目标(服务器B),然后代理服务器Z向服务器B撞角请求并将获得的内容返回给客户端...
2018-09-24 14:10:21 190
转载 java String 常量池 思维导图
引用博文:https://mp.weixin.qq.com/s/_AaiynnWnjnz7f1lUF6dqw整理成思维导图
2018-09-10 17:56:00 218
原创 dy项目——需求:使用jsonp实现跨域
前端:原理,标签的形式可以实现跨域,但是无法接收接口的返回参数。需要接口直接向页面写出回调方法。//原生:<script> var script = document.createElement('script'); script.type = 'text/javascript'; // 传参并指定回调执行函数为onBack script.sr...
2018-07-26 14:48:01 258
原创 dy项目——需求:把area.json文件解析出来
//这里只是单纯打印出来了 public void getAreaJson() throws Exception { String json = ""; InputStream is = PlatformInviteMemberControllerTest.class.getClassLoader().getResourceAsStream("...
2018-07-26 14:38:20 1509
转载 json学习(二)
遍历Json一、遍历JsonArray // 一个未转化的字符串String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; // 首先把字符串转成 JSONArray 对象JSONArray json = JSONArray....
2018-07-26 14:30:13 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人