- 博客(36)
- 收藏
- 关注
原创 MYSQL学习笔记
在默认情况下,当查询两个表时,会将第一个表中的一行和另一个表中的每一行组合,返回结果,包含两张表的所有列,一个返回的记录数是两张表的行数乘积,这样多表查询默认处理方式返回的结果, 称为笛卡尔积`在RAND()中添加一个数字时将产生一个固定的随机数, 例如 : RAND(3) 不添加数字, 只是RAND()时,每次执行都会产生不同的随机数。不同的数据库用户登录到DBMS后根据相应的权限可以操作的数据库和数据对象(表, 视图,触发器)是不同的。MySQL中判断是否相等是一个等号'=', 不等有两种 :!
2024-11-03 09:39:29 1061
原创 Linux学习笔记
九月二十六号:三种网络连接的区别:克隆的虚拟机文件可以放在另一台电脑上一样使用查看linux IP地址的指令: ifconfig 查看ens33对应的通过Xshell输入reboot会使linux重启 pwd: 显示当前在哪个目录下返回的是第一次登录时的信息当创建一个用户没有指定组时,会生成一个和用户名一样的组,将此用户放进去// 找回密码的章节未记录 hsp发的文档有案例:结束at命令的输入需要输两次IP要在同一个网段才能进行通讯tomcat在Linux上部署完成意味着可以通过windows上的浏览器访
2024-11-03 09:39:18 581
原创 正则表达式
正则表达式(regular expression | regexp)技术是对字符串执行模式匹配的技术java使用正则表达式的流程: 使用到的两个类: Pattern, Matcher。
2024-11-03 09:39:09 161
原创 java集合
集合的使用非常简单, 重要的是底层的实现逻辑@抑制所有警告 SupperssWarings({"all"})单列集合:实现了collection接口的都可以使用iterator.当我们退出iterator的while循环后,iterator此时指向集合的最后一个元素,如果还想使用,需要重置,即iterator = col.iterator();Object obj = iterator.next(); //其编译类型是Object 运行类型是ArrayList增强for循环是简化的iterator遍历方式.
2024-11-03 09:38:58 274
原创 java_IO流
写入的三种方式: 1.写进单个字符 2.写入一个字节数组(将字符串用getbytes转换为字节数组) 3.将字节数组的子串传入。其中写入流时,一定要用图示方法, 不能直接将b传进去,因为可能读取到的字节数不是1024, 这样就会出错.read(byte[ ] b) 返回的是读取到的字节个数 如果为空则返回-1。用此类向文件写入数据时,如果文件不存在会自动创建文件, 前提是目录以经存在。二进制文件: 图片, 视频, 音频,word文档, PDF文件。其中的new String()是一个没见过的构造器。
2024-11-03 09:38:44 364
原创 JDBC学习笔记
九月十八:虽然能驱动了,但是仍然不知道当时为什么不能驱动, 8.0以上会自动驱动, 也就是说只需要做好connection和statement。
2024-11-03 09:37:56 818
原创 python内容保存到excel
cvs文件: 逗号分隔值(Comma-Separated Values, CSV, 有时也称为字符分隔值, 因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).当我们使用CSV文件存储数据时,一定要注意被存储的数据的格式, 如果是一些中文片段, 里面包含有一些逗号,此时分隔符如果还设置为逗号,再次读取此CSV文件时就会乱掉 .with open (r"文件地址后缀为csv", 'w', newline = '') as f:#如果不设置newline,默认是换行。
2024-08-09 16:01:19 1079
原创 爬虫基础2
一次浏览一次Cookie,例如: 登录前的Cookie和登录后的信息, 未设定Cookie信息爬取登录后的QQ空间时得到的HTML文件,打开是为登录页面,而不是已经登录过的页面, 因为登录前后的Cookie是不同的,此时服务器会认为你没有登录进去。1.User_Agent: 浏览器的名称.向服务器发送请求时,服务器通过此参数了解是从何种浏览器发出,以便返回正确的信息,必须设定这个参数,不设定这个参数,服务器就知道你是用python等工具来爬取数据,此时,服务器设置了反爬,就会拒绝你的请求。
2024-08-09 16:00:14 1113
原创 动态规划系列
利用dp二维数组来存储已经计算好的字符串来减少巨量计算量,动态规划中的dp数组的初始化比较不同设两字符串的长度分别为length1,length2,那么数组的大小应为length1+1 * length2 +1,第0行和第0列的分别表示i,j 到头是应该进行的操作数量,分别等于剩余的列数和行数,dp[i+1][j+1]要考虑四种情况:1.待比较的两字符相等;dp数组初始值设为1,如何来设计动态规划:判断此下标元素与之前所有下标元素的大小关系,可能就会产生一系列的新子序列,但是只选择最长的那一个。
2024-08-09 15:59:30 286
原创 JAVA学习笔记
局部变量和方法的参数都是被声明在方法中.他们是暂时的,且生命周期只限于被放在栈上的这段时间(也就是方法被调用至执行完毕为止).显式的调用父类的构造函数: super().,如果我们没有调用super(),编译器会帮我们加上super()的调用,父类的构造函数会调用它的父类的构造函数,一直到Object的构造函数为止.然后再一路执行,弹回到原来的构造函数为止.,不能在非抽象类中拥有抽象方法.,就算只有一个抽象的方法,此类也必须标记为抽象的.这会让服务器应用程序开始监听来自4242端口的客户端请求.
2024-08-09 15:58:57 663
原创 爬虫基础学习笔记
在起始和闭合标签之间放上链接对应的文字,展示给用户的就不再是原始直白的地址了 例如: <a href="链接地址">我的链接和和
2024-07-26 15:24:16 763
原创 Python基础学习笔记
写测试代码 : 写一个开头为Test的类表示为测试用的类 继承unittest.Testcase,这样就能使用继承则这个类的各种测试功能, 在这个类下面可以定义不同的测试用例,每个测试用例都是类下面的一个方法名字必须以test_开头,因为因为unittest这个库会自动搜索以test_开头的方法,并且只把这个当成测试用例。放可能产生错误的语句。元组可以作为健 例如 : address_list = {("小明" ,23):"123" , "警察" : "110"}
2024-07-24 11:11:27 572
原创 用IDEA创建jar文件
首先点击文件选择: open Module Setting 选择Artifacts建立一个JAR 然后选定主类。就会创建一个MANIFEST.MF文件(这个文件是用来指定主类的(含main方法的类))点击build中的Build Artfacts中的Build。等待建造完成后会在out中的artfacts中有个JAR文件。
2024-07-21 17:15:04 153
原创 模版与泛型编程
函数模版:模版定义以关键字template开始,后跟一个模版参数列表,这是一个逗号分隔的一个或多个模版参数的列表,用“< >”包围起来。模版参数表示在类或函数定义中用到的类型或值。当使用模版时,我们(隐式或显示地)指定模版参数,将其绑定到模版参数上。实例化函数模版:编译器用推断出的模版参数来为我们实例化一个特定版本的函数。当编译器实例化一个模版时,他使用实际的模版实参代替对应的模版参数来创建出模板的一个新“实例”。一般来说,我们可以将类型参数看做类型说明符,就像内置类型或类类型说明符一样使用。
2024-04-17 18:48:29 932
原创 面向对象程序设计
面向对象程序设计(object-oriented programming)的核心思想是数据抽象、继承和动态绑定。通过使用数据抽象,我们可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。在C++中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待。对于默写函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数(virtual function)。
2024-04-17 18:04:33 645
原创 重载运算与类型转换
前置和后置版本使用的是同一个符号,意味着其重载版本所用的名字将是相同的,并且运算对象的数量和类型也相同。相反,通过值捕获的变量被拷贝到lambda中,因此,这种lambda产生的类必须为每个值捕获的变量建立对应的数据成员,同时创建构造函数,令其使用捕获的变量的值来初始化数据成员。因为也可以调用这种对象。如果定义了显示的类型转换运算符,编译器通常不会将一个显示的类型转换运算符用于隐式类型转换,该规定存在一个例外:即如果表达式被用作条件,则编译器会将现实的类型自动转换应用与它,即显示的类型转换将被隐式地执行。
2024-04-11 21:10:38 1061 1
原创 拷贝控制总结
所有五个拷贝控制成员应该看作一个整体:一般来说,如果一个类定义了任何一个拷贝操作,它就应该定义所有五个操作。移动迭代器:解引用运算符生成一个右值引用,通过调用标准库的make_move_iterator函数将一个普通迭代器转换为一个移动迭代器。
2024-04-11 21:10:16 622 1
原创 第十四章文本查询程序再探-总结
Query为唯一的接口,,有一个变量存储着Query_base类型的智能指针,接受两种初始化方式:1.直接传递一个Query_base类型的智能指针,2.传递一个string对象,动态构造一个Word_base对象存储在变量中。Word_base的eval和rep函数很简单,就是对给定单词在TextQuery中调用query函数进行查询,然后将结果存储在一个set中,最后构造一个ResultQuery类(用rep的返回值,set和给定文件)。对于OrQuery类,关键是对两个给定单词得出的set进行合并。
2024-04-07 22:34:20 318
原创 C++标准库、顺序容器、泛型算法、关联容器、动态内存
IO类:IO对象无拷贝或者赋值,因此我们也不能将形参或者返回类型设置为流类型。因此,进行IO操作的函数通常以引用的方式传递和返回流,读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。一个流一旦发生错误,其上后续的IO操作都会失败。只有当一个流处于无错状态时,我们才可以从它读取数据,向它写入数据。由于流可能处于错误状态,因此代码通常应该在使用一个流之前检查它是否处于良好状态。IO流被置位通常意味着流对象的状态发生了改变。缓冲机制:每个输出流都管理一个缓冲区,用来保存程序读写的数据。
2024-03-25 22:36:56 567
原创 C++基础——类(2)
在类的外部,成员的名字被隐藏起来了,一旦遇到了类名,定义的剩余部分就在类的作用域之内了,另一方面,因为返回类型的名字在类名之前,所以当成员函数定义在外面时,返回类型中使用的名字都位于类的作用域之外,当然返回类型之前也可以加上类名,使返回类型也在某种类的作用域内。静态成员的类内初始化:即使一个常量静态数据成员在类内部被初始化了,通常情况下也应该在类的外部定义一下该成员。封装是类的成员不能被随意访问的能力,通过把类的设计细节设置为private 就能完成类的封装,封装实现了类的接口和实现的分离。
2024-03-10 21:44:56 918 1
原创 二分搜索算法与滑动窗口算法
二分搜索算法的思路很简单,但是细节比较烦人。二分查找算法的基础常用场景:1.寻找一个数;2.寻找左侧(右侧)边界主要有两种算法细节区别:1.right = nums.length - 1;对应的循环截止条件有区别:left <= right;left < right.因为对应的运算空间不同:一个是两边都闭合,一个是左闭右开。
2024-01-14 16:24:25 536 1
原创 BFS算法套路框架与双指针技巧套路框架
方法:从图的某一节点开始,首先依次访问该节点的所有邻接节点,再按照这些顶点被访问的次序依次访问与它们相邻的所以未被访问的节点,重复此过程,直至所有节点均被访问为止,利用队列是经常的,类似于树中的层次遍历,一层一层的遍历,经常用于求最短路径问题。
2024-01-13 23:04:26 505 1
原创 学习算法基础内容
求二叉树的最大路径和,基本框架是二叉树的遍历,此题为后续遍历,因为最大路径不一定过根节点,所以要设定一个变量用来随时更新最大路径和,int ans = INT_MIN;节点的基础结构是此节点、左右子树,所以有四种路径:此左右,此右,此左,此;此就是此节点,所以要用max函数来判定左右子树与0的关系,但是此节点本身不用判定(初始值设为INT_MIN的原因)。设left和right来存储左右子树的最大路径和,则此节点的最大路径和就是:val+right+left,称为lmr;
2024-01-08 23:20:43 486
原创 C++基础——类(1)
不同的编程角色:程序员们常把运行其程序的人称作用户(user)。类似的,类的设计者也是为其用户设计并实现一个类的人;显然,类的用户是程序员,而非应用程序的最终使用者。类的作者常常需要定义一些辅助函数,比如add、read和print 等。尽管这些函数定义的操作从概念上来说属于类接口的一部分,但是它们实际上并不属于类本身。我们定义非成员函数的方式与定义其他的函数一样,通常把函数的声明和定义分开来。如果函数在概念上属于类但是不定义在类中,则它一般应与类声明(而非定义)在同一个头文件中。
2024-01-02 23:03:27 342
原创 C++基础——4.函数
当形参有顶层const时,传给它常量对象或者非常量对象都是可以的,或者说,形参的顶层const属性只是用来限制形参,即不能通过形参来改变传入的拷贝值或者实参本身(当引用或者指针时),对于实参是否具有顶层const属性没要求。因为数组的大小是构成数组的一部分,所以只要不超过维度,在函数体内就可以放心的使用,但是者也具有一定的限制作用,我们只能将函数作用于定义大小的数组。把函数不会改变的形参定义成(普通的)引用是一种常见的错误,这么做会带给函数的调用者一种误导,即函数可以修改它的实参的值。
2023-12-30 15:25:08 1052 1
原创 C++基础——3.语句
continue语句只能出现在for,while,do while循环的内部,活着签到造此类循环里的雨具或块的内部。负责终止离它最近的while,do while,for,switch语句,并从这些语句之后的第一条语句开始继续执行,break语句只能出现在迭代语句或者switch语句内部,break语句的作用范围仅限于最近的循环或者switch。最简单的语句是空语句,如果在程序的某个地方,语法上需要一条语句,但是逻辑上不需要,此时应该使用空语句。因为空语句也是一条语句,所以可用在任何允许使用语句的地方。
2023-12-25 20:00:00 365
原创 C++基础——2.字符串、向量、数组和表达式基本概念
与指针类似end成员负责返回指向容器(或string对象)“尾元素的下一位置”的迭代器,常称为尾后迭代器。迭代器的类型:iterator 和 const_iterator。谨记凡是使用了迭代器的循环体,都不要像迭代器所属的容器添加元素。c_str函数实现用string对象初始化指向字符的指针。现代的C++程序应当尽量使用vector和迭代器,避免使用内置数组和指针,应该尽量使用string,避免使用C风格的基于数组的字符串。
2023-12-23 22:09:55 393 1
原创 C++基础——1.变量和基本类型
记住在类定义的最后加上“;”分号。预处理:预处理变量无视C++中关于作用域的规则;头文件及时(目前还)没有被包含在任何其他头文件中,也应该设置保护符,养成习惯。
2023-12-20 23:05:02 735 1
原创 第五次具体总结
堆的定义:若 n 个元素的序列满足:{a1,a2,a3,……有序插入方法:在插入a[ i ]之前,数组 a 的前半段 (a[ 0 ] ~ a[ i -1])是有序段,后半段(a[ i ] ~ a[ n -1])是停留于输入次序的“无序段”。即:对应有 n 个元素组成的无序序列,“筛选”只需要从第 n/2 个元素开始,若对一个无序序列建堆,然后输出根。q^2,二次序列……先将整个待排记录序列分割成若干个子序列,分别进行直接插入排序,将整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序;
2023-12-16 22:58:11 843 1
原创 第四次具体总结
在AOV网中没有回路的前提下,我们将全部活动排列成一个线性序列,使得若AOV有 弧< vi , vj >存在,则在这个序列中,i 一定排在 j 的前面,具有这种性质的线性序列称为拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序。3.更新:然后对其余各条路径进行适当调整:若在图中存在弧(u,vk),且(v0,u)+(u,vk)< (v0, vk),则以路径(u0,u,vk)替代(v0,u)。设N = (V,E)是一个连通网,U是顶点集V的一个非空子集。
2023-12-10 21:35:32 938
原创 第三次具体总结
关联(依附):边或弧与顶点之间的关系存在(Vi,Vj)或则称该边或弧依附于或关联于Vi,Vj两个顶点。在无(有)向图中G = (V , {E}),若对任和两个顶点v,u都存在从v到u的路径,则称G是连通图(强连通图)。有向图中的每一条弧对应十字链表中的一个弧结点,同时有向图中的每个顶点在十字链表中对应有一个结点,叫做顶点结点。极大(强)连通子图意思是:该子图是G的(强)连通子图,该G的任何不在该子图中的顶点加入。无向图的邻接矩阵是对称的,顶点 i 的度 == 第 i 行(列)中1 的个数;
2023-12-07 17:40:02 850
原创 第二次具体内容总结
1.双亲表示法:实现:定义结构数组存放树的结点,每个结点含有两个域:数据域:存放节点本身信息:指针域:指示本节点的双亲节点在数组中的位置;特点:找双亲容易,找孩子难。2.孩子链表:把每个节点的孩子节点排列起来,看成是一个线性表,用单链表存储,则n个节点有n个孩子链表(叶子的孩子链表为空表)。而n个头指针又组成一个线性表,用顺序表(含n个元素的结构数组)存储。特点:找孩子容易,找双亲难 所以可构造带双亲的孩子链表。
2023-12-06 22:37:15 897 1
原创 学习数据结构与基础算法的前两周阶段总结(数据结构具体内容方面)
为避免悬空态,增设一个头结点:ltag = 0,lchild指向根结点,rtag=1,rchild指向遍历序列中最后一个结点,遍历序列中第一个结点的lchild和最后一个的rchild都指向头结点且rtag = ltag = 1;线索二叉树:为区分lchild和rchild是指向孩子还是前驱后继,对二叉链表中每个结点增设两个标志域ltag,rtag,并约定ltag=0,lchild指左孩子,=1指前驱,rtag=0指右孩子,=1指后继;表头:若LS非空,则第一个元素为表头,记作head(LS)= a1。
2023-11-04 10:58:56 41 1
原创 学习数据结构与基础算法的前两周阶段总结(算法基本概念方面)
算法的设计要求:正确性(Correctness)、可读性(Readability)、健壮性(Robustness),高效性(Efficiency)。算法的定义:对特定问题求解方法和步骤的一些描述,它是指令的有限序列。算法的时间量度记作:T(n) = O(f(n)) , 忽略所有低幂次项和最高次幂系数,语句频度最大的作为基本语句;称O(f(n))为算法的渐进时间复杂度,简称时间复杂度,O为数量级的符号;算法中基本语句重复执行的次数是为题规模n的某个函数f(n);1、时间效率:指算法所消耗的时间;
2023-11-03 08:30:00 27
原创 学习数据结构与基础算法的前两周阶段总结(数据结构基本概念方面)
3、索引存储结构:在存储结点信息的同时还建立附加的索引表。1、顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。2、物理结构(存储结构):数据元素及其关系在计算机存储器中的结构(存储方式),是数据结构在计算机中的表示。3、数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。2、数据元素及其关系在内存中的表示(又称为映像)称为数据的物理结构或数据的存储结构。3、数据对象:是性质相同的数据元素的集合,是数据的一个子集。
2023-11-02 23:45:00 40
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人