- 博客(22)
- 收藏
- 关注
原创 netty-ByteBuf
一,ByteBuf简介 在原生Java NIO中,应用程序和channel输入输出数据都是通过ByteBuffer进行的。但是原生Java NIO中ByteBuffer的使用非常不方便,首先在对它进行写入的时候不能动态地进行扩容,需要应用者自己显示扩容。其次它没有读写索引的概念,从写模式切换到读模式需要显示调用flip()方法,对使用者的要求比较高,同时它也没有内存池的概念,内...
2020-01-05 21:10:46
181
原创 2019年终总结
2019年算是正式开始系统学习操作系统的开端年,其实这项工作从2018年6月份就开始了。当时想要系统学习操作系统是基于三个原因考虑的:一个是当时去面试今日头条,头条问了很多很基础底层的问题,比如UNIX五种IO模型,操作系统底层之类的,我是真的不会。我是Java开发程序员,但是深刻感觉到Java仅仅是一层皮,核心功能都是依赖于JVM、操作系统、编译原理构建的。第二个是当时美国对中兴华为...
2020-01-01 15:05:57
193
原创 linux网络
1,interrupt.h 在该中断头文件中定义了结构体struct bh_struct:struct bh_struct{ void (*routine)(void *); ------------软中断处理函数 void *data; ------------...
2019-09-22 12:03:43
137
原创 linux常用指令概览
一,别名指令 对于一些常用的指令,但是又很长的,一下输入不进去,可以给该指令指定别名,通过别名去访问这个指令,如下所示: alias 别名=指令序列,比如: alias ll='ls -lia' 用ll指令指代ls -lia , 该指令列出当前目录下面的文件列表,包括文件的索引节点号,文件的大小,文件的访问权限等信息 但是...
2019-09-03 10:38:20
125
原创 java命令行参数
1,java -X 在命令行输入java -X,可以列出Java允许输入的各种命令行参数,可以试一试。2,启用JVM的各项参数 -XX:+PrintGCDetails -----打印出GC的详细信息 -verbose:gc -Xloggc:gc.log ---------将GC日志输出到gc.log文件中 -XX:+UseG1GC...
2019-08-28 10:24:27
183
原创 Java字符串
字符串打印问题 在用Java打印日志的时候,碰到这样的问题,大体代码如下: Long uid =190711046433680034L; String msg = MessageFormat.for("uid={0}",uid); 用这种方式打印出来的字符串如下:uid=190,711,046,433,680,034 ...
2019-07-02 19:10:46
106
原创 kafka
kafa消息监听端时而监听到时而监听不到的问题 kafka有一个消息发送端,有多个消息监听端,分别是A,B,C三个应用;每个消息监听端如果配置的groupId不相同,那么kafka就会认为这是三个消息监听端,针对每一个消息监听端做投递;但是我在开发中碰到一个这样的问题,对于发送出来的消息,B和C每次都可以监听到,但是A时而可以监听到,时而监听不到,看上去像是被A的另一台服务器监听到了(...
2019-07-02 19:06:34
106
原创 linux信号机制
一,信号处理概述 进程间的通信一般有两种方式,共享内存和消息传递。比较随性的说,信号也可以理解为进程间异步通信的一种方式。不过一般操作系统原语喜欢将信号叫做软中断,即由外部系统通知进程发生了某件异步事件,被通知的进程可以在适当的时机对异步事件进行响应处理。 信号机制拥有非常悠久的历史,在早期UNIX版本中就已经存在,经典操作系统教科书《UNIX操作系统设计与实现》第...
2019-05-15 19:15:24
1540
原创 Linux 0.12内核体系结构
打算从2019年开始深入学习操作系统,从2018年下半年开始又深入地回顾了数字电路、计算机组成原理、汇编语言《王爽老师版》,X86汇编语言-从实模式到保护模式《李忠老师版》;经过了2018年下半年的深入学习,对计算机硬件组织有了更加深入的认识,为2019年深入学习操作系统奠定了坚实的基础。 2019年刚开始学习操作系统的时候有点不知所措,主要是不知道从哪里下手。起...
2019-03-09 23:18:34
331
原创 操作系统概论
硕士研究生毕业三年多了,自己在技术深度上成长颇浅,感觉自己对于一些技术理解的顶峰还维持在研究生阶段,还是有必要重读经典的;操作系统真是个太重要的东西,它是应用程序在计算机上运行起来的基石,给自己定下2019年的技术目标,深入研究操作系统,从重温经典开始; 在2018年下半年中,我已经深入阅读了<<数字电路>>、<<计算机组成原理...
2019-01-26 19:32:08
445
1
原创 任务和特权级保护
一,概述 1.1, 内存空间是分段的,每个段都有自己的描述符,描述符规定了这个段的起始基地址,段界限,段属性描述信息。 1.2,一个段只能在它自己的范围内访问我理解的意思是:一个代码段的保护是指CS:EIP的访问不能超过这个代码段的范围;一个数据段的保护是指DS:BX的访问不能超过这个数据段的范围,但是代码段还是可以访问数据段的,只不过在访问的时候不能超过数据段的范围。...
2018-12-23 02:33:54
150
原创 Spring事务隔离级别和传播行为
一,Spring事务隔离级别 Spring事务隔离级别是按照数据库的隔离级别来定义的,即也包括读未提交,读提交,可重复读,串行化这四种; 如果没有设置也是按照数据库底层默认隔离级别来的,mysql默认隔离级别是可重复读,sqlserver和oracle默认隔离级别是读提交。二,Spring事务传播行为 Spring中事务传播行为是指一个方法调用另一个方法,期间的事务属...
2018-07-15 18:24:04
238
原创 数据库事务
一,数据库事务特性 如果一个数据库说它支持事务,则该数据库必须具备以下四个特性: 1.1,原子性(Atomicity) 原子性是指事务的一系列操作要么全部成功,要么全部失败,不允许存在部分成功部分失败的情形。 1.2,一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,这个主...
2018-07-13 19:43:28
155
原创 MySQL存储引擎简介
MySQL存储引擎有InnoDB,MyIsam,Memory,Blackhole,CSV,Performance_Schema,Archive,Federated,Mrg_Myisam。这里着重介绍InnoDB和MyIsam存储引擎。一,InnoDB存储引擎 InnoDB存储引擎支持事务,有行级锁和外键约束。 InnoDB引擎提供对数据库ACID特性的支持,实现了SQL标准的四...
2018-07-13 17:28:13
111
原创 JAVA类加载体系
一,什么是类加载器 类加载器是将字节码.class文件转换为JVM内存Class对象的工具二,类加载的过程 整个类的加载过程包括如上9个过程,下面分别解释每个过程的含义。 加载:根据一个类的全限定名来读取此类的二进制字节流(.class文件)到JVM中,转换为一个与目标类对应的Class对象实例。 验证:确保Class文件字节流中包含信息符...
2018-07-13 14:54:26
273
原创 String,StringBuffer,StringBuilder关系
一,String,StringBuffer,StringBuilder都是存储字符串的容器二,String是final类型的,创建之后就不可以修改;StringBuffer和StringBuilder是变量,每次都是修改原来的对象;三,StringBuffer是线程安全的,内部很多方法都带了关键字synchronized;StringBuilder是非线程安全的,所以StringBuilder的性...
2018-07-13 09:52:39
94
原创 ThreadPoolExecutor深入研究
Java封装了ThreadPoolExecutor构造线程池更好地管理多线程,使用线程池有如下两点好处: 1,使用线程池复用线程避免了创建线程和销毁线程所需的开销 2,提供了专门的线程池管理,任务管理,并发控制等功能ThreadPoolExecutor构造器提供了6个入参: corePoolSize maxPoolSize ...
2018-07-10 15:15:25
101
原创 Linux Shell流程控制
1,分支语句 if condition then command1 command2 command3 fi if condition then command1 else command2 fi if condition then ...
2018-06-10 12:46:45
172
原创 Linux Shell输出命令
Linux Shell的输出有两种,echo 和 printf一,echo 1,显示普通字符串 echo "It is a test" echo In is a test echo ${name} 2,显示换行 echo -e "OK ! \n" 3,显示不换行 echo ...
2018-06-10 12:29:23
771
原创 Linux shell基本运算符
Linux shell的基本运算符有 算术运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符一,算数运算符 + - * / % = == != a=10 b=10 val=`expr $a + $b` val=`expr $a - $b` val=`exp...
2018-06-10 12:01:35
151
原创 Linux shell基础知识
1,shell和shell脚本的区别 shell是用C语言编写的,是用户使用Linux的桥梁。 shell脚本是指为shell编写的脚本程序。2,shell的种类 Bourne Shell(/usr/bin/sh 或者 /bin/sh) ---------------简称sh Bourne Again Shell(/bin/bash...
2018-06-09 22:28:01
97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人