系统与用户角度的协议分层 系统角度的协议分层一、分为哪几层:二、实体层:电脑要组网,所需要做的第一件事就是将电脑连起来,可用电缆、光缆、双绞线、无限电波等方式,这就是“实体层”,通过物理手段将电脑彼此连接起来,这里主要负责规定网络的一些电气特性,作用是负责传送0和1的电信号三、链接层:3.1.作用:然而,通过实体层传送的0和1电信号是没有规律的,也就是说单纯的0和1是没有任何意义的,因此需要规定电信号的解读方式:多少个电信号算一组?每个信号位有什么意义?这就是“链路层”的作用,在“实...
springBoot零配置原理与内嵌tomcat原理 一、使用传统springMVC“必要”的配置:1.配置web.xml<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value&...
五种I/O模型 一、一个输入操作的两个阶段:阶段1:等待数据准备好;阶段2:将数据从内核空间复制到用户进程空间。对于一个socket上的输入操作,阶段一通常就是等待数据从网络中到达(数据到达后会被复制到内核中的某个缓冲区),阶段二是把数据从内核缓冲区复制到用户进程缓冲区。recvfrom为系统调用,可以将操作在用户进程空间运行切换到在内核空间运行。用户空间与内核空间:我们知道现在操作系统都...
kafka系列——踩坑篇 踩坑①现象:新版生产者发不出去消息,broker端也没收到消息原因:旧版生产者有个配置"producer.type",async为异步发送,sync为同步发送,默认为同步发送;而新版本废弃了该配置,于是每次调用send方法时候会将消息缓存在本地的buffer中而不是立即发送,只有等到消息总大小或到达批处理发送的间隔时间才会把消息发出去,而发送代码如下:ZzKafkaProducer p...
kafka系列——KafkaConsumer源码分析 实例化过程与KafkaProduer类似,只是初始化的组件有所差异,看KafkaConsumer构造函数消费者实例化的主要组件介绍ConsumerConfig:消费者级别的配置,将相应配置传递给其他组件ConsumerCoodinator:负责消费者与服务端 GroupCoordinator 通信ConsumerNetworkClient:对网络层通信 NetworkClien...
kafka系列——KafkaProducer源码分析 实例化过程在KafkaProducer的构造方法中,根据配置项主要完成以下对象或数据结构的实例化① 配置项中解析出 clientId,用于跟踪程序运行情况,在有多个KafkProducer时,若没有配置 client.id则clientId 以前 辍”producer-”后加一个从 1 递增的整数② 根据配置项创建和注册用于Kafka metrics指标收集的相关对象,用于对 Ka...
kafka系列——KafkaProducer源码分析 实例化过程在KafkaProducer的构造方法中,根据配置项主要完成以下对象或数据结构的实例化① 配置项中解析出 clientId,用于跟踪程序运行情况,在有多个KafkProducer时,若没有配置 client.id则clientId 以前 辍”producer-”后加一个从 1 递增的整数② 根据配置项创建和注册用于Kafka metrics指标收集的相关对象,用于对 Ka...
kafka系列——基础概念介绍 国际惯例的简单介绍kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,有着如下优秀的特性: 高吞吐、低延迟:kafka每秒可以处理几十万条消息,延迟最低只有几毫秒,每个topic可以分多个分区, 消费者组对分区进行消费操作 可扩展性:kafka集群支持热扩展 持久性、可靠性:消息被...
源码角度,理清spring IOC容器初始化的全过程 IOC容器初始化过程中4个比较重要的类1.BeanFactory系列:只实现IOC容器的基本功能BeanFactory的基本功能:a.通过containBean方法判断IOC容器中是否含有指定名字的Beanb.通过isSingleton方法查询指定名字的Bean是否为Singleton类型的Beanc.通过isPrototype方法查询指定名字的Bean是否为Prototype类型的Beand.通...
java源码解读之HashMap package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import ja...
java源码解读之LinkedList package java.util;import java.util.function.Consumer;/** * 通过LinkedList的继承和实现的类与接口,可以看出: * 由于继承了AbstractSequentialList的双向链表,因此可以被当作堆栈、队列或双端队列进行操作 * 实现 List 接口,能对它进行队列操作 * 实现 Deque 接口,即能将Linked...
java源码解读之ArrayList 还是跟之前几篇源码的一样,相关信息都写在源码里面,直接祭出源码啦~~~package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;/** * ArrayList继承AbstractList...
nginx+tomcat与tomcat性能对比测试 1.硬件环境:物理总内存:16G物理CPU个数:2CPU内核数:12.软件环境:操作系统版本:CentOS release 6.9jdk版本:jdk1.7.0_09jfinal版本:jfinal-1.9虚拟机配置:JAVA_OPTS='-server -Xmx1024m -Xms1024m -Xss512k -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweep...
jfinal与servlet性能对比测试 1.硬件环境:物理总内存:16G物理CPU个数:2CPU内核数:12.软件环境:操作系统版本:CentOS release 6.9jdk版本:jdk1.7.0_09servlet版本:servlet-api 2.5jfinal版本:jfinal-1.9虚拟机配置:JAVA_OPTS='-server -Xmx1024m -Xms1024m -Xss512k -XX:ParallelGCThread...
rabbitmq安装与测试 1 Erlang旧版卸载:cluster集群中的所有节点的erlang版本和rabbitmq版本必须一致, 否则无法加入clusteron Ubuntu:sudo apt-get purge erlang*on Fedora:sudo yum remove erlang*installed erlang from source:rm -rf {erlang home directory}.2 源码...
redis学习笔记之内存篇 1.内存消耗:内存统计:info memory命令重点关注:used_memory_rss(redis进程占用内存总量)、used_memory(redis内部存储数据占用内存总量)与mem_framentation_ratio(前面2个的比值,指碎片率)mem_framentation_ratio>1时,说明userd_memory_rss - used_memory多出的部份内存没用于存...
redis学习笔记之阻塞篇 1.内因:A.api或数据结构使用不合理: 如:对一个包含上万元素的hash结构执行hgetall操作,数据量大且命令复杂度O(n),必然阻塞B.慢查询:前面有介绍C.大对象:执行./redis-cli -h {ip} -p {port} --bigkeys命令可找出当前最大对象出来,接着便可对大对象进行调整或缩减或分成多个小对象生产环境可执行debug object key查看key对应valu...