自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [JavaEE] HTTP/HTTPS

第一次对服务器发送请求的时候,服务器会返回一个或多个Set-Cookie这样的header,会把cookie通过键值对,设置到电脑硬盘上,因为缓存容易丢,关电脑 掉电都会没,但是并不是谁都可以访问 电脑硬盘,需要获得专门安全机构所颁发的证书才可以。请求中你的 Cookie 字段也包含了一个 gitee-session-n 属性,里面的值和刚才服务器返回的值相同,后续只要访问 gitee 这个网站,就会一直带着这个令牌,知道令牌过期/下次重新登陆,每一次登陆,令牌都是随机生成不一样的。

2024-09-28 21:16:01 1234 8

原创 [JavaEE] IP协议

因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不能直接连接到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址,公网IP必须不同,私网Ip可以重复,不同局域网里的主机IP可以相同。对于这样的虚拟 IP ,不能直接从局域网访问服务器,我们在从内网访问外网的时候,需要公网IP,这个公网IP是唯一的,可以是你路由器提供的,也可以是网关提供。

2024-09-28 21:15:57 661 6

原创 [JavaEE] TCP协议

第一次传的时候花费t1时间,如果长时间没有ack就会发送第二次,花费的时间t2>t1,每次重传的时候时间就会增加,如果重传多次之后都没有ack,这时TCP就会发送一个特殊的数据包。由于TCP首部中,只有一个16位窗口字段,我们所传输的最大上限是固定的,TCP为了解决这个问题,在首部选项中包含了一个窗口扩大因子M,实际窗口大小是 窗口字段的值左移M位;窗口大小:把“发送一次等待一个”改进为“发送一批等待一批”,批量发送数据,不需要等待的数据的量,成为“窗口大小”,批量发送的单位是字节。

2024-09-21 20:12:00 1323 1

原创 [JavaEE] UDP协议

把UDP整个数据报都进行遍历,分别取出每一个字节,往一个 两个字节的变量上进行累加,由于数据可能很多会造成溢出的现象,不过CRC校验和并不在意溢出,会继续相加,知道相加完得到一个结果。UDP会有一个校验和,校验和出错,就会直接丢弃。如果发送端调用一次sendto,发送100个字节,那么接收端也必须调用对应的一次recvfrom,接受100个字节,而不能分开接受。UDP传输最大长度是64K(包含UDP首部),如果我们传输的数据超过64K,接需要在应用层手动的分包,分多次发送,在接收端手动拼接。

2024-09-21 20:11:56 422 3

原创 【JavaEE】初识⽹络原理

⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。我们的⽹络编程主要就是针对应⽤层。网络互连的目的是为了进行网络通信,也就是为了传输数据,更具体一点,是在网络主机中的不同进程之间,基于网络传输数据。分层是为了面向接口变成,定义好使用的规范,使用方不必在意接口的实现逻辑,对于提供方,利用封装的特性,隐藏了实现的细节。这里指的是传统意义上的路由器和交换机,对于现代科技的发展,出现了很多3层或4层的交换机和路由器。

2024-09-15 20:44:10 944 7

原创 【JavaEE】IO基础知识及代码演示

关于 InputStream 的实现类有很多,对于文件的读写 ,我们只需要关心 FIleInputStream,FileInputStream()里可以是 文件路径 或者 文件,下面是两种输出方式的演示。可以看到我们掉用户 scanner 函数阻塞进程,掉用 deleteOnExit() 之后,文件并没有立即删除,只有当我们结束进程的之后才能删除。可以见到,基础的操作并不难,我们可以通过file.createNewFile()来创建新文件,也可以通过file.delete()来删除文件。

2024-09-15 20:43:57 913 2

原创 [JavaEE] 常见锁策略、自实现定时器

在内核态判定当前锁是否已经被占⽤, 如果该锁没有占⽤,则加锁成功,并切换回⽤⼾态。此处的轻量级锁就是通过CAS来实现,通过CAS检查并更新⼀块内存(⽐如null=>该线程引⽤), 如果更新成功,则认为加锁成功,如果更新失败,则认为锁被占⽤,继续⾃旋式的等待。CAS是直接读写内存的,⽽不是操作寄存器,CAS的读内存,⽐较,写内存操作是⼀条硬件指令,是原⼦的。此时每个append的调⽤都会涉及加锁和解锁,但如果只是在单线程中执⾏这个代码,那么这些加锁解,锁操作是没有必要的,⽩⽩浪费了⼀些资源开销。

2024-08-19 17:24:39 782 6

原创 【JavaEE】多线程中安全的集合类、JUC的常见类的基本用法。

出⼀个新的容器,然后新的容器⾥添加元素,添加完元素之后,再将原容器的引⽤指向新的容器。Callable 描述的是带有返回值的任务, Runnable 描述的是不带返回值的任务。• 锁竞争激烈的时候,使⽤ ReentrantLock,搭配 trylock 更灵活控制加锁的⾏为。CopyOnWrite 容器即写时复制的容器,当我们往⼀个容器添加元素的时候,不直接往当前容器添加,⽽是先将当前容器进⾏Copy,• 优化了扩容⽅式::化整为零, 发现需要扩容的线程,只需要创建⼀个新的数组,同时只搬⼏个元素过去。

2024-08-19 17:23:41 767 5

原创 [JavaEE] 浅谈线程池、自实现阻塞队列

⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤ 等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取。threadFactory:创建线程的⼯⼚,参与具体的创建线程⼯作.通过不同线程⼯⼚创建出的线程相当于 对⼀些属性进⾏了不同的初始化设置。DiscardOldestPolicy():如果队列上限,放弃最早的任务,来处理新的线程。CachedThreadPool():设置了非常大的线程数,就可以对线程池不停的扩容。

2024-08-16 23:26:53 975 3

原创 [JavaEE]浅谈单例模式、wait和sleep的区别。

当有多个wait和一个notify的时候,唤醒的线程是随机的,当有多个notify和一个wait的时候,多出来的notify并不会影响进程。懒汉模式不同于饿汉模式,由于不在类加载的时候创建实例,当多线程运行的时候存在几个问题。但是这么做仍然有问题,因为在创建实例的时候,JVM的优化可能让。由于创建操作在加载的时候完成,所以多线程运行的时候不会有线程安全问题。但是这么做,会让多个线程同时进行锁的判断等待,会造成大量的时间浪费。操作容易多个线程同时运行,所以很有可能同时创建了一个实例,而先创建的实力则会消失。

2024-08-16 15:54:54 192 2

原创 【JavaEE】多线程安全问题-死锁等相关问题

涉及多个N个线程M个锁的时候,不构成循环等待是非常重要的,我们需要给每一个锁上一个编号,在所有线程加锁的时候,必须现针对编号小的锁 加锁,后针对编号大的锁加锁。对于可重入锁来说,发现加锁的线程已经被这个锁,锁上了,并不会真正的进行任何的上锁操作,也不会“阻塞操作”,而是直接放行,往下执行代码。<1>线程1拿到A锁之后,不释放A锁的前提下,去拿B锁,线程1拿到A锁的同时,线程2拿到B锁之后,不释放B锁的前提下,去拿A锁,<1>线程抢占原理:线程调度是随机的,线程在调度的时候没有绝对优先的情况。

2024-08-13 21:51:42 918

原创 总结多线程阶段性学习(1)

1>当线程A运行时,线程B可以调用A.interrupt()方法,来设置线程A的中断标志为true,然后线程B立即返回,A的中断标志被设置,thread可以通过Thread.currentThread().isInterrupted(),判断指定线程的中断标志被设置,不清除中断标志。run是一个方法,描述线程执行的任务,也可以叫做线程的“入口”’,线程执行后系统自动调用run方法。:一个进程可以拥有多个前台线程和后台线程,后台线程的结束不能让进程结束,只有前台线程一起结束,进程才能结束。

2024-08-13 11:58:00 817 3

原创 浅谈计算机是如何工作的

在Java代码中如println是Java标准库中提供的函数,JVM中,为了实现println功能就会调用系统提供的API,调用系统API之后程序就会进入内核执行,此时系统就会操作对应的硬件设备。(3)进程上下文:一个进程执行一会之后会从CPU上调度走,一段时间调度回CPU继续执行就需要把之前进程的中间结果(每个CPU寄存器上的值)保存起来,下次使用。进程的概念顾名思义就是正在运行的程序,运行时exe就会被加载到内存中,并且cpu执行里面的指令,而可执行文件没有运行的时候则储存在硬盘上。

2024-08-10 22:12:35 504

原创 Java中的数据类型

java中有八种基本的数据类型,它们分别为:byte(位),short(短整数),int(整数),long(长整数),float(单精度),double(双精度),char(字符),boolean(布尔值)。数据类型分为基本数据类型和引用数据类型,其中基本数据类型包括数值型(byte,short,int等),字符型(char),布尔型(boolean);引用数据类型包括类(class),接口(interface),数组([])。本文章用于复习,写的不好请见谅。

2024-03-07 16:58:29 182 1

空空如也

空空如也

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

TA关注的人

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