简介树是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。 二叉树是一种更为典型的树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。 树的遍历12345678910void traverse(TreeNode root) { if (root == null) { return; } // 前序位置 traverse(root.left); // 中序位置 traverse(root.right); // 后序位置} 前序位置的代码在刚刚进入一个二叉树节点的时候执行; 后序位置的代码在将要离开一个二叉树节点的时候执行; 中序位置的代码在一个二叉树节点左子树都遍历完,即将开始遍历右子树的时候执行。 二叉树的每个节点都有「唯一」属于自己的前中后序位置,所以前中后序遍历是遍历二叉树过程中处理每一个节点的三个特殊时间点。 123456789void TreeNode<T>{ //每个结点 ...
滑动窗口算法代码框架1234567891011121314151617181920212223242526void slidingWindow(string s){ Map<Character,Integer> window = new HashMap(); int left = 0,right = 0; while(right < s.length()){ // c 是将移入窗口的字符 char c = s.charAt(right); //增大窗口 right++; //进行窗口内数据的更新 ... /** debug 输出位置**/ /** 结束 **/ //判断左侧窗口是否要收缩 while(window needs shrink){ // d 是将移出窗口的字符 char d = s.charAt(left); //缩小窗口 left++; //进行窗口内数据的更新 ... ...
记录本博客使用到的hexo插件hexo-abbrlink ^2.2.1 用于根据帖子前面的标题和数据生成静态帖子链接。 npm install hexo-abbrlink --save config.yml: 1234permalink: posts/:abbrlink/ 或 permalink: posts/:abbrlink.htmlabbrlink: alg: crc32 #alg 对应随机值算法参数,可选为 crc16 和 crc32 rep: hex #rep 对应生成链接的表示方法,hex:十六进制,dec:十进制 hexo-algoliasearch ^1.0.0 用于索引您在 Algolia 上的 Hexo 博客的帖子 npm install hexo-algoliasearch --saveconfig.yml: 123456789101112131415algolia: appId: "应用程序 ID" apiKey: " API 密钥" adminApiKey: &q ...
二分查找框架1234567891011121314int binarySearch(int[] nums,int target){ int left =0,right =...; while(...){ int mid = left+(right-left) / 2; if(nums[mid] == target){ ... }else if(nums[min] < target){ ... }else if(nums[min] > targetn){ ... } } return ...;} 注意:代码中 left+(right - left) / 2 和 (left+right) / 2 的结果相同,防止 left 和 right 太大,导致益处问题。 基本的二分搜索1234567891011121314int ...
队列特点 只允许在一端进行插入操作,在另一端进行删除操作的线性表 允许插入的一端称为队尾(rear),允许删除的一端称为队头(front) “先进先出”原则 定义队列1234567891011121314151617181920212223242526272829class QueueArray<T>{ private T[] queue; private int front=-1,rear=-1; public QueueArray(int stack_size){ this.queue = new T[stack_size]; } public boolean isEmpty(){} public void add(T data){} public T delete(){}}class QueueByLink<T>{ private Node<T> ...
docker安装 查看系统版本 12[root@20230518-instance ~]# uname -r3.10.0-1160.el7.x86_64 uname -r x86 64位系统,如果是32位是不能安装 docker 的 yum 更新到最新版本 12345[root@20230518-instance ~]# yum updateLast metadata expiration check: 1:15:10 ago on Sat 05 Nov 2023 06:22:53 PM CST.Dependencies resolved.Nothing to do.Complete! yum update 显示 Complete 就代表完成了,整个过程需要 5-10 分钟左右 安装Docker所需的依赖包 12345678[root@20230518-instance ~]# yum install -y yum-utils device-mapper-persistent-data lvm2Last metadata expiration check: 1:16:16 ...
引用站外地址 labuladong 左右指针和快慢指针快慢指针技巧有序数组去重 用到快慢指针技巧: 我们让慢指针 slow 走在后面,快指针 fast 走在前面探路,找到一个不重复的元素就赋值给 slow 并让 slow 前进一步。 这样,就保证了 nums[0..slow] 都是无重复的元素,当 fast 指针遍历完整个数组 nums 后,nums[0..slow] 就是整个数组去重之后的结果。 12345678910111213141516int removeDuplicates(int[] nums){ if(nums.length == 0){ return 0; } int slow = 0,fast = 0; while(fast < nums.length){ if(n ...
源代码地址 引用站外地址 数字时钟效果 注意: 1、因为页面中地方有限,对源码进行了修改,简化了页面元素。 2、修改了时间数据获取的方式。 预览效果原版修改后 代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#clock .display .weekdays .digitsscript. (() => { var alarm_counter = -1; var digit_to_name = 'zero one two three ...
学习记录
未读Redis 缓存雪崩、缓存击穿、缓存穿透缓存雪崩指缓存中数据大批量到过期时间,请求都直接访问数据库,引起数据库压力过大甚至宕机。 缓存击穿指热点key在某个时间点过期,而在这个时间点对这个Key有大量的并发请求,从而请求到数据库。 缓存穿透指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。 Redis 过期策略和内存淘汰策略过期策略定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。设置 set key 60,指定这key60s后过期。 惰性过期只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。 lazyfree-lazy-eviction:当 redis 内存达到阈 ...
学习记录
未读优点 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 支持数据的备份,即master-slave模式的数据备份。 性能极高 。 丰富的数据类型 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 原子性。 丰富的特性。 安装 安装Redis 下载地址:http://redis.io/download ,下载最新稳定版本。 wget https://download.redis.io/redis-stable.tar.gz tar -xzvf redis-stable.tar.gz cd redis-stable make 可执行文件 安装目录/bin redis-benchmark —-性能测试工具 redis-check-aof —-AOF文件修复工具 redis-check-dump —-RDB文件检查工具(快照持久化文件) redis-cli —-命令行客户端 redis-server —-redis服务 ...









