W-M'S blog

Thinking will not overcome fear but action will.

Java-NIO编程相关之一(Buffer&Channel)

本文主要记录了个人在学习NIO相关知识时一些思考过程,主要用于备忘,错误难免,敬请指出! 前言 Java NIO API中包含三个核心组件:Channels、 Buffers、 Selector,其余组件有些只不过是为了这三个组件能更好的结合使用而设计的一些工具类,本文主要记录对于Channel和Buffer相关知识的学习。 Buffer Buffer是什么、怎么用? bu...

Java-NIO相关问题记录

本文主要记录了个人在学习NIO相关知识时遇到的问题及自己的思考,主要用于备忘,错误难免,敬请指出! Java NIO中非阻塞体现在哪里? 对于进程的一次I/O访问(包含网络IO与文件IO),以read操作为例,有两个阶段可能发生阻塞:   (1)等待要读取的设备状态变为可读,之后将数据从设备拷贝到内核数据缓冲区。   (2)将数据从内核数据缓冲区拷贝到用户进程空间。 对于J...

Java集合类学习之WeakHashMap

本篇随笔主要记录了我阅读WeakHashMap(JDK1.8)源码期间的对于WeakHashMap的一些实现上的个人理解,用于个人备忘,有不对的地方,请指出。 前言 顾名思义,WeakHashMap与HashMap的不同之处在于其key值是被弱引用包裹的,可以在一些情况下用于防止内存泄漏。关于WeakHashMap的应用场景,可以参考:用弱引用堵住内存泄漏。本文主要介绍WeakH...

Java中的强-软-弱-虚引用

最近复习Java NIO相关知识时遇到了一个问题,我们可以通过ByteBuffer.allocateDirect()来分配直接内存,分配直接内存的好处是对于那些较大的且长期存活频繁使用的Buffer,通过使用直接内存,可以减少数据从内核缓冲区到用户缓冲区的复制操作从而提高I/O性能,但是通过DirectBuffer分配的内存不属于JVM管理,那么在堆内存不足触发GC操作时,对于这部分直接内存...

操作系统相关知识杂记

本文主要记录了学习操作系统相关知识中遇到的一些问题及个人理解,用作个人备忘,错误难免,敬请指出。   操作系统是控制和管理计算机硬件和软件资源、合理的组织计算机的工作流程以方便用户使用的程序的集合。通常操作系统会为我们提供以下功能:进程管理、内存管理、文件管理、设备管理、网络通信管理等功能。   由于操作系统向用户隐蔽了系统使用的硬件设备,因此操作系统要为它上面的应用软件提供一组命令或系统...

Linux虚拟内存管理概述

本文分析了Linux虚拟内存管理的作用并基于x86系统从宏观角度上分析了Linux实现虚拟内存管理的原理,用作个人备忘,如有错误,敬请指出。在介绍虚拟内存管理原理之前,先介绍一些概念。 一、相关概念介绍 1.虚拟内存管理作用   (1)使每个进程都拥有自己独立的内存地址空间;对于32位Linux而言,每个任务可寻址的内存地址空间都为0x00000000-0xFFFFFFFF(0-4GB)...

cookie、session知识记录;自动登录、密码找回功能实现

本文先记录了cookie、session使用的知识点,区分了一些易混淆的地方,之后应用cookie、session实现了自动登录、密码找回功能。 1. cookie、session知识记录   (1)cookie存于客户端,session存于服务器端,cookie超时时间默认为浏览器关闭即失效,tomcat中session默认为20分钟失效。   (2)cookie超时时间计算方法为自c...

SpringAOP使用方法分析总结

AOP(Aspect Orient Programming),面向切面编程。作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理,安全检查,异常处理,日志记录等。AOP实现的关键就在于AOP框架自动创建的AOP代理,AOP代理又可分为静态代理与动态代理两大类,如下图所示:   静态代理是指使用AOP框架提供的命令进行编译,从而在编译阶段生成AOP代理类,也称为...