动态

RTTI运行时类型识别

一曲冷凌霜 提交于 2020-03-17 05:40:36
RTTI是Runtime Type Identification的缩写,是“运行时类型识别”的意思。面向对象的编程语言,象C++, Java ,Delphi都提供了对RTTI的支持。 本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI。本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是 typeid 和dynamic_cast。 1. typeid的用法 1.1type_info类 typeid 的结果是 const type_info&。所以下面先对type_info类作下介绍: class type_info { public: virtual ~type_info(); size_t hash_code() const _CRTIMP_PURE bool operator==(const type_info& rhs) const; _CRTIMP_PURE bool operator!=(const type_info& rhs) const; _CRTIMP_PURE int before(const type_info& rhs) const; _CRTIMP_PURE const char* name() const; _CRTIMP_PURE const char* raw

Tomcat 搭配 Nginx 还是 Apache 呢?

痴心易碎 提交于 2020-03-14 12:17:01
Apache 、Tomcat、Nginx的区别, 哪个与Tomcat搭配效率高? 一、 定义: 1. Apache Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。 (Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。) 缺点:配置相对复杂,自身不支持动态页面。 2. Tomcat: Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。 3. Nginx Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。 二、 比较 1. Apache与Tomcat的比较 相同点: * 两者都是Apache组织开发的 * 两者都有HTTP服务的功能 * 两者都是免费的 不同点: * Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机

Hadoop概念学习系列之Hadoop集群动态增加新节点或删除已有某节点及复制策略导向 (四十三)

喜欢而已 提交于 2020-03-14 00:33:23
  不多说,直接上干货! hadoop-2.6.0动态添加新节点 https://blog.csdn.net/baidu_25820069/article/details/52225216 Hadoop集群动态增加新节点   一、在新增节点配置运行环境     1、安装和其他节点相同的java环境,jdk版本要相同。     2、修改/etc/hosts配置文件,添加ip与hostname的对应关系并分发到集群各个节点。     3、关闭防火墙、相关软件工具的安装等。     4、配置ssh免密码登录,使新增节点和集群其他节点能实现免密码登录。     5、修改slaves文件并分发到集群各个节点。   二、在新增节点上部署Hadoop     把集群的Hadoop安装包copy到新增节点,安装目录最好一致,便于管理   三、单独启动新增节点     无需关闭集群再重启   四、验证是否启动成功     (1)通过WEB界面查看Live Node     (2)通过命令查看: bin/hadoop dfsadmin -report   五、集群负载均衡     运行start-balancer.sh进行数据负载均衡。(如果不进行balance,新数据一般会被插入到新节点中) Hadoop集群动态删除某节点   注意提前做好删除节点数据的备份 推荐 http://www

c# 匿名对象增加动态属性

China☆狼群 提交于 2020-03-12 06:22:41
在开发过程中碰到了一个需求,需要动态创建对象及其动态属性。在尝试几种方法后,最后完成了需求,记录下过程,给园友参考下 1.动态创建对象一:匿名对象 object obj1 = new {Name = "金朝钱",Age="31",Birthday =DateTime.Now}; 创建的匿名对象: 问题1:无法动态映射对象属性 解决:使用反射的方式获取对象值 object obj1 = new {Name = "金朝钱",Age="31",Birthday =DateTime.Now}; Response.Write(string.Format("Name:{0}", obj1.GetType().GetProperty("Name").GetValue(obj1, null).ToString())); 输出结果 问题2:无法动态创建对象属性 2.使用动态对象创建方法二、动态对象 dynamic obj2 = new System.Dynamic.ExpandoObject(); obj2.Name = "金朝钱"; obj2.Age = 31; obj2.Birthday = DateTime.Now; Response.Write(string.Format("Name:{0}", obj2.Name)); 创建的动态对象: 输出结果: 问题:还是不能动态增加对象 3

【中级软考】绑定、静态绑定、动态绑定、静态分配、动态分配是什么?

ぃ、小莉子 提交于 2020-03-11 12:51:15
绑定是一个把过程调用和响应调用而需要执行的代码加以结合的过程。在一般的程序设计语言中绑定是在编译时进行的,叫做静态绑定。 动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码结合直到调用发生时才进行。 动态绑定是和类的继承以及多态相联系的。在继承关系中,子类是父类的一个特例,所以父类对象可以出现的地方,子类也可以出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接受对象的具体情况将请求的操作和实现的方法进行连接,即动态绑定。 动态分配和静态分配(内存)参考: 动态分配和静态分配 来源: CSDN 作者: Dontla 链接: https://blog.csdn.net/Dontla/article/details/104790669

数组的定义

旧巷老猫 提交于 2020-03-11 10:56:53
其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配,而数组的定义语法有如下两类。 一 数组动态初始化:动态初始化之后是其对应的默认值,可以通过下标为内容设值 声明并开辟数组: 数据类型 [] 数组名称 = new 数据类型[长度]; int [] a=new int [10] 数据类型 数组名称 [] = new 数据类型[长度]; int a [] = new int [10] 数组下标是从0开始到数组长度-1这个范围, 超出后报异常数组下标越界:ArrayIndexOutOfBoundsException 数组的操作一般与for循环结合使用,也就是数组喜欢被for循环操作 日后的开发中用的最多的数组处理形式就是 数组的for循环 那么当数组开辟空间之后,就可以采用如下的方式的操作: 1 数组的访问通过索引完成,即:“数组名称[索引]”,但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,会产生java.lang.ArrayIndexOutOfBoundsException 异常信息; 2 当我们数组采用动态初始化开辟空间后

实现动态WEB内容

隐身守侯 提交于 2020-03-11 09:11:47
在 system1 上配置提供动态web内容,要求: 1、动态内容由名为 wsgi.group8.example.com 的虚拟主机提供 2、虚拟主机侦听在端口 8909 3、从 http://server.group8.example.com/pub/webinfo.wsgi 下载一个脚本,然后放在适当的位置,无论如何不要求修改此文件的内容 4、客户端访问 http://wsgi.group8.example.com:8909/ 时,应该接收到动态生成的web页面 5、此 http://wsgi.group8.example.com:8909/ 必须能被 group8.example.com 域内的所有系统访问 答: 再system1上执行 1、建立虚拟主机。 vim /etc/httpd/conf.d/httpd-vhosts.conf # 在配置文件最后面增加新的虚拟主机配置 Listen 8909 <VirtualHost *:8909> ServerName wsgi.group8.example.com WSGIScriptAlias / /var/www/html/webinfo.wsgi </VirtualHost> # 下载文件到指定目录 wget -O /var/www/html/webinfo.wsgi http://server.group8.example

生产环境中系统调试--BTrace

 ̄綄美尐妖づ 提交于 2020-03-10 23:27:46
BTrace是sun公司推出的一款Java 动态、安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数、返回值、全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源。 由于Btrace会把脚本逻辑直接侵入到运行的代码中,所以在使用上做很多 限制 : 1、不能创建对象 2、不能使用数组 3、不能抛出或捕获异常 4、不能使用循环 5、不能使用synchronized关键字 6、属性和方法必须使用static修饰 根据官方声明,不恰当的使用BTrace可能导致JVM崩溃,如在BTrace脚本使用错误的class文件,所以在上生产环境之前,务必在本地充分的验证脚本的正确性。 Btrace可以做什么? 1、接口性能变慢,分析每个方法的耗时情况; 2、当在Map中插入大量数据,分析其扩容情况; 3、分析哪个方法调用了System.gc(),调用栈如何; 4、执行某个方法抛出异常时,分析运行时参数; 5、.......... BTrace已经迁移到GitHub BTrace最新地址:https://github.com/btraceio/btrace/releases/tag/v1.3.9 相关链接: http://www.importnew.com/23614.html 相关知识: 在线调试工具有哪些: 可视化的工具有

操作系统动态内存管理——malloc和free的工作机制

给你一囗甜甜゛ 提交于 2020-03-10 08:55:20
动态 内存分配 就 是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。 malloc()是 C语言 中动态 存储管理 的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数, 返回值 是一个指向所分配的连续存储域的起始地址的指针。 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足 用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传 给用户,并将剩下的那块(如果有的话)返回到连接表上。 调用free函数时,它将用户释放的内存块连接到空闲链上。 空闲链会被切成很多的小内存片 段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检 查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。然后再次进行查找,把合适的内存块返回。   来源: https://www.cnblogs.com/ygj0930/p/6539397.html

spring05

瘦欲@ 提交于 2020-03-09 20:51:02
title: spring05 date: 2020-03-09 19:31:42 tags:代理模式 该部分学习了动态代理。 1、概述 该部分摘抄自秦老师的博客 静态代理 可以使得我们的真实角色更加纯粹 . 不再去关注一些公共的事情 . 公共的业务由代理来完成 . 实现了业务的分工 。 公共业务发生扩展时变得更加集中和方便 . 缺点 : 类多了 , 多了代理类 , 工作量变大了 . 开发效率降低 . 动态代理 动态代理的角色和静态代理的一样 . 动态代理的代理类是动态生成的 . 静态代理的代理类是我们提前写好的 动态代理分为两类 : 一类是基于接口动态代理 , 一类是基于类的动态代理 基于接口的动态代理----JDK动态代理 基于类的动态代理--cglib 现在用的比较多的是 javasist 来生成动态代理 . 百度一下javasist 我们这里使用JDK的原生代码来实现,其余的道理都是一样的! 2、环境 接口 package com.nevesettle.dongtai; public interface Userdao { public void addUser(); public void deleteUser(); public void queryUser(); public void updateUser(); } 实现类 package com