JAVA基础语法特性

发布在 JAVA

总结下JAVA语法方面的特点,JAVA在强类型的前提下实现了较为丰富的语法表达能力,这两点给软件开发提供了强大的工程能力。

阅读全文

汇编基础入门

发布在 汇编

熟悉汇编会对代码的运行过程有一个深入的认知,这里简单总结下汇编的一个整体结构,汇编代码是如何协调CPU与内存、CPU寄存器的作用、高级语言的功能其ASM的实现本质等。

阅读全文

在JAVA的之前版本,java的hashmap是拉链法的实现,为了防止拉链过长导致哈希查询退化成链表的遍历查询,哈希表会进行扩容,并对元素进行重排。
这个情况就是在哈希表重排的时候有并发请求,导致重排进行了两次,从而链表变成了循环链表,这样当读操作读取到这个循环链表则会进入死循环,导致CPU占用率飙升。为了避免这种情况,在创建hashmap的时候使用带锁的hashmap ConcurrentHashMap

阅读全文

java基础-编译运行原理

发布在 java

java的运行过程与c程序的运行过程非常相似,c程序由编译器将c源代码直接编译成了机器码(当然中间还有预处理 汇编的步骤),可以在操作系统中直接运行,java多了个中间字节码。java编译器将java源代码编译成字节码(xxx.class) 字节码是二进制文件,其格式类似于 c中的elf格式,elf格式是由操作系统识别的,java字节码是给 java的运行环境 jvm 识别的。 jvm 实现了字节码的运行环境,这样不依赖系统运行环境来实现跨平台,其实现形式类似操作系统的实现形式,都有程序运行需要的 指令存储、栈、堆 等内存段,jvm以多线程的模式运行程序(字节码),线程的调度依赖操作系统的调度算法,对硬件的操作还是要依赖操作系统提供的接口实现。

阅读全文

spring-beans使用

发布在 spring

在spring框架中其核心功能是IoC的实现,Spring实现IoC靠的是组件 spring-beans ,搞清楚 beans 的原理有利于理解 spring 框架的设计思路。
Beans是对类如何实例化的定义,这些定义是通过配置的形式提现的,spring目前支持的定义格式有 Properties Groovy XML 以及后来在组件 spring-context 中通过 注解 的实现形式。容器的本质是一个HashMap 用于存储对象实例化后的地址 或者 存储如何实例化对象的数据(配置)。

阅读全文

Linux进程基本用法

发布在 Linux

关于进程涉及到的知识点还是很多的,需要全方位理解操作系统才能更好的理解进程。在初步使用了进程相关的glibc函数之后带来了更多的问题需要思考:1. 进程的创建过程fork 主要是对进程结构 struct task_struct 的拷贝,这个结构体中包括 进程调度信息、文件系统、文件读写流、虚拟内存等信息 2. 进程与线程的区别,他们共享系统分配的虚拟内存,具体共享的是虚拟内存的那些部分 3. Linux中代码被编译成机器指令以二进制的文件格式存储在硬盘,这个格式叫做elf 不仅仅有机器指令 还是有头信息、符号表等信息节 4. 多进程在操作系统中是如何被调度的 算法是怎样的 5. 用户态到内核态的转换 依赖的是中断 需要搞清楚中断的实现原理 6. 进程可以接收外部信号 这个外部信号本质又是什么。 搞清楚了这些问题,才能搞清楚进程的本质,同时这些内容也是独立的知识体系需要单独来讲了,这里先写下进程的表面形式。

阅读全文

HashTable是一个常用的数据结构,在php内核对HashTable的使用很多,我们熟知的 array 在内核中的实现形式其实也是 HashTable,包括在其他语言中存在的数据结构 LinkList ,在php中已经将这些基本数据类型屏蔽 对用户只以 array 的形式暴漏,理解php内核中的hashtable对理解php数组十分重要。

阅读全文
作者的图片

fantiq

author.bio


author.job


China HangZhou