小草窝

ci饭,碎觉,输入,输出


  • 首页

  • 标签

  • 分类

  • 归档

三大集合

发表于 2022-11-29 | 分类于 java | 评论数:
前言java 的集合类主要在 util 包中,主要有三种,分别是 list、map 和 set。其中 list 和 set 的上层接口同是 Collection,map 则实现了 Map 接口。值得一提的是,Collection 接口下除了 list 和 set,还有 queue,也就是我们常说的队列了。队列的实现类主要有 lindkedList。 下面,就让我们分别说明三大集合的特点吧。 导航 前言 List Map HashMap 与 LinkedHashMap、TreeMap Concu ...
阅读全文 »

工作小结

发表于 2022-11-28 | 更新于 2022-11-29 | 分类于 随笔 | 评论数:
入职公司已经两年半了,也是时候做一总结了。总体来说,公司业务可以分为三部分:信息管理、监测、问答交流。其中,最核心的业务就是监测了,主要是通过自研以及第三方合作的硬件设备来采集数据,并传输采集的数据至后台服务,从而来进行展示与分析。围绕着核心的监测业务,系统还扩展出了各种相关业务,比如相关信息的管理(如机构管理、设备管理、人员管理等)、监测结果提醒(根据自定义规则触发各种提醒)、监测后的咨询服务(如可付费咨询)等等。 在公司的这段时间,除了完成业务之外,还需要经常和产品、经理沟通。在整个流程中, ...
阅读全文 »

java基础知识(一)

发表于 2022-11-24 | 更新于 2022-12-01 | 分类于 java | 评论数:
导航 面向对象的特点 类的初始化顺序 8 种基本数据类型 注解 反射 泛型 序列化与反序列化 引用类型 JIT 编译器 面向对象的特点 封装:将事物封装成一个类,开放接口供外界调用,从而减少耦合与隐藏内部实现。当内部实现改变时,不影响外部调用。 继承:从一个已知类中派生出一个新的类,新类拥有已知类的行为和属性。 多态:本质是存在同名的不同方法,实现方式: 子类对父类的方法重写 方法重载 方法的参数个数、顺序、类型不同 修饰符、返回值、异常不同不构成重载 类的初始化顺序 父类中的静态 ...
阅读全文 »

IO、NIO简述

发表于 2022-11-21 | 更新于 2022-12-06 | 分类于 java | 评论数:
前言操作系统中,大多数应用运行在用户空间里。在用户空间中,执行的代码并不能之间操控硬件。因此,用户空间中的代码需要用过调用内核代码来读写存储设备上的数据。 内核代码将磁盘上的数据,存储到内核空间的缓冲区,再被用户空间读取到用户空间的缓冲区。数据来往与用户空间与存储设备的过程中,内核充当着中间人的角色。 但是,当用户空间有多个缓冲区进行读写时,多次调用内核代码的代价不小。对于这种情况,用户进程可以选择利用一次系统调用,将多个缓冲区地址传递给内核,有内核进行发散、汇聚,同时满足多个缓冲的需求。 ...
阅读全文 »

Executor与线程池

发表于 2022-11-18 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言“池”这个字恐怕大家都耳熟能详,诸如连接池、对象池以及线程池等等。我们可以将暂时用不到的资源搁置在池中,等待需要使用的时候,就可以直接从池中获取。池不仅可以重复利用资源,而无需重新进行资源的构建工作,还可以因此简化资源的管理与调用,提升效率与简化编码。 而线程池,就是一种常见的“池”。比起降低新建线程的开销,线程池更可以帮助我们处理线程的切换,减少线程上下文切换的开销。同时,也可以帮助任务的调度与管理。 导航 前言 Executor ThreadPoolExecutor 线程池的创建 任务 ...
阅读全文 »

ThreadLocal

发表于 2022-11-15 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言顾名思义,ThreadLocal 用于保存每个线程的本地变量,每个线程都有一个 threadLocals 成员: 123public class Thread implements Runnable { ThreadLocal.ThreadLocalMap threadLocals = null;} 12345678910111213141516public class ThreadLocal<T> { static class Thre ...
阅读全文 »

AbstractQueuedSynchronizer

发表于 2022-11-12 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言AbstractQueuedSynchronizer(AQS)是 locks 包下一个用于实现锁与同步器的工具类。这是 jdk 中提供的一个简单的实现类: 1234567891011121314151617181920212223242526272829303132333435363738class Mutex implements Lock, java.io.Serializable { // Our internal helper class private sta ...
阅读全文 »

ReadWriteLock

发表于 2022-11-07 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言并发编程中,确保线程间共享数据的原子性是很重要的。在大多数情况下,我们可以使用锁,使对共享数据的并行访问转变成串行,从而保证数据的原子性: 123lock(); // 加锁doSomething(data); // 只有一个线程可以对data操作unlock(); // 释放锁 但是,我们也知道,在一些情况下,我们只需要去读取数据,而不需要对数据进行更改。这种读操作,并不对数据进行更改,是幂等的。通常情况下,我们可以认为它们之间并不需要加锁: 1read(data); // 多个线程可以一起 ...
阅读全文 »

锁

发表于 2022-11-03 | 更新于 2022-11-29 | 分类于 java | 评论数:
前言说到并发,就不能不提互斥锁。我们知道,互斥锁是为了使同一时间,只有一个线程可以对共享变量的状态造成影响,从而避免共享变量状态发生无法预测的变化。在java中,我们不仅可以使用关键字synchronized来加锁,还可以使用api级别的Lock来更加细粒度的加锁。 导航 前言 内置锁:synchronized Lock与ReentrantLock 内置锁:synchronizedsynchronized作为关键字之一,为我们提供了便利的内置锁机制来保证线程安全。synchronized有三 ...
阅读全文 »

关于并发的简单介绍

发表于 2022-10-29 | 更新于 2022-11-29 | 分类于 小记 | 评论数:
前言随着时代的发展,软件变得越来越复杂。随之而带来的,是为了保证一定性能而不断扩大的并发需求。并发,也成为了一个程序员必须要掌握的技能。本文对并发做一个非常简单的介绍。 谈到并发,难免提到进程与线程两个概念。单看这两个名称,似乎差距不大。但我们可以继续看看它们的英文:process 和 thread。看到 process,很容易联想到 program(程序)。在操作系统中,我们恰恰可以粗略的认为,一个运行的程序是一个进程。相对于线程来说,进程是重量级的。而 thread,线,线是又轻又小的,线程 ...
阅读全文 »
123

JL Wang

好好学习,天天向上

29 日志
8 分类
7 标签
GitHub E-Mail
© 2022 JL Wang