avatar
文章
78
标签
19
分类
12
首页
时间轴
标签
分类
留言板
关于
张晓风的博客
首页
时间轴
标签
分类
留言板
关于

张晓风的博客

day-2-复杂度分析(下)
发表于2024-06-13|数据结构与算法学习笔记| 条评论
一、最好、最坏情况时间复杂度最好情况时间复杂度:在最理想的情况下,执行这段代码的时间复杂度。最坏情况时间复杂度:在最糟糕的情况下,执行这段代码的时间复杂度。 二、平均情况时间复杂度平均时间复杂度:也叫加权平均时间复杂度, 在大多数情况下,我们并不需要区分最好、最坏、平均情况时间复杂度,我们使用一个复杂度就可以满足需求了。只有同一块代码在不同的情况下,时间复杂度有量级的差距,我们才会使用这三种复杂度表示法来区分。 三、均摊时间复杂度对一个数据结构进行一组连续操作中,大部分情况下时间复杂度都很低,只有个别情况下时间复杂度比较高,而且这些操作之间存在前后连贯的时序关系,这个时候,我们就可以将这一组操作放在一块儿分析,看是否能将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上。而且,在能够应用均摊时间复杂度分析的场合,一般均摊时间复杂度就等于最好情况时间复杂度。 均摊时间复杂度就是一种特殊的平均时间复杂度,没必要花太多精力区分它们。
day-1-复杂度分析(上)
发表于2024-06-12|数据结构与算法学习笔记| 条评论
一、为什么需要复杂度分析1.1 事后统计法的局限性 测试结果非常依赖测试环境 测试结果受数据规模的影响很大 1.2 大 O 复杂度表示法大 O 时间复杂度表示法表示代码执行时间随数据规模增长的变化趋势,也叫渐进时间复杂度,简称时间复杂度。 二、时间复杂度分析方法2.1 只关注循环执行次数最多的一段代码2.2 加法法则:总复杂度等于量级最大的那段代码的复杂度2.3 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积三、几种常见时间复杂度分析 3.1 非多项式量级非多项式量级只有两个:O(2的n次方)和O(n!) 3.2 多项式量级a) O(1)一般情况下,只要算法中不存在循环语句、递归语句,即使有成千上万行的代码,其时间复杂度也是O(1)。 b) O(logn)、O(nlogn)对数阶时间复杂度非常常见,同时也是最难分析的一种时间复杂度。归并排序、快速排序的时间复杂度都是O(nlogn)。 c) O(m + n)、O(m * n)T1(m) + T2(n) = O(f(m) + g(n))T1(m) * T2(n) = O(f(m) * f(n)) ...
《数据结构与算法》学习计划
发表于2024-06-10|数据结构与算法学习笔记| 条评论
一、总计划 阶段 学习时间 学习模块 第一阶段 6月10日-6月23日 复杂度分析、数组、链表、栈、队列 递归、排序、二分查找 第二阶段 6月24日-7月7日 散列表、二叉树、堆、堆排序、图BF/RK字符串匹配算法、Trie 树 深度/广度优先搜索 第三阶段 7月8日-7月21日 四种算法思想、跳表、拓扑排序Dijkstra算法、A*算法、B+树 第四阶段 7月22日-8月4日 位图、BM、KMP、AC自动机、红黑树 哈希算法、5个实战 二、分计划2.1 第一阶段 状态 专栏章节 章节名称 计划完成时间 实际完成时间 ✅ 03 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗 6月10日 6月12日 ✅ 04 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度 6月10日 6月13日 ✅ 05 数组:为什么很多编程语言中数组都从0开始编号? 6月11日 6月15日 ✅ 06 链表(上)如何实现LRU缓存淘汰算法? 6月12日 6月16日 ✅ 07 链表(下)如何轻松写出正确的链表代码? 6月14日...
GEO类型的使用
发表于2024-06-09|Redis学习笔记| 条评论
一、应用场景基础信息服务(Location- Based Service,LBS)LBS应用访问的数据是和人或物关联的一组经纬度信息,而且要能查询相邻的经纬度范围。例如:搜索“附近的餐馆”、在打车软件上叫车。 二、GEO的底层结构GEO 类型的底层数据结构是用 Sorted Set 来实现的。 2.1 GeoHash编码方法基本原理:“二分区间,区间编码”比如:当我们要对一组经纬度进行GeoHash编码时,我们要先对经度和纬度分别编码,然后再把经纬度各自的编码组合成一个最终编码。比如:我们要对 经度116.37 ,纬度39.86进行编码 对于一个地理位置来说,它的经度范围是 [-180,180]。GeoHash 编码会把一个经度值编码成一个 N 位的二进制值,我们来对经度范围[-180,180]做 N 次的二分区操作,其中 N 可以自定义。我们将 116.37 做5次分区,如图所示 纬度的范围是[-90,90],我们将 39.86 做5次分区,如下图所示:将经纬度各自的编码进行组合,如下图所示: 使用 GeoHash 编码后,我们相当于把整个地理空间分成了一个个方格,每个方格对应...
Redis用来统计的集合
发表于2024-06-07|Redis学习笔记| 条评论
一、常用的集合统计模式 聚合统计 排序统计 二值状态统计 基数统计 二、聚合统计聚合统计指统计多个集合元素的聚合结果,包括: 统计多个集合的共有元素(交集统计) 把两个集合相比,统计其中一个集合独有的元素(差集统计) 统计多个集合的所有元素(并集统计) 当你需要对多个集合进行聚合计算时,Set类型会是一个非常不错的选择。 但是Set的差集、并集和交集的计算复杂度较高,在数据量较大的情况下,如果直接执行这些计算,会导致Redis实例阻塞。建议从主从集群中选择一个从库,让它专门负责聚合计算,或者是把数据读取到客户端,在客户端来完成聚合统计,这样就可以规避阻塞主库实例和其他从库实例的风险了。 举例:统计手机App每天的新增用户数和第二天的留存用户数 三、排序统计Redis常用的集合类型有:List、Hash、Set、Sorted Set,其中List和Sorted Set属于有序集合。 List是按照元素进入List的顺序进行排序的 Sorted Set可以根据元素的权重来排序,我们可以自己来决定每个元素的权重值 在面对需要展示最新列表、排行榜等场景时,如果数据更新频繁或者需...
使用Obsidian配合Hexo写博客
发表于2024-06-07|建站相关| 条评论
用hexo写了二十篇左右文章的时候,发现有时候挺麻烦的。刚开始写的时候,写个markdown,push一下,然后看着 GitHub Actions在那跑,还是挺兴奋的,但是时间长了,就会觉得麻烦。 前两天尝试在语雀上写了两篇,感觉在线编辑器挺好用的,但是同步hexo太麻烦了。而且语雀和Notion都没有本地存储,这让我这个保守派很慌。 最终选了Obsidian,基本没啥学习成本,而且客户端的编辑器也很好用,git设置定时提交,也不用老想着提交代码了,专注于内容本身即可。 主要参考了这篇博客:https://zahui.fan/posts/ldle4xfe/还有这篇:https://uuanqin.top/p/d4bc55f2/index.html 除此之外,还做了两项内容: 图片由本地改为存放在MinIO里 手机端和电脑端都装了 RemptelySync 插件,方便同步到手机查看,用的是坚果云的Webdav。
redirect与forward的区别
发表于2024-06-05| 条评论
springboot国际化配置
发表于2024-06-03|spring| 条评论
TODO:暂时留个坑,待整理好思路再写
Boss软件使用的一些小Tip
发表于2024-06-01|面试| 条评论
一、在线简历的个人描述在线简历200字的个人描述,好好写,boss后台根据此内容打标签,HR会根据标签筛选。 二、主动刷新在线简历需要每天打磨,每天主动更新几个字,重复下简历的自动刷新。 三、求职状态求职状态选择随时到岗、在职月内到岗,这样岗位会优先推荐。 四、打招呼boss上的打招呼一定要真心打,别用默认的提示,太容易重复了,要自己多想几句话,体现自己的诚恳、自己的舔狗、自己的称赞之类的,可以不用自动打招呼的设置。 五、简历曝光有些简历天天24小时曝光也不太好,可以设置为晚上和周末隐藏,白天打开。 六、匹配度简历上别写那种简称,有些HR不懂技术,就看岗位匹配度,是否有匹配的技术词、匹配的要求描述等。 七、回复HRHR和你主动沟通了,一定要回复,别打个招呼就走了,就去看下一个了,HR但凡能回复你任何一个字,你就可以通过boss发送附件简历了,每天也要回看下,哪些HR等你的回复。 八、搜索职位boss有些职位是推荐给你的,大家不能单纯就靠着推荐的数据沟通,自己应该没事就搜索一些职位,也能发现很多没有投递的职位信息,搜索词可以是技术、业务、职位名称、过滤条件等。 九、重视面试机会在投...
面试的一些小Tip
发表于2024-06-01|面试| 条评论
最近读了JavaGuide的一篇文章,是讲面试的,写得挺好的,链接如下:https://mp.weixin.qq.com/s/LgBOVwIAZekevqGMuw_0JA知识星球里作者对此总结了下,现摘录如下: 一、不要等完全准备好了再面试准备个七八成的时候,就可以尽快开始面试了,不要拖!可以先拿非目标公司练练手,查漏补缺下,提高信心。一定不要等准备完全再去面试,不太现实。就算是准备非常久,你去参加面试可能还是会有不会的问题,这很正常。准备六个月,未必效果比三个月好,人的投入,是有边界递减效应的,短时间高效率的准备,也许比拉长战线更有效果。迈出第一步很难,但只要迈出第一步之后,后续都会顺利很多。 二、重视简历一定一定一定要重视简历,持续地完善自己的简历,尤其是投递简历之前和你投递很多公司没有面试之后,要多反思一下是不是简历存在问题,可以找其他人帮忙看一看。即使你已经找到了工作,定期完善自己的简历亦是对自己过往工作的总结,还是非常有必要的。 三、面试遇到不会的问题很正常在面试过程中,遇到不会的问题,首先要做的是快速回顾自己过往的知识,看是否能找到突破口。如果实在没有思路的话,可...
1…5678
avatar
张晓风
文章
78
标签
19
分类
12
Follow Me
最新文章
使用zlmediakit录像2025-06-26
DTM事务学习笔记2025-04-23
计算机网络-第一章笔记2025-03-02
单线复用--家里宽带2025-03-01
计算机网络 - B站学习计划2025-02-12
分类
  • MySQL学习笔记14
  • Redis学习笔记3
  • java3
  • nginx4
  • spring13
  • 工具6
  • 建站相关2
  • 开发相关8
标签
数据结构与算法 websocket nginx spring jira network 软考 docker linux 面试 ldap logback MySQL redis postman git java springboot hexo
归档
  • 六月 2025 1
  • 四月 2025 1
  • 三月 2025 2
  • 二月 2025 1
  • 一月 2025 4
  • 十一月 2024 1
  • 十月 2024 1
  • 九月 2024 5
网站信息
文章数目 :
78
本站总字数 :
53.6k
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2024 - 2025 By 张晓风
苏ICP备2023046043号