zoukankan      html  css  js  c++  java
  • c++ learning

    迟到了三年的学习笔记。。

    野指针:造了一个指针,不是NULL或者没有指向正经内存。比如刚造出来又不赋值,并不知道它指向了哪里

    内存泄漏:造了一个指针,给他分配了空间,xxxxx,又分配了一块空间,指针目标转移,之前的空间没有被释放,叫做内存泄漏

    数据库的四个事务隔离级别:

      1 读未提交:A在进行一套事务,干到一半B过来读了一下,读到了A做得操作,但是A其实还没有commit        |     写时不同时写

      2 读提交: A在进行一套事务,B也是,A对C进行查询,B对C进行操作,Bcommit, A对C进行查询,不一样       |     写时不同时读写

      3 可重复读:A在进行一套事务,干到一半B过来读了两下,第一次是空,第二次是有,这并非脏读,解决脏读的办法是对数据加锁,这样人读到的是一个快照型数据,但是这个锁无法锁住不存在的行,即无法防备insert |  写时不同时读写, 读时只允许读    

      4 序列化:A在进行一套事务,干到一半B过来读了一下,被delay到A事务结束     |     所有事务串行化

     CAP定理:对于一个分布式系统,一致性 可用性 分区容错性只能达到2/3 

      1 一致性 AB分处不同节点,A写入,B和A在同一时间的数据是一样的

      2 可用性 A虽然炸了,还有B可以返回正确的结果,集群没坏

      3 分区容错性 虽然网炸了,AB不能通信,但是集群还很ok

      2/3 : 因为分布式,所以网很容易炸,所以3是必备的,如果需要一致性,写A的时候也要写B,那么写A的时候就要同时给AB加锁,这个时候B就没法写了,就没有了可用性

      一个权宜的办法是不要求强一致性,而是最终一致性,即最终AB的数据是得到一致的。

    prepare statement:mysql的一种sql语句预处理的手法,可以大致理解为提前编写好sql的框架,在参数的位置留下空缺,之后将这个sql框架拿出来填入参数。

      好处在于比较清晰,不至于每次都需要裸写一个sql出来,缺点在于难以实现指定过滤的功能,sql已经写死了,如果要一个新的功能,只能再写一个preStmt。 一个容易感觉到的优点,它比裸sql快。

    ORM:对象关系映射,在面向对象思想下,将数据库进行对象实例化(不太能描述这个感觉),之前程序访问数据库是进行写sql语句或者拼sql语句来执行,使用ORM可以将数据库中的元祖具象化成为一个对象。

      使用ORM的好处在于其可以解决很多裸sql或者prepare_statement的问题,如http://wiki.jikexueyuan.com/project/hibernate/orm-overview.html所言。

      不过似乎使用ORM的人还是少数,比较明显的缺点在于在小范围的使用中,ORM太大了些,而且慢了点。

    引用和指针:指针是一个变量,可以指向别的地址,而引用不可变,是一个固定的地址,当它被造出来之后,就绑定上了一个地方。

    指针的Free:造一个地址,造一个指针,指针指地址,指针也是变量,他也有地址,但是他的值是他指向的地址,free指针则释放的是指针指向的地址,指针的地址没有办法手动释放,只能等待它的生命周期结束

    new/delete & malloc/free:后者是c中有的,前者是c++的,前者依赖后者,new中首先会执行malloc,然后在malloc申请的地址上做一个对象,malloc申请的地址和new一个属于堆,一个属于栈。

    函数传值中引用和指针的区别:

      1 形参 只是传进去了一个值,函数只接受到了值而非地址,从地址上可以看出来不同    |    我们甚至不知道变量的地址,无法更改

      2 指针 通过传入一个保存变量地址的参数传入了变量的地址,函数对这个指针的改动“可以”直接作用到地址上去,而指针本身有地址,我们可以改动指针指向的那块地址。    |     我们知道了变量的地址  

      3 引用 传入了变量的地址,结果就是函数内变量和外边的那个没有区别,地址是一样的。    |    我们在函数内也能直接看到这个变量了

    构造函数: 当构造函数没有参数的时候 是不需要在实例后面加括号的 | 我经历了什么?

    share_ptr: 如果两个指针同时指向一个地址,那么delete其中的一个会使另一个变野,更难的是,我们还不知道是否还有“另一个”,delete则非法内存,不delete则内存泄漏

      使用share_ptr,内部有一个累加值,每多一个它的副本 x++,delele时会查看x,x为0则释放资源,不为0则仅仅x--,需要注意的是,若果ab同时为c的share_ptr而ab无关,则没有这种联系,需要是a为c的ptr而b为a的复制(通过set赋值)

      然而这种情况也不能完全避免指针野化,a以share_ptr指向b而b析构掉了,这种是资源自己释放了,仍然会有问题,不过share_ptr并非为此而生

    类:py&go中,类较轻量级,而在c++中,类所应用的方面很广,合理使用类,规划其中的权限等级很重要

    友元:一个类的私有变量和方法不开放对外访问,只能通过public方法传出变量和使用public方法绑定方法,子类直接使用父类定义的私有方法或变量时需要在父类中声明友元类为子类名,其他类也可以通过这种方法调用

    虚函数:基类中声明,可以写和调用,子类对其重写,可以写和调用,子类不重写,可以调用

    纯虚函数:基类中声明,不写不调用,子类重写,可以写和调用,若子类继承基类,则必须重写所有纯虚函数

  • 相关阅读:
    WPS企业版序列号
    局域网远程
    win10 新增、删除、重命名文件需要刷新才更新的问题
    nginx配置文件参数详解
    TCP/IP协议明明白白
    iperf3
    华为交换机流量统计
    delphi 数据库技术沉浮录--谨献给成为历史的BDE
    在ubuntu 上使用wine 运行Delphi win32 应用
    kbmmw 中实现客户端自动更新
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/9377767.html
Copyright © 2011-2022 走看看