- 博客(85)
- 收藏
- 关注
原创 web项目如何部署到服务器上并运行呢?——把本地tomcat集成到IDEA中
web项目如何部署到服务器上并运行呢?——把本地tomcat集成到IDEA中
2024-09-10 11:00:06
231
原创 Java XML
配置文件:用来保存设置的一些东西。拿IDEA来举例,比如设置的背景图片,字体信息,字号信息和主题信息等等。(1)以前是用txt保存的,没有任何优点,而且不利于阅读,因为只保存了值,值所代表的含义却不清楚。(2)后面又提出了properties文件,是以键值对的形式存储数据的,但是对于多个用户的同一个信息来说的话,只能以一个键值对来进行存储,无法为同一个信息配置多个键值对。(3)所以现在来学习xml文件。xml文件可解决这个问题。xml是可扩展的标记语言,那什么是可扩展?什么是标记语言?
2024-09-08 16:29:13
1160
原创 Java 日志
比如把信息保存到文件中这个方法的名字可以写为infoToFile,有个人为了偷懒,写成info2File,发现效果还挺好,一下就能分清两个单词,所以后续也就出现了用2代替To,4代替for,然后读的时候不读数字,还是原英文。日志文件的路径有些放到了C盘的路径下,可能C盘的权限比较高,IDEA是进不去的,所以可以改为权限较低的其他盘。输出结果,我这里只看到了控制台的日志信息,没有在硬盘下的目录中找到日志文件,也不知道为什么,不想找了。(2)FILE则表示日志信息输出到文件在,与此同时就需要指明文件的路径。
2024-09-07 14:15:56
1338
原创 网络编程练习
在数据传输时,服务端会阻塞在读取数据上,只有看到结束标记时跳出(就是你客户端发完了,你要让我服务端知道你发完了啊)。(1)当客户端数据发送结束之后,但是又不能关闭连接时,可以有一个结束标志来告诉服务端我的数据已经发送完毕了,通过socket.shutdownOutput();①关于服务端这段代码,使用缓冲字符流读取,客户端循环输入数据,但是只有在客户端发送886结束循环之后服务端才能接收到数据。客户端发送一条数据,服务器接收数据并打印,再给客户端回复消息,客户端接收服务端回复的消息并打印。
2024-09-04 19:09:11
783
原创 Java 网络编程
即将网络分为内网和外网,外网是真实分配的IP地址,是不能重复的,而内网是自行分配的IP地址,不同的内网之间是可以重复的。当进行数据传输时,需要知道发送到哪个电脑上,以及电脑上的哪个软件上去,以及用哪种协议进行数据传输。细节: receive方法是阻塞的,就是程序会停在这一步,等发送的数据,只有接收到数据时才会结束。面向连接的数据传输,即在传输之前必须确保连接已经建立,连接建立完成之后使用IO流进行传输。客户端:今天就到这吧 服务器:好,我收拾一下 服务器:我收拾完了 客户端:OK,退房。
2024-09-04 13:43:20
1081
原创 带权重的随机算法
给男生和女生设置权重,其中男生权重为7,女生权重为3。要求点到男生的概率为70%,女生的概率为30%。假设有10名学生,其中5个男生,5个女生。
2024-08-31 20:02:40
230
原创 IO练习--随机点名
remove方法有两个,分别是根据索引和根据内容删除,内容的话方法的返回结果是布尔类型,而索引会把删除的元素进行返回。细节2:第11次运行的时候,我们自己不需要手动操作本地文件,要求程序自动开始第二轮点名。一个文件里面存储了班级同学的姓名,每一个姓名占一行,要求通过程序实现随机点名器。第一次运行程序:随机同学姓名1第二次运行程序:随机同学姓名2。一个文件里面存储了班级同学的信息,每一个学生信息占一行。有一个文件里面存储了班级同学的信息,每一个信息占一行。一个文件里面存储了班级同学的姓名,每一个姓名占一行。
2024-08-31 16:48:59
475
原创 网络爬虫--生成假数据
但是又出现一个问题,返回结果我们只想要前面的4个汉字,不想要后面中文的","或者中文的"。又接连试了好几个网址,都是同样的问题,都怀疑是不是代码有问题了,于是又回去测试了一下姓的爬取,也没有问题啊。如果依旧按照前面的把4个看作一组进行匹配,会把前面的序号也进行匹配,这不是我们想要的,所以要限定为中文。观察百家姓可以看到都是4个汉字一组,并且后面跟着中文的","或者中文的"。因为这种情况下,把".{4},"看作一个逻辑,"。这种情况下,提取需要的数据的方法就需要额外加上一个参数,就是要返回的组号。
2024-08-29 21:28:29
1648
原创 数字签名与数字证书
因为既然 Alice 可以用 Bob 公钥解开签名,那么理论上其它人,比如 Eve 也可以使用 Bob 公钥解开签名拿到数据。所以我们最好对「摘要」进行签名,这样,Eve 就算解开签名,拿到的也是「摘要」,如果摘要是不可逆转的,也就是无法从摘要反推出原文,也就达到了保密的作用。发送者使用私钥对「摘要」计算数字签名。
2024-08-23 11:18:03
978
原创 编码和解码
在知道了'我'这个字符在GBK中的码点之后,我就试图利用GBK的编码方式自行计算出应存储在底层中的二进制,然后和通过getBytes()方法得到的字节进行对比,以为结果应该是一样的。25105的二进制是110,0010,0001,0001,按照GBK的两个字节中第一个字节的首位为1的规则,在最高位补1,结果是1110,0010,0001,0001。这种方式一定要了解编码方式,要不然不会解码。终这个字符在GBK字符集中的码点为32456,转换为二进制后的结果为111,1110,1100,1000。
2024-08-11 16:07:18
1564
1
原创 压缩流&解压缩流
问题4:压缩方法的3个参数,刚开始我是这样写的,传递的是目标文件夹的路径,但是在实际运行过程中发现总是出现名字为aaa.zip这样的普通文件夹,一直也找不到问题所在,最终发现是对压缩流的new ZipEntry(path2)方法不熟悉,这个方法会在压缩路径的基础上创建文件夹的。下面是ZipEntry对象的转换为字符串后的样子,经过观察可以发现,在遍历时一定是先遍历文件夹,然后再是文件夹下的内容,所以不会出现某个文件的父级目录不存在的情况。或者2个参数也行吧。所以正确的其实应该放到递归方法的外面。
2024-08-09 00:10:15
1642
原创 序列化流&反序列化流
一个类如果实现Serializable这个序列化接口,那么Java会根据这个类中的成员变量、静态变量、成员方法、静态方法等等,也就是这个类中的所有的内容计算出一个long类型的值,叫做serialVersionUID,即序列号。直接把对象的属性值写入不就可以了吗,但是并不想让别人看懂,因为看懂之后就可以修改,比如游戏中的数据随便进行修改,那还玩什么。如果对类进行修改的话,Java会计算出一个新的序列号,那么把本地文件中的对象读取到程序中去时会发现读取出来的序列号和这个类的序列号不一样。
2024-08-07 15:33:39
795
原创 Java 中的转换流
在上面的示例代码中,首先定义了一个包含中文字符的字符串,然后将该字符串按 GBK 编码方式保存到文件中,接着将文件按IDEA中默认的编码方式(UTF-8)读取,并显示内容。首先字节流不能用来读取中文,肯定是会乱码的,所以要转换为字符流,又要求每次读取一整行数据,这是缓冲字符流的特有方法,所以又需要再转换为缓冲字符流。这是因为文件中的 GBK 编码的字符在使用 UTF-8 解码时无法正确解析,从而导致出现乱码问题。练习1:将GBK编码的文件转换为UTF-8编码的。②字节流想要使用字符流中的方法。
2024-08-07 13:37:53
489
原创 Java 中的缓冲流
细节2:newLine()方法,当想写入换行符时,不同的系统中换行符是不一样的,比如Mac是\r,Linux中则是\n,Windows中则是\r\n。代码中直接写换行符其实是不合理的,比如同一个代码,放到不同的系统中效果是不一样的,这样不好,于是就要newLine()方法, 不同的系统中效果都是一样的。(1)缓冲流在使用时要传递基本流的对象过去,因为缓冲流只是对基本流包装了一下,并增加了缓冲区,但是干活的其实还是基本流。字节缓冲流的缓冲区是byte类型的,而字符缓冲流的缓冲区则是char类型的数组。
2024-08-03 21:29:59
429
原创 FileInputStream
无参的read方法一次只能读取一个字节,速度有点慢,还有一个有参的read方法:read(byte[] buffer),一次可以读取指定长度的字节放到数组当中,一般长度为1024的整数倍,比如1024*1024*5=5MB。此方法的返回值是读取的字节个数。反正就是不能一次循环中调用两次read()方法。刚开始想读取pdf,但是好像不行,等我学会以后直接pdf转word。类似于迭代器中的指针,读取后会直接将指针+1。返回值就是数据在ASCII码表中对应的整数。释放资源的时候一般先开的资源最后释放。
2024-08-01 19:58:58
609
原创 从匿名内部类到Lambda再到方法引用
通过匿名内部类的方式实现了接口中的抽象方法以后自己并没有直接调用,但是经常能看到实现的抽象方法被调用的结果,那么是谁在哪里调用的呢?是用来简化Lambda表达式中方法体的书写,引用别人已经写好的要求一样的方法(静态方法、实例方法或构造方法),直接拿来用。其他类的对象:首先获取其他类的对象,通过对象引用成员方法。引用静态方法的格式:类名::方法名。注:不能在静态方法中引用成员方法。引用构造方法的格式:类名::new。格式:::,通过两个冒号来引用。引用成员方法:对象名::方法名。格式:类名::成员方法。
2024-07-31 14:00:08
234
原创 Java 中的Stream流
filter方法的形参为匿名内部类的对象,可使用lambda表达式进行简化,当方法体中的返回值为true时将此数据留下,false则舍去。终结方法:由于这种方法的返回类型不是Stream,所以执行完此方法之后,就不能再执行Stream流中的方法了。distinct底层调用了equals和hashCode方法,所以如果存储的是自定义对象,要重写这两个方法。中间方法:方法的返回值为一个新的stream流,可以继续对数据进行操作。map方法:将数据转换为另外一种类型,传递的参数为匿名内部类的对象。
2024-07-26 19:25:45
580
原创 Stream流练习
现在有两个ArrayList集合,分别存储6名男演员的名字和年龄以及6名女演员的名字和年龄,姓名和年龄中间用逗号隔开。男演员:"蔡坤坤,24","叶齁咸,23","刘不甜,22","吴签,24","谷嘉,30","肖梁梁,27"女演员:"赵小颖,35","杨颖,36","高元元,43","张天天,31","刘诗,35","杨小幂,33"对于第4点要求,将演员的姓名和年龄封装为Actor对象这一步其实是用到了map方法,转换数据类型。3、把过滤后的男演员姓名和女演员姓名合并到一起;
2024-07-26 16:39:36
156
原创 泛型中的类型擦除
Java中的泛型是伪泛型,在编译期间会将所有与泛型有关的信息去掉,替换为原始类型。既然编译之后的字节码文件中泛型被擦除了,那么是如何获取之前的与泛型有关的信息的呢?关于原始类型,如果使用了上界和下界通配符,那么原始类型就是上界和下界,如何没有就是默认的Object。,谁是一个引用,用这个引用调用泛型方法,就会对这个引用调用的方法进行类型检测,而无关它真正引用的对象。不过在第一种情况,可以实现与完全使用泛型参数一样的效果,第二种则没有效果。那么,这个类型检查是针对谁的呢?泛型所提供的类型检查是在编译之前的。
2024-07-26 15:06:37
254
原创 Java 中集合的练习
需求:定义一个Map集合,键用表示省份名称province,值表示市city,但是市会有多个。分析:使用remove方法模拟点到的学生,并将其添加到一个新的集合中,点名结束后重新将其赋给原始集合,再次循环。需求:班级里有N个学生,被点到的学生不会再被点到。需求:班级里有N个学生。要求在随机的时候,70%的概率随机到男生,30%的概率随机到女生。江苏省 = 南京市,扬州市,苏州市,无锡市,常州市。湖北省 = 武汉市,孝感市,十堰市,宜昌市,鄂州市。需求:班级里有N个学生,实现随机点名器。
2024-07-25 15:05:50
414
原创 Java 中泛型的继承
与方法类似,泛型类和泛型接口也是在定义类型参数的时候使用的都是形参,但是在使用泛型类和泛型接口的时候,比如定义引用变量、继承泛型类和实现泛型接口,就必须传入实参,而实参就是具体的类型,比如 String、Integer 等类,也可以是自定义类型。综上所述:注:为了方便,下面中的"泛型"均指代"泛型类和泛型接口"。泛型定义的时候使用形参,使用泛型的时候必须传入实参。public class MyGeneric { ... } // T就是一个自己随意命名的类型形参。
2024-07-25 15:01:20
1778
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人