王小花花花!
码龄3年
关注
提问 私信
  • 博客:30,706
    视频:11
    30,717
    总访问量
  • 27
    原创
  • 1,537,649
    排名
  • 67
    粉丝
  • 0
    铁粉

个人简介:吃苦趁现在

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

王小花花花!的博客

查看详细资料
个人成就
  • 获得120次点赞
  • 内容获得35次评论
  • 获得328次收藏
  • 代码片获得1,385次分享
创作历程
  • 15篇
    2023年
  • 12篇
    2022年
成就勋章
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

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

深度挖掘《TCP与UDP》

比如你正在打游戏此时画面卡成ppt,也就是说在传输数据时丢失了。丢包是指在网络传输过程中,数据包因为各种原因没有正确地到达目标地点,而丢失的现象。在传输数据时,利用交换机和路由器每个设备都在承担很多转发任务,每个设备的转发能力是有上限的,当某一时刻某个设备流量达到峰值此时会引起丢包。如果包丢了,此时接受方就接收不到了,也就不会返回ACK,发送方就迟迟拿不到应答报文,此时等待一段时间还没收到,则认为是丢包。此时就会重新发一遍也称为“超时重传发送方对于丢包的判定,一段时间内没有收到ACK。
原创
发布博客 2023.07.23 ·
551 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

网络概念,《TCP/IP五层网络模型》与《数据的网络传输---“封装”与“分用”过程》

首先接收方物理层,网卡收到信号,对信号进行解析,还原成0101这样的数据,从物理层交给数据链路层此时就把该系列的数据当作一个以太网数据帧(此处是从以太网收到数据,就是要交给以太网协议来处理),把帧头和帧尾去掉取出中间的载荷,往上交给网络层,网络层的ip协议解析数据报,也是去掉ip报头,传输给传输层,传输层由udp来解析处理,去掉报头取出载荷把数据交给应用层,根据端口号来区分具体的应用程序,此时该应用程序解析数据报放到程序界面中。发送方发送数据,要把数据从上到下,依次交给对应的层次协议进行封装。
原创
发布博客 2023.07.21 ·
542 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

synchronized工作原理总结

锁升级是发生在运行时期机制,当没有进行线程任务时最开始状态是无锁状态,当线程执行任务时变成偏向锁,此时偏向锁并没有真正的加锁而是对该做个标记,当有其他线程竞争时标记检测到,此时第一个线程立即将锁装换成轻量级锁并且拿到锁,当竞争激烈时,转换成重量级锁。锁粗化:指的是锁的粒度,synchronized代码块,包含代码多少,代码越多,粒度越粗,代码越少粒度越小(串行代码少,并发执行代码多),但是如果某个场景要频繁加锁解锁,就将他转换成一个更粗粒度的锁。
原创
发布博客 2023.07.20 ·
178 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于TCP、UDP网络编程

socket对象:相当于对应到系统的一个特殊文件(socket文件),socket文件并非是对应到硬盘的某个区域,而是对应到网卡,所以,要想进行网络通信必须要有socket文件这样的对象,借助这个对象,才能间接操控网卡。往socket对象写数据,相当于通过网卡发送消息,从这个socket对象读数据,相当于通过网卡接受消息。程序员写网络程序,主要编写的应用层代码,真正要发这个数据,调用下层协议,应用层要调用传输层,传输层给应用层提供一组api称为。Socket:说明此对象是一个socket对象。
原创
发布博客 2023.05.26 ·
1568 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《死锁》与《CAS ABA》问题

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。
原创
发布博客 2023.04.23 ·
485 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

常见的《锁策略》

表示在获取锁失败后,不会立刻放弃CPU,而是快速频繁的再次询问锁的持有状态一旦锁被释放了,就能立刻获取到锁,该类型的锁是轻量级锁的典型实现。总结:乐观锁和悲观锁,导致最终要做的事不一样,悲观锁要做的工作更多一些,效率低一些,乐观锁则会更少一些,效率更高一些(并不绝对)。这两个锁和乐观悲观不一回事,但是确实有一定重合,一个乐观锁可能也是一个轻量级锁,悲观锁也可能是一个重量级锁。synchronized:即属于乐观锁也属于悲观锁,即是轻量级锁也是重量级锁,即是自旋锁也是挂起等待锁。:读写锁维护了两个锁一个。
原创
发布博客 2023.04.23 ·
561 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

手把手带你了解《线程池》

假设,你的线程全是任务全是使用CPU密集型任务,线程数就不能超过核心数(逻辑核心数),如果是IO任务则可以超过核心数。线程池:提前把线程准备好,创建线程不是直接从系统申请,而是从池子里拿,线程不用了还给池子。从系统创建线程:涉及到用户态和内核态的切换,真正的切换是在内核态完成的。池的目的是提高效率,线程的创建虽然比进程轻量,频繁创建,开销也不可忽略。2、提升了任务响应速度,任务来了直接选一个线程执行而无需等待线程的创建。复用线程,平摊线程的创建与销毁的开销代价。2、添加的线程自己负责执行这个任务。
原创
发布博客 2023.04.20 ·
475 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【模拟实现定时器】

定时器是一个闹钟,当时间到就可以执行一个指定代码。标准库 提供的定时器:Timer采用堆(优先级队列)结构即可!
原创
发布博客 2023.04.18 ·
122 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

阻塞队列的概念与使用(实现生产者消费者模型,模拟实现阻塞队列)

低耦合:两个模块之间关联性小,称为低耦合。高内聚:相关联的代码分门别类规制起来,称为高内聚。写代码要追求高内聚低耦合,避免代码牵一发动全身。上图直接通信,耦合度高上图没直接通信采用阻塞队列,耦合度低。
原创
发布博客 2023.04.17 ·
327 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

单例模式你真的懂了吗?

当我们有一个t1线程正在执行:创建内存->内存地址赋给引用时,突然调度给t2线程,t2线程执行时不为null,return走后执行某些操作时,因为我们还没调用构造方法赋值会导致出现问题。解决办法给引用添加volatile,加上后不优化了,也就不会导致指令重排序也保证了内存可见性问题,加锁也可保证了内存可见性。上述代码中:Instance=new Singletonlazy();注:当指令重排序后new操作执行顺序:创建内存->内存地址赋给引用->调用构造方法。单例模式:某个类,在进程中只能有一份实例。
原创
发布博客 2023.04.17 ·
141 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

wait和notify

线程的调度是无序的,但是有些场景,希望线程有序执行join算是一种但是功能有限wait:就是让某个线程先暂停等一等notify:就是让该线程唤醒,继续执行## Waitwait:发现条件不满足时/时机不成熟,就先阻塞等待。主要做三件事:wait必须写到synchronized代码块里面。1.解锁2.阻塞等待3.当收到通知,就唤醒,同时尝试重新获取锁notify:其他线程构造了一个成熟的条件,就可以唤醒。wait和notify是Object的方法notify:进行通知
原创
发布博客 2023.03.28 ·
102 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

什么是线程安全?

在单线程下安全,在多线程情况下不安全的事件。静态方法:属于类的,不依靠实例就可以调用,不能调用其他非静态方法,不能使用this,super关键字。类对象(对象的图纸):java源代码文件->.class文件,JVM就可以执行.class,JVM要想执行这个.class就要把文件内容读到内存中(类加载),类对象,就可以表示这个.class文件的内容,描述了类的详细属性:类名字、属性、方法、继承哪个类、实现哪个接口。
原创
发布博客 2023.03.28 ·
104 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Thread 类的基本用法

由此可见是不可以的。此时我们通过t.start()就又创建出一个线程,线程和线程之间是并发的,每个线程之间又是一个独立的执行流。结论:我们发现两个线程是交替执行的(此处的交替不是严格意义上的交替),每一秒过后先打印谁是不确定的。上述代码的结果是不确定的(可能是先输出XYZ,也可能先执行ABC),因为线程之间是并发执行的。因为run方法是我们线程的入口方法,在此方法中完成我们想要执行的逻辑。让一个线程终止的方法就有一个办法,那就是让线程的入口方法执行完毕。run:线程的入口,线程执行的逻辑。
原创
发布博客 2023.03.24 ·
452 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

进程和线程的概念(超详细)

3、文件描述符表 :进程每次打开一个文件,就会产生一个“文件标识符”(标识了这个被打开的文件),一个进程可能会打开很多文件,对应了一组文件描述符,把这些文件描述符放到一个顺序表这样的结构里,就构成 “文件描述符表”,总结也就是说:进程运行的时候,使用了那些硬盘上的资源。一个进程存在则必定会有一个PCB(若一个进程有多个线程就有多个PCB),PCB是进程存在的唯一的标志, 如果进程消失, 则对应PCB也随之消失,操作系统用PCB来描述进程的基本情况以及运行变化过程。进程比较重量,频繁创建销毁,成本高。
原创
发布博客 2023.03.22 ·
449 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

超硬核!史上最好的数据库总结

数据结构研究的是数据如何组织,对于少量数据不需要组织,但是对于大量数据而言,就需要好好组织以便于后续的增删改查。数据库是管理/组织/保存数据的软件,这些数据也是为了后续进行增删改查操作。
原创
发布博客 2023.03.19 ·
924 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

内部类讲解

因为静态成员变量是属于类的,不是属于方法的(这里我们将内部类想象成是一个方法更容易理解)。4)外部类不能直接访问内部类的成员变量和方法,需要实例化内部类才可访问。4)实例化外部类对象后,能够访问到private修饰的成员变量和方法。2)可以直接调用外部类静态成员和方法,能够定义静态成员和方法。静态内部类不需要要有外部类的对象才能实例化,因为它是静态的。3)若需要使用外部类成员变量和方法需要实例化外部类对象。如果内部类成员和外部类成员名重名时我们该如何处理呢?4)局部内部类能直接访问外部类的成员变量和方法。
原创
发布博客 2022.12.14 ·
261 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

Java实现通讯录

AddPerson类实现了IMainList接口,主要重写方法,增加联系人操作。IMainList是一个接口主要实现通过向上转型调用某个功能。前言:通讯录非常适合前期需要练习语法的小伙伴,效果非常好。定义了联系人数组用于存放联系人信息,和菜单功能。水再浑浊,只要长久沉淀,依然会分外清澈。人再愚钝,只要足够努力,一样能改写命运。联系人包含姓名、电话号、出生年月信息。对联系人进行排序(通过年份排序)显示已有联系人的信息。
原创
发布博客 2022.12.13 ·
4258 阅读 ·
11 点赞 ·
3 评论 ·
105 收藏

类和对象(详细讲解)

类是对一个实体(对象)的描述,主要描述该实体(对象)的属性和功能。如:洗衣机,可以将它看作一个类,具有的属性:品牌,颜色,尺寸等。功能:洗衣服,甩干等功能。//属性 public int age;//功能 System . out . println("正在授课");System . out . println("正在吃饭");} }
原创
发布博客 2022.11.17 ·
268 阅读 ·
6 点赞 ·
2 评论 ·
2 收藏

JAVA代码块讲解

静态变量存放在方法区,静态方法/(变量)只会调用一次其次具有资源共享的作用,注意点:因为共用一个,一个更改全部更改。当实例化两个或多个对象的时,静态变量/方法只调用一次,第二个之后将不再调用。♦️在静态方法中,不能引用成员变量(没有被static修饰的变量)。static修饰的变量/方法不依赖于对象,随着类的加载而存在。♦️在静态方法中,可以引用类变量(static修饰的变量)。➡️类变量可以通过类名.类变量调用,也可以对象.类变量调用。🔸在普通方法中,可以引用类变量和成员变量。static被称为静态。
原创
发布博客 2022.11.10 ·
688 阅读 ·
5 点赞 ·
4 评论 ·
5 收藏

java的数据类型与运算符讲解~

编译生成字节码文件(二进制文件.class) JAVA运行程序,会运行到JVM上。.java为源文件。一次编译,到处运行 class定义的称为类,class后为类名,类名采用大驼峰规范,例如:MaxNum publicclass定义的类名必须和文件名保持一致 public访问修饰限定符基本数据类型分为8种类型。
原创
发布博客 2022.10.29 ·
134 阅读 ·
7 点赞 ·
5 评论 ·
2 收藏
加载更多