跳至主要内容

博文

目前显示的是 九月, 2017的博文

c++中类的五种关系

http://ift.tt/2xzTXub c++中类的五种关系 [TOC] 组合关系 强烈的从属关系 是我本身的一部分 我离开你无法运行,你离开我也不能运行 具体使用的方法就是用做类的数据成员 class A{ private: ... public: ... }; class B { private: B objB; }; 举个坦克大战的例子就是操作引擎和地图就应该是组合关系 操作引擎的操作依赖于地图,没有地图,操作引擎无法绘制,地图离开操作引擎,也没有办法显示 继承关系 继承是组合的一种特殊形式 聚合关系 按照讲义上来说是部件可共享 但是我感觉这个讲义上讲的有点问题 我自己的理解: 首先看语法: class A{ public: B b; }; class B{ }; 聚合和组合其实应该是差不多的,从使用语法上完全无法分辨 B类于A类是组合或者聚合的前提是: B类必须是确定存在的 销毁A类,B成员也随之消失 销毁B成员,A类也不存在 关联关系 我不依赖你,没有从属关系 有你也行, 没你也行,整个程序不影响运行 但是如果有你的时候需要和你互动 class A{ }; class B{ public: A *a; }; B 类中,A类不一定是具体存在的 销毁B类,A类可能还存在 依赖关系 没有从属关系 有你也行,没有也中 不需要跟你保持持久的交流 就是偶尔在需要的时候用一下你 表现在语法中就是把你这类的实例对象作为参数传递进去 class A{ }; class B { public: void fun(A); }; 最后 总结语法: 组合和聚合可以是一种语法,都是作为另一个类的数据成员,作为这个类的不可获取的一部分,从一开始就保持持久的交流和数据交...

python的多线程锁的问题

http://ift.tt/2wrDX9T python的多线程锁的问题 ##多线程中关于锁的问题 import threading g_nNum=0 def ThreadOC(): for i in range(1000000): global g_nNum g_nNum+=1 t1 =threading.Thread(name="t1",target=ThreadOC) t2=threading.Thread(name="t2",target=ThreadOC) t1.start() t2.start() t1.join() t2.join() print(g_nNum) ##问题解释 每次运行都可以看出,g_nNum的数据都是不一样的 是这样 我们现在用的cpu都是几核几核的 ,一个核心一次只能执行一条指令 cpu运行调用线程是不一定的,可能运行这个线程十几秒 然后调用另一个线程几秒 然后解释这个代码当中的多线问题 当2个线程共享一个全局变量的时候,cpu至少要做以下三组动作 把g_nNum的值取出来放到寄存器 寄存器中的值加+ 把寄存器的值取出来给g_nNum(懂汇编的看一下汇编) 这么一来,假如线程1执行了100次,正在在+1的过程中,线程2进来了 线程2执行了105次 ,把数值给寄存器,那是不是线程1在刚刚被抢的时候做的运算的运算都白做了 所以为了要解决这个问题,引入了锁的概念 当一个线程操作数据的时候,锁住这个数据,只跟由这个线程操作,当线程不在操作这个数据的时候,释放资源 ##问题解决 import threading g_nNum = 0 lock =threading.Lock() #实例化锁对象 def ThreadOC(): for i in range(1000000): lock.acquire() #获取锁 global g_nNum g_nNum += 1 lock.release() # 释放锁 t1 = threading.Thread(name="t1", target=ThreadOC) t2 = threa...

python3语法基础之函数和类

http://ift.tt/2xXd9ze 函数 什么是函数? 函数就是一些封装在一起,能够实现某种功能的代码段 函数的定义 在python中,函数通过def关键字定义 定义的格式如下: def 函数名 ( 参数 ) : 函数体 实参和形参 形参 函数定义的时候 , 写在参数列表中的变量名 实参 调用函数的时候,往函数里传递的数据 关于return 执行return语句的时候,肯定会从当前函数退出 return 可以返回值 如果没有写return ,python中默认 return None 局部变量和全局变量 在函数内或者类内定义的变量叫做局部变量,作用域只在函数或类内 定义在文件中,任何敌方都能访问到的叫全局变量 可以使用global 关键字把局部变量声明为全局变量 默认参数 python支持默认参数,也是从右向左赋值     def TestFun ( nNumA = 10 , nNumB = 20 ) : print ( nNumA , nNumB )     if __name__ == "__main__" : TestFun(); TestFun( 5 , 1 )     关键字参数 就是可以不按照顺序参数 def TestFun ( nNumA , nNumB ) : print ( nNumA , nNumB )     if __name__ == "__main__" : TestFun( nNumB = 5 , nNumA = 6 ) 变参 python中是通过* 来实现边长参数的 def TestFun ( nNumA , *args ) : print ( nNumA ) print ( args )     if __name__ == "__main__" : TestFun( 1 , 2 , 3 , 4 , 5 , 6 ) 边长的参数默认是一个元组     类 为什么会有面向对象理念? 因为所有的...

python3整理之基础语法1

http://ift.tt/2y0boSz 认识 python 数据类型 数据是一切程序的基石,python虽然是弱类型语言,但是也不例外 数值类型 类型 英文 数据 整型 int 整数,无限大 浮点型 float 小数 负数 complex 复数由实部和虚部部分构成 字符类型 python中没有单字符类型,只有字符串类型 被包裹在' '和" "之中 变量 python是弱类型语言,不需要写数据类型,但是需要初始化 变量命名规则 跟c和c++一样 只能用数字,字母和下划线 数字不能用作变量开头 不能使用关键字 关键字 关键字就是在python中有特殊含义的单词 算术 引入 异常 控制 操作与状态 返回退出 定义 and import except while del return lambda or as try if assert yield class in from finally else True continue def is    raise elsif False pass global not    with for None break nonlocal 输入输出 输入 input 例子: a =eval(input('please input something ')) 注:input默认接收为字符串,可以使用类型强转,也可以用eval自动转换 输出 print 例子:print(a) 注:python3 中print强制使用() python 基础语法 运算符 运算符举例 运算符类型 运算符...

数据库(MySQL)编程之数据库和表的基本操作

http://ift.tt/2gOXg6X     数据库和表的基本操作 操作前的基本知识 基本 sql语句不区分大小写(关键字建议用大小写),但字符串常量区分大小写 sql语句可单行或多行书写,以; 结尾 关键字不能跨行或简写 可以用空格或者缩进来提高可读性 注释 sql标准 /**/ : 多行注释 "--":单行注释 mysql 标准: "#":单行注释 "COMMENT":为字段或列添加注释 创建和查看数据库 创建数据库 模板 CREATE DATABASE [IF NOT EXISTS ] db_name create_specification: IF NOT EXITSTS : 检查数据库是否存在,如果存在就不创建 creat_specification :创建条件 CHARACTER SET: 制定数据聚采用的字符集 COLLATE :制定数据库字符集的比较方式 DEFAULT :表示默认内容,即使没有制定该项,也有默认的值 # 创建数据库使用字符集为 UTF-8 ,使用规则为 uftf_bin CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE uft8_bin; 一般默认的数据库就是utf8 和utf8_bin的比较方式,因此一般创建数据库的时候都用 CREATE DATABASE db_name mysql> create database testdb; Query OK, 1 row affected (0.02 sec) 查看数据库 命令 SHOW DATABASES     mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | testdb | |...