【琐识】日常获取知识随笔

点击目录传送ฅʕ•̫͡•ʔฅ

    • 19.10.14
      • getchar() 返回的值是ASCII码
      • RSS订阅(Really Simple Syndication,简易信息聚合)
      • C#静态方法、访问修饰符等
    • 19.10.15
      • 链表其实先写出三点:①结点②初始化③遍历
      • Object类中方法的重写(override)
      • 类的成员变量分为:
    • 19.10.16
      • Java的面试题,闲时看看,挺通透的
    • 19.10.17
      • 属性Property 的 get、set 访问器 用于简化代码
      • 被 static 修饰的构造函数为静态构造函数
      • 类的继承 多态
      • 关于Java数组的三种定义方式:
    • 19.10.18
      • 在相同条件下 mkv avi rmvb wmv MP4 mp2
      • 一个引用变量编译时类型与运行时类型不一致时,出现多态
    • 19.10.19——周六
      • this 指代当前对象。
    • 19.10.20——周日
      • 打字测速以及盲打推荐网站:
      • 学习github:
    • 19.10.21
      • 二.接口、委托和事件
    • 19.10.22
      • 抽象方法必在抽象类中
      • 如何使用Eclipse打开Java工程文件:
    • 19.10.23
      • 对称差:(A并B)-(A交B)
    • 19.10.24
      • 广义表深度 = 表中括号重数 = ◉结点层数
      • 加下划线,用来表示全局变量
    • 19.10.25
      • 方法重载是为了节省不必要的浪费(不同的函数名有大致相同的功能)
      • 类:包括类声明和类体
      • 引用型变量中存放的是**引用**
    • 19.10.26——周六
    • 19.10.27——周日
      • 堆和栈:
    • 19.10.28
      • C语言输入输出缓冲区:
    • 19.10.29
      • **二叉树**:
      • NULL Pointer Exception(**空指针异常**)
    • 19.10.30
      • 关系型数据库
    • 19.10.31
      • 这个需要记好,在完全二叉树中,**n0 = n2 + 1**
    • 19.11.1
      • 空指针异常
    • 19.11.2 ——周六
      • Java:接口回调:
      • 通过使用版本控制,我们可以无忧无虑的改进项目
      • 廖雪峰的官方网站:
      • 安装Git:
    • 19.11.3 ——周日
      • 再次记录学习GitHub网站(江南一点雨):
      • 更适合初学者的学习网站(廖雪峰的官方网站)
    • 19.11.4
      • 学到的 git hub 命令(持续更新)
      • 创建SSH Key
    • 19.11.5
      • 电脑参数:
    • 19.11.6
      • 关系的5种性质:自反性、反自反性、对称性、反对称性、传递性
    • 19.11.7
    • 19.11.8
      • JDK13已经来了,为什么仍使用JDK8:
      • JDK 8u202 下载地址:
      • Maven下载和安装:
    • 19.11.9——周六
      • MySQL下载安装详情教程:
      • MySQL Community Downloads:
      • 'net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件
    • 19.11.10——周日
    • 19.11.11
      • 线性表插入数据元素的时候为什么要先插入,再++L.length?
      • 困扰了好久的输入时如何回车跳出的问题
    • 19.11.12
      • 注: 等概率(等权重)时等长编码是最优的前缀编码
      • 状态树
    • 19.11.14
      • C#中使用split分割字符串的几种方法小结
      • C#中可以使用key.KeyChar获取输入字符,也可以使用key.Key获取输入的键位
    • 19.11.15
      • 包装类
    • 19.11.16——周六
      • 值类型和引用类型的区别就是,值类型变量直接在堆栈中保存变量的值,引用类型的变量在堆栈中保存的是对象的引用地址
      • 结构是一种轻量型的类
    • 19.11.17——周日
      • Tomcat:
      • Redis 是什么?
      • Redis 下载
    • 19.11.18
      • C#期中测试:关于泛型和读取文件
    • 19.11.19
      • 整数运算的结果一定是精确的,浮点数常常无法精确表示。
      • 移位运算
    • 19.11.20
      • 引用类型的变量是指向某个对象
      • 多行字符串如何赋值给一个`String`类型变量
      • 什么是域名?
      • 学习使用IDEA
    • 19.11.21
      • Java SE 11 & JDK 11
      • 图的四种存储结构:
      • 图的遍历
    • 19.11.22
      • 迭代器、foreach遍历与哈希值
    • 19.11.23——周六
      • `this`始终指向当前实例
      • 可变参数、参数绑定
      • 再会继承
      • 再会多态
        • 覆写(即Override重写)
      • 再会抽象
        • 抽象编程
    • 19.11.24——周日
      • 静态字段与静态方法并不属于实例
      • 包作用域
      • import(在类中引用另外一个类)
      • 编译器自动导入的包: java.lang包
      • 作用域
      • 最佳实践
      • 到底什么是`classpath`?
      • 如何创建一个`jar`包
    • 19.11.25
    • 19.11.30
      • 为什么`switch 的 case`中不能定义变量时赋初值,可以先定义后赋值?
      • `typedef`:用来为复杂的声明定义简单的别名,它与宏定义有些差异
      • C/C++中 `->` 与 `.` 的区别是?
    • 19_12_4
      • 图的基本概念:
    • 19_12_5
      • C/C++的无限数组问题

日常吸收知识o( ̄▽ ̄)o

【琐识】日常获取知识随笔_第1张图片

19.10.14

getchar() 返回的值是ASCII码

((American Standard Code for Information Interchange): 美国信息交换标准代码)
https://blog.csdn.net/wenpeng_lu/article/details/70308101----名不副实的getchar()
getchar() 用于处理前面输入后的回车符的问题,即很多时候会有回车键滞留在输入流上
getchar() 将系统暂停一下
————————————

RSS订阅(Really Simple Syndication,简易信息聚合)

“聚合程序”又被称为RSS阅读器。
https://blog.werner.wiki/what-is-rss-subscription/----什么是RSS订阅
——————————————————————————

C#静态方法、访问修饰符等

https://blog.csdn.net/qq_43763494/article/details/100867297----【记录】关于C#遇到的问题、C#的访问修饰符以及C#静态类、静态方法的使用
——————————————————
字段是类的成员,局部变量是块的成员。
字段是指在类或结构中声明的“类级别”的变量。或者说,字段是整个类内部的所有方法和事件中都可以访问的变量。
局部变量是相对于字段来说的。可以将局部变量理解为“块”级别的变量。
只读字段(readonly) 只能初始化一次

19.10.15

链表其实先写出三点:①结点②初始化③遍历

理解之后再写别的就会好很多( ̄▽ ̄)"
https://blog.csdn.net/qq_43763494/article/details/101068960----【理解】链表的初始化与遍历
————————————————————————————

Object类中方法的重写(override)

Object类中方法 equals(),x,y 引用同一对象时为 true
x.equals(y);
//还想写一篇博客但是。。。要等等,等闲时
https://blog.csdn.net/qq_43763494/article/details/102623721----【记录】Java 练习题10.18
JDK6API----这个.chm文件传不了┭┮﹏┭┮
——————————————————
final 关键字,主要修饰类、变量、方法

类的成员变量分为:

类变量:有 static 修饰
实例变量,二者区别就是前者有 static 修饰
——————————————————
final 修饰的成员变量有三种初始化机会
①定义时 ②程序块中 ③构造方法中
https://blog.csdn.net/qq_43763494/article/details/102623721----【记录】Java 练习题10.18的练习1就是个例子
成员变量被final修饰后,就没有了默认值
局部变量本来就没有默认值,成员变量有
——————————————————
子类构造方法中默认调用父类的不带参数的构造方法
若父类中没有不带参构造方法
则需要在子类的构造方法中显式调用父类的带参数构造方法
super(name); 放在构造方法中 显式调用 //这个语句必须有不能少
父类的方法被final修饰后,子类不能重写该方法(父类的被 final 修饰的方法)
final 修饰的类,不能被继承
https://blog.csdn.net/qq_32635069/article/details/82813431----final变量的作用
———————————————————————————
多态:引用变量有两种类型:
①编译时 ②运行时
一般情况下这两种类型都是一致的,不一致时,出现多态
Animal an1 = new Cat(); 其中Cat是Animal的子类
Animal是编译时的,Cat是运行时的,即为多态的例子
https://blog.csdn.net/The_Best_Hacker/article/details/89076108----多态
关于引用变量:https://blog.csdn.net/WKX18330698534/article/details/77623381----【JAVA基础】引用变量
同时也是对类的实例化的通透式理解,个人感觉这个真的是Java基础
关于Java对象和引用变量:https://blog.csdn.net/weixin_35813749/article/details/52374749----Java对象和引用变量

19.10.16

Java的面试题,闲时看看,挺通透的

https://blog.csdn.net/jackfrued/article/details/44921941----Java面试题全集(上)
——————————————
今天主要上的是三节离散数学
前束范式不是唯一的
换名规则主要用于求前束范式时量词前移辖域扩张
https://blog.csdn.net/qq_43763494/article/details/101031873----【记录】离散数学知识点总结

19.10.17

数据结构 模式匹配的改进算法 KMP算法
看书!看书!看书!重要的事情说三遍!
——————————————————

属性Property 的 get、set 访问器 用于简化代码

当 get、set 为空时,必须同时存在
方法([参数序列])的三种类型
ref关键字 ref int a 引用类型(这个就像传递地址一样,在函数中一系列操作后得出的 a,不用返回,原变量已经和 a 的值相等了)
out关键字 out int a 返回类型
参数组 params int[] arr
https://blog.csdn.net/wwlcsdn000/article/details/78731009----C#数组GetSet索引器分析
——————————

被 static 修饰的构造函数为静态构造函数

静态构造函数既没有访问修饰符,也没有参数
在创建第一个实例或引用任何静态成员之前,CLR都会自动调用静态构造函数。
https://blog.csdn.net/zhangbp/article/details/8180629----理解.NET中的CLR原理
静态构造函数仅调用一次。如果静态构造函数引发异常,在程序运行所在的应用程序域的生存期内,类型将一直保持未初始化的状态。
————————————
方法重载----同名不同参
ref 和 out 不能互相重载(同时存在) 返回代码一样
就是说一个方法重载时用 ref 引用类型的参数
就不能在同时用 out 返回类型的参数重载这个方法
——————————————————————

类的继承 多态

封装类:
①抽象(abstract) 不能实例化。
②密封(sealed) 不能继承。
继承 “ :”
扩充类 基类
——————
virtual (虚拟)不能用静态(static关键字)和私有(private关键字)修饰
虚拟化后实现 base.方法名()
重写(自己实现) (override)注意形式和原方法保持一致
new 隐藏
//待写博客(。^▽^)
—————
先看有没有实现的…(override)
没实现(没重写(就是没有关键字 override 修饰))的还是按照父类的来
——————————————————
回顾:
protected 可跨程序集 子类访问
internal 当前程序集
protected internal 上面二者的并集(看起来好像protected的范围更大一些)
——————————————————————

关于Java数组的三种定义方式:

第一种:int[] arr1 = {1,2,3};
第二种:int[] arr2 = new int[]{1,2,3,4};
第三种:int[] arr3 = new int[5];
https://blog.csdn.net/qq_43763494/article/details/101111408#3_114----【记录】Java 练习题 9.21的第三个:求任意输入的和(用数组)。
—————————————————
Java中 next() 的输入范围比 nextLine() 小,比如后者可以输入空格,只有回车时才结束输入
https://blog.csdn.net/qq_39445165/article/details/83413516----
Java中next与nextLine方法的区别

19.10.18

在相同条件下 mkv avi rmvb wmv MP4 mp2

https://zhidao.baidu.com/question/521846002.html----rmvb和mkv哪个好
https://zhidao.baidu.com/question/30158366.html----mkv是什么格式?
————————————————————
更新博客时有个保存键,比发布要方便很多
在这里插入图片描述
————————————————————

一个引用变量编译时类型与运行时类型不一致时,出现多态

范围小的到范围大的,隐式转换
对象的类型转换:
向上转型
向下转型
例如:An an1 = new Cat();就是向上,隐式转换
含义是:将Cat对象当作An类型来用,此时哪些只属于子类的方法就不能用了
向下转型 父转子
例如
Dog dog = new Dog(); change(dog); public static void change(Animal an) { Cat cat = (Cat)an; }
就是将An类型的an转为Cat,当然,这个代码是错误的
因为最后一条语句,Dog和Cat并没有继承关系,所以编译时能通过,但运行时会出错(不能将本是Dog的转为Cat)具体原因不清楚。。。
————————————————————————
接口 提了一下 interface
强制调用父类的构造方法
super(n)参考19.10.15的,这个语句一定要有
因为想初始化一个父类的对象,必须给一个参数(父类只有带参的构造方法时)
eclipse: Debug后右上角切换回Java
语句:if(an instanceof Cat)的意思是:an 是 Cat 或其子吗?
————————————————————————
写的知识点博客 一条一条的记好像有点难以理解。。。
难以看下去…
改为理解

19.10.19——周六

this 指代当前对象。

19.10.20——周日

打字测速以及盲打推荐网站:

https://www.keybr.com/----Typing practice

学习github:

https://www.javaboy.org/git/----Git 教程合集(顺序已经整理好)

19.10.21

C#:
一.常用结构和类的方法
1.Math类
2.DataTime和TimeSpan
3.秒表和计时器
4.随机数

二.接口、委托和事件

1.接口,接口中只能声明,不能包含已经实现的方法
2.一个类可以有多个接口
3.可以通过接口实现类的多继承
4.定义一个委托
同名方法放入
加上event 就是事件
+= 注册事件
-= 取消事件
https://blog.csdn.net/qq_43763494/article/details/102661309----【理解】C# 委托与事件

19.10.22

Java:

抽象方法必在抽象类中

抽类不能实例化
抽类中可以没有抽方
抽类只能被继承
抽子必实现抽类中的所有抽方,否则仍为抽类
接口:就是完全抽象,抽类中还可以有非抽象方法,接口中方法均抽象
接口中变量(属性)默认public static final 就是全是全局常量
方法默认 public abstract,就是全抽象,而且是 public
接口可以继承接口
https://blog.csdn.net/qq_43763494/article/details/102689419----【理解】Java 关于抽象类、抽象方法、接口以及架包
——————————

如何使用Eclipse打开Java工程文件:

https://jingyan.baidu.com/article/636f38bb96cfd2d6b946107b.html----如何使用Eclipse打开Java工程文件
—————————————
常量一般全部大写(如:String LIFESTYLE = "alive";
——————————————————
DS:
思维导图
二维转一维,下标之间的关系
k = 0存值相同的上三角
利用三元组,转置矩阵,压缩矩阵
————————————
还有各书课后题
DS要看看网课:
https://www.bilibili.com/video/av2975983

19.10.23

离散数学:
全集:是个相对性的概念
幂集:全体子集
相对补: -
A - B (A减去B中的)
绝对补:~
~A = E - A

对称差:(A并B)-(A交B)

运算顺序:~ 和 P(A) 优先
——————————

  • 命题演算法。
  • 包含传递法,找个中间集 T。
  • 利用包含的等价条件。
  • 反证法。
  • 利用已包含式并交运算。
  • 等式替换。
  • 集合运算法。
  • 包含排斥原理。
    ——————

减多了加,加多了减

19.10.24

DS:

广义表深度 = 表中括号重数 = ◉结点层数

原子深度 = 0
空表深度 = 1
当广义表LS非空时,称第一个元素为LS的表头(Head),

  • 称其余元素组成的表是LS的表尾(Tail)。

若列表不空,则可分解成表头和表尾;

  • 反之,一对确定的表头和表尾可惟一确定列表。

C#:
time.Enabled
Stopwatch.Restart
———————

加下划线,用来表示全局变量

进度条跑到头,performStep()
运行位置,StartPosition,可以改为CenterScreen,屏幕中央运行
定义全局变量后定义一个封装属性(get、set)

19.10.25

Java:
方法重载:

方法重载是为了节省不必要的浪费(不同的函数名有大致相同的功能)

重载条件:

  • 同一个类中,函数名相同,参数列表不同(包括参数个数不同,或参数类型不同)
  • 重载方法返回值类型应该相同。

https://blog.csdn.net/weixin_43101144/article/details/84758613----Java方法重载
https://blog.csdn.net/wzcyamadie/article/details/60468844----C#—方法重载


回顾:

类:包括类声明和类体

类体中:包括成员变量的声明和方法的定义
类的成员变量包括:类变量,实例变量,这在19.10.15中说过
https://blog.csdn.net/u012036927/article/details/14103999----实例变量和类变量内存分配
类的方法也可以分为实例方法和类方法(类方法即 static 静态方法)


Java:对象的引用和实体
Java的引用型数据:对象、数组、接口

引用型变量中存放的是引用

————————
Has-A:该对象将其他对象作为自己的组成部分

19.10.26——周六

尾指针:(该链接里的结构体的定义也是一个亮点)
https://baike.baidu.com/item/%E5%B0%BE%E6%8C%87%E9%92%88/22800134?fr=aladdin----尾指针

19.10.27——周日

堆和栈:

  • 每当定义一个变量、常量或者对象的时候,都会有一个存储这些值的地方,这个地方就是内存堆;
  • 栈是一种遵循LIFO(先进后出)的规则的数据结构,用于存储和获取数据;

——————————————

https://www.cnblogs.com/mufc/p/11046808.html----堆和栈


今日,完成栈,完成C#Windows窗体应用程序的计时器以及随机数的代码
TCPIP书到,淘得哈喽算法以及计算机英语

19.10.28

C#:
foreach中的 item 不能编辑
C#事件引用问题:
https://bbs.csdn.net/topics/350244548----C#事件引用问题


C语言输入输出缓冲区:

https://blog.csdn.net/ww1473345713/article/details/51713471----【C】C语言输入输出缓冲区
https://blog.csdn.net/weixin_42048417/article/details/80358390----输入缓冲区与输出缓冲区

19.10.29

DS:
关于

  • 就是分支的数目,结点的度的最大值 = 树的度。
  • 深度 是树中结点的最大层次。
  • 双亲 就是前驱,注:结点的双亲好像只有一个。
  • 叶子,终端结点,没有子孙,也是一个仅有根结点的子树。
  • 分支节点 有分支的结点 即,非终端结点,就是除了叶子之外的,包括根结点。
  • 祖先 该分支中除本身外的所有结点(该结点之上的结点,不包括子孙)。
  • 子孙 以本身为根的子树上的所有结点。
  • 有序树(区分从左至右的次序,即不能互换),无序树
  • 森林(子树的集合,可以为0棵子树)
  • 左孩子,右兄弟

二叉树

可以为空,空树存在
n 个结点有 n - 1 个分支(根没有)
n = n0 + n1 + n2(写在字母后面的数字是该字母的下标)
n1 + 2*n2 = n - 1 (分支数)

  • n0 = n2 + 1(在二叉树中都成立)

Java:
数组为引用类型,即,是一个对象
需要 new
x = int [100]
x里是首地址
x 指向一组对象
动态初始化的声明和赋值分开
静态初始化有两种,推荐第二种
ArrayIndexOutOfBounds(下标越界异常)

NULL Pointer Exception(空指针异常

例如:arr = null; cout << a[0]


数字逻辑:
画逻辑图
定左边定右边定中间(确定都有什么门)

19.10.30

离散数学:

关系型数据库

  • 有序对(笛卡尔积后得有序对)
    如果一个集合为空集或者它的元素都是有序对,
    则称这个集合是一个二元关系

A × B的任何子集所定义的二元关系称作A到B的二元关系,
当A = B时,称作A上的二元关系
全域关系 E
恒等关系 I
关系矩阵
关系图(不能表示A 到B的关系,只能表示A上的关系)

  • 关系的运算:
    求关系的定义域、值域和域
    还有逆、合成、限制和像。

A上的关系,多了,2的(n的平方)次方个,即2^ (n2)
R为A上的关系,n为自然数,则R的n次幂规定为:
R0 = I(A的恒等关系)
Rn = Rn-1合成R,n>=1。


C#老师给的好礼物。。。
https://www.cnblogs.com/kissazi2/p/3189685.html----从使用层面上了解委托和事件的区别

19.10.31

数据结构:

  • 前提:完全二叉树
    结论:N 为偶,则 n1 必为 1。n0 = (N/2)下取整
    N 为奇,则 n1 必为 0。(因为有个根结点)
    结论解释:N 是总结点数,若 N 为偶数,则除了单独的根结点以外一定还有一个单独的叶子结点,即 n1 (度为1的结点)必为1。
    关系:若结点为 i,则其左孩子为 2 * i,右孩子为 2 * i+1,
    双亲为 i / 2 下取整(根结点无双亲)

这个需要记好,在完全二叉树中,n0 = n2 + 1

即,度为0的结点(叶子结点)等于度为2的结点总数+1
————
逆波兰式
先序、中序和后序。


C#:
lg(了解即可):
Environment 和 DriveInfo 类
Path 类,解析一下文件
目录管理
文件管理

  • 注:转到定义,可以看好多东西
    foreach 列举
    同一线程按顺序进行
    timer 相当于多了个线程
    .BeginInvoke 混着
    Thread.Sleep(1);休息1毫秒。
    泛型:Node< T >指定参数类型,T可以代表任何类型

19.11.1

Java:

空指针异常

多维数组就是一维数组
比如:二位数组就是,一维数组中的每一个数组元素又是一个一维数组
第一维 i 也是行数,第二维 j 也就是列数(这个看自己,第一维列第二维行也行)
int a[][3]是非法的
int b[3][]正确
a[i].length可以用于表示二维数组中每一行的长度

19.11.2 ——周六

Java:接口回调:

https://blog.csdn.net/hbyh632/article/details/78592242----JAVA接口回调详解
开始GitHub:

通过使用版本控制,我们可以无忧无虑的改进项目

你在项目中实现一个新功能的时候,Git将跟踪你对每个文件所做的修改。
https://www.cnblogs.com/wj-1314/p/7992543.html----浅谈使用git进行版本控制

廖雪峰的官方网站:

https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304----廖雪峰的官方网站

安装Git:

https://git-scm.com/downloads----Git-Downloads
https://blog.csdn.net/xgocn/article/details/80447075----Git安装和使用(谨记)

19.11.3 ——周日

在文件夹中点击右键,然后点击 Git Bush Here
直接在桌面点会出一些莫名其妙的错误

再次记录学习GitHub网站(江南一点雨):

https://www.javaboy.org/git/----Git 教程合集(顺序已经整理好)

更适合初学者的学习网站(廖雪峰的官方网站)

  • 廖雪峰的官方网站里有好多教程

https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304----廖雪峰的官方网站


打开一个 vi 编辑器:
http://c.biancheng.net/view/521.html----打开一个 vi 编辑器

19.11.4

C#:开始讲 WPF 了
各种课本例题的实现

学到的 git hub 命令(持续更新)

  • 首先mkdir创建一个版本库
  • git init 把这个目录变成Git可以管理的仓库(会出现一个.git隐藏目录)
  • git status 查看仓库状态
  • git add 将一个文件添加到暂存区
  • git commit 将暂存区文件提交到本地仓库
  • git diff查看工作区和暂存区的区别以及工作区和最新提交的差别
    顾名思义就是查看difference,显示的格式正是Unix通用的diff格式
    在add与commit之前使用

关于版本回退:
https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192----版本回退

  • git log 显示从最近到最远的提交日志(只显示当前分支的 commit ,并且不显示删除掉的 commit)(相当于显示历史记录)
  • git log --pretty=short简略信息
    git log --pretty=oneline一行输出(这个是最好用的)
  • 最好不用git log,不知道为什么每次用都会循环然后只能关掉重新打开Bash,
    git log --pretty=oneline最舒服,直接显示出来了(。^▽^)
  • git reset --hard HEAD^回退到上一个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个 ^比较容易数不过来,所以写成HEAD~100
  • cat readme.txt查看内容
  • git reset --hard commit_id,回到来时的版本,版本号写前几位即可
  • git reflog显示整个本地仓库的 commit (commit_id), 包括所有 branch 的 commit , 甚至包括已经撤销的 commit , 只要 HEAD 发生了变化, 就会在 reflog 里面看得到
    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
    【琐识】日常获取知识随笔_第2张图片

  • 暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。

  • Git跟踪并管理的是修改,而非文件。
    每次修改,如果不用git add到暂存区,那就不会加入到commit中。

又到了小结时间。

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  • git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
    命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

  • 创建SSH Key

  • https://www.liaoxuefeng.com/wiki/896043488029600/896954117292416----远程仓库

  • 关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
  • 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
  • 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
  • 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  • ls查看其中有什么文件
  • 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
  • Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

  • Git鼓励大量使用分支:
    查看分支:git branch
    创建分支:git branch
    切换分支:git checkout 或者git switch
    创建+切换分支:git checkout -b 或者git switch -c
    合并某分支到当前分支:git merge
    删除分支:git branch -d

  • 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
    git log --graph命令可以看到分支合并图。

  • Git分支十分强大,在团队开发中应该充分应用。
    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
    【琐识】日常获取知识随笔_第3张图片
    直接合并的话不会出问题么。。。发布版本之前再检查?

  • 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
    master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

  • git rebase -i可以实现提交历史的压缩
  • git checkout -- 撤销工作区的代码修改
  • git reset HEAD将暂存区的代码撤销
  • git reset --hard <版本号>实现版本回退,撤销提交到本地仓库的代码

19.11.5

SO-DIMM:
https://baike.baidu.com/item/SO-DIMM/3414598?fr=aladdin----SO-DIMM
内存条:
https://zhidao.baidu.com/question/566346268236745404.html----内存条DDR3和DDR4后面的数字是什么意思?
https://wikipedia.hk.wjbk.site/baike-----随机存取存储器(RAM)
买电脑

电脑参数:

  • 屏幕
    FHD(高清屏)LED背光显示 分辨率(1080P)
    色域:NTSC72%色域应该是等于sRGB100%的
    台式机sRGB100%是入门级
    刷新率:一般达到80Hz以上就可以完全消除图像闪烁和抖动感,笔记本一般都是标准的60Hz,LCD(液晶显示器)
    帧数:画面改变的速度,理论上,每一帧都是不同的画面
    屏幕类型:IPS屏要优于TN屏

  • 内存
    内存容量:RAM(4G、8G、16G)
    内存插槽数量2,剩余1,整机最大支持内存 16GB*2(即两个16G内存条)

  • 显卡
    独立显卡要好一些,一般都是
    AMD Radeon RX550X 2GB GDDR5(2G 独显)

  • 硬盘
    固态硬盘读取和写入速度(随机存取)更快一些;(相对于机械硬盘)
    体积小重量轻,工作噪音分贝基本为0,发热低,防震抗摔;
    就是寿命较短,数据丢失不可恢复(硬盘损坏)

  • 处理器
    CPU速度:1.6GHz睿频至3.9GHZ(看相关)
    https://zhidao.baidu.com/question/29974153.html----超频
    三级缓存:降低内存延迟和提升大数据量计算能力
    https://baike.baidu.com/item/=aladdin----三级缓存
    核心:一般是双核和四核
    CPU型号:iX-XXXXu,现在好像有了10210u第十代

19.11.6

离散数学:

关系的5种性质:自反性、反自反性、对称性、反对称性、传递性

关系的闭包:三种方式,一般用关系图(比较简单)
商集是A的一个划分,子集族Π中的元素为A的划分块(等价类)
偏序关系,可比,盖住,哈斯图

19.11.7

DS:
树和森林与二叉树的关系
C#:
WPF启航 (^^ゞ

19.11.8

JDK13已经来了,为什么仍使用JDK8:

升级版本耗时费力,最重要的是有可能影响服务的稳定性
JDK8已经足够,后来的版本收费。。。

  • OracleJDK 收费是针对 公司、商业用途的,如果只是个人学习Java的话,这些是没什么影响!

从今年1月份开始,Oracle JDK 开始对 Java SE 8 之后的版本开始进行商用收费,确切的说是 8u201/202 之后的版本
https://blog.csdn.net/lirenzuo/article/details/100531960----jdk13快来了,jdk8的这几点应该看看!

JDK 8u202 下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html----Java SE 8 Archive Downloads (JDK 8u202 and earlier)

Maven下载和安装:

https://blog.csdn.net/cs4380/article/details/79158268----Maven下载和安装

19.11.9——周六

MySQL下载安装详情教程:

https://www.cnblogs.com/ziyoublog/p/9722849.html----MySQL下载安装详情教程

MySQL Community Downloads:

https://dev.mysql.com/downloads/mysql/----MySQL Community Downloads

'net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件

解决办法:在配置环境变量时,加上%SystemRoot%\system32
https://www.cnblogs.com/caiyishuai/p/10783198.html----'net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件

19.11.10——周日

leetcode上的题还不能刷,最简单的都写不出来,学好基础的数据结构与算法先

19.11.11

C#:第八章,WPF的一些控件

线性表插入数据元素的时候为什么要先插入,再++L.length?

大概是因为,插入数据元素时已经分配的空间足够,L.length只是做个标记,告诉你长度是多少。。。

困扰了好久的输入时如何回车跳出的问题

有关连续cin输入数据(cin不丢弃回车符,>>会跳过回车符)
可以用cin.get()gitchar(),总之不能有>>
https://blog.csdn.net/dcj0913/article/details/39058555----有关连续cin输入数据(cin不丢弃回车符,>>会跳过回车符)
cin读取字符是会忽略空格和换行的,可以用noskipws设为不跳过空格或者换行。
char step; cin>>noskipws>>step;
C#中回车跳出只需一句话:if (Console.ReadKey().Key == ConsoleKey.Enter) break;

	char c = '1';
	for(int i = 0; c != 10; i++) {
		c = getchar();
		cout << c;
	}	//用ASCII码

19.11.12

DS:

注: 等概率(等权重)时等长编码是最优的前缀编码

状态树

Java:
System类,
rt.exec()方法可以执行cmd命令,
currentTime获取当前时间
Random默认种子为机器时间,种子相同时,随机数相同

		Runtime rt = Runtime.getRuntime();	//单例模式
		Process p = rt.exec("notepad.exe");	//返回值为进程
		Thread.sleep(1000);		//停1秒后消失
		p.destroy();	//杀进程

19.11.14

C#中使用split分割字符串的几种方法小结

https://www.cnblogs.com/xinloverong/p/11005405.html----C#中使用split分割字符串的几种方法小结

C#中可以使用key.KeyChar获取输入字符,也可以使用key.Key获取输入的键位

19.11.15

  • 包装类

Integer.parseInt(Str);
Integer.valueOf(Str);
将String转为Integer或int
Integer intV = Integer.ValueOf(基本数据类型)
————
自动装箱、拆箱:
指基本数据类型和对应的包装类之间能直接转换(Java内部)

19.11.16——周六

  • 值类型和引用类型的区别就是,值类型变量直接在堆栈中保存变量的值,引用类型的变量在堆栈中保存的是对象的引用地址

  • 指针就是地址
  • 当程序出现异常时:
    try{异常语句}
    catch(Exception){"提示错误"}
    捕捉异常,并处理(输出个提示)
  • goto用于从复杂循环中直接跳出到循环体外部
  • 结构是一种轻量型的类

19.11.17——周日

Tomcat:

https://baike.baidu.com/item/tomcat/255751?fr=aladdin----Tomcat_百度百科

Redis 是什么?

https://blog.csdn.net/weixin_42295141/article/details/81380633----Redis是什么?什么作用?优点和缺点

Redis 下载

https://blog.csdn.net/yang5726685/article/details/81194977----redis官方下载安装(Windows64位)

19.11.18

C#期中测试:关于泛型和读取文件

string path = @"D:\text\学生成绩.txt";	//取出文件路径
string readTxt = File.ReadAllText(path, Encoding.Default);
Console.WriteLine(readTxt);

19.11.19

Java:

整数运算的结果一定是精确的,浮点数常常无法精确表示。

比如0.1,十进制的0.1转化为二进制是一个无限循环小数,无论是float还是double都只能存储一个近似值
https://blog.csdn.net/qq_43763494/article/details/99640004----【记录】如何判断输入的数值类型是否合理?如何判断浮点型数据相等?

移位运算

用于整数:

  • <<二进制左移,值为原来的两倍(移动到首位时会改变数的符号(正负))
    >>二进制右移,不会移动首位
    >>>右移,带首位(改变正负号)

19.11.20

Java:
基本类型的变量是“持有”某个数值,引用类型的变量是“指向”某个对象;

引用类型的变量是指向某个对象

指向 指向 指向,重要的事情说三遍
https://www.liaoxuefeng.com/wiki/1252599548343744/1255941599809248----数组类型-廖雪峰的官方网站

多行字符串如何赋值给一个String类型变量

多行字符串可以用"""..."""表示(从Java13开始)
举个例子

public class Main {
    public static void main(String[] args) {
        String s = """
                   SELECT * FROM
                     users
                   WHERE id > 100
                   ORDER BY name DESC""";
        System.out.println(s);
    }
}

什么是域名?

  • 域是基于文本的地址,可重定向到网站的IP地址。它们允许访问者记住您的网站,而不必依赖其他方式,这反过来又改善了您的网站的外观以及它如何通过口口传播。

https://baijiahao.baidu.com/s?id=1613110688479207307&wfr=spider&for=pc----为什么您应该为您的网站使用自定义域名,有7点好处

学习使用IDEA

  • Eclipse 中 workspace 相当于 IDEA 中的 Project
    Eclipse 中 Project 相当于 IDEA 中的 Module
  • 工程下的.idealearnIDEA.iml 文件都是 IDEA 工程特有的。类似于 Eclipse 工程下的.settings、.classpath、.project 文件等。

https://www.cnblogs.com/zyx110/p/10666082.html----IDEA新手使用教程(详解)
https://www.runoob.com/w3cnote/intellij-idea-usage.html----Intellij IDEA 使用教程.pdf
https://jingyan.baidu.com/article/454316ab24a4cff7a7c03aeb.html----Intellij IDEA 使用教程-百度经验
https://www.jianshu.com/p/94190013f8d0----IntelliJ IDEA 使用教程(2019图文版) – 从入门到上瘾

19.11.21

终于找到网页版的了!

Java SE 11 & JDK 11

https://docs.oracle.com/en/java/javase/11/docs/api/allclasses.html----Java SE 11 & JDK 11 AllClass


数据结构:

图的四种存储结构:

①数组表示法:(多用于稠密图)
用两个数组:

  • 第一个是一维数组,用来存顶点(v1 v2 v3...)
  • 第二个是二维数组,是邻接矩阵

——————————————
②邻接表:(多用于稀疏图)

  • 每个顶点建立一个单链表,每个链表上附设一个表头结点(表头即:顶点+指向第一个结点的链域)
  • 表头结点通常以顺序结构的形式存储(可以链相接)
  • 所以可以理解为用一个一维数组存表头结点,然后每个数组元素是一个链表

——————————————
③十字链表:(用于有向图)

  • 就是结合邻接表和逆邻接表
  • 顶点:data | firstin | firstout
  • 弧结点:tailvex | headvex | hlink | tlink | info
  • 其中链域hlink指向弧头相同的下一条弧
  • 链域tlink指向弧尾相同的下一条弧
  • info域指向该弧的相关信息

——————————————
④邻接多重表:(用于无向图)

  • 每一条边用一个结点表示(每个结点指的是一条边)
  • 每个结点出现在两个链表中,结点表示为mark | iv | il | jv | jl
  • 顶点:data | firstedge

图的遍历

实质:通过边查找未被访问的邻接点
需要一个辅助数组(访问标志数组,标志是否已经被访问过)
①深度优先搜索
②广度优先搜索

19.11.22

Java:

迭代器、foreach遍历与哈希值

  • 方法返回迭代器
Iterator it = strList.iterator();
  • 遍历:
while(it.hasNext()) {
String s = (String)it.next();	/*从容器中取出后,只有Object类型,需要强制类型转换*/
}
  • 删除会出问题it.remove();strList.remove();后者是用foreach
    foreach遍历是最方便的

class模板
instance实例
字段field和局部变量的区别就是:

  • 字段是声明在类中的。(不是方法也不是程序块,而是类中)

hashCode()哈希值
equals默认比的是两个对象的地址

//重写hashCode()
Public int hashCode() {
return id.hashCode(); }
//重写equals()
public boolean equals(Object obj) {
if(this == obj) return ture;
if(!(obj instanceof Student)) return false;
Student stu = (Student)obj;
boolean b = this.id.equals(stu.id);
reutrn b;

19.11.23——周六

this始终指向当前实例

可变参数、参数绑定

  • 可变参数用类型...表示,可以相当于数组类型

参数绑定:

  • 基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响。
  • 引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个对象。双方任意一方对这个对象的修改,都会影响对方(因为指向同一个对象嘛)。

面向对象编程,英文是Object-Oriented Programming,简称OOP。

再会继承

在OOP的术语中,我们把Person称为超类(super class)、父类(parent class)、基类(base class),把Student称为子类(subclass)、扩展类(extended class)

  • Java只允许一个class继承自一个类,因此,一个类有且仅有一个父类。只有Object特殊,它没有父类。
  • 子类不能调用父类中的private字段或方法,可以调用protected的。
    因此,protected关键字可以把字段和方法的访问权限控制在继承树内部
  • 任何class的构造方法,第一行语句必须是调用父类的构造方法。如果没有明确地调用父类的构造方法,编译器会帮我们自动加一句super();
    此时若父类中没有不带参数的构方,则编译失败
    这也表明,子类默认的构造方法是编译器生成的而不是继承自父类中的

————————
向上转型,向下转型:

  • 把一个子类类型安全地变为父类类型的赋值,被称为向上转型(upcasting)。
    Person p1 = new Student();(变得更抽象),分解为:
    Student s = new Student();
    Person p1 = s;还可以向上转到父类的父类。。。Object o1 = s;还有Object o2 = p1;
  • 把一个父类类型强制转型为子类类型,就是向下转型(downcasting)。
    不能把父类变为子类,因为子类功能比父类多,多的功能无法凭空变出来
    向下转型只能是Person p = new Student(); p 本来就是子类类型向上转的父类,Student stu = (Student)p;
    也就是说只能把原来是子类类型的向上转的类型向下转型,为了避免出错,Java提供了instanceof操作符,可以先判断一个实例究竟是不是某种类型,或者这个类型的子类。

继承是is关系,组合是has关系。
具有has关系不应该使用继承,而是使用组合,即Student可以持有一个Book实例。


再会多态

  • Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型
    这个非常重要的特性在面向对象编程中称之为多态
  • 多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。

覆写(即Override重写)

在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写(Override)。

  • 即,方法名相同,方法参数相同,方法返回值也相同。
  • 加上@Override可以让编译器帮助检查是否进行了正确的覆写。
    ——————

因为所有的class最终都继承自Object,而Object定义了几个重要的方法:

  • toString():把 instance 输出为 String;
    equals():判断两个 instance 是否逻辑相等;
    hashCode():计算一个 instance 的哈希值。

在必要的情况下,我们可以覆写Object的这几个方法。


final修饰符有多种作用:

  • final 修饰的方法可以阻止被覆写;
  • final 修饰的 class 可以阻止被继承;
  • final 修饰的 field 必须在创建对象时初始化,随后不可修改。

再会抽象

抽象的来

  • 定义方法的时候,必须实现方法的语句
    如果父类中将方法去掉,就失去了多态的特性
  • 如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去覆写它,那么,可以把父类的方法声明为抽象方法(这也是去掉方法执行语句的方法)
  • 普通类包含抽象方法的话,无法编译
    因为无法执行抽象方法,因此这个类也必须申明为抽象类(abstract class)。

  • 因为抽象类本身被设计成只能用于被继承,因此,抽象类可以强迫子类实现其定义的抽象方法,否则编译会报错。

抽象编程

面向抽象编程的本质就是:

  • 上层代码只定义规范(例如:abstract class Person);
  • 不需要子类就可以实现业务逻辑(正常编译);
  • 具体的业务逻辑由不同的子类实现,调用者并不关心。

这种尽量引用高层类型,避免引用实际子类型的方式,称之为面向抽象编程

Person s = new Student();
Person t = new Teacher();	//这种引用抽象类的好处在于,我们对其进行方法调用,并不关心Person类型变量的具体子类型:
// 不关心Person变量的具体子类型:
s.run();
t.run();
// 同样不关心新的子类是如何实现run()方法的:
Person e = new Employee();
e.run();

19.11.24——周日

不写这么啰嗦了,简洁几句话即可,不如直接去看网站

静态字段与静态方法并不属于实例

静态字段属于所有实例“共享”的字段,实际上是属于 class 的字段;

  • 虽然实例可以访问静态的字段与方法,那只是因为编译器可以根据实例类型自动转换类名.静态字段来访问静态对象。
  • 静态方法内部只能访问静态字段,无法访问this变量和实例字段
    静态方法常用于工具类,还有辅助方法

在Java中,我们使用package解决名字冲突
Java内建的 package 机制是为了避免 class 命名冲突;

  • 一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是包名.类名
  • 包没有父子关系
  • 包名推荐使用倒置的域名,例如org.apache

包作用域

不用publicprotectedprivate修饰的字段和方法就是包作用域。

  • 位于同一个包的类,可以访问包作用域的字段field和方法method

import(在类中引用另外一个类)

在一个类中引用另一个类有三种方法:

  • 第一种,直接写出完整类名
  • 第二种写法是用import语句,然后写简单类名
    还可以使用*导入包中所有类一般不推荐这种写法,因为在导入了多个包后,很难看出Arrays类属于哪个包。
  • 还有一种import static的语法,它可以导入可以导入一个类的静态字段和静态方法(很少使用)

编译器自动导入的包: java.lang包

JDK 的核心类使用java.lang包,编译器会自动导入;

JDK 的其它常用类定义在java.util.*java.math.*java.text.*,……;


作用域

  • public 作用域: 任何
    private 作用域: class 内部
    protected 作用域:继承关系
    作用域是指一个类允许访问同一个package的没有publicprivate修饰的class,以及没有publicprotectedprivate修饰的字段和方法
    局部变量作用域为从定义开始到对应的块结束
  • Java 内建的访问权限包括 public、protected、private 和 package 权限;
  • final修饰符不是访问权限,它可以修饰class、field和method;
  • 一个.java文件只能包含一个public类,但可以包含多个非public类。

最佳实践

  • 如果不确定是否需要 public,就不声明为 public,即尽可能少地暴露对外的字段和方法。
  • 把方法定义为 package 权限有助于测试,因为测试类和被测试类只要位于同一个 package,测试代码就可以访问被测试类的 package 权限方法。
  • 一个 .java 文件只能包含一个 public 类,但可以包含多个非 public 类。如果有 public 类,文件名必须和 public 类的名字相同。

到底什么是classpath

classpath 是 JVM 用到的一个环境变量,它用来指示 JVM 如何搜索 class
JVM通过环境变量 classpath 决定搜索 class 的路径和顺序;

  • 不要把任何 Java核心库添加到 classpath 中!JVM 根本不依赖 classpath 加载核心库!
    更好的做法是,不要设置classpath!默认的当前目录.对于绝大多数情况都够用了。

如何创建一个jar

jar 包实际上就是一个 zip 格式的压缩文件,而 jar包相当于.class的容器
jar包相当于目录,可以包含很多.class文件,方便下载和使用
MANIFEST.MF文件可以提供 jar包的信息,如Main-Class,这样可以直接运行 jar包。

  • jar 包里的第一层目录,不能是bin
  • 在大型项目中,不可能手动编写MANIFEST.MF文件,再手动创建 zip包。Java 社区提供了大量的开源构建工具,例如Maven,可以非常方便地创建 jar 包。

https://www.liaoxuefeng.com/wiki/1252599548343744/1260466914339296#0----classpath和jar

19.11.25

C#的自习,问了老师Canvas该怎么用

Canvas.SetTop(label1, Canvas.GetTop(label1) - 10);
//把label放到Canvas中,然后获取相对于其的位置,然后更改

19.11.30

为什么switch 的 case中不能定义变量时赋初值,可以先定义后赋值?

https://zhidao.baidu.com/question/439783075.html----百度知道


typedef:用来为复杂的声明定义简单的别名,它与宏定义有些差异


C/C++中 ->. 的区别是?

https://zhidao.baidu.com/question/143290358.html----c++中 . 和 -> 的区别是什么?

  • 唯一的区别是->前面放的是指针,而.前面跟的是结构体变量

19_12_4

离散数学:

图的基本概念:

  • 运算时才有空图的出现
  • 基图:无向边代替有向边
  • 平凡图:只有一个顶点
  • 零图:没有边
  • n阶图:n个顶点的图
  • 握手定理:一条边产生两个度
  • 简单图:没平行边、没环
  • 真子图:母图少了点
  • 生成子图:顶点相同
  • 顶点的导出子图:找两端都在V1中的边加入图
  • 边的导出子图:找边的端点加入图中
  • 补图:(条件:无向简单图)补图是相互的,补完后是完全图(K)
  • 同构:(条件:顶点数相同,边数相同,顶点对应的度相同)然后考虑定义,双射关系,一一对应
  • 简单通路:通路中的所有边互不相同(首尾相同即回路)
  • 初级通路(路径):除首尾外所有顶点互不相同,所有边也互不相同(首尾相同即圈)
  • 连通:存在通路
  • 连通分支:图中几块互相不连通的连通分量
  • 割点:去掉后连通分支数增加
  • 割边(桥):去掉后连通分支数增加1
  • 根据握手定理,度数是边数的两倍
  • 有向图的邻接矩阵的性质:
    • 所有元素之和 = 边数(长度为1的通路数)
      对角线之和 = 回路数(长度为1的回路数,即环)
      邻接矩阵A的L次方就是对应的长度为L的通路与回路
  • 关键路径在数据结构中讲过了

我的随笔:
https://www.cnblogs.com/concentrate-haolong/p/11986205.html----图的基本概念——离散数学 19_12_4

19_12_5

C/C++的无限数组问题

  • 每一个指针就是一个一维数组,同理,一个二级指针就是一个二维数组
#include<iostream>
#include<cstdlib>
using namespace std;

typedef int * arr;

int main()
{
	arr book;
	//int * book;
	//book = (arr)malloc(sizeof(int));	//给数组首地址分配内存空间
	//实验后发现,不用malloc也行,应该是定义的时候已经分配内存了
	for(int i = 0; i < 99; i++){
		book[i] = i;
		cout << book[i] << " ";
	}
	return 0;
} 

  • https://blog.csdn.net/qq_43763494/article/details/102018253----【BLOG OUTLINE】博客大纲 ( ̄▽ ̄)"

你可能感兴趣的:(关于编程,Conclusion(总结))