自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SQL ①-数据库 || MySQL

就是一个经典的关系型数据库,由于 MySQL 是开源免费并且比较成熟的数据库,因此,MySQL 被大量使用在各种系统中。几乎所有的主流关系数据库都支持 SQL ,适用性非常强。,可以修改成其他的端口号,修改的范围在 1025 - 65535,如果真要修改的话,记得先备份一下,以防修改错了导致服务启动失败。(小型数据库,常用于手机APP,处理简单的数据存储,微信本地的聊天记录的存储就是用的 SQLite),我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。

2025-02-22 15:05:42 1037 1

原创 DDoS技术解析

这里是Themberfue这里是Themberfue今天我们不聊别的,我们聊聊著名的网络攻击手段之一的 DDoS,看看其背后的技术细节。DoS。

2025-02-14 12:08:29 1947 1

原创 JVM ②-双亲委派模型 || 垃圾回收GC

开发者可以继承。

2025-02-12 10:49:48 965

原创 JVM ①-类加载 || 内存区域

这里是Themberfue这里是Themberfue终于结束了网络层的学习,当然,我们学习的知识也只是冰山一角,想要了解更多的知识,还请大家养成主动探索的习惯~~~接下来我们将对 JVM 的一些机制进行简单的讲解,对于 Java程序员来说,本身是不需要关心 JVM 底层所封装好的这些机制的,我们只需编写 Java 代码即可,最直观的体会就是:编写 Java程序时不需要过多的关心内存管理相关的事项,这些都可以交给 JVM 进行控制。

2025-02-10 11:07:23 994

原创 Java 网络原理 ⑤-DNS || 以太网

这里是Themberfue这里是Themberfue在前面的学习中,我们学习了网络层中 IP 协议的一些知识。现在,我们将进入下一层——数据链路层、物理层的学习~~~以太网。

2025-02-07 14:22:26 857

原创 Java 网络原理 ④-路由选择 || 网段划分

为了更好的管理和使用 IP 地址,将一个 IP 地址分为 “网络号” 和 “主机号”,通常前半部分为 “网络号”,后半部分为 “主机号”。

2025-02-05 21:53:06 751

原创 Java 网络原理 ③-NAT || DHCP

动态IP分配:每台需要使用网络的机器的地址并不是每时每刻都是该台机器的,如果该机器未在使用网络,在不分配 IP 地址,此时就会空出一个,把这空出来的给另一个正在使用网络的机器,DHCP 便充当该角色,但 DHCP 的功能并非只有这个。在进入 NAT 前,学计算机的宝宝们有没有这样一个疑惑,我知道你的 IP 地址,你也知道我的,那我和你为什么不能直接通信,比如联机游戏不能直接连接,而是需要听过某些方法才可以一起娱乐的玩耍,这就是 NAT 机制造成的了~~~在租期结束前,客户端可以发起续租请求;

2025-02-03 16:10:03 1336

原创 Java 网络原理 ②-IP协议

当然,IP 协议 的复杂度不必 TCP 协议 的低,但是,我们开发人员一般活跃在 应用层 和 传输层,对于 网络层 及往下的较少接触,除非你从事路由开发等网络层相关的工作。控制数据包的分片,与 TCP 协议 一样,拆包后的数据不一定是按顺序到达的,所以 片偏移 描述了 拆包后的顺序,随后根据这些顺序进行组包操作,将相同标识的组包在一起。,即 TTL 有一个初始值,每经过一个路由器或交换机其值就减一,若减为0后,数据还没到达对端,认为该数据包不能正确传输,则丢弃该数据包。

2025-01-27 20:00:00 1056

原创 UDP/TCP ⑤-KCP || QUIC || 应用场景

所以,两个协议应用的场景不尽相同。但是,TCP 协议因为要保证可靠传输而引入了一些机制,这些机制会导致数据传输效率大幅下降,尽管 TCP 协议作出了很多优化,但其传输速度依然不敌 UDP 协议。是一种为流媒体、VoIP 和在线游戏设计的传输协议,它尝试结合 UDP 的低延迟和 TCP 的拥塞控制特性。是一种在应用层运行的协议,但它可以视为在 TCP 基础上进行优化的一种折中协议,特别适合需要双向通信的场景。通过之前的学习我们知道 UDP 协议 和 TCP 协议 的一些基本的机制,这两的差别就在于。

2025-01-24 20:49:58 1296

原创 UDP/TCP ④-延时应答 || 捎带应答 || 粘包问题 || 异常处理

如果每个发送数据包都要返回一个对应的ACK报文,这样会使传输效率大大下降,再者,如果我接收方等一会再发送ACK报文,接收方这边先处理缓冲区的一些数据包,等一会之后,缓冲区剩余空间大小大概率会变大,那么发送方下一次就可以一次性发送更多的数据了,这将会大大增大传输效率。而捎带应答的优化方式是:如果接收方即将向发送方发送自己的数据,它会将 ACK 信息嵌入到即将发送的数据包中,捎带一同发回,而不是单独发送 ACK 数据包。如果每收到一个数据包就发送一个 ACK,会导致大量小数据包在网络中传输,增加网络开销。

2025-01-24 20:45:00 1368

原创 UDP/TCP ③-拥塞控制 || 滑动窗口 || 流量控制 || 快速重传

这里是Themberfue这里是Themberfue上节我们讲完了TCP协议中保证其可靠性的最重要的三个机制,这节我们将深入更多保证TCP协议可靠性的机制。滑动窗口学过算法的小伙伴应该对滑动窗口这个不陌生,没错,滑动窗口这个算法就是出自TCP协议的机制的。没听过也没事,且听我一一道来。通过前面的章节我们知道,TCP保证可靠性传输的一个是确认应答,也就是发送方发送一个报文,接收方收到后会发送给发送方一个确认报文ACK确认其收到了这个报文。

2025-01-23 15:30:11 1316

原创 UDP/TCP ②-三次握手 || 四次挥手 || 确认应答 || 超时重传

你再说一句摩西摩西摩西,对方若收到了,表示对方确认了你的耳机和麦克风以及对方的耳机和麦克风都没有问题;服务器在收到FIN报文后,是内核控制服务器发送ACK报文表示确认收到FIN报文的,但是服务器发送FIN报文就不是内核控制的,也就是说,三次握手的过程都是内核控制的,但是四次挥手的过程中,并不全是内核控制的。但是,简单的发送确认报文并不能解决可靠性,因为发送方一次性向接收方发送的数据一般不止一条,可能存在多条,而数据在传输过程中通常要经过许多节点,这就导致了,先发送的数据可能会比后发送的数据后到,也就是。

2025-01-20 16:01:24 938 1

原创 UDP/TCP ①-UDP协议报文格式

在向下传输前先将当前数据计算出一个校验和放入这个字段中,对方在收到数据时,再通过一样的方法计算出校验和,与我这个传输前的校验和进行比对,若算出的结果不相同,UDP协议的做法通常是直接丢弃该数据报。❓在互联网早期,64kb的最大长度是绰绰有余的,但是随着互联网的发展,人们发现64kb已经逐渐放不下应用层的完整数据了,比如应用层数据包里由一个较大的图片,这可能超过64kb,如果不作任何处理,数据会被截断,从而使传输的数据发生错误。UDP协议是传输层的一个协议,传输层的上一层是应用层,下一层是网络层。

2025-01-16 15:04:34 1571 1

原创 HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS

确实可以申请或者伪造,但是证书的内容通常有许多唯一标识,标志着该证书的唯一性,就比如域名,黑客申请的域名的正规服务器的域名肯定不能相同,第三方机构肯定能知道你这个域名冲突了,那如果是黑客自己伪造的证书,这当然不需要通过第三方机构,但这也并不行,因为数字签名是通过第三方机构生成的。然而,服务员偷偷打开信,读了内容,还伪造了一份不同的回复信交给你。,将原始的校验和与客户端新算出的校验和进行比对,如果相同,则表明内容没有被篡改,不存在中间人拦截,如果不同,则表明内容被篡改,存在中间人拦截,立刻停止通信。

2025-01-13 21:55:44 1168

原创 HTTP/HTTPS ④-对称加密 || 非对称加密

在当今互联网中,众多数据在互联网上大量传播,某些网站要想实现某些业务,难免需要传输客户的敏感信息,但是互联网的传输的透明的,是很容易被黑客从中拦截的;所以,保证用户敏感信息的隐私性和安全性,需要对传输的数据进行加密,从而让黑客难以破解其中的数据信息。之后的数据都通过这个密钥进行加密传输,任意一方在传输数据前都用这个密钥进行加密,拿到数据的那一方就通过这个密钥对传输来的数据进行解密。我们接下来继续讲解。通过对传输的数据进行加密,尽管黑客拿到了数据,那也是加密后的数据,不进行解密的话是无法查看其中的内容的。

2025-01-12 16:44:28 1083

原创 HTTP/HTTPS ③-HTTP状态码

通常表示服务器拒绝你访问,可能你访问的这个资源它是私人的,只能某个或某些用户特定浏览的。某些网站的域名不可能是一成不变的,是会更改的,当更改域名,用户再通过旧域名访问就会访问失败了,这时候重定向就非常重要了,将通过旧域名访问的用户重定向到新域名,这样,用户就不会出现访问失败了,从而减少了用户的流失。出现这个错误,就是服务器那边出问题了,和你没啥关系,可能是服务器宕机了,服务器炸了,这个网站跑路了........没什么好说的了,最喜欢的一集,但也不一定,有时候代码跑起来了,但是逻辑错了也是很难受的😭。

2025-01-09 11:59:41 940

原创 HTTP/HTTPS ②-Cookie || Session || HTTP报头

运营商(ISP)劫持就是当时比较常见的,所有互联网服务都要经过运营商的设备,所以运营商就有机会对这里面的数据进行修改,运营商也要恰钱的啊,运营商当然也会投放广告,运营商便更改成了运营商的 Referer,从而运营商这边的点击量就 "多" 了。host的值的内容URL的主题内容大差不差,不过,在传输URL时是不会对URL加密的,被加密的一般是Header和Body的内容,所以服务器在收到请求后,也可以做一个检验,检验host的内容和URL的内容是否发生改变。时,提高浏览器的兼容性。

2025-01-06 17:43:17 1360 2

原创 HTTP/HTTPS ①-代理 || URL || GET/POST || CDN

代理在网络通信中起到“中间人”的作用,不同类型的代理适用于不同场景。抓包工具通过扮演代理角色,可以全面了解和控制通信数据流,广泛应用于开发、调试和安全分析。Fildder这里我们使用 Fildder 这个工具进行。

2025-01-03 19:27:23 1003

原创 Java 网络原理 ①-IO多路复用 || 自定义协议 || XML || JSON

然后你就开始等他们做了,小吃摊A老板A做完后,你去拿,小吃摊B老板B做完后,你去拿,小吃摊C老板C做完后,你去拿;你到了小吃摊A跟老板A说要一份晚餐,你等待老板A做完后,立刻去小吃摊B跟老板B说要一份晚餐,你等待老板B做完后,立刻去小吃摊C跟老板C说要一份晚餐,你等待老板C做完后;✨一般来说,绝大部分客户端,大部分时间都是沉默的,虽然连接了,但不会一直发送请求,此时工作线程等待就行了,等到客户端发来请求后,工作线程处理就OK了;的,当程序等待一个 IO 操作完成时,其他的 IO 操作会被挂起。

2024-12-28 19:45:53 954

原创 Java 网络编程 ②-TCP Socket

对于 TCP协议 来说,需要先处理和客户端发来的连接,通过读写 clientSocket,与客户端进行通信,如果没有客户端发起连接,那么就会阻塞在 accept,这里的阻塞和多线程的阻塞又本质区别。如果只是一个线程处理连接和读取请求两个工作,由于服务端线程会在 hasNext() 那里阻塞,就不能处理下一个客户端的连接了,所以。,这里的主线程处理与客户端的连接,连接到一个客户端后,就创建一个线程来处理客户端发送来的请求。在写入时,并不是直接写入到网卡的,而是写入到缓冲区,故在写完时,若一直没有读到请求,

2024-12-24 12:27:53 1216

原创 Java 网络编程 ①-TCP || UDP || Socket

在实际的网络通信过程中,需要经过需要节点或路由,那么所发送的数据不可能百分百到达对方,在传输途中,数据可能会因为某些不可抗力因素导致比特翻转(就是1变成0,0变成1),从而导致解析出的数据出现错误,也有可能整个数据在传输的过程丢失,也就是我们常说的 "丢包";:连接通常指的不是物理上的连接,而是逻辑上的连接,并不是两个事物通过链条连接在一起,而是通过某种抽象的东西将这两个事物所连接起来,使其有关系;文件要关闭,就必须考虑清楚这个文件对象的生命周期,此处的 socket 对象,伴随整个 UDP服务器;

2024-12-20 16:53:28 1028

原创 Java 网络初始-OSI七层网络模型 || 网络通信 || 五元组 || 协议分层

这里是Themberfue这里是Themberfue网络通信在早期的计算机中,每个计算机都是相互独立的,若想协同进行某一项目的开发时,必须等待另一台计算机的停止,本台计算机才能继续开发,这样的开发显然是非常缓慢的。随着时代的发展,越来越需要多台计算机之间可以互相通信,共享数据或者软件,即以多个计算机协同工作来完成业务,就有了网络互连。数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,因此也称为。根据网络连接的规模不同,可以将其分为和局域网。

2024-12-18 17:28:24 1382

原创 计算机网络从诞生之初到至今的发展历程

前言"上网",相信大家对这个动词已经不再陌生,网 通常指的是网络;在 2024 年的今天,网络已经渗透到了每个人的生活中,成为其不可或缺的一部分;你此时此刻在看到我的博客,就是通过网络进行的;想要进入网络的发源之初,我们先把时间拨回到 20 世纪 40 年代时代背景在第二次世界大战落下帷幕之后世界格局迅速演变,,为了避免S3赛季开打,并且尽可能在相对和平的状态下,争夺全球的话语权。1946年3月5日,英国前首相,二战三巨头之一的,于美国富尔顿城威斯敏斯特学院发表了。

2024-12-13 20:38:04 2121 2

原创 Java 文件IO ③ (完结)-Reader || Writer || 缓冲区

Reader 和 Writer 则是以 字符流 对文件进行读写的。

2024-12-12 12:31:05 560

原创 Java 文件IO ②-流(Stream) || File || mkdir || InputStream || OutputStream

在计算机中,

2024-12-11 17:02:32 908

原创 Java 文件IO ①-文件 | 绝对路径 | 相对路径 | 文本文件 | 二进制文件 | File

以可读的字符形式存储数据,使用特定的编码格式(如 ASCII 或 UTF-8)。

2024-12-07 22:40:29 872

原创 Java 多线程 ①④ (完结)-信号量 || CountLatch || 写时拷贝 || 分段锁

信号量Semaphore。

2024-12-06 20:24:53 921

原创 Java 多线程 ①③-CAS || 原子类 || Atomic || ABA问题 || Callable || ReentrantLock

CASCAS 的 Compare-And-Swap(比较并交换)的缩写是多线程并发操作中的一个关键操作,保证了数据的一致性,又确保了线程不会因为阻塞影响执行效率CAS 本质是 CPU 的一条指令,所以操作上是原子的~CAS 操作会比较某个值是否等于预期值,如果某个值等于预期值,就将该值更新为新值;如果不相等,说明该值已经被其他线程修改过,CAS 操作便会失败~address:表示当前内存中的值的地址,也就是需要被更新的值的地址。

2024-12-04 23:42:53 614

原创 Java 多线程 ①②-常见的锁策略 || 锁升级 || 锁消除 || 锁粗化

悲观锁 => 重量级锁 => 挂起等待锁。

2024-12-01 20:43:30 856

原创 Java 多线程 ①①- 实现简单的线程池 || 定时器 || 简单实现定时器 || 时间轮实现定时器

额外创建一个线程来执行任务里的逻辑。

2024-11-28 20:49:26 972

原创 Java 多线程 ⑩-TGA黑猴投票喵~ || 线程池 || ThreadPoolExecutor || 拒绝策略 || Executors

线程池"常量池"多线程虽然极大程度地解决了多进程的创建与销毁所带来的时间开销,但随着时代的发展,频繁地创建与销毁线程,也是一件开销很大的事在运行之初,就先把线程创建好,放到一个数据结构里存着,后续需要用的时候,从这里取一个出来执行任务,执行完毕后再放回去为什么我们认为直接创建线程的开销和从池子里取线程的开销更大呢?"用户态""内核态"一个操作系统其实就是 "内核" 和 "配套的应用程序";内核包含操作系统的各种核心功能:管理各种硬件,给软件提供稳定的运行环境。

2024-11-25 23:09:33 701

原创 Java 多线程 ⑨-生产者-消费者模型 || 阻塞队列 || 模拟实现BlockingQueue

这里是Themberfue这里是Themberfue阻塞队列阻塞队列阻塞队列是线程安全的,还有其阻塞特性当队列放满时,如果此时还有线程想要入队列时,那么这个操作就会阻塞,直到有元素出队列为止但队列为空时,如果此时还有线程想要出队列时,那么这个操作也会阻塞,直到有元素入队列为止生产者-消费者模型餐厅中的点餐和上菜过程在餐厅中,顾客点单和厨师制作菜品,有源源不断地顾客点单,同时厨师也一丝不苟地制作菜品以服务顾客我们将顾客类比为 "生产者",将厨师类比为 "消费者"

2024-11-18 23:29:29 652

原创 Java 多线程 ⑧-设计模式 || 单例模式 || 饿汉模式 || 懒汉模式 || 指令重排序

单例模式。

2024-11-15 17:48:11 705

原创 Java 多线程 ⑦-内存可见性 || volatile || JMM || wait notify notifyAll

在上一节中,我们讨论了死锁的概念,产生的场景 ,产生的必要条件......内存可见性。

2024-11-12 19:13:27 952

原创 Java 多线程 ⑥-死锁 || 构成死锁的条件 || 死锁总结 || Java标准库的线程安全类

死锁一个线程,一把锁,同时加两把锁。

2024-11-10 11:35:01 866 1

原创 Java 多线程 ⑤-线程安全问题 || 锁 || synchronized

通过使用锁,对先前的 count++ 操作就可以将其变为原子的,在加上锁后,count++ 的三个指令就会完整执行完毕后才可能被调度走。并不是加上了 synchronized 就一定保证线程安全,得要正确地使用锁,在该使用的时候使用锁,在对的地方使用锁。Java中解决线程安全问题的最主要的方案就是给代码块加锁,通过加锁,可以让不是原子的操作,打包成一个原子的操作。,这些指令的集合统称为指令集,指令集有两种,一种是..... (再讲就串台了,这是计算机组成原理的知识哦)

2024-11-08 00:04:41 787

原创 Java 多线程 ④-线程状态 || join,sleep || 线程安全问题 详解

这里是Themberfue这里是Themberfue一个Thread对象,只能 start 一次sleep。

2024-11-04 20:48:21 913

原创 Java 多线程 ③-Thread || Runnable

Thread。

2024-10-30 16:20:29 986

原创 Java 多线程 ②-Thread || Runnable

这里是Themberfue这里是Themberfue多线程· Java标准库中提供了Thread类,以程序员们编写多线程代码,我们可以查看官方文档进一步了解Thread的特性以及提供的接口。· 类似于Sytem类,Math类以及某些超类等,Thread也是Java.lang在包下,是程序运行时默认导入的。Thread。

2024-10-26 20:25:12 615

原创 Java 多线程 ①-进程 || 线程 || 多线程

但对于线程来说,只是第一个线程创建时(随着进程的创建而创建)申请资源,后续再次创建线程时,不再涉及到申请资源的操作,同理,只有最后一个线程销毁(随着进程的销毁而销毁)才释放资源。这里的人也就是一个线程,两个线程在一个进程里同时工作,效率也会大大加大,也不需要消耗过多的资源。我们都知道,这样由一个人吃完,效率是非常低效的,也就是好比单进程开发,效率是远比多进程低的。线程与进程一样,所记录的数据无非就是,调度相关,状态,优先级,记账信息,上下文。再比如:一个人没用吃的想吃的,非常生气,直接掀桌不干了,

2024-10-24 12:54:46 862

空空如也

空空如也

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

TA关注的人

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