- 博客(35)
- 收藏
- 关注
原创 C++ Week2_1
声明declaration,只是对变量或函数的重新引用,比如// 没有指明函数体specifying the function's body// 参数的不完整也是允许的// 没有初始化式initializer定义defined,是声明的一种,声明了变量或函数的可以使用的实体。
2023-10-08 19:17:09
89
原创 SAST静态代码分析(一)
静态代码分析是在软件开发生命周期早期基于一些预先制定的规则修复漏洞的工具,主要通过流分析(对源代码控制流和数据流分析和检查)和模式分析(按照特定的软件开发标准检查)实现,即检查代码的规范性和行业规定的标准。AST的作用是使源代码结构化,在AST上可以方便地检查词法/语法的浅层错误,如标识符拼写检查或编码惯用的规范等,IDE的代码提示工具就是基于AST完成的。在语义方面,如对与不同的循环结构for、while等,在AST上是不同的,但是对IR来说是相同的流程控制,这样检测更方便、精准。
2023-10-08 16:53:06
188
原创 OOP的三个思想
第一种情况与变量冲突:// 打印MAX#undef MAX//打印MAX第二种情况与宏定义冲突,为了增加可读性:假设存在'animal.h',需要一个type在animal(结构体+函数)中完成类型别名的替换,那么需要使用animal创建两个对象时可以#undef Dog#undef Cat也可以使用'typedef type elem(注:使用typedef elem type是完全不同的意思,意为使用type时实际使用的是elem)',但是不能取消定义。
2023-09-24 15:59:51
75
原创 Java基础知识学习 - 类加载
首先基本数据类型是JVM预先定义的,这就是内置数据类型,JVM清楚的知道如何存储他们(空间大小/结果),但是引用数据类型不同,它可以由我们自己定义,那么JVM无法预先知道怎么为我们定义的类开辟空间创建引用和对象,所以JVM需要先对引用数据类型有一个认识和理解,这个过程就是类加载。
2023-08-18 18:00:50
77
原创 Java基础知识学习 - 对象
各种修饰符] class ClassName {// 类体类用字关键class定义,类前的修饰符包括 访问限定修饰符/static/final等需要注意的是: 一个包中不能出现重名的类,一个Java文件里的类也属于同包的关系 一个Java文件中有且只能有一个public修饰的类 类可以嵌套定义(方法不能),称为内部类 类名规范为大驼峰形式[访问限定修饰符] 返回值类型 变量名;[访问限定修饰符] 返回值类型 方法名() {}
2023-08-18 17:59:05
53
原创 Java基础知识学习 - 方法参数传递
从输出结果可以看出Java是值传递的,即使传递的对象是引用。这个例子中的交换其实只有引用的拷贝互相交换了引用的数组,如果在这个方法中输出两个数组,则会发现交换了。从结果上看,基本数据类型的传参是明显的值传递,不会对实参产生影响,而引用数据类型类型则对实参产生了影响,似乎引用数据类型的传参是引用传递。这段代码希望通过交换引用来实现交换两个数组的输出,如果成功则方法调用是引用传递,如果失败则是值传递。3.引用的值传递可以改变对象的状态,改变对象的数据。这就是多个引用指向同一个对象。
2023-08-09 21:54:08
82
原创 Java基础知识学习 - 数组操作和可变参数
判断某个字符串是否为空字符串,但是需要考虑其本身是否是 null字符串,所以可以写成。可变参数的本质是数组,方法将接收的不定个参数转换成数组,可变参数的使用同数组一样。2.当方法调用遇到可变参数和固定参数都完全匹配时,优先调用固定参数。具有数组结构/对象结构(蓝色标识且有数字表示),而null数组。 3.可变参数可以是引用数据类型,对于数组而已会变成二维数组。3.可变参数和固定参数+可变参数的方法重载,有以下两种情况。可变参数是指在方法形参列表中接收数量不定的参数。返回一个字符串,包含数组元素,用于。
2023-08-08 21:46:33
205
原创 Java基础知识学习 - JVM内存模型和数组的内存分布
利用栈 “先进后出” 的特点可以控制方法的执行顺序,被调用的方法先于调用的方法,尤其是 mian 方法,它是第一个方法最先入栈,所以它在栈底,并且最后出栈。堆上对象的生命周期从对象的创建到对象的销毁,对象的创建,目前使用new关键字创建,对象的销毁,当方法结束,引用销毁,对象没有被任何引用指向时,对象成为“垃圾(对象)”,由Java全自动回收对象开辟的空间,这个过程称为。中的**方法“栈帧”**中,方法调用或者方法栈帧入栈时局部变量生效,方法结束或方法栈帧出栈时局部变量失效。
2023-08-06 14:03:33
125
原创 Java基础知识学习 - 数组
数组列表也是一种容器,它是基于数组实现的,它更加灵活,而且可以自动扩容。既然是基于数组的,那么其自动扩容就不是真正意义上的扩展空间,而是将原来的空间复制到一个更大的空间。关键字 new 用于为引用数据类型在堆内存中开辟新空间,这种方法指定了数组元素’取值’,根据值的个数可以确定数组的’长度’注意:数组的 初始化和声明可以分开写,但是 ‘初始化的简写格式’ 不能与 ‘数组的声明’ 分开,如下。动态初始化只指定了数组的长度,而没有指定数组元素的取值,但是JVM会给数组设置默认初始值,如下。
2023-08-04 17:21:17
33
原创 SpringBoot项目搭建一 -- 个人博客
有两种配置文件,分别是.propertie和.yaml,两者在语法上不同。使用 PropertiesResource 配置第一步:在 resource 目录下创建 properties bundle 文件,命名为 test,resource 目录就是 classpath第二步:在主程序启动类目录下创建 一个 domain 的包和 MyProperties.java 文件,编写代码。
2023-07-18 17:32:46
60
原创 Java基础知识学习 - JUnit单元测试
就会面临选择导入依赖中的Test注解和自身 Test 类的选择,那么Java会根据就近原则优先选择用户自定义的 Test 类。“全限定类名”的作用是唯一确定一个类,在同一个包中不允许存在同名的类,但是在不同包中就会存在,所以使用“全限定类名”可以指明类的使用。是 JUnit 的一个基本注解,创建一个注解对象,Test 是注解名,表示接下来创建的是一个测试方法,类似于 main 方法。注解是Java中的引用数据类型,是一个特殊的类,由第三方工具包提供,已经存在于Java的本地文件 **lib(依赖)**中,
2023-07-17 16:14:30
166
原创 Java基础知识学习 - 重载
除此之外,修饰符列表和返回值类型,以及形参的命名是无法实现重载的,或者是不影响重载。,如果刚好匹配则选择对应方法,如果没有匹配的,根据自动类型转换选择最近的数据类型。3.形参列表中形参的位置(有点类似第二点,相同位置上数据类型不同)如果希望返回值不同怎么办?只要在重载的基础上更改返回值就好了。就是重载的方法,它可以接收不同数据类型。重载是指同一个类中存在多个同名的方法。时,是如何确定调用哪个方法的?2.形参列表的数据类型。
2023-07-16 17:04:22
39
原创 Java基础知识学习 - 方法
与C语言的函数相比,Java的方法对修饰符列表有要求,因为方法是必须写在类中的,还有C语言对定义和调用的位置有要求,定义如果在调用后,则需要在调用前声明,而Java不需要。而非 static 方法依赖于对象,即只有类实例化一个对象这些方法才真正存在,static 需要通过对象来调用非 static方法。而普通成员方法可以互相调用,虽然在没有对象时他们是不存在的,但是一旦有了对象,他们就一定都存在,也就是说他们调用时的状态是可以确定的,自然也就可以调用。真正的实现依赖于实参,也就是传递变量的引用。
2023-07-16 17:03:03
66
原创 java基础知识学习 - Scanner类
其实以上4种办法因为种种原因都不适合做为最终解决方案,要从根本上解决问题应该避免混合使用,当需要输入多种数据类型时,最可靠的是只使用 nextLine,1.next系列 next nextInt nextDouble…next系列的扫描开始是第一个不为空格/制表/换行的字符,结束同理。nextLine的扫描开始是任意字符,结束为换行。
2023-07-14 19:34:35
41
原创 Java基础知识学习-变量
显然此处需要发生数据类型的转换,数据类型转换有两种,分别是‘自动类型转换’和‘强制类型转换’,这里有一处我以前学习时没有的思考,之前只是单纯的使用强制类型转换来得到自己想要的类型,而其实自动类型转换是将‘范围小’的类型转换为‘范围大’的类型,而强制类型转换则反过来将‘范围大’的类型转换为‘范围小’的类型,强制数据转换由我们自己操作,这是对自动类型转换的一种功能上的补充。三元运算符 和 if…值得注意的是,即使是自动类型转换这样将‘范围小’的类型转换为‘范围大’的类型也不能保证数据一定不会失真。
2023-07-13 15:42:37
33
原创 JVM内存-对象
堆内存:首先在Java中屏蔽了指针且程序员无法直接使用堆内存, 在堆内存中的变量是对象级的变量,即对象变量/实例变量,对象变量/实例变量 存储在 对象/实例 中,那么对象就是在堆内存中开辟的空间,使用 new运算符 + 引用数据类型 可以在堆内存中开辟空间,创建对象。栈内存:栈内存存储main方法和局部变量,栈内存中的变量存储字面量或内存地址,为了使用对象,将对象在堆内存的内存地址存储在一个变量中,通过这个变量来访问堆内存中的对象,这种变量被称为引用变量。紫色的变量为引用变量。
2023-06-27 11:19:57
163
1
原创 Java基础
知识补充:JDK包含JRE和开发工具集,JRE包含JVM和核心类库设置path分为用户变量和系统变量,允许使用范围不同***dos系统编译时文件编码格式会影响编译结果,有中文时使用GBK编码一个文件内只能有一个public类,文件与这个类同名如果有多个类,则编译成多个class文件文档注释 用于使用 javadoc -d somewhere -attribute filename 生成文档,为类和方法写的/** *@attribute... */
2023-06-20 16:02:05
41
原创 Java核心技术学习03
无直通行为的case标签使用符号->(包含break的意思),有直通行为类似于C中不加break的case语句,有直通行为会产生警告(-Xlint:fallthrought),在外围方法加上注解@SuppressWarings("fallthrough")即可解除警告。4.Java中断控制流程,Java带标签的break类似于C在的goto,即在某处定义标签label:(+代码块),break label。Java的switch中case标签可以有多种类型,其中字符串常量可以有多个并用逗号隔开。
2023-06-19 16:22:13
133
原创 Java核心技术学习02
第一个为文件所在的目录,第二个为打开shell的目录,第三个可以通过方法getProperty("user.敌人)找到。用new创建一个scanner对象(system.in),然后使用方法如nextLine()(接收下一行)。3.Java文件的输入输出,Java使用scanner类进行文件输入,使用printwrite类进行文件输出,然后再调用方法。1.Java的输出 System.out.println(),也可以使用printf(),设置格式同C。Java与C/C++的区别(二)输入输出。
2023-06-19 15:51:32
45
原创 Java核心技术学习01
8.Java构建字符串,即把多个字符串连接在一起,除了使用拼接或者方法join()/repeat(),还可以使用StringBulider类,创建一个构建器,使用方法append()添加字符串,构建完成后使用toString()转换成字符串对象。原因:Java的字符串常量在公共储蓄池池中是共享的,字符串变量指向这个字符串常量,当复制这个字符串变量时,实际返回的是同一个字符串常量的引用。但是当第二个字符串变量重新定义时,如果没有已存在的字符串常量匹配,则创建新的字符串对象。
2023-06-19 14:47:03
46
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人