总述
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。–wiki
最近阅读了redis的部分源代码,这里是我初读时的一些笔记和感受。应该会随着时间不断更新。
1.哈希表的自动扩容Redis用变量dict_can_resize记录哈希是否可以自动扩容,由两个方法 dictEnableResize()和dictDisableResize()设置该变量。
dictExpand()进行扩容时,会先选择一个满足size需求的2的指数,然后分配内存空间,创建新的哈希表。
这与C++ STL中的vector扩 ...
1.第一天的一道题
答案里求解时取了一个完整实心柱体来列方程,得到了一个一阶微分方程。
但是,我以一个薄圆柱壳来列方程,得到的是二阶微分方程。
我觉得我的过程并没有什么问题,因为《难题集萃》上有道类似题也是像我这样得到的是二阶微分方程。
2.在太空中,水会漂浮成为一个水球。不用量纲分析,求施加微扰后水球振动频率。(某届复赛题)
我尝试使用能量法来解,表面能可以勉强写出来,但是动能真的不知道怎么写
3.源自日本某学校自主招生题:如图一,杆ab斜靠在墙角,其受重力而倒下。已知初始oab=30度,逐渐倒下时当oab为60度时,求杆扫过的面积(如图二,很诡异的图形)
仔细观察,你会发现图形的上边界是有弧度的,如果角度变化的夸张些,上边界会变成下面这样子:
4.一个质量为m的均匀圆柱的底面始终与地面接触,初始时质心以v速度平动,且圆柱绕轴以Ω角速度转动。已知重力加速度g和摩擦系数μ。求圆柱底面所受滑动摩擦力的合力大小与方向。(列式子后不知道怎么解)
5.两个圆环如图对称放置,求二者引力大小
6.一道争议题,第三问提供了两种做法,答案不同
做法一
做法二
可以解释一下为什么 ...
Bootstrap的dropdown-menu组件提供了下拉菜单的全部功能。
但需要注意的是,使用它需要在bootstrap.js之前引入popper.js,否则点击按钮时会出现js找不到某个函数的错误。
12document.write("<script src=" + parent.__dirname + "/libs/popper-2.11.2.min.js" + "></script>");
附:官网中对这一内容的叙述(纯英文)
Dropdowns are built on a third party library,Popper, which provides dynamic positioning and viewport detection. Be sure to includepopper.min.jsbefore Bootstrap’s JavaScript or usebootstrap.bundle.min.js/bootstrap.bundle.jswhich co ...
我使用Math.random() * 1e9作为某类元素的唯一id,所以这些元素的id一般长这样:
12id="toast196052045.92534143"
jquery选择器将无法正确识别这样的id,我猜测可能因为中间的小数点会被误认为类的标识。
而且更致命的是,控制台不会报错!
12var id = Math.floor(Math.random() * 1e9);
Math.floor()可以很好解决这一问题。另外,parseInt()函数虽然同样可以解决问题,但是它是为了转换string来设计的,为了代码的规范性还是少用来操作纯数字。毕竟谁都不想让自己的程序变成下面这样子:
春节将近,为了完成我给小木盒定下的开发目标,我准备采用bootstrap的toast组件来完成pop通知
我使用js操作HTML,给通知的关闭按钮动态注入js代码,遇到了奇怪的一幕
经过漫长的探索,解决办法如下
12var onclick = "onclick='$('#toast').remove()'";
由于html中,双引号的优先级大于单引号的优先级,我们可以借助js中的斜杠转义来在字符串中实现双引号。
把上面的代码替换成:
12var onclick = "onclick=\"$('#toast').remove()\"";
HTML识别问题完美解决。
开启我的electronAPP时,devtool出现“$ is not a function”报错。
解决方案:
在jquery引用后插入如下代码段
123<script type="text/javascript" src="./libs/jquery-3.6.0.min.js"></script><script>if (typeof module === 'object') { window.jQuery = window.$ = module.exports; };</script>
问题解决。
某天,我在npm上安装了asar模块。
今天下午竞赛课摸鱼,无聊拿它来对一个使用electron开发的教学软件(就是那个洋葱数学)进行asar解包操作。
控制台输入如下:
12$ asar extract [src] [dst]
其中,dst我定义为“F:\Program Files (x86)\洋葱学院\resources”
但当extract操作完毕,我却没有找到提取后的文件夹。
我只能一通乱翻。
本该出现在Program Files (x86)里的文件,出现了一个叫Program的文件夹里。
大胆猜测一下,asar或者nodejs可能无法正确识别含有某些特殊字符的目录地址(Program Files中间的空格!);或者windows的命令提示符会把空格认为是参数的分隔符。
看来这个Windows的设计缺陷确实容易坑不少人。。。
参见pansz大神的回答:
为什么 Windows 系统 Program Files 这个经常用来装软件的目录,名称中有个空格?
考虑到某些模块的正常运行离不开伪造http请求标头来欺骗服务器,以获取上面的某些敏感数据。
准备做一个应用内的定制版下载管理器,来承接各个模块可能需要触发的下载任务。
整个分支工程的框架大体如下:
一、外置下载引擎的可行性论证与选择优秀的下载器motrix使用aria2作为其内核,支持断点续传和多进程下载。但因其技术文档难以寻找,我打算使用常见的request模块来下载文件。以后若有时间,我会把aria2也集成进去。
二、下载逻辑以及代码编写1.作为一个独立对象储存在./insert/buildInDownloader
2.文件树目录结构:
3.下载原理:
创建写入流 fs.createWriteStream
get方法请求文件 request.get(options)
在request请求的回调函数中获取文件大小并设置length参数 length: response.headers[‘content-length’]
设置好length参数之后再重新request请求文件(否则无法获取length参数,进度信息会有误)
将request请求到的文件流pip ...
如果服务端不允许页面iframe嵌套,本地chromium会拦截iframe的load请求来阻止访问。
结合经验,我想到了如下解决方法来强行绕过这个检测:
我在初次研究ajax的时候发现了如果把xmlhttp指向任意一个非下载资源页面时,请求到的响应数据将是该页面的源代码。
我们可以把获得的网页源码直接通过document.write写到页面里。
利用这个feature,代码如下
12345678var xmlhttp = new XMLHttpRequest();xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.write(xmlhttp.responseText); }}xmlhttp.open("GET", "https://mathsolver.microsoft.com/zh", true) ...
寒假回校后,我把开发环境从家里电脑的win10切换到了学校的win7,不知道什么原因,本来可以正常运行的remote模块突然出现异常。
console信息:
1234renderer.js:443 Uncaught TypeError: remote.getCurrentWindow is not a function at applySettings (renderer.js:443:14) at renderer.js:458:19
重装模块与electron均无解。
查找原因两天之后,
通过翻找remote模块的package.json,我发现main字段默认指向renderer/index.js
遂将渲染进程中的
12var remote_path = path.join(__dirname + '/remote/main');
修改为
12var remote_path = path.join(__dirname + '/remote/renderer');
经检验,运行正常。
在此之前,这错误从未发生过。这 ...







