Java并发知识体系

Java 并发是与硬件息息相关的。Java 线程由操作系统管理,而操作系统又是运行在 CPU 之上的。

并发知识点

  • Java 并发领域介绍
  • volatile 关键字的应用场景与原理剖析
  • synchronized 关键字的底层原理深入剖析
  • Lock 原理深入剖析
  • 何为原子操作以及原子操作的原理深入剖析
  • 锁与锁原理深入剖析
  • 锁框架详解
  • 读写锁与重入锁分析
  • 内存屏障详解
  • Completion Service 详解
  • 重排序详解
  • Fork-Join API 详解
  • 一致性语义深入解读
  • 资源死锁详解
  • synchronized 与 ReetranLock 详细对比
  • happen-benfore 语义的含义讲解
  • Java 内存模型深入详解
  • Exector 框架深入解读
  • ThreadLocal 原理与底层源码深入解读
  • Java concurrent 包重要且核心组件深入详解
  • CountDownLatch 详解
  • CycilcBarrier 解读
  • 线程间同学方式详解
  • CPU Cache 模型详解
  • JMM 的有序性、可见性与原子性详解
  • Java 线程池深入剖析
  • Future 模式深入详解
  • CAS 深入剖析
  • JVM 对 CAS 的支持
  • 其他并发分析工具详解

Terwer...大约 2 分钟并发新思路新笔记详解深入剖析原理解读java并发concurrent
Java并发之回顾Thread和runnable

jdk 文档的描述

Thread

A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.

Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. Each thread may or may not also be marked as a daemon. When code running in some thread creates a new Thread object, the new thread has its priority initially set equal to the priority of the creating thread, and is a daemon thread if and only if the creating thread is a daemon.


Terwer...大约 8 分钟并发新思路新笔记并发回顾笔记新思路runnablethreadconcurrent
Java8知识体系

Java8知识体系

  • Java8新特性介绍
  • Lambda表达式介绍
  • 使用Lambda表达式代替内部类
  • Lambda表达式的作用
  • 外部迭代与内部迭代
  • Java Lambda表达式语法详解
  • 函数式接口详解
  • 传递值与传递行为
  • Stream深度解析
  • Sream API详解
  • 串行流与并行流
  • Stream构成
  • Stream源生成方式
  • Stream操作类型
  • Stream转换
  • Optional详解
  • 默认方法详解
  • 方法与构造方法引用
  • Predicate接口详解
  • Function接口详解
  • Consumer接口剖析
  • Filter介绍
  • Map-reduce详解,中间操作与终止操作
  • 新的Date API分析

Terwer...大约 1 分钟JDK8新思路新笔记详解表达式接口介绍操作
用户自定义类加载器探秘

用户自定义类加载器探秘

MyClassLoader

/**
 * 自定义类加载器
 *
 * @name: MyClassLoader
 * @author: terwer
 * @date: 2022-07-07 21:37
 **/
public class MyClassLoader extends ClassLoader {
    //  类加载器的名字
    private String name;

    // 加载类的路径
    private String path = "/home/terwer/Downloads";

    // class文件的扩展名
    private final String fileType = ".class";

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public MyClassLoader(String name) {
        // 让系统类加载器成为类加载器的父类加载器
        super();
        this.name = name;
    }

    public MyClassLoader(ClassLoader parent, String name) {
        // 显式指定类的父类加载器
        super(parent);
        this.name = name;
    }

    @Override
    public String toString() {
        return this.name;
    }

    @Override
    protected Class<?> findClass(String name) throws ClassNotFoundException {
        byte[] data = this.loadClassData(name);

        return this.defineClass(name, data, 0, data.length);
    }

    private byte[] loadClassData(String name) {
        InputStream is = null;
        byte[] data = null;
        ByteArrayOutputStream baos = null;

        try {
            this.name = this.name.replace(".", "/");
            is = new FileInputStream(path + "/" + name + fileType);

            baos = new ByteArrayOutputStream();

            int ch = 0;
            while (-1 != (ch = is.read())) {
                baos.write(ch);
            }

            data = baos.toByteArray();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (is != null) {
                    is.close();
                }
                if (baos != null) {
                    baos.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }

        return data;
    }
}

Terwer...大约 1 分钟JVM新思路新笔记jvmclassloadercustom
类加载器的父亲委托机制深度详解

类加载器的父亲委托机制深度详解

类加载器

image-20220706194726101
image-20220706194726101

类加载器的父亲委托机制

类加载器的父亲委托机制(Parent Delegation)

父子加载器不是继承关系,子加载器不一定要继承父加载器。


Terwer...大约 1 分钟JVM新思路新笔记jvmclassloaderparentdelegate
脚本编程与交互式编程

脚本编程与交互式编程

命令式

image-20220605222444153
image-20220605222444153

可以直接用 python 命令运行

➜  ~ python3 /media/terwer/data/workspace/terwer/pyhello/main.py
Hello World!
hello my friends

Terwer...小于 1 分钟大数据开发新思路新笔记python
算法与数据结构知识体系

第一章:当我们在讨论算法的时候,我们在讨论什么?

​ 1-1 我们究竟为什么要学习算法

​ 1-2 课程介绍

第二章:排序基础

​ 2-1 选择排序法

2-2 使用模板(泛型)编写算法

2-3 随机生成算法测试用例

​ 2-4 测试算法的性能

​ 2-5 插入排序法

​ 2-6 插入排序法的改进

​ 2-7 更多关于O(n*2)排序算法的思考

第三章:高级排序问题

​ 3-1 归并排序法


Terwer...大约 3 分钟算法与数据结构C++版新思路新笔记data-structure
2
3
4