- 博客(63)
- 資源 (19)
- 收藏
- 關注
原創 PyQT - QGraphicsScene/QraphicsView畫圖
通過QGraphicsScene/QraphicsView畫網絡拓撲圖,代碼如下: def create_network_topology(self): """ :description - 設置辦物理路徑區域的網絡拓撲圖 :parameters - None :versions - Added by gkk in 20201117: 添加該函數,并添加基本功能
2020-12-03 16:52:11
43
原創 UDP - Nat模式下,UDP阻塞接收不到數據的問題
1、問題:客戶端:Udp通信,recvfrom阻塞接收數據。服務端:當收到客戶端發送的數據時,立刻反饋數據至客戶端,客戶端能收到反饋數據,但是如果等待兩分鐘之后再反饋至客戶端,此時客戶端不能收到數據;其中,客戶端運行在虛擬機中,虛擬機采用Nat模式與主機相連。2、現象:服務端:wireshark能抓到發往客戶端的數據客戶端:客戶端主機能抓到發往客戶端的數據,虛擬機抓不到說明,服務端發送的數據已經到達客戶端虛擬機所在的主機,但是并沒有將數據從主機發送至虛擬機。3、原因:由于
2020-12-03 16:44:23
87
原創 Python - Mysql數據庫的使用
1、安裝PyMySQL首先使用pip安裝PyMySQL庫pip install PyMySQL然后在代碼中import即可。2、連接數據庫在Python中使用MySQL,比較習慣上下文的方式,即通過Python的with語句來使用。如果要采用這種方式的話,需要第一一個專門用來處理數據的類,類的定義如下所示:#!/usr/bin/python# coding:UTF-8"""Description: 由于所有的網絡數據都存放在數據庫中,所以專門定義一個用于處理數據庫的模塊
2020-11-06 17:24:55
37
原創 PyQt - 使用多線程避免界面卡頓
1、問題在使用pyqt開發界面時,遇到了一種情況,就是在點擊按鈕之后,響應函數中會啟動一個循環,該循環會一直執行,然后就造成界面無響應,如下所示,由于我是在Linux下運行的,所以界面直接顯示成灰色(windows應該顯示“無響應”):這是因為對于pyqt來說,界面線程是主線程,如果我們再主線程函數里面代用了一個耗時比較久的循環,可能就會造成主界面線程卡死在循環中,從而造成無法操作主界面或者主界面卡頓、卡死。所以這種情況下必須使用多線程的方式來解決,即在主界面線程中在啟動一個新的子線程,利用
2020-10-23 14:25:13
459
原創 算法 - 合并多個排序鏈表
1、題目描述2、算法思想2.1、暴力法2.2、排序后相連可以用vector,也可以用list存儲,一般情況下,如果不知道數據量有多少,用list的效率和內存使用上更優。代碼中采用的是list,list自帶的sort的函數時間復雜度應該是O(nlogn)。2.3、分治法理論上,當數據足夠多時,分治法的時間復雜度是最優的。3、代碼實現3.1、暴力法代碼實現class Solution {public: ListNode* mergeKLis..
2020-08-14 16:32:01
113
原創 C++ - 異常處理
異常處理機制主要有兩個主要成分:異常的鑒定與發出,以及異常的處理方式。通常,不論是member function或non-member function,都有可能產生異常以及處理異常。異常出現之后,正常程序的執行便被暫停(suspended),與此同時,異常處理機制開始搜索程序中有能力處理這一異常的地點。異常被處理完畢之后,程序的執行便會繼續(resume),從異常處理點接著執行下去。1、異常拋出(Throwing an Exception)C++通過throw表達式產生(拋出)異常:void
2020-08-14 15:44:25
63
原創 Python - 日志管理模塊: Loguru的使用
python的日志管理模塊可以用自帶的logging模塊,也可以用第三方的Loguru模塊,關于logging和loguru模塊的簡單使用可以參考以下文章,寫的還是不錯的:https://mp.weixin.qq.com/s?__biz=MzIzNzA4NDk3Nw==&mid=2457738232&idx=1&sn=bfc6437b494249270d2b6dc3469eda61&chksm=ff44b3a6c8333ab010268aed413da647f711839db
2020-08-07 17:02:47
1528
原創 C++ - 優化多 if-else-if 分支
在編程實踐中總會遇到處理有大量分支情況,即根據不同的條件進行不同的處理。因為最近做項目時遇到過這樣的情景,總覺得在代碼中寫一大堆if-ele-if分支代碼塊不是很優雅,所以在此記錄一下大量if-else-if代碼塊的優化情況。1、level1:if-else-if分支(原始)當程序中有大量的分支情況進行處理時,if-else-if分支結構總是大量使用,switch-case分支結構也是經常使用的,但是前者的應用面更廣一些。下面就是應用if-else-if分支結構進行處理的情況:class
2020-08-07 12:09:23
613
原創 STL - 設計一個泛型算法
1、需求描述v-1需求:用戶給予一個整數vector,我們必須返回一個新的vector,其中內含原vector之中小于10的所有數據。根據這個需求可以很容易的設計一個如下的函數 v1_less_than_10():using vecInt = vector<int>;vecInt v1_less_than_10(const vecInt& vec){ vecInt nVec; for (size_t ix = 0; ix < vec.size(); ix++
2020-08-04 16:04:13
60
原創 數據結構 - 棧的應用(符號匹配、中綴轉后綴表達式、后綴表達式計算)
1、符號就近匹配就近匹配算法思路:1、從第一個字符串開始掃描2、當遇見普通字符串時忽略3、當遇見左符號時壓入桟中4、當遇見右符號時,從桟中彈出棧頂符號,并進行匹配: 匹配成功:繼續讀入下一個字符 匹配失?。毫⒓赐V?,并報錯5、結束: 成功:所有字符掃描完畢,且棧為空 失?。浩ヅ涫』蛩凶址麙呙柰戤叺珬7强沾a實現:#include "dm06_LinkStack.h"bool isLeft(c...
2020-07-30 10:20:39
173
原創 數據結構 - 二叉樹的實現與操作
1、二叉樹的表示法1.1、二叉鏈表示法數據結構定義://1 - 二叉鏈表示法//節點類型為inttypedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//節點類型為chartypedef struct BiTNodeC{ char data; struct BiTNodeC *lchild, *rchild;}BiTNodeC, *BiTreeC;.
2020-07-29 16:27:18
78
原創 算法 - 幾種常見的排序算法(選擇、插入、冒泡、希爾、快速、歸并)
幾種常見的排序算法:選擇排序、插入排序、冒泡排序、希爾排序、快速排序、歸并排序。1、選擇排序基本思想:每一趟(例如第i趟,i=0,1,...,n-2),在后面的n-i個待排的數據元素中選出關鍵字(最小的元素),作為有序元素序列的第i個元素。void myswap(int a[], int& i, int& j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}//選擇排序void SelectSort(int a[], int
2020-07-29 14:38:36
170
原創 Python - 多線程以及thread、threading模塊的使用
關于線程、多線程、線程與進程的概念就不在贅述了。只記錄一下python中多線程的使用。1、線程和Python在pyhon中使用線程,需要先了解一下python的全局解釋器鎖。Python代碼的執行是通過Python虛擬機(又名解釋器主循環)進行控制的。在主循環中同時只能有一個控制線程在執行,就像單核CPU系統中的多進程一樣。內存中可以有許多程序,但是在任意給定時刻只能有一個程序在運行。同理,在Python解釋器中,盡管可以運行多個線程,但是在任意給定時刻只有一個線程會被解釋器執行。對Pyth
2020-07-28 10:37:48
165
原創 Linux - CentOS7 重新安裝VMware Tools以及和主機建立共享文件夾
1、安裝VMware Tools1.1、提取VMware Tools安裝包首先登錄CentOS的圖形化界面。選擇虛擬機->重新安裝VMware Toos:選擇“安裝”:可以發現在桌面已經出現VMware Tools的光盤圖標:1.2、安裝環境依賴可以看到光盤里面的安裝文件為vmware-install.pl文件,所以需要有perl環境依賴:...
2019-10-08 17:10:42
177
原創 Linux - CentOS7下安裝PyCharm2019
1、下載安裝包1.1、下載通過wget命令下載pycharm-community-2019.2.3.tar.gz ,下載地址為官方網站,可以訪問官網下載其他版本的pycharm下載過程:下載成功,下載文件存放到默認/root目錄,ls命令查看已下載pycharm-community-2019.2.3.tar.gz安裝文件:1.2、解壓縮包首先將下載的安裝包...
2019-09-29 17:22:20
3636
2
原創 Linux - CentOS7下安裝Python3.7
參考文章:https://www.linuxidc.com/Linux/2018-10/154862.htm1、下載Python壓縮包python的下載可以先通過程序下載好,然后操作下載好的壓縮包;也可以直接在命令行中下載,我采用的是在命令行中下載;官方下載地址:https://www.python.org/ftp/python/我下載的是3.7.4版本,具體下載地址為:htt...
2019-09-29 16:42:50
101
原創 Python - NetworkX安裝和簡單使用
1、NetworkXNetworkX是Python中非常強大的一款關于復雜網絡的庫。下面主要是介紹如何在PyCharm中使用NetworkX。首先需要查看當前版本的PyCharm中是否已經包含了NetworkX的插件:如上圖所示,通過在PyCharm中的Settings -> Project->Project:Interpreter中查看是否已經加載了net...
2019-06-10 12:03:41
4691
1
原創 WinPcap - 捕獲數據、發送數據
1、WinPcapWinPcap是一個基于Win32平臺的,用于捕獲網絡數據包并進行分析的開源庫。WinPcap提供了以下功能:捕獲原始數據包,無論它是發往某臺機器的,還是在其他設備(共享媒介)上進行交換的; 在數據包發送給某應用程序前,根據用戶指定的規則過濾數據包; 將原始數據包通過網絡發送出去; 收集并統計網絡流量信息。WinPcap的功能與LibPcap的功能很相似,但是Wi...
2019-05-08 11:22:02
1083
原創 OpenDDS - Windows下安裝過程(VS2012)
OpenDDS的安裝過程比較復雜,現把安裝過程做個記錄以備不時之需。OpenDDS的安裝分為三個部分:安裝Perl、安裝ACE+TAO、安裝DDS。以下為安裝記錄。安裝主要在Windows環境下進行。1、環境依賴OpenDDS的安裝需要要求環境中安裝有Visual Studio、Perl、ACE+TAO。1.1、Visual StudioOpenDDS是一款C++實現的開源軟件,所...
2019-03-21 16:23:48
824
原創 SQLite - C/C++程序中使用SQLite
1、使用SQLite下載的庫首先把SQLite源碼下載下來,主要使用sqlite3.h文件。記錄sqlite3.def文件(前面解壓出來的文件)所在文件夾,如C:\SQLite通過VS2012編譯,生成.lib文件。打開vs2012->工具->Visual Studio命令提示,打開命令行輸入窗口:進入到sqlite3.def文件所在的文件夾,然后執行lib /d...
2019-03-20 12:03:35
364
原創 多線程 - 線程池的使用
Windows提供了線程池機制,可以直接調用相關API使用。先介紹一種最簡單的線程池API的使用。1、TrySubmitThreadpoolCallbackTrySubmitThreadCallback函數是向線程池提交一個請求,請求讓線程池中的線程執行某個函數。該函數的函數原型如下所示:BOOL TrySubmitThreadpoolCallback( PTP...
2019-03-19 16:43:44
159
原創 SQLite - 下載安裝與使用(Command Line Shell For SQLite)
1、下載并安裝登錄SQLite官網:https://www.sqlite.org/index.html,下載SQLite已經編譯過的文件(Precompiled Binaries for Windows),在這里,我下載了sqlite-dll-win32-x86-3270200.zip和sqlite-tools-win32-x86-3270200.zip(均為當前最新版)。前者為sqlite的...
2019-03-06 11:39:12
9456
1
原創 Python - PyQt中信號/槽函數的使用
1、PyQt中信號的定義from PyQt5.QtCore import Qt, pyqtSignal // 引入模塊class TestSignal(QWidget): # 創建自定義信號,只能定義成類變量# mySignal_1 = pyqtSignal() # 創建信號,用于發送按鈕已點擊信號; mySignal_2 = p...
2019-01-15 10:44:51
6302
1
原創 計算機網絡 - UDP/TCP、IP、MAC報文協議格式
1、計算機網絡計算機網絡體系結構:現在多是參考(c)五層協議。2、數據鏈路層(MAC層)以太網V2的MAC幀格式:MAC幀頭部結構體定義:// u_char: 1字節,8位// u_short: 2字節,16位// u_int: 4字節,32位// 以太網幀數據頭部 - 固定 8 個字節typedef struct ethernet_header{...
2019-01-03 15:53:14
1313
原創 Python - matplotlib 使用
1、安裝matplotlib使用pip安裝matplotlib,首先需要看一下在安裝python時是否已經安裝了pip:打開cmd,輸入pip,如果顯示如下則表明還未安裝pip:如果已經安裝了pip,則當輸入pip時,就會如下顯示:?我安裝的最新版本的python3.7.1已經自動安裝了pip,可以在python安裝目錄Scripts文件下看到安裝的pip程序。接下來就安裝...
2018-11-27 11:46:34
2875
原創 int轉float時精度損失問題 --暨-- 實現sqrt()函數
1、問題閑來無事,做了道算法題圖一樂,很簡單,就是實現sqrt()函數的功能,即求解非負整數的平方根,我給出的算法如下:int mySqrt(int x) { if(x == 1) return 1; float low = 0.0, xtmp =x, high = x; float mid = (low + high) / 2.0; in...
2018-11-21 11:24:22
2879
原創 C 語言中不定長結構體的使用
C語言中結構體的使用基本上都是定長的,就如以下這種:typedef struct{ int a; int b; char c[100]; double d;}STRU;但在很多的場景下,結構體的定義成不定長反而更容易解決問題,最典型的就是需要通過Socket發送一個結構體數據,但是結構體中包含了一個不定長的信息??梢圆捎靡韵路绞絹矶x結構體:ty...
2018-11-14 17:52:00
2622
原創 Windows C — 設置定時器
在Windows? C下采用timeSetEvent函數來設置定時器。關于timeSetEvent的函數原型及注釋如下所示:MMRESULT timeSetEvent( UINT uDelay, // 定時事件的觸發周期,單位為毫秒 UINT uResolution, // 定時事件的精度,單位為毫秒;值越小精度越高, L...
2018-11-13 14:19:08
2393
1
原創 結構體內存分配
最近又撿起了C語言,遇到了大量對結構體操作的業務,在操作期間,發現對結構體在內存中的分配仍然存有一定的疑問。,經過學習,特把有關結構體內存分配的相關知識記錄下來。內存對齊:要了解結構體的內存分配,首先需要了解內存對齊的概念。之所以會有內存對齊的概念,是因為,在操作系統中,數據的存放時按照字節存放的,而結構體又不像數組,結構體中可以存放不同類型的數據,它的大小也不是簡單的各個數據成員大小之和,限...
2018-11-07 14:41:39
6182
1
原創 Linux命令行的基本操作 - 操作文件和目錄
在Linux系統中,操作文件以及目錄主要會用到以下幾種命令:cp - 復制文件和目錄mv - 移動/重命名文件和目錄mkdir - 創建目錄rm - 刪除文件和目錄ln - 創建硬鏈接和符號鏈接下面就對這些命令的使用進行簡單的介紹。在介紹這些命令之前,先介紹一下通配符的概念。通配符在Linux使用過程中,會頻繁地使用文件名,或者只記不全文件名,shell提供了通...
2018-09-20 18:36:25
366
原創 Linux命令行的基本操作 - 文件目錄之間的跳轉
簡單介紹并記錄下Linux操作系統在命令行模式下的簡單操作,以備不時之需。1、文件目錄之間的跳轉文件目錄之間的跳轉主要會用到以下幾個命令:1) pwd ——?打印出當前工作所在的目錄名2) ls —— 列出目錄里的內容ls的作用就是列出當前目錄下所有的文件或者子目錄,最基本的使用如下所示:如上圖所示,ls命令列出了當前目錄“/home/gkk”下所有的內容,圖中藍色...
2018-09-20 15:12:59
9318
轉載 HTTP協議
關于HTTP協議的介紹,這篇博客介紹的還是比較詳細和生動的:http://www.gifted-edu.com/agzhchren/article/details/79173491
2018-09-14 14:21:45
105
原創 變量的命名方法
1、引言隨著計算機技術的不斷發展,計算機計算能力的提升催生了大量大型軟件的出現,大型軟件的代碼量動輒成千上萬行,甚至數十萬行。隨著代碼量的指數級增長,以前未曾注意的“小”問題也明顯被放大。比如代碼中的變量命名,這屬于我們印象中的“小”問題,對于代碼量小的程序來說,將變量命名為a、b、aa、string1、string2等類型,并不會影響程序的編寫及閱讀,如果是代碼量大的程序,如果通篇都是字母、...
2018-09-14 11:06:43
9896
原創 C++ - 類的繼承和多態
總結以下有關類的概念,用于加深對類的理解??赡苡胁蛔慊蝈e誤之處,歡迎指出,大家共同進步。1、引言介紹類,繞不過去兩個概念:面向過程編程、面向對象編程(Object Oriented Programming)。其中面向過程的編程以C語言為代表的編程方式,面向過程程序的設計方式是:確定程序需要哪些過程,然后采用最合適的算法來實現;強調的是程序實現的過程以及實現過程中采用的算法。這程序開發的前期...
2018-09-13 18:11:40
186
原創 XML的概念及其使用
1、引言在實際的項目開發中,有時為了傳遞大量且又有一些組織關系的數據時,選擇何種格式來存儲數據就是需要考慮的問題了。假設要傳遞一組數據,需要包含:飛機類型(F22),重量(20000kg),航程(10000km);同時該飛機下掛載了幾種類型的導彈:導彈1(Misile1)、重量(100kg)、射程(100km),導彈2(Missile2)、重量(200kg)、射程(200km)。一般在使用...
2018-09-11 14:44:52
680
原創 Python - 實現對字符串的Z形轉換
基于Python實現對字符串的Z形轉換1、題目描述?????將字符串?"PAYPALISHIRING"?以Z字形排列成給定的行數:P A H NA P L S I I GY I R????之后從左往右,逐行讀取字符:"PAHNAPLSIIGYIR"????示例?1:輸入: s = "PAYPALISHIRING", numRows = 3...
2018-06-11 13:49:37
743
原創 Python - 實現對求解最長回文子串的動態規劃算法
基于Python實現對求解最長回文子串的動態規劃算法1、題目?? ?給定一個字符串?s,找到?s?中最長的回文子串。你可以假設?s?的最大長度為1000。示例 1:輸入: "babad"輸出: "bab"注意: "aba"也是一個有效答案。示例 2:輸入: "cbbd"輸出: "bb"2、求解? ?對于暴力求解在這里就不再驁述了,著重介紹如何利用動態...
2018-06-01 16:40:14
13073
4
原創 char與wchar_t(TCHAR)之間的相互轉換
char與wchar_t(TCHAR)之間的相互轉換1、wchar_t類型數據的初始化? ? char類型數據的初始化就不再驁述了;只說一下wchar_t類型的初始化:wchar_t[] = L"我是wchar_t類型的數據"; //wchar_t類型數據初始化時前面需加上宏L2、char與wchar_t之間的轉換? ? char與wchar_t類型數據之間的轉換不能通過賦值的方式進行,只能...
2018-05-17 11:31:38
23700
2
原創 Windows — 獲取系統時間
1、通過?localtime_s() 獲取當前時間1)、包含頭文件<time.h>2)、定義兩個變量:? ?time_t tt;struct tm pTM;3)、獲取時間:time(&tt);4)、轉換為本地時間:localtime_s(&pTm, &tt);5)、格式化顯示時間:sprintf(str, "時%d:...
2018-04-17 17:05:50
749
原創 通過vs2010編寫vb程序操作word與excel
通過vs2010編寫vb程序操作word與excel1、開發環境? ? 配置開發環境,將vs2010的c++開發環境轉換到vb的開發環境。? ? 點擊菜單欄->工具->導入和導出設置,打開如下所示界面:? ? 選中“重置所有設置”,點擊下一步:? ? 選中“否,***”,點擊下一步:? ? 選中“Visual Basic開發設置”,點擊完成,等待配置即可。配置完成之后,選擇新建Visu...
2018-04-09 16:10:31
5414
QT TCP Socket 通信示例
2017-10-24
棧的鏈式存儲與實現.
2020-07-29
棧的順序存儲與實現。
2020-07-29
tinyxml修改過的源文件
2018-09-11
word中表格導出到excel中的VBA示例
2018-04-09
空空如也
空空如也
TA創建的收藏夾 TA關注的收藏夾
TA關注的人 TA的粉絲