自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 Java学习笔记(24)

127.0.0.1是对自己电脑发送信息的,经过网卡时就能识别出,给自己发信息,不经过路由器。因为在读取的时候,是一个字节一个字节读的,中文是3个字节来表示一个中文的。建立通道(三次握手),IO流是从通道里获取的,不是我们自己创建出来的,有declared就能获取到所有的,包括私有的,没有就只能获取公共的。循环的弊端:只能一个一个的去上传,要等上一个上传完,才能下一个上传。

2024-04-02 20:41:27 1002

原创 Java学习笔记(23)

则会所有的线程都会创建一个lock,重复ticket,超出范围的问题又会出现,所以要加static修饰,即所有线程共享一个lock,就能解决。设置线程名字,可以用set,也可以用构造方法,但是构造方法不能继承,要自己重新写个构造方法,通过super继承父类的构造方法。为什么+1:如果前面的线程出问题,则多出来的线程就可以顶上,不浪费cpu的时钟周期不被浪费。因为线程抢到CPU的执行权之后,当前线程就会交给操作系统管理,虚拟机就不会再管这个线程了。锁对象:是任意的,但是一定是唯一的,前面用static修饰。

2024-03-30 20:46:36 1140

原创 Java学习笔记(22)

Touch:可以根据传入的file对象,创建文件,而且如果父级路径不存在,他也可以一同创建。注意点:IO流最好不要在开头就把所有的都创建出来,这样就有可能在用bufferedwriter的时候,把文件清空了,导致read()读取不到数据。通俗讲:就是通过int b在两个缓冲区中倒手数据,在内存中,这个速度非常快,用时几乎忽略不计。getNextEntry:获取到文件夹中所有的文件,包括子文件夹中的文件,返回一个entry对象。通过read方法,将输入流的缓冲区中读取数据,写到输出流的缓冲区中。

2024-03-27 21:39:53 1019

原创 Java学习笔记(21)

如果有,则继续读取数据,装缓冲区,会把之前的数据直接覆盖掉,有多少数据就覆盖多少,如果剩下的数据不够覆盖8192个字节,则剩下的数据还是之前已经读到的数据,这些就不会被覆盖。如果此时已经读到缓冲区没有数据,会再次回到文件里看还有没有剩余的数据,如果也没有,则返回-1;一次只读一个字符,返回int类型,对应ASCII码表,如果读不到,返回-1。但拷贝的时候,是把所有字节都复制下来了,不会有数据的丢失,不会有乱码。读取的时候,可能由于解码和编码所使用的不是同一种方式,所以会乱码。

2024-03-26 13:39:36 272

原创 Java学习笔记(21)

在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|进行隔开表示如果出现了A异常或者B异常的话,采取同一种处理方案。下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体。下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体。Delete不走回收站,不能删除有东西的文件夹,只能删文件,或者是空文件夹。会把try里面所有的代码全部执行完毕,不会执行catch里面的代码。重写accept方法,形参是文件的完整路径,过滤出想要的文件。

2024-03-26 10:29:15 616

原创 Java学习笔记(20)

因为map.of参数里传的是一个键,一个值,一个键一个值这样,如果想要写成可变参数,如下面,第一个参数传键的可变参数,第二个传值的可变参数是不行的。调用entry对象集合的toArray方法,传入参数就是上面建立的entry数组,返回的就是一个装满entry对象的数组。就可以把这个数组放到map.ofEntries的传入参数里,就得到一个不可以修改的map。注意,如果用stream.of如果传递的是引用数据类型的数组,则可以用。传递基本数据类型的数组,会把数组当做一个元素,返回的是数组的地址值。

2024-03-21 21:55:52 847

原创 Java学习笔记(19)

Map.Entry<string,string>:因为Entry是Map里的一个接口,所以在用Entry接口的时候,要用Map调用。onlyifAbsent:当前的数据是否保留,false就是不保留(当新的元素添加,键相同时,值就会覆盖掉原来的)//如果我们是采取默认的自然排序,那么此时comparator记录的是null,cpr记录的也是null。//如果没有传递比较器对象,就执行else里面的代码,此时以自然排序的规则为准。//如果传递了比较器对象,就执行if里面的代码,此时以比较器的规则为准。

2024-03-20 10:30:29 775

原创 Java学习笔记(18)

因为hashset是按照数组table的0索引开始遍历的,而且他是根据哈希值和数组的长度来计算存入的位置,所以可能先遍历的不是先存储的元素。因为hashset底层是数组链表红黑树组合而成的,定义索引不够准确,如果出现链表,则无法给链表中的每一个元素定义索引。会记录头结点,尾节点,添加进的元素会互相记录前面添加的元素的地址值。如果不重写,则计算的时候使用的是地址值,而不是内部的属性值。10降级,10作为11的左子结点,12作为11的右子节点。7降级,4作为根节点,7为4的右子节点,5为7的左子节点。

2024-03-20 10:25:15 858

原创 Java学习笔记(17)

Java文件里有写泛型,但是到编译时,即编译成class文件时,集合里面的数还是会被当成object类型处理,只不过,底层还是会将object类型根据泛型强转成对应的类型。因为contains底层用的是object类中的equals方法,比较的是地址值,这样即使元素相同,也会返回false,所以要重写equals方法。迭代器可以删(用的是迭代器的remove方法,而不是集合的remove方法)<>里写什么类型,只能添加什么类型的对象,即使是子类也是不行,泛型没得继承。

2024-03-20 10:16:42 410

原创 Java学习笔记(16)

1、2阶的爬法+爬一阶,2、1阶的爬法+爬两阶 (共2+1种,是爬到第1阶的方法。所以要先移动end,这样就可以保证要把一个小于基准数的元素移动到前面去。如果先移动start,则有可能把一个大于基准数的元素移动到前面去。只有两种方法:1、19阶的爬法+爬一阶,2、18阶的爬法+爬两阶。只有两种方法:1、18阶的爬法+爬一阶,2、17阶的爬法+爬两阶。心得:方法内部再次调用方法的时候,参数必须要更加的靠近出口。1阶的爬法+爬一阶,0阶爬两阶 (共2种)O1 - o2 升序。O2 - o1 降序。

2024-03-17 16:49:05 492

原创 Java学习笔记(15)

以后键盘录入都用nextline,得到字符串后再转成想要的数据类型。不会改变原有的时间对象,会创建一个新的instance。不只是整数,boolean,double都有这个方法。Set add增加 若是减少就写一个负数。Parse:把字符串时间转成date对象。注意:创建对象的格式要和字符串的格式一样。JDK8 中的Calendar 日历类。Getinstance 获取当前对象。Chronounit 最常用。JDK8新增的时间相关类。自动拆箱(JDK5开始)JDK7前时间相关类。Format 格式化。

2024-03-16 17:27:07 322

原创 Java学习笔记(14)

因为它是一个protected修饰的方法,只能被本包中的类和其他包的子类用,肯定不能在本包中(java.lang包)用,所以要用必须重写。因为是静态static的,所以使用方法不用创建对象,使用里面的方法直接 math.方法名 就行。)不获取数据(不要Java 8,java11,java11,只要java)记得u1.clone()出来的是一个object类型,强转成User。Max会返回大的那个对象,不会创建一个新的biginteger。因为一个电脑只能有一个运行环境,创建多个对象是没有实际意义的。

2024-03-16 12:23:25 733

原创 Java学习笔记(13)

因为,JFrame里有个隐藏的容器,通过getcontentpane()获取,当创建JFrame对象时这个容器就会出现了,不需要我们自己创建,所以说添加图片其实是添加到这个容器里。再创建JLabel管理容器对象,把图片放到这个容器中,再把容器添加到界面。发现问题:同时添加其他监听器,键盘监听机制会有冲突,无法监听键盘了。改变图像位置,直接在初始化图像位置时将管理容器添加到界面。先创建一个图片ImageIcon的对象,写入图片的路径。动作监听:只能监听键盘的空格,鼠标的点击。用add方法添加到不同的对象中。

2024-03-16 12:13:14 253

原创 Java学习笔记(12)

A:因为在测试类中调用外部类的成员方法时,成员方法的形参中会有一个隐藏的this要表示调用者,如果直接使用内部类的方法,这个this调用者就没办法调用,必须先创建一个内部类的对象,通过这个内部类对象才能调用内部类的方法。多个接口有同名的抽象方法,则实现类中只需重写一次抽象方法,相当于重写了所有接口里的同名抽象方法。一个类implement一个接口后,就成了这个接口的子类,叫做实现类。其实new出来的是一个对象,真正的匿名内部类是后面大括号里面的内容。抽象方法都没有方法体,所以这些私有方法抽象方法都用不了。

2024-03-16 12:08:49 889

原创 Java学习笔记(11)

Student这个类的字节码文件加载到方法区,并在内存中创建了一个单独存放静态变量的空间,叫做静态区(JDK8之前是在方法区里的,之后就在堆内存中)。1.Dog和Cat都是Animal的子类,以上案例中针对不同的动物,定义了不同的keepPet方法,过于繁琐,能否简化,并体会简化后的好处?而非静态方法中,方法是通过对象来调用的,所以在方法的形参中会有一个隐藏的this来表示当前调用者的地址值,通常都会省略这个this不写。方法区在加载字节码文件,都是先加载父类的字节码文件,再加载子类的字节码文件。

2024-03-14 00:04:30 628

原创 Java学习笔记(10)

【代码】Java学习笔记(10)

2024-03-10 19:16:11 247

原创 Java学习笔记(9)

至少会new了两个对象,一个是stringbuilder对象,一个是string字符串对象(是在tostring里面new的)arraylist获取其中的元素是通过get(索引)得到的,arraylist[索引]是得不到的,因为arraylist里面存的是地址。Size()是arraylist的一个方法,所以带一个()+一个”” 空字符串,这样就变成了一个字符串。容量是有上限的,最大是int的最大值。如果要添加的是一个int怎么办呢?会预估最终字符串的长度,并创建数组。如果存的更多并超出,创建实际的长度。

2024-03-09 21:50:15 252

原创 Java学习笔记(8)

append 、reverse是在容器内部进行处理,是可以改变的,不需要新建一个变量接受结果,和字符串不一样。串池:字符串常量池,只有直接赋值方式的字符串才存到这里,new出来的字符串不在。用+号拼接字符串很慢,因为每次拼接都会在内存中产生一个新的字符串,占据内存。有new就是在堆内存中开辟了新的空间,使用不同的地址(可能会浪费内存)直接赋值字符串(那就是在串池里),如果内容相同,则会复用一样的地址。直接打印空的stringbuilder ,是空值,而不是地址值。键盘录入的字符串是new出来的(源码写的)

2024-03-09 21:44:06 203

原创 Java学习笔记(7)

注意:数组中如果存在null,则null是不能使用的,如果创建一个对象是null,然后调用这个对象方法,代码就会报错。记得先写出一个标准的Javabean类创建对象(包括属性,空参构造方法,带参构造方法,set/get 成员方法)Alt+insert :get/set成员变量快捷键。键盘录入 制表符%t。

2024-03-08 17:27:38 124

原创 Java学习笔记(6)

Stu1 = null :把原来stu1中存的地址直接置空,和stu2没有关系。再加载Student.class文件到方法区临时存储,申明成员变量和方法。堆内存开辟空间,存储成员变量的值,成员方法的地址(指向方法区的成员方法)创建s2时,问题:这一次,.class字书码文件是否要再加载一次?This 局部变量和成员变量重名时,用this.访问成员变量的值。成员变量在堆内存的对象里面。局部变量在栈内存的方法里面。成员变量,局部变量的区别。标准JavaBean类。建议有参,无参都写上。创建两个对象的内存图。

2024-03-06 21:48:21 95

原创 Java学习笔记(5)

其实跟循环没有什么关系,跟方法有关的,表示1结束方法2返回结果如果方法执行到了return,那么整个方法全部结束,里面的循环也会随之结束了。引用数据类型 只要有new就是引用数据类型,记录的是堆内存的地址,而不是真实值。​ 定义一个方法equals(int[] arr1,int[] arr2).基本数据类型 栈内存空间中变量存储的是真实的数据,存在自己的空间中。定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回。其实跟方法没有什么关系,结束循环或者switch的。请输入一个整数:34567。

2024-03-06 18:48:24 125

原创 Java学习笔记(4)

有一个数组,其中有十个元素从小到大依次排列 {12,14,23,45,66,68,70,77,90,91}。要求:把数字放入数组序列中,生成一个新的数组,并且数组的元素依旧是从小到大排列的。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。776ec8df:才是数组真正的地址值,(十六进制)直接sout输出的是地址值,表示数组在内存中的位置。D:表示当前数组里面的元素都是double类型的。字符类型:默认初始化值'/u0000' ,即空格。平时我们习惯性的会把这个整体叫做数组的地址值。

2024-03-05 22:03:59 322

原创 Java学习笔记(3)

直接用 -> {}代替:,不需要break,不会发生case穿透,{}内只有一个语句时可以省略{}如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码。1.让这个范围头尾都减去一个值,让这个范围从0开始 -7 0~8。优化:只需判断x的平方根内是否存在数字被x整除,如果有则不是质数。但是,for的初始化语句一样可以写在for外面,此时,两种都相同。3.最终的结果,再加上第一步减去的值。

2024-03-05 17:11:44 410

原创 Java学习笔记(2)

个人建议,大括号还是不要省略3.如果对一个布尔类型的变量进行判断,不要用==号,直接把变量写在小括号即可。负数的加减法:先转换成反码,反码正常加减,再转换成原码(没有跨0的情况:如-5+3)如果出现跨0:如-5+7,则将原码转成补码,补码进行加减,再转成原码。数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算。&&:先判断左边,左边为false就直接是false,不看右边。||:先判断左边,左边为true就直接是true,不看右边。在代码中,如果有小数参与计算,结果有可能不精确的。

2024-03-04 21:49:33 321

原创 Java学习笔记(1)

​ 在启动软件的时候,操作系统会先在当前路径下找,如果在当前录课没有再到环境变量的路径中去找。​ 如果我想要在CMD的任意目录下,都可以启动某一个软件,那么就可以把这个软件的路径配置到环境变量中的PATH里面。- (可做可不做)就是把自己配置的路径,移动到最上面。如果要定义long类型的变量 不加L后缀 可能会报错。- 把软件的完整路径,配置到PATH当中就可以了。L可以是大写的,也可以是小写的。- 选择高级,再点击下面的环境变量。在数据值的后面需要加一个L作为后缀。- 右键我的电脑,选择属性。

2024-03-04 21:44:01 242

原创 Python学习笔记(16)

问题2:对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?问题3:对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?问题1:我们想知道这些电影数据中评分的平均分,导演的人数等信息,我们应该怎么获取?

2023-10-19 21:57:58 53

原创 Python学习笔记(15)

以left表为基准,合并的表中包含所有left的值,再填上right表的值,不存在的值就是NaN。按照共同的值来进行拼接,如left和right中key1、key2中相同的值来拼接。有两种方法:对dataframe或是对series。保存和读取时一定要指定一个键,不然会报错。Hist直方图 scatter散点图。和value_counts搭配使用。筛选出大于23且小于24的值。全部值都有,不存在用NaN。Barh是横向的bar。按行索引直接合并到右边。

2023-10-18 21:36:34 53

原创 Python学习笔记(14)

注意score是<class 'numpy.ndarray'>类型。注意是array对象还是列表对象,列表*3只会复制3份一样的。Loc支持先行后列,但是行列索引需要是具体的名字。矩阵乘法 matmul不支持矩阵和标量乘法。先判断open,当相同时再判断high。坐标刻度不可以直接使用字符串进行修改。iloc就是先行后列,只支持下标索引。Savefig要放在show前面。形状不相同时,广播机制。无法对某个索引进行修改。# 设置显示中文字体。# 设置正常显示符号。直接索引只能先列后行。取出指定的索引下的值。

2023-10-18 11:14:14 44

原创 Python学习笔记(13)

reshape会返回新数组(不改变原数组,实际上生成一个新数组).T会返回新数组(不改变原数组,实际上生成一个新数组)(2,2,3):有2个二维数组,每个数组是2行3列。可以看前面中括号的数量,有几个中括号就是几维数组。统计最小值、最大值、中位数、平均值、标准差、方差。(0,2,3):x从0开始到2结束,3个数字。.resize不会返回新数组(改变原数组)_like:生成和a相同形状的数组。np.asarry:浅拷贝。-1:表示先不规定具体值。类型修改也是不改变原数组。(2,3):2行3列。

2023-10-16 21:51:39 43

原创 机器学习笔记(3)

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"])真实值与预测值之间的差距存在的关系就用:损失函数/cost/成本函数/目标函数 来衡量。那么如何去衡量逻辑回归的预测结果与真实结果的差异呢?参数是一次的(非线性关系)

2023-10-11 17:15:40 21

原创 机器学习笔记(2)

思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。transform() (x - mean) / std进行最终的转换。P(A, B) = P(A)P(B) <=> 事件A与事件B相互独立。决策树的深度,不去设定的话,可能会过拟合,泛化能力差,在训练集表现好而测试集则不好。Ni,N为原先计算出来概率为0的数据 m为不重复的特征词个数。1 实例化 (实例化的是一个转换器类(Transformer))

2023-10-11 17:06:30 27

原创 机器学习笔记(1)

对于数据集的拆分,它本质上也是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变拆分的结果。对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。固定random_state后,每次构建的模型是相同的、生成的数据集是相同的、每次的拆分结果也是相同的。关键词:在某一个类别的文章中,出现的次数很多,但是在其他类别的文章当中出现很少。特征降维:降低不是2维,3维的维度,降低的是特征的个数。

2023-09-25 21:36:02 33 1

原创 Python学习笔记(12)

args传函数需要传入的形参 元组形式 (msg,) 注意元组的写法。则会先调用sleep()函数再进入outer函数里,然后就会报错。字符串的r标记表示,字符串内转移字符无效,作为普通字符使用。将内存函数作为外层函数的返回,此内层函数就是闭包函数。定义双层嵌套函数,内层函数可以访问外层函数的变量。search只会找第一个匹配的 后面的不会再找。通过关键字传参 target传需要执行的函数。是sleep,而不是sleep()服务端被动接受消息 客户端主动。注意:fn = outer(os. 下的函数。

2023-09-24 15:41:49 27 1

原创 PySpark学习笔记(2)

但是输出的是一个文件夹 根据电脑的cpu核数分区 如16核则分16个分区 则输出结果就分布在这16个分区中。RDD输出到文件 .sabeAsTextFile(路径)RDD对象输出为python对象。可以修改只有一个分区。

2023-09-23 20:36:36 47 1

原创 PySpark学习笔记(1)

filter(func) 过滤元素 func返回bool值 true就输出 false就过滤掉。如果不是二元元组,则从左到右开始,前两个先计算,得到结果再与后一个计算,直到最后。Func:接受2个传入参数(类型要返回一个返回值,类型和传入要求一致)rdd.Map(func) 传入的函数有返回值 还是rdd对象。如果要查看RDD里面有什么内容,需要用collect()方法。将所有相同key的第二个元素按照设定的函数两两计算。(T)-> (T) 传入和传出的参数是相同类型的。

2023-09-22 18:33:45 57

原创 Mysql学习笔记(2)

Results是以元组的形式 ((),(),(),。导包 from pymysql import Connection。.execute(‘ ’) 执行sql语言命令。.select_db() 选择数据库。.fetchall 得到所有的数据结果。r则是一个个小元组 () ()。数据集通过python写入mysql。获取连接对象 Connection。.cursor 获取游标对象。要通过.commit()确认。或者autocommint。记得.close()关闭。Python连接sql。

2023-09-21 16:21:13 33

原创 Mysql学习笔记(1)

MySQL数据库SQL语言[charset utf8]是可选的DDLDMLInsert intoDelete fromUpdate 。。Set 。。DQLSelect 。。From。。 打印出所选列的内容Select * 表示查询所有列还可以加where条件分组聚合 group by 聚合函数课可同时写多个结果排序 order by ASC:升序(默认是升序) DESC:降序Lim

2023-09-21 16:18:52 24

原创 Python学习笔记(11)

制作一个学生信息管理系统。

2023-09-21 09:42:22 28

原创 Python学习笔记(10)

改成class MyPhone(NFCReader, RemoteControl, Phone2023): 就没问题。Pass 站位语句 保证类和方法的完整性 语法不报错 表示无内容 空的意思。若想重新使用原来父类的变量或方法 父类名. 别忘了self。抽象类就好比定义一个标准 做顶层设计 pass。Phone2023 中已经继承了 Phone。包含了一些抽象的方法,要求子类必须实现。同名成员 最左边的优先级最高。多态 常作用在父类关系上。子类的功能从父类继承过来。Union 记得导包。

2023-09-19 17:02:33 34

原创 Python学习笔记(9)

self.name = name self.age = age self.tel = tel 既能声明也能赋值。没有用__eq__比较 那比较的是两个的内存地址 肯定不一样 肯定是False。对象 Student是类,stu_1是对象,stu_1是对象属性。注意:如果存在两个相同的class类,则只会执行最后面的那一个。Self必须写 调用成员变量得用self.变量。__str__ 不转输出的是内存地址。__le__ 比较小于等于 大于等于。__lt__ 比较小于 大于。方法:写在类内部的函数。

2023-09-18 21:48:26 57

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除