- 博客(194)
- 收藏
- 关注
原创 为什么 torch.nn.LogSigmoid(x) 可以避免 torch.log(torch.sigmoid(x)) 可能存在的 inf
当 x 非常接近 0 的时候,sigmoid(x) 会接近 0,这时候给计算结果取对数可能会导致数值溢出,最终输出 inf,但。相当于这个 cpp 的库函数保证了在数值非常小的时候的精度。当然,还有一种很有趣的写法,来源是。
2023-05-09 21:51:39
660
1
原创 [LeetCode 76] 滑动窗口中的“信号量”
在保证滑动窗口的大框架下,使用类似于信号量的思想,让 t 在初始化的时候“占用”信号量,后面随着滑窗的扩展逐渐调整信号量的使用。
2022-06-27 22:47:35
205
原创 [LeetCode 1094] 差分数组的本质是动态规划
差分数组其实就是动态规划的一个变体,因为对区间的修改最终还是会落实到每一个元素上。而且,这种修改一般是完全相同的,所以差分数组实际上是对状态修改进行了合并,从而优化了动态规划中 DP 数组的修改开销。...
2022-06-24 16:06:07
280
原创 SQL Server 多维数据集无法部署的可能解决办法
防火墙,记得检查一下防火墙SQL Server Browser 服务未启动,安装时默认禁止,需要去 services.msc 里确认一下是否正确启动用户’NT Service\MSSQLServerOLAPService’登录失败可以参考:https://blog.csdn.net/weixin_44293498/article/details/105180822...
2022-03-19 00:31:00
1324
原创 Windows Docker Desktop 无法启动报错 Docker Desktop is shutting down 的可能解决办法
之前有一次 docker 启动到一半的时候电脑蓝屏了,电脑重启之后 docker 就无法启动了,一直报错 Docker Desktop is shutting down。网上查了一下,发现一个可能的解决办法,删除 AppData\Roaming\Docker\settings.json,然后就能正常启动。不过我看了一下 docker 的启动日志,发现有个叫 locked-directories 的文件好像有点问题,所以我索性直接把整个 AppData\Roaming\Docker 目录删了,然后立刻就好了
2022-03-16 13:02:32
14291
6
原创 docker-compose 容器名称中横线(连字符,-)突然消失的问题的可能解决办法
之前写了一个脚本,依赖 compose 起的容器的 name,过了一段时间有人问我为什么跑不起来了,而且报错 no such container,我就用我自己的环境重新试了一次,是完全没问题的,那问题就出在环境上。对比了一下输出,发现两个环境中 docker-compose 生成的容器的名称不一样,在他的环境中,容器名称最前面中的横线(也就是连字符,-)不见了!因为 docker-compose 默认的命名规范是 <project>_<service>_<index>[_
2022-01-17 23:09:29
1843
原创 axios 下载图片和 JSON 出现乱码的可能解决办法
用 axios 下载文件已经是个老生常谈的话题了,但是仍然还是会有一些小坑。本文简单说说使用 axios 下载图片和 JSON 出现乱码时可能的解决办法。没有正确设置 responseType,需要在请求头中正确设置 responseType。构造 Blob 时没有指定正确的 type。通常服务端会返回二进制流,如何正确接受二进制流是个问题。直接贴代码吧,这段代码的通用性会稍好一些,只不过使用了 ES6 以后的语法,需要处理:const {data: imageBlob, headers} =
2021-12-29 17:27:27
1504
原创 2021-08-06 Week3 YOLO与YOLOX,CV中的目标检测
CV领域中目标检测的成果。You Only Look Once: Unified, Real-Time Object Detection此前的研究都是将目标检测看作分类问题,本文创新地将目标检测看作回归问题。写了半天,发现这篇文章作为经典之作,前人已有很好的解读了。自惭形秽之下,决定直接引用别人的文章。https://zhuanlan.zhihu.com/p/31427164https://blog.csdn.net/u010167269/article/details/52638771相较
2021-08-07 23:13:11
224
原创 2021-07-23 Week1 基于截图的钓鱼网站检测、中小微企业安全现状调查
Phishpedia: A Hybrid Deep Learning Based Approach to Visually Identify Phishing Webpages使用机器学习方法,利用屏幕截图,检测钓鱼网站。过去的方法,要么是准确率低,要么是缺乏解释性。该方法在准确率的同时提供了解释性,并且不需要大量的钓鱼网站作为训练集。检测分为两步:识别UI组件 + 识别商标brand。识别UI组件第一个是基于HTML,第二个是基于和目标网站的对比,但识别商标是个很麻烦的事,作者认为只需要关注top
2021-07-24 11:12:02
634
1
原创 从418 I‘m a teapot想到的
下午不知道咋回事就想到了这个状态码,突然好奇有没有人用,就简单了解了一下它的来历,以及思考了一下它的使用场景。事实上,418甚至都不算是一个HTTP的状态码。它来源于当年的一个愚人节玩笑,所谓的“超文本咖啡壶控制协议”,Hyper Text Coffee Pot Control Protocol。在这个协议里规定了两种错误状态码,一种是406 not acceptable(当然,含义与HTTP的不同),另一种就是这次的418 I’m a teapot,表示服务器是一个茶壶,不能煮咖啡。这当然是一个玩笑
2021-07-20 19:25:08
3983
1
原创 Python raw string并不是“原始”字符串
前两天处理字符串的时候,因为需要做一些字符转义,比如说要把原字符串中所有的单引号前面加个反斜杠,给反斜杠前面再加个反斜杠啥的。一开始想着是这么写:s.replace("'", "\\'").replace("\\", "\\\\")后来觉得反斜杠太多了,实在不太美观,就想着能不能用raw string来代替:s.replace(r"'", r"\'").replace(r"\", r"\\")但是这个是会报错的,而且还是语法错误,SyntaxError: unexpected character
2021-07-19 09:49:06
620
原创 Vue项目使用terser-webpack-plugin打包报错TypeError: Cannot read property ‘javascript‘ of undefined的原因和可能的解决办法
最近滚回去干老本行了,写了一点前端;重新写前端的感觉还是有点陌生。废话不说了,直接进入正题。复制了之前的配置文件然后建了一个新项目,按照惯例,过程管理的工具可以没有,但是关乎性能的压缩工具是不能没有的。全部准备好了之后却发现无法打包,报了标题里的这个错。网上查了一下,发现直接 npm install -D terser-webpack-plugin 装的是最新版的 terser-webpack-plugin,版本是 5.1.4(截止写这篇文章的时候)。5.x是为webpack 5准备的插件,而使用vue
2021-07-08 10:32:33
4821
原创 python字符串format报错KeyError的可能原因和解决办法
虽然说Python现在有f开头的字符串用来格式化了,但是出于习惯,以及在部分场景下,比如需要混合使用原始字符串(raw string)的时候,感觉还是format函数好用。这次写的时候遇到了奇怪的KeyError。我一开始是这么写的:s = r'''function foo() { printf("{}");}'''.format(arg)但是这样会报错。后来发现,因为format自己用大括号作为占位符,如果字符串里本身有大括号,还得转义一下。具体怎么转义,就是用两个大括号,所以应该改成
2021-06-03 21:26:22
8638
2
原创 Fedora 32 遇到 Please install libstdc++-devel package for m32 的可能解决办法
感觉可能rpm-based的发行版都有类似的问题,倒不一定局限在Fedora。今天在用一个基于 cpp 做的测试工具的时候遇到了这个问题,但是事实上libstdc++ -devel包是已经装了的。后来发现libstdc++ -devel包不支持32位……还需要额外装一些包才能支持32位编译:sudo yum install glibc-devel.i686 libgcc.i686 libstdc++-devel.i686 ncurses-devel.i686...
2021-05-24 15:23:40
417
原创 从反转二进制位中的位运算分治到不同语言的移位操作
反转二进制位其实是一个很简单的问题,比如说反转一个32位无符号整数的二进制位,从 0101 变成 1010(注意这里是无符号的)。这个问题本身的复杂度是很低的,即使是用最直觉的算法,也无非是 O(k)O(k)O(k),也就是数字的位数,一位一位地反转。我随便写了一个:class Solution: def reverseBits(self, n: int) -> int: res = 0 for i in range(32): res
2021-05-11 23:31:30
186
原创 macOS LaTeX 提示Package fontspec Warning: Font “STSong“ does not contain requested Script “CJK“的原因
这是一个很有意思的问题,起因是用论文模板,在Windows上编译没有问题,但是在macOS上编译的时候报了这个warning。我一开始以为是没有这个字体,后来检查了一下,发现这个字体已经安装了,并且也重启了电脑,一时间摸不着头脑。后来网上查了一下,看到一个解释,STSong(华文仿宋)是TrueType的字体,而Script是OpenType才有的内容,所以会报这个warning;事实上是不影响使用的。参考链接:https://tex.stackexchange.com/a/385827...
2021-05-11 22:58:41
6910
4
原创 随便谈谈粒度、抽象与复用
看到一个很有意思的粒度的定义:granularity = grain + clarity,粒度 = 颗粒 + 清晰。也就是说,粒度越大,代码的“颗粒”越模糊,越接近一个逻辑上的概念;粒度越小,代码的“颗粒”越清晰,越接近具体的实现。我通常认为“颗粒”是一个组件,不过在这里还是用单元这个概念来称呼吧,避免无谓的名词上的争论。事实上,“颗粒”这个概念暗示了它的自治性,每一个单元都应当是独立于其他部分的。同时,“清晰”这个概念暗示的是它的抽象层级,粒度越粗的单元的抽象程度越高。粗粒度的单元往往代表着很高的抽象
2021-05-09 17:05:10
952
原创 动态规划随笔
DP本质上还是一个状态机,而且还是一个单向的状态机。先不管什么重叠子问题和最优化问题,只说他的本质,就是一个对所有状态间可能存在的转移的枚举,然后以n维向量的形式表示出来。这是一个memo。沿着某一个“方向”,记录所有枚举的情况,然后得到答案。这个方向,在LCS里可能是字符串的下标,在股票问题里可能是天数,在楼梯里可能是上楼的过程(往上),在fib里可能是数字增大。当然这也体现出fib不算DP,只是一个memo,因为他没有可选的转移,每次只有一个选项。DP也可以看成是逆向的递归。因此,DP的过程不一定是
2021-05-04 16:01:10
152
原创 重读浙大版《概率论与数理统计》
以下内容仅针对教材内容,而不是关于这门学科;这学科我是真没搞懂。核心想法:发现数据中统计上的规律(概率、分布……),并试图进行预测(参数估计、假设检验……)这大概就是这门学科能成为机器学习的核心的原因之一,因为这和机器学习的任务是相同的,学习数据的特征,并且进行预测整体思路:单变量 - 多变量,小数据 - 大数据特征概率书中似乎只考虑了单变量场景。本质是基于频率的,需要独立性。如果不独立,那需要考虑事件共现,就不是单变量了。古典概型条件概率:全概率公式、贝叶斯公式分布离散型:分布律
2021-03-17 21:59:40
524
1
原创 Ubuntu 16.04 安装 Python 3.8 并设置为默认 Python
虽然现在已经是 2021 年了,但 ubuntu 16 还是有人用,谁让有些遗留系统非得在上面运行呢……配环境次数多了也有点烦,干脆就记录一下配置方法,也方便以后查询。其实安装很简单,麻烦的是配套的一系列工具。安装 Python 3.8:# 安装sudo add-apt-repository ppa:deadsnakes/ppasudo apt-get updatesudo apt install python3.8python3.8 --version# 设置为默认 Python 3su
2021-02-16 16:30:12
3388
7
原创 sleep、hibernate 和 hybrid sleep 的区别
祝大家新年快乐!很久没写文章了,科研不科研的其实还是个借口,根本原因还是自己太懒了,新年要有改观,从重新写博客开始。本来在 1 月底写了一篇吐槽文,但是因为写得不太正能量,不符合我写博客一贯的风格,就没发出来,所以今年 1 月份就空缺了。稍微有点遗憾吧,不过也无所谓了。今天装了个 kali linux,感觉界面还挺好看的,符合我的审美。然后在关机的时候,发现有好几个选项,sleep、hibernate、hybrid sleep,用多了 Windows 的我只知道有一个睡眠,第一次听说让电脑休眠还有这.
2021-02-11 17:23:52
3051
2
原创 Ubuntu 18.04 安装 CMake v3.17.5
之所以不装最新版的,是因为最近用 clion,想搞个 remote toolchain,但是只支持到 3.17.x,所以就装个 3.17 里最新的。只是让我比较意外的是,装这玩意都能有坑……其实安装方法网站上已经说得挺清楚了,这是从源码编译的方法,进入源码根目录,然后:./bootstrap && make && sudo make install主要是我对预编译的二进制文件失去了信任,还是得自己上手编译一下才能放心,所以就用了这种方式。但是这么安装有个问题,他会默认
2020-12-10 22:46:46
1412
原创 随便谈谈 HTTP 的 201 204 205 状态码
最近在给某个组设计一套基于 REST 的接口规范,重温了一遍 HTTP 的状态码,然后发现了几个很有点模糊的状态码,稍微想了想,略有所得,就拿出来随便谈谈。其实纠结 HTTP 状态码的含义是很有点学院派的意思的,就我的观察,大部分人成功就是 200,出了错就是 500,顶多自己封装一个返回值,加点报错信息啥的;而且在大型组织里很可能还会有组织内的自定义错误码,直接结果就是弱化了 HTTP 状态码的语义:反正我只需要知道调用是否成功,自然会有其他信息来具体描述调用过程。自定义错误码倒还好,封装返回值其实就
2020-11-23 19:25:59
6750
原创 在 spring cloud config server 中使用 ssh 连接 git 仓库
最近没怎么写博客,短期内可能也不怎么写了,主要是因为改行了,我也没想到有一天会去做科研。等这个微服务项目结束后,我可能就会暂时告别业务开发;思之不免有些唏嘘。也许我可以在这里记录我的科研心得。但是科研笔记这种东西,也不是我藏私,实在是不知道从何写起,零零碎碎的一些感想,拿出来分享也没啥用,不能落地的想法也就是想法罢了;而能落地的想法全部都体现在论文里了。他日我若有幸发表论文,将在此敬告诸君,分享我的快乐。因为用 username 和 password 连接git仓库的方式不是很好(主要是经常会不小心
2020-11-14 21:09:58
1188
1
原创 display:inline 真的兼容所有的浏览器吗?
CSS 的 display 属性于 1996 年的 CSS 1 规范中提出,所以支持 CSS 并且按照标准实现的浏览器都应当支持该属性。以下摘自W3C:Microsoft released Internet Explorer 3.0 on August 14, 1996. It is the first commercial browser that supports CSS.在此之前的商业浏览器不支持 CSS,也就谈不上对 display 属性的支持。所以,display:inline 不兼容
2020-10-19 09:42:15
1407
原创 构建跨硬件架构(multi-arch)的docker镜像
有时候我们希望构建出来的镜像能够在不同硬件架构的机器上运行(主要是 arm 架构),这样能更好地应对异构的分布式环境的需求。在之前,通常的解决办法是准备多台不同硬件架构的机器,并且分别进行编译和分发工作,但是现在 docker 提供了一个新功能 buildx(虽然还是实验性的),能够很好地解决这个问题。关于 buildx 的介绍可以查阅相关资料,在此不再赘述。如果需要在本地运行,可以参考这篇文章:BUILDING DOCKER IMAGES FOR KUBERNETES RUNNING ON ARM。但是
2020-10-18 16:02:18
1725
原创 docker运行容器报错standard_init_linux.go:211: exec user process caused “exec format error“的可能解决办法
这个问题主要是由不兼容引起的。主要包括几种不兼容:硬件架构不兼容。在 amd 和 arm 架构下构建的镜像很有可能不能互通。解决办法:针对不同的硬件架构构建不同的镜像,或者构建跨架构(multi-arch)的镜像。shell 执行不兼容。脚本可能是基于 bash 写的,不同的 shell 解释器存在不兼容的情况,而有些 Linux 发行版可能没有 bash,或者默认的 shell 解释器不是 bash。解决办法:在 shell 脚本的开头指定需要使用的解释器,比如#!/bin/bash,并且
2020-10-18 15:45:43
33954
原创 [LeetCode 19] 删除链表的倒数第N个结点
其实还算比较简单的一个题。链表往往会和双指针绑定在一起。因为链表这个数据结构的特点,并且链表长度未知,不太可能会有小于 O(n)O(n)O(n) 的解法出现。function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null { let slow = head, fast = head, last = null; while (n) { fast = fast!.next; --
2020-10-06 17:02:10
170
原创 HTML 元素的 id 真的不能为纯数字吗?
先说结论。这个问题的答案视 HTML 的版本而定:如果是 HTML 4,这个问题的答案是“是”;如果是 HTML 5,这个问题的答案是“否”。事实上,H5 规范并没有规定 id 不能为数字。以下摘自 H5 规范:There are no other restrictions on what form an ID can take; in particular, IDs can consist of just digits, start with a digit, start with an u
2020-10-02 20:47:13
3511
原创 spring boot + feign + eureka部署后服务无法调用的可能解决办法
接着前面两篇继续。在本地部署运行正常之后,我把 eureka server 和 provider 部署到了服务器上。然后之前出现过的错误又再次出现了……按照顺序去排查,首先是网络不对,请求被发到了一个莫名其妙的网络上(参考之前 docker 莫名其妙把 hosts 改掉的事情),发现 eureka 默认会把请求发到服务的 hostname 上,这个行为有好有坏吧,在内网环境下或者有容器网络的情况下是好事,但是在现阶段的零零碎碎的公网 IP 直接调用的情况下就不是很好。所以改一下配置:eureka:
2020-09-30 20:11:38
1489
原创 spring boot设置active profiles的一个小坑
传统的配置文件写法是 properties ,但可读性太差,所以最近换成了 yml,并且按照官方文档配置了 profiles,也就是类似于 application-prod.yml 这种不同运行环境下的配置文件。我一开始是这么运行的:java -jar dist.jar -Dspring.profiles.active=prod但是在运行的时候一直不行,总是启动默认的配置。后来看到文档上写的,应该这么运行:java -jar dist.jar --spring.profiles.active=pro
2020-09-30 12:13:15
1007
原创 spring boot + feign + eureka报错Load balancer does not have available server for client的可能解决办法
接着上一篇。解决了上一个问题之后,好景不长,又报了一个新错误 Load balancer does not have available server for client。我看网上大部分都说是服务名称写错了,检查一下 feign 里的 name 写得对不对,但我确实没写错。后来发现,eureka 的配置是这样的:server: port: 8000eureka: client: register-with-eureka: false fetch-registry: fal
2020-09-30 00:09:07
2211
原创 spring boot + feign + eureka报错java.net.SocketTimeoutException: connect timed out的可能解决办法
身为前端,这次被迫写后端,体验属实不好,到处踩坑。不过有啥办法呢……按照网上的教程配了一个 eureka server,一个 provider ,一个 consumer ,在 eureka 里看两个服务都活得挺好,然后直接调 provider 也能调通,但是从 consumer 里用 feign 调 provider 就是调不通,一直报错java.net.SocketTimeoutException: connect timed out。查了很多资料,一直不行,主要是这个报错也没啥指导意义。后来看到.
2020-09-29 23:27:39
1695
转载 package.json中版本号前面~和^的区别
指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。波浪号(tilde):比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变大版本号和次要版本号。插入号(caret):比如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来.
2020-09-28 19:47:29
3839
1
原创 前端做题家之JavaScript
最近精神状态不太好,没心思写博客。前段时间听说了牛客网,看到上面全是面试题,虽然并不打算找工作,但是做题家的属性觉醒了,就每天做点题玩一玩。虽然我一直自诩“语言律师”,但是看到这些刁钻的面试题,还是有点应付不过来……不过,今天已经把JS的技能值刷满了,稍微有点心得,想了想觉得还是写个博客,摘录一些我觉得比较有意思的题目。名义上是JS的题目,其实并不完全是,还是有一些别的领域的内容。如果不给cookie设置过期时间会怎么样?会在浏览器会话结束时过期。事实上,我还真没试过……不过我倒是想到了sess
2020-09-27 20:32:08
408
原创 Ubuntu 18.04 安装docker(简略版)
看一下芯片架构:uname -ax86amdarm(aarch)看一下系统版本:lsb_release -a根据不同的芯片架构和系统版本,配置国内Ubuntu源如果不介意网速慢,可以跳过这一步建议选择中科大源、清华源或者163源,因为华为云可能会对阿里源限速按照docker官方文档进行安装,记得选择正确的芯片架构参考链接:https://docs.docker.com/engine/install/ubuntu/如果出现类似于 Unable to locate ..
2020-09-11 23:59:15
855
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人