分类
Cheat Sheet

MySQL default_character_set_name

SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "DATABASE_NAME";
ALTER DATABASE DATABASE_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE DATABASE_NAME CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

引用:
mysql – How to fix “Incorrect string value” errors? – Stack Overflow
character encoding – How to convert an entire MySQL database characterset and collation to UTF-8? – Stack Overflow

分类
Cheat Sheet

Windows上的MySQL my.cnf my.ini

在Windows上,通常说的/etc/my.cnfmy.ini。如果MySQL已经作为服务启动,那么可以很容易地找到:

Win+R以准备运行,输入services.msc

找到MySQL并查看属性:

“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe” –defaults-file=”C:\ProgramData\MySQL\MySQL Server 5.7\my.ini” MySQL57

其中defaults-file就是my.ini的路径。

引用:
mysql – I can not find my.cnf on my windows computer – Stack Overflow
mysql – How to change max_allowed_packet size – Stack Overflow
MySQL Bugs: #68516: MySQL workbench installed with MySQL 5.6 links to MySQL55 my.ini

分类
Cheat Sheet

PowerShell Get-FileHash

Get-FileHash
   [-Path] <String[]>
   [[-Algorithm] <String>]
   [<CommonParameters>]
PS D:\Downloads> Get-FileHash .\cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso -Algorithm SHA1 | Format-List   

Algorithm : SHA1
Hash      : 24B59706D5EDED392423936C82BA5A83596B50CC
Path      : D:\Downloads\cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso

支持的算法:
SHA1, SHA256, SHA384, SHA512, MD5。

引用:
Get-FileHash

分类
日常分享

K2P路由器刷固件

现在应该已经没有什么货了,还在卖的不是旧就是价格已经不值得买了。写这篇…就当纪念一下吧。

相关链接可以参考一下:
不漏油的路由器不是好矿机——矿渣路由器盘点_值客原创_什么值得买
一个垃圾佬的2019年终总结——盘点这一年好玩的矿渣_值客原创_什么值得买
捡矿渣一时爽,一直捡一直爽——年度矿渣盘点_值客原创_什么值得买

配置应该是MT7621A,RAM 128M,Flash 16M,全千兆网口,没有USB接口。

按照惯例,先刷入Breed。先到Boot and Recovery Environment for Embedded Devices (BREED)准备好 breed-mt7621-phicomm-k2p.bin

由于没有后门开SSH,对于部分版本的固件,恩山上有个比较简单的方法就是用phitools的激活Telnet工具(有空再研究下原理好了),也可以用其它方法开启。K2/K2P/K3/K3C 新版固件 Telnet 激活工具 – 斐讯无线路由器以及其它斐迅网络设备 – 恩山无线论坛,点此跳转。

开启Telnet之后,将事先准备好的Breed传入。先md5sum验证bin文件是否损坏。然后刷入。

root@K2P:/tmp# md5sum breed-mt7621-phicomm-k2p.bin
root@K2P:/tmp# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00050000 00010000 "permanent_config"
mtd5: 00f60000 00010000 "firmware"
mtd6: 00c48b96 00010000 "rootfs"
mtd7: 00200000 00010000 "rootfs_data"
root@K2P:/tmp# mtd -r write /tmp/breed-mt7621-phicomm-k2p.bin Bootloader

静待重启。重启后应该能正常进系统。直插LAN1接口,按住RESET(别急着放开,建议拿个东西垫着不然可能有点痛),插上电源线。此时访问192.168.1.1应该能进入Breed Web控制台。

同样,备份->恢复出厂设置->更新固件即可。

分类
日常分享

Newifi3路由器刷固件

通常称为新路由3,CPU是MT7621A,内存512MB,32MB Flash,1个USB3.0口,全千兆网口。经常被拿来和K2P比较,新3的无线算是一个比较大的槽点吧,其它应该还好(除了漏油)。

整了一台来学习OpenWRT。现在好像存货量还很大,价格还不错。

到手先刷入Breed。这是一个BootLoader,刷入后,你就能在Breed中刷入固件了。这样通常能保证路由器不会变砖,即使刷了错的固件。有关Breed的更多信息,可以跳转恩山上hackpascal的帖子AR/QCA/MTK Breed,功能强大的多线程 Bootloader – OPENWRT专版 – 恩山无线论坛了解。

备份一个方便自己下载。来源:新路由3 (Newifi D2) 免拆机免解锁刷 Breed 教程 – newifi无线路由器及网络设备 – 恩山无线论坛

为了刷入这个解锁文件,按照上面帖子教程操作即可。主要步骤就是:

  1. 开启SSH,这样就可以在命令行中任意控制路由器了。解锁管理界面后访问http://192.168.99.1/newifi/ifiwen_hss.html(后门?),显示succes就OK。
  2. 把解压得到的newifi-d2-jail-break.ko传到路由器中。你可以有无数种方法来做到这一点,包括但不限于直接SFTP,启动一个文件服务器(比如HTTP Server)给路由器下载之类的方法。
  3. SSH中,切换至你刚传入文件的所在文件夹,执行insmod newifi-d2-jail-break.ko即可。静待路由器重启。

此时应该准备一份你想要刷入的固件。网线只插入LAN1,连接电脑,按住reset(新三建议用取卡针,别急着放开)然后连接电源线。闪灯后不久应该就能在电脑上通过192.168.1.1来访问Breed的Web控制台了。

这个时候可以随意烧写你想要的固件了。备份->恢复出厂设置->更新固件,选择你想要的固件即可。

分类
Online Judge 深大特供 程序设计基础

求矩阵的最大和最小值

时间限制: 1 Sec 内存限制: 128 MB

题目描述

定义一个函数用一级指针接收一个任意行任意列的矩阵并返回该矩阵元素的最大和最小值.

输入

矩阵的行数 矩阵的列数
矩阵各元素的值

输出

最大值
最小值

样例输入

3 3
1 2 3
4 5 6
7 8 9

样例输出

9
1

提示

解决方案

#include <iostream>

void findMinAndMaxValues(int *ptr, int row, int col);

int main() {
    int row, col;
    std::cin >> row >> col;
    int mat[row][col];
    for (int ir = 0; ir < row; ++ir) {
        for (int ic = 0; ic < col; ++ic) {
            std::cin >> mat[ir][ic];
        }
    }
    findMinAndMaxValues(&mat[0][0], row, col);

    return 0;
}

void findMinAndMaxValues(int *ptr, int row, int col) {
    int min = *ptr, max = *ptr;
    for (int ir = 0; ir < row; ++ir) {
        for (int ic = 0; ic < col; ++ic) {
            if (ptr[ir * col + ic] < min) {
                min = ptr[ir * col + ic];
            }
            if (ptr[ir * col + ic] > max) {
                max = ptr[ir * col + ic];
            }
        }
    }
    std::cout << max << std::endl << min << std::endl;
}

分类
Cheat Sheet

CMake指定源码目录和构建目录

在CMake 3.13或更新的版本中,可以使用:

cmake -S . -B build -G "Unix Makefiles"

来指定当前目录为源码目录,构建二进制文件到build文件夹中。

对于CMake 3.13之前的版本,需要给定没有写在文档中的参数:

cmake -H. -Bbuild -G "Unix Makefiles"

(没有空格)

引用:
configuration – Getting CMake to build out of source without wrapping scripts – Stack Overflow

分类
Cheat Sheet

Node.js http-server

体验应该要好得多。如果你想把它当作一个简单的控制台上的HTTP Server,可以先使用npm安装:

npm install --global http-server

然后就可以使用了:

http-server [path] [options]

使用-p--port来指定端口;使用-a来绑定地址;使用-d来指定目录。更多选项可以看文档。

你也可以直接:

npx http-server [path] [options]

引用:
http-server – npm
http-party/http-server: a simple zero-configuration command-line http server
The npm Blog — Introducing npx: an npm package runner

分类
Cheat Sheet

Python SimpleHTTPServer

这篇并不是在讨论Python HTTP servers的各种用法,而是记录给某些懒人们用的如何启动SimpleHTTPServer。

正如其名,它只是个简单实现,因为安全等因素,你不应该把它用于生产环境。

如果你正在使用Python2,那么你应该:

python -m SimpleHTTPServer 8000

如果你正在使用Python3,那么:

python -m http.server 8000 --bind 127.0.0.1

从3.4开始,引入了参数--bind;从3.6开始,参数--bind支持IPv6。

从3.7开始,可以使用--directory来指定目录。

引用:
SimpleHTTPServer — Simple HTTP request handler
http.server — HTTP servers

分类
未分类

站点已经迁移至WordPress

最后还是决定用WordPress了。

原来的用Mkdocs构建的文档仍然可以访问,https://szu17dmy.github.io/site/。原来的不再更新,但是会慢慢搬到这里。

有任何疑问,可以联系mailto:im@chikorita.fun