记多少命令和快捷键会让脑袋爆炸呢?
Linux
bash脚本常用指令
#!/bin/bash
timeout=240;
node new_search.js 2>&1 | tee -a search.log &
sleep 10
while true; do
if [ -z "`find search.log -newermt @$[$(date +%s)-${timeout}]`" ];
then
killall --regexp -TERM 'node *'
node new_search.js 2>&1 | tee -a search.log &
fi
sleep 60
done
参考:
linux - How to kill a process on no output for some period of time - Stack Overflow
Debian/Ubuntu/Raspbian 时间同步
时区设置:
date -R
dpkg-reconfigure tzdata
时间同步:
apt-get install ntpdate
ntpdate ntp.sjtu.edu.cn
date
安装zsh和oh-my-zsh
安装zsh
apt-get install zsh
chsh -s /bin/zsh
安装Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
nano ~/.zshrc
ZSH_THEME="candy"
source ~/.zshrc
修改 hostname
sudo hostname hk-ubuntu #暂时修改 hostname,重启则失效
sudo nano /etc/hostname #永久修改hostname,重启生效
sudo nano /etc/hosts #将新的hostname指向127.0.0.1
debian 9/ ubuntu 添加swap分区
Linux 中 Swap(交换分区),类似于 Windows 的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
先查看是否已经存在swap分区了:
sudo swapon --show
没有结果表示不存在swap分区,有结果表示已经有一个swap分区了,一般来说一个系统不需要第二个swap分区。
创建1G大小的swap分区文件,并更改权限:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
sudo chmod 600 /swapfile
加载swap分区:
sudo mkswap /swapfile
sudo swapon /swapfile
如果想要重启后swap分区扔自动加载,修改文件:
sudo nano /etc/fstab
最后增加一行:
/swapfile swap swap defaults 0 0
查看swap分区是否加载成功:
sudo swapon --show
一般来说如果是服务器,swappiness 不要太高,修改swappiness 的值:
sudo sysctl vm.swappiness=10
参考资料:How To Add Swap Space on Debian 9 | Linuxize
ubuntu/debian 安装SSH,并开启
注意:如果使用的是WSL安装的ubuntu/debian,那么你需要先卸载:apt remove openssh-server
sudo apt install openssh-server
安装完成后SSH 服务默认开启 手动启动:
systemctl start ssh.service
修改配置:
nano /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
设置指定用户禁止ssh密码登录
有时候我们需要有些用户可以ssh登录时使用密码,而有些用户只能使用密钥登录,编辑文件/etc/ssh/sshd_config
在文件最后添加如下内容:
Match User user1,user2
PasswordAuthentication no
重启服务:
systemctl reload ssh
Linux下使用tee既在屏幕上显示输出,又把输出写进文件
Linux下的tee是一个很好用的工具,可以把重定向屏幕输出到文件的同时在屏幕上显示输出
使用示例如下:
command | tee stdout.log
这里有一个需要注意的坑点,上面的命令只是把标准输出,也就是 STDOUT 写进文件,并没有处理错误输出,也就是 STDERR
如果需要处理错误输出,命令如下:
command > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2)
如果你想把标准输出和错误输出都重定向到一个文件,那么命令如下:
command 2>&1 | tee -a log
参考文章:linux - How do I write stderr to a file while using “tee” with a pipe? - Stack Overflow
Linux查询DNS
在Linux系统里查询DNS使用如下命令
dig baidu.com @114.114.114.114
或者使用系统默认的DNS服务器查询
nslookup baidu.com
其他
- Linux下tar解压到当前目录,zip压缩,tar压缩,tar解压
- Linux系统vi操作指南
- 在centos上安装最新的glibc
- Linux在shell终端中清空DNS缓存,刷新DNS的方法(ubuntu,debian)
- Linux: 使用bash命令ls按时间排序
- 在WinSCP中使用sudo进行sftp,不用输入密码,获得root权限
- 技术 Linux 下如何处理包含空格和特殊字符的文件名
- 在centos上通过yum直接安装最新版gcc和开发工具
- Linux系统16进制形式查看二进制文件
- Windows使用CLion 远程调试Linux程序
- 在CentOS/Debian/Ubuntu上编译安装最新版 GCC 8 , cmake 3 和ninja
- 在CentOS/Debian/Ubuntu上编译安装最新版gnu make 和GNU binutils (as and ld)
- 一日一技:在Linux系统中如何查询正在运行的程序的路径
- 网络测速工具 iperf 须臾之学
- 在Linux上使用图形界面的GitHub Desktop
- Linux查看可执行文件的各个段:.BSS,.TEXT,.DATA的大小
- Linux下的十个好用的命令工具:查看系统版本,显示目录的大小,查看硬盘HDD/SSD,硬盘测速,ssh时自动输入密码,查看程序的内存使用情况,查看I/O的速度,查看ssh密码错误日志,查找文件
- linux下bash脚本常用的十个技巧:显示执行脚本花费的时间,在脚本退出时杀死后台运行的程序,在脚本退出时跳出循环,读取命令行参数来决定循环次数
- Linux/ubuntu server 18.04 安装远程桌面–vnc server-tightvncserver
- Linux的useradd与adduser命令区别
Windows
powershell-zsh-git
管理员模式打开powershell
set-executionpolicy remotesigned
选择 yes
Install-Module posh-git
Install-Module oh-my-posh
打开~\Documents\WindowsPowerShell
,编辑文件Microsoft.PowerShell_profile.ps1
,编写如下内容:
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme ys
如果设置完成后,发现Git的符号是乱码,需要重新选择字体。推荐安装等距更纱黑体 SC
字体,
下载:Releases · be5invis/Sarasa-Gothic
安装sarasa-mono-sc-regular.ttf
然后在Windows Terminal
->Open JSON file
新增配置"fontFace" : "等距更纱黑体 SC"
参考:
- Windows Terminal 美化实例 - 知乎
- 将美化进行到底,把 PowerShell 做成 oh-my-zsh 的样子 - walterlv
- WindowsTerminal Power Shell美化后标签箭头乱码的解决以及在VS Code中的解决_林愿留的博客-CSDN博客
powerhsell 中文
chcp 65001 #Unicode (UTF-8)
chcp 936 #中国 - 简体中文(GB2312)
chcp 437 #美国
- WSL系列操作:安装,卸载
- Windows系统下多版本GCC的安装: MinGW Cygwin Msys2 和 VS: MSVC
- Windows使用MSVC,命令行编译,链接64位dll,Python调用
- WSL的openssh-server使用报错:Could not load host key: /etc/ssh/ssh_host_rsa_key
- windows anaconda python 3.7 安装 pytorch-gpu - zhangpeterx的博客 - CSDN博客
- windows anaconda python 3.7 安装keras-gpu tensorflow-gpu - zhangpeterx的博客 - CSDN博客
Java
jetbrains intellij IDEA 常用插件和配置
代码自动格式化快捷键:
对于Windows: Ctrl
+ Alt
+L
。
对于ubuntu: Ctrl
+ Alt
+ windows
+ L
。
对于Mac: Command+ Option
+ L
。
注意Windows上的快捷键会和TIM的快捷键冲突
如果你不喜欢自带的快捷键,可以到settings中的keymap的Code的reformat code,修改快捷键,我个人比较喜欢Alt
+F
在file
->setings
->editor
->font
中把字体改为第一个consolas
,这样会好看很多,也可以改为simhei
。字号的大小根据自己喜好。
文件全局搜索使用快捷键Ctrl
+ Shift
+F
,如果快捷键冲突,重新配置快捷键。
下面推荐一些好用的插件,在在file
->setings
->Plugins
中进行搜索安装
- CodeGlance
效果是像sublime一样,右边显示缩小版的代码图。
2.Markdown support
装了这个插件就可以用IDEA写markdown了。
3.MyBatis Log Plugin
可以在console直接输出MyBatis 运行的sql语句
4.FindBugs-IDEA
可以自动查找BUG,安装完成后IDEA左下角会出现FindBugs的图标
5.Rainbow Brackets
这个插件我在vs code和sublime上都装了,很好用。
括号的颜色很好看。
6.VisualVM Launcher
可以在调试的时候查看堆的情况
7.Maven Helper
查看Maven依赖
8.Alibaba Java Coding Guidelines 阿里巴巴代码开发规范,可以帮助Java初学者完善自己的代码规范。
9.Choose Runtime
选择IDEA的运行Java的版本:【工具使用】IDEA 2019 导入gradle工程问题_人生所向,皆是美好-CSDN博客_the project uses gradle 2.14.1 which is incompatib
IDEA 控制台乱码
Java 奇技淫巧
不需要先判断对象是否为null,可以直接判断两个对象是否相等
boolean result = Objects.equals( object1 , object12 ) ;
实现如下:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
Java的set或者map的key需要是不可变量,或者hash值固定的变量
从Python角度理解,list作为可变变量不能作为字典的key。
public class Test {
public static void main(String[] args) {
Node app1 = new Node("1", "original");
HashSet<Node> sets = new HashSet<>();
HashMap<Node, Integer> map = new HashMap<>();
map.put(app1, 1);
sets.add(app1);
// 更改变量
app1.name = "changed";
// 输出 false null
System.out.println(sets.contains(app1));
System.out.println(map.get(app1));
}
static class Node {
private final String id;
public String name;
public Node(String id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Node node = (Node) o;
return Objects.equals(id, node.id) && Objects.equals(name, node.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}
}
Java print list
System.out.println(Arrays.toString(list.toArray()));
Java 转化对象为map convert object to map
public static HashMap<String, Object> convert(Object obj) throws IllegalAccessException {
HashMap<String, Object> myObjectAsDict = new HashMap<>();
Field[] allFields = obj.getClass().getDeclaredFields();
for (Field field : allFields) {
myObjectAsDict.put(field.getName(), field.get(obj));
}
return myObjectAsDict;
}
- Java源码下载和阅读(JDK1.8/Java 11
- 有关groupId,artifactId和版本的命名约定的指南
- jetbrains intellij IDEA 常用插件
- IDEA报错总结:修改Java编译版本–maven项目
- jstatd,VisualVM使用和报错解决:Could not create remote object–java.security.AccessControlException
- Java:获取数组中的子数组的多种方法
- Java数组排序: Array-ArrayList-List-Collections.sort()/List.sort()/Arrays.sort()
- Sort an array in Java - Stack Overflow
- java - How to sort an ArrayList? - Stack Overflow
- How to print out all the elements of a List in Java? - Stack Overflow
- Is there a Java library that can “diff” two Objects? - Stack Overflow
- java - How to Flatten a HashMap? - Stack Overflow
C++
- C++预编译头文件 bits/stdc++.h
- C++调用openssl使用sha256,并取结果前64位作为uint64
- make 操作技巧指南–gcc版本设置
- How to calculate a time difference in C++ - Stack Overflow
- How do I create a random alpha-numeric string in C++? - Stack Overflow
- multithreading - Simple example of threading in C++ - Stack Overflow
- C++ 随机数生成的2种方法–生成指定范围内的随机数
- C++ 常用技巧
- C++ CORE DUMP gdb 调试
- Windows和Linux的C/C++ IDE选择
- C++ 调试技术:addr2line
- Windows下使用Visual Studio自带的MSVC,命令行编译C/C++程序
- C++ 内存泄漏检测:valgrind和AddressSanitizer
- C++ gdb调试技巧
- C++ 虚函数个人理解
- C++ 汇编代码查看
- C++ 协程介绍[译]
- Compiler Explorer
- 在CLion中运行Ninja项目
- make 操作技巧指南–gcc版本设置
- C++ 随机数生成的2种方法–生成指定范围内的随机数
- 在CentOS/Debian/Ubuntu上编译安装最新版 GCC 8 , cmake 3 和ninja
数据库
- 数据库基准测试:database bencnmark –生成大量随机测试数据
- 数据库可视化工具:metabase/metabase: The simplest, fastest way to get business intelligence and analytics to everyone in your company
- 数据库可视化工具:安装和配置 - Apache Superset文档
- mysql gui 客户端推荐一个 - V2EX
Python
推荐Python课程:
Python3 开启HTTP服务
python3 -m http.server
杂类
- 你们都是用什么编程字体的? - V2EX
- windows-程序员必备的20个软件
- 介绍 uTools
- 时间都去哪了?用RescueTime和WakaTime来记录你的时间
- mattgodbolt/compiler-explorer: Run compilers interactively from your web browser and interact with the assembly
- Multi-language programming playground Code LabStack
- Awesome-Windows-Windows上优质&精选的最佳应用程序及工具列表
- 求笔记软件推荐 - V2EX
- 有用薄膜键盘敲代码的吗?比例大概是多少? - V2EX
- mysql gui 客户端推荐一个 - V2EX
- 各位在用什么邮箱客户端? - V2EX
- 请问这种 Git 流程图是用什么工具画的呢? - V2EX
- 求推荐年轻人的第一张信用卡 - V2EX
- 求推荐你们的宝藏播客 - V2EX
- 各位大佬 win 下用什么编辑 Markdown 啊~~~ - V2EX
Windows下使用ffmpeg
批量转换ts格式视频到mp4格式,并在转换完成后删除原视频
$files = Get-ChildItem -Recurse -Filter *.ts
echo $files
foreach ($f in $files){
$outfile = $f.FullName.replace(".ts",".mp4")
echo $outfile
ffmpeg -i $f.FullName -c copy $outfile
Remove-Item -Path $f.FullName
}
convert flv to mp4:
ffmpeg -i input.flv -codec copy output.mp4
convert mp4 to mp3:
ffmpeg -i input.mp4 output.mp3
生活
- 迫于脸上开始爆痘,想咨询一下各位是怎么处理的 - V2EX
- 头发两天就特别油,有什么好的洗发水推荐吗? - V2EX
- 大家整天对着电脑,皮肤油大吗?长痘吗? 什么牌子的男士洗面奶好用? - V2EX
- 推荐环节:敲一天代码脸很油,什么水控油能好一点? - V2EX
- 冬天洗完脸有紧绷感,应该擦什么? - V2EX
- 男士油性皮肤用什么洗面奶比较好? - V2EX
- 男士护肤用什么 - V2EX
- 咳咳,老生长谈 男士应该买什么洗面*等 XD - V2EX
- 麻烦问一下有没有能有效入睡的方法? - V2EX
- 信用卡持卡小结,地点:上海 - V2EX
- 老哥们有用记忆枕的吗? - V2EX
- 中年程序员要不要补点维生素 - V2EX
- V 友们都是用什么洗发水? - V2EX
- 求推荐一个洗面奶,去油的,有没有效果比较好得。 - V2EX
- 各位平时喝的口粮茶或者咖啡或者饮料是哪种? - V2EX
- 歌慌,大家推荐几首歌单里常听的歌吧 - V2EX
- 包到用时方恨少,通勤带什么包?_电脑数码包_什么值得买
- 8款最让女生喜欢的渣男香盘点_男士香水_什么值得买
- 天气突然就热起来了,有没有喝水爱好者? - V2EX
- 今天照镜子突然发现鼻子上很多黑头。还有毛孔也比较大。老铁们都是怎么解决的,有没有神器推荐一波 - V2EX
- 请问各位大神,有什么能治愈口腔溃疡的药物及方法吗? - V2EX
- 请问 25 岁左右的男士,都在哪里买的衣服鞋子,什么价位的 - V2EX
- 你觉得那些惊艳的歌词 - V2EX
- 一人一句装修的经验或者坑 - V2EX
- 带哥们 你们的腰椎间盘突出都是怎么治的 - V2EX
- 男生冬季怎么搭配衣服? - 知乎
git
git对不同仓库配置不同email和name
编辑~/.gitconfig
# ~/.gitconfig
[include]
path = user.gitconfig
[includeIf "gitdir/i:d:/"]
path = work.gitconfig
编辑~/user.gitconfig
[user]
name = xxx
email = xxx@gmail.com
编辑~/work.gitconfig
[user]
name = xxx
email = xxxxx
参考:git - Can I specify multiple users for myself in .gitconfig? - Stack Overflow
git 强行更新,覆盖已存在的commit
git push -f <remote> <branch>
git push -f origin master
参考:Force “git push” to overwrite remote files - Stack Overflow
删除最新的commit,恢复到之前的状态
git reset –hard HEAD~1
git push origin test –force
git push –force
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
参考:git rebase - Delete commits from a branch in Git - Stack Overflow
git 查看所有文件修改历史
git log --full-history -- [file path]
git log --full-history --patch -- [file path]
即使文件已经删除,也可以查看历史修改记录。
powershell git log 中文乱码配置
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
$env:LESSCHARSET='utf-8'
新增环境变量: LESSCHARSET ,值为 utf-8
git强行还原
有时候自己对仓库做了修改,但不需要这些修改,可以强行还原。
git fetch --all && git reset --hard origin/master && git pull
git 配置代理
有时候公司内网不能直连外网,需要配置git的网络代理。
git config --global http.proxy 'socks5://127.0.0.1:10888'
git config --global https.proxy 'socks5://127.0.0.1:10888'
git初始化子模块
git submodule update --init --recursive
git 单仓库配置多个远程仓库
我在GitHub和coding上都建了仓库,想单次push到2个仓库,于是需要设置remote
git remote add all https://xxx.xxxx.git
$ git remote -v
all https://e.coding.net/xxxx.git (fetch)
all https://e.coding.net/xxxx.git (push)
origin https://github.com/xxxx.git (fetch)
origin https://github.com/xxxx.git (push)
git push all master
git 设置/重置用户名和密码
有时候输入的用户名或者密码错误了,但git已经保存了,无法直接更改。
一种方法是直接删除用户,再输入:
git config --global --unset user.password
如果是Windows用户,可以在如下位置找到保存的密码: Control Panel
->All Control Panel Items
->Credential Manager
->Windows Credentials
或者直接搜索凭据管理器,可以直接修改用户名和密码。
使用ssh连接GitHub上的git服务器
先配置git的用户名和邮箱:
git config --global user.name "your_name"
git config --global user.email "your_email@xxx.com"
先查看本地是否已经配置了公钥和私钥,如果已经存在私钥,无需再次生成。
cd ~/.ssh
生成密钥:
-> % ssh-keygen -t rsa -b 4096 -C your_email@xxx.com
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:14HZgHvg4z5qnFwlcrUeZ7AzxOpp+cka9oEMPrr04YQ xxx@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
| o. |
| o == |
| . *o+o |
| . B O.o. |
| .=SO.*. |
| o oBo. |
| Eo===o.. |
| . ==+oo+. |
| oo+..o. |
+----[SHA256]-----+
生成密钥后拷贝公钥id_rsa.pub的内容,到GitHub上新建ssh的key:GitHub SSH and GPG keys
新建完成后就可以登录GitHub了:
-> % ssh -T git@github.com
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
如果另外一个服务器已经有公钥和私钥,你不想重新生成,可以直接拷贝过来:
cd ~/.ssh
nano id_rsa
chmod 0600 id_rsa
cd ..
ssh -T git@github.com
git 常用操作
Git操作参考:Git的奇技淫巧
有一篇好文章:一篇文章,教你学会Git
每次commit,git存储的是全新的文件快照而不是文件的变更部分。这是做了一个取舍,这样每次在切换分支的时候,读取文件是O(1)的时间复杂度,而不是O(N)的时间复杂度。
git误操作如何恢复
使用git reflog,修改HEAD的指针
Undo a Git merge that hasn’t been pushed yet - Stack Overflow
git log - View the change history of a file using Git versioning - Stack Overflow
git add - Difference between “git add -A” and “git add .” - Stack Overflow
version control - How do I force “git pull” to overwrite local files? - Stack Overflow
What is the difference between ‘git pull’ and ‘git fetch’? - Stack Overflow
参考:
github - How to link folder from a git repo to another repo? - Stack Overflow
macos - How do I update the password for Git? - Stack Overflow
文档信息
- 本文作者:last2win
- 本文链接:https://last2win.com/wiki/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)