主頁 > 後端開發 > linux使用匯總

linux使用匯總

2023-03-22 07:35:07 後端開發

linux使用匯總

Linux的目錄結構

沒有邏輯磁盤磁區(C盤、D盤...)

  • 是一棵樹形結構,根目錄是/

  • 根目錄下邊有幾個檔案夾,需要我們了解:

    • /etc:組態檔所在的檔案夾,比如:安裝JDK,配置環境變數,就要修改/etc/profile檔案

    • /usr:unix shared resource,系統共享資源檔案夾,我們安裝軟體通常安裝在:/usr/local下邊

    • /home:家目錄,每個用戶登錄Linux之后,默認進入的目錄,是用戶的家目錄,(類似Windows的“我的檔案夾)“)

      • 用戶tom,有自己的家目錄:/home/tom
      • 用戶jack,有自己的家目錄:/home/jack
    • /root:是root用戶的家目錄

      linux 檔案夾和檔案名不能相同

    • 如果事先有叫‘A’的檔案夾存在,則不允許建立叫‘A’的檔案;

      同理若先有叫‘b’的檔案存在,一樣不允許建立叫‘b’的檔案夾,

      /tmp:為臨時目錄,即linux有定時清理的策略,定時清理配置/usr/lib/tmpfiles.d/tmp.conf

策略

[root@bits-yybgl-nfs1 tmpfiles.d]# cat /usr/lib/tmpfiles.d/tmp.conf 
q /tmp 1777 root root 10d
q /var/tmp 1777 root root 30d

?
?
? - 清理 /tmp 目錄超過 10 天的內容,但是匹配 /tmp/systemd-private-%b-* 的目錄及其路徑下的全部內容會被保留,
?
? - 清理 /var/tmp 目錄超過 30 天的內容,但是匹配 /var/tmp/systemd-private-%b-* 的目錄及其路徑下的全部內容被保留,
?
? 參考http://oppo1.yidianzixun.com/article/0fhnNnOi

linux命令整理

權限

1642507429871

  • -表示檔案 d表示目錄

--其他少數型別:(b、c、l、s、p)

b:塊設備,是一些提供系統存取資料的介面設備,例如硬碟

c:字符設備,是一些串行埠的介面設備,例如鍵盤

l:為鏈接檔案,類似于Windows的快捷方式

s:套接字檔案(socket),用于行程之間的通信,-檔案,分純文本檔案(ASCII)和二進制檔案(binary)

p:管道檔案

  • u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是,

  • + 表示增加權限、- 表示取消權限、= 表示唯一設定權限,

  • r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行

將檔案 file1.txt 設為所有人皆可讀取 :

chmod ugo+r file1.txt

將檔案 file1.txt 設為所有人皆可讀取 :

chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :

chmod ug+w,o-w file1.txt file2.txt

為 ex1.py 檔案擁有者增加可執行權限:

chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :

chmod -R a+r *

此外chmod也可以用數字來表示權限如 :

chmod 777 file

語法為:

chmod abc file

其中a,b,c各為一個數字,分別表示User、Group、及Other的權限,

r=4,w=2,x=1

  • 若要 rwx 屬性則 4+2+1=7;
  • 若要 rw- 屬性則 4+2=6;
  • 若要 r-x 屬性則 4+1=5,
chmod a=rwx file

chmod 777 file

效果相同

chmod ug=rwx,o=x file

chmod 771 file

權限總結

此外chmod也可以用數字來表示權限如 chmod 777 file
語法為:chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的權限,
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7,
范例:
chmod a=rwx file
和
chmod 777 file
效果相同
linux檔案執行權限:chmod a+x sysstat 
查看檔案的權限和型別:ll 檔案所在的路徑

用戶組

新建組

groupadd samba

添加二名成員

useradd  -g  samba samba
useradd  -g  samba oa

查指定組內成員

groupname=samba && cat /etc/passwd | grep `grep ${groupname} /etc/group | awk -F: '{print $3}'` | awk -F: '{print $1}' && unset groupname

設定密碼:passwd <用戶名>

passwd test123

查看samba服務器中已擁有哪些用戶:

 pdbedit -L

洗掉某個用戶

將用戶從用戶組中洗掉:gpasswd -d <用戶名> <用戶組名>
洗掉用戶:userdel <用戶名>

修改檔案的訪問權限

其他用戶要訪問權限需要修改一下權限(這里一共涉及到了二重權限,第一重在samba里面要設定相應的權限,第二重就是在這里)

修改/samba的訪問權限

chmod  777 /samba      -R

遞回修改/samba下面所有的權限,修改為samba所有

chown  samba:samba /samba  -R

擴展

使用smbpasswd添加共享用戶的常用方法:

    smbpasswd -a 添加用戶(被添加用戶必須是系統用戶)

    smbpasswd -d 凍結用戶 (這個用戶不能用了)

    smbpasswd -e 恢復用戶 (將凍結的用戶解凍)

    smbpasswd -n 將用戶密碼設定為空

    smbpasswd -x 洗掉用戶

查看Linux中所有用戶:

cat  /etc/passwd

查看Linux中所有組:

cat  /etc/group

洗掉linux中某個用戶所有資訊

userdel   -r  用戶名

系統基本資訊

查看系統版本:cat /proc/version 或者uname -a
查看cpu資訊:cat /proc/cpuinfo
查看記憶體資訊:cat /proc/meminfo
MemTotal:記憶體總數 MemFree:空閑記憶體數(不能代表程式全部可用的記憶體)  MemAvailable:可用記憶體數(程式全部可用的記憶體)
查看硬碟資訊:df -h
查看磁盤磁區:fdisk -l
查看網關:ip route show
查看ip(inet)和子網掩碼資訊(netmask):ifconfig
查看本地的host映射: cat /etc/hosts
(主機名host命名規范:服務簡寫+系統應用簡寫+ip后綴e.g:BCSOA192)

磁盤擴容參考:http://t.csdn.cn/aHs0v

常用命令

linux
更改虛擬機主機名稱:hostnamectl --static set-hostname zc135
顯示linux服務串列:chkconfig --list
保持原本格式粘貼文本:
非編輯模式下先設定輸入命令    :set paste   直接粘貼保持原樣格式  設定恢復  :set nopaste
查看運行cpu記憶體狀態:top
ip是否連通:ping xxx.xxx 或tel

埠是否能訪問:telnet 192.168.6.139 8080
telnet退出:
 1、先按 Ctrl+ ]
 2、在Telnet命令列輸入quit就可以了
 3.如果輸入錯誤按shift + 洗掉鍵   洗掉
 
查看記憶體使用情況:free -m
              total        used        free      shared  buff/cache   available(可用)
Mem:          974 (總記憶體Mb)  571(已使用)    102          10       300    249(可用記憶體)
Swap:          2047         147        1900

查看硬碟使用容量資訊:df -h   (-h:GB,MB,KB等格式自行顯示 -H:以M=1000K替代M=1024K的進位方式)
查看檔案的編碼格式:file -i 檔案名稱

x為應用名稱如mysql
啟動x服務:systemcrl start x
查看x服務狀態:systemcrl status x
重啟x服務:systemcrl restart x
關閉x服務:systemcrl stop x
設定開啟啟動:systemcrl enable x
查看help幫助提示:x --help
查看當前所在的目錄:pwd
ls(ls -l的別名):列出來的結果詳細,有時間,是否可讀寫等資訊
ll:只列出檔案名或目錄名 (就象windows里的串列)
新建檔案夾:mkdir filename
創建多級檔案夾:mkdir -p filename
洗掉檔案夾:rmdir -rf
查看rpm包所安裝的路徑:rpm -pql mysql-community-server-5.7.25-1.el7.x86_64.rpm(完整包名)
查看當前時間: date
更改時間:  date -s "2022-01-24 10:30:00"

程式
不記錄jar包錯誤輸出:nohup java -jar xxxx.jar >/dev/null 2>&1&
#后臺運行 xxx.jar 程式,將標準錯誤輸出合并到標準輸出,然后標準輸出重定向至 垃圾桶 /dev/null
/dev/null :Linux下有一個特殊的檔案/dev/null,它就像一個無底洞,所有重定向到它的資訊都會消失得無影無蹤,這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以將輸出重定向到/dev/null,
查看程式服務串列:chkconfig --list 
查詢埠占用:netstat -ntlp
終結pid行程:kill -9 pid(強制)
終結pid行程:kill -15 pid(程式主動正常終止)
查看防火狀態:systemctl status firewalld
永久關閉防火墻:systemctl disable firewalld
重啟防火墻:systemctl enable firewalld
查看vm ens33ip:sudo ifconfig ens33

全域查找檔案: find . -name "*.log"
全域查找檔案夾:find / -name plugin
清空檔案: > access.log
當前位置模糊搜索并將結果洗掉:find . -type f -name "budget_mgt20220112013*" -print0 | xargs -0 rm -f

排除指定檔案并移動到指定目錄 mv !(檔案夾a) ./檔案夾b


根據程式埠查啟動檔案

netstat -nlpt |grep "3306"

tcp6       0      0 :::3306                 :::*                    LISTEN      966/mysqld 

ps -ef grep "966"
UID         PID   PPID  C STIME TTY      STAT   TIME CMD
root       2376   2337  0 14:56 pts/0    R+     0:00 ps -ef grep 966 XDG_SESSION_ID=25 HOSTNAME=zc139 TERM=linux SHELL=/bin/b


查看data目錄的總大小:du -sh /data
文字粘貼應該編輯模式下粘貼:可以shift+insert或者輸入i
查看/usr目錄的下各個子目錄的大小,不包括子目錄的子目錄:[root@localhost usr]# du -sh *
linux內核版本:uname -r

遠程拷貝目標服務器138的schema.xml檔案并放置conf目錄下:

scp 遠程賬號@遠程ip:/檔案目錄地址 本地存放地址
scp [email protected]:/usr/local/mycat/conf/schema.xml /usr/local/mycat/conf/ 

遠程將自己的檔案拷貝到138服務器下的usr目錄下
scp 本地檔案 遠程賬號@遠程ip:/存放目錄
scp /usr/local/mycat/conf/schema.xml.beifen [email protected]:/usr/


init 0 關機
init 6 重啟
reboot 重啟





遞回復制檔案夾test到local檔案夾下:cp -r /test /usr/local/
vim編輯器里顯示行號:set nu
搜索檔案包含此關鍵字并回傳行號:cat -n test.txt | grep "hello"
vim編輯器中批量洗掉行資料:dnd(d游標所在的行  n要洗掉多少行 d) e.g:直接輸入d27d從d行開始洗掉27行資料
vim編輯器中洗掉一行資料:dd或d數字d(d3d洗掉三行)
vim編輯器中復制一行:yyp或數字yyp(3yyp復制三行)
撤銷:u
linux遠程連接資料庫:mysql -uroot -proot -h 192.168.6.139 -P 3306   (最后是大寫P)
linux運行可執行檔案的時候在這6種特殊目錄下不需要加./:
bin       sbin      sr/bin       usr/sbin       usr/local/bin          usr/local/sbin 
用mycat遠程訪問:
mysql -umycat -p123456 -h192.168.6.138  -P8066 --default_auth=mysql_native_password
查看錯誤代碼:perror 錯誤代碼(111)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

日志查詢:
cat -n test.log |grep "debug"   查詢關鍵字的日志(常用!~)
tac是倒序查看,是cat單詞反寫;例子如下:
grep "info" config.log -i 和上面效果一樣,還方便
 跟tail是相反的,tail是看后多少行日志,而head是查看日志檔案的頭多少行,例子如下:
head -n 10  test.log   查詢日志檔案中的頭10行日志;
head -n -10  test.log   查詢日志檔案除了最后10行的其他所有日志;
-n  是顯示行號;相當于nl命令;例子如下:
tail -100f test.log      實時監控100行日志
tail  -n  10  test.log   查詢日志尾部最后10行的日志;
tail -n +10 test.log    查詢10行之后的所有日志;
cat -n test.log |grep "debug" |more     這樣就分頁列印了,通過點擊空格鍵翻頁

vim快速定位到某一行的
1.命令模式下(沒有輸入i進行編輯前),:n 比如想到第65行,輸入 ":65" 按回車即可定位到65行,
2.命令模式下(沒有輸入i進行編輯前),ngg 比如想到第86行,輸入 "86gg" 或"86G" (這個不用按回車就直接定位到對應行了)
3.打開檔案定位到指定行 vim filename +n 比如想到第65行,輸入 vim filename +65 或者 vim +65 filename

linux拉取日志:
使用 >xxx.txt 將其保存到檔案中,到時可以拉下這個檔案分析
如:cat -n test.log |grep "debug"  >debug.txt
1)如果使用securecrt(secureCRTPortable)軟體,可以執行 “ sz  test.log” 命令,將test.log 日志檔案下載到本地,
如果sz命令不存在的話,執行“yum install lrzsz” 命令安裝,安裝好后使用sz命令下載;
默認下載檔案的地址:
點擊options-->session Options-->x/y/Zmodem 查看下載的地址
curl http://localhost:15672


防火墻
復制代碼
1:查看防火狀態
    systemctl status firewalld
    service  iptables status

2:暫時關閉防火墻
    systemctl stop firewalld
    service  iptables stop

3:永久關閉防火墻
    systemctl disable firewalld
    chkconfig iptables off

4:重啟防火墻
    systemctl enable firewalld
    service iptables restart  



軟鏈和硬鏈

軟鏈

多個目錄需要使用相同的檔案,可以使用軟鏈,

特點:

不必占用過多的資源

源檔案洗掉后,目標檔案名稱會報紅色

ln -s 源檔案 目標檔案

ln -s /data/test/test.txt /data/test2/

/data/test2/目錄下掛載/data/test/test.txt檔案

硬鏈

特點:

多占用一份資源(是一個備份),但檔案發生改變其另外一份檔案會隨之改變

源檔案洗掉后,目標檔案依舊在,不會丟失

ln 源檔案 目標檔案

ln  /data/test/test.txt /data/test2/

1672985327570

共同特點:

不論是源檔案還是目標檔案發生改變,另一方(源檔案/目標檔案)檔案內容都會發生改變

rpm命令

安裝:rpm -ivh 包名稱    安裝
升級:rpm -Uvh 升級包名稱
卸載:rpm -e 
查詢某個包是否被安裝:rpm -q mysql
列出所有被安裝的包:rpm -qa mysql

yum命令

安裝:yum install 包名稱
安裝(不提示):yum install 包名稱
卸載:yum remove 包名稱
搜索包:yum search 包名稱
卸載程式包(被依賴的包也會被卸載):yum remove 包名稱  
洗掉程式包:yum erase 包名稱
檢查可升級的包:yum check-update
查詢某個包安裝情況:yum list 包名稱
列出所有被安裝的包:yum list installed
查看正在使用的yum倉庫:yum repolist

find 命令使用

不設定任何引數,則 find 命令將在當前目錄下查找子目錄與檔案,并且將查找到的子目錄和檔案全部進行顯示

語法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

常用引數:

-type c : 檔案型別是 c 的檔案,

-name name, -iname name : 檔案名稱符合 name 的檔案,iname 會忽略大小寫

find . -type f -name '*.sh' | xargs grep -i 'your_string'

//在當前目錄及子目錄模糊搜索檔案名稱為budget_mgt20220110開頭的檔案
find . -type f  -name "budget_mgt20220110*" 

find -print0和xargs -0原理及用法

用法

find . -name "關鍵字" | xargs rm
示例
//在當前目錄及子目錄模糊搜索檔案名稱為app_info.開頭的檔案并將在所有檔案中搜索包含關鍵 DOCUMENTID ,并回傳對應的行數
find . -type -name "app_info.*" | xargs grep -i "DOCUMENTID"

用法注意:

但是這個命令如果遇到檔案名里有空格或者換行符,就會出錯,因為xargs識別字符段的標識是空格或者換行符,所以如果一個檔案名里有空格或者換行符,xargs就會把它識別成兩個字串,自然就出錯了,

這時候就需要-print0和-0了,

find -print0表示在find的每一個結果之后加一個NULL字符,而不是默認加一個換行符,find的默認在每一個結果后加一個'\n',所以輸出結果是一行一行的,當使用了-print0之后,就變成一行了

1643017246622

然后xargs -0表示xargs用NULL來作為分隔符,這樣前后搭配就不會出現空格和換行符的錯誤了,選擇NULL做分隔符,是因為一般編程語言把NULL作為字串結束的標志,所以檔案名不可能以NULL結尾,這樣確保萬無一失,

所以比較我們推薦的比較保險的命令是

find . -name "*.txt" -print0 | xargs -0 rm

示例

找到匹配的檔案后并執行洗掉

find . -type f -name "budget_mgt20220112013*" -print0 | xargs -0 rm -f

找名稱為"png"結尾的檔案并執行mv命令,移動到指定的目錄中

find -type f -name "*.png" -print0 | xargs -0   mv  --target-directory=testfile/

找不是目錄并且匹配正則(.*.png$以.png結尾的檔案)并執行mv命令 移動到指定的目錄中

find -not -type d -and -regex '.*.png$' -exec  mv {} ./testfile \;

-not -type d  不是目錄
-and 并且
-exec 后面跟的是command命令 終止是以;為結束標志的,所以這句命令后面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠,
{} 代表的是find 查找處理的結果

curl請求

瀏覽器請求快捷使用

1.復制格式以curl+bash格式復制

2.linux可以直接使用

常用的命令

-X 請求方式

-H 請求頭

-d --dataHTTP POST 資料

-o將輸出寫入檔案

-G, --get 使用 HTTP GET 方法發送 -d 資料

-a, --append添加要上傳的檔案 (F/SFTP)

curl http://192.168.6.139/inner/customer/jg/QueryCommonCstListPageOrNPageLdsf 
     -X POST 
     -H "Content-type:application/json"
     -H "apikey:csc-btm-yybgl-inner-prod" 
     -d '{"pageNO": "1","companyName": "百度公司","pageSize": "20","userId": "id123456","isPage": ""}'
     
 
 curl http:192.168.6.139:8083/apiminio/file
      -X POST
      -T 
      -H "Content-type:application/json"
      
      curl --form '[email protected]' http:192.168.6.139:8083/apiminio/file

參考:https://itbilu.com/linux/man/4yZ9qH_7X.html

YUM命令

 yum search string 													#根據關鍵字string查找安裝包
  yum deplist <package_name>											# 僅僅 查看程式rpm依賴情況
  yum provides */命令													# 查看命令是由哪個包提供的(這個命令很有幫助)
  yum -y install <package_name>           								#不加-y則會詢問是否安裝,想控制哪些包安裝,則不要加-y,想自動安裝不進行互動,則加-y
yum install --downloadonly --downloaddir=/xx/xxx/xx/					#只下載軟體但不安裝
yum remove <package_name>												# 卸載程式包,此卸載命令會yum或rpm安裝的包生效,如果是編譯安裝的,則不受yum控制
yum groupremove <group_name>											# 洗掉程式組group
yum check-update 														#檢查可更新的軟體有哪些
yum update 																#更新升級所有軟體包
yum update <package_name> 												#更新指定程式包package,   
yum upgrade <package_name> 												#升級指定程式包package

yum 解決依賴的原理
yum 解決依賴關系問題,自動下載軟體包,yum是基于C/S架構,C指的是客戶端, S指的是服務器,像ftp,http,file一樣;關于yum為什么能解決依賴關系:所有的Yum 源里面都有repodata,它里面是有XML格式檔案,里面有說明需要什么包,例如上堂課實驗的:mysql-server rpm 需要:perl-DBI ,python,或者是php等等包,

更換yum源

  1. 備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  1. 下載新的 CentOS-Base.repo 到 /etc/yum.repos.d/

centos8(centos8官方源已下線,建議切換centos-vault源)

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

  1. 運行 yum makecache 生成快取
  2. 其他

非阿里云ECS用戶會出現 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 資訊,不影響使用,用戶也可自行修改相關配置: eg:

sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

公網用戶:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all && yum makecache


配置本地yum源

baseurl=file:///   						#注意是file開頭加三個斜
baseurl=file:///mnt/vcdrom/				#將baseurl修改為DVD的掛載目錄

參考:

https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.J_4121707010.2.1a811b11SR1vgL

https://docs.centos.org/en-US/8-docs/

http://t.csdn.cn/BUKEz

VIM命令

游標:
上:k
下:j
左:h
右:l

向上匹配搜索:?
向下匹配一次:/
示例:
?提交 輸入n 匹配上一個
/提交 輸入n 匹配下一個
輸入/后直接回車:使用上次的搜索關鍵字
輸入?后直接回車:使用上次的搜索關鍵字

profile存在位置

/etc/profile

正則運算式搜索

^表示一行的開頭
$表示一行的結尾
.表示任意一個字符
*匹配0次或n次

檔案傳輸

本文記錄linux系統中檔案傳輸的多種方式,留作備忘,linux中檔案傳輸的方式有ftp,scp,rsync,rz,sz等,但各個工具的功能又有所區別;

  • FTP : FTP是檔案服務器,可實作檔案的上傳下載,存盤等功能,但本文不打算介紹ftp的使用,
  • scp: scp能夠將不同主機的檔案進行相互傳輸,使用簡單方便,
  • rz : 用于linux與windows之間的檔案上傳
  • sz : 用于linux與windows之間的檔案下載
  • rsync : rsync是檔案同步工具,結合inotify可以實作檔案的同步,備份功能,

解壓/壓縮方式

高效的壓縮格式推薦

1679388992714

推薦使用zip壓縮,具有很好的跨平臺和高效性

1、.tar 用 tar –xvf 解壓
2、
.gz 用 gzip -d或者gunzip 解壓
3、.tar.gz和.tgz 用 tar –xzf 解壓
4、.bz2 用 bzip2 -d或者用bunzip2 解壓
5、
.tar.bz2用tar –xjf 解壓
6、.Z 用 uncompress 解壓
7、
.tar.Z 用tar –xZf 解壓
8、.rar 用 unrar e解壓
9、
.zip 用 unzip 解壓

zip 命令

https://www.runoob.com/?s=zip

引數:

-A:調整可執行的自動解壓縮檔案;
-b<作業目錄>:指定暫時存放檔案的目錄;
-c:替每個被壓縮的檔案加上注釋;
-d:從壓縮檔案內洗掉指定的檔案;
-D:壓縮檔案內不建立目錄名稱;
-f:此引數的效果和指定“-u”引數類似,但不僅更新既有檔案,如果某些檔案原本不存在于壓縮檔案內,使用本引數會一并將其加入壓縮檔案中;
-F:嘗試修復已損壞的壓縮檔案;
-g:將檔案壓縮后附加在已有的壓縮檔案之后,而非另行建立新的壓縮檔案;
-h:在線幫助;
-i<范本樣式>:只壓縮符合條件的檔案;
-j:只保存檔案名稱及其內容,而不存放任何目錄名稱;
-J:洗掉壓縮檔案前面不必要的資料;
-k:使用MS-DOS兼容格式的檔案名稱;
-l:壓縮檔案時,把LF字符置換成LF+CR字符;
-ll:壓縮檔案時,把LF+cp字符置換成LF字符;
-L:顯示著作權資訊;
-m:將檔案壓縮并加入壓縮檔案后,洗掉原始檔案,即把檔案移到壓縮檔案中;
-n<字尾字串>:不壓縮具有特定字尾字串的檔案;
-o:以壓縮檔案內擁有最新更改時間的檔案為準,將壓縮檔案的更改時間設成和該檔案相同;
-q:不顯示指令執行程序;
-r:遞回處理,將指定目錄下的所有檔案和子目錄一并處理;
-S:包含系統和隱藏檔案;
-t<日期時間>:把壓縮檔案的日期設成指定的日期;
-T:檢查備份檔案內的每個檔案是否正確無誤;
-u:更換較新的檔案到壓縮檔案內;
-v:顯示指令執行程序或顯示版本資訊;
-V:保存VMS作業系統的檔案屬性;
-w:在檔案名稱里假如版本編號,本引數僅在VMS作業系統下有效;
-x<范本樣式>:壓縮時排除符合條件的檔案;
-X:不保存額外的檔案屬性;
-y:直接保存符號連接,而非該鏈接所指向的檔案,本引數僅在UNIX之類的系統下有效;
-z:替壓縮檔案加上注釋;
-$:保存第一個被壓縮檔案所在磁盤的卷冊名稱;
-<壓縮效率>:壓縮效率是一個介于1~9的數值,`


用法

1.將/home/data 這個目錄下的所有檔案打包壓縮為當前目錄下的data.zip

zip -q -r data.zip /home/data

2.如果現在在/home 這個目錄下,則如下

zip -q -r data.zip data

3.如果在/home/data 這個目錄下,則如下

zip -q -r data.zip *

unzip

https://www.runoob.com/?s=unzip

tar命令

最常用的打包命令是 tar,使用 tar 程式打出來的包我們常稱為 tar 包,tar 包檔案的命令通常都是以 .tar 結尾的,生成 tar 包后,就可以用其它的程式來進行壓縮了,所以首先就來講講 tar 命令的基本用法,

-z 這個引數來呼叫gzip
-x 是解開
-c 是表示產生新的包(壓縮)
-f 指定包的檔案名
-t 是列出檔案的意思
-u 是表示更新指定包中的檔案
-r 是表示向指定的包增加檔案




tar 命令的選項有很多(用 man tar 可以查看到),但常用的就那么幾個選項,下面來舉例說明一下:

# tar -cf all.tar *.jpg

這條命令是將所有 .jpg 的檔案打成一個名為 all.tar 的包,-c 是表示產生新的包,-f 指定包的檔案名,

# tar -rf all.tar *.gif

這條命令是將所有 .gif 的檔案增加到 all.tar 的包里面去,-r 是表示增加檔案的意思,

# tar -uf all.tar logo.gif

這條命令是更新原來 tar 包 all.tar 中 logo.gif 檔案,-u 是表示更新檔案的意思,

# tar -tf all.tar

這條命令是列出 all.tar 包中所有檔案,-t 是列出檔案的意思,

# tar -xf all.tar

這條命令是解出 all.tar 包中所有檔案,-x 是解開的意思,

以上就是 tar 的最基本的用法,為了方便用戶在打包解包的同時可以壓碩訓解壓檔案,tar 提供了一種特殊的功能,這就是 tar 可以在打包或解包的同時呼叫其它的壓縮程式,比如呼叫 gzip、bzip2 等

gzip 是 GNU 組織開發的一個壓縮程式,.gz 結尾的檔案就是 gzip 壓縮的結果,與 gzip 相對的解壓程式是 gunzip,tar 中使用 -z 這個引數來呼叫gzip,

下面來舉例說明一下:

# tar -czf all.tar.gz *.jpg

這條命令是將所有 .jpg 的檔案打成一個 tar 包,并且將其用 gzip 壓縮,生成一個 gzip 壓縮過的包,包名為 all.tar.gz,

# tar -xzf all.tar.gz

這條命令是將上面產生的包解開,

運行狀況

PID - 行程標示號
USER - 行程所有者
PR - 行程優先級
NI - 行程優先級別數值
VIRT - 行程占用的虛擬記憶體值
RES - 行程占用的物理記憶體值
SHR - 行程使用的共享記憶體值
S - 行程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死
%CPU - 行程占用的CPU使用率
%MEM - 行程占用的物理記憶體百分比
TIME+ - 行程啟動后占用的總的CPU時間
Command - 行程啟動的啟動命令名稱

https://www.cnblogs.com/cloudma/articles/linux-sysstat.html

運行jar

使用&后臺運行程式
結果會輸出到終端

使用Ctrl + C發送SIGINT信號,程式免疫

關閉session發送SIGHUP信號,程式關閉

使用nohup運行程式

  • 結果默認會輸出到nohup.out
  • 使用Ctrl + C發送SIGINT信號,程式關閉
  • 關閉session發送SIGHUP信號,程式免疫

日后使用

平日線上經常使用nohup&配合來啟動程式nohup ./test &

  • 同時免疫SIGINTSIGHUP信號

線上部署

1.設定好配置

2.上傳jar包

3.命令

將運行的jar 錯誤日志資訊輸出到log.file檔案中,然后(>&1)就是繼續輸出到標準輸出(前面加的&,是為了讓系統識別是標準輸出),最后一個&,表示在后臺運行,

nohup java -jar test-0.0.1-SNAPSHOT.jar  > log.file  2>&1 &

上面的2 和 1 的意思如下:

0 標準輸入(一般是鍵盤)
1 標準輸出(一般是顯示屏,是用戶終端控制臺)
2 標準錯誤(錯誤資訊輸出)

1619605560837

9161就表示運行的pid

查看到行程的pid

netstat -anp 獲取jps -l

修改linux時間

查看當前時區
命令 : “date -R”
修改設定Linux服務器時區
方法 A
命令 : “tzselect”
方法 B 僅限于RedHat Linux 和 CentOS
命令 : “timeconfig”
方法 C 適用于Debian
命令 : “dpkg-reconfigure tzdata”
復制相應的時區檔案,替換系統時區檔案;或者創建鏈接檔案
cp /usr/share/zoneinfo/主 時 區 / 主時區/主時區/次時區 /etc/localtime
例如:在設定中國時區使用亞洲/上海(+8)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看時間和日期
命令 : “date”
2.設定時間和日期
例如:將系統日期設定成2009年11月3日的命令
命令 : “date -s 11/03/2009”
將系統時間設定成下午5點55分55秒的命令
命令 : “date -s 17:55:55”
將當前時間和日期寫入BIOS,避免重啟后失效
命令 : “hwclock -w”

解壓壓縮

*.tar格式用 tar –xvf 解壓

*.gz格式用 gzip -d或者gunzip 解壓

.tar.gz和.tgz格式用 tar –xzf 解壓

*.bz2 用 bzip2 -d或者用bunzip2 解壓

*.tar.bz2用tar –xjf 解壓

*.Z 用 uncompress 解壓

*.tar.Z 用tar –xZf 解壓

*.rar 用 unrar e解壓

1.  *.zip 用 unzip 解壓  

2、如果要把檔案解壓到指定的目錄下,需要用到-d引數,
unzip -d /temp test.zip

3、解壓的時候,有時候不想覆寫已經存在的檔案,那么可以加上-n引數
unzip -n test.zip
unzip -n -d /temp test.zip

4、只看一下zip壓縮包中包含哪些檔案,不進行解壓縮
unzip -l test.zip

5、查看顯示的檔案串列還包含壓縮比率
unzip -v test.zip

6、檢查zip檔案是否損壞
unzip -t test.zip

7、將壓縮檔案test.zip在指定目錄tmp下解壓縮,如果已有相同的檔案存在,要求unzip命令覆寫原先的檔案
unzip -o test.zip -d /tmp/

zip壓縮
zip  -o a.zip a.txt
-o:示輸出檔案,需在其后緊跟打包輸出檔案名,
-q:不向螢屏輸出
-r:遞回打包包含子目錄的全部內容
-e:加密打包

定時任務

crontab -e 
檔案在/var/spool/cron目錄下面

Docker命令

查看docker幫助:docker --help
搜索鏡像:docker search 鏡像名稱(如centos)
拉取鏡像:docker pull 鏡像名稱:tag(標簽名稱) 如:docker pull centos:7
創建互動式容器:docker run -id --name=minio minio/minio
查看所有鏡像:docker images
洗掉某個鏡像:docker rmi 鏡像ID
洗掉所有鏡像:docker rmi $(docker images -q)
注意:必須先關閉鏡像相關的所有容器,才可以洗掉鏡像;如果有鏡像關聯的容器正在運行,則不能洗掉

創建容器:docker run -id --name=mynginx -p 80:80 nginx
洗掉某個容器:docker rm 容器id

查看容器資訊:docker imspect 容器id前12位(f3307865549d)
查看容器的ip地址:docker inspect -f {{.NetworkSettings.Networks.bridge.IPAddress}} 容器名稱
在linux中copy容器里的檔案: docker cp f3307865549d(容器id):/home/test.java /home(linux保存的路徑)
查看docker程式記憶體占用:docker stats
進入容器:docker exec -it containerID /bin/bash
批量關閉查詢到的容器:docker stop $(docker ps -aq)
批量洗掉查詢到的容器:docker rm $(docker ps -aq)
批量關閉查詢:docker stop A B      (A/B為容器)

日志:
查看容器的日志資訊后10條: docker logs -tf --tail 10 容器id前12位(f3307865549d)
顯示容器全部日志:docker logs -tf 容器id前12位(f3307865549d)
顯示容器全部日志:docker logs  容器id前12位(f3307865549d)
顯示容器最后20行日志:docker logs e31bc40addb5 --tail 20
日志根據時間查詢(注意格式yyyy-MM-dd別少一位):docker logs 863e75445731 --since 2021-03-09

docker 
進入容器內部:docker exec -it 容器名稱 bash 或 docker exec -it 容器名稱 sh

進入容器命令:

1.docker exec -it 容器id/bin/bash
2.docker attach 容器id
兩個區別:
docker exec #進入容器后開啟一個新的終端,可以在里面操作(常用)
docker attach #進入容器正在執行的終端,不會啟動新的行程

docker使用問題

linux進入docker容器報錯:

docker start 7d7510941e2b(容器id前12位)

具體操作:
[root@zc /]# docker exec -it mysql_docker /bin/bash
Error response from daemon: Container 7d7510941e2b26fedf2fe9b4509966972a42b6b4c5e7894a6a770b7b8ece85e1 is not running
[root@zc /]# docker start 7d7510941e2b
7d7510941e2b
[root@zc /]# docker exec -it mysql_docker /bin/bash
root@7d7510941e2b:/# 
進入容器成功
復制檔案
將容器檔案復制到宿主機
docker cp  96f7f14e99ab:/www /tmp/
將宿主機檔案/檔案夾復制到容器中
docker cp logs 863e75445731:/root/


docker搭建 minio

拉取鏡像

docker pull minio/minio:RELEASE.2020-10-
-53-21Z

啟動

docker run -id -p 9000:9000 --name minio-server \
  -e "MINIO_ACCESS_KEY=root1234" \
  -e "MINIO_SECRET_KEY=root1234" \
  -v /sxapp/docker-data/minio:/data \
  -v /sxapp/docker-data/minio/config:/root/.minio \
  minio/minio server /data


賬號:access_key

密碼:secret_key

JAVA

指令

jvm 指令

jps 查看java程式運行pid  (jps(Java Virtual Machine Process Status Tool))
jps -l 查看java程式的運行pid資訊和程式名稱(jar包或包名)
jps -heap pid 查看此pid的jvm記憶體占用情況


jmap -histo 14660  #查看歷史生成的實體
jmap -dump:format=b,file=./dump.hprof 14660 匯出堆的dump檔案(堆太大可能導不出來)

top 查看作業系統運行的狀態
top -p 1234 (pid) 查看1234行程的運行狀態

jstack 行程pid |grep -A 10 子執行緒pid    檢查此執行緒是否存在死鎖(jvisualvm也可以查看死鎖)

jinfo -flags 4658(pid) 查看java程式運行的jvm引數
jinfo -sysprops pid 查看程式的系統引數


java指令

java -Dfile.encoding=UTF-8  xx 可以直接運行位元組碼檔案

如果提示找不到主類需要在xx.class檔案的package父級路勁下執行
如:com.aaa.bbb;
則需要在com包所在的檔案夾下執行
示例:
java com.aaa.bbb.Test

自定義配置

nohup java -jar -Dserver.port=8087 subsidiary_archives_management.jar

javap指令

反編譯位元組碼檔案
javap -l Test.class 會輸出行號和本地變數表資訊
javap -c Test.class 會對當前class位元組碼進行翻譯生成匯編代碼
javap -v Test.class 處理包含 -c 內容外,還會輸出行號、區域變數表資訊、常量池等資訊

javac指令

1. javac   源檔案  :
          直接編譯源檔案,并將編譯后的.class檔案放到與源檔案統一目錄下;
          
2. javac   源檔案   -d   編譯檔案輸出路徑  -encoding utf-8 :編譯檔案, 并將編譯后的.class檔案放到 -d引數后的目標路徑中,且指定編碼格式 為utf-8,解決運行時中文亂碼問題,
存在多級目錄的,在windows下使用`\` ,在linux 下使用 '/' : 
 編譯:
             windows : 'src\com\northcastle\xxx.java'
             linux : 'src/com/northcastle/xxx.java'
             javac com\baidu\UseSynchronized.java -encoding utf-8
 運行:
             java com.baidu.UseSynchronized


jstat指令

jstat -gc pid 查看程式的gc資訊(gc次數,記憶體使用情況)
jstat -gc 5006 2000 10 每隔2秒輸出gc資訊10次


S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
2176.0 2176.0  0.0   818.5  17408.0  14725.1   43400.0    26038.1   57432.0 54579.4 7296.0 6796.0    123    0.558   3      0.212    0.771

S0C:第一個幸存區的大小,單位KB
S1C:第二個幸存區的大小
S0U:第一個幸存區的使用大小
S1U:第二個幸存區的使用大小
EC:伊甸園區的大小
EU:伊甸園區的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法區大小(元空間)
MU:方法區使用大小
CCSC:壓縮類空間大小
CCSU:壓縮類空間使用大小
YGC:年輕代垃圾回收次數
YGCT:年輕代垃圾回收消耗時間,單位s
FGC:老年代垃圾回收次數 
FGCT:老年代垃圾回收消耗時間,單位s
GCT:垃圾回收消耗總時間,單位s

堆記憶體統計

jstat -gccapacity 4658   堆記憶體統計

NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:當前新生代容量
S0C:第一個幸存區大小
S1C:第二個幸存區的大小
EC:伊甸園區的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:當前老年代大小
OC:當前老年代大小
MCMN:最小元資料容量
MCMX:最大元資料容量
MC:當前元資料空間大小
CCSMN:最小壓縮類空間大小
CCSMX:最大壓縮類空間大小
CCSC:當前壓縮類空間大小
YGC:年輕代gc次數
FGC:老年代GC次數

nc

可以模擬一個服務端埠,檢查埠是否通

模擬服務器指定埠

nc -lk 8080
-l 開啟 監聽模式,用于指定nc將處于監聽模式,通常 這樣代表著為一個 服務等待客戶端來鏈接指定的埠,

-p<通信埠> 設定本地主機使用的通信埠,有可能會關閉

-k<通信埠>強制 nc 待命鏈接.當客戶端從服務端斷開連接后,過一段時間服務端也會停止監聽, 但通過選項 -k 我們可以強制服務器保持連接并繼續監聽埠,
-u UDP 模式
-Z DCCP 模式

redis

清空所有的key: flushdb 
查詢所有的key: keys *  
進入redis客戶端: docker exec -ti myredis redis-cli -h localhost -p 6379(
docker exec -it f63b73b53aa0 redis-cli)


docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes



nginx

命令

windows方式

1、啟動:

C:\server\nginx-1.0.2>start nginx

C:\server\nginx-1.0.2>nginx.exe

最好使用第一種,第二種會使你的cmd視窗一直處于執行中,Ctrl + C也不能終止,就算關閉cmd視窗,查看行程管理器也能看到之前還在運行并未隨著cmd視窗關閉而結束行程,

如果使用了第二種方法,關閉nginx行程方法就是,重新打開cmd,輸入停止命令 nginx.exe -s quit 行程就關閉了,

2、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop

C:\server\nginx-1.0.2>nginx.exe -s quit

ps:stop是快速停止nginx,可能并不保存相關資訊;quit是完整有序的停止nginx,并保存相關資訊,

3、重新載入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload

當配置資訊修改,需要重新載入這些配置時使用此命令,

4、重新打開日志檔案:

C:\server\nginx-1.0.2>nginx.exe -s reopen

5、查看Nginx版本:

C:\server\nginx-1.0.2>nginx -v

6.查看、殺掉行程基本命令

tasklist /fi "imagename eq nginx.exe"

7.殺掉nginx行程

taskkill /f /pid 16900 /pid 19012

8.查看命令使用方法

tasklist /?

nginx安裝為:/usr/local/nginx
測驗組態檔修改是否正常:/usr/local/nginx/sbin/nginx -t 
組態檔重新加載:/usr/local/nginx/sbin/nginx -s reload


配置

重寫請求地址:

#第一種方式
server{
location /api/budget {
         rewrite  ^.+api/?(.*)$ /$1 break;
         proxy_pass  http://localhost:8085;
         proxy_redirect default;
  }
}

    #第二種方式
    upstream  ysgl-server {
         server         localhost:8085;
    }
    
    server{
    location /api/budget {
             rewrite  ^.+api/?(.*)$ /$1 break;
             proxy_pass  http://ysgl-server;
             proxy_redirect default;
     }
    }

?

mysql

命令

退出客戶端:\q (等價于exit)
查看資料庫資訊:\s
建庫陳述句
create database budget_mgt default character set utf8mb4;
匯出mysql資料:mysqldump database_name user -u root -p > test.sql
//注意是">" 不是"->"
匯出mysql的建表陳述句:mysqldump --no-data -u username -p* database_name > filename.sql 
匯出指定庫指定的表資料和表結構:
mysqldump database budget_test --tables budget >table_budget.sql
官方檔案:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
執行.sql檔案:source test.sql
查詢mysql其它用戶權限:
show grants for slave;
取消mysql的slave用戶權限:
revoke all on *.* from slave;
查看master binlog檔案串列:show master logs;
查看此binlog檔案的記錄資料:show binlog events in 'master-bin.000001';    
資料庫鎖表:flush tables with read lock; #該處是鎖定為只讀狀態,陳述句不區分大小寫
解鎖:UNLOCK TABLES; 
查看表的整體結構:desc budget  或者 show columns from budget(效果一樣)
查看建表陳述句:show create table  budget 
查看指定庫下的表名稱:show tables  from video_surveillance




mysqldump引數參考:

https://www.cnblogs.com/qq78292959/p/3637135.html

https://www.runoob.com/w3cnote/linux-mysql-import-export-data.html

索引排查

trace用法

開啟后對系統影響比較大,作為臨時分析工具

mysql> set session optimizer_trace="enabled=on",end_markers_in_json=on;  --開啟trace
mysql> select * from employees where name > 'a' order by position;
mysql> select * FROM information_schema.OPTIMIZER_TRACE;
mysql> set session optimizer_trace="enabled=off";

匯入

mysql -uroot -p123456 < runoob.sql
mysql> use abc;                  # 使用已創建的資料庫 
mysql> set names utf8;           # 設定編碼
mysql> source /home/abc/abc.sql  # 匯入備份資料庫

1.匯入檔案執行報錯

用Navicat匯出sql,恢復時,報錯:Invalid default value for,如何解決?#資料庫##SQL#
在用navicat轉存的sql檔案,再次匯入時卻出現了問題!有可能因為mysql5.7的嚴格模式導致資料無法插入時,可以把mysql的sql_model設定為none
執行命令:

show variables like 'sql_mode';  

如果結果中含有NO_ZERO_IN_DATE, NO_ZERO_DATE
則執行下面的命令:

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO

mysql開放root用戶遠程訪問

grant all privileges on *.* to root@'%' identified by '密碼';

'%':所有用戶

匯出

1646013409139

1646013511295

選自:高性能mysql書中文章

--single-transaction選項和--lock-tables選項是互斥的,因為LOCK TABLES會使任何掛起的事務隱含提交

--master-data=https://www.cnblogs.com/cicc/archive/2023/03/21/2 該選項將二進制日志的位置和檔案名寫入到輸出中,2:binlog位置寫進注釋,1 沒有注釋.

1.需要先執行

flush tables with read lock

2.執行sql匯出

mysqldump --single-transaction --flush-logs --master-data=https://www.cnblogs.com/cicc/archive/2023/03/21/2 --opt --databases budget_mgt > 2023-03-09-17/09_budget_mgt_backup.sql

mysql命令選項

-e 執行''中的后序命令
[root@zc139 ~]# mysql -e 'show master status;use budget_mgt; select * from budget_file;show tables;'

mysqldump --single-transaction --flush-logs --master-data=https://www.cnblogs.com/cicc/archive/2023/03/21/2 --opt --databases budget_mgt > backup.sql


mysqldump --single-transaction -R -E --opt  --databases budget_mgt  app_onlyfortest branch_mechanism_management subsidiary_management  subsidiary_archives__management |gunzip >test.sql.gz
 
 gunzip test4.sql.gz
 
 
 
 mysqldump --single-transaction --opt --databases budget_mgt > budget_mgt0513.sql

匯出存文本格式

(1)TERMINATED BY用來指定欄位值之間的符號,例如,“TERMINATED BY ','”指定了逗號作為兩個欄位值之間的標志,

(2)ENCLOSED BY子句用來指定包裹檔案中字符值的符號,例如,“ENCLOSED BY ' " '”表示檔案中字符值放在雙引號之間,若加上關鍵字OPTIONALLY表示所有的值都放在雙引號之間,

(3)ESCAPED BY子句用來指定轉義字符,例如,“ESCAPED BY '*'”將“*”指定為轉義字符,取代“\”,如空格將表示為“*N”,

●   LINES子句:在LINES子句中使用TERMINATED BY指定一行結束的標志,如“LINES TERMINATED BY '?'”表示一行以“?”作為結束標志,

二、LOAD DATA …INFILE陳述句是SELECT INTO…OUTFILE陳述句的補語,該陳述句可以將一個檔案中的資料匯入到資料庫中,

匯出csv格式

csv格式可以直接通過excel打開并保存為.xlsx格式

tidb4.0以上版本也支持

select * from user into outfile '/var/lib/mysql-files/users.csv' fields terminated by ',';

(1)路徑目錄必須有讀寫權限777

(2)檔案名必須唯一

(3)fields terminated by ','必須存在,否則打開的檔案的列在同一的單元格中出現

(4)我驗證的表結構為gbk的,否則出現亂碼

注意:

匯出的檔案在tidb服務端服務器上目錄上

如果有where條件查詢,需要外面套子查詢才可以

表結構欄位表格化

SELECT
COLUMN_NAME 列名,
COLUMN_TYPE 資料型別,
DATA_TYPE 欄位型別,
CHARACTER_MAXIMUM_LENGTH 長度,
IS_NULLABLE 是否為空,
COLUMN_DEFAULT 默認值,
COLUMN_COMMENT 備注
FROM
INFORMATION_SCHEMA.COLUMNS
where
-- tmshop為資料庫名稱,只需要修改成你要匯出表結構的資料庫即可
table_schema ='tmshop'
AND
-- oms_payment_info為表名,換成你要匯出的表的名稱
table_name = 'oms_payment_info'

安全

1678355264272

Tidb

排查鎖阻塞

USE information_schema;
select * from data_lock_waits;

DATA_LOCK_WAITS 表中各列的欄位含義如下:
KEY:正在發生等鎖的 key,以十六進制編碼的形式顯示,
KEY_INFO:對 KEY 進行解讀得出的一些詳細資訊,見 KEY_INFO,
TRX_ID:正在等鎖的事務 ID,即 start_ts,
CURRENT_HOLDING_TRX_ID:當前持有鎖的事務 ID,即 start_ts,
SQL_DIGEST:當前正在等鎖的事務中被阻塞的 SQL 陳述句的 Digest,
SQL_DIGEST_TEXT:當前正在等鎖的事務中被阻塞的 SQL 陳述句的歸一化形式,即去除了引數和格式的 SQL 陳述句,與 SQL_DIGEST 對應,
目前該表僅能記錄悲觀鎖等鎖的情況,如果樂觀事務(如 autocommit 的事務)被悲觀鎖阻塞,這一表中不會顯示相應等鎖資訊,

排查當前存在的事務

USE information_schema;
select * from  CLUSTER_TIDB_TRX;

重啟指令

tiup cluster restart tidb-yybgl

tidb官方鏈接:

ttps://docs.pingcap.com/zh/tidb/dev/information-schema-data-lock-waits

xshell工具

上傳亂碼

使用官方的工具上傳xftp

MongoDB使用

查詢ObjectId

//查詢表的ObjectId
db.getCollection('tanhua_users').find({"_id":ObjectId("5e82dc3e6401952928c211a3")})

mongoDb注解

@Id:
     @Id
     private ObjectId id;
被注解的ID是ObjectId型別的,Mongo會自動為你生成一個唯一的新的ObjectId物件(就像MySQL中的auto_increment型別的ID),如果你想使用其他的型別作為ID,那么在你保存資料時就必須手動為ID賦值,
     @Document(collection=“mongodb”)
把一個java類宣告為mongodb的檔案,可以通過collection引數指定這個類對應的檔案
@Indexed  
    @Indexed
    private Double score;
- 宣告該欄位需要索引,建索引可以大大的提高查詢效率
    @CompoundIndex - 復合索引的宣告,建復合索引可以有效地提高多欄位的查詢效率,
    @GeoSpatialIndexed - 宣告該欄位為地理資訊的索引,
    @Transient - 映射忽略的欄位,該欄位不會保存到mongodb,
    @PersistenceConstructor - 宣告建構式,作用是把從資料庫取出的資料實體化為物件,該建構式傳入的值為從DBObject中取出的資料

時間排序

db.getCollection('quanzi_publish').find({}).sort({created:-1})

windows

cmd 命令

查看埠號:netstat -aon|findstr "8080"
根據pid殺死行程:taskkill /pid pid號 -t -f
查看windows的wifi密碼(結果key content為密碼):netsh wlan show profiles name=wifi名稱 key=clear

當前所在目錄為D:\opt\logback

d: 進入d盤
cd .. 回傳上級目錄
cd logback 進入logback檔案夾
dir 當前目錄串列
md 創建目錄
rd 洗掉目錄
del 洗掉檔案
echo [helloworld]>eva.txt 創建內容為helloworld的eva.txt檔案

Windows host檔案

C:\Windows\System32\drivers\etc

Git

git官方命令手冊:

https://git-scm.com/book/zh/v2/Git-基礎-記錄每次更新到倉庫


檔案名稱--->wjmc

git init 初始化本地庫
git status 查看版本當前狀態
git add wjmc(檔案名稱) 放入暫存區
git add . 將作業區的代碼全部拉取(注意空格,如果配置ignore檔案了,則會排除配置的檔案)
git restore --staged 檔案 撤銷暫存區提交的檔案
git commit -m "提交的備注" wjmc
git reflog 查看歷史版本資訊
git reflog -g 查看歷史提交版本資訊
git log   查看歷史詳細版本資訊   可以按q退出查看
git reset --hard 版本號 (回退到指定版本)
git checkout  版本號 (切換到指定版本)
git config --list 查看git配置資訊
git branch -v 查看分支
git branch 創建新的分支
git checkout 分支名稱(切換到指定分支)
git checkout 分支名稱A 版本號(指定版本創建新的分支A)
git checkout -b <new-branch> 檢出當前分支并創建新分支


git checkout ${commitid} path(git倉庫的相對路徑)
git checkout 6a942d1e3586843388abe6e7b686ecb37a0968d8 src/main/java/com/zxjt/controller/v1/TimerController.java
回退指定版本的指定檔案(如果當前版本檔案洗掉則無法使用)

git show ${commitid}:檔案的相對路徑 > 存盤的相對路徑路徑及名稱(單獨的拉取一個檔案)

git show 28f77d864b37708e4154323da5b8a4d537839b9e:src/main/java/com/zxjt/config/XxlJobConfig.java > src/main/java/com/zxjt/config/XxlJobConfig.java



git stash
保存當前的作業進度,會分別對暫存區和作業區的狀態進行保存,
git stash save “message…”
這條命令實際上是第一條 git stash 命令的完整版,
git stash list
顯示進度串列,此命令顯然暗示了git stash 可以多次保存作業進度,并用在恢復時候進行選擇,
git stash pop 記錄號(stash@{0})
如果不使用任何引數,會恢復最新保存的作業進度,并將恢復的作業進度從存盤的作業進度串列中清除,
git stash apply  記錄號(stash@{0})
除了不洗掉恢復的進度之外,其余和 git stash pop 命令一樣,
git stash clear
洗掉所有存盤的進度,


合并分支  (在 master 分支上合并 test 分支)
1.先切換到master分支
git checkout master
2.將test的分支合并到master
git merge test
洗掉分支
 git branch -d dev(洗掉本地分支前檢查merge狀態)
 git branch -D dev(git branch --delete --force的簡寫 直接洗掉本地分支)
 git push origin --delete dev(遠程洗掉分支)--此時本地和遠程都已洗掉


遠程倉庫操作
git remote -v  (查看當前所有遠程地址別名)
first   https://gitee.com/zcfast/git-demo.git (fetch)
first   https://gitee.com/zcfast/git-demo.git (push)

git remote add 別名 遠程地址 (添加遠程地址別名,目的是為了方便用別名代替遠程庫地址)
git remote rm 別名(洗掉指定別名倉庫地址)
git push 遠程庫地址別名 分支A  (將本地分支A 的內容推送到遠程倉庫)
git clone 遠程地址 (克隆倉庫鏡像 包含init 和 add放入暫存區的命令,默認克隆專案遠端的默認分支)
git rm --cached 檔案名  	洗掉快取區
git rm -r --chached 檔案夾(洗掉快取區檔案夾下面的所有檔案)

git fetch 相當于是從遠程獲取最新版本到本地,不會自動merge(合并代碼)
git pull 遠程庫地址別名 遠程分支名  (將遠程倉庫的此分支最新內容拉取后與當前本地分支合并)
相當于是git fetch 和git merge
git fetch更安全一些,因為在merge前,我們可以查看更新情況,然后再決定是否合并
git push 遠程庫地址別名/遠程庫地址 遠程分支名稱

示例:git push [email protected]:zcfast/day23_vue_curd.git test
遠程庫沒有此分支則創建新的分支并完成推送

git push origin --delete main(遠端分支名)  洗掉遠端分支

	
git checkout -b dev 5f8fe57 從指定版本5f8fe57創建分支dev

ssh://[email protected]:1022/csc-it/btm/btm-branch/digital/budget_management_new_oa.git

ssh://[email protected]:1022/csc-it/btm/btm-branch/digital/budget_management_new_oa.git

https://gitlab.csc.com.cn/csc-it/btm/btm-branch/digital/budget_management_new_oa.git
https://gitlab.csc.com.cn/csc-it/btm/btm-branch/digital/budget_management_new_oa.git



gitee/github支持兩種代碼同步方式:https和ssh

https
提交代碼和下載代碼時都需要輸入用戶名和密碼

ssh
首次使用ssh推需要配置秘鑰
ssh-keygen -t rsa

執行命令完成后,在`C:\Users\用戶名\.ssh`下面生成如下名稱的公鑰和私鑰:

公鑰:需要上傳到gitee/github

私服:需要配置到自己的客戶端


idea中使用git

1644904532437

版本中的檔案不想提交解決方案

方案一
1.檔案是否留在本地比較重要比如.iml(idea組態檔)
2.如果檔案
----不重要,可以直接洗掉檔案
----重要,洗掉暫存區的檔案(git rm -r --cached 檔案名稱/檔案夾)
3.git add .  將修改的其他檔案添加到暫存區中
4.git status 查看git當前暫存區狀態
4.git commit 提交

idea有時候會在push的時候出現一些本地庫不存在檔案.直接正常提交即可



方案二
1.將當前代碼push到git上
2.重新clone 代碼
3.將多余的檔案洗掉后重新push一下


方案三 
gitignore檔案后來修改配置,使檔案過濾
1.洗掉了檔案index,從track狀態變為untrack狀態,執行后會看到專案下所有檔案
git rm -r --cached .

2.將當前目錄下的所有檔案再add到index
注意這時候.gitignore檔案就會起作用,里面配置的檔案型別,將不會被add到index,
git add .

3.commit到本地倉
git commit -m "update gitignore"


沖突處理

沖突產生的原因:
合并分支時,兩個分支在同一個檔案的同一個位置有兩套完全不同的修改,Git 無法替
我們決定使用哪一個,必須人為決定新代碼內容

如果產生沖突則狀態為merging 狀態

<<<<<<< HEAD 當前分支的代碼
hello git! hello atguigu! master test
hello git! hello atguigu!
=======      合并過來的代碼
hello git! hello atguigu!
hello git! hello atguigu! hot-fix test
>>>>>>> hot-fix

解決方案:

檔案沖突的地方解決掉后
1.命令解決
git add 檔案名稱  將沖突的檔案在此添加到暫存區(多個檔案中間空格隔開)
git commit -m "沖突合并"  (注意此時不要附帶檔案的名稱,不然會報錯)
2.idea解決
1.選擇 smart  merge 解決沖突 
2.commit提交

1641729028540

分支切換的本質:就是移動 HEAD 指標,

配置SSH 免密登錄

--進入當前用戶的家目錄
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ cd
--洗掉.ssh 目錄
Layne@LAPTOP-Layne MINGW64 ~
$ rm -rvf .ssh
removed '.ssh/known_hosts'
removed directory '.ssh'
--運行命令生成.ssh 秘鑰目錄[注意:這里-C 這個引數是大寫的 C]
Layne@LAPTOP-Layne MINGW64 ~

$ ssh-keygen -t rsa -C [email protected]


Generating public/private rsa key pair.
...
+----[SHA256]-----+


--進入.ssh 目錄查看檔案串列
Layne@LAPTOP-Layne MINGW64 ~
$ cd .ssh
Layne@LAPTOP-Layne MINGW64 ~/.ssh
$ ll -a
total 21
drwxr-xr-x 1 Layne 197609 0 11 月 25 19:27 ./
drwxr-xr-x 1 Layne 197609 0 11 月 25 19:27 ../
-rw-r--r-- 1 Layne 197609 1679 11 月 25 19:27 id_rsa
-rw-r--r-- 1 Layne 197609 406 11 月 25 19:27 id_rsa.pub
--查看 id_rsa.pub 檔案內容
Layne@LAPTOP-Layne MINGW64 ~/.ssh
$ cat id_rsa.pub

復制 id_rsa.pub 檔案內容,登錄 GitHub,點擊用戶頭像→Settings→SSH and GPG keys

怎么忽略與專案無關的檔案?

1.創建忽略規則檔案 xxxx.ignore(前綴名隨便起,建議是 git.ignore)
這個檔案的存放位置原則上在哪里都可以,為了便于讓~/.gitconfig 檔案參考,建議也放在用
戶家目錄下
git.ignore 檔案模版位置 C:\Users\zc

2.在.gitconfig 檔案中參考忽略組態檔(此檔案在 Windows 的家目錄中)

[user]
	name = huke
	email = [email protected]
[core]
excludesfile = C:/Users/zc/git.ignore

注意:這里要使用“正斜線(/)”,不要使用“反斜線(\)”

3.之后添加或修改.gitignore檔案,也不會生效

先把本地快取洗掉(改變成未track狀態),然后再提交

git rm -r --cached .
 
git add .
 
git commit -m 'update .gitignore'

mybatis

xml中需要轉換的特殊字符

<	   <=	  >  	>=
&lt;  &lt;=  &gt;  &gt;=

示例:

HAVING COUNT(area_user_id) &lt;= 1

問題整理

1.Vm虛擬機ip ping不到,虛擬機沒有網路.

重置網路命令:dhclient -v 

2.yum 安裝報錯no more mirrors to try

命令:
yum clean all
yum makecache
yum -y update
重置后測驗是否有網路,安裝yum需要網路,沒有網路就輸入命令:dhclient -v

3.backspace變 ^H

洗掉時按ctrl+Backspace
如果控制臺命令不識別,按ctrl+c退出,ctrl+u 洗掉一行內容

4.vm虛擬機ping不到ip,每次重啟ip不一樣.

命令
查看虛擬機ip:ifconfig | grep "ens33" -A 2
重啟虛擬網卡:systemctl restart network
進入虛擬網卡組態檔:cd /etc/sysconfig/network-scripts/




1611475103593

1611475415204

1611475422609

1611475770032

1611475794372

執行后,好使

5.安裝telnet

    yum list telnet*              列出telnet相關的安裝包
    yum install telnet-server     安裝telnet服務
    yum install telnet.*          安裝telnet客戶端

telnet ip 埠

6.防火墻開放指定埠

firewalld跟iptables比起來至少有兩大好處:

1、firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則后必須得全部重繪才可以生效;

2、firewalld在使用上要比iptables人性化很多,即使不明白“五張表五條鏈”而且對TCP/IP協議也不理解也可以實作大部分功能,

firewalld跟iptables比起來,不好的地方是每個服務都需要去設定才能放行,因為默認是拒絕,而iptables里默認是每個服務是允許,需要拒絕的才去限制,

1.firewalld(建議使用)

對外開發埠

       查看已開通的埠:firewall-cmd --zone=public --list-ports
       查看想開的埠是否已開:firewall-cmd --query-port=6379/tcp
       添加指定需要開放的埠:firewall-cmd --add-port=6379/tcp --permanent
       多載入添加的埠:firewall-cmd --reload
       查詢指定埠是否開啟成功:firewall-cmd --query-port=6379/tcp
       移除指定埠:firewall-cmd --permanent --remove-port=6379/tcp
       禁止開機自啟:systemctl disable firewalld.service

2.iptalbes

安裝iptables-services :

 yum install iptables-services

? 進入下面目錄進行修改:

vi /etc/sysconfig/iptables

如果我們需要對外開放80埠,則上面檔案中添加如下code

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

同時還需要注意的是,這段代碼需要加入到

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

之后,否則埠也不能打開,

最后的配如下:

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

編輯上面的檔案 需要提供su權限.

保存上面的檔案后,在終端運行如下命令:更新防火墻配置

service iptables restart

下面這個命令可以看到開放的埠

iptables -L -n

開啟: service iptables start 

關閉: service iptables stop
禁止開機自啟:systemctl disable firewalld.iptables

參考:

https://www.ywnz.com/linuxaq/6055.html

7.軟體的安裝和卸載

https://blog.csdn.net/chunyang315/article/details/79008570

8.scrt連接速度慢

linux上更改/etc/ssh/sshd_config
組態檔新增UseDNS no
注意no要為小寫,大寫的話組態檔啟動不了

使用crt工具檔案本地檔案上傳

方式1:

在本地d盤建立一個檔案夾setup
alt+p
put d:/setup/xxx

方式2:

①rz和sz可以完成下載和上傳功能(使用rz/sz命令,就可以拋棄ftp了)
②rz和sz命令不是linux默認自帶的命令,需要我們自己安裝,可以通過yum源來安裝,

輸入命令

rz

提示沒有此命令則需要安裝

yum -y install lrzsz

curl檔案上傳

curl --location --request POST 'https://yybgl.csc108.com/api/budget/v1/file/upload' \
--header 'Token: lbG1eXgx' \
--header 'UserName: %E5%88%98%E9%80%B8%E9%9B%84' \
--header 'UserPw: ceshi' \
--header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36' \
--header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary1hYBK5RCXPEqr7yR' \
--form 'file=@"/root/data/prod.zip"' \
--form 'processId=1652144674'

9.profile修改錯誤導致系統命令報錯

改/etc/profile檔案時,配置錯誤導致系統命令(ls,vim等)錯誤

重新定義環境變數此時vim可以正常使用

export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
source /etc/profile

將錯誤的配置洗掉后重繪配置即可

快捷鍵

win

ctrl +shift +N 創建檔案夾

idea

ctrl +alt + 左鍵/右鍵  回退游標上次停留位置
ctrl +alt +u 查看類的繼承關系圖
ctrl +alt +s 打開設定
new xxx.var 回車 快捷生成物件
ctrl +G 跳轉指定行

ctrl +alt +shift +u
ctrl + alt +, 全域搜索 
ctrl + H 查看類的繼承關系

參考:https://blog.csdn.net/feiying0canglang/article/details/122766234

VSCODE 快捷鍵

Shift+Alt+F 快捷鍵格式化代碼

特殊單詞

HEX,Hexadecimal ,十六進制,
DEC,Decimal ,十進制,
OCT,Octal ,八進制,
BIN,Binary ,二進制,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547621.html

標籤:其他

上一篇:Django筆記四之欄位屬性

下一篇:【Visual Leak Detector】在 QT 中使用 VLD(方式一)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more