zsh-终极shell

Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。

发布于 Linux

记录一次Archlinux安装过程

因为前两天win11不知道怎么了把我的账户设置成了来宾账户,导致几乎所有软件都无法使用,遂决定格盘重装,想回到 Arch 好久了,借此机会重新体验一次。

发布于 Linux

Caffeine-高性能Java本地缓存

Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中取代Guava。如果出现Caffeine,CaffeineCacheManager将会自动配置。

发布于 Java

缓冲区溢出攻击

C语言对于数组引用不进行任何边界检查,而且局部变量和状态信息都放在栈中。这两种情况结合到一起就能导致严重的程序错误,比如对越界的数组元素的写操作。

发布于 操作系统

结构体的内存对齐

元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每个元素放置到内存中时,它都会认为内存是按照自己的大小(通常它为4或8)来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始,这就是所谓的内存对齐。

发布于 操作系统

原子操作的实现原理

原子(atomic)指的是“不能被进一步分割的最小粒子”,原子操作指的是“不可被中断的一个或一系列操作”。在多处理器上实现原子操作就会变得很复杂。 处理器如何实现原子操作32位IA32处理器使用的是基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。首先处理器会自动保证基本的内存操作的原子性。处理器保证从系统内存中读取或者写入一个字节是原子的,意思是当一个处理器读取一个原子时,其他...

发布于 操作系统

Autowired, Resource和Inject区别

1. 概述@Resource、@Inject和@Autowired是在Java开发中都会经常用到的注解,这些注解为类提供了一种声明性的方式来解决依赖关系 12@Autowired AnotherClass object; 与之对应的命令式实例化: 1AnotherClass object = new AnotherClass(); 其中两个来自java扩展包:javax.annotatio...

发布于 Java

Java中常用的锁

synchronized最常见的锁,可以非常快速的实现多线程的同步操作,只需要在需要同步的方法、对象、或代码块中加入该关键字,就能保住同一时刻最多只有一个线程执行 使用synchronized修饰的代码具有原子性和可见性,在需要进程同步的程序中使用的频率非常高,可以满足一般的进程同步要求 Java实现的锁机制有很多种,并且有些锁机制性能也比synchronized高,但还是强烈推荐在多线...

发布于 Java

Java中的Unsafe类

众所周知,Java成为现在广泛使用的后端语言之一就是因为其拥有自动垃圾回收机制,由于垃圾回收的消耗,也导致Java运行效率不如没有垃圾回收机制的C++等,本文介绍Java中“不安全”的部分—手动申请和释放内存

发布于 Java

进程通信之信号量

信号量(Semaphore)的概念最早由荷兰计算机科学家 Dijkstra(迪杰斯特拉)提出,有时又称“信号灯”。

发布于 操作系统
1236