随笔分类 - 知识点
总结的一些知识点
摘要:什么是有序性? 简单来说,假设你写了下面的程序: int a = 1; int b = 2; System.out.println(a); System.out.println(b); 但经过编译器/CPU优化(指令重排序,和编程语言无关)后可能就变成了这样: int b = 2; int a =
阅读全文
摘要:CPU三级缓存 要聊可见性,这事儿还得从计算机的组成开始说起,我们都知道,计算机由CPU、内存、磁盘、显卡、外设等几部分组成,对于我们程序员而言,写代码主要关注CPU和内存两部分。放几张马士兵老师的图: 再说CPU,众所周知,CPU同一时间点,只能执行一个线程,多个线程之间通过争抢CPU资源获得执行
阅读全文
摘要:本文讨论是权限设计的其中一种思路,有它自己的优缺点,不一定适用于所有系统。 一、Linux文件权限 大家都知道,Linux上有三种文件权限: r:表示读取,对应的数字为 4; w:表示写入,对应的数字为 2; x:表示执行,对应的数字为 1; 当然还有一种是特殊的是: -:表示无权限,对应的数字为0
阅读全文
摘要:一、先上答案 这个问题有坑,有两种回答 第一种解释: object实例对象,占16个字节。 第二种解释: Object o:普通对象指针(ordinary object pointer),占4个字节。 new Object():object实例对象,占16个字节。 所以一共占:4+16=20个字节。
阅读全文
摘要:代码块 在Java中,使用括起来的代码被称为代码块。 分类 根据其位置和声明的不同,可以分为: 局部代码块:局部位置,用于限定变量的生命周期。 构造代码块:在类中的成员位置,用括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。
阅读全文
摘要:关于TLS的一些基本信息我这里就不多说了,网上一搜一大堆。这里主要说一下,在tls单向认证里,怎么用keytool命令去制作CA证书,签发二级证书。双向认证也就是照着反方向做一遍就好了。 先附一张简单的步骤图,及每一步的命令 1. keytool -certreq -alias server -ke
阅读全文
摘要:字符串string: 字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描述信息等,是标准的key-value,一般来存字符串,整数和浮点数。Value最多可以容纳的数据长度
阅读全文
摘要:类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导入Class文件; [2.]链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的: [2.1]校验:检查载入Class文件数据的
阅读全文
摘要:简易图解git流程概念 Workspace:工作区 Index / Stage:暂存区 Repository:本地仓库区(用HEAD指向最后一次commit的结果) Remote:远程仓库 一、快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git
阅读全文
摘要:一、系统目录结构 约定俗成: bin (binaries)存放二进制可执行文件 sbin (super user binaries)存放二进制可执行文件,只有root才能访问 etc (etcetera)存放系统配置文件 usr (unix shared resources)用于存放共享的系统资源
阅读全文
摘要:一、数据结构 HashMap中的数据结构是数组+单链表的组合,以键值对(key-value)的形式存储元素的,通过put()和get()方法储存和获取对象。 (方块表示Entry对象,横排表示数组table[],纵排表示哈希桶bucket【实际上是一个由Entry组成的链表,新加入的Entry放在链
阅读全文
摘要:单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。 懒汉式,线程不安全 当被问到
阅读全文