Amp

template之模板中class与typename区别,stl::traits技术

孤街浪徒 提交于 2020-08-06 06:23:46
前言 在分析traits编程之前, 我们需要对模板参数类型tempname和class有一定的了解, 要明白他们在哪些方面不同, 哪些方面相同, 这样才能对体会到traits编程的核心. 如果你已经明白了两者, 那么你可以直接看下一篇了. 相同之处 一般对模板参数类型typename和class认为是一样的. 这两者在参数类型中确实是一样的. 你可以写成 template<class T> class point {}; 1 2 也可以写成 template<typename T> class point {}; 1 2 这两者都是一样的, 没有区别. 两者typename和class在参数类型中没有不同 既然相同又为什么定义这两个符号呢? 最开始定义定义模板的方法就是template<class T> , 但是class毕竟都认为是一个类, 在使用时难免会有些点混淆, 也就定义了typename来标志参数类型 最重要关于 typename可以使用嵌套依赖类型, 也就是类型可以嵌套使用. 这也是两个的不同之处. 不同之处 typename可以用在嵌套依赖中, 并且表示其类型, 而class并没有这样的功能. 什么是嵌套依赖? 我们以一个简单的实例来看 template<class T> class people { public: typedef T value_type;

混淆的C代码竞赛2006.请解释sykes2.c

做~自己de王妃 提交于 2020-08-06 04:46:04
问题: How does this C program work? 这个C程序如何工作? main(_){_^448&&main(-~_);putchar(--_%64?32|-~7[__TIME__-_/8%8][">'txiZ^(~z?"-48]>>";;;====~$::199"[_*2&8|_/64]/(_&2?1:8)%8&1:10);} It compiles as it is (tested on gcc 4.6.3 ). 它按原样编译(在 gcc 4.6.3 上测试)。 It prints the time when compiled. 它打印编译时的时间。 On my system: 在我的系统上: !! !!!!!! !! !!!!!! !! !!!!!! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !!!!!! !! !! !! !! !! !!!!!! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !!!!!! !! !! !! !!!!!! Source: sykes2 - A clock in one line , sykes2 author hints 资料来源: sykes2 - 一行中的一个时钟 , sykes2作者提示 Some hints:

如何使用 Shell 脚本来查看多个服务器的端口是否打开?

守給你的承諾、 提交于 2020-08-06 04:43:18
我们在进行服务器配置的时候,经常要查看服务器的某个端口是否已经开放。如果服务器只有一两台的话,那很好办,只需要使用 nc 命令一个个查看即可。 但是,如果你的服务器是个集群,有很多台呢?那如果还一个个手动去检查的话,效率肯定是无比低下的,年底裁员名单里肯定有你。 在这种情况下,我们完全可以使用 Shell 脚本配合 nc 命令来达到我们的目的。而且,不管服务器有几台,需要检查的端口有几个,都可以实现这样的目标。 在本文里,我们用 Shell 脚本来实现两个需求: 扫描多台服务器的 一个 端口是否打开 扫描多台服务器的 多个 端口是否打开 在开始之前,我们先来了解一下 nc 命令。 nc 命令简介 nc 是英文单词 netcat 的缩写,它是通过使用 TCP 或 UDP 的网络协议的连接来读或写数据,可以直接被第三方程序或脚本直接调用。 同时,它是一款功能非常强大的网络调试工具,因为它可以创建几乎所有你所需要的连接方式。 nc 工具主要有三种功能模式:连接模式、监听模式、通道模式。它的一般使用格式如下: $ nc [-options] [HostName or IP] [PortNumber] 接下来,我们就用 Shell 脚本结合 nc 命令来实现我们的两个需求。 1. 扫描多台服务器的一个端口是否打开 在这里,我们先把需要查询的所有服务器地址全部放在一个 server-list

使用fiddler抓取手机上的HTTPS包

故事扮演 提交于 2020-08-06 04:26:56
最近想抓取手机上app的数据包,在电脑上抓包可选的工具有很多, 比如 wireshark ,Linux命令行下有 tcpdump 等等工具。可是在这些工具在手机上都没法使用,这怎么搞 后来想了想能不能用网络代理抓包呢,说干就干。从网上查到,用fiddler可以代理手机的网络。 第一步下载fiddler 去下载一个fiddler,建议去官网下载 传送门 。 fiddler 勾选协议,填写邮箱,然后下载就可以 第二步安装fiddler 双击下载的.exe文件,然后选择目录,next,next,完成安装 第三步安装CertMaker插件 fiddler默认生成的证书不能满足Android和iOS系统的要求,需要使用这个插件 传送门 往下找,找到图片的地方,点击下载,下载后,双击安装 CertMaker 第四步配置fiddler代理 想要抓HTTPS的数据包,必须安装证书, fiddler 点击tools->options,然后出现这个界面,按照我标注的1,2,3,4都勾选,中间会出现一些提示,都点 yes 最后出现这个对话框说明证书已经安装成功。 第五步配置代理(手机和电脑在同一个网络中) 重启fiddler,开始手机的配置。查看电脑的IP地址,我的是192.168.31.56然后打开手机的浏览器(苹果手机一定要用Safari),输入 IP地址:端口号 我的是 192.168.31.56

SVNServer常用HOOK

£可爱£侵袭症+ 提交于 2020-08-06 04:19:04
svn server 可通过hook的方式 来自定义SVN 行为控制,这里列几个常用的。 1.限制单个提交文件大小不超过100MB Pre-commit hook @echo off setlocal enabledelayedexpansion set REPOS=%1 set TXN=%2 rem MAX_SIZE value is byte set MAX_SIZE=104857600 for /f "delims=" %%a in ('svnlook changed -t %TXN% %REPOS%') do ( set var=%%a for /f %%i in ('svnlook filesize -t %TXN% %REPOS% !var:~4!') do ( if %%i gtr %MAX_SIZE% ( set /a size=%%i/1024 echo file size upto limit 100MB. File: !var:~4! Size: !size!KB 1>&2 exit 1 ) ) ) exit 0 2.可修改提交记录 Pre-revision property change hook SET REPOS="%1" SET REV="%2" SET USER="%3" SET PROPNAME="%4" SET ACTION="%5" IF

了解统一资源管理与调度系统的这几点,轻松搞懂 spark !

一个人想着一个人 提交于 2020-08-06 04:18:04
你好,我是你的 Spark 老师范东来,本文来自拉勾教育专栏 《即学即用的 Spark 实战 44 讲》 这个课时我将为你介绍:“统一资源管理与调度系统的设计和实现”。 Hadoop 2.0 与 Hadoop 1.0 最大的变化就是引入了 YARN,而 Spark 在很多情况下,往往也是基于 YARN 运行,所以,相比于分布式文件系统 HDFS,YARN 是一个比较关键的组件,承担着计算资源管理与调度的工作,所以本课时将对其进行深入讨论,先务虚再务实,主要内容如下: 统一资源管理与调度系统的设计; 统一资源管理与调度系统的实现——YARN。 统一资源管理与调度系统的设计 YARN 的全称是 Yet Another Resource Negotiator,直译过来是:另一种资源协调者,但是它的标准名称是统一资源管理与调度系统,这个名称比较抽象,当遇到这种抽象的名词时,我喜欢把概念拆开来看,那么这个名称一共包含 3 个词: 统一、资源管理、调度 。 来看看第 1 个词语:统一 对于大数据计算框架来说,统一指的是资源并不会与计算框架绑定,对于所有计算框架来说,所有资源都是无差别的,也就是说这个系统可以支持多种计算框架,但这是狭义的统一,我们理解到这里就可以了。而广义上的统一,是指资源针对所有应用来说都是无差别的,包括长应用、短应用、数据库、后端服务,等等。 来看看第 2 个词语:资源管理

JavaScript的“新”关键字被视为有害吗? [关闭]

与世无争的帅哥 提交于 2020-08-06 04:16:06
问题: In another question , a user pointed out that the new keyword was dangerous to use and proposed a solution to object creation that did not use new . 在另一个 问题中 ,用户指出 new 关键字使用起来很危险,并提出了一种不使用 new 对象创建解决方案。 I didn't believe that was true, mostly because I've used Prototype, Scriptaculous and other excellent JavaScript libraries, and everyone of them used the new keyword. 我不相信这是真的,主要是因为我使用了Prototype,Scriptaculous和其他优秀的JavaScript库,并且每个人都使用了 new 关键字。 In spite of that, yesterday I was watching Douglas Crockford's talk at YUI theater and he said the exactly same thing, that he didn't use the new

获取当前分类下面的子分类

狂风中的少年 提交于 2020-08-06 03:16:32
// tree_id 为 父id //获取当前分类下的子分类(不包括自己) function get_child_tree ( $tree_id , $get = 0 ) { $two_arr = []; $model = new ClassifyLogic (); $list = $model -> getList ([ 'pid' => $tree_id ], '' , '' ); if ( $get && empty ( $list )){ return false ; } foreach ( $list as $k => $v ) { $two_arr [ $k ][ 'id' ] = $v [ 'id' ]; $two_arr [ $k ][ 'cate_name' ] = $v [ 'cate_name' ]; $two_arr [ $k ][ 'pid' ] = $v [ 'pid' ]; $getSon = $this -> get_child_tree ( $v [ 'id' ], 1 ); if ( $getSon ){ $two_arr [ $k ][ 'child' ] = $this -> get_child_tree ( $v [ 'id' ]); } } return $two_arr ; } 来源: oschina 链接: https://my

用最简单的大白话聊一聊面试必问的HashMap原理和部分源码解析

霸气de小男生 提交于 2020-08-06 03:13:50
HashMap在面试中经常会被问到,一定会问到它的存储结构和实现原理,甚至可能还会问到一些源码 今天就来看一下HashMap 首先得看一下HashMap的存储结构和底层实现原理 如上图所示,HashMap底层是用数组+链表+红黑树实现的,其中红黑树是JDK1.8对HashMap优化之后加入的,当链表的长度大于8的时候会由链表结构转为红黑树,这些等下在看源码分析的时候都可以看到具体的实现。 那为什么用这几种数据结构来实现? 这种结构在数据结构上称为散列链表,其中的数组就相当于一个一个的桶(Bucket),当有数据准备存进去的时候,它会通过一定的散列算法去计算,尽可能的让数据平均的命中到各个桶上面去,尽可能的避免哈希碰撞。如果发生哈希碰撞,就是不同的数据最后落到了同一个桶上的时候,就采用链表的方式来存储,但是链表长度比较长了的时候,去存储数据,读取数据都需要不停的去遍历循环,所以此时再采用链表结构的话效率会明显下降,所以JDK1.8之后做了优化,当链表的长度大于8的时候就由链表转为红黑树来存储。红黑树是平衡二叉树的其中一种实现,它比普通的二叉树表现更优异,因为普通的查询二叉树在一定条件下也可能会变成链表结构,而红黑树它是平衡二叉树的一种,它是通过左旋右旋变色等保持树的平衡。 简单的了解了HashMap的存储结构后,下面来讲下HashMap其中三个方法的源码 一、hash()方法

【内附下载资料】第14次年度敏捷报告背后的趋势

北慕城南 提交于 2020-08-06 00:32:34
作为全球跟踪时间最长,规模最大的敏捷调查,VersionOne的敏捷报告已经成了很多人每年学习计划中的重要事项。现在我们就来了解一下连续第14次发布的年度敏捷报告,看看在调查结果的背后,都传递了怎样的一些趋势信号。 企业敏捷转型越来越关注业务价值 一切回归初心,所有的方法与实践还是需要回到服务业务目标。各组织都在实践中不断成长,只有真正有价值,能够对业务有所贡献的方法与实践才能得到关注和发展。自然地,敏捷转型的动力将转移到业务敏捷,它关注产品维度的短周期、小批量、高价值、高质量,以及稳步建设达到这些目标的基础能力,再加上团队级的基础敏捷实践,这样的敏捷转型才是解决问题的根本措施,业务敏捷才是组织真正需要的。 报告指出,采用敏捷的两个最大原因是加速交付71%和管理变更优先级的能力63%。前5位的原因还有提高生产力、业务融合、增强质量。降低成本从去年的41%降到了26%。 以上数据说明大家提升了业务目标的关注度,对成本的关注开始降低,这从侧面反映了大家对敏捷转型成本的认可。所有这些基于价值而非成本的目标,能持久驱动组织更加敏捷、更有生命力。 另外,报告中提到的规模化敏捷方法占比最高35%的SAFe框架,从5.0版本开始,也全面围绕业务敏捷进行方法论的重新梳理,把对业务的支持放在了前所未有的高度,引领了规模化敏捷转型的方向。 DevOps发展趋势越来越明显