目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

UML

UML 特点  统一建模语言(Unified Modeling Language)是一种开发的方法,用于说明、可视化、构建和编写一个正在开发的面向对象的、软件密集系统的制品的开放方法。  UML 展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。 UML 2.2 分类 UML 2.2 中一共定义了 14 种图示,分类如下: * 结构式图形:强调的是系统式的建模 * 行为式图形:强调系统模型中触发的事件 * 交互式图形:属于行为图形子集合,强调系统模型中资料流程 结构式图形 静态图(类图、对象图、包图) 实现图(组件图、部署图) 剖面图 复合结构图 行为式图形 活动图 状态图 用例图 交互式图形 通信图 交互概述图(UML2.0) 时序图(UML2.0) 时间图(UML2.0) UML 类图  Class Diagram,用于表示类、接口、实例等之间相互的静态关系。虽然名字叫类图,但类图中并不只有类。 第一行 类名(抽象类应该用斜体) 第二行 属性 第三行 方法 + public - private # prot....

Thread和Object类中线程相关方法

方法概览 wait、notify、notifyAll 阻塞阶段  三个方法都属于 Object 类,任何对象都可以调用这三个方法,并且这些方法都是 native final 修饰的,本地方法也不可以被重写。  类似功能 Condition。  wait()只释放其所属的同步代码块使用的锁对象。也就是说只释放当前 monitor 。 &emspl;有时需要一个或多个线程暂时休息一下,等到后续需要它的时候或条件成熟时再去唤醒它。 &emspl;调用 wait 的前提条件是需要获取到 monitor (也就是线程必须已经获取到 synchronized 锁),否则会抛异常  直到以下 4 种情况之一发生时,才会被唤醒 * 另一个线程调用这个对象的 notify() 方法且刚好被唤醒的是本线程。(随机调用一个线程的 notify()方法) * 另一个线程调用这个对象的 notifyAll()方法;(唤醒所有线程), 然后多个被唤醒的线程进行锁的抢占。 * 过了 wait(long timeout) 规定的超时时间会自动唤醒,如果传入 0 就是永久等待。 * 线程自身调用了in....

进程、线程、多线程

操作系统、进程、线程之间的关系  操作系统是包含多个进程的容器,而每个进程又都是容纳多个线程的容器。 进程:使用 fork(2) 系统调用创建的 UNIX 环境(比如:文件描述符,用户 ID 等),它被设置为运行程序。 进程就是代码的实例化对象。是资源分配的基本单位。 线程:在进程上下文中执行的一系列指令。 Windows 下查看进程下所有线程 PsList v1.4 * 然后将解压后的 pslist.exe 复制到 C:\Windows\System32 文件夹下 * 执行 PSlist -dmx PID (用来查看指定进程下有哪些线程) * windows10 可以启动 资源监视器 来查看 java.exe进程的线程数 模拟线程 /** * 创建 100 个线程,用任务管理器的CPU栏目看Java线程数量的变化,10秒钟后线消失。 */ public class Create100Threads { public static void main(String[] args) { for (int i = 0; i < 100; i++) { new Thread(n....

线程生命周期

线程状态转换机 NEW:已经创建但还没启动的新线程。已经做了准备工作,但还没有调用 start()方法。 RUNNABLE:处于可运行状态的线程正在 JVM 中执行,但它可能正在等待来自操作系统的其他资源,例如处理器。 # Java 中的 RUNNABLE 状态对应操作系统中的两种状态 * Ready:等待分配CPU时间片。 * Running:执行中。 BLOCKED:进入 synchronized 修饰的代码块或方法,等待获取 monitor 锁之后进入 RUNNABLE。 WAITING:Object.wait()、join()、 LockSupport.park(),进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。 TIME_WAITING:Object.wait(time)、Thread.join(time)、LockSupport.parkNanos(time)、LockSupport.parkUntil(time),该状态不同于 WAITING,它可以在指定的时间内自行返回。 TERMINATED:表示该线程已经执行完毕。 BLOCKED 与 ....

Coupon System

该文章已经加密。

Nacos

简介  一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Reference 功能 动态服务配置 服务发现和管理 动态 DNS 服务 快速入门 通过 Docker 启动 Nacos docker pull nacos/nacos-server docker run --name nacos -d -p 8848:8848 -e MODE=standalone nacos/nacos-server 登录页面 http://192.168.31.201:8848/nacos/#/login 用户名密码为 nacos Provider 端 依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependencyManagement> <de....

运行中的 SpringBoot

认识 Spring Boot 的各类 Actuator Endpoint Actuator  目的:监控并管理应用程序  访问方式 HTTP JMX 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 一些常用的 Endpoint 如何访问 Actuator Endpoint HTTP 访问 /actuator/<Actuator ID> 端口与路径(配置 Actuator 发布的端口 和 应用程序分开,实现应用与管理的隔离,例如:应用发布在 8080 端口,Actuator 相关的所有 Endpoint 发布在 8090 端口,前段 nginx 请求转发给 8080 端口,外部请求不允许直接访问 8090 端口,起到了保护作用。) • management.server.address= •....