《数据结构与算法》学习计划
一、总计划 阶段 学习时间 学习模块 第一阶段 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...
GEO类型的使用
一、应用场景基础信息服务(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用来统计的集合
一、常用的集合统计模式 聚合统计 排序统计 二值状态统计 基数统计 二、聚合统计聚合统计指统计多个集合元素的聚合结果,包括: 统计多个集合的共有元素(交集统计) 把两个集合相比,统计其中一个集合独有的元素(差集统计) 统计多个集合的所有元素(并集统计) 当你需要对多个集合进行聚合计算时,Set类型会是一个非常不错的选择。 但是Set的差集、并集和交集的计算复杂度较高,在数据量较大的情况下,如果直接执行这些计算,会导致Redis实例阻塞。建议从主从集群中选择一个从库,让它专门负责聚合计算,或者是把数据读取到客户端,在客户端来完成聚合统计,这样就可以规避阻塞主库实例和其他从库实例的风险了。 举例:统计手机App每天的新增用户数和第二天的留存用户数 三、排序统计Redis常用的集合类型有:List、Hash、Set、Sorted Set,其中List和Sorted Set属于有序集合。 List是按照元素进入List的顺序进行排序的 Sorted...
使用Obsidian配合Hexo写博客
用hexo写了二十篇左右文章的时候,发现有时候挺麻烦的。刚开始写的时候,写个markdown,push一下,然后看着 GitHub Actions在那跑,还是挺兴奋的,但是时间长了,就会觉得麻烦。 前两天尝试在语雀上写了两篇,感觉在线编辑器挺好用的,但是同步hexo太麻烦了。而且语雀和Notion都没有本地存储,这让我这个保守派很慌。 最终选了Obsidian,基本没啥学习成本,而且客户端的编辑器也很好用,git设置定时提交,也不用老想着提交代码了,专注于内容本身即可。 主要参考了这篇博客:https://zahui.fan/posts/ldle4xfe/还有这篇:https://uuanqin.top/p/d4bc55f2/index.html 除此之外,还做了两项内容: 图片由本地改为存放在MinIO里 手机端和电脑端都装了 RemptelySync 插件,方便同步到手机查看,用的是坚果云的Webdav。
springboot国际化配置
TODO:暂时留个坑,待整理好思路再写
面试的一些小Tip
...
使用liquibase管理数据库变更
项目更新或升级时,总会因为缺失数据库字段导致部分功能无法正常使用。liquibase可以很好的解决这个问题。网上对于其使用有很多例子,但我更喜欢的还是根据sql文件来记录变更。 一、引入依赖1234<dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId></dependency> 二、文件配置2.1 spring配置1234spring: liquibase: enabled: true change-log: sql/changelog.yml enabled 属性设置为true change-log 属性设置sql变更的配置文件 2.2 change-log文件配置1234567891011121314151617181920212223databaseChangeLog: - changeSet: id: init author:...
git commit 代码提交规范
TODO:暂时留个坑,待整理好思路再写