- 博客(21)
- 收藏
- 关注
原创 【开卷数据结构 】还不会实现堆吗?图文并茂深入理解堆
Q:什么是最大堆**A:**最大堆是指在树中,如果一个结点有儿子结点,其关键字值都不小于其儿子节点的关键字值。最大堆是一棵完全而二叉树,也是一颗最大树。Q:什么是最小堆**A:**最小堆是指在树中,如果一个结点有儿子结点,其关键字值都不大于其儿子节点的关键字值。最小堆是一棵完全而二叉树,也是一颗最小树。**注意:**最小树的根结点的关键字是树中元素最小的,而最大树的根结点是树中关键字值最大的。可以发现,最大堆和最小堆十分相似,下文中我们就只研究最大堆。创建空堆把新元素插入堆中从队中删除最大元素。
2025-01-19 17:33:14
1018
原创 【Java毕设】基于SpringBoot实现新冠疫情统计系统(Idea+Navicat)_基于spring boot的新冠疫情数据分析系统的设计与实现
疫情在我们的生活中反反复复,为了方便我们更直观的清楚新冠疫情数据,通过Java编程可以统计疫情信息,更好管控。本文给大家分享一个基于SpringBoot实现的新冠疫情统计系统,本文也适合计科专业毕业设计,也符合当前社会的需求。(文末附源码)
2025-01-19 15:54:38
982
原创 zookeeper分布式集群中基于Curator实现单点设备上线下线心跳感知系统(二)
System.out.println(“数据:” + new String(event.getData().getData(), “UTF-8”));System.out.println(“路径:” + event.getData().getPath());System.out.println(“已存在:” + DEVICE_PATH);//如果不存在这个路径,stat为null,创建新的节点路径。//初始化log4j,zookeeper否则报错。//初始化log4j,zookeeper否则报错。
2025-01-18 20:58:47
355
原创 zookeeper分布式锁
然后由于必须获取到5个节点中的3个以上,所以可能出现获取锁冲突,即大家都获得了1-2把锁,结果谁也不能获取到锁,这个问题,redis作者借鉴了raft算法的精髓,通过冲突后在随机时间开始,可以大大降低冲突时间,但是这问题并不能很好的避免,特别是在第一次获取锁的时候,所以获取锁的时间成本增加了。如果5个节点有2个宕机,此时锁的可用性会极大降低,首先必须等待这两个宕机节点的结果超时才能返回,另外只有3个节点,客户端必须获取到这全部3个节点的锁才能拥有锁,难度也加大了。=t3说明锁被其他线程获取了。
2025-01-18 20:56:46
855
原创 SVN服务器的本地搭建和使用
冲突问题是最常见的问题,它是这样产生的,A用户check out了一个工作副本A,接着B用户又check out了一个工作副本B.然后A用户对副本A中的文件C做了修改(可以是内容修改,文件删除,重命名,以及位置移动),并且提交.这时候B用户也对文件C的相同部分做了修改,这时候如果B用户进行提交,会先被告知版本过时,要求更新,然后更新的时候会提示冲突了,这时候可以用冲突编辑器进行手动选择.使用TortoiseSVN更新,修改工作副本中的Readme.txt文件,加入"hello world!
2025-01-18 14:25:28
2015
原创 OpenCV图像处理基础(变换和去噪)
仿射变换可以进行缩放、旋转、平移、裁剪和翻转。总计而言,仿射变换会保留图中直线的平直性和平行性。表示成矩阵形式:其中 [ a 1 a 2 a 3 a 4 ] \begin{bmatrix} a_1 & a_2\\ a_3 & a_4 \end{bmatrix} [a1a3a2a4]表示缩放和旋转变化, [ t 1 t 2 ] \begin{bmatrix} t_1 \\ t_2 \end{bmatrix} [t1t2]表示平移变化。
2025-01-18 03:41:04
765
原创 Junit测试的使用场景,这里带来2个非常实用的案例
/每写入一行,在该行开头添(加序号.),例如1.for (String s : list) {//每遍历一次,向user.txt文件写入一行。//当前项目下user.txt文件,不是模块下,因为默认下的路径就是项目根目录。//为了不影响user.txt文件,所以需要把源文件进行拷贝。//为了把数据按行进行存储,所以声明一个集合进行有序的存储。bw.flush();//读取创建一个字节读流,关联user.txt文件。//执行完操作后恢复被操作的文件user.txt。//关联userCopy.txt文件,
2025-01-18 00:58:57
592
原创 JDK8中的HashMap初始化和扩容机制
/ 如果新插入的结点和table中p结点的hash值,key值相同的话。// 将数组大小设置为原来的2倍,并将原先的数组中的元素放到新数组中。// 如果存储元素的table为空,则进行必要字段的初始化。// 这个方法返回大于输入参数且最接近的2的整数次幂的数。// 如果根据hash值获取的结点为空,则新建一个结点。// 调整数组大小之后,需要调整红黑树或者链表的指向。// 因为有链表,红黑树之类,因此还要调整他们。// 如果是红黑树结点的话,进行红黑树插入。// 定义新数组的长度及扩容的临界值。
2025-01-17 23:26:57
632
原创 JavaScript中字符串、列表、对象常用方法
arr.forEach((item, index, arr) => { // item:当前元素, index: 当前元素的索引, arr: 列表对象。// 在Object原型上添加了属性num,由于原型链的继承机制,所有对象都会继承num属性。// 将对象数组转换为对象。// 计算数组元素的总和。
2025-01-17 16:08:39
424
原创 JavaScript中apply()和call()的区别和应用
apply:最多只能有两个参数——新对象thisArg和一个数组[argsArray]。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果[argsArray]不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供[argsArray]和thisArg任何一个参数,那么Global对象将被用作thisArg,并且无法被传递任何参数。call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。。
2025-01-17 16:06:37
470
原创 C语言从入门到实践——常用字符函数和字符串函数的使用和模拟实现
字符函数主要用于对单个字符进行分类、转换和比较等操作。而字符串函数则用于处理由多个字符组成的字符串,如复制、拼接、比较和查找等。isalpha:检查字符是否为字母(a~z, A~Z);iscntrl:检查字符是否为控制字符(八进制000~037以及177的字符);isdigit:检查字符是否为十进制数字(0~9);isgraph:检查字符是否为图形表示,依赖于使用语言的环境;tolower:将大写字母转换为小写字母;toupper:将小写字母转换为大写字母。strlen:返回字符串长度;
2025-01-17 02:38:51
878
原创 C语言中的操作符(万字详解)
逻辑反操作- 负值+ 正值& 取地址sizeof 操作数的类型长度(以字节为单位)~ 对一个数的二进制按位取反-- 前置、后置--++ 前置、后置++\* 间接访问操作符(解引用操作符)(类型) 强制类型转换。
2025-01-17 02:36:50
752
原创 awk命令详细说明
为了便于举例说明,在当前目录下生成一个历史话单文件bill(注意,是一行内容,中间没有换行符),其内容如下:我们可以使用$0变量将整个bill文件内容读出:(在awk中,print和print $0的作用完全一样。使用$number变量,对多个字段的文本进行处理,将变得非常容易,它可以让你毫不费力地引用每个独立的字段。上例中,在调用awk时,使用-F选项来指定,作为字段分隔符。awk处理后打印出主叫号码字段和被叫号码字段。以下是该脚本输出:以上命令中,我们是通过-F选项来指定字段分隔符的。
2025-01-16 22:39:05
628
原创 AudioRenderer开发音频播放功能(ArkTS)
在进行应用开发的过程中,建议开发者通过方法订阅AudioRenderer的状态变更。因为针对AudioRenderer的某些操作,仅在音频播放器在固定状态时才能执行。如果应用在音频播放器处于错误状态时执行操作,系统可能会抛出异常或生成其他未定义的行为。
2025-01-16 22:32:51
661
原创 Android组件化和插件化开发
插件化开发插件化是将一个apk根据业务功能拆分成不同的子apk(也就是不同的插件),每个子apk可以独立编译打包,最终发布上线的是集成后的apk。在apk使用时,每个插件是动态加载的,插件也可以进行热修复和热更新。
2025-01-16 19:35:23
1151
原创 Android组件内核之Service内核原理(三)
Notification:通知信息类,它里面对应了通知栏的各个属性。NotificationManager : 状态栏通知的管理类,负责发通知、清除通知等操作。
2025-01-16 19:33:22
665
原创 2021-03-26【PTA】【】
int n,h;double z;if(h=5){z=50*h;}else{z=30*h;}else{if(n>=5){z=5040+501.5*(h-40);}else{z=3040+301.5*(h-40);int m,n;i
2025-01-16 01:16:00
321
原创 2020阿里巴巴,字节跳动,京东,小米,三星等大厂面试真题,牛客网整理!
每个Activity都包含一个Window对象,Window对象通常是由PhoneWindow实现的。PhoneWindow:将DecorView设置为整个应用窗口的根View,是Window的实现类。它是Android中的最基本的窗口系统,每个Activity均会创建一个PhoneWindow对象,是Activity和整个View系统交互的接口。
2025-01-16 01:11:53
787
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅