原创 lua5.3 獲取table的元素數量

最近更新了lua版本到最新的版本Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio 在運行舊的項目的時候出現瞭如下錯誤 xxx: attempt to call a nil value (

原创 lua 和 c交互詳解(一)

lua與c之間交互是通過“lua堆棧”通信的。不管是lua調用c還是c調用lua,都是通過操作lua堆棧實現的。顧名思義,lua堆棧也滿足後進先出的特點,入棧/出棧都圍繞棧頂進行的。與通用的棧不同的是,這個虛擬棧每個位置都對應一個索引,可

原创 lua閉包函數詳解

詞法定界:當一個函數內嵌套另一個函數的時候,內函數可以訪問外部函數的局部變量,這種特徵叫做詞法定界 table.sort(names,functin (n1,n2) return grades[n1]>grade

原创 init_cheap: VirtualAlloc pointer is null, Win32 error 487

用mingw編譯程序時報錯: 0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 AllocationBase 0x0, BaseAddres

原创 __init、__initdata和__exit、__exitdata

原文鏈接:https://blog.csdn.net/u010373922/article/details/23123785 由於4年前對於C語言和Linux的知識貧乏,所以當時對於模塊中的函數

原创 Centos7選定默認啓動的內核版本

#使用cat /boot/grub2/grub.cfg |grep menuentry  查看系統可用內核 [root@bigapp-slave27 ~]# cat /boot/grub2/grub.cfg |grep menuentry

原创 Beyond compare4密鑰

w4G-in5u3SH75RoB3VZIX8htiZgw4ELilwvPcHAIQWfwfXv5n0IHDp5hv 1BM3+H1XygMtiE0-JBgacjE9tz33sIh542EmsGs1yg638UxVfmWqNLqu- Zw9

原创 Linux ar命令

當我們的程序中有經常使用的模塊,而且這種模塊在其他程序中也會用到,這時按照軟件重用的思想,我們應該將它們生成庫,使得以後編程可以減少開發代碼量。這裏介紹命令ar,用來對庫操作。 1.ar基本用法   ar命令可以用來創建、修改庫,也可以從

原创 linux 的間隔定時器函數setitimer

1.介紹   在linux下如果定時如果要求不太精確的話,使用alarm()和signal()就行了(精確到秒),但是如果想要實現精度較高的定時功能的話,就要使用setitimer函數。   setitimer()爲Linux的API,並

原创 關於抓包出現TCP DUP ACK問題

 最近在跟一個CDN服務器端做對接,從CDN服務器下載內容(http),發現抓包出現非常多的Tcp Dup Ac​k異常提示。通過查閱質料得知Tcp Dup Ack xxx#y 代表了數據段丟失TCP狀態,xxx代表數據丟失的位置,#後代

原创 tcp retransmission原因

TCP協議是一個可靠的協議。它通過重新發送(retransmission)來實現TCP片段傳輸的可靠性。簡單的說,TCP會不斷重複發送TCP片段,直到片段被正確接收。   TCP片段丟失   TCP頭部的checksum 接收方(rece

原创 Linux內核調試sysfs

在調試驅動,可能需要對驅動裏的某些變量進行讀寫,或函數調用。可通過sysfs接口創建驅動對應的屬性,使得可以在用戶空間通過sysfs接口的show和store函數與硬件交互;   Syss接口可通過sysfs_create_group()

原创 Linux內核調試debugfs

DebugFS,顧名思義,是一種用於內核調試的虛擬文件系統,內核開發者通過debugfs和用戶空間交換數據。類似的虛擬文件系統還有procfs和sysfs等,這幾種虛擬文件系統都並不實際存儲在硬盤上,而是Linux內核運行起來後才建立起來

原创 IAR #pragma optimize 指令

IAR #pragma optimize 指令   #pragma optimize= none  //one of none, low, medium, high, size, or speed放在被優化函數前  #pragma opt

原创 STM32的IAP在線升級的源碼中的地址解讀

1.ApplicationAddress的內容含義     if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)         {