- 博客(20)
- 收藏
- 关注
原创 TCP、IP 、HTTP——Http协议
HTTP协议HyperText Transfer Protocol, 超文本传输协议TCP/IP 协议族 ,HTTP 属于它内部的一个子集 ,如下图:应用层、 传输层、 网络层和数据链路层。应用层决定了向用户提供应用服务时通信的活动。FTP(File Transfer Protocol, 文件传输协议) 和 DNS(Domain Name System, 域名系统) 服务就是其中两类。在传输层有两个性质不同的协议: TCP(Transmission ControlProtocol, 传输控制
2022-03-09 13:24:34
2391
原创 TCP、IP 、HTTP——UDP协议
UDP协议UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作都会产生一个UDP数据报,并组装成一份待发送的IP数据报,这与面向字节流的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系(主要是在传输层就进行分段了,因此不会受IP分片的影响)。UDP的首部一共8个字节UDP的校验和至于UDP的校验和,这里注意下区别就好了,UDP对首部和数据部分都进行校验,而IP首部的校验和仅对IP的首部进行校验,顺带提下TCP,TCP的校验和也是对首部和数据部分都进行校验,
2022-03-09 13:18:06
514
原创 TCP、IP 、HTTP——深入学习TCP协议
TCP协议简介TCP协议,即传输控制协议,与UDP协议同处于传输层,使用相同的网络层,但TCP提供了一种可靠的、面向连接的数据传输服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输。TCP通过以下方式提供可靠性:1、应用程序被分割成TCP认为最合适发送的数据块。这点与UDP完全不同,应用程序产生的UDP数据报长度将保持不变,加上IP首部后,才会进行IP分片。2、当TCP发出一个报文段后,它会启动一个定时器,等待目的端发确认收到这个报文段,如果没能及时收到该确认信息,则
2022-03-09 13:16:50
2574
原创 Spring系列——深入学习AOP
AOP全称:Aspect-Orented Progranmming 面向切面编程 或 面向方面编程作用:对系统需求进行模块化组织,简化系统需求与实现之间的对比,是系统更具模块化。通俗描述:不修改源代码的方式,在主干功能里添加功能Java实现AOP机制 引入动态代理(Dynamic Proxy)机制,为相应接口动态生成对应的代理对象。实现机制:代理模式:AOP术语①JoinPoint(连接点):目标对象中,所有可以增强的方法,就是spring允许你是通知(Advice)的地方,那可就真多
2022-03-09 13:11:51
322
原创 Spring系列——深入学习IOC
Ioc基本概念全称: Inversion of Control (IOC) 名为:控制反转 轻量级容器控制权转移,将我们创建的对象的方式反转了,以前的对象的创建时由开发人员自己维护,包括依赖对象也是自己注入,使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序创建(Ioc Service Provider)别名 :DI 依赖注入 Dependency Injection 可以看作IOC注入的一种
2022-03-09 13:07:25
315
原创 Linux系列——深入学习Shell
第10章shell基础知识shell是系统跟计算机系统硬件交互时使用的中间介质,是系统的一个工具。10.1shell10.1.1记录历史的命令!!:连续两个!表示执行上一条指令!n:n代表数字,表示执行历史命令中的第n个指令!字符串:执行命令历史中最近一次以pw开头的命令。10.1.2tab自动补全命令和文件名10.1.3 alias[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YbkWDJm-1646658749083)(C:\Users\崔常菲\Ap
2022-03-09 12:57:52
194
原创 Linux系列——初学CentOS
第2章 安装CentOS2.3第一次亲密接触2.3.1命令行登录localhost login:输入root并回车,然后输入ROOT密码,进入Centos系统。2.3.2设置网络dhclient :自动获取一个IP地址ip addr: 查看ip地址,有两个ip:127.0.0.1是回环地址,用来与自己通信,还有一个就是刚刚通过dhclient获取的地址。ping -c 4 URL:检测网络的工具2.3.4快捷键Ctrl+C:终止当前命令Tab:自动补全命令Ctrl+D:退出对当前中断
2022-03-07 21:10:20
638
原创 JVM系列——内存
1、运行时的数据区域 程序计数器(Program Counter Register)线程私有一块较小的内存空间,看作是当前线程所执行的字节码的行号指示器字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令若线程正在执行的是一个Java方法, 这个计数器记录的是正在执行的虚拟机字节码指令的地****址; 如果正在执行的是本地(Native) 方法, 这个计数器值则应为空(Undefined )Java虚拟机栈 ( Java Virtual Machine Stack)
2022-03-07 21:09:02
144
原创 JVM系列——垃圾回收器
垃圾收集(Garbage Collection, 简称GC )1、判断对象存活算法引用计数法占用一些额外的内存空间来进行计数。在对象中添加一个引用计数器, 每当有一个地方引用它时, 计数器值就加一; 当引用失效时, 计数器值就减一; 任何时刻计数器为零的对象就是不可能再被使用的。该方法缺陷:对于两个对象相互引用,该算法则无法判断是否引用结束,陷入死循环。Hotspot不采用此算法可达性算法通过一系列的垃圾收集器根节点作为其实结点集,从该节点开始,根据引用关系向下搜索,如果没有任何引用链(搜索
2022-03-07 21:08:53
231
原创 JVM系列——虚拟机监控、故障处理工具
第四章 虚拟机性能监控、故障处理工具1、基础故障处理工具jps:虚拟机进程状况工具可以列出正在运行的虚拟机进程, 并显示虚拟机执行主类( Main Class, main()函数所在的类) 名称以及这些进程的本地虚拟机唯一ID( LVMID, Local Virtual Machine Identifier) 。命令格式:jps [ options ] [ hostid ]eg: jps -loptions:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X
2022-03-07 21:08:40
244
1
原创 JVM系列——调优案例分析与实战
1、案例分析大内存硬件上的程序部署策略部署方式:1) 通过一个单独的Java虚拟机实例来管理大量的Java堆内存。2) 同时使用若干个Java虚拟机, 建立逻辑集群来利用硬件资源。集群间同步导致的内存溢出一个基于B/S的MIS系统,硬件为两台双路处理器、8GB内存的HP小型机,应用中间件是WebLogic 9.2,每台机器启动了3个WebLogic实例,构成一个6个节点的亲合式集群。堆外内存导致的溢出错误在处理小内存或者32位的应用问题时,除了Java堆和方法区之外,还要考虑直接内存:可通
2022-03-07 21:08:33
250
原创 JVM系列——类文件及类加载
第六章 类文件结构1、Class类文件的结构Class文件格式采用一种类似于C语言结构体的伪结构来存储数据, 这种伪结构中只有两种数据类型: “无符号数”和“表”。无符号数属于基本的数据类型, 以u1、 u2、 u4、 u8来分别代表1个字节、 2个字节、 4个字节和8个字节的无符号数, 无符号数可以用来描述数字、 索引引用、 数量值或者按照UTF-8编码构成字符串值。表是由多个无符号数或者其他表作为数据项构成的复合数据类型, 为了便于区分, 所有表的命名都习惯性地以“_info”结尾。 表用于描述
2022-03-07 21:08:20
146
原创 JVM系列——字节码
第8章 虚拟机字节码执行引擎1、运行时栈帧结构Java虚拟机以方法作为最基本的执行单元, “栈帧”(Stack Frame) 则是用于支持虚拟机进行方法用和方法执行背后的数据结构, 它也是虚拟机运行时数据区中的虚拟机栈(Virtual MachineStack)的栈元素。 栈帧存储了方法的局部变量表、 操作数栈、 动态连接和方法返回地址等信息 。栈帧的结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzhBlnlc-1646402102747)(C:\Users\
2022-03-07 21:07:57
127
原创 Redis系列——深入理解复制集群
第15章复制在redis命令中,用户可以通过slaveof命令或者 slaveof 选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务(master)器,而对主服务器进复制的服务器则被成为从服务器(slave)127.0.0.1:123456> slaveof 127.0.0.1 6379进行复制中的主从服务器双方的数据库将保存相同的数据,概念上将这种现象称为“数据库状态一致”,或者简称”一致“15.1旧版本复制功能的实现复制功能分为sync同步和命令传播两个操作:同
2022-03-07 21:07:35
529
原创 Redis系列——深入理解数据库
第9章 数据库9.1服务器中的数据库每个redisDb结构代表一个数据库struct redisServer{ //一个数组保存着服务器中所有数据 redis *db; //服务器的数据库数量 int num; // 记录RDB保存条件的数组saveparam *saveparams;// 修改计数器,上一次成功执行SAVE或BGSAVE后数据库状态的修改次数long long dirty;// 上一次成功执行SAVE或BGSAVE的时间,UNIX时间戳ti
2022-03-07 21:07:26
408
原创 Redis系列——深入理解对象
第2章简单动态字符串 Redis中,涉及可以被修改的字符串值时,都用简单动态字符串(simple dynamic string,SDS)来实现。比如包含字符串值的键值对在底层的实现。C字符串(C语言中传统字符串,以空字符串结尾的字符数组)则用于无须对字符串进行修改的地方。set msg "hello world"rpush fruits "apple" "banana" "cherry" SDS还被用作缓冲区,比如AOF模块中的AOF缓冲区,客户端状态中的输入缓冲区。2.1SDS定义str
2022-03-07 21:07:14
177
原创 并发编程系列—深入理解管程
共享模型之管程临界区 Critical Section一个程序运行多个线程本身是没有问题的问题出在多个线程访问共享资源多个线程读共享资源其实也没有问题在多个线程对共享资源读写操作时发生指令交错,就会出现问题一段代码块内如果存在对共享资源的多线程读写操作,称这段代码块为临界区竞态条件 Race Condition多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件3.1 synchronized阻塞式的解决方案:synchronized,L
2022-03-04 21:54:27
135
原创 并发编程系列—深入理解内存
4、共享模型之内存4.1 Java 内存模型JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面 :原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响4.2 可见性退不出的循环static boolean run = true;public static void main(
2022-03-04 21:54:18
117
原创 并发编程系列—深入理解无锁
5、共享模式之无锁5.1CAS与volatileCASpublic void withdraw(Integer amount) { // 需要不断尝试,直到成功为止 while (true) { // 比如拿到了旧值 1000 int prev = balance.get(); // 在这个基础上 1000-10 = 990 int next = prev - amount;
2022-03-04 21:54:02
193
原创 并发编程系列—深入理解java线程
1、概览1.1 进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个线程。一个
2022-03-04 21:53:47
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人