- 博客(30)
- 收藏
- 关注
转载 Java transient关键字使用小记
原文地址哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~好了,废话不多说,下面开始:1. transient的作用及使用方法我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizab
2020-08-23 20:18:05
255
转载 【转载】Java 8系列之重新认识HashMap
原文地址 https://tech.meituan.com/2016/06/24/java-hashmap.htmlHashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。Java为数据结构中的映射定义了一个接口java.util.Map,此接口
2020-08-20 23:49:57
229
原创 Spring中Bean(@Controller、@Service、@Repository)线程安全情况分析
对于Spring中的Bean是怎么样的一种存在,特别是常用的@Controller、@Service、@Repository,每次处理一个请求的时候都是统一个Bean在处理吗?还是新生成Bean处理请求?
2020-05-13 21:23:21
667
原创 Java代理之 - cglib动态代理的一点点
> **外部引用**(cglib相关引用)> - 引用包cglib-xxx.jar> - 非Maven项目还需要手动引用包asm-xxx.jar> **组成**> 1. 业务类(不需要额外接口)> 2. 代理类(实现MethodInterceptor接口),主要**两个方法**:> -- 重写接口中intercept()方法,intercept()方法中调用被代理类的功能并扩展代理类的功能;> -- 对外提供的一个创建代理对象的方法;
2020-05-07 13:57:25
225
原创 Java代理之 - JDK 动态代理浅浅一点
JDK动态代理需要3个部分:1、需要一个接口,只是被代理类要该接口(**代理类不再跟被代理类强关联**);2、被代理类,实现1中的接口,并实现接口中方法,在方法中完成自己的功能;3、代理类,实现InvocationHandler接口,并主要有**三个方法(一个是构造函数)**:> - 构造函数,接收被代理类作为构造函数入参;> - 实现接口中invoke()方法,在invoke()方法中**利用反射调用被代理类中方法**,并扩展代理自己的功能;> - 并提供一个供外部调用的**代理实例创建方法*
2020-05-07 13:00:24
166
原创 Java代理之 - JDK 静态代理浅析
JDK静态代理需要3个部分:1、需要一个接口,代理类和被代理类要实现同一个接口;2、被代理类,实现1中的接口,并实现接口中方法,在方法中完成自己的功能;3、代理类,实现1中的接口,实例化2中的被代理类,实现接口方法时,调用被代理类的实现,并扩展自己的功能;
2020-05-07 12:48:14
199
原创 Redis-关于RDB的几点顿悟-COW(Copy On Write)
在看Redis的持久化机制中的RDB时,有几个疑问,1、RDB的过程中是否会停止对外提供服务?2、RDB的过程中数据修改了,备份的是修改前的还是修改后的?
2020-04-22 00:03:48
5620
3
转载 MySQL索引与Index Condition Pushdown(转载)
原文链接:MySQL索引与Index Condition Pushdown大约在两年前,我写了一篇关于MySQL索引的文章。最近有同学在文章的评论中对文章的内容提出质疑,质疑主要集中在联合索引的使用方式上。在那篇文章中,我说明联合索引是将各个索引字段做字符串连接后作为key,使用时将整体做前缀匹配。而这名同学在这个页面找到了如下一句话:index condition pushdown is...
2020-04-21 12:35:01
203
转载 MySQL索引背后的数据结构及算法原理(转载)
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第...
2020-04-21 12:22:41
173
原创 git stash 临时存一下
当前分支的代码未开发完(提交会异常),但是需要切换到别的分支上处理些紧急问题,为了避免提交本地代码影响其他同事的开发,或者是未保存导致本地代码丢失
2020-04-20 16:25:59
182
原创 git-修改commit信息
修改commit信息主要有这几种情况1.刚刚commit,还没有push,使用git commit --amend;2.刚刚push,要修改最近一个push的commit信息,使用git commit --amend;3.修改历史push的commit信息,使用git rebase -i HEAD~n【其中的n为记录数】,配合2中的命令注意:其中1、2两种情况的修改方式是一样的,但...
2020-04-20 16:04:08
73277
6
原创 阿里Java开发手册实践:一次SQL查询优化原理分析(900W+数据,从17s到300ms)
原理: 1、减少回表操作; 2、利用延迟关联或者子查询优化超多分页场景;
2020-04-19 23:31:08
1505
6
原创 VirtualVM查看JVM内存结构(深入理解Java虚拟机)
组成部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区运行时常量池【方法区的一部分】直接内存【不属于JVM内存结构,但会频繁使用,可能导致OOM出现】在最近,使用VirtualVM对系统的内存占用情况进行分析时,VirtualVM中内存变动的图形化展示,对于理解JVM内存结构特别有帮助,于是从《深入理解Java虚拟机 第2版》中手录了这部分内容,整理到线上也方便随时查看。...
2020-04-19 23:29:23
694
原创 git 撤销commit信息(push操作之前)
用到的命令git reset --soft HEAD^注意:–soft 选项表示仅仅是撤回commit操作,回到git add之后的状态,写的代码仍然保留其他说明HEAD^的意思是上一个版本,也可以写成HEAD~1如果进行了2次commit,想都撤回,可以使用HEAD~2–mixed :不删除工作空间改动代码,撤销commit,并且撤销git add操作,作为默认参数,git re...
2020-04-19 23:27:53
870
原创 Java并发-CountDownLatch、CyclicBarrier、Semaphore、Runnable、Callable、Future、FutureTask总结记录
1、CountDownLatch、CyclicBarrier、Semaphore,都位于java.util.concurrent包中,是并发控制的辅助类,可以控制线程的协同工作;2、Runnable(java.lang.Runnable)、Callable(java.util.concurrent),作为线程创建相关类;3、Future(java.util.concurrent),是对于具体...
2020-04-19 23:26:44
424
原创 Redis-淘汰策略
Redis有8种淘汰策略(常规的+Redis4.0新增的2种lfu策略)名词解释lru(less recently used)最近最少使用ttl(time to live)存活时间lfu(least frequency use)最少使用频率淘汰策略1、 no-eviction(默认策略):不淘汰策略,超过最大内存则返回错误信息;2、 volatile-lru:已经设置过期时间...
2020-04-19 23:22:44
296
原创 Redis-常见问题(雪崩、穿透、击穿、数据一致性)
1、缓存雪崩:缓存中大面积的key同时失效,查询请求都打到数据库中;2、缓存穿透:查询的数据在缓存中不存在时,到数据库中查询。可能是无效数据,在数据库中也不存在;3、缓存击穿:类似与雪崩,击穿是单个热点key失效,导致请求直接打到数据库中;4、数据一致性:缓存和数据库中的数据不一致;1、缓存雪崩解决办法:确保不会存在大量key过期时间相同的情况,例如给key的过期时间增加一个随机...
2020-04-19 23:21:03
383
原创 Redis-字符串-二进制安全(sds:简单动态字符串)
简单来说,二进制安全就是,字符串不是根据某种特殊的标志来解析的,无论输入是什么,总能保证输出是处理的原始输入而不是根据某种特殊格式来处理。在 C 语言中,字符串可以用一个 \0 结尾的 char 数组来表示。比如说, hello world 在 C 语言中就可以表示为 "hello world\0"&...
2020-04-19 23:18:55
731
原创 Redis-IO多路复用
1、“I/O多路复用”这个坑爹翻译可能是这个概念在中文里面如此难理解的原因;2、I/O多路复用,即:I/O multiplexing,这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流。发明它的原因,是尽量多的提高服务器的吞吐能力;3、可以理解成是一种**“时分复用”**;IO 复用例子说明假设你是一个机场的空管,...
2020-04-19 23:17:06
472
原创 InfluxDB入门
InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计;目前(2019-09-29)建议使用InfluxDB V1 版本1、什么是InfluxDB...
2019-10-03 17:19:04
471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人