二分查找的边界设定
本文中下标均从000开始,len为数组的长度。 边界值left和right的初始值 例如在有序数组中查找指定值的下标时,可能的结果范围为[0,len−1][0, len-1][0,len−1],因此初始化时应该使用: 1int left = 0, right = len - 1; 但在查找插入位置问题(在有序数组中,找到插入指定值target的下标)中,边界的下标取值范围是[0,len][0, len][0,len],即len也在取值范围中,因此初始化时应当设置: 1int left = 0, right = len; 计算mid值 为了避免溢出,计算mid通常使用: 1int mid = left + (right - left) / 2; 缩小边界 通常需要使用一个if...else...语句来改变边界,最方便清晰的方法,是将arr[mid] < target、arr[mid] == target和arr[mid] > target三种情况分别写出。 例如,在查找插入位置问题中,我们需要找到第一个小于等于target值的位置,这时可以考虑几个条件: arr[mid ...
将Bing国际版设置成默认搜索引擎
访问Bing国际版 在国内访问https://bing.com会自动跳转到https://cn.bing.com,直接访问国际版网站https://global.bing.com也会被跳转。 但可以通过指定url参数,通过https://global.bing.com/?mkt=en-us访问国际版Bing而不会跳转,其中mkt参数表示market,即必应搜索提供的市场区域,根据需求也可设置成其他值,例如ja-JP等,微软在官方文档中对这一参数解释如下: The market where the results come from. Typically, mkt is the country where the user is making the request from. However, it could be a different country if the user is not located in a country where Bing delivers results. The market must be in the form -<country/re ...
在VS Code中配置LaTeX环境
创建新文件夹 创建一个新文件夹,这个文件夹用来存放Latex代码 在Visual Studio Code中打开刚刚创建的文件夹 安装Latex插件 如果已经安装过插件了,可以跳过这一步 点击左侧工具栏中的插件入口(图中左侧红框),搜索latex,安装LaTex Workshop插件 创建Latex代码文件 点击按钮,创建新文件,命名时使用.tex作为后缀,然后回车确认 在左侧文件列表中双击打开刚才的tex文件,就可以在左侧工具栏看到TEX按钮 配置使用xelatex 在VS Code中,通过Ctro+Shift+P, 输入settins json, 选择Preferences: Open Settings (JSON) 在打开的文件中,添加以下代码(应该添加在最后一个花括号}的前面,并在前一项的后面加上一个英文逗号,) 1234567891011"latex-workshop.latex.tools": [{ "name": "latexmk", "comm ...
解决Requests库编码问题
HTTP标准中默认的编码格式是ISO-8859-1,当响应头中未指定charset时,requests库就会使用默认编码进行解码。 但一些网站并未遵循此标准,在不提供charset字段的同时未使用默认编码,就会导致requests编码错误。 所以,当编码是默认的ISO-8859-1时,就有检查网页真正编码的必要。 首先使用get_encodings_from_content函数得到相应的真正编码,它会使用正则表达式的方式,从响应内容中探测编码(如HTML head中的meta)。 如果通过上述方法并未成功,还可以通过apparent_encoding方法,通过响应的内容来探测出编码。 下面时代码示例: 123456789if r.encoding == 'ISO-8859-1': encodings = requests.utils.get_encodings_from_content(r.text) if encodings: encoding = encodings[0] else: encoding = r.app ...
Godot游戏框架踩坑记录
前言 毕设中使用Godot框架时遇到了一些问题,本文只对部分问题和解决方法做简要说明,而不对解决过程进行详细描述。 音频 因为版权问题,Godot不能导入mp3格式的音频,可以将音频考虑转换为ogg格式后导入。 播放 AudioStreamPlayer适合用来播放BGM,AudioStreamPlayer2D、AudioStreamPlayer3D播放时声源带有位置信息,会出现左右声道不一致的问题。 音量控制 每个AudioStreamPlayer可以将音频绑定到某一个Audio Bus中,可以控制Bus的音量。 AudioServer.set_bus_mute(AudioServer.get_bus_index("Master"), mute)可以使MasterBus静音。 循环 导入音频文件时,设置导入的loop属性为true或false来控制循环与否。 注:loop是import的属性而不是AudioStreamPlayer的属性(可以观察到loop出现在import文件中),通过代码设置loop属性的方法为: $ActionPlayer.stream. ...
Nginx常用配置
检查配置文件 使用sudo nginx -t测试配置是否正确,同时查看配置文件位置,一定要使用sudo,否则因权限不够显示测试失败。 反向代理WebSocket 说明 WebSocket不同于HTTP协议,但WebSocket的握手过程是和HTTP兼容的,通过HTTP的Upgrade特性将HTTP连接升级为WebSocket连接,这个过程中利用了Upgrade和Connection请求头。 在Nginx中要明确的设置Upgrade和Connection,才能进行WebSocket长连接。 123456789101112131415server { server_name ws.example.com; location /ws/ { proxy_pass http://127.0.0.1:8080/ws/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }} 参考 NGINX as a WebSocket Proxy ...
JavaFX 学习笔记——窗口与控件
前言 如今比较流行的桌面gui框架有WPF、WinForm、Qt、javafx等。其中WPF和WinForm目前还只能在运行Winsows上。Qt(widget)是一个很强大的跨平台C++框架(不只是UI),但用C++写界面实在有点蛋疼,且编译出来的体积很大。 JavaFX是基于JAVA的开源桌面框架,笔者曾学习过Qt,打算尝试使用Java写桌面应用,现在网上关于JavaFX的教程不时很多,因此在这里记录一下学习过程。 安装和配置 JavaFX11的环境不包括在JDK中,因此要在配置好JDK11的基础上单独配置,具体方法可以参考JavaFX官网。 窗口构成 新建工程,在Main.java中输入下列代码: 123456789101112131415161718192021public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ VBox layout = new VBox(); ...