- هذه مكتبة برامج مكتبة عبر الأنظمة الأساسية حول c، c++، unix4، posix.
- تم تطوير هذه المكتبة بشكل مستمر لأكثر من ثلاث سنوات، وهي بمثابة الدعم الأساسي للعديد من المشاريع الكبيرة.
- دمج اختبار الوحدة، اختبار الأداء، cmake، مراقبة العمليات، البرنامج الخفي، المكتبات غير المتزامنة libuv، lua، cpython، re2، json، yaml، mysql، redis، opencv، qt، lz4، oci ...
- هذه مكتبة برامج مكتبة عبر الأنظمة الأساسية حول c، c++، unix4، posix.
- ظلت هذه المكتبة قيد التطوير المستمر لأكثر من ثلاث سنوات، وهي توفر الدعم الأساسي للعديد من المشاريع واسعة النطاق.
- اختبارات الوحدة المدمجة، المعايير، cmake، مراقبة العمليات، الشياطين، المكتبات غير المتزامنة libuv، lua، cpython، re2، json، yaml، mysql، redis، opencv، qt، lz4، oci...
يجب أن تكون المكتبة خفيفة الوزن ومبسطة. حاول استخدام ملف واحد لإكمال كل وحدة. حاول ألا يكون لديك أي تبعيات بين الوحدات. حاول نسخ بعض الملفات بمفردها لإكمال الوظيفة المستهدفة. وعلى أساس تحقيق الكفاءة، ترتيب استخدام المكتبة -> clib ->stl -> unix api -> posix -> os api. من الضروري كتابة المزيد من اختبارات الوحدات والمعايير وعامل الإرساء في الاختبارات الموزعة المتوازية لـ k8s.
يجب أن تكون المكتبة خفيفة الوزن ومبسطة، ويجب إكمال وحدة واحدة بملف واحد قدر الإمكان، ويجب ألا تكون هناك تبعيات بين الوحدات. حاول نسخ عدة ملفات بشكل منفصل لإكمال الوظيفة المستهدفة ترتيب استخدام المكتبة-> clib-> stl-> unix api-> posix-> os api لكتابة المزيد من اختبارات الوحدة، والقياس، وعامل الإرساء في الاختبار الموزع المتوازي لـ k8s.
رمز المكتبة الأساسية لـ ccxx موجود في مجلد ccxx في الدليل الجذر، ويبلغ حجمه حوالي 14 ميجابايت. تستخدم معظم الوحدات ملف .cpp لإكمال وظائفها، ويتم استدعاء طريقة الفئة الثابتة الافتراضية مباشرة). للحصول على أمثلة، الرجاء الرجوع إلى أدلة العينة والاختبار.
- cxappenv.h: بيئة التشغيل (اسم البرنامج قيد التشغيل ودليل العمل ومتغيرات البيئة)
- cxinterinfo.h: واجهة إدخال وإخراج المعلومات للبرنامج. تتضمن التطبيقات ما يلي: cxlog.h (log)، وCxConsoleInterinfo (المحطة الطرفية)
- cxfile.h: نظام الملفات
- cxsocket.h: اتصالات الشبكة
- cxthread.h: إشارة الموضوع، IPC
- يشبه cxapplication.h حلقة الأحداث في (Node.js). يتم استخدام آلية إشارة الانتظار لاستقصاء قائمة انتظار الأحداث وتنفيذها. المشاركة حاليًا في حلقة الأحداث هي (cxchannel.h، cxtimer.h). cxapplication_qt.h هي مشاركة Qt في حلقة الأحداث الخاصة بـ Qt.
- cxchannel.h: (يتم إنشاء مثيل له للاستخدام) يفتح سلسلة رسائل مستقلة للإرسال والاستقبال والمراقبة. يتم دفع البيانات والأحداث المستلمة إلى حلقة الأحداث الخاصة بالسلسلة الرئيسية، لذلك لا يلزم قفل البيانات عبر الخطوط. التطبيقات هي: cxchannel_udp.h، cxchannel_tcpserver.h، cxchannel_tcpclient.h، cxchannel_serial.h
- cxcrc.h: التحقق من البيانات
- cxdatabase.h: (سيتم إنشاء مثيل لها للاستخدام) فئة واجهة تعمل على توحيد عمليات البيانات في شكل جداول. تتضمن التطبيقات ما يلي: cxdatabase_odbc.h، cxdatabase_sqlite.h (اتصل مباشرة بـ sqlite3.c الرسمي لتنفيذ الوظائف ذات الصلة)
- cxprocess.h: عملية النظام
- cxprocmutex.h: قفل العملية
- cxtimer.h: (سيتم إنشاء مثيل له للاستخدام) مؤقت
- cxtime.h: الوقت والتاريخ
- cxuuid.h: GUID، UUID
- cxsharememory.h: الذاكرة المشتركة، الاتصال بين العمليات IPC (الاتصال بين العمليات)
- cxprofile.h: (سيتم إنشاء مثيل له للاستخدام) يتم إغلاق ملف التكوين على شكل جدول. تتضمن التطبيقات: cxprofile_skv_json.h، cxprofile_skv_xml.h. (skv: قيمة مفتاح القسم)
- cxencoding.h: تنفيذ التحويل بين GBK وUTF-8
- مجلد cxlua: يعرض كتلة وظيفة ccxx في وضع lua، lua_run.h هو المدخل إلى main.
- تتضمن حزم الطرف الثالث الأخرى (cxhiredis.h (إغلاق Redis)، cxtinyxml.h (قراءة وكتابة ملف Xml)، cxrapidjson.h (تعبير عادي)، lz4.h (الضغط وإلغاء الضغط))
- تم وضع الكود المصدري لـ gtest وluv وBenchmark وyaml في المرتبة الثالثة.
- يقوم opensl وcurl بإضافة مكتبات باستخدام ملفات الرأس
- c++ call python(callpython)(./ccxx/sample/callpython)، python call c++(cxpython)(./ccxx/ccxx/cxpython) راجع https://github.com/oudream/hello-cmake
- تم تضمين نموذج التعليمات البرمجية الرسمي لـ opencv مع cmake ويمكن تجميعه لتسهيل الاختبار.
يوجد رمز المكتبة الأساسية لـ ccxx في مجلد ccxx في الدليل الجذر (حوالي 14 ميجابايت). تستخدم الوحدات في الغالب ملف .cpp لإكمال الوظيفة، ويتم استدعاء طريقة الفئة الثابتة الافتراضية مباشرةً دليل العينة والاختبار.
- cxappenv.h: بيئة التشغيل (اسم برنامج التشغيل ودليل العمل ومتغيرات البيئة)
- cxinterinfo.h: واجهة إدخال وإخراج معلومات البرنامج هي: cxlog.h (log)، CxConsoleInterinfo (المحطة الطرفية).
- cxfile.h: نظام الملفات
- cxsocket.h: اتصالات الشبكة
- cxthread.h: إشارة الموضوع، IPC
- يشبه cxapplication.h حلقة الأحداث في (Node.js). يتم استخدام آلية إشارة الانتظار لاستقصاء قائمة انتظار الأحداث وتنفيذها حلقة الحدث حيث تشارك Qt في Qt.
- cxchannel.h: (يتم إنشاء مثيل له للاستخدام) افتح سلسلة رسائل منفصلة لإرسال واستقبال ومراقبة واستقبال البيانات والأحداث ودفعها إلى حلقة الأحداث للسلسلة الرئيسية، لذلك لا يلزم قفل البيانات عبر الأسطر : cxchannel_udp.h، cxchannel_tcpserver.h، cxchannel_tcpclient.h، cxchannel_serial.h
- cxcrc.h: التحقق من البيانات
- cxdatabase.h: (سيتم إنشاء مثيل لها للاستخدام) فئة الواجهة التي توحد عمليات البيانات في الجدول، التطبيقات هي: cxdatabase_odbc.h، cxdatabase_sqlite.h (استدعاء sqlite3.c الرسمي مباشرة لتحقيق الوظائف ذات الصلة).
- cxprocess.h: عملية النظام
- cxprocmutex.h: قفل العملية
- cxtimer.h: (يتم إنشاء مثيل له للاستخدام) مؤقت
- cxtime.h: الوقت والتاريخ
- cxuuid.h: GUID، UUID
- cxsharememory.h: الذاكرة المشتركة، IPC (الاتصال بين العمليات)
- cxprofile.h: (سيتم إنشاء مثيل له للاستخدام) تم إغلاق ملف التعريف لاستخدامه كجدول. التطبيقات هي: cxprofile_skv_json.h، cxprofile_skv_xml.h (skv: قيمة مفتاح القسم).
- cxencoding.h: التحويل بين GBK وUTF-8
- مجلد cxlua: يعرض كتل وظائف ccxx في lua، lua_run.h هو الإدخال الرئيسي.
- تتضمن حزم الطرف الثالث الأخرى (cxhiredis.h (مغلق بواسطة Redis)، cxtinyxml.h (ملف Xml للقراءة والكتابة)، cxrapidjson.h (تعبير عادي)، lz4.h (الضغط وإلغاء الضغط))
- تم وضع كود المصدر الخاص بـ gtest وluv وBenchmark وyaml في المركز الثالث.
- Opensl، Curl هو ملف رأس بالإضافة إلى المكتبة
- استدعاء c++ بيثون (callpython) (./ccxx/sample/callpython)، استدعاء python c++ (cxpython) (./ccxx/ccxx/cxpython) راجع [https://github.com/oudream/hello- cmake] (https //github.com/oudream/hello-cmake)
- تم تضمين نموذج التعليمات البرمجية الرسمي لـ opencv مع cmake ويمكن تجميعه للاختبار السهل.
git clone https://github.com/oudream/ccxx.git
# You can extract several related files for use as needed
# 可以根据需要提取其中几个相关文件来用的
docker run -d -p 2235:22 oudream/ubuntu-ccxx-env:18.04.12
ssh root@localhost -p 2235 -AXY -v
# password is: 123456
# You can run the following examples to experiment (可以运行以下样例来试验)
/opt/ccxx/build/deploy/unix/bin_d/cxtest_timer
# or
/opt/ccxx/build/deploy/unix/bin_d/cxtest_channel_udp_client1
# or
/opt/ccxx/build/deploy/unix/bin_d/cxtest_channel_udp_server1
# or
/opt/ccxx/build/deploy/unix/bin_d/cxsample_lua
# or
/opt/ccxx/build/deploy/unix/bin_d/benchmark_cxstring
# ctrl + c to exit
^c
- ODBC: ccxx_database_odbc هي مكتبة لتوصيل قواعد البيانات بـ odbc
- ODBC: ccxx_database_odbc هي مكتبة تستخدم odbc للاتصال بقاعدة البيانات
- UUID: باستثناء نظام التشغيل windows، يتم تنفيذ CxUuid (uuid) باستخدام مكتبة libuuid
- UUID: باستثناء نظام التشغيل windows، يتم تنفيذ CxUuid (uuid) باستخدام مكتبة libuuid
# ## mac
brew install unixodbc
# ## Ubuntu: -D"OTL_ODBC_UNIX" -lodbc
sudo apt-get install unixodbc unixodbc-dev
sudo apt-get install uuid-dev
# ## CentOS: -D"OTL_ODBC_UNIX" -lodbc
sudo yum install unixODBC-devel
sudo yum install libuuid-devel
# git and compile
git clone https://github.com/oudream/ccxx.git
cd ccxx
cmake . -DCMAKE_BUILD_TYPE=Debug --build . -B " ./build/cmake-gcc "
cd ./build/cmake-gcc && make
# try run gtest (google test)
make test
# try run app
cd /opt/ccxx/build/deploy/unix/bin_d
./cxtest_timer
./cxtest_channel_udp_client1
./cxtest_channel_udp_server1
./cxsample_lua
./benchmark_cxstring
# ...
vim /opt/ccxx/build/cmake/local.all.config.cmake
# e.g. modify -> set(gs_project_enable_uv 1) to set(gs_project_enable_uv 0)
# e.g. modify -> set(gs_project_enable_openssl 1) to set(gs_project_enable_openssl 0)
الصور المجمعة لكل نظام تشغيل (cn)
# ## 1 step: build and install OpenCV 4.1.2 (4c71dbf)
# # https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
# # https://opencv.org/releases/
# cd /opt/<my_working_directory>
# ## 1 step: apt insall depend libs
# libopencv-dev
sudo echo " deb http://security.ubuntu.com/ubuntu xenial-security main " | tee /etc/apt/sources.list.d/libjasper.list &&
sudo apt update -y ; apt upgrade -y &&
sudo apt install -y gcc g++ cmake build-essential gdb gdbserver git
unixodbc unixodbc-dev libcurl4-openssl-dev uuid uuid-dev libssl-dev libncurses5-dev
qt5-default libqt5svg5 libqt5svg5-dev qtcreator
libssl-dev libncurses5-dev
libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
software-properties-common
# ## 2 step: git code and make it
cd /opt &&
git clone https://github.com/opencv/opencv.git &&
cd /opt/opencv && git reset --hard 4c71dbf &&
mkdir build && cd build &&
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. &&
make -j7 && sudo make install
# ## 3 step: down source and compile
cd /opt &&
git clone https://github.com/oudream/ccxx.git &&
cd ccxx &&
cmake . -DCMAKE_BUILD_TYPE=Debug -DCCXX_BUILD_TYPE=all --build . -B " ./build/cmake-gcc " &&
cd build/cmake-gcc && make
# ## 4 step: run apps
/opt/ccxx/build/deploy/unix/bin_d/cxtest_timer
# or
/opt/ccxx/build/deploy/unix/bin_d/cxtest_channel_udp_client1
# or
/opt/ccxx/build/deploy/unix/bin_d/cxtest_channel_udp_server1
# or
/opt/ccxx/build/deploy/unix/bin_d/cxsample_lua
# or
/opt/ccxx/build/deploy/unix/bin_d/benchmark_cxstring
# ctrl + c to exit
^c
# ...
ما يجب القيام به: CxDatabase::loadSql: إذا تم تحميل العد> الحد الأقصى للعائد
ما يجب القيام به: إضافة قناة libuv
ما يجب القيام به: الخروج أو الإشارة: وظيفة إعادة الدخول على سبيل المثال: CxLog() <<