博客 (306)

截止 2024 年 9 月,CZDB 数据已支持 JAVA、PHP、C、Node.js、Python 语言解析,但官方迟迟未推出 C# / ASP.NET 的版本,于是我参照前面几种语言版本写了 C# 版,支持 IPv4 与 IPv6,实测查询速度,CZDB 版的 MEMORY 模式比原来的 DAT 版数据库快数百倍(具体要看磁盘和内存的读写速度)。能够有效降低 CPU 的使用率,特别是在需要频繁查询 IP 属地的应用场景(譬如每个 HTTP 请求都要判断 IP 属地来决定是否允许访问)。

我要试试→

源代码已提交给纯真官方,相信很快就会有官方版本的 SDK。

xoyozo 1 年前
2,322

要将一个服务公开给外部访问,必须开放端口,例举一些场景的端口映射:

  • VMware 实现宿主机端口映射到虚拟机端口:

    打开 VMware 的菜单中的 编辑 - 虚拟网络编辑器,

    在弹出窗口中表格中的选中“NAT”项,点击下方的“NAT设置”(若无法操作需要先点击“更改设置”允许)

    在“NAT设置”中“添加”,填写主机端口和虚拟机端口、虚拟机IP地址。

    这样,宿主机就能访问到虚拟机中的服务了。

  • 在 Windows 11 的防火墙中允许端口:

    在“设置”或“控制面板”中打开防火墙,“高级设置”

    在“入站规则”中“新建规则”

    选择“端口”并填写,完成。

    这样,局域网的其它电脑就能访问到这台 Windows 的服务了。

  • 小米路由器:

    登录路由器,进入“高级设置”,

    切换到“端口转发”,添加规则,

    这样,外网就能通过路由器的外网IP来访问局域网中的内网服务了。

  • 华为路由器 AX3 Pro:

    登录路由器,进入“更多功能”,

    展开“安全设置”,选择“NAT服务”,

    点击“+”号设置端口映射。

    这样,外网就能通过路由器的外网IP来访问局域网中的内网服务了。

  • H3C ER3200G2 路由器:

    登录路由器,展开“高级设置”,“地址转换”,

    切换到“虚拟服务器”,“新增”,

    填端口和内部服务器IP,完成。

    这样,外网就能通过路由器的外网IP来访问局域网中的内网服务了。

xoyozo 1 年前
1,019

实例化方法一:DbSearcher(String dbFile, QueryType queryType, String key)

实例化方法二:DbSearcher(InputStream is, QueryType queryType, String key)


  • 方法一通过传入文件路径来实例化,方法二通过传入文件流来实例化;

  • 当 queryType 为 MEMORY 时,方法一和方法二只有在实例化时有性能差别,差别在于将指定路径的文件读到内存中保存;在执行 Search 方法时无性能差别,因为都是在内存中执行查找;

  • queryType 为 MEMORYBTREE 的差别在于前者是在内存中查找,速度快但占内存,后者是在文件中查找,速度慢但省内存


错误:Padding is invalid and cannot be removed.

原因:可能是数据库文件与密钥不一致。

xoyozo 1 年前
1,892

云服务器 ECS

云服务器 ECS - 安全组

云服务器 ECS - 快照 - 自动快照策略 - 关联云盘


云监控

云监控 - 应用分组:添加对应的服务器

云监控 - 主机监控 - 主机与插件操作 - 安装/升级Agent


云安全中心

云安全中心 - 漏洞管理 - 漏洞管理设置根据操作系统勾选对应的 ECS

云安全中心 - 漏洞管理一键扫描

云安全中心 - 防勒索:安装客户端并配置策略资产

云安全中心 - 主机规则管理配置主机和防御策略,防暴力破解编辑策略


* 本文提及的部分功能可能需要付费


相关内容

如何搭建一台阿里云 ECS(Alibaba Cloud Linux / CentOS)

如何搭建一台阿里云 ECS(Windows Server)

xoyozo 1 年前
1,523

今天忘了带鼠标,正巧笔记本电脑的触摸板驱动坏了,一时也用不了,所以想到用 iPhone 当作电脑的触控板来用。电脑操作系统是 Windows。


一、电脑上下载并安装 Remote Helper(此步需要会使用纯键盘来操作电脑,常用的键是 TAB、方向键、回车键)

二、手机上 App Store 中搜索并获取 鼠标·键盘


电脑和手机需要连接同一局域网,如果没有局域网,可以将电脑连接 iPhone 的热点。

打开 App,搜索 PC,授权,就可以控制光标了。

如果电脑未显示光标,尝试双击 CTRL 键来确定当前光标的位置,前提是安装了 PowerToys

xoyozo 1 年前
3,835

一年前记录过浏览器上如何下载小鹅通的课程视频,现在发现那个插件已经不能用了,所以重新整理了一下,下载过程比上次简单多了。


插件还是那只可爱的小黄猫

GitHub 地址:https://github.com/xifangczy/cat-catch

浏览器扩展安装地址:Chrome / Edge / Firefox

与之前相比,功能改进了不少:

  • “从头捕获”,不需要手动拖动进度条,生怕没有录制完全。但是实际使用还是会丢失一部分开头,希望下个版本改进;

  • “使用 ffmpeg 合并”可以自动合并捕获的视频和音频,下载得到的是一个完整的视频文件;

  • “自动跳转到缓冲尾”可以不间断加载、节省录制时间,对下载非直播画面非常有用;

  • 可以设置播放速度,点击扩展图标,在“其他页面 / 媒体控制”中可以设置。但是有了“自动跳转到缓冲尾”,我觉得设置播放速度这个功能可有可无。


开始录制:

在浏览器上安装扩展后,打开需要录制视频的页面,点击缓存捕获:

QQ_1721982736497.png

然后在面板上点击“从头捕获”:

QQ_1721982784262.png

插件就自动开始从头播放并记录缓存了。

建议勾选“完成捕获自动下载”、“使用 ffmpeg 合并”。

如果是录制“非直播”,建议勾选“自动跳转到缓冲尾”。

另外两个选项“始终从头捕获”、“清理多余头部数据”我没有深入研究,有兴趣的自己研究下。


播放完成后,会自动打开一个“猫抓 cat-catch”的网页,自动使用 ffmpeg 进行转码与合并。

完成后自动下载该文件。


提示:如果要继续捕获其它视频,请先关闭那个“猫抓 cat-catch”网页,否则捕获完成后无法下载。

xoyozo 1 年前
13,251

微信网页开发 JS-SDK 官方文档介绍的获取地理位置接口示例是这样的:

wx.getLocation({
  type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  success: function (res) {
    var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
    var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
    var speed = res.speed; // 速度,以米/每秒计
    var accuracy = res.accuracy; // 位置精度
  }});

实际上是这样的:

wx.getLocation({
  type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  success: function (res) {
    // 网页位置信息授权点击“确定”按钮,以及允许后继续获取定位信息
  },
  fail: function (err) {
    // 获取定位信息失败(譬如:网页位置信息已授权,但操作系统定位已关闭)
  },
  cancel: function (err) {
    // 网页位置信息授权点击“拒绝”按钮
  }
});

顺便提一下如何关闭网页授权:

进入网页使用 JS-SDK 的公众号(可以在授权弹框中看到服务号名称),点击右上角人形图标,继续点击右上角三个点图标,选择设置,关闭“位置信息”。

授权框.png公众号设置.png

xoyozo 1 年前
1,339

驾驶自动化等级与划分要素的关系

分级名称车辆横向和纵向运动控制目标和事件探测与响应动态驾驶任务接管设计运行条件
0 级应急辅助驾驶员驾驶员及系统驾驶员有限制
1 级部分驾驶辅助驾驶员和系统驾驶员及系统驾驶员有限制
2 级组合驾驶辅助系统驾驶员及系统驾驶员有限制
3 级有条件自动驾驶系统系统动态驾驶任务接管用户(接管后成为驾驶员)有限制
4 级高度自动驾驶系统系统系统有限制
5 级完全自动驾驶系统系统系统无限制*
* 排除商业和法规因素等限制。

摘自:《汽车驾驶自动化分级》(GB/T 40429-2021)


部分车企驾驶安全与辅助、智能领航和泊车辅助系统简介

问界

        新M5 全系搭载华为高阶智能驾驶系统,包含智驾领航辅助(NCA)、车道巡航辅助(LCC)、车道巡航辅助增强(LCC Plus)、全向防碰撞系统(CAS)、智能泊车辅助(APA)、遥控泊车辅助(RPA)、代客泊车辅助(AVP)、哨兵模式等功能。部分高阶智驾功能需付费开通,如城区智驾领航辅助(City NCA)、城区车道巡航辅助增强(City LCC Plus)、代客泊车辅助(AVP)等。

参考:问界 M5 华为高阶智能驾驶系统


阿维塔

驾驶安全与辅助:

        前向碰撞预警(FCW)、自动紧急制动(AEB)、异形障碍物自动紧急制动(GAEB)、低速自动紧急制动(LAEB)、前向横穿碰撞预警(FCTA)、前向横穿碰撞制动(FCTB)、后向碰撞预警(RCW)、后向横穿碰撞预警(RCTA)、后向横穿碰撞制动(RCTB)、后向自动紧急制动(RAEB)、交通标志识别(TSR)、交通信号灯识别(TLR)、超速告警(TSA)、开门预警(DOW)、车道偏离预警(LDW)、盲区监测预警(BSD)、车道保持辅助(LKA)、紧急车道保持辅助(ELKA)、侧向障碍物防碰撞(LOCP)、自适应巡航辅助(ACC)、高速车道巡航辅助 (Highway LCC)

智能领航系统:

        高速智驾领航辅助 (Highway NCA)、城区车道巡航辅助 (City LCC)、城区智驾领航辅助 (City NCA)

智能泊车辅助系统:

        智能泊车辅助(APA)、遥控泊车辅助(RPA)、代客泊车辅助(AVP)

其中,ADS高阶功能包需付费购买,包含城区智驾领航辅助 (City NCA)与代客泊车辅助(AVP)。

参考:阿维塔 12 参数配置表


蔚来

智能驾驶-安全辅助:

        前向碰撞预警 (FCW)、自动紧急制动 (AEB)、车辆盲区监测 (BSD)、变道盲区预警 (LCA)、侧方开门预警 (DOW)、后方穿行预警带制动 (RCTA-B)、前方穿行预警带制动 (FCTA-B)、车道偏离预警 (LDW)、车道保持辅助 (LKA)、紧急主动停车(EAS)、紧急车道保持 (ELK)、全场景误加速抑制辅助 (MAI+)、增强型驾驶员感知系统 (ADMS)、通用障碍物预警及辅助 (GOA)、增强型自动紧急转向 (AES)

智能驾驶-泊车辅助:

        视觉融合泊车辅助 (S-APA with Fusion)、换电站泊车辅助 (PSAP)、车辆近距召唤 (NBS)、遥控泊车辅助 (RPA)

智能驾驶-辅助驾驶:

        车道居中辅助 (LCC)、转向灯控制变道 (ALC)、智能自适应巡航 (i-ACC)、道路标识识别 (TSR)、动态环境模拟显示 (ESD)、视觉融合起步提醒 (AGN)

蔚来智能驾驶NAD服务:

        智能驾驶NAD服务(覆盖部分城区道路、封闭高速道路的智能驾驶体验)、低速及泊车智能驾驶NAD服务(支持领航泊车、智能召唤等功能体验)、全域领航辅助 (NOP+)(支持高速、城市快速路、城区道路、高速服务区领航换电等体验)

参考:NIO ES6 详细配置表


小米

Xiaomi Pilot Pro:高速领航辅助(NOA)、智能泊车辅助(APA)、车道居中辅助(LCC)、代客泊车辅助(AVP)

Xiaomi Pilot Max:城市领航辅助(NOA)

参考:小米智能驾驶 Xiaomi Pilot


特斯拉

基本版 Autopilot 自动辅助驾驶:

        主动巡航控制、自动辅助转向

增强版 Autopilot 自动辅助驾驶:

        自动变道、自动辅助导航驾驶、自动泊车、召唤功能、智能召唤功能

完全自动驾驶功能 FSDFull-Self Driving(简称“FSD”)

        交通信号灯和停车标志控制、在城市街道自动辅助转向等。2024年3月31日,特斯拉向美国部分用户推送FSD V12(Supervised)版本。

参考:Model 3 车主手册 Autopilot 自动辅助驾驶

xoyozo 2 年前
3,577

因 MySQL 8 默认使用 utf8mb4 字符集,如果是从 MySQL 5-7 等低版本迁移的,那么仍然是 utf8(相当于 utf8mb3)。

这在保存字符串时有可能会报错:

An error occurred while saving the entity changes. See the inner exception for details.

Incorrect string value: '\xF0\xA1\x90\x93\xE6\x9D...' for column 'Html' at row 1

即使连接字符串上加上 CharSet=utf8 或 CharSet=utf8mb3 或 CharSet=utf8mb4 也没用。

那么只能把数据库的字符集改为 utf8mb4。


更改字符集和排序方式前必须先备份数据库!


  1. 更改现有数据库的字符集和排序规则

    ALTER DATABASE mydatabase 
    CHARACTER SET utf8mb4 
    COLLATE utf8mb4_unicode_ci;
  2. 更改现有表的字符集和排序规则

    ALTER TABLE mytable 
    CONVERT TO CHARACTER SET utf8mb4 
    COLLATE utf8mb4_unicode_ci;
  3. 更改现有列的字符集和排序规则

    当列单独设置了字符集时执行,未设置的不需要执行,会继承表的字符集

    ALTER TABLE mytable 
    MODIFY mycolumn VARCHAR(255) 
    CHARACTER SET utf8mb4 
    COLLATE utf8mb4_unicode_ci


数据库中可能存在许多表,数据表中可能存在许多列,使用下面的命令可以生成批量执行的命令:

  1. 更改所有表的默认字符集和排序规则

    USE database_name; -- 替换为你的数据库名
    
    SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') 
    FROM information_schema.TABLES 
    WHERE TABLE_SCHEMA = 'database_name'; -- 再次替换为你的数据库名
  2. 更改所有列的字符集和排序规则

    USE database_name; -- 使用你的数据库名
    
    SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` MODIFY `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') 
    FROM information_schema.COLUMNS 
    WHERE TABLE_SCHEMA = 'database_name'; -- 使用你的数据库名


另外给出几条查询语句:

  1. 查看特定数据库的字符集和排序规则

    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
    FROM information_schema.SCHEMATA
    WHERE SCHEMA_NAME = 'your_database_name';
  2. 查看特定表的字符集和排序规则

    SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = 'your_database_name';
  3. 查看特定列的字符集和排序规则

    SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME 
    FROM information_schema.COLUMNS 
    WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
xoyozo 2 年前
2,598

.NET Framework 项目中使用 MySql.Data.EntityFramework 连接 MySQL 8.0 时遇到以下错误:

NotSupportedException: Character set 'utf8mb3' is not supported by .Net Framework.

解决方法:

Nuget 中将 MySql.Data 和 MySql.Data.EntityFramework 更新到最新版。

xoyozo 2 年前
1,700