摘要:
一、什么是注解 注解是JDK1.5才引入的,Java增加了对元数据(描述数据的数据)的支持,也就是注解。 注解可以标注在类,成员变量,方法、形参上等。 注解可以做到在不改变代码逻辑的前提下在代码中嵌入补充信息。 这些信息被保存在注解的“name=value”键值对中。 框架=反射+注解+设计模式 从 阅读全文
摘要:
引入了缓存层,就会有缓存异常的三个问题:分别是缓存雪崩、缓存击穿、缓存穿透。 一、缓存穿透 访问一个缓存和数据库都不存在的key,此时请求会直接访问到数据库,并且查不到数据,没法写缓存,所以下次请求同样会访问到数据库上。 此时,缓存起不到作用,请求每次都会走到数据库,流量大时数据库可能会被打垮,此时 阅读全文
摘要:
经过一番排查,确认服务器的性能瓶颈是在数据库。给服务器加上Redis,让其作为数据库的缓存。 这样,在客户端请求数据时,如果能在缓存中命中数据,那就查询缓存,不用再去查询数据库,从而减轻数据库的压力,提高服务器的性能。 一、缓存模型 二、数据库和缓存的数据不一致问题 更新数据时,数据库的数据时客户端 阅读全文
摘要:
一、Redis简介 Redis属于键值对(key-value)数据库 Redis中所有的数据都是以key-value的形式存储在内存中的 所以读写Redis非常的快,在高并发的场景下,性能非常的好 二、Redis服务端(redis-server)的安装 省略。建议使用docker安装。 Docker 阅读全文
摘要:
题目描述 思路:前缀/后缀乘积数组 构造除自身以外数组的左边前缀乘积 构造除自身以外数组的右边后缀乘积 然后对应位置相乘 方法一: class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; / 阅读全文
摘要:
一、前缀和的作用 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。 二、前缀和的思路 将原始数组进行预处理,将来需要查询数据的时候,只需要查询预处理的前缀和数组的某些值即可。 前缀和的求解是【动态规划】。 三、前缀和的定义 四、前缀和数组的构造 //int[] nums = {3, 5, 阅读全文
摘要:
题目描述 思路:前缀和 前缀和数组(prefixSum)的构造 方法一: class Solution { public int[] runningSum(int[] nums) { int[] preSum = new int[nums.length]; preSum[0] = nums[0]; 阅读全文
摘要:
题目描述 思路:左右指针 方法一:暴力,超出时间限制 模拟所有情况,记录最大的体积值。 体积 = Math.min(height[i], height[j]) * (j - i) class Solution { public int maxArea(int[] height) { int res 阅读全文
摘要:
题目描述 思路:左右指针 只考虑数字和字母 字母的话需要全部转化为小写 然后使用左右指针判断是否是回文串 方法一: class Solution { public boolean isPalindrome(String s) { List<Character> list = new ArrayLis 阅读全文
摘要:
题目描述 思路:左右指针 方法一: class Solution { public void reverseString(char[] s) { int left = 0, right = s.length - 1; while (left < right) { char temp = s[left 阅读全文