文章目录
复习思路
将自己遇到的问题记录并回答一下,日后复习用
回调、静态代理、装饰模式思路:
(这只是我的一个思路的简单整理,后续整理成更好的笔记)思路整理:首先有一个回调接口,A类 实现这个回调接口,并实现回调接口中的方法,这个方法就是回调方法(假设为a,a等待回调),A类中的某一个方法(暂且认为是另外一个方法c)调用了B类 中的方法b(A类中应该有B 类的引用或者是B类实现了的接口的引用),同时将 自身的指针this作为b的参数。这个时候来到了B类,并且带着A类的引用,B类中的b方法的实现体进行了一系列操作之后,利用 传递过来的this指针(因为方法b有一个参数就是A类的引用, 或者说是A类实现了的那个接口的引用)调用了A类中的 实现方法a。这个时候就实现了回调,当然有同步回调也有异步回调,我目前理解的异步回调就是,在B类中的方法b的方法体中,新开辟一个线程去处理事务,这样A类中的方法c在调完B类中的方法b后,可以直接去干别的事情,不用等待结果返回。
静态代理思路:有两个类:一个是老板类,一个是秘书类,老板是真实类、秘书是代理类,有一个接口叫谈判,谈判时核心业务,由老板完成,其他事情, 比如预约时间, 确定地点,以及收尾工作由 秘书完成。我们就可以这样设计:首先声明一个核心业务接口:谈判。老板和秘书 都需要实现这个接口,老板实现的这个接口的方法体中去实现谈判具体细节,在秘书 实现这个接口的方法体中, 有三部分,一部分是 前期工作,第二部分是调用 老板实现的谈判方法(所以,秘书中要有老板的引用,或者是老板实现 接口的引用)。第三部分是收尾工作。在做完以上工作之后, 创建一个秘书类,就是代理类, 并创建一个被代理类老板,将这个老板作为参数传进代理类中。调用谈判方法即可。这个静态代理有缺点,就是当我们有 第二个老板的时候,还需要再创建一个秘书,所以就会导致大量代码重复。这个时候就会引入动态代理,我还没有搞明白。可以暂时先看这一篇:https://blog.csdn.net/hejingyuan6/article/details/36203505#commentBox
装饰模式思路:装饰模式和静态代理模式非常相似:首先都是有一个接口,在上个例子中静态代理中这个接口我们设定为谈判,这次在装饰模式中, 我们将这个接口设置为汽车移动move。我们 给这个车增加不同的 功能,比如飞、 游泳、自动驾驶,这都是move。首先声明一个move接口,接下来,真实对象和装饰器都要实现这个接口,真实对象的实现体move方法就是普通的移动,而装饰器在他的实现体move方法中时调用真实对象中的move方法。并且装饰器也要持有真实对象的引用。这个 静态代理模式是何等的相似,只不过在装饰器实现的move方法体中,我们不在前后加上功能,而是在装饰器的若干子类中去实现若干功能。比如一个FlyCar继承了装饰器SuperCar,肯定需要构造器来传入个真实对象的引用,因为前面说了装饰器需要持有真实对象的引用。另外因为FlyCar继承了父类装饰器, 需要重写父类中的move方法,重写的方法体中,也是需要先调用父类的move方法,因为前面说了父类装饰器的move方法是调用它持有的真实对象的move方法,然后在方法体中再另外加入装饰,另外的装饰可以调用FlyCar类体中的飞行方法,这里就是指实现飞的方法了。创建一个FlyCar的实例,传入 一个真实对象,然后调用FlyCar实例的move方法, 就可以了。另外,我们可以多创建几个子类,这样几个子类之间可以进行组合。
多表查询:
https://blog.csdn.net/m0_37888031/article/details/80632268
索引:
http://blog.codinglabs.org/articles/theory-of-mysql-index.html
回调例子
https://www.cnblogs.com/xrq730/p/6424471.html
https://www.cnblogs.com/heshuchao/p/5376298.html
IoC解释
https://www.cnblogs.com/xdp-gacl/p/4249939.html
四大作用域
https://blog.csdn.net/chenyujian1987/article/details/14647155#commentBox
哈希冲突之开放定址法
https://blog.csdn.net/mr_doublerun/article/details/49633167
另外三种方法:
再哈希法:这种方法是同时构造多个不同的哈希函数,分别利用不同的哈希函数去计算哈希值
链地址法:java中的HashMap就是利用这种方法
建立公共溢出区:这种方法的基本思想是将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。
计算机网络协议入门(简直不能太棒)
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html
码元
波特率又称码元率,是指每秒传输码元的数目,单位波特(Band)
比特率为每秒传输的比特(bit)数。
码元:
在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元。 这是百度百科的解释
通俗点说,可以把一个码元看做一个存放一定信息量的包,如果只存放1bit,那么波特率等于比特率,但是一般不止存放1bit
如一串二进制信息为101010101 当一个码元携带的信息量为1bit时,那么就有9个码元,其波特率相当于比特率,如果每三个一组101,010,101,这时就可以使用8种振幅来表示某个码元,这里相当于一个码元就包含了3bit,这里码元的离散取值数目就是8。
由此可得波特率和比特率的关系
若码元的离散取值数目是L,波特率是B,数据率(比特率)为C,则
C = B log₂L.(当L=2时,C=B)
原文:https://blog.csdn.net/qq_35315699/article/details/72935010
JVM垃圾回收
https://baijiahao.baidu.com/s?id=1605937053950156833&wfr=spider&for=pc
wait和notify为什么必须在同步块中
https://www.cnblogs.com/set-cookie/p/8686218.html
CAS机制
https://www.jianshu.com/p/ae25eb3cfb5d
@ComponentScan注解
https://blog.csdn.net/neulily2005/article/details/83750027
@Configuration注解
https://blog.csdn.net/leoxyk/article/details/79800020
数据库连接池
https://blog.csdn.net/crankz/article/details/82874158
JAVA线程状态及转换
https://www.cnblogs.com/happy-coder/p/6587092.html
KMP算法
https://blog.csdn.net/x__1998/article/details/79951598
根据时间戳统计每天的人数
select FROM_UNIXTIME(create_time/1000,'%Y-%m-%d')as date,COUNT(*) as 人数
FROM 表
where 1
GROUP BY date;(create_time表示的是时间戳字段并且是毫秒)
请求头和响应头
https://www.jianshu.com/p/eb3e5ec98a66
reidis缓存穿透、缓存雪崩、缓存击穿
https://baijiahao.baidu.com/s?id=1619572269435584821&wfr=spider&for=pc
maven入门
https://www.cnblogs.com/hzg110/p/6936101.html
post和get的区别
https://www.cnblogs.com/logsharing/p/8448446.html