我遇到了一个问题,这个昨业我尝试做了很多次(研究了3天),逻辑我不太懂,卡在了显示所有数据这里了,第一步插入数据我已经做好了,昨业给出方法题目,我看到是有参的,我顿时不知道怎么做了,我想在这里问一下大家,指导一下我该怎么做呢,
下面是课程示例
不求帮zuo,只求指点,实在没办法了,只能用给定方法,数组,循环,不能使用对象篇的知识,只能利用创建对象不能使用构造方法和getset和this等等,头大啊~
public void insertAtArray(int[] a, int n, int k) {
// 从后往前移动元素,给k腾出n的位置
for (int i = a.length - 1; i > n; i--) {
a[i] = a[i - 1];
}
// 在n的位置上插入k
a[n] = k;
}
public void divThree(int[] a) {
// 遍历数组中的每个元素
for (int i = 0; i < a.length; i++) {
// 如果该元素能够被3整除,则输出该元素
if (a[i] % 3 == 0) {
System.out.println(a[i]);
}
}
}
作为开发,如果不了解缓存,那么你一定知道数据库,为什么会有缓存的出现?其实很简单,数据库的读写是基于磁盘IO的,数据库的性能,极大程度由你服务器的磁盘性能,硬件性能决定,目前数据库在软件层面的优化,已经做到了很不错了,但是你硬件
跟不上,最终的下场就是GG,而面对目前互联网的流量越来越大,对数据库的要求,还是只能满足软件层面,硬件的成本太高,所以大部分的企业是无法承担这样的费用,业务越来越复杂,对数据库的读写压力会越来越大,撑不住会经常打挂几台,集群有时
也扛不住,怎么办呢?
那么缓存就出来了,挡在数据库的前面,洪峰流量先走缓存,抗住一波后,再根据业务走数据库;市面上有很多缓存,比如Redis,Memcache等等,这些都是基于内存模型的,学过计算机的都知道,内存的读写速度要大于磁盘的读写速度。
所以内存的读写一定要快的多,这样也就降低了数据库压力,降低系统的瓶颈。
虽然缓存出现了,带来极大的好处,同时给业务上带来了额外的问题。
比如有
- 数据库和缓存数据不一致,业界称为双写不一致
- 缓存数据一大批集体失效,导致流量一瞬间直接打到数据库上,给数据库服务打挂了,这个现象业界称为缓存雪崩
- 缓存和数据库中,都不存在某个数据,但是用户恶意攻击频繁请求一些大字段,大返回结果,以及不存在的数据,导致数据库压力过大而挂掉,这个业界称为缓存穿透
- 缓存中某条数据不存在,但是数据库中存在,这样的场合一般是某个数据缓存到期了,这个时候读缓存没读到,并发请求上来都去读数据库的这条请求,导致数据库压力很大,这个称为缓存击穿
其实雪崩和击穿很类似,但是不一样的地方在于:
缓存击穿指并发查同一条数据,而缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
进入章节: