0%

ubuntu 重新加入已有网络

总共三步:

  1. 安装: curl -s https://install.zerotier.com | sudo bash
  2. 加入网络: sudo zerotier-cli join 你的network ID
  3. 最后一步一定不要忘,要去官网上授权:点击网络id,向下找到授权的部分,在前面打上勾。

1
2
3
4
QString date = "date -s \"2007-08-03 14:15:00\"" 
QProcess::startDetached(date);
QProcess::startDetached("hwclock -w"); // 同步系统时间
QProcess::startDetached("sync"); // 保存配置

故障现象

  1. 总是卡纸
  2. 不断的进纸,然后随机停下来卡住一张纸。

原因分析

  1. 参考B站上一个人的教程拆机,离合器通过一个电磁铁闭合,通过一个弹簧弹开。卡纸的原因是,离合器闭合后,不能用弹簧的力量弹开。
  2. 弹不开的原因:闭合处有海绵,时间太久,海绵融化了,有很大的粘性,闭合后粘住不能弹开。

解决过程

  1. 清理融化的海绵。
  2. 重新安装回去.(以为不要海绵也可以,B站的说法是,海绵只是减小闭合的噪音)
  3. 发现问题未解决。现象更严重,不断的进纸,不停下来,打印机出空白纸,随机停下来,卡纸。
  4. 听声音,发现离合器还是未工作,没听到弹开的声音。
  5. 拆机观察,确实吸住的。(有点没想明白,两个光光的铁片也能粘住,弹不开,有点怀疑弹簧的力度不够)
  6. 按B站的教程,在两个铁片的吸合处,贴上电工胶带。
  7. 观察吸合状态,胶带有一点点厚度,吸合时,吸合处会有一点点距离,悬空的。(可以认为,要这种状态才能弹开,没想到两个铁片子配合还挺精密,错误的估算了海绵的作用,不仅仅是降噪,不仅仅是降噪,去掉也不能工作)
  8. 重新装回去。测试,终于正常。

总结

  1. 离合器弹不开会不停的进纸,导制卡纸。(离合器不弹开就会一直进纸,至到弹开才会停下来)
  2. 清理融化的海绵后,一定要贴上电工胶带,不然一样会卡纸。

修坏的另外一个问题处理:

  1. 打印机会一下子进多张纸。
  2. 原因是搓纸轮后面那个弹簧太松了。
  3. 打印机背后正中有个小门,把两边的螺丝拧紧一些就可以了。(自己瞎修时,分析以为拧松能解决卡纸问题。)

显示当前系统时区

1
timedatectl

显示系统支持的时区列表

1
timedatectl list-timezones

设置时区

1
sudo timedatectl set-timezone Asia/Hong_Kong

Go语言笔记

参考:https://www.runoob.com/go/go-tutorial.html

数据类型

值类型是 int、float、string、bool、struct和array,直接存储值,分配栈的内存空间,被函数调用完之后会释放。

引用类型是 slice、map、chan和值类型对应的指针,存储是一个地址(指针),指针指向内存中真正存储数据的首地址,内存通常在堆分配,通过GC回收。

  1. new 与 make 的区别

new 的参数要求传入一个类型,而不是一个值,它会申请该类型的内存大小空间,并初始化为对应的零值,返回该指向类型空间的一个指针。

make 也用于内存分配,但它只用于引用对象 slice、map、channel的内存创建,返回的类型是类型本身。

基础语语法

  1. 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

  2. 第一行代码 package main 定义包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

  3. Go 语言的字符串可以通过 + 实现

  4. 常量定义:const identifier [type] = value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func main() {
const LENGTH int = 10
const WIDTH int = 5
var area int
const a, b, c = 1, false, "str" //多重赋值

area = LENGTH * WIDTH
fmt.Printf("面积为 : %d", area)
println()
println(a, b, c)
}
  1. iota,特殊常量,可以认为是一个可以被编译器修改的常量。iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
  2. select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。
    
  3. go 语言函数可以返回多个值。
  4. Go 语言切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

接口

并发

包结构

  1. 权限: 所有成员在包内均可见,无论是不是在一个源码文件中。但只有首字母大写的为可导出成员,在包外可见。
  2. 源码必须使用UTF-8。
  3. 包内每个源文件都可以定义一个或多个初始化函数,但编译器不保证执行顺序。编译器先初始化全局变理,然后才开始执行初始化函数。最后才main.main入口函数。
  4. 内部包:所有保存在internal目录下的包(包含自身)仅能被其父目录下的包(包含所有层次的子目录)访问。

反射

测试

C语言版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

/**********************************************
* LOG DEFINE *
**********************************************/
// OFF FATAL ERROR WARN INFO DEBUG TRACE
// 0 1 2 3 4 5 6
#define OFF (0)
#define FATAL (1)
#define ERROR (2)
#define WARN (3)
#define INFO (4)
#define DEBUG (5)
#define TRACE (6)

#define LOG_LEVEL DEBUG


#define LOG(level, format, ...) \
if(LOG_LEVEL >= level) { \
fprintf(stderr, "[%s|%s@%s,%d] " format "\n", \
#level, __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
}

通过QSS 去掉菜单前面的对勾。用颜色表示 checked 状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


QMenu::item {
padding:8px 32px;/*设置菜单项文字上下和左右的内边距,效果就是菜单中的条目左右上下有了间隔*/
margin:0px 8px;/*设置菜单项的外边距*/
border-bottom:1px solid #DBDBDB;/*为菜单项之间添加横线间隔*/
padding-left:0px;
}

QMenu::item:selected { /* when user selects item using mouse or keyboard */
background-color: #00fff9;/*这一句是设置菜单项鼠标经过选中的样式*/
}

QMenu::item:checked { /* checked */
background-color: #ff0000;
}

QMenu::indicator { /* delete the default icon v */
image: none;
}

效果图:

![image-20201121110545903](QMenu 自定义样式/image-20201121110545903.png)

Win10 启用组策略

WIN+R 运行输入 gpedit.msc 发现找不到这个命令。在网上查了一下,说可能是因为自已用的Win10是家庭版,不支持这个功能。

发现用下面的方法可以手动安装。亲测好用。

1
2
3
4
5
6
7
8
9
10
11
12
13

@echo off

pushd "%~dp0"

dir /b %systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >gp.txt

dir /b %systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>gp.txt

for /f %%i in ('findstr /i . gp.txt 2^>nul') do dism /online /norestart /add-package:"%systemroot%\servicing\Packages\%%i"

pause

把上面的内容存到一个bat文件中。用管理员权限执行,就能自动安装。

然后就可以运行 gpedit.msc 了。

Win10 微软拼音双拼设置

Win10 微软拼音添加小鹤双拼

首先打开注册表,找到这个路径:

1
计算机\HKEY_CURRENT_USER\Software\Microsoft\InputMethod\Settings\CHS

然后新建一个名为 UserDefinedDoublePinyinScheme0的字符串值,数值数据为

1
小鹤双拼*2*^*iuvdjhcwfg^xmlnpbksqszxkrltvyovt

然后在设置中将默认的输入法设置为小鹤双拼。

微软拼音支持自定义时间格式

1
2
3
4
5
6
7
# 关键字需要用 %% 来包裹
yyyy 4 位年
MM 2 位月
dd 2 位日
HH 2 位小时(24 小时制)
mm 2 位分钟数
ss 2 位秒数

示例:

1
2
3
# 结果是这样的格式: 2020-02-07 12:36:52
# 具体的格式参看, 详见 ref
%yyyy%-%MM%-%dd% %HH%:%mm%:%ss%