小知识点

dll文件

.dll文件是Dynamic Link Library(动态链接库)文件的缩写,它是一种共享库文件,包含了程序所需的代码和数据。与静态链接库不同,动态链接库可以在程序运行时动态加载,使得程序的内存占用更小,同时也方便了程序的更新和维护。

鲁棒性

鲁棒性是 robustness 的音译,在中文中常常也被表达为健壮性和强壮性,总体来说其可以用于反映一个系统在面临着内部结构或外部环境的改变时也能够维持其功能稳定运行的能力

计算机系统:鲁棒性是一个系统或组件在出现不正确的或矛盾的输入时能够正确运行的程度。

人类语言技术:语言的鲁棒性(识别和分解等)是指人类即使在信息不完全、意思模糊或不断的变化情况下,仍然能够实现沟通的能力。

实用非线性控制:鲁棒性是一个系统在遇到了设计中所没有考虑过的情况时不受到影响的程度。

生物系统:鲁棒性是那些具有恢复、自动修复、自控制、自组装、自复制能力的系统所具有的特性。

面向对象的软件构造:鲁棒性是软件在非正常环境下(也就是在规范外的环境下,包括新的平台、网络超载、内存故障等)做出适当反应的能力。

句柄(HANDLE)

句柄是一个整数,单独的看它只是数字。

但这个整数是进程句柄表数组的下标,有了这个下标,操作系统就可以找到其索引的数据结构,并能找到数据结构里面的指针,然后根据这个指针获取内核里的某个对象。

大知识点

缓冲(buffer)

缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

为什么要引入缓冲区

比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作速度大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。

又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作

缓存(cache)

cache是一个非常大的概念。

一、CPU的Cache

CPU的Cache,它中文名称是高速缓冲存储器,读写速度很快,几乎与CPU一样。由于CPU的运算速度太快,内存的数据存取速度无法跟上CPU的速度,所以在cpu与内存间设置了cache为cpu的数据快取区。当计算机执行程序时,数据与地址管理部件会预测可能要用到的数据和指令,并将这些数据和指令预先从内存中读出送到Cache。一旦需要时,先检查Cache,若有就从Cache中读取,若无再访问内存,现在的CPU还有一级cache,二级cache。简单来说,Cache就是用来解决CPU与内存之间速度不匹配的问题,避免内存与辅助内存频繁存取数据,这样就提高了系统的执行效率。

二、磁盘的Cache

磁盘也有cache,硬盘的cache作用就类似于CPU的cache,它解决了总线接口的高速需求和读写硬盘的矛盾以及对某些扇区的反复读取。

三、浏览器的Cache

浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览,并且可以减少服务器的压力。游览器的缓存的数据只是短时间保存,可以人为的清空

缓存(cache)与缓冲(buffer)的主要区别

Buffer的核心作用是用来缓冲,缓和冲击(对输出设备的冲击,包括磁盘、打印机、显示器)。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。

Cache的核心作用是加快取用的速度(加快读取速度,包括CPU读内存、内存读磁盘、用户通过浏览器请求资源)。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

简单来说就是buffer偏重于写,而cache偏重于读。

JSON

JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.

2.JSON对象格式
我们通过java,js,xml和json这几种不同的语言来描述一个对象
对象是book,它有两个属性,分别是name和info

java格式

1
2
3
4
5
6
7
8
9
> class Book{ 
>    private String name;
>    private String info;
>    get/set...
>    }
>   Book b = new Book();
>   b.setName(“金苹果”);
>   b.setInfo(“种苹果”);
>   ...
1
2
3
> var b = new Object(); 
> b.name = "金苹果";
> b.info = "种苹果";
1
2
3
4
<book>
<name>金苹果</name>
<info>种苹果</info>
</book>
1
2
3
4
{ 
"name":"金苹果",
"info":"种苹果"
}

一个对象, 由一个大括号表示.
括号中 描述对象的属性 .
通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.)
格式
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解 析.) 键值对的值, 可以是JS中的任意类型的数据

数组格式

在JSON格式中可以与对象互相嵌套
[元素1,元素2…]

案例

1
2
3
4
5
6
7
8
9
10
11
12
{ 
"name":"小陈",
"age":20,
"pengyou":["张三","李四","王二","麻子",{
"name":"小明",
"info":"像彭于晏一样帅气的男人"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}

3.JSON数据解析
下面开始讲解如何使用IDEA将Java对象快速转换成JSON数据,和如何将JSON数据转换成Java对象

将Java中的对象 快速的转换为 JSON格式的字符串.
将JSON格式的字符串, 转换为Java的对象.

注意:

1.以下的导jar包操作如果不会,请去参考一些导jar包操作
2.在文章的底部提供了有关的jar包,需要自取
GSON解析

  • 将对象转换为JSON字符串

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    转换JSON字符串的步骤: 
    1. 引入JAR包
    2. 在需要转换JSON字符串的位置编写如下代码即可:
    String json = new Gson().toJSON(要转换的对象);
    案例:
    //1. 创建Gson类型的对象
    Gson g = new Gson();
    //2. 转换
    //优化 可以使用匿名对象
    book b = new book("100","金苹果","种植苹果的故事");
    String s = g.toJson(b);
    System.out.println(s);

    将JSON字符串转换为对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    1. 引入JAR包 
    2. 在需要转换Java对象的位置, 编写如下代码:
    //1. 创建Gson类型的对象
    Gson g = new Gson();
    //2. 转换 {"id":"100","name":"金苹果","info":"种植苹果的故事","page":["远赴人间惊鸿晏","一度人间盛世颜","致hdd"]}
    //2.1 返回book类型
    book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果的故事\"}", book.class);
    System.out.println(b.getId());
    //2.2 返回MAP类型,键值对形式
    HashMap hm = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果的故事\"}", HashMap.class);
    System.out.println(hm.get("id"));
    //2.3 MAP类型中值是一个数组形式
    HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果的故事\",\"page\":[\"远赴人间惊鸿晏\",\"一度人间盛世颜\",\"致hdd\"]}", HashMap.class);
    List list = (List) data.get("page");
    System.out.println(list.get(1));