身邊奇聞趣事#
根據Github Trendings的統計,今日(2024-03-27統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下:
開發語言 | 項目數量 |
C項目 | 10 |
C++項目 | 1 |
HTML項目 | 1 |
我的電視是一個開源的安卓電視直播應用,內置了直播源。
Cosmopolitan Libc是一個C庫,可以實現一次構建,隨處運行的語言,類似于Java,但不需要解釋器或虛擬機。相反,它重新配置GCC和Clang以輸出符合POSIX標準的多語言格式,在Linux + Mac + Windows + FreeBSD + OpenBSD + NetBSD + BIOS上以最佳性能和最小的占用空間運行。
Memcached是一個面向分布式系統設計的高性能多線程事件驅動的鍵值緩存存儲。它是解決奇怪行為和超時問題的寶貴資源,并提供了有趣的使用教程。
ImageMagick是一個免費的開源軟件套件,用于編輯和處理數字圖像,支持包括JPEG、PNG、GIF、TIFF和PDF在內的多種文件格式。
cJSON是用ANSI C編寫的超輕量級JSON解析器。
該存儲庫包含用于 Microsoft Visual Studio 和 Windows Driver Kit (WDK) 的驅動程序示例,包括通用 Windows 驅動程序和僅桌面驅動程序示例。這些示例旨在為各種硬件形態因素(從手機到臺式電腦)提供通用 Windows 驅動程序支持的基礎,并且旨在與 Visual Studio 2022 和 Windows Driver Kit (WDK) 11 一起使用。
GmSSL is a domestically produced commercial open-source cryptographic library developed independently by Peking University, which comprehensively covers the functions of national cryptographic algorithms, standards, and secure communication protocols. It supports mainstream operating systems and processors, including mobile platforms, and typical domestic cryptographic hardware such as cryptographic keys and cards. It provides feature-rich command-line tools and various programming interfaces in multiple compiled languages.
Apache AGE是PostgreSQL的一個擴展,它增加了圖數據庫支持,使用戶能夠在現有的關系數據庫上利用圖數據庫。它經過優化,能夠處理復雜的連接圖數據,并支持openCypher查詢、多個圖以及分層圖標簽組織。該項目旨在通過將PostgreSQL的功能和特性與圖模型相結合,提供一個連貫且易于實現的多模型數據庫。它的設計簡單易用,支持各種平臺,并提供不同編程語言的驅動程序。此外,Apache AGE Viewer是一個用戶界面,提供數據可視化和探索功能,增強了Apache AGE的能力。
Slurm是一個開源的集群資源管理和作業調度系統,提供對計算節點的獨占和/或非獨占訪問,執行和監視分配節點上的工作的框架,并管理沖突的資源請求。它簡單、可擴展、便攜、容錯和互連不可知,并且僅在Linux下進行了測試。
該項目是一個名為PlaceHolderKV的新型開源鍵值存儲,它是Redis項目的一個分支。README目前正在建設中,該項目旨在構建一個新的社區驅動的高性能鍵值存儲。它提供了有關構建、測試、修復構建問題、選擇內存分配器、構建TLS支持、運行和安裝PlaceHolderKV的信息。
zlog是一個高可靠性、高性能、線程安全、靈活、概念清晰的純C日志函數庫。
zlog在效率、功能、安全性上大大超過了log4c,并且是用c寫成的,具有比較好的通用性。
zlog有這些特性:
zlog倉庫鏈接:
https://github.com/HardySimpson/zlog
zlog使用手冊:
http://hardysimpson.github.io/zlog/UsersGuide-CN.html
test.c:
#include <stdio.h>
#include "zlog.h"
int main(int argc, char** argv)
{
int rc;
zlog_category_t *zc;
rc=zlog_init("test.conf");
if (rc)
{
printf("init failed\n");
return -1;
}
zc=zlog_get_category("my_cat");
if (!zc)
{
printf("get cat fail\n");
zlog_fini();
return -2;
}
zlog_info(zc, "嵌入式大雜燴");
zlog_info(zc, "hello, zlog");
zlog_fini();
return 0;
}
test.conf:
xmake是一個跨平臺的安裝(編譯)工具。
xmake 是一個基于 Lua 的輕量級跨平臺構建工具,使用 xmake.lua 維護項目構建,相比 makefile/CMakeLists.txt,配置語法更加簡潔直觀,對新手非常友好,短時間內就能快速入門,能夠讓用戶把更多的精力集中在實際的項目開發上。
xmake官網:
https://xmake.io/
多任務并行編譯測試:
單任務編譯測試:
官網上的內容很豐富,對xmake做了很詳細的介紹,感興趣的小伙伴可以自己去了解學習。
gear-lib是一組通用的C基礎庫。
包含如下內容:
gear-lib使用起來很方便,可以作為我們日常開發中的工具庫。
gear-lib地址:
https://github.com/gozfree/gear-lib
inih是一個C 語言編寫的 INI 文件解析器。
ini 文件是 Initialization File 的縮寫,即初始化文件。INI文件由節、鍵、值組成,注解使用分號表示(;)
例子:
[ip] ;Section1
ip_addr=192.168.1.103
[test] ;Section2
name=ZhengN
num=66
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ini.h"
typedef struct
{
const char* ip_addr;
const char* name;
int num;
} configuration;
static int handler(void* user, const char* section, const char* name,
const char* value)
{
configuration* pconfig=(configuration*)user;
#define MATCH(s, n) strcmp(section, s)==0 && strcmp(name, n)==0
if (MATCH("ip", "ip_addr"))
{
pconfig->ip_addr=strdup(value);
}
else if (MATCH("test", "name"))
{
pconfig->name=strdup(value);
}
else if (MATCH("test", "num"))
{
pconfig->num=atoi(value);
}
else
{
return 0; /* unknown section/name, error */
}
return 1;
}
int main(int argc, char* argv[])
{
configuration config;
config.ip_addr=NULL; /* set defaults */
config.name=NULL;
config.num=0;
if (ini_parse("ip.ini", handler, &config) < 0)
{
printf("Can't load 'ip.ini'\n");
return 1;
}
printf("Config loaded from 'ip.ini': ip_addr=%s, name=%s, num=%d\n",
config.ip_addr, config.name, config.num);
if (config.ip_addr)
free((void*)config.ip_addr);
if (config.name)
free((void*)config.name);
return 0;
}
queue.h是Linux、FreeBSD中的一個很實用的頭文件。這個頭文件里全是宏定義操作,所以其不僅可以使用在Linux/嵌入式Linux項目中,也可以使用在單片機項目中。
它使用宏實現了如下數據結構:
所有的數據結構都支持如下功能:
我們可以在Linux系統的如下路徑中找到這個頭文件:
/usr/include/sys/queue.h
也可以通過如下網址查看:
https://code.woboq.org/userspace/glibc/misc/sys/queue.h.html
/*
* Singly-linked List definitions.
*/
#define SLIST_HEAD(name, type) \
struct name { \
struct type *slh_first; /* first element */ \
}
#define SLIST_HEAD_INITIALIZER(head) \
{ NULL }
#define SLIST_ENTRY(type) \
struct { \
struct type *sle_next; /* next element */ \
}
/*
* Singly-linked List functions.
*/
#define SLIST_INIT(head) do { \
(head)->slh_first=NULL; \
} while (/*CONSTCOND*/0)
#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
(elm)->field.sle_next=(slistelm)->field.sle_next; \
(slistelm)->field.sle_next=(elm); \
} while (/*CONSTCOND*/0)
#define SLIST_INSERT_HEAD(head, elm, field) do { \
(elm)->field.sle_next=(head)->slh_first; \
(head)->slh_first=(elm); \
} while (/*CONSTCOND*/0)
#define SLIST_REMOVE_HEAD(head, field) do { \
(head)->slh_first=(head)->slh_first->field.sle_next; \
} while (/*CONSTCOND*/0)
#define SLIST_REMOVE(head, elm, type, field) do { \
if ((head)->slh_first==(elm)) { \
SLIST_REMOVE_HEAD((head), field); \
} \
else { \
struct type *curelm=(head)->slh_first; \
while(curelm->field.sle_next !=(elm)) \
curelm=curelm->field.sle_next; \
curelm->field.sle_next=\
curelm->field.sle_next->field.sle_next; \
} \
} while (/*CONSTCOND*/0)
#define SLIST_FOREACH(var, head, field) \
for((var)=(head)->slh_first; (var); (var)=(var)->field.sle_next)
/*
* Singly-linked List access methods.
*/
#define SLIST_EMPTY(head) ((head)->slh_first==NULL)
#define SLIST_FIRST(head) ((head)->slh_first)
#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
https://github.com/DaveGamble/cJSON.git
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
cJSON是C語言編寫的用于解析與組包JSON數據的一個庫。
https://github.com/protocolbuffers/protobuf
Protocol Buffers,是Google公司開發的一種數據格式,類似于XML能夠將結構化數據序列化,可用于數據存儲、通信協議等方面。它不依賴于語言和平臺并且可擴展性極強。
JSON類型數據可讀性很好,但是整個數據包中會帶有一些無用的數據,自然會在一定程度上帶來通信負擔。protobuf是一種相對JSON來說更為輕量的數據格式。
protobuf的優點:
如果文章對你有幫助,麻煩幫忙點贊、收藏、轉發,謝謝!
私信回復【嵌入式書籍】,可獲取博主精心整理的嵌入式電子書一份
tml+css+js 黑神話悟空網頁設計與制作
網站介紹
1、網站程序:主要使用網頁三劍客html+css+javaScript實現網頁設計與制作,完成網站的功能設計。制作適用于任何瀏覽器或設備的精美網站。
2、網站素材:搜集或制作適合網頁風格和尺寸的圖片,追求優質視覺體驗。
3、網站文件:網站系統文件種類包含html網頁結構文件、css網頁樣式文件、js網頁特效文件、images網頁圖片文件等。
4、網頁編輯:網頁作品代碼簡單,可使用任意HTML編輯軟件(如:Dreamweaver、Sublime 、HBuilder、Vscode 、Webstorm、Notepad++ 、Text 等任意編輯軟件進行編輯修改等操作)。
5、網站布局:主要采用浮動布局。兼容各大主流瀏覽器、顯示效果穩定。
6、網頁效果預覽:雙擊html文件或者拖拽html文件到瀏覽器打開,即可預覽當前網頁效果。
網站亮點
1、視覺設計:排版布局極簡設計,優質的視覺體驗等。
2、動效交互:幻燈效果、入場動畫、按鈕點擊、視差功能、錨點功能、圖片畫廊功能等。
網站文件目錄
(1)index.html:首頁html;
(2)style:靜態資源目錄,存放css網頁樣式文件、js網頁特效文件、images網頁圖片文件等;
(3)css文件夾:存放網頁所有css樣式表文件文件;
(4)images文件夾:存放網頁所有圖片資源文件;
(5)js文件夾:存放網頁所有網頁特效文件;
適用于課程設計、HTML期末大作業等。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。