自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java(十)(网络编程,UDP,TCP)

可以让设备中的程序与网络上其他设备的程序进行数据交互(实现网络通信)

2023-11-30 09:09:34 301

原创 Java(九)(多线程,线程安全,实现线程的方法,线程同步,线程池,并发和并行,线程的六种状态)

我们来模拟线程安全,假如说现在取钱,小明和小红在同一个账户下取钱,现在账户有10万元,小明在他的手机上取10万元,小红在她的手机取10万元,想有没有一种可能小明的手机判断有钱但是还没有取钱的同时,小红的手机也判断有钱,也要完成取钱操作,这样的话小明取出来了10万元,小红手机也取出了10万元,而账户中只有10万元,这就是线程安全。下面我们创建一个线程类,run里面要把握住,这个线程的行为,因为我们要完成取钱,所以必须有一个账户对象,我们要构建一个有参构造器,来接收对那个账户进行操作,还要接受线程的名字。

2023-11-28 16:27:24 169

原创 Java(八)(可变参数,Collections,小案例:斗地主游戏小案例:斗地主游戏,Map集合,Stream流)

Map集合的每个元素,"key=value"称为一个键值对/键值对对象/一个Entry对象。大体思路就是,将键取出来封装成一个Set对象,然后遍历Set中的键去get到Map中的值。Map集合所有键是不允许重复的,但值可以重复,键和值一一对应,每一个键都有自己对应的值。map.put("手表",10);就是一种特殊的形参,定义在方法和构造器的形参列表中,格式是: 数据类型...参数名称。map.put("手帕",1200);map.put("手表",100);map.put("电脑",300);

2023-11-27 12:13:35 434

原创 Java(七)(Lambda表达式,正则表达式,集合(Collection,Collection的遍历方式))

作用: 用于简化匿名内部类中的代码写法函数式接口是啥?函数式接口首先是一个接口,其次它只有一个抽象类方法再次强调一下Lambda表达式的写法:我们只要匿名内部类中方法的()和里面的参数,然后加->,再加方法代码块中的内容(参数,有就写,没有拉倒)->{代码块}

2023-11-26 11:30:35 382

原创 Java(六)(LocalDate,LocalTime,LocalDateTime,ZoneId时区,Instant,DateTimeFormatter,Duration,内部类,枚举,泛型)

>中也可以是两个数据类型。

2023-11-23 21:54:09 133

原创 Java(五)(Object类,克隆,Objects类,包装类,StringBuilder,StringJoiner,BigDecimal)

String创建的字符串对象是不可变的,对它进行了一些操作之后,它不会变,会将执行操作后的字符串另外创建一个String对象赋给它,就像下面一样,我们执行replace代码想要改变string对象的,但是没有创建一个对象来接收,所以这行代码没有意义,a不会改变,操作后a还是a。Object类是java中的祖宗类,因此,Java中所有的类的对象都可以直接使用object类提供的一些方法。拷贝处的新对象,和元对象中的数据一摸一样(拷贝的只是地址)对象中还包含的对象,不会拷贝地址,会创建新对象。

2023-11-21 23:33:07 116

原创 Java(四)(多态,final,常量,抽象类,接口)

因为我们看见这个猫和狗都有名字,我们可以将猫和狗定义一个父类Animal,父类中写一个成员变量,来存放名字,可以将Animal设置成抽象类,然后子类来实现这个方法重写。上面的意思就是我们现在要体测,老师和学生都要参加,我们在体测这个方法中设置形参的时候,设置父类People数据类型就行了,就可以接收他所有的子类对象。行为多态: 我们每个人都会跑,但是有人跑的慢,有的人跑的快,同一种行为会有不同的表现形式,这就是我们说的行为多态。注意: 接口不能创建对象,接口是用来被类实现的,实现接口的类称为实现类。

2023-11-21 20:04:43 177

原创 Java(三)(static,代码块,单例设计模式,继承)

静态,可以修饰成员变量,成员方法。

2023-11-20 19:03:54 132

原创 Java(二)(String的常见方法,ArrayList的常见方法)

区别一点就是:"....."字符串对象是放到堆内存中的字符串常量池,每一回创建字符串对象的时候,都会在字符串常量池中去找,没有的话,在字符串常量池中创建,有的话,直接将这个的地址返回String对象,但是(1)new出来的东西,是直接放到堆内存中的不管是不是字符串,即便是字符串也是直接在堆内存中开辟空间去存放(2)字符串运算出来的东西也会直接放到堆内存中。(2)只要是"..."方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份,(1)String的对象是不可变字符串对象。

2023-11-19 12:23:51 103

原创 Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)

就是一种特殊形式的类,满足下面的两个要求(1)这个类中的成员变量都是私有的,并且要对外提供相应的get...和set...方法(2)类中必须要有一个公共的无参的构造器// 1.必须私有成员变量,并为每个成员变量都提供get set方法// 有参数构造器// 2. 必须为类提供一个公共的无参数构造器我们创建上面的实体类对象s1.setName("阿衰");

2023-11-18 14:25:47 121

原创 初始MySQL(七)(MySQL表类型和存储引擎,MySQL视图,MySQL用户管理)

我们常见的表有1.不支持事务,也不支持外键,但其访问速度快,对事务完整性没有要求2.存储引擎提供了具有提交,回滚和崩溃恢复能力的事务安全,但是比起MyISAM存储引擎,InnoDB写的效率差一些,并且占用更多的磁盘空间以保存数据和索引3.存储引擎使用存在内存中的内容来创建表,每个MEMORY表只实际对应一个磁盘文件,MEMORY类型的表访问非常快,因为它的数据存在内存中的,并且默认使用hash索引,但是一旦MySQL服务关闭,表中的数据会丢失掉,但是表的结构还在。

2023-11-17 23:05:54 930

原创 初始MySQL(六)(自增长,索引,事务,隔离级别)

多个连接开启各自的事务操作数据库时,数据库系统要负责隔离操作,来保证各个连接在获取数据时的准确性,不设置隔离性,可能会引发: 脏读,不可重复读,幻读,俗话说就是假如说现在有两个人都在操作这个数据库,必须让这两个人操作进行一定的隔离,不隔离会有不好的影响上面的脏读,不可重复读,幻读是啥个意思呢?我们就说大白话了,不说官方的了脏读: 有两个事务,一个事务读了另一个事务还没提交的修改后的数据的时候,这就是脏读不可重复读: 一个事务正在读数据库,读着读着,另一个事务跑过来,对数据库中的数据修改和删除。

2023-11-16 22:57:26 398

原创 初始MySQL(五)(自我复制数据,合并查询,外连接,MySQL约束:主键,not null,unique,foreign key)

(2)

2023-11-13 23:08:21 956 1

原创 初始MySQL(四)(查询加强练习,多表查询)

如果select语句同时包含有group by,havng ,limit,order by ,那么他们的顺序是应用案例:请统计各个部门的平均工资,并且是大于1000的,而且按照平均工资从高到低排序,取出两行记录-- 请统计各个部门的平均工资,并且是大于1000的,并且按照平均工资从高到低排序-- 取出前两行记录LIMIT 0,2;

2023-11-13 00:25:35 199

原创 初始MySQL(三)(合计函数,分组函数,字符串相关函数,数字相关函数,时间日期函数,加密函数,流程控制函数)

select sum(列名){, sum(列名) ... } from tablename [WHERE where_definition]Select count(*) | count (列名) from tablename [WHERE where_definition]SELECT 列1,列2,列3 ... FROM table group by 列 having ...SELECT 列1,列2,列3 ... FROM table group by 列。合计函数 - MAX/MIN。

2023-11-12 19:03:02 262

原创 初始MySQL(二)(表的增删查改)

FROM指定查询哪张表 DISTINCT可选,指显示结果时,是否去掉重复数据。1.创建一张商品表goods(id int, goods_name varchar(10),price double);1.order by 指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名。注意事项: Select指定查询哪些列的数据 column指定列名 *号代表查询所有列。删除全部数据后,表仍然是存在的,想要删除表,我们应该怎么办呢?查看表的结构 : desc 表名;

2023-11-12 00:26:23 169

原创 初识MySQL(一)(创建数据库,查看删除数据库,备份和恢复,创建表,数据类型)

如果D是0,则值没有小数点或分数部分,M最大65,D最大30,如果D被省略,默认为0,如果M被省略,默认为10,建议:如果希望小数的精度高,推荐使用decimal。我们从图中可以看见:num1是float类型的,精度没那么高,num2是double类型,数据是比较高的, num3是decimal更高了。#char(4)是定长(固定的大小),就是说,即使你插入'aa',也会占用 分配的4个字符的空间。,以后在该数据库中创建的表,如果没有指定下图中的字符集和校对,默认为数据库设置的。

2023-11-11 20:16:16 147

原创 初始Linux(五)(定时任务)

任务调度:是指系统在某个时间执行的特定的命令或程序任务调度分类: 1.系统工作:有些重要的工作必须周而复始的执行,如病毒扫描2.个别用户工作: 个别用户可能希望执行某些程序,比如mysql数据库的备份基本语法: crontab [选项]-e 表示写入-r 表示终止任务调度-l 查看当前那些任务调度service crond restart 重启任务调度常用选项: -e 编辑crontab定时任务 -l查询crontab任务 -r删除当前用户所有的crontab任务。

2023-11-11 00:34:46 68

原创 初始Linux(四) 用户管理

shutdown -h now 立即关机shutdown -h 1 1分钟之后会关机shutdown -r now 现在重新启动计算机halt 关机和上面一样reboot: 现在重新启动计算机sync: 把内存的数据同步到磁盘不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写在磁盘中。

2023-11-09 13:26:40 41

原创 初始Linux系统(三)

CTRL+c:强制退出1.命令输入错误时 2.强制退出ctrl+d1.退出账户的登录 2.退出某些特定程序的专属页面注意:不能用来退出vi/vimhistory可以查看历史输入过的命令,我们可以在history中找到历史命令搜素!命令前缀,自动执行上一次匹配前缀的命令ctrl+r 输入内容去匹配历史命令搜索光标移动快捷键ctrl + a 跳到命令开头 ctrl+e,跳到命令结尾 ctrl+ 键盘左键,向左跳一个单词 ctrl+键盘右键 ,向右跳一个单词。

2023-11-05 22:59:16 33

原创 初始Linux(二)(root用户,sudo,用户组,权限,chmod,chowm)

在Linux系统中,拥有最大权限的是root(超级用户)如果说我在根目录下创建一个文件夹,Linux系统会显示没有权限,说明我们普通用户是没有足够大的权力在根目录下创建文件夹的,我们原来创建文件夹都是在home文件中的用户里面创建文件夹,我们想要创建只能成为超级用户退出root,输入即可。

2023-11-04 23:13:26 608

原创 Linux(一)ls,mkdir,touch,cat,more,cp,mv,rm,which,find,grap.wc,echo,反引号,重定向符,tail,vim,软连接,gzip,zip,tar

在Linux系统中,路径之间的层级关系,使用:来表示在windows系统中,路径之间的层级关系,使用:来表示下面这是一个windows系统,我们要访问hello.txt文本文件D表示盘符 \表示层级关系我们在来看一个Linux系统的注意:开头是 / 表示根目录 后面的 / 表示层级关系。

2023-11-04 20:58:47 68

原创 平衡二叉搜索树(AVL树)

我们现在有一个这样的二叉搜索树:像这样的二叉搜索树,我们想找到50这个节点,我们用遍历5次,时间复杂度O(n),这样是不是就违背了我们用二叉搜索树的初衷呢,与其如此我还不如实现一个其他算法呢!!!这就是为什么我们要学习平衡二叉树。

2023-11-01 23:48:26 32

原创 二叉搜索树(BST):创建,插入,删除

(3)第三种情况:删除节点既有左子树又有右子树,我们又两种处理方法,第一种:我们可以将右节点接到左子树的最右的叶节点上,第二种:我们可以将左节点街道右子树的最左的叶节点上。(2)第二种情况:删除的节点仅仅只有一个子树(可以是左子树也可以是右子树),我们直接将该节点删除即可,返回它的左子树和右子树就行了,就像删除上面树中的7节点。2.左节点比父节点小,右节点比父节点大,左节点是左子树上所有的节点,右节点是右子树上所有的节点。我们看看图:下面是我们将6节点删除,将右子树的节点接到了左子树最右边的节点上。

2023-10-31 23:15:07 161

原创 剑指offer(二):关于栈和队列的一些问题

题目描述:用两个栈实现一个队列,队列的声明如下,请实现appenTail和deleteHead,分别完成队列尾部插入节点和队列头部删除节点的功能题解:我们都知道队列是先进先出的数据结构,栈式后进先出的数据结构,我现在要将两个栈去实现队列咱们看看怎么去实现。

2023-10-29 23:22:25 29

原创 剑指offer(一):关于链表的问题

其实大家一开始学习链表的时候删除链表节点都是从头节点一次遍历到要删除的节点,这样做是可以的,就是顺序查找的时间复杂度是O(n),但是我们要将时间复杂度控制在O(1)的范围内,其实还有更快的方法,方法1 O(n):我们要删除链表中的3节点,我们第一种就是,先去找到3节点,然后将2节点的next指向3节点的next就是4节点。

2023-10-28 22:28:20 26

原创 C++:STL(补充:string容器)

字符串比较是按字符串的ASCII码来进行比较,比较的时候先比较第一个,如果第一个字符一样,那就比较第二个字符.........2.用at方式来获取字符。string字符串比较。1.用[]方式来取字符。

2023-10-22 23:05:21 34

原创 C++:STL(下)

1.map中所有元素都是pair2.pair中的第一个元素是key(键值),起到索引作用,第二个元素是value(实值),我们俗称键值对3.所有元素都会根据元素的键值自动排序。

2023-10-22 15:16:38 52

原创 C++:STL(上)

先来说一说v.begin()和v1.end(),v.begin()是表示第一个元素,v.end()是表示末尾位置元素的下一个,这个位置是没有元素的。

2023-10-22 00:21:08 41

原创 数据结构和算法:建立topK(大顶堆或小顶堆)

建立topK是基于堆排序变化而来的,我们建立topK是因为海量数据(正整数)按逆序排序排列的前k个数(topK),因为数据量太大,不能全部存放进内存中,我们只能存进一下部分,但是我现在就想找到前k个最小的数存进我们的空间之中,我们应该怎么办?2.我们将heap的元素建立一个大堆,建堆的过程在我的博客排序(上)详细的讲到过,然后我们将nums中k以后的元素和这个堆顶来比较,因为堆顶是这个堆中最大的元素,只要小于堆顶就有资格进入我们的堆,我们将堆顶和nums对应的元素交换。

2023-10-21 16:09:28 265 1

原创 排序(补充):计数排序,基数排序(详细到逆天)

现在假如说我给一个数组{3,4,1,7,7,5,9,6,2}来进行排序,我们先找到数组中最大的值max,开辟max+1(以0开始)的辅助空间,里面存放0,如下图然后我们遍历数组a[],将数组a[]里的元素在help下标对应的位置,让这个下标对应的位置上的值+1我们在help填入值后是这样的,然后我们需要遍历help中不为0的位置,填入a中覆盖原来的值。

2023-10-20 23:01:37 49 1

原创 算法:找逆序对的问题

给定一个长度为 N 的 int 型数组 a [ 0 , 1 , 2 , . . . , N − 1 ] ,当 i < j 且 a [ i ] > a [ j ] ,则称 a [ i ] 与 a [ j ]是一对逆序对。求该数组的逆序对数量。

2023-10-19 10:01:40 44

原创 算法:水王问题

方法一:两两相消思路:我们先找数组中的第一个作为候选者,然后找它的下一个,如果一样就次数+1,不一样就相消,当遍历完一边这个数组之后,候选者就是我们找的水王方法二:暴力求解发我们将数组中的每个元素都进行计数操作,找到次数大于数组个数一半的数(哈希表)

2023-10-18 22:02:07 30

原创 算法:递归和查找

递归的思想(1)找重复 例如我要写n的阶乘,n的阶乘可以表示n*(n-1)的阶乘,求n-1的阶乘是原问题的重复(规模更小)--子问题i)找到一种划分方式 ii)找到一种递推公式(2)找变化 变化的量应该作为边界(3)找边界 出口 一般我们用if条件来规定出口我们可以将递归分解为:(1)直接量+小规模问题(2)多个小规模问题。

2023-10-17 12:29:14 19 1

原创 算法基础:位运算

运算规则:0&0=0;0&1=0;1&0=0;1&1=1,说白了就是全为1&才为1,有一个是0结果就是0举个例子:4&5 0000 0100&0000 0101=0000 0 100 所以4&5=4:运算规则:0|0=0;0|1=1;1|0=1;1|1=1说白了就是 有一个是1结果就是1,全是0结果才为0举个例子:4|5 0000 0100|0000 0101=0000 0101 4|5=5:运算规则:0^0=0;0^1=1;1^0=1;1^1=0;就是如果相同为0,不同为1:运算规则:~1=0;

2023-10-15 16:55:10 35 1

原创 数据结构:迷宫问题(深度优先搜索)

我们开始走迷宫,其实就是一个深度优化搜索的思想,就和之前的二叉树一样,我们先找完左树之后回溯到父节点,如果有右孩子就会走右孩子的节点,这个迷宫也一样,先按照一条路先走,如果这条路到最后走不通,那就回溯到上一个岔口处,走另一条路,知道找到出口或者都走完了找不到为止,我们画一个图。我们先定义一个s1的栈,不管能不能走通我们先给他进栈,如果几个方向都不能走,就在false之前给他出栈,最后栈中剩下的就是能走到出口的坐标,但是这时候如果我们要打印栈,是反方向的,我们需要一个栈去把我们存放反方向坐标的栈给他倒过来。

2023-10-12 19:49:05 554

原创 C++数据结构:排序(下)(快速排序的三种方法)

我们看代码。

2023-10-09 18:29:20 108 1

原创 C++数据结构:排序(上)

假若说我这边有一个数组为{9,8,7,6,5,4,3,2,1,0}我想将这个数组从逆序变为顺序排列,我们先说说直接插入排序是怎么排的,再来用代码实现我们把扑克牌一张一张的从下面拿到手上,我们一边抽牌一边把手中的牌变为有序,直接插入排序就跟这种情况差不多就是像这样的,我们开始将9看作一个有序的数组,然后我们将8插入进去,插入完之后,我们就将前两个数变成有序的了,然后我们再把8 9看成一个数组,将后面一个元素7插入进去,就变成有序的7 8 9依次进行这样的操作我们就将数组变成有序数组了我们来说说代码。

2023-10-08 17:01:45 69 1

原创 getline(),cin.get(),cin>>,cin.getline()的区别

先来说一个getline()和cin.getline()两者的区别(1)两者属于不同的库中,getline()在类库中,cin.getline在库中(2)用法不同getline()的用法。

2023-10-06 18:08:51 128 1

原创 C/C++结构体

struct 结构体名{结构体成员列表};上面我们设置好了一个结构体之后,然后我们可以创建结构体变量一共有三种创建的方式(1)struct 结构体名 变量名;(2)struct 结构体名 变量名 = {成员1,成员2};(3)定义结构体的时候顺便创建变量。

2023-10-06 15:16:10 23 1

空空如也

空空如也

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

TA关注的人

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