fun函数

C++多线程编程

a 夏天 提交于 2020-01-10 21:06:16
注:不要生磕博客,找水平最适合你的,记得目的是解决问题(付出尽量少的时间),而不是抠细节的全面学习。 一、对线程的理解 基本概念: 1. 进程:可以理解成一个运行中的应用程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,主要管理资源。 2. 线程:是进程的基本执行单元,一个进程对应多个线程。 3. 主线程:处理UI,所有更新UI的操作都必须在主线程上执行。不要把耗时操作放在主线程,会卡界面。 多线程:在同一时刻,一个CPU只能处理1条线程,但CPU可以在多条线程之间快速的切换,只要切换的足够快,就造成了多线程一同执行的假象。 二、从实例学习多线程 1.1 双线程实例 #include <iostream> #include <windows.h> using namespace std; DWORD WINAPI Fun(LPVOID lpParamter) { for (int i = 0; i < 10; i++) cout << "A Thread Fun Display!" << endl; return 0L; } int main() { HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL); CloseHandle(hThread); for (int i = 0; i < 10; i++)

boost::function

﹥>﹥吖頭↗ 提交于 2020-01-10 05:20:52
// 忽略警告 #define _SCL_SECURE_NO_WARNINGS #pragma warning(disable : 4996) #include <assert.h> #include <iostream> #include <boost/bind.hpp> #include <boost/function.hpp> #include <boost/ref.hpp> #include <boost/assign/list_of.hpp>// list_of using namespace boost; using namespace std; #include <algorithm>// for_each int Plus(int a, int b) { return a + b; } struct demo { int add(int a, int b) { return a + b; } int operator()(int a) const { return a * a; } }; template<typename T> struct summary { typedef void result_type; T sum; summary(T v = T()) :sum(v){} void operator()(T const &x) { sum += x;

c++模板静态变量

試著忘記壹切 提交于 2020-01-09 10:23:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 c++模板在编译的时候会被展开,每一个函数或者对象都有自己的静态变量区域,通过一下的代码你就可以看到非常有意思的点. 例子1 #include <iostream> using namespace std; template < typename T> void fun( const T& x) { static int i = 10 ; cout << ++i; return ; } int main() { fun< int >( 1 ); // prints 11 cout << endl; fun< int >( 2 ); // prints 12 cout << endl; fun< double >( 1.1 ); // prints 11 cout << endl; getchar(); return 0 ; } 输出结果为11 12 11 ,原理很简单,编译期间 fun< int >( 1 ); fun< double >( 1.1 );会被自动展开为两个函数,通过nm命令查看最后的进程符号也能确定这一点. 0000000000400929 W void fun<double>(double const&) 00000000004008f9 W void fun<int>(int

重写、重载、隐藏的区别

久未见 提交于 2020-01-07 14:14:33
重载: 指的是同意可访问区被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数。重载不关心函数返回类型。 class A { public: void test{int i}; //overload void test(double i); //overload void test(int i, double j); //overload void test(double i, int j); //overload int test(int i); //not overload }; 隐藏: 是指派生类的函数屏蔽了与其同名的基类函数。注意只要是同名函数,不管参数列表是否相同,基类函数都会被隐藏。 #include<iostream> using namespace std; class Base { public: void fun(double, int) { cout << "Base::fun(double, int)" << endl; } }; class Derive:public Base { public: void fun(int) { cout << "Derive::fun(int)" << endl; } }; int main() { Derive pd; pd.fun(1); //pd.fun(0.01, 1)

急速搭建 Serverless AI 应用:为你写诗

心已入冬 提交于 2020-01-07 03:39:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 点击这里,查看 克隆 poetry 项目,安装依赖,本地运行函数,部署函数等重要内容 简介 :AI model serving 是函数计算一个比较典型的应用场景。数据科学家训练好模型以后往往需要找软件工程师把模型变成系统或者服务,通常把这个过程称之为 model serving。函数计算无需运维和弹性伸缩的特性,正好符合数据科学家对高可用分布式系统的诉求。本文将介绍把一个 TensorFlow CharRNN 训练的自动写五言绝句古诗的模型部署到函数计算的例子。 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute) : 函数计算 是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考 。 Fun : Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考 。 备注: 本文介绍的技巧需要 Fun 版本大于等于 3.2.0。 依赖工具 本项目是在

急速搭建 Serverless AI 应用:为你写诗

泪湿孤枕 提交于 2020-01-07 03:19:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute) : 函数计算 是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考 。 Fun : Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考 。 备注: 本文介绍的技巧需要 Fun 版本大于等于 3.2.0。 依赖工具 本项目是在 MacOS 下开发的,涉及到的工具是平台无关的,对于 Linux 和 Windows 桌面系统应该也同样适用。在开始本例之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。 Docker Fun Fcli Fun 和 Fcli 工具依赖于 docker 来模拟本地环境。 对于 MacOS 用户可以使用 homebrew 进行安装: brew cask install docker brew tap vangie/formula brew

typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针之美

左心房为你撑大大i 提交于 2020-01-02 13:44:54
首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef int myInt; myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的用法,下面首先介绍一下函数指针。 函数指针的形式: 形式1:返回类型(*函数名)(参数表) #include <iostream> using namespace std; //定义一个函数指针pFUN,它指向一个返回类型为char,有一个整型的参数的函数 char (*pFun)(int); //定义一个返回类型为char,参数为int的函数 //从指针层面上理解该函数,即函数的函数名实际上是一个指针, //该指针指向函数在内存中的首地址 char glFun(int a) { cout << a; //return a; } int main() { //将函数glFun的地址赋值给变量pFun pFun = glFun; //*pFun”显然是取pFun所指向地址的内容,当然也就是取出了函数glFun()的内容,然后给定参数为2。 (*pFun)(2); return 0; } 通过上面的一个小例子,我们知道了函数指针的用法, 而typedef可以让函数指针更直观方便 形式2:typedef 返回类型(*新类型)(参数表) typedef char (*PTRFUN)(int);

c++虚函数详解(你肯定懂了)

孤者浪人 提交于 2020-01-01 17:29:57
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,没有举一反三。不利于学习和阅读,所以这是我想写下这篇文章的原因。也希望大家多给我提意见。 言归正传,让我们一起进入虚函数的世界。 虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样

1.14(java学习笔记)数组

二次信任 提交于 2019-12-31 16:39:01
假如我们需要用到1000个相同类型的数据,肯定不可能创建1000个变量, 这样既不方便,也不直观,也不便于我们使用。这时就需要用到数组。 一、数组的声明与使用 1 public class Array { 2 public static void main(String[] args) { 3 int a[] = null; //数据类型 数组名 = null;声明一维数组 4 a = new int[10]; //数组名 = new 数据类型[长度];分配内存给数组。 5 } 6 7 } 首先第一句,声明了数组a,此时栈内存中就分配了一块内存空间给a,此时将null给a代表不指向任何实例(此时a只在栈内存中进行了创建,但是它没有指向堆内存中任何对象实例,也没有指向堆内存),所以不能使用(引用)具体的实例数据。 第二句,用new在堆内存中创建了十个int类型的存储空间,然后把这个内存空间的地址给a。 此时堆内存中就可以存放10个int型的数据,栈内存中的a存放了堆内存的地址值。这时可以通过数组a引用堆内存的内容。 二、数组元素的表示方法 数组用下标区别元素,下标从0到n-1; 例如创建的a数组长度为10,即下标从0~ 9; a[10] 并不存在,引用a[10]会出现错误,下标只能到a[9]; public class Array { public static void main

Java与C++比较

独自空忆成欢 提交于 2019-12-28 19:38:16
本文仅从片面的角度比较Java与C++的一些特性,如有错误的地方,请指正。 语言特性上的一些差异: 1、Java没有无符号整数,C++/C#都有。 2、Java中不存在指针。Java的引用是功能弱化的指针,只能做“调用所指对象的方法”的操作,C#默认不使用指针,在unsafe标识时可以使用。 3、Java不能用双等号比较字符串(注意常量池中的字符串),C++/C#可以。 4、Java强制局部变量初始化。 5、Java不支持自动类型转换,必须强制类型转换。 6、Java和C#没有宏。 7、C++经过编译连接后生成二进制代码,C#生成MSIL,Java生成字节码。 8、Java和C#有垃圾回收机制(GC),C++需要手动释放资源,可能会因失误忘记释放资源而造成内存泄漏等问题(C++11提供智能指针来解决这一问题)。 类机制上的一些差异: 1、 Java是完全面向对象的,所有方法都必须写在类中,C++既可以面向过程也可以面向对象,函数不必须写在类中。为了避免命名重复与实现代码重用性,C++和C#使用命名空间,Java使用包。 2、 Java中有强制性异常(除RuntimeException外,必须在编译前处理),而C++没有。(C++ C# 和Java的捕获异常语法大体相同) 3、 Java所有对象都直接或间接继承自Object,并且提供接口机制,C++没有共同的基类。 4、