01 2019 档案
摘要:如何停止线程 JDK API推荐使用停止线程的方法Thread.interrupt()方法 既然不能直接stop线程,那么只有一种方法可以让线程结束,那就是让run方法运结束。Thread.interrupt()代表的意思是“停止,中止”。但是这个方法需要加入一个判断才可以完成线程的停止。一旦检测到
阅读全文
摘要:Docker和Kubernetes Docker Docker是一个容器的开放平台,但它不是最早的。自20世纪70年代以来,容器平台一直存在。他们的开发可以追溯到Unix中的chroot系统调用。在2000年代早期,FreeBSD Jails和Linux服务器的开发导致了2008年的Linux容器(
阅读全文
摘要:推荐下边两篇,写的很棒 https://juejin.im/post/5b126065e51d4506bd72b7cc https://www.cnkirito.moe/future and promise/
阅读全文
摘要:Static、Final、static final final可以修饰:属性,方法,类,局部变量(方法中的变量) 用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。 在声明final类型的成员变量时就赋初值 在声明final类型的成员变量时不赋初值,但在类的所有构造
阅读全文
摘要:线程池 目的 降低资源消耗 通过重复利用已创建的线程降低线程的创建和销毁的消耗 提高利用率 当任务到达时,可以省去线程的创建时间,直接去执行。 方便管理 线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可以统一分配,调优和监控。 线程池的四种创建方式 1. ne
阅读全文
摘要:TCP四次挥手 假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",可是假设你还有数据没有发送完毕,则不必急着关闭Socket,能够继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,可是我还
阅读全文
摘要:http1.0、http1.x、http 2和https梳理 Http1.x 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞 http1.0 缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户
阅读全文
摘要:重排序 重排序只会在多线程场景下遇到,在单线程场景是不会遇到的。 cpu会对代码实现执行做优化重排序,不会对有依赖关系性的做重排序。 编译器优化的重排序。编译器在不改变单线程程序语义放入前提下,可以重新安排语句的执行顺序。 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果
阅读全文
摘要:java内存模型 内存模型和内存结构区别 它们是两个概念。 内存模型是和jvm多线程相关的。 内存结构是指的jvm内存结构。 内存模型的作用 内存模型简称JMM JMM是决定一个线程对共享变量的写入时,能够对另一个线程是否可见。抽象概念。 主内存:共享内存变量 本地内存:共享变量的副本。 共享内存模
阅读全文
摘要:volatile 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值。 在Java中为了加快程序的运行效率,对一些变量的操作通常是在该线程的寄存器或是CPU缓存上进行的,之后才会同步到主存中,而加了vo
阅读全文
摘要:ThreadLocal ThreadLocal提供了线程独有的局部变量,可以在整个线程存活的过程中随时取用,极大地方便了一些逻辑的实现. 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线
阅读全文
摘要:java线程 概述 进程:运行时概念,运行的应用程序,进程间不能共享内存 线程:应用程序内并发执行的代码段,可以共享堆内存和方法区内存,而栈内存是独立的。 并发理解:在单核机器上,从微观角度来看,一段时间内cup只能执行一个任务,但是因为cup在只执行一段代码段的时候大部分的时间是处于等待程序的,所
阅读全文
摘要:socket 原理 什么是socket 我们知道进程通信的方法有管道、命名管道、信号、消息队列、共享内存、信号量,这些方法都要求通信的两个进程位于同一个主机。但是如果通信双方不在同一个主机又该如何进行通信呢?在计算机网络中我们就学过了tcp/ip协议族,其实使用tcp/ip协议族就能达到我们想要的效
阅读全文
摘要:TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准。 从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个T
阅读全文
摘要:rpc 什么是 RPC RPC 是远程过程调用(Remote Procedure Call)的缩写形式,Birrell 和 Nelson 在 1984 发表于 ACM Transactions on Computer Systems 的论文《Implementing remote procedure
阅读全文
摘要:架构模式中的Active Record和Data Mapper 概念 在简单应用中,领域模型是一种和数据库结构一致的简单结构,对应每个数据库表都有一个领域类,在这种情况下,有必要让每个对象负责数据库的存取过程,这也就是Active Record(活动记录)。 领域对象直接鱼数据库表进行交互,这带来了
阅读全文
摘要:构建器模式 构建器模式优点 为了解决安全性问题,使用final限制属性不可变并移除setter方法等; 为了解决可读性和扩展性问题,通过使用静态嵌套类,在其中设置可变参数方法等; 相对于传统的setter/getter方法, 传统的方式成员变量不可以是 final 类型,失去了不可变对象的很多好处;
阅读全文
摘要:[TOC] linux Io模型 相关概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不
阅读全文
摘要:幂等性 定义 WEB资源或API方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。 场景 表单重复提交 尤其HTTP POST 操作既不是安全的,也不是幂等的(至少在HTTP规范里没有保证)。当我们因为反复刷新浏览器导致多次提交表单,多次发出同样的POST请求,导致远端服务器重复创建出了
阅读全文
摘要:laravel 操作多数据库总结 读写分离 env配置 database.php配置 读、写库选择 如果不手动选择的话,数据库会自动判断读写库的选择。 多数据库 默认使用mysql这个数据库 database.php配置 方式一:model配置 方式二:可以不再model中配置,在使用的时候,通过$
阅读全文
摘要:微服务浅述 架构演进 提到架构演进,我们很容易想到‘单体应用 分布式/SOA 微服务’的演进过程,那么为什么会有这个必然演进?演进的过程中遇到了哪些坑?是怎么解决这些坑的? 为什么会有这个必然的架构演进? 因为痛点驱动。因为互联网公司很容易突然爆发,今年的数据量可能比去年的数据量翻上N倍。那么刚开始
阅读全文
摘要:分布式锁 解决分布式锁的核心思路 在多台服务器集群中,只能够保证一个jvm/进程进行操作。 基于数据库 不建议 性能不好 基于redis 多个客户端,使用setnx命令方式,同时在redis上创建相同的一个key,因为rediskey不能够允许重复,谁能创建key成功,返回1,谁就能够获取到锁。没有
阅读全文
摘要:laravel自动生成model 添加PHP扩展 config/app注册GeneratorServiceProvider类 开始生成 //以yd_order_from 表为例 CREATE TABLE ( int(50) unsigned NOT NULL AUTO_INCREMENT COMME
阅读全文
摘要:quartz 概述 特点 强大的调度功能 灵活的应用方式 分布式和集群能力 用到的设计模式 Builder 模式 factory模式 组件模式 链式写法 体系结构 调度器 任务 触发器 架构图 spring boot quartz pom配置 编写job类 编写quartz定义类
阅读全文
摘要:laravel 队列服务使用总结 使用步骤 配置队列驱动 迁移队列需要的数据表,在数据库中生成job表 php artisan queue:table php artisan migrate 编写任务类 php artisan make:job ProcessPodcast 推送任务到队列 运行队列
阅读全文