小晓媛
码龄1年
关注
提问 私信
  • 博客:40,884
    社区:5
    40,889
    总访问量
  • 62
    原创
  • 30,649
    排名
  • 511
    粉丝
  • 0
    铁粉

个人简介:一名大学学生

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
  • 加入CSDN时间: 2023-10-31
博客简介:

2301_80785428的博客

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    574
    当月
    1
个人成就
  • 获得800次点赞
  • 内容获得13次评论
  • 获得711次收藏
  • 代码片获得104次分享
创作历程
  • 61篇
    2024年
  • 1篇
    2023年
成就勋章
TA的专栏
  • 贪心算法
    5篇
  • 线程相关练习
    2篇
兴趣领域 设置
  • 编程语言
    javac语言
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

网络原理-初识

独立模式:计算机之间相互独立。每个终端A、B、C各自持有客户端数据随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即可以多个计算机协调工作来完成业务,就有了网络互连。网络互连:将多台计算机连接在一起,完成数据共享。数据共享的本质是,即计算机通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以分为和。。局域网主机之间能够方便的进行通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。局域网组件网络的方式有很多:(1)基于网络直连(2)基于集线器组建。
原创
发布博客 2024.11.30 ·
897 阅读 ·
25 点赞 ·
0 评论 ·
10 收藏

文件内容的读写

java中针对文件内容的操作主要是通过一组“流对象”来实现。计算机中的流和水流非常相似,如果要节100ml水我们可以一次就接完,也可以分2次一次接50ml,分10次一次接10ml等等,文件读写也是类似的,从文件读取100字节数据,1次把100字节都读完,分2次一次读50字节,分10次一次读10字节等等可以有很多种方式。因此计算机中针对读写文件也是使用流(stream)词,流是操作系统层面的术语和语言无关各种编程语言操作文件都叫流。java中提供了一组类表示流。
原创
发布博客 2024.11.26 ·
965 阅读 ·
20 点赞 ·
0 评论 ·
29 收藏

贪心算法 day07

链接:. - 力扣(LeetCode)题目思路: 代码:2.跳跃游戏 II链接:. - 力扣(LeetCode)思路: 代码:3.跳跃游戏1链接:. - 力扣(LeetCode)思路:和上一题差不多,只是当无法到达最后一下标时left会大于right无法进入循环返回false
原创
发布博客 2024.11.20 ·
430 阅读 ·
11 点赞 ·
0 评论 ·
6 收藏

文件操作和Io

我们来看看file类中常见属性、构造方法和方法构造方法中,参数String文件的路径使用绝对路径和相对路径均可pathSeparator是分隔符getPath()可能返回的是相对路径也可能是绝对路径。
原创
发布博客 2024.11.20 ·
884 阅读 ·
14 点赞 ·
0 评论 ·
28 收藏

线程安全的集合类(ArrayList、Hash)

在实际开发中,用到的Hash表很可能比较大(桶有很多个),即使多线程访问上述的Hash表,同一时刻两个线程恰好访问同一个链表的可能性概率比较低。利用的是写时拷贝思想。当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行copy,复制出一个新的容器,复制过程中如果有其他线程在读就直接读取旧版本的数据,虽然复制过程不是原子的但是提供的是旧版本不影响其他线程读取,然后在新的容器添加元素同时把引用由旧数组指向新数组。1.发现需要扩容的线程,只需创建一个新的数组,同时只搬几个元素过去。
原创
发布博客 2024.11.16 ·
842 阅读 ·
10 点赞 ·
0 评论 ·
9 收藏

JUC的常见类

callable接口和Runnable接口是并列关系,但是Runnable返回值是void重写的是run方法更注重执行的过程而不是结果,而callable重写的是call方法,call是有返回值的返回值的类型是泛型参数。
原创
发布博客 2024.11.16 ·
920 阅读 ·
15 点赞 ·
0 评论 ·
9 收藏

贪心算法day 06

思路:计算每个字符个数如果是偶数个那么肯定可以组成回文串,如果是奇数个就会有一个无法组成回文串,但是在最中间还是可以有一个不是成队的字符这个字符就从多的奇数中随机取一个就好。这里使用模拟hash的方式来实现每个字符的计数。
原创
发布博客 2024.11.14 ·
406 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

多线程进阶

CAS上面的代码不属于原子的,但是CAS是一个原子的硬件指令完成操作。我们可以试着理解这份伪代码,其中的address指的是内存地址,expectValue指的是寄存器的值,swapValue是另一个寄存器的值。先判断内存中的值和寄存器1的值是否一致,如果一致就把内存值和寄存器2进行交换,但是基本上只是关心交换后内存的值,不关心寄存器2的值,这里也可以理解成赋值。
原创
发布博客 2024.11.11 ·
1196 阅读 ·
32 点赞 ·
0 评论 ·
13 收藏

synchronized总结

synchronized确保同一时间只有一个线程可以进入同步块或同步方法,避免了多线程并发访问共享资源的冲突问题。下面我们来看一个例子,两个线程获取同一个锁,锁被占用后,剩下的那个线程就会进行阻塞等待。由结果我们可以知道,线程一释放锁后,由唤醒线程二才能获取到锁。
原创
发布博客 2024.11.11 ·
865 阅读 ·
23 点赞 ·
0 评论 ·
20 收藏

贪心算法day05(k次取反后最大数组和 田径赛马)

【代码】贪心算法day。
原创
发布博客 2024.11.10 ·
683 阅读 ·
4 点赞 ·
0 评论 ·
2 收藏

贪心day04(买卖股票的最佳时机)

思路:我们其实只需遍历一篇就可以解决这个问题。首先我们定义一个min为无穷大值,再遍历只要有数字比min跟小我们就更改min的值就好,此时我们只需要找出prices[i]-min的最小值就好。思路:从下面的曲线图我们可以看出,只要是上涨的地方我们就进行买卖。2.买卖股票的最佳时机二。
原创
发布博客 2024.11.09 ·
293 阅读 ·
10 点赞 ·
0 评论 ·
1 收藏

贪心算法day03(最长递增序列问题)

思路:我们只需要设置两个数进行比较就好。设a为nums[0],b 为一个无穷大的数,只要有比a小的数字就赋值a,比a大的数字就赋值b,如果有比b大的数字说明可以组成一个三元子序列直接返回true。
原创
发布博客 2024.11.08 ·
465 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

贪心算法day02(最长递增子序列)

目录1.最长递增子序列方法一:动态规划方法二:贪心+二分查找1.最长递增子序列链接:. - 力扣(LeetCode)方法一:动态规划思路:我们定义dp[i]为最长递增子序列,那么dp[j]就是在小于i范围内的最长子序列,最长子序列最少为1,所以dp数组初始化为1.代码实行步骤如下:这种情况下时间复杂度为O(n*2) ,空间复杂度为O(n)具体实现如下:class Solution { public int lengthOfLIS(i
原创
发布博客 2024.11.05 ·
449 阅读 ·
10 点赞 ·
0 评论 ·
1 收藏

定时器的实现

在这样的情况下我,如果们可以创建多个线程,负责执行这里的队列中的任务,一个负责执行这里的队列中的任务,一个负责扫描,扫描到需要执行的任务,添加到另一个线程池的任务队列中,由多个线程负责执行。2.如果当前时刻为14:00 队首任务时刻为14:30 ,本来是要wait30分钟的但是十分钟过去了恰好有一个新的任务添加来了,调用了schedule 添加了14:20的新任务来执行,如果是sleep那么无法被唤醒意味着14:20这个任务无法执行。定时器是软件开发中的一个重要组件类似一个闹钟,时间到了就执行一些逻辑。
原创
发布博客 2024.10.31 ·
1090 阅读 ·
21 点赞 ·
0 评论 ·
24 收藏

贪心算法day 01

注意点:double t = queue.poll()会将queue队列数字减少一个后再除以2,queue.offer(queue.poll()/ 2)思路:把数子画成波峰波谷 左右端点以及波峰波谷就是我们要找的最大摆序列。问题:如何表示波峰波谷以及什么情况下添加最大摆动序列。主要问题:如何将数字改为字符串以及排序。思路:创建大跟堆将最大的数进行减半。
原创
发布博客 2024.10.27 ·
483 阅读 ·
4 点赞 ·
0 评论 ·
5 收藏

Thread类阻塞队列的用法练习

所谓的死锁就是线程一拥有锁1,线程二拥有锁2,双方在拥有自身锁的同时尝试获取对方的锁,最终两个线程就会进入无线等待的状态,这就是死锁。给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.实现代码, 能够创建两个线程, 对这个数组的所有元素求和.需要让他们同时启动,并按 c,b,a的顺序打印。有三个线程,线程名称分别为:a,b,c。有三个线程,分别只能打印A,B和C。每个线程打印自己的名称。
原创
发布博客 2024.10.27 ·
353 阅读 ·
5 点赞 ·
1 评论 ·
9 收藏

阻塞队列和线程池

阻塞队列是一种特殊的的队列,也遵守先进先出的原则。
原创
发布博客 2024.10.27 ·
934 阅读 ·
22 点赞 ·
0 评论 ·
14 收藏

Java 线程的几种状态

java中的线程的生命周期可分为6种状态。
原创
发布博客 2024.10.24 ·
307 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

线程安全问题以及单例模式

在这段代码中,Sc.next()是带有阻塞的操作等待用户在控制台输入,notify这里同样也是需要先拿到锁再进行notify(属于java给出的限制),wait操作必须搭配锁来进行因为wait需要释放锁,但是notify操作原则上说不涉及加锁的操作但是java也是强制要求notify搭配synchronized,线程、锁都是操作系统本身支持的特性,wait和notify在操作系统中也有原生的对应的api,原生api中wait必须搭配锁来使用notify则不需要。但是我们不是在单例模式下只能实例一次的吗?
原创
发布博客 2024.10.22 ·
878 阅读 ·
22 点赞 ·
0 评论 ·
24 收藏

关于线程安全

按照之前对锁的设定,第二次加锁的时候就会产生阻塞等待,直到第一次的锁被释放,才能获得到第二个锁,但是释放第一个锁也是由该线程完成的,结果线程躺平了,啥也不干,也就无法进行解锁这样的操作,这时就会产生死锁的现象。但是在java中为了很好的解决这些问题,在synchronized中引入了可重入的概念,但是在c++中不具有这样的特性很容易就产生死锁的现象。
原创
发布博客 2024.10.19 ·
921 阅读 ·
34 点赞 ·
0 评论 ·
8 收藏
加载更多