- Esta es una biblioteca de software multiplataforma sobre c, c++, unix4, posix.
- Esta biblioteca se ha desarrollado continuamente durante más de tres años y sirve como soporte subyacente para muchos proyectos grandes.
- Incorpora test unitarios, benchmark test, cmake, monitorización de procesos, daemon, librerías asíncronas libuv, lua, cpython, re2, json, yaml, mysql, redis, opencv, qt, lz4, oci...
- Esta es una biblioteca de software multiplataforma sobre c, c++, unix4, posix.
- Esta biblioteca ha estado en desarrollo continuo durante más de tres años y proporciona soporte básico para muchos proyectos a gran escala.
- Incorporación de tests unitarios, benchmarks, cmake, monitorización de procesos, daemons, librerías asíncronas libuv, lua, cpython, re2, json, yaml, mysql, redis, opencv, qt, lz4, oci...
La biblioteca debe ser liviana y optimizada. Intente usar un archivo para completar cada módulo. Intente no tener dependencias entre los módulos. Intente copiar algunos archivos solo para completar la función de destino. Sobre la base de lograr eficiencia, el orden de uso de la biblioteca -> clib ->stl -> unix api -> posix -> os api. Es necesario escribir más pruebas unitarias, puntos de referencia y pruebas distribuidas paralelas de Docker en k8s.
La biblioteca debe ser liviana y optimizada, y un módulo debe completarse con un archivo tanto como sea posible. No debe haber dependencias entre los módulos. Intente copiar varios archivos por separado para completar la función de destino. Orden de uso de la biblioteca-> clib-> stl-> unix api-> posix-> os api Para escribir más pruebas unitarias, pruebas comparativas y acopladores en pruebas distribuidas paralelas de k8.
El código de la biblioteca principal de ccxx se encuentra en la carpeta ccxx del directorio raíz y tiene un tamaño aproximado de 14 MB. La mayoría de los módulos utilizan un archivo .cpp para completar sus funciones y el método de clase estática predeterminado se llama directamente). Para ver ejemplos, consulte los directorios de muestras y pruebas.
- cxappenv.h: entorno de ejecución (nombre del programa en ejecución, directorio de trabajo, variables de entorno)
- cxinterinfo.h: Interfaz de entrada y salida de información del programa. Las implementaciones incluyen: cxlog.h (registro), CxConsoleInterinfo (terminal)
- cxfile.h: sistema de archivos
- cxsocket.h: comunicación de red
- cxthread.h: señal de hilo, IPC
- cxapplication.h es similar a Event Loop en (Node.js). El mecanismo de señal de espera se utiliza para sondear la cola de eventos y ejecutarla. Actualmente involucrados en Event Loop están (cxchannel.h, cxtimer.h). cxapplication_qt.h es la participación de Qt en el Event Loop de Qt.
- cxchannel.h: (para crear una instancia para su uso) abre un hilo independiente para enviar, recibir y monitorear. Los datos y eventos recibidos se envían al bucle de eventos del hilo principal, por lo que no es necesario bloquear los datos entre líneas. Las implementaciones son: cxchannel_udp.h, cxchannel_tcpserver.h, cxchannel_tcpclient.h, cxchannel_serial.h
- cxcrc.h: verificación de datos
- cxdatabase.h: (para crear una instancia para su uso) una clase de interfaz que unifica operaciones de datos en forma de tablas. Las implementaciones incluyen: cxdatabase_odbc.h, cxdatabase_sqlite.h (llame directamente al sqlite3.c oficial para implementar funciones relacionadas)
- cxprocess.h: proceso del sistema
- cxprocmutex.h: bloqueo de proceso
- cxtimer.h: (para crear una instancia para su uso) temporizador
- cxtime.h: hora y fecha
- cxuuid.h: GUID, UUID
- cxsharememory.h: memoria compartida, comunicación entre procesos IPC (comunicación entre procesos)
- cxprofile.h: (para crear una instancia para su uso) el archivo de configuración se cierra en forma de tabla. Las implementaciones incluyen: cxprofile_skv_json.h, cxprofile_skv_xml.h. (skv: valor clave de sección)
- cxencoding.h: implementar la conversión entre GBK y UTF-8
- Carpeta cxlua: expone el bloque de funciones ccxx en modo lua, lua_run.h es la entrada a main.
- Otros paquetes de terceros incluyen (cxhiredis.h (cierre de Redis), cxtinyxml.h (lectura y escritura de archivos XML), cxrapidjson.h (expresión regular), lz4.h (compresión y descompresión))
- El código fuente de gtest, luv, benchmark y yaml se colocó en tercer lugar.
- openssl y curl agregan bibliotecas usando archivos de encabezado
- c++ llama a python(callpython)(./ccxx/sample/callpython), python llama a c++(cxpython)(./ccxx/ccxx/cxpython, consulta https://github.com/oudream/hello-cmake).
- El código de muestra oficial de opencv se incluye con cmake y se puede compilar para facilitar las pruebas.
El código de la biblioteca principal de ccxx se encuentra en la carpeta ccxx en el directorio raíz (aproximadamente 14 MB. Los módulos usan principalmente un archivo .cpp para completar la función y el método de clase estática predeterminado se llama directamente). el directorio de muestras y pruebas.
- cxappenv.h: entorno de ejecución (nombre del programa de ejecución, directorio de trabajo, variables de entorno)
- cxinterinfo.h: interfaz de entrada y salida de información del programa. Las implementaciones son: cxlog.h (log), CxConsoleInterinfo (terminal).
- cxfile.h: sistema de archivos
- cxsocket.h: comunicación de red
- cxthread.h: señal de hilo, IPC
- cxapplication.h es similar al bucle de eventos en (Node.js). El mecanismo de señal de espera se utiliza para sondear y ejecutar la cola de eventos que participa actualmente en el bucle de eventos (cxchannel.h, cxtimer.h). el bucle de eventos donde Qt participa en Qt.
- cxchannel.h: (para crear una instancia para su uso) abra un hilo separado para enviar, recibir y monitorear, recibir datos y eventos enviados al bucle de eventos del hilo principal, por lo que no es necesario bloquear los datos entre líneas. : cxchannel_udp.h, cxchannel_tcpserver.h, cxchannel_tcpclient.h, cxchannel_serial.h
- cxcrc.h: verificación de datos
- cxdatabase.h: (para crear una instancia para su uso) clase de interfaz que unifica las operaciones de datos en una tabla. Las implementaciones son: cxdatabase_odbc.h, cxdatabase_sqlite.h (llame directamente al sqlite3.c oficial para lograr funciones relacionadas).
- cxprocess.h: proceso del sistema
- cxprocmutex.h: bloqueo de proceso
- cxtimer.h: (para crear una instancia para usar) temporizador
- cxtime.h: hora y fecha
- cxuuid.h: GUID, UUID
- cxsharememory.h: memoria compartida, IPC (Comunicación entre procesos)
- cxprofile.h: (para crear una instancia para su uso) El perfil está cerrado para su uso como tabla. Las implementaciones son: cxprofile_skv_json.h, cxprofile_skv_xml.h (skv: valor de clave de sección).
- cxencoding.h: convierte entre GBK y UTF-8
- Carpeta cxlua: expone los bloques de funciones ccxx en lua, lua_run.h es la entrada principal.
- Otros paquetes de terceros incluyen (cxhiredis.h (cerrado por Redis), cxtinyxml.h (lectura y escritura de archivos XML), cxrapidjson.h (expresión regular), lz4.h (compresión y descompresión))
- gtest, luv, benchmark, el código fuente propio de yaml se ha colocado en 3.º.
- openssl, curl es un archivo de encabezado más una biblioteca
- c++ llama a python (callpython) (./ccxx/sample/callpython), python llama a c++ (cxpython) (./ccxx/ccxx/cxpython). Consulte [https://github.com/oudream/hello-cmake] (https). //github.com/oudream/hello-cmake)
- El código de muestra oficial para opencv se ha incluido con cmake y se puede compilar para facilitar las pruebas.
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 es una biblioteca para conectar bases de datos con odbc
- ODBC: ccxx_database_odbc es una biblioteca que utiliza odbc para conectarse a la base de datos
- UUID: excepto en Windows, CxUuid (uuid) se implementa utilizando la biblioteca libuuid
- UUID: excepto en Windows, CxUuid (uuid) se implementa utilizando la biblioteca 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)
Imágenes compiladas para cada sistema operativo (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
# ...
todo: CxDatabase::loadSql: si está cargado, recuento > retorno máximo
todo: agregar canal libuv
todo: salir o señal: función reentrante, por ejemplo: CxLog() <<