概述
手头有一个 10M 的 json 文件需要导入到 MySQL 中,测试了各种方案,发现使用 MySQLWorkbench 的数据导入功能是最方便的。
MySQLWorkbench
MySQLWorkbench 是 MySQL 官方开发的图形化客户端,优点是支持 json 文件导入,缺点都很久都不更新了,有各种小 bug。使用 MySQLWorkbench 导入 json 文件需要创建好目标库表结构,然后在要导入数据的表上点击右键,选择:Table Data Import Wizard:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image.png)
在接下来的窗口中,选择要导入的 json 文件:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image-5.png)
点击 Next,在接下来的窗口中,把 json 文件的字段与 MySQL 表的字段对应好,然后点击 Next:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image-1.png)
接下来进入一个等待界面,无法查看导入进度:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image-2.png)
可以再打开一个 MySQL 客户端,count 一下表数据量,获取导入进度:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image-3.png)
可以看到数据在缓慢增长,感觉这内部实现是没有做批量插入。
导入成功:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image-6.png)
已经导入的数据如下所示:
![](https://blog.darkmi.com/wp-content/uploads/2024/07/image-4.png)
概述
在 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、二级菜单如果朝上方展示,在鼠标从一级菜单向二级菜单移动的过程中,二级菜单可能会自动消失;
![](https://cdn.nlark.com/yuque/0/2024/png/1271639/1718379476453-08ab0b75-d9ee-47dc-8037-1f9ea0d69d17.png)
主要是第一点,非常烦人,通过以下方式可以恢复经典右键菜单:
reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe
start explorer.exe
恢复经典菜单之后,二级菜单点不中的问题就彻底消失了:
![](https://cdn.nlark.com/yuque/0/2024/png/1271639/1718380882823-e3b5e111-ca07-4e64-8b00-a0eedf7ddf9b.png)
通过以下命令可以使用新版右键菜单:
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
这个问题我看很多人都遇到过,打开终端没有正常的提示信息,无法输入:
![](https://blog.darkmi.com/wp-content/uploads/2024/04/image.png)
目前我使用的是 HbuilderX 最新版本4.0.8
,还是存在这个问题,解决方案是自行修改终端插件的代码,找到C:\node\HBuilderX\plugins\builtincef3terminal\script\main.js
,将其中的 powershell.exe 修改为绝对路径即可:
![](https://blog.darkmi.com/wp-content/uploads/2024/04/image-1-1024x763.png)
powershell.exe 的绝对路径:C:/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe
其实更好的解决方案是在设置中增加一个配置 powershell.exe 的设置项,类似 intellij Idea 中的配置:
![](https://cdn.nlark.com/yuque/0/2024/png/1271639/1713451312301-bbbb7e97-057a-4f8b-bda6-6a12d456eb02.png)
这个就需要等官方更新了。
手头有个比较老的 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 命令配置。
php文件在执行过程中,可能会遇到“No input file specified”的错误信息,从字面来看,是没有找到输入文件的意思,而背后真正的原因可能会各不相同,总结一下我曾经遇到的一些情况。
一、php文件确实不存在
比如,webroot下没有名为a.php的文件,然后访问以下路径:http://localhost/a.php 。
如果以命令行方式运行一个不存在的php文件,会收到类似的错误信息:
PS C:\dev\php\code\core> php a.php
Could not open input file: aa.php
二、文件属主造成的没有执行权限问题
一般在linux桌面开发的时候会遇到这个问题,php以www用户运行,php项目检出之后的权限为:darkmi:darkmi,此时php文件是没有执行权限的。解决方案是,把当前用户的附加组增加www,命令如下:
usermod -a -G www darkmi
三、php配置造成的没有执行权限问题
在php.ini和user.ini中有个配置项为open_basedir,该配置项会限制php对本地文件系统的访问,即把所有的文件操作都限制指定的目录下。如果open_basedir指定的目录没有当前的项目目录,就会出现No input file specified的错误。
.user.ini 知识点补充
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER [‘DOCUMENT_ROOT’] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
https://segmentfault.com/a/1190000011552335
问题描述
最近为我司系统接入某第三方服务,假设该第三方服务为W系统,使用https协议对外提供接口,访问W系统接口的时候,收到如下错误:
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://open.wwww.com/api/device/status": Received fatal alert: protocol_version; nested exception is javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:746)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:672)
根据日志提示,可猜测为SSL协议版本问题造成的异常。
问题分析
首先查看一下W系统支持的SSL协议版本
方法一:通过myssl.com网站
输出如下:
![](https://blog.darkmi.com/wp-content/uploads/2022/06/图片.png)
可知,W系统仅支持TLSv1.2。
以上工具地址为:SSL/TLS安全评估报告 (myssl.com)
More …