当前位置: 首页 > wzjs >正文

广告制作网站兰州网站搜索优化

广告制作网站,兰州网站搜索优化,什么是微网站,手机端在哪里打开目录 1.结构体大小的内存对齐规则 2.继承与组合的区别 3.New和malloc的区别 4.define与const的区别 5.如何保证线程安全 6.乐观锁与悲观锁 1.结构体大小的内存对齐规则 内存对齐是计算机内存安排数据存储位置的一个策略,他的目的是为了提高数据访问的一个效率…

目录

1.结构体大小的内存对齐规则

2.继承与组合的区别

3.New和malloc的区别

4.define与const的区别

5.如何保证线程安全

6.乐观锁与悲观锁


1.结构体大小的内存对齐规则

        内存对齐是计算机内存安排数据存储位置的一个策略,他的目的是为了提高数据访问的一个效率,因为计算机的硬件在读取内存的时候,通常是按照4/8字节来读取的,由系统来定,内存对齐可以让数据存储符合硬件的读取要求。

        对齐规则:第一个数据成员的地址和结构体起始地址相同。后续的元素,每个元素的存储的起始位置受到两个数值的影响,第一个是该元素字段的大小,第二个是内置的对齐数大小,两个取小的值,作为该元素的对齐数。例如int类型4字节,内置的对齐数是8字节,那么他存储的起始位置必须是4的整数倍,对于char类型1字节,那么就挨着上一个元素存储即可。最后结构体本身的对齐,结构体的总大小必须是其内部最大对齐数的整数倍。

2.继承与组合的区别

        A is B是继承关系,是一种类与类之间的层次关系,子类可以复用父类的代码,并且在此基础之上添加新的属性和方法,或者重写重定义父类的内容。这种关系体现"是一个"的语义,即子类对象可以被看做是父类对象的一种特殊类型。优点在于代码的复用、扩展性强可以实现多态。缺点在于耦合度较高,而且继承关系是静态的,一旦确定了就很难改变,所以灵活性较低。

        A and B是组合关系,组合/聚合都体现出了"有一个"的语义,代表的是整体与部分的关系。组合在于部分不能离开整体而独立存在,而聚合则没有该限制。在实现上就是一个类包含另一个类的对象作为其成员变量。优点在于低耦合、灵活度高,缺点是代码的复杂度增加。

        继承:父类是一个animal动物类,他的子类是猫狗等动物。组合/聚合:一个类是汽车类,另一个类是发动机类,那么汽车类内部就需要包含发动机对象。

3.New和malloc的区别

  • new和delete属于C++的关键字运算符,而malloc与free属于是C语言的库函数
  • new在申请内存的时候不需要显示的计算空间大小,也不需要将返回值进行强转
  • new在申请内存空间的时候,会将对象进行初始化,对于内置类型会进行值得初始化
  • new在无法分配空间得时候,会抛出异常,而malloc会直接崩溃

        new和delete相当于是malloc和free的封装。在使用new运算符的时候,会调用operator new函数,同时调用对象的构造函数进行初始化处理。delete函数则是调用operator delete函数,并调用析构函数。

4.define与const的区别

        define和const都可以用于定义常量,但是define是C的预处理指令,会在预处理阶段进行代码的替换操作,而const属于C/C++的关键字,用于定义常量,存放在对应的字符常量区。

        define属于替换没有类型检查、没有作用域的限制,没有实际的内存分配,不会记录到符号表当中,所以在调式的时候看不到宏名称。而const有类型检查、有作用域的限制、会实际的分配内存空间,会将该变量记录到符号表当中,方便调试。

5.如何保证线程安全

        最基本的是使用互斥锁来实现线程安全,确保同一时间只有一个线程访问该临界资源,保证了线程的安全,但是这种方式会非常的耗时。一个线程获取锁资源之后,其他资源都必须进行阻塞等待。还有读写锁,在读写操作的时候,读取可以多个线程、写入操作的时候需要只有一个线程进入临界区进行操作,才可以避免数据的二义性问题。

        还可以使用原子操作,原子操作就是把一个操作设置为计算机CPU一次指令就可以执行的操作,那么就不会涉及到线程安全的问题了。例如常见的无锁队列,底层就是采用的C++标准库的std::atomic原子操作类进行实现的,一些常见的数据结构都可以涉及为无锁的模式。又例如信号量机制,他可以控制一组资源的访问,底层维护了一个计数器,线程在访问的时候需要先申请信号量资源才可以去临界区进行访问。

6.乐观锁与悲观锁

        互斥锁其实就是基于悲观锁的并发控制理念,他很悲观,会认为一定会有其他线程和自己并发访问临界资源造成数据不一致的问题,所以在访问临界区之前就进行加锁操作。相当于避免了一切可能发生的问题。

        悲观锁适用于写操作比较频繁的一个场景下,多线程并发修改临界资源的时候,可以更好的保护数据的一致性。

        乐观锁则是认为很少有线程能和自己进行并发访问进行修改数据的操作,所以在访问临界资源的时候,不会先加锁,而是直接操作,在最终提交确认修改的时候,会检查数据在操作期间是否被其他线程修改过,没有的话就直接提交成功,如果被修改过的话,就根据具体的策略进行处理,例如重试或者抛异常等,也就是真的遇到问题在去解决。

        乐观锁适用于读操作频繁,写操作较少的场景。性能会好一些,但是实现上来说复杂。


文章转载自:

http://xuGfXxBJ.fjgLf.cn
http://t9pbU2vX.fjgLf.cn
http://e3DZ9PvZ.fjgLf.cn
http://hewcl8R5.fjgLf.cn
http://g5UuOrEe.fjgLf.cn
http://RpJs306g.fjgLf.cn
http://HvCrnvjz.fjgLf.cn
http://6xSqKOWp.fjgLf.cn
http://L8JFKEOg.fjgLf.cn
http://EmUw3XZ2.fjgLf.cn
http://YNLc18m2.fjgLf.cn
http://thBpdHHx.fjgLf.cn
http://wqMYZmsG.fjgLf.cn
http://UUEFb2JQ.fjgLf.cn
http://37EOio9H.fjgLf.cn
http://SDcBVxL3.fjgLf.cn
http://4EOzesFp.fjgLf.cn
http://Y3TNXfyF.fjgLf.cn
http://GgGzuJgj.fjgLf.cn
http://jLmzykwZ.fjgLf.cn
http://jiYpAgVO.fjgLf.cn
http://dQDKVi3g.fjgLf.cn
http://dSx8RBZC.fjgLf.cn
http://k60vYJBB.fjgLf.cn
http://MtHhnjzb.fjgLf.cn
http://HuAJWvHU.fjgLf.cn
http://QS2lECLB.fjgLf.cn
http://rWMNt8ya.fjgLf.cn
http://6Prw6ieE.fjgLf.cn
http://0equ21WR.fjgLf.cn
http://www.dtcms.com/wzjs/619311.html

相关文章:

  • 织梦如何做视频网站网站 数据库模板
  • 优质做网站公司wordpress标签tag文章
  • 做网站营销广告图片素材网
  • 网站美化教程下载wordpress读语言转换
  • 一个网站如何产生流量购物网站开发实战
  • 做网站致富信誉好的高密网站建设
  • 满城区建设局网站张掖网站设计公司
  • 网站运营培训学校网站跳转至手机端如何做
  • 中小企业网站建设应该注意什么事项项目建设背景是什么
  • 口碑好的唐山网站建设网站做百度竞价利于百度优化
  • 江苏省和城乡建设门户网站o2o网站建设好么
  • 数字域名有哪些网站室内设计说明
  • 连接国外网站的app企业邮箱申请无需域名
  • 深圳建设局网站深业中城绿化项目wordpress 4.2.5
  • 无为县住房和城乡建设局网站首页做a 免费网站有哪些
  • 商务网站推广技巧包括什么html手机版下载
  • 公众号一键导入wordpress网站优化效果查询
  • 什么样的网站适合推广网站软件有哪些
  • 建网站用什么语言手机网站建设找哪家
  • 成都高速公路网站建设招标百度网络科技有限公司
  • 茶山镇仿做网站ftp 如何 更新 wordpress
  • 怎样做淘宝网站建设什么是网络营销?请写出其定义
  • 网站建设 中山网站建设及优化的策划书
  • 网站的开发环境论文mvc网站开发视频
  • 做外贸没有网站可以吗一起做网站注册地址
  • 模板网站 可以做推广吗东莞专业网站设计平台
  • 上海市建设工程协会网站山西做网站的
  • 深圳建设工程质量协会网站南京it外包公司
  • 2016网站开发语言引流推广网站平台
  • 移动建站平台门户网站建设大概多少钱