在 pycharm 中写 SQL 语句的时候,总会提示 Choose schema 的警告,虽不影响程序的执行,但警告的横纹实在是有碍观瞻,解决方案如下:
鼠标移动到有问题的代码上,在提示框中选择“More actions…”:

在下拉列表中,选择“Go to SQL Resolution Scopes”:

在接下来的弹窗中配置好数据源即可:

最近有一批 json 文件需要导入到 MySQL 中,因为 json 文件过大,无法准确的评估字段长度,所以决定在 MySQL 中建表的时候把字段类型都设置为了 text,导入成功之后再评估一下长度,然后修改字段类型。
通过以下语句获取指定列的最大长度
SELECT MAX(LENGTH(ci)) FROM meta_ci;
More … 概述
手头有一个 10M 的 json 文件需要导入到 MySQL 中,测试了各种方案,发现使用 MySQLWorkbench 的数据导入功能是最方便的。
MySQLWorkbench
MySQLWorkbench 是 MySQL 官方开发的图形化客户端,优点是支持 json 文件导入,缺点都很久都不更新了,有各种小 bug。使用 MySQLWorkbench 导入 json 文件需要创建好目标库表结构,然后在要导入数据的表上点击右键,选择:Table Data Import Wizard:

在接下来的窗口中,选择要导入的 json 文件:

点击 Next,在接下来的窗口中,把 json 文件的字段与 MySQL 表的字段对应好,然后点击 Next:

接下来进入一个等待界面,无法查看导入进度:

可以再打开一个 MySQL 客户端,count 一下表数据量,获取导入进度:

可以看到数据在缓慢增长,感觉这内部实现是没有做批量插入。
导入成功:

已经导入的数据如下所示:

概述
在 Java 编程开发中,有时候需要将 List 打印出来,方便调试。本文总结了打印 List 的几种方式。
通过 for 循环打印:
List<String> list = new ArrayList<>();
list.add("北京");
list.add("上海");
list.add("广州");
// 遍历List
for (int i=0;i< list.size();i++) {
System.out.println(list.get(i));
}
通过 foreach 循环打印:
List<String> list = new ArrayList<>();
list.add("北京");
list.add("上海");
list.add("广州");
for (String s : list) {
System.out.println(s);
}
通过 List 的 forEach 方法+lambda 表达式打印:
List<String> list = new ArrayList<>();
list.add("北京");
list.add("上海");
list.add("广州");
list.forEach(s->System.out.println(s));
通过 List 的 forEach 函数+方法引用打印:
List<String> list = new ArrayList<>();
list.add("北京");
list.add("上海");
list.add("广州");
list.forEach(System.out::println);
目前的Windows11新版右键菜单有两个问题:
1、展示项目无法定制,想用的功能被折叠了,每次都要点击一下“显示更多选项”;
2、二级菜单如果朝上方展示,在鼠标从一级菜单向二级菜单移动的过程中,二级菜单可能会自动消失;

主要是第一点,非常烦人,通过以下方式可以恢复经典右键菜单:
reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe
start explorer.exe
恢复经典菜单之后,二级菜单点不中的问题就彻底消失了:

通过以下命令可以使用新版右键菜单:
reg.exe delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
taskkill /f /im explorer.exe
start explorer.exe
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
几个示例:
通过某个进程号显示该进行打开的文件
lsof -p 1
列出多个进程号对应的文件信息
lsof -p 1,2,3
列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1
列出所有的网络连接
lsof -i
列出所有tcp 网络连接信息
lsof -i tcp
列出所有udp网络连接信息
lsof -i udp
列出谁在使用某个端口
lsof -i :3306
列出谁在使用某个特定的udp端口/tcp端口
lsof -i udp:55
lsof -i tcp:80
列出某个用户打开的文件信息
lsof -u username
列出某个程序进程所打开的文件信息
lsof -c mysql
列出多个进程多个打开的文件信息
lsof -c mysql -c apache
列出某个用户以及某个进程所打开的文件信息
lsof -u test -c mysql
这个问题我看很多人都遇到过,打开终端没有正常的提示信息,无法输入:

目前我使用的是 HbuilderX 最新版本4.0.8
,还是存在这个问题,解决方案是自行修改终端插件的代码,找到C:\node\HBuilderX\plugins\builtincef3terminal\script\main.js
,将其中的 powershell.exe 修改为绝对路径即可:

powershell.exe 的绝对路径:C:/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe
其实更好的解决方案是在设置中增加一个配置 powershell.exe 的设置项,类似 intellij Idea 中的配置:

这个就需要等官方更新了。
手头有个比较老的 fastadmin 项目,启动的时候因为偷懒,直接把 vendor 目录和 thinkphp 目录都提交到了 git 仓库中,这样部署的时候可以将全量代码同步到 web 目录即可。一般情况下,第三方库无需放到版本库中,就像 node 项目无需把 node_modules 目录放到版本库,python 项目无需把 venv 目录放入版本库一样。
于是决定优化一下:
1、首先将 vendor 和 thinkphp 目录从仓库中删除:
git rm -r --cached ./thinkphp
git rm -r --chached ./vendor
git add .
git commit -a -m '从版本库中删除vendor和thinkphp'
git push
参数说明:
--cached
:表示从暂存区中删除,如果不加--cahced
参考,表示从工作区和暂存区同时删除该文件/文件夹;
-r
:用于递归删除目录中的文件及子目录;
2、然后将 composer install 添加到部署脚本中即可。
临时指定镜像源
通过参数 -i 指定镜像源,适合临时使用一下,以安装PyMySQL为例,命令如下:
阿里云
pip install -i https://mirrors.aliyun.com/pypi/simple/ PyMySQL
清华源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyMySQL
在Windows中设置镜像源
可以直接在 C:\Users\用户名\AppData\Roaming\pip 目录中创建文件pip.ini,然后输入以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
或者直接通过以下命令设置也可以:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
输出:
Writing to C:\Users\用户名\AppData\Roaming\pip\pip.ini
在deepin中设置镜像源
deepin系统中pip配置文件路径是:/home/用户名/.config/pip/pip.conf,文件内容同上,也可以使用pip config 命令配置。