- 博客(59)
- 收藏
- 关注
原创 剑指Offer第一章——整数
例如,如 果输入的数组为[0,1,0,1,0,1,100],则只出现一次的数字是 100。["abcw","foo","bar","fxyz","abcdef"],数组中的字符 串"bar"与"foo"没有相同的字符,它们长度的乘积为9。的长度乘积的最大值。"abcw"与"fxyz"也没有相同的字符,它们长度的乘积为16,这是 该数组不包含相同字符的一对字符串的长度乘积的最大值。为4,由于0、1、2、3、4的二进制形式中1的个数分别为0、1、1、2、1,因此输出数 组[0,1,1,2,1]。
2023-07-25 17:36:33
314
原创 Java反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.反射就是把java类中的各种成分映射成一个个的Java对象。
2023-07-19 20:40:44
1023
原创 Redis 缓存雪崩、缓存击穿、缓存穿透
缓存是一种提高系统性能的一种常见手段,其中 Redis 是一种常用的高性能缓存数据库。但是在使用缓存时,可能会遇到一些问题,比如缓存雪崩、缓存击穿、缓存穿透等问题。
2023-06-18 11:43:17
1698
原创 Redis 哨兵模式
当其他哨兵也检测到主服务器不可用,并且达到一定数量时,那么哨兵之间就会进行一次投票,投票的结果有一个哨兵发起,进行 failover 故障转移操作。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行 failover 过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象称为。是一种特殊的模式,首先 Redis 提供了哨兵的命令,哨兵是一个独立的进程,他会独立运行。之后,Redis正是提供了 Sentinel(哨兵)来解决这个问题(,让各个哨兵把自己监控的从服务器实现切换主机,这个时候称为。
2023-06-17 11:59:42
1498
原创 Redis 主从复制
Master 接收到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,Master 将传送整个数据文件到 Slave,并完成一次。:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的负载;,从机依旧连接主机,但是没有写操作,如果从机中途恢复正常,从机依旧可以获取主机写的内容。如果使用命令行配置,从机重启,就会变为主机(只有变为从机,才能获取之前主机内容),期间,主机继续写新内容,只要从机恢复,就可获得主机写的新内容。
2023-06-14 23:28:13
1099
原创 Redis.conf 详解
我们启动 Redis,一般都是通过 Redis.conf 启动。因此,我们必须了解 Redis.conf 的配置,才能更好理解和使用 Redis。
2023-06-12 21:46:08
521
原创 Redis 内存管理机制
Redis作为一个内存数据库,内存资源非常珍贵。因此,Redis引入了3种内存管理机制来释放不必要的内存,包括定期删除、惰性删除和内存淘汰机制。
2023-06-11 20:02:20
1277
原创 Redis 持久化存储机制:RDB 和 AOF
Redis(Server)是一个高性能的键值存储系统,它可以将数据存储在内存中以实现快速访问。为了保持数据的持久性,提供了两种数据持久化方法:RDB 和 AOF。
2023-06-11 19:15:47
813
转载 我们为什么要分库分表?
如果出现数据库问题不要着急分库分表,先看一下使用常规手段是否能够解决。分库分表会给系统带来巨大的复杂性,不是万不得已建议不要提前使用。作为系统架构师可以让系统灵活性和可扩展性强,但是不要过度设计和超前设计。在这一点上,架构师一定要有前瞻性,提前做好预判。
2023-05-31 21:04:53
68
原创 Redis 事务详细介绍
③左边执行事务,发现执行操作返回nil,查看money和out,发现事务并没有被执行(确实有乐观锁的效果)一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!,所有的命令在事务中,并没有直接被执行,只有发起执行命令时才执行。②左边支出20元(但是不执行事务),然后右边修改money的数值。注意:Redis单条命令是保证原子性的;①开启俩个,客户端,模拟多线程情况。执行成功(单线程没有干扰情况)
2023-05-30 11:16:45
412
原创 Java 8函数式编程(Lambda表达式,Optional,Stream流)
Lambda是 JDK8 中的语法糖,它可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象,而是更关注我们对数据进行了什么操作。
2023-05-15 01:00:50
272
原创 2023/05/02~07 刷题记录
题义:题解:读完题目可以想到直接暴力,但是肯定超时别想了。因为 a b c 都是素数,所以我们可以先求出所有的素数 进行减少循环的次数,然后遍历。在遍历过程中,我们也要去进行剪枝 ,如果说 a 的五次方大于了目标值,那后面肯定就都大于了,以此类推。
2023-05-07 19:38:08
567
原创 2023/04/27~28 刷题记录
数字111的所有数字都等于1,所以它的幸运度是0。所以我们可以得到,一个 2 的贡献为 序号 i,那么所有的贡献值为 1,2,3,,,n。题目让我输出一个 没有冲突的方案,如果一个人在多天都能得奖,那么我们任选其中一天让他得奖,这种人可能存在多个,我们把同一天的这类人看成一组,这一天我们选择了这组中的其中一个人相当于选择了这个组,在之后就不能再选择属于这组中的人了。然后题目等价与在每天的那个组中选一个人,总的集合 向 当前天的选择的那个人(总的集合没有的人) 连边,然后这一天的这一组也属于 总的集合。
2023-04-28 20:56:12
314
原创 2023/04/26 刷题记录
李华有一个大小为n x n的图案,每个细胞不是蓝色就是红色。在母次操作中,他选择一个单元格并将其颜色从红色变为蓝色或从蓝色变为红色。每个单元格可以任意选择。有没有可能做出和旋转180度相匹配的图案?这道题就是判断 180° 旋转后,是否为一样的图案。那么只需要遍历上半的图形,和下半的对比,不一样就记录一下 +1。主要是判断奇偶,分别判断。假设你是李华,请解决这个问题。
2023-04-26 23:35:11
69
原创 Java集合详解(含JDK1.8源码)(完结)
Java集合底层源码详解(包含 ArrayList、Vector、LinkedList、HashSet、HashMap、LinkedHashSet、LinkedHashMap 集合)
2023-04-20 21:44:59
465
1
原创 Java的自定义异常类
继承自Exception类或某个子Exception类定义属性和方法,或重载父类的方法对于异常,不仅要进行捕获处理,有时候还需要将此异常进一步传递给调用者,以便让调用者也能感受到这种异常。将当前捕获的异常再次抛出:throw e;重新生成一个异常,并抛出,如:throw new Exception("some message");重新生成并抛出一个新异常,该异常中包含了当前异常的信息,如:throw new Exception("some message", e);
2023-04-05 19:04:17
191
原创 binary_search()、lower_bound()、upper_bound()的实现
在二分中一般有两种基本的实现方法,一种为左闭右闭(也是我使用的)另一种为左闭右开区间。
2023-04-02 11:02:31
101
原创 蓝桥刷题小结
题解:本题要求子矩阵,如果使用遍历循环去求解子矩阵中的元素之和肯定是超时的。这个时候我们很容易想到使用前缀和去优化求解元素之和的问题,在二维矩阵中又叫二维前缀和。在矩阵中,需要确定一个矩阵需要一个左上角顶点和一个右下角的顶点。二维前缀和求解的矩阵为从sum[i][j]的表现形式,解释为左上角顶点为(1,1)、右下角为(i,j)的顶点所组成的矩阵内的元素之和。二位前缀和求解公式:sum[i][j]prefixSum(一维前缀和);
2023-03-31 16:18:09
124
3
转载 lower_bound()和upper_bound( )函数
从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。:从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。:从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。:从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。的方法在一个排好序的数组中进行查找的。
2023-03-26 19:46:59
79
原创 Apache Commons Math库求解线性规划问题
Apache Commons Math 是一个非常流行的 Java 数学库,其中包含了求解线性规划和非线性规划问题的功能。
2023-03-22 23:30:55
1847
原创 《Java语言程序设计》第九章——对象与类
其次,它使类变得难以维护,容易出现错误。比如一个圆类,它的属性中有半径这个属性,故修改半径时应该确保半径是一个非负数。在创建引用对象数组时,创建出来的对象数组的引用值为null,所以就要给数组中每一个数据都要创建一个新的引用对象。在传递基础数据类型时,传递的就是数据的值,而在引用数据类型传递时,传递的将是引用对象的地址。如果一个引用类型的数据域没有引用任何对象,那么这个数据域就有一个特殊的Java值null。首先,数据可以被篡改。如果没有做封装数据可以直接被修改,可以被错误设置为任何一个值。
2023-03-09 16:15:43
71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人