Here

如何在动态链接库dll/so中导出自定义的模板类template class

爱⌒轻易说出口 提交于 2019-12-20 08:32:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文首发于个人博客 https://kezunlin.me/post/4ec4ae49/ ,欢迎阅读最新内容! how to implement a template class with c++ and export in dll/so <!--more--> Guide questions 模板类必须在header中实现,而不能在cpp中实现,否则作为dll调用进行链接的时候回出错。 common solutions(Recommend) implement template functions in header. ThreadPool.h class SHARED_EXPORT ThreadPool { public: static ThreadPool* Instance(size_t max_thread_pool_size); ~ThreadPool(); // Add new work item to the pool. template<class F> inline void Enqueue(F f) { io_service_.post(f);//sync, return immediately } void Free(); private: static std::shared_ptr

解决异步编程的方法—promise与await

青春壹個敷衍的年華 提交于 2019-12-12 11:52:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> promise是什么? Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。简单来说,promise的作用就是将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。 promise的特点 ① 对象的状态不受外界影响:promise异步操作有三种状态:进行中,已成功,已失败。只有异步操作才能改变这个状态。 ②一变则不变:promise状态一旦改变,就不会再发生变化,promise对象改变的两种可能,进行中—>已成功,进行中—>已失败。 promise的基本用法 promise对象是一个构造函数,用来生成promise实例 例子: const promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } }); 其中接受的参数是resolve和reject两个函数 resolve的作用:将promise对象的状态由进行中—>已完成

AndoridSQLite数据库开发基础教程(10)

给你一囗甜甜゛ 提交于 2019-12-09 16:22:32
AndoridSQLite数据库开发基础教程(10) 添加触发器 触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT、DELETE、UPDATE和UPDATE OF。当数据库系统执行这些事件时,会激活触发其执行相应的操作。下面为数据库添加触发器。操作步骤如下: (1)打开的数据库,单击左下角的齿轮按钮,选择其中的Create Trigger选项,弹出Trigger Creator对话框,如图1.23所示。 图1.23 Trigger Creator对话框 (2)在Trigger name:文本框中输入触发器的名称,如ScoreTrigger。在WHEN列表框中选择触发器的触发时间。这里有三种时间,分别为Before、After和Instead Of。这里选择的是After。在Database event列表框中选择触发触发器的事件。这里有四种事件,分别为INSERT、DELETE、UPDATE和UPDATE OF。这里选择的是INSERT。Table列表框设置添加触发器的表,如Students表。然后在包含提示信息write your tigger action here的文本域中编写触发动作,编写的代码如下: FOR EACH ROW WHEN (Sales) >= 1 BEGIN update Students set Score = Sales *

kali安装chrome后,无法启动chrome

懵懂的女人 提交于 2019-12-09 10:19:25
1. 下载chrome的deb安装包 2.安装 dpkg -i xxx.deb 3.安装失败,报错提示有无法解决的依赖问题,运行下面命令,解决依赖: sudo apt-get -f -y install 4.继续安装. 5.安装成功后,点击chrome图标,发现并不能启动浏览器。这是由于chrome默认是普通用户运行的,root不能够运行chrome。所以我们要使得root可以运行chrome。 //编辑下面的文件 vim /opt/google/chrome/google-chrome 6.将上面文件中代码作修改 //原来的 exec -a "$0" "$HERE/chrome" "$@" //修改后的 exec -a "$0" "$HERE/chrome" "$@" --user-data-dir --no-sandbox 修改结果如下图最后一行内容所示: 7.修改后,保存,chrome就可以正常使用了。 来源: oschina 链接: https://my.oschina.net/u/1771419/blog/3033554

Bootstrap进阶

孤街醉人 提交于 2019-12-06 15:07:22
一、组件 无数可复用的组件,包括字体图标、下拉菜单、导航、警告框、弹出框等更多功能 1.1 图片使用Glyphicons 字体图标 <span class="glyphicon glyphicon-save-file"></span> 1.2 下拉菜单 <div class="dropdown"> <!-- 下拉框 触发按钮 --> <button class="btn btn-success dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 下拉框 <!--下拉框图片--> <span class="glyphicon glyphicon-arrow-down"></span> </button> <!-- 下拉菜单--> <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role=

Bootstrap进阶

丶灬走出姿态 提交于 2019-12-06 14:49:34
一、组件 无数可复用的组件,包括字体图标、下拉菜单、导航、警告框、弹出框等更多功能 1.1 图片使用Glyphicons 字体图标 <span class="glyphicon glyphicon-save-file"></span> 1.2 下拉菜单 <div class="dropdown"> <!-- 下拉框 触发按钮 --> <button class="btn btn-success dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 下拉框 <!--下拉框图片--> <span class="glyphicon glyphicon-arrow-down"></span> </button> <!-- 下拉菜单--> <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role=

Bootstrap进阶

為{幸葍}努か 提交于 2019-12-06 14:42:33
一、组件 无数可复用的组件,包括字体图标、下拉菜单、导航、警告框、弹出框等更多功能 1.1 图片使用Glyphicons 字体图标 <span class="glyphicon glyphicon-save-file"></span> 1.2 下拉菜单 <div class="dropdown"> <!-- 下拉框 触发按钮 --> <button class="btn btn-success dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 下拉框 <!--下拉框图片--> <span class="glyphicon glyphicon-arrow-down"></span> </button> <!-- 下拉菜单--> <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role=

堆和栈的区别 之 数据结构和内存

99封情书 提交于 2019-12-06 09:52:29
数据结构的栈和堆 首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。 堆和栈都是一种数据项按序排列的数据结构。 栈就像装数据的桶或箱子 我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。 这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。 堆像一棵倒过来的树 而堆就不同了,堆是一种经过排序的树形数据结构,每个结点都有一个值。 通常我们所说的堆的数据结构,是指二叉堆。 堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。 由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同我们在图书馆的书架上取书,虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,我们可以直接取出我们想要的书。 内存分配中的栈和堆 先看百度百科中的内存堆栈介绍: 堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 堆栈缓存方式 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。

Does Forcing "High" DPM Performance Help Out Your AMDGPU Performance?

三世轮回 提交于 2019-12-06 03:37:00
Does Forcing "High" DPM Performance Help Out Your AMDGPU Performance? Written by Michael Larabel in Radeon on 7 June 2018 at 06:04 AM EDT. 14 Comments A premium patron recently asked about testing the open-source Radeon driver performance when testing the forced "high" dynamic power management state rather than the default "auto" mode. Here are some benchmarks. This is about forcing /sys/class/drm/card0/device/power_dpm_force_performance_level to high rather than auto, to ensure the GPU is bound to its highest performance state rather than dynamically changing performance states based upon

windows 10使用vscode进行远程代码开发 | tutorial to use vscode for remote development using ssh on windows

回眸只為那壹抹淺笑 提交于 2019-12-06 00:11:25
本文首发于个人博客 https://kezunlin.me/post/c93b6ba6/ ,欢迎阅读最新内容! tutorial to use vscode for remote development using ssh on windows <!--more--> Guide server sudo apt-get install openssh-server local install ssh-client on local machine. download VSCodeUserSetup-x64-1.36.1.exe from here and install. start vscode and install Remote Development extension. ctrl+shift+p and enter remote-ssh and configure for ssh. edit ~/.ssh/config Host node08 HostName 192.168.100.08 User root Host node09 HostName 192.168.100.09 User root use ssh-keygen instead of username and password copy local ~/.ssh/id_rsa.pub to remote