1 过滤1000个违禁词消耗内存对比前言此处假设违禁词都是由小写字母组成的单词 实际上违禁词的字肯定不止26个小写字母, 我目前想到的是用Set存储每个指针 但不管如何, 实际情况中布隆过滤器节省的内存肯定远不止下面计算所得
前缀树(Trie)的内存消耗前缀树的每个节点通常包含以下内容:
一个固定大小的数组(假设只有小写字母,每个节点有26个指针)
一个布尔值或其他标记来指示该节点是否是一个完整单词
假设每个指针占用8个字节(64位系统)和每个布尔值占用1个字节:
每个节点的内存消耗:
数组:26 * 8 字节 = 208 字节
布尔值:1 字节
总计:209 字节
节点数估算: 对于一个前缀树,每个词条大约创建的节点数取决于树内对应的公共前缀的长度。这里取最好情况即1000个词条只需要创建1000+n(单词长度)个节点(即所有单词只有最后一个字母不一样) 。
总内存消耗:
1000+n 个节点 * 209 字节 ≈ 209,000 字节 ≈ 209 KB
布隆过滤器的内存消耗布隆过滤器的内存消耗主要取决于位数组的大小和哈希函数的数量。假设使用合适的哈希函数数 ...
7.1442. 接雨水 - 力扣(LeetCode)REVIEW
双指针dp 说真的想不到能这样dp 左dp一遍最高右遍历一遍最高
12345678910class Solution { public int trap(int[] height) { int []dpL=new int[height.length],dpR = new int[height.length]; int ans = 0;dpL[0] = height[0];dpR[height.length-1] = height[height.length-1]; for(int i=1;i<height.length;i++) dpL[i]=Math.max(dpL[i-1],height[i]); for(int i=height.length-2;i>=0;i--) dpR[i]=Math.max(dpR[i+1],height[i]); for(int i=0;i<height.length;i++) ...
7.7433. 最小基因变化 - 力扣(LeetCode)图的广度优先遍历的题大多都是用队列存储每轮搜索到的结点,再用一个visited记录已经搜索过的结点 理解了其实思路都差不多
123456789101112131415161718192021222324252627282930313233343536class Solution { public int minMutation(String startGene, String endGene, String[] bank) { if (startGene.equals(endGene)) {return 0;} Set<String> visited = new HashSet<String>(); Set<String> bankSet = new HashSet<String>(Arrays.asList(bank)); if (!bankSet.contains(endGen ...
Mybatis-Plus 的默认 Insert 方法不支持 SQLite 主键id自增后返回id写毕设项目的时候遇到的 需要插入一条新的记录然后返回新记录的主键id 这个id是自增的
然后发现Mybatis-Plus的默认Insert方法不支持这个操作 可以插入但是不能返回自增后的id
后来用事务解决了:本来用SQLite就是考虑到项目的数据量较小才用的 所以直接用串行化在插入操作之后查询SELECT last_insert_rowid()获取刚刚插入的记录的id字段
上网查了一下似乎改一下sqlite-jdbc的版本就能解决?不过我没试过:sqlite-jdbc版本导致插入数据自增id问题
CentOS SQLite临时文件溢出
明天着急检查 先用 rm -rf /tmp/sqlite-jdbc-tmp* 指令删了再说 之后再找溢出原因
力扣刷题bug117. 填充每个节点的下一个右侧节点指针 II - 力扣(LeetCode)
碰到个bug 力扣给的Node的构造函数是这样的:
123456789"""# Definition fo ...
6.28199. 二叉树的右视图 - 力扣(LeetCode)层序遍历后每层取最右边的结点储存
1234567891011121314151617class Solution { public List<Integer> rightSideView(TreeNode root) { List<Integer> ans = new ArrayList<Integer>(); if(root==null) return ans; Queue<TreeNode> queue = new ArrayDeque<TreeNode>();queue.add(root); while(!queue.isEmpty()){ int len = queue.toArray().length; while((len--)!=0){ TreeNode treeNode = q ...
前言前排提醒:绑定cookie可能会有未知风险
前排再次提醒:网易云音乐cookie可能会过期,更换新的cookie就好
anzhiyu主题自带的音乐馆使用了metingJs插件来提供音乐播放器的功能, 但是metingJs默认提供的API有抽风/下线/跑路的风险, 而且最重要的是: 听不了VIP歌曲
部署自建metingJs-api并添加有VIP权限的账号的cookie就能解决上面的问题
1 Vercel部署MetingAPI首先点击下方链接去Vercel部署项目:
Vercel部署Meting
填好名字后点击Create创建项目:
之后点击Add Domain查看接口url,注意Vercel在国内被墙了,想要在国内访问的话需要绑定自己的域名:
到此Vercel部署MetingAPI已成功
2 获取网易云音乐账号cookie注意:cookie就是你的账号,所以不要泄露出去
登录网易云网页版并随便点进一首歌,按F12后找到下面的Cookie:
将cookie字段的字符串全部复制备用(这里我不知道哪些是要用到的字段所以就全部复制了,如果你知道可以只复制指定的字 ...
24.6部署Meting-API为了解决音乐馆不能播放收费歌曲的问题,自己部署了Meting-API
详情见 Vercel部署Meting-API并添加网易云cookie
跟普通调用Meting-API最大的区别是可以添加自己网易云的cookie实现加载VIP歌曲
(截止25年8月 目前还没发现有什么问题)
搭建Github图床Vercel + Github 搭建,免费省心好用,且不需要服务器,就是要小心GitHub仓库炸了。。。
话说这俩真是网络大善人啊orz
24.7更新live2d看板娘更新了右下角的看板娘
模型是从某个邦邦解包网站毛的,我自己偷偷用应该不会被告吧。。。?
网站备案国内网站直接访问需要备案,服务器解析到域名也要备案,前后花了大概10天弄好了
25.7取消网站备案发现备案网站没有卵用还要每年续租服务器,Vercel解析自己域名后国内也能看,反正扑街网站没啥流量,怒而取消
25.8更新在线MD编辑器MD编辑器引入参考:为博客加入一个好用的在线MD编辑工具 DebuggerX's Blog
做了一点点个性化的更改
优化博客图片上传PicGo配置插件picgo-p ...