当前位置: 首页 > news >正文

可以赚钱做任务的网站有哪些如何给网站做外部优化

可以赚钱做任务的网站有哪些,如何给网站做外部优化,安阳专业seo地址,深圳外贸英语培训0. 简介 参数分离对于绝大多数算法开发来说收益是非常大的#xff0c;因为我们都知道#xff0c;随着平台的更替#xff0c;很多时候如果说数据流和算法交叠在一起#xff08;即接口与实现合在一起#xff09;。这将有可能会导致在迁移平台时候会导致代码难以维护#x…0. 简介 参数分离对于绝大多数算法开发来说收益是非常大的因为我们都知道随着平台的更替很多时候如果说数据流和算法交叠在一起即接口与实现合在一起。这将有可能会导致在迁移平台时候会导致代码难以维护并有可能会造成莫名的Bug。为了使代码更易于维护和扩展在修改通信接口时不需要修改相关的算法代码本文的下面将会介绍几种常用的方法。 1. 通过动态链接库完成链接 动态链接库Dynamic Link Library简称DLL是一种在操作系统中用于共享代码和数据的机制。它是一种可执行的二进制文件可以被多个程序同时使用以提高代码的重用性和模块化程度。在C算法分离中动态链接库可以用于将算法代码从应用程序中分离出来使得算法可以独立开发、测试和优化同时也方便应用程序的调用和升级。 使用动态链接库可以使得算法代码和应用程序代码分别编译和链接从而实现分离。这样一来算法代码的修改和升级不会对应用程序造成影响而应用程序也不必重新编译和链接。动态链接库还可以提高代码的重用性和可维护性因为同一份动态链接库可以被多个应用程序使用而且如果需要更新动态链接库只需替换原文件即可。 对于动态链接库来说主要分成两步。首先需要在算法代码中明确定义导出函数Export Function以供应用程序调用。 比如说我们会创建一个函数my_pack_test.cpp #include stdio.h void foobar(int i) {printf(Printing from my_pack_test.so %d\n, i); }CMakeList.txt # include_directories( 这个括号里添加此项目依赖的头文件路径 )include_directories(../include) add_library(my_pack_test # SHARED 字段指定testJni为动态链接库 SHARED # my_pack_test,为testJni库的cpp文件生成testJni所需要的cpp都写到此处 my_pack_test.cpp ) # libgadl.so 为该testJni库需要链接的so库 target_link_libraries(testJni /home/lib/libgdal.so) install(TARGETS my_pack_test LIBRARY DESTINATION lib)这样我们就可以生成一个.so文件了。然后我们就需要在应用程序中使用动态链接库的导入函数Import Function以便在程序运行时动态加载动态链接库并调用其中的算法函数。最后需要将动态链接库文件放置在应用程序能够搜索到的路径下以便程序能够找到它。 #include iostream #include mytool.h // include the lib header// include shared lib load #ifdef _WIN32 #include windows.h #else #include dlfcn.h # in linux, should also link to dl system library when build #endif// define shared lib load handler typedef MyTool *(*CreateMyToolFunc)();#ifdef _WIN32 HINSTANCE gDllHandler nullptr; const char *gDefaultSharedLibPath mytool.dll; // here put it the same path #else void *gSoHandler nullptr; // 为上面生成的.so文件的绝对路径 const char *gDefaultSharedLibPath libmytool.so; // here put it the same path, some linux must use ./libmytool.so #endifint main() {#ifdef _WIN32// load shared libgDllHandler LoadLibrary(gDefaultSharedLibPath);if (!gDllHandler)std::cout load shared lib failed std::endl;CreateMyToolFunc create_mytool (CreateMyToolFunc)(GetProcAddress(gDllHandler, CreateMyTool));MyTool *my_tool create_mytool(); // get the derived class instance from shared libmy_tool-fun1();int z my_tool-fun2(2, 3);printf(z: %d, z);// when all done, unload shared libFreeLibrary(gDllHandler);gDllHandler nullptr; #else// 加载指定的 .so 文件gSoHandler dlopen(gDefaultSharedLibPath, RTLD_LAZY);if (!gSoHandler)std::cout load shared lib failed std::endl;CreateMyToolFunc create_mytool (CreateMyToolFunc)(dlsym(gSoHandler, CreateMyTool));// 查找函数create_mytool并返回函数指针MyTool *my_tool create_mytool(); // get the derived class instance from shared lib// 调用对应的foobar函数打印输出my_tool-fun1();int z my_tool-fun2(2, 3);printf(z: %d, z);// when all done, unload shared libdlclose(gSoHandler);gSoHandler nullptr; #endifreturn 0; }dlopen该函数将打开一个新库并把它装入内存。该函数主要用来加载库中的符号这些符号在编译的时候是不知道的。这种机制使得在系统中添加或者删除一个模块时都不需要重新进行编译。 dlsym在打开的动态库中查找符号的值。 dlclose关闭动态库。 dlerror返回一个描述最后一次调用dlopen、dlsym或dlclose的错误信息的字符串。 2. 通过进程完成链接 2.1 fork()完成子进程和父进程的操作 pid_t fork(void); 0 子进程 子进程PID(大于0的整数)父进程 -1 出错 使用fork函数得到的子进程从父进程的继承了整个进程的地址空间包括 进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。 子进程与父进程的区别在于 1、父进程设置的锁子进程不继承因为如果是排它锁被继承的话矛盾了 2、各自的进程ID和父进程ID不同 3、子进程的未决告警被清除 4、子进程的未决信号集设置为空集 #include stdio.h #include stdlib.h #include unistd.h int glob 6; int main() {int local;int pid;local 88; printf(parent[pid %d]: before fork, glob(glob) %d(%p), local(local) %d(%p)\n,getpid(), glob, glob, local, local );if((pid fork()) 0) {perror(fail to fork);return -1; } if(pid 0) { /* child process */printf(child[pid %d]: after fork, glob(glob) %d(%p), local(local) %d(%p)\n,getpid(), glob, glob, local, local );glob;local; printf(child[pid %d]: changed data after fork, glob(glob) %d(%p), local(local) %d(%p)\n,getpid(), glob, glob, local, local );}else { /* parent process */sleep(2);printf(parent[pid %d]: after fork, glob(glob) %d(%p), local(local) %d(%p)\n,getpid(), glob, glob, local, local );} /* return euqal to exit(0), but exit may cause a compile warning* due to main() is declared to return with an integter */return 0; }2.2 exec函数族 …详情请参照古月居
http://www.w-s-a.com/news/978961/

相关文章:

  • 电商网站后台报价营销软文小短文
  • 网站建设项目售后服务承诺公司名称邮箱大全
  • 湖南网站建设哪里好做ppt的网站叫什么名字
  • 容城县建设银行网站电子商务网站建设子项目
  • 网站管理助手3.0做淘宝网站用什么软件做
  • 贵阳做网站的公司wordpress趣味插件
  • 自己设置免费网站设计平台南京哪里有做公司网站的
  • 建设公司内网网站的意义自助建站网站的宣传手册
  • 手机建设中网站建立个人网站服务器
  • 网站开发工程师岗位概要网站怎么制作教程
  • 城乡建设主管部门官方网站公司简介模板ppt范文
  • 网站认证必须做么cc0图片素材网站
  • net域名 著名网站国外设计案例网站
  • 淘宝客网站哪里可以做app地推网
  • 宜昌建设厅网站中国最新时事新闻
  • 微网站怎么开发wordpress 发表评论
  • 山东网站建设是什么一页网站首页图如何做
  • 游戏开发与网站开发哪个难万网影
  • 做网站编程语言建筑施工特种证书查询
  • 找人做网站内容自己编辑吗修改wordpress登陆界面
  • 登陆建设银行wap网站湖南网站建设磐石网络答疑
  • 58网站怎么做浏览度才高论坛网站怎么做排名
  • wordpress 手机网站支付京东网站建设的经费预算
  • 自己怎么样做游戏网站做海外贸易网站
  • 建立什么样的网站好制作网页网站代码
  • 岳麓区专业的建设网站公司尚一网常德论坛
  • 电商网站建设实训报告360站长平台链接提交
  • 个性化网站建设公司个人网站备案类型
  • 腾讯建站模板上海网站开发有限公司
  • 网站和小程序的区别请问做网站怎么赚钱