"彼岸岸上寻找,而天空爱上了飞鸟。"

void (*signal(int signum,void(*handler)(int))))(int);

上述给你一段这样的代码,你能知道这是什么嘛?唔...,似乎有点打脑壳。这是什么鬼??如果你把void后面的一些进行省略成这个的形式: void (*)(int),也许你会脱口而出,这是函数指针!

是的,这是一个经典的信号处理函数。那本章是为了来讲C语言那天马行空般恼人的函数指针??肯定不是,这个任务得去交给学习C语言指针时该去做的。函数指针的本质,就是函数入口的地址,但显然这对我们尤其是初学者特别不友好,这层层嵌套,何时才能嵌套得完?

因此,C++提供了其他的方式来替代传统式函数指针的应用。

---前言

一、什么是可调用对象

可调用对象除开传统的函数指针,C++还提供了其他两种调用对象。

①仿函数
②lambda表达式


二、仿函数

如果我们需要一个函数,实现两个数的加法。

//传统写法 无非就是定义函数
int AddFunc(int x, int y)
{return x + y;
}

但是呢,C++引入了仿函数的语法之后,与普通函数相比较,仿函数的使用更加便利。

所谓仿函数,就是让一个类,像函数一样去使用
struct AddObj
{int operator()(int x, int y){return x + y;}    
};

也许你会说,啊你这仿函数用起来,也不比普通函数调用简单多少,还不如原来普通函数调用呢。是的,对于上述这中情况,普通函数调用和仿函数似乎都很简单。

struct Func2
{int operator()(int base, int n){for (int i = 1;i <= n;++i){base += i;}return base;}
};template<class Func>
class Num
{
public:int accmulate(int n){return Func()(_base, n);}private:int _base = 0;
};

显然,当面对这种情况,仿函数可以作为参数传递给一个类的模板作参数,仅凭这一点,仿函数的实用性其实就比普通函数广太多了。


三、lambda表达式

C++11等于说"抄了别人语法的作业",但确实lambda表达式的出现是非常成功便捷的。

(1)lambda表达式语法

[capture-list](parameters)mutable->return-type{ statement };

[cpature-list] : 捕捉列表。编译器会根据[]来判断是否是lambda表达式,能够捕获该代码段内的上下文变量供lambda函数体使用。
(parameters):参数列表如果不需要参数传递,则可以连同()一起省略。

->returntype:返回值类型(可以省略不写,由编译器对返回类型进行推导)。

mutable:默认情况下,lambda函数总是一个const函数,mutable可以取消其常量性。使用该修饰符时,参数列表不可省略(即使参数为空)。

{statement}:函数体。该函数体可以使用其参数、以及捕获列表中捕获的对象。

(2)lambda表达式的应用

lambda表达式的语法稍微过了一遍后,我们来看看它的应用吧。

    //1.最简单的lambda表达式//参数没有可以不用写 、 返回值也可以让编译器 推导[] {};//2.捕获上下文变量int a = 3, b = 4;auto f = [=] { return a + b;};cout << f() << endl;

使用=、&捕捉:

我们现在想使用一个lambda表达式 交换两个数的值。

    auto f1 = [](int& a, int& b){int tmp = a;a = b;b = tmp;};//引用或者叫取地址捕捉auto f2 = [&]{int tmp = a;a = b;b = tmp;};

这样我们就能通过写lambda表达式,写一个简易的swap函数。

四、包装器与绑定

如果我们看到这个代码, ret = Func(x)。

这个Func是什么??emm它可能是一个函数调用,可能是一个仿函数,也可能是一个lambda表达式。因为这些都是可调用对象。

我们再来看看下面的一份代码:

template<class F, class T>
T useF(F f, T x)
{static int count = 0;cout << "count:" << ++count << endl;cout << "count:" << &count << endl;return f(x);
}double f(double i)
{return i / 2;
}struct Functor
{double operator()(double d){return d / 3;}
};

我们用三个不同的可调用对象,函数名、仿函数、lambda仿函数作为函数参数模板传入类useF中。

他们的功能如出一辙,但是唯一不同的是,我们在useF类中定义的静态成员变量Count是存在多份的。也就意味着,在useF实例化对象时,实际上是实例化出3份功能相同的函数的。

但是如果我们只想让这个类实例化出一份函数呢?这时候就需要用到我们的包装器。

(1)function

function是一个适配器,其底层就是一个类模板。

其类原型如下:

#inclued <functional>template<class Ret,class... Args> 
class function<Ret(Args...)>
{}
Ret:可调用对象的返回值类型
Args:这里是一个可变参数 可调用对象参数列表

function的应用:

int f(int a, int b)
{return a + b;
}struct Functor
{
public:int operator() (int a, int b){return a + b;}
};

我们完成对这些函数的包装器。

对类函数包装:

包装器对类成员的包装也常用。不过相对于可调用对象而言,它传入的参数会多一个。

class Plus
{
public:static int plusi(int a, int b){return a + b;}double plusd(double a, double b){return a + b;}
}
值得注意的是,若要访问类成员函数。
需要在function参数加 该类类型。 并且在使用时需要进行传参。

对于静态函数而言,可以不需要"&",但是对于成员函数必须要"&"。因此,最好的写法是,都取"地址"。

因此,有了function包装器,我们可以尝试着对那个我们之前面对的问题(解决模板的效率低下,实例化多份)做出一定的回应。

此时,当函数实例化时,函数内的count只有一个。也就是说只实例化出了一个函数。

包装器的其他应用场景

包装器还有其他应用的场景,并使用起来后,更加简洁、便于维护。下面是一个leetcode题。

进行更改后,可以变成这样。

(2)bind

std::bind函数定义在头文件中,是一个函数模板,它就像一个函数包装器(适配器)接受一个可
调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表

其原型如下:

template <class Fn, class... Args>
/* unspecified */ bind (Fn&& fn, Args&&... args);
// with return type (2)
template <class Ret, class Fn, class... Args>
/* unspecified */ bind (Fn&& fn, Args&&... args);

这个函数模板,时常用来固定下来一些参数,也可以实现传参参数的顺序调整。

placeholders:

这是bind的参数,是一个命名空间。

bind函数应用:

如果我们需要调用一个普通函数,需要这样的用法。

如果我们需要调用一个成员函数,需要这样的用法。


总结

那么以上也就是本篇的所有内容,"C++11的语法让C++不再是C++",这句话现如今让我深有体会。当然,这些内容有一些是十分好用的,比如说lambda表示,function在一些场景时使用,也是十分"香的"。然而,深入学习一门语言本身就是这样得繁琐,乏味。也望诸君的努力不会白费。

本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~

新C++(15):可调用对象及包装

相关文章

  1. 微信小程序-微信小程序登录流程(一)

    微信小程序&#xff0c;小程序的一种&#xff0c;英文名Wechat Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用 冷启动&#xff1a; 小程序首次打开或销毁后再次被打开&…...

    2023/3/28 15:43:29
  2. C++初级教程(三)

    一、C的一维数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量&#xff0c;而是声明一个数组变量&#xff0c;比如 …...

    2023/3/28 15:42:13
  3. Github上得分最高的20个项目

    freeCodeCamp&#xff1a;一个流行的编程教育平台&#xff0c;目标是让任何人都能够免费学习编程。 Vscode&#xff1a;一个流行的跨平台文本编辑器&#xff0c;支持各种语言和框架&#xff0c;可通过扩展进行自定义。 React&#xff1a;一个流行的 JavaScript 库&#xff0c…...

    2023/3/28 15:41:28
  4. 【java缓存、redis缓存、guava缓存】java中实现缓存的几种方式

    一、通过HashMap实现缓存 这种方式可以简单实现本地缓存&#xff0c;但是实际开发中不推荐使用&#xff0c;下面我们来实现一下这种方式。 首先创建一个管理缓存的类 public class LocalCache {public static HashMap<String,String> cache new HashMap<>();sta…...

    2023/3/28 15:37:22
  5. 从应用火到股市 AIGC概念股连涨仨月

    AI有变革生产力之势&#xff0c;证券市场闻风而动。同花顺数据显示&#xff0c;AIGC概念指数年内上涨近60%&#xff0c;涨幅是上证指数的10倍多。 具体到个股&#xff0c;软通动力、远大智能等搭上AI风口的企业服务商“老树发新芽”&#xff0c;直接涨停。游戏板块霸榜产品回报…...

    2023/3/28 15:37:03
  6. linux突破git clone下载限制

    前言 本人要在linux下载一个2.5G的文件&#xff0c;但只有20kb/s&#xff0c;实在忍受不了&#xff0c;最终利用工具实现了800kb/s的速度&#xff0c;除了利用工具的方法&#xff0c;本人都尝试了&#xff0c;但是几乎没有效果&#xff0c;我也会罗列出来&#xff0c;可自行尝试…...

    2023/3/28 15:36:50
  7. x86架构利用docker去编译arm64的应用程序

    文章目录1. 交叉编译&#xff1a;toolchain2. 隔离挂载的方式&#xff1a;3. QEMU 或其他模拟器来实际运行dockerx86架构实现多平台系统代码的编译&#xff0c;实现方式有多种&#xff1a;交叉编译&#xff1a;toolchain 【新的第三方库不好处理】隔离挂载的方式 【速度慢&…...

    2023/3/28 15:33:40
  8. Apache Camel

    目录儿一、简介二、核心总结一、简介 Camel is an Open Source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data. Camel 是一个开源的集成框架&#xff0c;能够让开发者快速、轻松地整合/集成不同的应…...

    2023/3/28 15:33:26
  9. Java学习记录

    阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录阅读前请看一下&#xff1a;我是一…...

    2023/3/28 15:32:34
  10. 「数据架构」TOGAF建模之数据架构:数据迁移图

    数据迁移图的目的是显示从源应用程序到目标应用程序的数据流。该图将提供源/目标分布的可视化表示&#xff0c;并作为数据审核和建立可追溯性的工具。该图可以根据需要进行细化或增强。例如&#xff0c;该图可以只包含迁移环境的总体布局&#xff0c;也可以包含单个应用程序元数…...

    2023/3/28 15:29:54
  11. MySQL数据库之——高级[进阶]SQL语句(一)SQL高级语句、函数等

    文章目录一、SQL高级语句1、 SELECT2、DISTINCT3、WHER条件查询4 、AND OR5、IN6、BETWEEN7、通配符8、LIKE9、ORDER BY二、SQL函数1、数学函数&#xff1a;2、聚合函数&#xff1a;3、字符串函数&#xff1a;4、GROUP BY5、HAVING6、别名7、连接查询8、子查询9、EXISTS一、SQL…...

    2023/3/28 15:24:30
  12. Java实现一个简单的东南西北中的面板

    目录 一、前言 二、代码部分 1.代码 三、程序运行结果&#xff08;面板弹出&#xff09; 四、涉及到的知识点代码 一、前言 1.本代码是我在上学时写的&#xff0c;有一些地方没能完美实现&#xff0c;请包涵也请多赐教&#xff01; 2.本弹窗界面可以根据简单的要求进行…...

    2023/3/28 15:24:15
  13. 阿里十年资深程序员吐血总结之Java代理模式

    阿里十年资深程序员吐血总结之Java代理模式 文章目录阿里十年资深程序员吐血总结之Java代理模式1.接口代理2.类代理3.动态代理都是通过反射实现的吗4.jdk动态代理和cglib动态代理的区别Java代理模式是怎么实现的​ Java 代理模式是一种常见的设计模式&#xff0c;它可以在不改变…...

    2023/3/28 15:23:34
  14. ServletAPI详解(一)

    目录 1.Tomcat简介 2.Servlet 是什么? 3.编写Servlet 程序步骤 1.创建一个Maven项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署程序 7.验证程序 4.使用SmartTomcat插件部署 1.Tomcat简介 Tomcat是一个开源的,基于java实现的被广泛使用的web服务器.web服…...

    2023/3/28 15:22:50
  15. 全球第三机械制造商徐工集团表示与 Conflux、Zen Spark Technology 建立合作伙伴关系公司

    【ConfluxNews】2023.3.28 ----------------------------- 1.【网络状态】当前版本V2.2.2&#xff0c;全网算力≈10T&#xff0c;昨日交易次数58K&#xff0c;昨日新增账户0.69K&#xff0c;昨日新增合约13个&#xff1b; 2.【POS参数】总锁仓244&#xff08;-3&#xff09;&a…...

    2023/3/28 15:20:26
  16. 为什么所谓的“自律”一定要跟坚持挂钩呢?懂一点“行为设计学”,升级对“意义”的认知

    为什么所谓的“自律”一定要跟坚持挂钩呢&#xff1f;懂一点“行为设计学”&#xff0c;升级对“意义”的认知00 导读01 懂一点“行为设计学”02 升级你对“意义”的认知03 小结00 导读 世界上最成功的人之一&#xff0c;风险投资家雷达利欧&#xff08;Ray Dalio&#xff09;…...

    2023/3/28 15:19:52
  17. 中国各省份研究随笔

    一.陕西 1.陕北榆林 黄土荒原&#xff0c;萧瑟荒凉&#xff0c;生活艰难&#xff0c;亩产60斤小麦。2002年开始榆林富裕&#xff0c;因为煤炭资源&#xff0c;易开采、质量好 2002年之前煤炭没有人开采&#xff0c;因为价格只有14元一吨&#xff0c;2001年加入WTO&#xff0…...

    2023/3/28 15:19:31
  18. 配置JRebel热部署

    1&#xff1a;此对应设置的是IntelliJ IDEA 2022.1.3 (Ultimate Edition)的热部署设置 2&#xff1a;激活插件失败&#xff0c;提示【LS client not configued】原因是版本过高&#xff0c;解决办法&#xff1a;手动下载jRebel,官网去找到过去版本的jRebel&#xff0c;地址&am…...

    2023/3/28 15:16:22
  19. OpenGL | 渲染带透明通道的2D精灵

    一、Alpha测试 Alpha 测试的基本原理为&#xff1a;当绘制一个片元时&#xff0c;首先检测其 Alpha 值&#xff0c;若 Alpha 值满足要求&#xff0c;就通过测试&#xff0c;绘制此片元&#xff1b;否则丢弃此片元&#xff0c;不进行绘制。 glEnable(GL_ALPHA_TEST)&#xff1b…...

    2023/3/28 15:15:20
  20. PCIE中断发送与接收

    1. EndPoint模式下中断的发送 在EP模式下&#xff0c;PCIE会根据配置信息只产生MSI或者INTA中断中的一种&#xff0c;然后传送到RC端。 1.1 INTA中断的发送 INTA中断以带内消息(Assert_INTA/Deassert_INTA)的形式传递中断&#xff0c;其作用相当于传统PCI总线中使用边带中断…...

    2023/3/28 15:15:04
  21. SQL Server底层架构技术对比

    背景 数据库是信息化的基石&#xff0c;支撑着整个业务系统&#xff0c;发挥着非常重要的作用&#xff0c;被喻为“IT的心脏”。因此&#xff0c;让数据库安全、稳定、高效地运行已经成为IT管理者必须要面对的问题。数据库在底层架构层面需要满足以下几点建设要求&#xff1a; …...

    2023/3/28 15:14:36
  22. 你真的了解变量吗?

    变量是编程语言中最基本的术语&#xff0c;用来代指计算机中存放的可变数据——如整数、小数、字符或被调用的一片内存空间。 变量可以保存不同的变量类型&#xff0c;比如整型、布尔型、对象、数组等等&#xff0c;每一个变量在内存中对应着一个内存地址&#xff0c;但是如果…...

    2023/3/28 15:13:20
  23. 一文彻底搞懂为什么OpenCV用GPU/cuda跑得比用CPU慢?

    一、原因总结 最近项目需要&#xff0c;发现了这个问题。网上找原因&#xff0c;汇总起来&#xff0c;有以下几点原因&#xff1a; 1、首先对于任何一个CUDA程序&#xff0c;在调用它的第一个CUDA API时后都要花费秒级的时间去初始化运行环境&#xff0c;后续还要分配显存&am…...

    2023/3/28 15:11:34
  24. 数仓必备概念

    目录 数据仓库 三范式建模 维度建模 数据仓库 是一个面向主题的&#xff08;Subject&#xff09;、集成的&#xff08;Integrated&#xff09;、非易失&#xff08;Non-Volatile&#xff09;、时变性&#xff08;Time Variant&#xff09;的数据集合&#xff0c;用于支持管理…...

    2023/3/28 15:09:12
  25. Spring Security 6.0系列【5】源码篇之认证组件

    有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 前言认证机制认证组件SecurityContextHolderSecurityContextAuthentication…...

    2023/3/28 15:08:48
  26. webpack 配置介绍

    一、webpack webpack 仅是一个打包工具&#xff0c;不会处理打包过程的东西例如 es6等新特性&#xff0c;如果需要处理这些新特性需要配置单独的加载bebblle-loader 等。 "devDependencies": {"webpack": "^5.76.3", // 打包工具"…...

    2023/3/28 15:06:40
  27. ResNet 基于迁移学习对CIFAR10 数据集的分类

    目录 1. resnet 网络 2. 迁移学习-train 2.1 下载预训练权重 2.2 训练过程 2.3 训练损失正确率 2.4 代码 3. resnet 在 CIFAR10 的预测 完整文件下载地址&#xff1a;resnet 基于迁移学习对 CIFAR10 数据集的分类 1. resnet 网络 Resnet 网络的搭建&#xff1a; …...

    2023/3/28 15:06:00
  28. 【Django】基于JWT的token认证

    Json Web Token&#xff08;JWT&#xff09;这种结构化令牌的基础上实现了一套基于用户体系对用户的API进行授权访问的机制&#xff0c;满足用户个性化安全设置的需求。 文章目录一、基于token的认证1.1 简介1.2 流程描述1.3 JWT1.3.1 简介1.3.2 JWT的构成1.3.3 授权范围与时效…...

    2023/3/28 15:05:21
  29. 零售数据分析之操作篇9:用历史聚合计算历史销售SKU数

    各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 上期内容回顾与作业讲解 上一讲讲了如何通过历史聚合来计算库存&#xff0c;这个方案非常好的解决了零售企业在计算任意时间库…...

    2023/3/28 15:01:58
  30. amd_kernel_code_t Struct Reference——AMD gpu shader kernel 代码数据结构

    LLVM: amd_kernel_code_t Struct Reference uint16_twavefront_sgpr_countNumber of scalar registers used by a wavefront.uint16_tworkitem_vgpr_countNumber of vector registers used by each work-item.workitem_vgpr_count: 每个工作线程需要使用的 向量寄存器的个数; …...

    2023/3/28 14:59:19

最新文章

  1. 微信小程序-微信小程序登录流程(一)

    微信小程序&#xff0c;小程序的一种&#xff0c;英文名Wechat Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用 冷启动&#xff1a; 小程序首次打开或销毁后再次被打开&…...

    2023/3/28 15:43:29
  2. C++初级教程(三)

    一、C的一维数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量&#xff0c;而是声明一个数组变量&#xff0c;比如 …...

    2023/3/28 15:42:13
  3. Github上得分最高的20个项目

    freeCodeCamp&#xff1a;一个流行的编程教育平台&#xff0c;目标是让任何人都能够免费学习编程。 Vscode&#xff1a;一个流行的跨平台文本编辑器&#xff0c;支持各种语言和框架&#xff0c;可通过扩展进行自定义。 React&#xff1a;一个流行的 JavaScript 库&#xff0c…...

    2023/3/28 15:41:28
  4. 【java缓存、redis缓存、guava缓存】java中实现缓存的几种方式

    一、通过HashMap实现缓存 这种方式可以简单实现本地缓存&#xff0c;但是实际开发中不推荐使用&#xff0c;下面我们来实现一下这种方式。 首先创建一个管理缓存的类 public class LocalCache {public static HashMap<String,String> cache new HashMap<>();sta…...

    2023/3/28 15:37:22
  5. 从应用火到股市 AIGC概念股连涨仨月

    AI有变革生产力之势&#xff0c;证券市场闻风而动。同花顺数据显示&#xff0c;AIGC概念指数年内上涨近60%&#xff0c;涨幅是上证指数的10倍多。 具体到个股&#xff0c;软通动力、远大智能等搭上AI风口的企业服务商“老树发新芽”&#xff0c;直接涨停。游戏板块霸榜产品回报…...

    2023/3/28 15:37:03
  6. linux突破git clone下载限制

    前言 本人要在linux下载一个2.5G的文件&#xff0c;但只有20kb/s&#xff0c;实在忍受不了&#xff0c;最终利用工具实现了800kb/s的速度&#xff0c;除了利用工具的方法&#xff0c;本人都尝试了&#xff0c;但是几乎没有效果&#xff0c;我也会罗列出来&#xff0c;可自行尝试…...

    2023/3/28 15:36:50
  7. x86架构利用docker去编译arm64的应用程序

    文章目录1. 交叉编译&#xff1a;toolchain2. 隔离挂载的方式&#xff1a;3. QEMU 或其他模拟器来实际运行dockerx86架构实现多平台系统代码的编译&#xff0c;实现方式有多种&#xff1a;交叉编译&#xff1a;toolchain 【新的第三方库不好处理】隔离挂载的方式 【速度慢&…...

    2023/3/28 15:33:40
  8. Apache Camel

    目录儿一、简介二、核心总结一、简介 Camel is an Open Source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data. Camel 是一个开源的集成框架&#xff0c;能够让开发者快速、轻松地整合/集成不同的应…...

    2023/3/28 15:33:26
  9. Java学习记录

    阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录阅读前请看一下&#xff1a;我是一…...

    2023/3/28 15:32:34
  10. 「数据架构」TOGAF建模之数据架构:数据迁移图

    数据迁移图的目的是显示从源应用程序到目标应用程序的数据流。该图将提供源/目标分布的可视化表示&#xff0c;并作为数据审核和建立可追溯性的工具。该图可以根据需要进行细化或增强。例如&#xff0c;该图可以只包含迁移环境的总体布局&#xff0c;也可以包含单个应用程序元数…...

    2023/3/28 15:29:54
  11. MySQL数据库之——高级[进阶]SQL语句(一)SQL高级语句、函数等

    文章目录一、SQL高级语句1、 SELECT2、DISTINCT3、WHER条件查询4 、AND OR5、IN6、BETWEEN7、通配符8、LIKE9、ORDER BY二、SQL函数1、数学函数&#xff1a;2、聚合函数&#xff1a;3、字符串函数&#xff1a;4、GROUP BY5、HAVING6、别名7、连接查询8、子查询9、EXISTS一、SQL…...

    2023/3/28 15:24:30
  12. Java实现一个简单的东南西北中的面板

    目录 一、前言 二、代码部分 1.代码 三、程序运行结果&#xff08;面板弹出&#xff09; 四、涉及到的知识点代码 一、前言 1.本代码是我在上学时写的&#xff0c;有一些地方没能完美实现&#xff0c;请包涵也请多赐教&#xff01; 2.本弹窗界面可以根据简单的要求进行…...

    2023/3/28 15:24:15
  13. 阿里十年资深程序员吐血总结之Java代理模式

    阿里十年资深程序员吐血总结之Java代理模式 文章目录阿里十年资深程序员吐血总结之Java代理模式1.接口代理2.类代理3.动态代理都是通过反射实现的吗4.jdk动态代理和cglib动态代理的区别Java代理模式是怎么实现的​ Java 代理模式是一种常见的设计模式&#xff0c;它可以在不改变…...

    2023/3/28 15:23:34
  14. ServletAPI详解(一)

    目录 1.Tomcat简介 2.Servlet 是什么? 3.编写Servlet 程序步骤 1.创建一个Maven项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署程序 7.验证程序 4.使用SmartTomcat插件部署 1.Tomcat简介 Tomcat是一个开源的,基于java实现的被广泛使用的web服务器.web服…...

    2023/3/28 15:22:50
  15. 全球第三机械制造商徐工集团表示与 Conflux、Zen Spark Technology 建立合作伙伴关系公司

    【ConfluxNews】2023.3.28 ----------------------------- 1.【网络状态】当前版本V2.2.2&#xff0c;全网算力≈10T&#xff0c;昨日交易次数58K&#xff0c;昨日新增账户0.69K&#xff0c;昨日新增合约13个&#xff1b; 2.【POS参数】总锁仓244&#xff08;-3&#xff09;&a…...

    2023/3/28 15:20:26
  16. 为什么所谓的“自律”一定要跟坚持挂钩呢?懂一点“行为设计学”,升级对“意义”的认知

    为什么所谓的“自律”一定要跟坚持挂钩呢&#xff1f;懂一点“行为设计学”&#xff0c;升级对“意义”的认知00 导读01 懂一点“行为设计学”02 升级你对“意义”的认知03 小结00 导读 世界上最成功的人之一&#xff0c;风险投资家雷达利欧&#xff08;Ray Dalio&#xff09;…...

    2023/3/28 15:19:52
  17. 中国各省份研究随笔

    一.陕西 1.陕北榆林 黄土荒原&#xff0c;萧瑟荒凉&#xff0c;生活艰难&#xff0c;亩产60斤小麦。2002年开始榆林富裕&#xff0c;因为煤炭资源&#xff0c;易开采、质量好 2002年之前煤炭没有人开采&#xff0c;因为价格只有14元一吨&#xff0c;2001年加入WTO&#xff0…...

    2023/3/28 15:19:31
  18. 配置JRebel热部署

    1&#xff1a;此对应设置的是IntelliJ IDEA 2022.1.3 (Ultimate Edition)的热部署设置 2&#xff1a;激活插件失败&#xff0c;提示【LS client not configued】原因是版本过高&#xff0c;解决办法&#xff1a;手动下载jRebel,官网去找到过去版本的jRebel&#xff0c;地址&am…...

    2023/3/28 15:16:22
  19. OpenGL | 渲染带透明通道的2D精灵

    一、Alpha测试 Alpha 测试的基本原理为&#xff1a;当绘制一个片元时&#xff0c;首先检测其 Alpha 值&#xff0c;若 Alpha 值满足要求&#xff0c;就通过测试&#xff0c;绘制此片元&#xff1b;否则丢弃此片元&#xff0c;不进行绘制。 glEnable(GL_ALPHA_TEST)&#xff1b…...

    2023/3/28 15:15:20
  20. PCIE中断发送与接收

    1. EndPoint模式下中断的发送 在EP模式下&#xff0c;PCIE会根据配置信息只产生MSI或者INTA中断中的一种&#xff0c;然后传送到RC端。 1.1 INTA中断的发送 INTA中断以带内消息(Assert_INTA/Deassert_INTA)的形式传递中断&#xff0c;其作用相当于传统PCI总线中使用边带中断…...

    2023/3/28 15:15:04
  21. SQL Server底层架构技术对比

    背景 数据库是信息化的基石&#xff0c;支撑着整个业务系统&#xff0c;发挥着非常重要的作用&#xff0c;被喻为“IT的心脏”。因此&#xff0c;让数据库安全、稳定、高效地运行已经成为IT管理者必须要面对的问题。数据库在底层架构层面需要满足以下几点建设要求&#xff1a; …...

    2023/3/28 15:14:36
  22. 你真的了解变量吗?

    变量是编程语言中最基本的术语&#xff0c;用来代指计算机中存放的可变数据——如整数、小数、字符或被调用的一片内存空间。 变量可以保存不同的变量类型&#xff0c;比如整型、布尔型、对象、数组等等&#xff0c;每一个变量在内存中对应着一个内存地址&#xff0c;但是如果…...

    2023/3/28 15:13:20
  23. 一文彻底搞懂为什么OpenCV用GPU/cuda跑得比用CPU慢?

    一、原因总结 最近项目需要&#xff0c;发现了这个问题。网上找原因&#xff0c;汇总起来&#xff0c;有以下几点原因&#xff1a; 1、首先对于任何一个CUDA程序&#xff0c;在调用它的第一个CUDA API时后都要花费秒级的时间去初始化运行环境&#xff0c;后续还要分配显存&am…...

    2023/3/28 15:11:34
  24. 数仓必备概念

    目录 数据仓库 三范式建模 维度建模 数据仓库 是一个面向主题的&#xff08;Subject&#xff09;、集成的&#xff08;Integrated&#xff09;、非易失&#xff08;Non-Volatile&#xff09;、时变性&#xff08;Time Variant&#xff09;的数据集合&#xff0c;用于支持管理…...

    2023/3/28 15:09:12
  25. Spring Security 6.0系列【5】源码篇之认证组件

    有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 前言认证机制认证组件SecurityContextHolderSecurityContextAuthentication…...

    2023/3/28 15:08:48
  26. webpack 配置介绍

    一、webpack webpack 仅是一个打包工具&#xff0c;不会处理打包过程的东西例如 es6等新特性&#xff0c;如果需要处理这些新特性需要配置单独的加载bebblle-loader 等。 "devDependencies": {"webpack": "^5.76.3", // 打包工具"…...

    2023/3/28 15:06:40
  27. ResNet 基于迁移学习对CIFAR10 数据集的分类

    目录 1. resnet 网络 2. 迁移学习-train 2.1 下载预训练权重 2.2 训练过程 2.3 训练损失正确率 2.4 代码 3. resnet 在 CIFAR10 的预测 完整文件下载地址&#xff1a;resnet 基于迁移学习对 CIFAR10 数据集的分类 1. resnet 网络 Resnet 网络的搭建&#xff1a; …...

    2023/3/28 15:06:00
  28. 【Django】基于JWT的token认证

    Json Web Token&#xff08;JWT&#xff09;这种结构化令牌的基础上实现了一套基于用户体系对用户的API进行授权访问的机制&#xff0c;满足用户个性化安全设置的需求。 文章目录一、基于token的认证1.1 简介1.2 流程描述1.3 JWT1.3.1 简介1.3.2 JWT的构成1.3.3 授权范围与时效…...

    2023/3/28 15:05:21
  29. 零售数据分析之操作篇9:用历史聚合计算历史销售SKU数

    各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 上期内容回顾与作业讲解 上一讲讲了如何通过历史聚合来计算库存&#xff0c;这个方案非常好的解决了零售企业在计算任意时间库…...

    2023/3/28 15:01:58
  30. amd_kernel_code_t Struct Reference——AMD gpu shader kernel 代码数据结构

    LLVM: amd_kernel_code_t Struct Reference uint16_twavefront_sgpr_countNumber of scalar registers used by a wavefront.uint16_tworkitem_vgpr_countNumber of vector registers used by each work-item.workitem_vgpr_count: 每个工作线程需要使用的 向量寄存器的个数; …...

    2023/3/28 14:59:19