- 博客(84)
- 收藏
- 关注
原创 5. Charset
④ 在 Java 开发中,尤其是涉及到 Web 应用、数据库、网络传输等场景时,XML 是一种常见的格式,而 UTF-8 是推荐的字符编码。例如:如果 A 用 GBK 编写了一个项目,B 用 UTF-8 打开 A 的文件,因为 GBK 和 UTF-8 的编码方式不同,字节的解读方式会错误,所以导致中文字符出现乱码。③ UTF-8是万维网的标准格式(因为它支持全球化、多语言,且高效、兼容 ASCII),Java 使用 UTF-8 作为标准字符编码是为了更方便地处理跨语言、跨国际化的需求。
2024-12-19 13:56:19
689
1
原创 4. IO Stream
这样,每次从源文件读取和写入目标文件时,都是按照缓冲区的大小来进行的,即每次操作都是1024字节。这大大减少了磁盘I/O操作的次数,因为每次操作都处理更多的数据,从而显著提高了文件复制的速度。② 除此之外,BufferedWriter里有一个newLine()方法,可以根据不同的系统生成换行符(因为不同的系统换行符可能不同),所以更推荐用它去写入文件;例如,你发了一个视频给你的朋友,数据就从你的电脑上流通到了ta的电脑上,这个过程就叫数据流。例如创建2个文件input流时,它可以把2个流合并,变成一个流。
2024-12-04 21:01:18
767
原创 codeforces1925A
前段时间上课没事干,就做了这道题。但是可能因为当时脑子不太清醒,被卡了好久,甚至题目都没有读懂,用了翻译软件也于事无补。后来又去看了题解,依然不明白为什么那样写。后来就很长一段时间没有刷题了。昨天晚上突然又想到了这道题,看了一下,当初的阴影犹在,因此脑子也是一片空白。刚刚又试着做了一下,发现就是很简单的规律,k是多少就按字母表依次输出相应个数的小写字母,n是多少就意味着重复输出几遍。事实证明,一定要在脑子清醒的情况下做题,否则就是浪费时间。
2024-12-03 11:31:54
346
原创 codeforces1814A
① 很久没刷题了,代码逻辑有点跟不上。没有试图去找规律,想到哪写到哪,一点一点完善代码逻辑,最终的代码复杂且不正确。② 看到最大数据是10^18,竟然没有反应过来用long long,还是看到有测试样例不通过,才反应过来int不行。但是此时想到的是换用python,还是搜了题解才反应过来用long long。长时间不练习,突然写一道,感觉俩耳朵中间那玩意儿跟个摆设一样,一点不转,真就给我蠢笑了🤣。
2024-12-02 22:03:34
275
原创 3. Throwable、File
① 平常写代码时,Error遇见的不多。② Error属于严重错误,直接就报错了,不太好处理。③ Error的出现情境:例如,内存不够了、运行的tomcat或者说服务器内存炸了然后引发系统404崩了(不过有的可能连Error都没获取到就崩了)、或者说被黑客攻击了。① 平常写代码时,Exception遇见的比较多。② Exception可以通过j简单修改代码解决。③ 异常不代表是语法错误,语法错误就直接高亮提示了。④ 常见的异常:没事应该多看看文档里的异常。
2024-11-22 10:39:50
991
1
原创 2. unit test and main function、StringBuilder
② trimToSize方法:StringBuilder本质而言是一个字符序列,默认是16个字符的空间,当字符串增长到一定程度,它就会按倍数自动扩容。假如现在字符串有17个字符,StringBuilder就会自动扩容至32个字符,此时空有15个字符的空间,当我们确定以后不会再让这个字符串长度增长,就可以用trimToSize方法释放掉多余空间。这样一来,就算出错,也能看出来是哪个模块的问题,只检查哪个模块就行(main方法里测,得从头到尾检查,太麻烦)。这样就脱离了批量测试的结果,给一个范围,让它们。
2024-11-17 11:49:02
604
原创 1.Base API
我们在学习c语言的时候应该都用过sqrt()函数,它就位于标准库math.h中。像这种标准库都是c语言自带的,我们每次调用这个函数的时候,都只需引入头文件#include<math.h>即可。java里肯定也有类似的东西(就是说我们没必要专门去写一个开平方根这样的函数,java人家本身就给我们提供了,需要的时候调用一下即可),把对程序员友好的一些函数封装成一个类,只不过这些类在java里不叫标准库,叫API。维基百科给的定义是应用程序接口。
2024-11-16 12:16:34
949
原创 9. java基础知识(上)
java源码编译后生成的.class文件说白了就是一个可执行文件,借助java内置的小型虚拟机(也就是jvm)就可以再任意系统上执行。但是.exe文件就不行了,它是windows特有的,把.exe文件拖到linux上就不能运行。① 编译运行java代码需要的3个核心东西:jdk(java的开发工具,编写代码用的就是这个)、jre(运行环境,给用户用的。反编译这里我也不是很了解,一开始我还以为是可以通过点击.class文件这里的运行按钮就可以反向生成.java文件,后来试了一下,发现不是。
2024-11-08 17:51:37
1031
原创 8. 多态、匿名内部类、权限修饰符、Object类
这个在自带的jar包里可以找到> 例如:最开始没有在Animal类里使用注解的时候,我们利用快捷键生成toString()方法时会自动带上@Override,就是因为Animal继承了Object,此处的本质是重写了Object里的方法。相关博客。
2024-10-11 17:50:58
795
原创 7. 抽象类与抽象方法、接口
也就是说,Animal本质来说是没人用的,它是一个抽象的东西,抽取了这些猫狗的共性,作为使用。就像你说最近养了个动物,别人一定会继续问你养了什么动物。再比如,经常听到有人说回家撸猫撸狗,没听过有人说回家撸动物的。抽象的目的是为了概括(解释)这些具体的事物。以上是百度百科给动物下的定义。设想一下,你回家跟你妈说:妈,我想养一个多细胞真核生物。你妈说:啥玩意?说清楚点。你说:我就想养一个多细胞真核生物。然后不出意外你妈会觉得你可能病得不轻。
2024-10-11 10:53:20
647
原创 6. 继承、重写、super、final
你的程序火了以后,又有大爷大妈来找你了。他们说,不能光给养狗的写啊,也得考虑一下他们这些养猫的、养仓鼠的人啊。这个问题该怎么解决呢?总不能给每种宠物都写一个程序吧,那得把人累死。或者说在当前程序里再定义一些cat类、Hamster类等,定义完怎么办呢,又得重新定义姓名、年龄、品种、食物、吃喝拉撒这些属性,这是不是太麻烦了。
2024-10-10 23:26:52
880
原创 5.toString()、构造方法、垃圾回收、静态变量与静态方法、单例设计模式、内部类
可以帮助我们初始化实例的手段。可以类比着数组那个例子理解。最初的时候,张大爷他们是不是都是先注册了一个账号,然后才去补充姓名、年龄这些资料。但是实际情况是,我们在注册软件的过程中往往就会被要求填写一些信息,例如:手机号。这个该怎么实现呢?就是说我现在想让用户在注册账号的时候就填写一下昵称(狗的名字)等信息?这就用到了构造方法。
2024-10-09 21:30:18
1388
原创 4. Getter和Setter注解与lombok
官方介绍最开始我们是不是手写get和set方法,但是由于太麻烦了,所以换成了(alt+insert -> Getter and Setter -> 全选 -> 回车)让idea给我们生成。但是如果当前类里有20多个甚至100个私有成员变量,难道也要一个一个点吗(当然全选的时候也可以用Ctrl+A)?这不是太麻烦了么。现在我们有一个很简便的方法,只需要在类前面写一个@Getter和@Setter注解,它就会帮我们自动生成当前类里所有私有成员变量的get和set方法了,就不需要我们自己写了。
2024-10-06 12:53:42
1324
1
原创 3. OOP封装 -- get、set方法
我就不小心按了个减号,我家狗的年龄就变成-30岁了。你的程序不行啊,狗的年龄怎么可能是-30岁,但是你的程序就这么水灵灵给我通过了?再者说,用户自己都可以修改余额了,阿里还干不干了。我们要改只能改设计里的东西,即Dogs类里的东西。简单来说就是,把该类成员变量前面的public(公有的)全部改成private(私密的)。这个时候肯定只能用private了呀,用这种方式就可以避免用户的不合法输入,甚至可以对输入数据做出检查。例如:下述的支付宝余额检查。使用public的话,用户就可以为所欲为,这是很危险的。
2024-10-06 08:49:48
1119
原创 2. 术语解释(类、成员变量、行为、属性、this)以及注销账号和空指针异常
我们的目的是不是要给狗写一个程序,而且要让所有狗都能用,所以我们之前也提到说在正式编码之前需要先思考一下这些狗的共性(例如:年龄、姓名等),有时也需要考虑一下特性(例如:李阿姨家的狗是一个二哈,经常把家里弄得一团糟,这是它的专属特性,其它一些温顺的狗是不会发疯的。所以在上述代码中,我们定义的一些方法(也就是c语言中说的函数),像吃饭啊、睡觉啊、生病啊、抓狂啊,都可以称之为行为。狗的名字、年龄、品种、食物等信息都是一个宠物狗重要的组成部分,因此狗类中与之对应的每一个变量都是当前类的一个成员变量。
2024-10-04 19:58:48
770
原创 从面向过程(pop)到面向对象(oop)
我们发现我们在c语言里学到的这些知识都是从main函数里进去然后从上到下一步一步执行到结尾就没了。如果main函数里没有调用sleep()这些函数,那么这些函数就是没用的。这个时候我们应该站在更高的层次去考虑问题,这个狗应该具有大众化的意义。目前使用设计的思维:① 先去考虑常见的共性:所有狗都会有的东西(例如:都有名字、都有种类、都有年龄、都会吃饭、都会睡觉);② 接下来考虑可能发生的事情(例如:生病)。如此一来公共的特性(谁家的狗都会这样)就定义好了,100多条狗都满足上述目标。// 狗名字。
2024-10-04 10:44:44
1126
原创 sql语句牛客练习
之前把去重写成了 count(question_id) / distinct count(question_practice_detail.device_id),结果不对。看了窗口函数这个教程后写的,现在的问题在于没有去重。这条语句的结果是查出来所有学生的信息,然后该生所属学校的最低gpa表示其gpa。不太知道怎么分别显示出这俩分类的字段,也不太知道该怎么分别统计,所以看了一下题解。眼瞎了一下,又看了一下题目列表,发现这题的标签写的就是子查询🤣。样例的结果都不知道怎么来的,所以就看了题解。
2024-10-02 17:40:48
715
原创 mysql笔记10(高级部分--跟数据库管理有关)
双11之前,dba先把这个存储过程给写了,到指定时间后,一条命令调用存储过程,然后它就会默认执行之前设计过的所有sql,不需要再一点一点去写了,类似于函数调用。那万一过几天我们反悔了呢,难道还要再让阿里的账户数据减少,我们账户的数据增加么?万一哪天服务器崩了,数据到人家账户上了,卖家发货了,但是对面不承认,此时就可以rollback。由此可见,vw_stu这个视图就刻意隐藏了学生性别、年龄等信息,班长拿到的可能就是这个视图里的信息(不含身份证号、详细家庭住址等敏感信息),保护学生隐私。
2024-09-30 11:03:49
1143
2
原创 mysql笔记9(子查询)
简单来说就是:一条sql语句(A语句)的查询结果作为另一条sql语句(B语句)的查询条件,此时A语句就可以称为子查询语句。
2024-09-15 14:28:24
580
原创 mysql笔记8(多表查询)
select 字段名,字段名 from 主表 inner join 从表 inner join 从表 on 主表.公共字段=从表.公共字段=从表.公共字段。(上述score表里没有jerry的成绩(ta缺考了),所以联合查询的结果也没ta)以右边为基准,就算左边那张表里没有学号为12的学生信息,查询结果依然显示12号学生。以左边为基准,就算右边那张表里没有2号学生的信息,查询结果依然显示2号学生。② 两个查询语句,字段及其数据类型一不一样无所谓,但是字段个数必须一致。,根据同名字段连接两张表。
2024-09-13 21:52:24
2426
原创 mysql笔记7(单表查询)
就是mysql自带的一些主要用于做统计的函数,例如:sum avg(平均值)、max、min、count(统计次数)等。select 字段名,字段名 from 表名 limit 从哪个地方开始(默认从第1条数据开始),向下截取几条数据。直接的数据如果是字符串会按首字母范围筛选数据(字符串如果中英文结合好像会出问题)where 字段名 in + (‘要筛选出的数据’,‘要筛选出的数据’);limit 0, 2:从第1条数据开始,向下截取2条数据。limit 1,3:从第2条数据开始,向下截取3条数据。
2024-09-13 18:06:33
1190
1
原创 mysql笔记6(数据库设计思维)
例如:高考成绩有了各科成绩就可以直接确定总分,sql语句查的时候或者代码里写上各科成绩查出来以后直接相加然后返还给用户就可以了,没必要设计总分这个多余的字段。例如:stu这张表就是存储学生基本信息的,eatery这张表就是存储学生在餐厅的消费记录的。② 如果要收集某班学生的家庭住址,此时某个字段的值就可以填写成xx省xx市xx县xx,不需要继续划分该字段。实体与实体之间的关系(简单来说就是一条数据记录与一条数据记录之间的关系):一对一、一对多、多对多、多对一。以后看到的也是该表的结构状况(字段、数据)
2024-09-12 23:17:18
1021
原创 mysql笔记5(列属性完整性)
业务逻辑约束(例如:订单的结束日期不能早于开始日期)、数据一致性约束(例如:某个字段的值只能从给出的几个选项里选择一个填写,跟枚举有些类似)、复杂验证(例如:当前消费额是否满足折扣规则)、触发器和存储过程(例如:这些触发器和存储过程可以在插入、更新或删除数据时自动检查数据的有效性)、数据完整性检查(例如:邮箱格式是否正确、数据是否合法等)学生表利用学号唯一标识某个学生的信息(例如:姓名、电话、住址、性别),食堂交易表也要利用学生的学号统计订单信息(例如:谁打了什么饭、花了多少钱)。
2024-09-12 20:27:39
1202
原创 mysql笔记4(数据类型)
数据库的数据类型应该是数据库架构师(DBA)和产品经理沟通后依据公司的项目、业务而定的,而且会不停地变化。数据类型的选择方面没有一个统一的标准,但是应该符合业务、项目的逻辑标准。
2024-09-08 23:37:12
864
原创 mysql笔记3(数据库、表和数据的基础操作)
不能用关键字(如create、database等)作为数据库名、表名、表中的字段名。如果非要用,就得给它们加上反引号。后续创建和删除普通的数据库(不以关键字作为数据库名)时给数据库名加上反引号可以使代码看起来更高级。③ create database if not exists + 数据库名(数据库名写在反引号里);③ drop database if exists + 数据库名(数据库名写在反引号里);③ drop table if exists 表名(表名用反引号引起来);
2024-09-06 16:57:31
1586
原创 mysql笔记2(安装配置与连接)
我们此时mysql的客户端(我们这里的客户端说白了就是终端terminal – cmd、powershell、或者hyper-第三方软件)和服务端(Mysql Server mysql 服务端)都在本地。这个过程可以理解为:把辅导员看成一个仓库(数据库),仓库里有很多房间(表),现在我们想查看某房间的环境(某张表的信息),所以我们需要登录辅导员的电脑(借用管理员身份)。bin:存放一些二进制文件,可能是一些命令(一些可执行的.exe文件),例如:刚刚使用的mysql命令、服务启动命令等。
2024-09-05 09:43:31
1045
1
原创 mysql笔记
需要利用共性的字段(学号)把数据串联起来,这样的话money表里检测到1001后可以先去查软工这张表,查到了就加200块,然后查mysql这张表,查到了就加100块。除此之外,对于经常改动的数据(例如:用户密码等),以文件的形式存储非常。关系型数据库的出现引入了表格存储数据的概念,使得数据的管理和查询更加灵活和高效。毫无疑问,两个文件都得改。万一只改了一边的数据,另一边忘了改,就会导致数据不完整,引发问题。CRUD只需要操作一个文件,很好地解决了层次模型关于重复数据的问题,确保了数据的完整性。
2024-09-04 20:44:48
1047
原创 关于软件卸载方面的日记
今天清理d盘内容时误删了qq的一个配置文件,无奈之下只能卸了重装。但是卸载完以后,却无法在原来的文件夹下重新安装(报错:当前目录下已安装了QQ正式版,无法再安装QQ体验版)。后来再网上查了一下,有人说可能是因为注册表里的配置信息没删干净。也由此产生了一些疑问。
2024-09-02 23:34:22
1028
原创 数据结构--堆
问:我感觉这个你很大程度上只是附和了我的观点,但是没有抛出新的东西给我。就像我感觉我说的那种单个的东西好像看似挺合理的,但是真的在设计的时候会以某一个为主体吧,如果只是这些数据结构的简单堆砌,设计的时候不会无从下手么。总之就是我想知道设计时从哪个入手会比较好,或者说存在一个更好的数据结构可以很好的解决这些问题,只是我不知道。答:理解你的意思,确实在设计复杂系统时,不仅仅是简单地堆砌数据结构,而是要找到合适的入手点和有效的解决方案。需求分析和场景理解:首先要深入理解系统的需求和使用场景。
2024-08-22 11:20:03
1059
1
原创 数据结构--图(笔记)
① 网络流量分析:在计算机网络中,分析网络节点之间的流量关系时,如果节点之间的连接比较紧密,邻接矩阵可以方便地表示节点间的流量大小,快速查询任意两个节点之间的流量情况。② 有权图且边权变化少:如果图是带权图,且边的权重相对稳定,不经常变化,邻接矩阵可以方便地存储边的权重信息,便于快速查询和处理。② 邻接矩阵:是一个n × n的矩阵,其中n是图的顶点数。无向图:两点之间仅仅是相互连接的关系,表示一种状态(例如:上述节点依次代表一个人abcde,表示a和b互相认识,b和c互相认识等等关系时就可以用无向图)
2024-08-22 00:01:25
980
原创 数据结构--树(笔记)
此动画演示了不断将节点插入AVL树时的情况,并且演示了左旋(Left Rotation)、右旋(Right Rotation)、右左旋转(Right-Left Rotation)、左右旋转(Left-Right Rotation)以及带子树的右旋(Right Rotation with children)。,区别在于它最新一代不一定是同一辈(例如:此时最新一代的5就和上一代的5、6、7产生了一个深度差)且最后一代人必须靠左对齐。①树的时间复杂度有的跟节点数有关,有的跟边数有关。通常情况下都跟节点数有关。
2024-08-19 17:19:13
1096
原创 队列(笔记)
① 操作系统中的进程管理:可以控制进程执行的优先级(例如(大概过程,实际情况比这个复杂):后台同时挂着游戏和工作软件,现在想打游戏,就把游戏放在首位,CPU、显卡等硬件都先给它用;③ 使用链表实现队列的条件:只顾头尾,甚至只顾头(例如:银行办理业务时谁先来先办理谁的,不会说先挨个问一下每个人办理什么业务,突然让某个人插个队或者说因为队伍最后一个人前面的人太多,就先给最后那个人办理)① 优点:链表有头指针和尾指针,这正好满足了队列的条件(只需要处理头(前端)和尾(后端),一个删除,一个插入)
2024-08-18 13:10:56
976
原创 数据结构stack (笔记)
彻底了解数据结构核心后,依然不会实现,说明语言掌握有问题,训练太少,对该语言不熟练,没有真正掌握语言中最常见的流程,语言中共性的东西没有掌握(为什么使用控制流程和循环、为什么在C语言中使用结构体,在高级语言中不用结构体,用更好的方式去实现数据结构),只知道for、while是循环,if是如果,不知道其背后的逻辑,或者练习太少用的时候想不到。没有彻底理解相应数据结构的思想(不知道它是什么、不知道它用在哪、它在内存中是如何操作的),总之就是核心的东西不了解。③ 操作系统中的内存管理。(上图来源:wiki)
2024-08-17 23:42:58
830
原创 哈希原理(笔记)
尤其应该注意Hash function的设计,它是一个难点,Hash funtion设计好坏直接关乎哈希表查询速度的快慢。考虑到哈希碰撞(涉及到对链表的操作),所以最坏的时间复杂度都是O(n)。早期的md5被破解也是因为人们搞清楚了它的加密方法 f(1) )大多利用单向散列函数函数。(简称为f(2) )计算查询哈希碰撞确认某个哈希值的存在,但是无法通过 f(2)逆推出明文(因为 f(2)只是验证方法,而非解密方法)。(本图来源:wiki)这个签名是由文件的散列值通过发布者的私钥加密生成的。
2024-08-17 17:03:35
1228
原创 指针基础知识(笔记)
前几天我在听frank的数据结构的课程,听完了链表这一部分,原本想着理解了它的内核及应用场景后,代码部分应该也就不成问题了,其实一切本该如此,但是我突然发现我还是写不出来,基础知识部分太差劲了,例如:我只是知道有指针这个东西,但是让我具体解释,我真的会傻眼。虽然之前在学c语言的时候,也专门听过指针这部分的网课,但怎么说呢,跟着up主把代码敲了一遍(那代码我现在还有,但是那次写完之后再也没看过🤣),该不懂还是不懂,甚至于当时刷题看见指针这个标签就会直接跳过。当我们解决更复杂的生活问题时,指针的妙用就会凸显。
2024-08-08 21:09:11
673
原创 codeforces查看题解
文章目录1. 步骤一:右键单击箭头指向位置,根据提示打开链接2. 步骤二:左键单击箭头指向位置3. 结果:红线上方是参考代码,下方是测试样例4. 补充:① 右边这个方框可以筛选想要查看代码的状态(Accepted、Wrong answer等)以及提交的语言② 下方这一栏可以按运行时间(或者内存损耗等)对代码进行排序1. 步骤一:右键单击箭头指向位置,根据提示打开链接2. 步骤二:左键单击箭头指向位置3. 结果:红线上方是参考代码,下方是测试样例4. 补充:① 右边这个方框可以筛选想要查看代码
2024-08-07 20:24:17
1898
2
原创 编程语言设计时需要考虑的问题--多个数据和变量如何处理?
数据结构在数据组织时是基础性的选择,它直接影响到后续的资源管理。例如:当需要频繁查找、插入或删除数据时,数组虽然也能实现,但是选择哈希表或者优先队列却可以显著提高这些操作效率。涉及到算法优化、如何减少内存消耗、如何提高程序的执行效率、如何优化系统资源的利用等。③ 性能优化::如何是队伍管理更有效?涉及到算法选择、内存管理、线程管理、并发控制、数据结构等方面。谁能拿哪个箱子里的快递?① 数据组织:如何分发号码牌(保证队列有序)?② 资源管理阶段:高效的操作地操作和管理数据。(例如:结构体、数组、树、链表等)
2024-08-02 16:20:24
308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人