- 博客(255)
- 收藏
- 关注
原创 Python学习_闭包&装饰器
本质上就是一个闭包的函数,可以让被装饰的函数在不需要做任何改变的前提下去增加额外的功能。装饰器返回值是一个函数对象。回调函数就是回头调用的意思,主函数的任务先调用完,回头再调用该函数。
2025-01-14 11:05:09
319
原创 Python学习_递归函数&函数引用
对象引用本质是对象身份(存储对象的内存地址)的具体表示。函数的引用:如对函数名的引用、参数的传递引用。如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。相同数据使用同一个空间存储,节约内存的占用。传递回归到原来的地方。
2025-01-14 11:04:57
313
原创 Python学习_模块&包
推荐使用import 因为import后 使用 模块里面的属性会有明显的层级关系;当one.py导入import test 的时候 会自动执行_ _ init _ _.py。_ _ init _ _.py文件并不是用来定义程序单元的,而是用于导入包内模块的成员,这样即可把模块中的成员导入变成包内的成员,方便使用。from test import t1,t2 由于t1和t2有先后,所以执行顺序也是先t1后t2。也就是说会判断导入的模块在当前是按照脚本方式直接运行还是按照模块作为程序的一部分导入的。
2025-01-08 11:00:41
237
原创 Python学习_集合
集合的定义:大括号包围元素,每个元素间用逗号来隔开;# 与字典的区别:字典键值对一一对应的关系,集合是没有的;# 定义:直接{}# 使用set()函数# 定义一个空集合# 区别:s3={} # 系统认为这是定义一个空字典s4=set() # 定义一个空集合。
2024-12-28 10:25:57
401
原创 Python学习_元组和字典
定义单个数据的元组,必须要加一个逗号# 多个数据的元组# 定义单个数据的元组,必须要加一个逗号t2=(10) # 与t2 =10等效print(type(t2)) # <class 'int'> type查看数据类型t3=(10,)字典特性:键值对成对出现,键和值 一一映射,绑定的关系所以字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键来查找数据即可# 定义:# 符号是大括号;数据为“键值对”形式出现;
2024-12-28 10:25:45
387
原创 Python学习_字符串和列表
因此久产生了UTF-8编码,对不同的字符用不同的长度来表示。只是英文和中文久出现不同字节代表不同的字符的情况,可想而知多语言混合的编码就会出现乱码的情况。因此久出现了unicode编码,统一用两个字节代表一个字符, 兼容万国语言。对不同的字符用不同的长度来表示。切片语法: [ 起始索引:结束索引:步长 ] (范围:左闭右开,顾头不顾尾)默认步长为1(偏移量)步长为负,表明从右向左查找。解码的本质是将字节流解码为字符的形式,使得程序员可以看懂(还原字符串)gbk:用来专门解决中文编码的,双字节的。
2024-12-24 15:18:17
752
原创 LeetCode刷题
1.autofor (auto x : nums)的作用:相当于:for (vector< int >::iterator iter = nums.begin(); iter != nums.end(); iter++)for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充。...
2024-12-19 15:18:15
253
原创 Python学习_基础
Python语言是一种面向对象的解释型计算机程序设计语言。Python能做什么?1.网络爬虫:自动爬取大量数据,可以批量,自动获取海量的数据2.数据分析3.机器学习4.APP开发5.游戏开发6.自动化运维与测试7.网站开发。
2024-12-18 10:51:18
267
原创 RAID技术
RAID:廉价磁盘冗余阵列目的:提升磁盘性能思想:条带化+校验技术或者镜像技术条带化:将一块连续的数据分布式存储在各个磁盘当中,读取数据的时候可以从多个磁盘中同时进行读取,从而达到磁盘性能的提升最后通过校验技术(海明校验,CRC冗余校验)保障数据的可靠性条带宽度:在一个RAID组中有多少块磁盘来组成。例如上述图片条带宽度为4条带深度:指的是在单块磁盘中的大小条带大小:条带宽度 x 条带深度基本RAID级别:RAID0—RAID7。
2024-10-23 09:37:07
654
原创 DHCP学习
DHCP: Dynamic Host Configure Protocol,动态主机配置协议从BOOTP (bootstrap Protocol)协议发展而来UDP封装,服务器=67,客户端=68动态分配TCP/IP信息(IP地址、子网掩码、默认网关、DNS服务器等)分配出去的信息是有租约的-分配机制:类似于租房子租房子有租期,DHCP服务器将IP地址、子网掩码、默认网关、DNS服务器等等分配出去也是有租约的。
2024-03-08 15:48:47
1041
原创 数组指针和指针数组
首先,理解一下数组指针和指针数组这两个名词:“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了——数组的指针:是一个指针,什么样的指针呢?指向数组的指针。指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针;p[n]:根据优先级,先看[],则p是一个数组,再结合。
2024-01-23 15:49:36
971
1
原创 Java_网络编程
网络编程的意思就是编写的应用程序可以与网络上其他设备中的应用程序进行数据交互。网络编程有什么用呢?这个就不言而喻了,比如我们经常用的微信收发消息就需要用到网络通信的技术、在比如我们打开浏览器可以浏览各种网络、视频等也需要用到网络编程的技术。我们知道什么是网络编程、也知道网络编程能干什么后了,那Java给我们提供了哪些网络编程的解决方案呢?Java提供的网络编程的解决方案都是在java.net包下。
2024-01-23 15:47:56
878
原创 Java_注解、动态代理
注解和反射一样,都是用来做框架的,我们这里学习注解的目的其实是为了以后学习框架或者做框架做铺垫的。那注解该怎么学呢?和反射的学习套路一样,我们先充分的认识注解,掌握注解的定义和使用格式,然后再学习它的应用场景。先来认识一下什么是注解?Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。比如:Junit框架的@Test注解可以用在方法上,用来标记这个方法是测试方法,被@Test标记的方法能够被Junit框架执行。
2024-01-18 11:13:39
1049
原创 Java_单元测试、反射
在学习反射之前,有几个点需要给同学们提前交代一下,接下来我们学习的反射、动态代理、注解等知识点,在以后开发中极少用到,这些技术都是以后学习框架、或者做框架的底层源码。为了方便理解,我给同学们看一个我们见过的例子:平时我们用IDEA开发程序时,用对象调用方法,IDEA会有代码提示,idea会将这个对象能调用的方法都给你列举出来,供你选择,如果下图所示。原因是对象能调用的方法全都来自于类,IDEA通过反射技术就可以获取到类中有哪些方法,并且把方法的名称以提示框的形式显示出来,所以你能看到这些提示了。
2024-01-17 14:41:27
1619
原创 C11新特性
C++智能指针为什么需要给智能指针定义删除器?因为智能指针的作用是能够保证资源绝对的释放,而智能指针默认的释放方式是delete ptr.而当智能指针托管的资源是数组时,释放资源时就需要加[ ] ,当智能指针管理的不是一块内存的资源,而是一个文件,释放文件的方式绝对不是通过delete来实现的,因此通过智能指针管理资源需要能够释放相应的资源,如何给智能指针自定义删除器来指导智能指针正确的释放资源,这就是删除器的作用。
2024-01-16 14:19:15
435
原创 Java_线程池
线程池就是一个可以复用线程的技术。要理解什么是线程复用技术,我们先得看一下不使用线程池会有什么问题,理解了这些问题之后,我们在解释线程复用同学们就好理解了。假设:用户每次发起一个请求给后台,后台就创建一个新的线程来处理,下次新的任务过来肯定也会创建新的线程,如果用户量非常大,创建的线程也讲越来越多。然而,创建线程是开销很大的,并且请求过多时,会严重影响系统性能。而使用线程池,就可以解决上面的问题。如下图所示,线程池内部会有一个容器,存储几个核心线程,假设有3个核心线程,这3个核心线程可以处理3个任务。
2024-01-16 14:11:53
1071
原创 Java_线程通信
只有拿锁对象调用上述方法才不会出Bug,否则一定会出问题,因为只有锁对象知道当前谁占据了它,然后谁需要等待,所以锁对象调用wait()方法就会把占据它的方法进行等待,锁对象调notify()方法就会把等待锁对象的那些方法唤醒。再写测试类,在测试类中,创建3个厨师线程对象,再创建2个顾客对象,并启动所有线程。执行上面代码,运行结果如下:你会发现多个线程相互协调执行,避免无效的资源挣抢。比如下面案例中,有3个厨师(生产者线程),两个顾客(消费者线程)。接下来,我们先分析一下完成这个案例的思路。
2024-01-12 11:26:12
461
原创 Java_线程安全
首先,什么是线程安全问题呢?线程安全问题指的是,多个线程同时操作同一个共享资源的时候,可能会出现业务安全问题。下面通过一个取钱的案例给同学们演示一下。案例需求如下场景:小明和小红是一对夫妻,他们有一个共享账户,余额是10万元,小红和小明同时来取钱,并且2人各自都在取钱10万元,可能出现什么问题呢?如下图所示,小明和小红假设都是一个线程,本类每个线程都应该执行完三步操作,才算是完成的取钱的操作。但是真实执行过程可能是下面这样子的。
2024-01-12 10:30:30
1013
原创 Java_线程的创建方式
不能直接去调用run方法,如果直接调用run方法就不认为是一条线程启动了,而是把Thread当做一个普通对象,此时run方法中的执行的代码会成为主线程的一部分。
2024-01-05 17:29:59
1176
原创 Java_日志技术
想搞清楚什么是日志,其实可以通过下面几个问题来了解的。系统系统能记住某些数据被谁操作,比如被谁删除了?想分析用户浏览系统的具体情况,比如挖掘用户的具体喜好?当系统在开发中或者上线后出现了Bug,崩溃了,该通过什么去分析,定位Bug?而日志就可以帮我们解决以上的问题。所以日志就好比生活中的日记,日记可以记录生活中的点点滴滴;而程序中的日志,通常就是一个文件,里面记录了程序运行过程中产生的各种数据。日志技术有如下好处。
2024-01-05 10:35:25
1103
原创 数组指针和指针数组
首先,理解一下数组指针和指针数组这两个名词:“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了——数组的指针:是一个指针,什么样的指针呢?指向数组的指针。指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针;p[n]:根据优先级,先看[],则p是一个数组,再结合。
2024-01-04 17:29:08
891
原创 Java_特殊文件
前面学习了IO流,知道IO流是用来读、写文件中的数据。但是接触到的文件都是普通的文本文件,普通的文本文件里面的数据是没有任何格式规范的,用户可以随意编写,如下图所示。像这种普通的文本文件,没有任何规律可言,不方便程序对文件中的数据信息处理。在以后的Java开发过程中还会遇到一些特殊的文本文件,这些文件是有一些格式要求的,方便程序对文件中的数据进行处理。比如,后面我们会用到两种特殊的文本文件,一种是properties文件,还有一种是xml文件。如下图所示。首先,我们来认识一下,什么是XML?
2024-01-04 15:43:01
1055
原创 设计模式_结构型模式_装饰器模式
装饰器模式和代理模式很像。代理模式是已经知道代理谁了,所以只是对委托类的访问权限进行限制,因此用户只需要访问相应的代理类就可以。装饰器模式并不知道要装饰谁,所以需要传入具体的被装饰对象进行功能的添加。
2024-01-03 16:00:48
630
原创 Java_流
接下来,我们先学习OutputStreamWriter类,你看这个类名也比较有意思,前面是OutputStream表示字节输出流,后面是Writer表示字符输出流,合在一起意思就是表示可以把OutputStream转换为Writer,最终OutputStreamWriter其实也是Writer的子类,所以也算是字符输出流。序列化流是干什么用的呢?它是先把数据写到缓冲流内部的8BK的数组中(ps: 先攒一车货),等数组存满了,再通过原始的字节输出流,一次性写到目标文件中去(把囤好的货,一次性运走)。
2024-01-03 15:58:44
1040
原创 Java_IO流(字节流)
在前面已经学习过File类。知道File只能操作文件,但是不能操作文件中的内容。我们也学习了字符集,不同的字符集存字符数据的原理是不一样的。有了前面两个知识的基础,接下来我们再学习IO流,就可以对文件中的数据进行操作了。IO流的作用:就是可以对文件或者网络中的数据进行读、写的操作。如下图所示把数据从磁盘、网络中读取到程序中来,用到的是输入流。把程序中的数据写入磁盘、网络中,用到的是输出流。简单记:输入流(读数据)、输出流(写数据)IO流在Java中有很多种,不同的流来干不同的事情。
2023-12-29 10:06:25
1214
原创 设计模式_结构型模式_适配器模式
公司里面做项目会使用第三方的插件(库),由于接口不兼容会添加很多的适配器类。项目的现有接口和想使用的第三方库的接口根本不兼容。解决。
2023-12-27 16:22:39
730
1
原创 Java_字符集
前面我们已经学习了File类,通过File类的对象可以对文件进行操作,但是不能操作文件中的内容。要想操作文件中的内容,我们还得学习IO流。但是在正式学习IO流之前,我们还需要学习一个前置知识叫做字符集,只有我们把字符集搞明白了,再学习IO流才会更加丝滑。
2023-12-27 10:20:56
802
原创 Java_File类
学习完递归是什么,以及递归的执行流程之后,我们再回过头来用递归来找文件夹中子文件夹的内容。但是File对象封装的路径是存在还是不存在,是文件还是文件夹其实是不清楚的。答案如下图所示:可以是变量、可以是数组、可以是对象、可以是集合,但是这些数据都是存储在内存中的,只要程序执行结束,或者断点了,数据就消失了。答案如下图所示:可以将数据以文件的形式存在硬盘里,即使程序结束了,断点了只要硬盘没坏,数据就永久存在。,通过File类提供的方法可以获取文件大小、判断文件是否存在、创建文件、创建文件夹等。
2023-12-25 16:56:20
1021
原创 Java_Stream流
接下来学习一个全新的知识,叫做Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。最后,我们再学习Stream流的终结方法。这些方法的特点是,调用完方法之后,其结果就不再是Stream流了,所以不支持链式编程。好,接下来我们正式来学习Stream流。先不用知道这里面每一句话是什么意思,具体每一句话的含义,待会再一步步学习。学习Stream流我们接下来,会按照下面的步骤来学习。,找出姓张,且是3个字的名字,存入到一个新集合中去。
2023-12-25 10:09:48
610
原创 Java_集合进阶Map实现类
比如有如下案例:往HashMap集合中存储Student对象作为键,学生的家庭住址当做值。要求,当学生对象的姓名和年龄相同时就认为键重复。
2023-12-22 16:01:21
985
原创 Java_集合进阶Map集合
各位同学,前面我们已经把单列集合学习完了,接下来我们要学习的是双列集合。首先我们还是先认识一下什么是双列集合。所谓双列集合,就是说集合中的元素是一对一对的。Map集合中的每一个元素是以key=value的形式存在的,一个key=value就称之为一个键值对,而且在Java中有一个类叫Entry类,Entry的对象用来表示键值对对象。键不能重复,值可以重复,每一个键只能找到自己对应的值。下面我们先写一个Map集合,保存几个键值对,体验一下Map集合的特点// 一行经典代码。按照键 无序,不重复,无索引。
2023-12-22 11:30:42
779
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人