Java并发小结01主要参考自《实战Java高并发程序设计》。需要知道的概念-同步与异步-并发与并行-临界区-阻塞与非阻塞-死锁、饥饿、活锁同步与异步同步:同步方法一旦被调用,必须等待方法返回后才能继续后续的行为。异步:异步方法就像一个消息传递,被调用后方法会立即返回,调用者可以开始后续的行为。并发与并行并行:两个任务同时执行。并发:一段时间内,多个任务在CPU交替执行,看似并行。临界区用来表示一种可以被多个线程使用的公共资源,但是一次只能一个线程使用。一旦临界区被占用,其他线程只能等待。比如说打印机:一次只能打印一份文件,要是交替打印,那么打印出来的东西是不可用的。阻塞与非阻塞阻塞:一个线程
1.1语言介绍Go语言由谷歌(Google)公司于2009年正式对外发布,设计Go语言的初衷都是为了满足Google公司的需求。主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、执行性能好”等优势。最主要还是为了并发而生,并发是基于goroutine的,goroutine类似于线程,但并非线程,可以将goroutine理解为一种轻量级线程。Go语言运行时会参与调度goroutine,并将goroutine合理地分配到每个CPU中,最大限度地使用CPU性能。1.2作者介绍从左到右分别
1.1语言介绍Go语言由谷歌(Google)公司于2009年正式对外发布,设计Go语言的初衷都是为了满足Google公司的需求。主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、执行性能好”等优势。最主要还是为了并发而生,并发是基于goroutine的,goroutine类似于线程,但并非线程,可以将goroutine理解为一种轻量级线程。Go语言运行时会参与调度goroutine,并将goroutine合理地分配到每个CPU中,最大限度地使用CPU性能。1.2作者介绍从左到右分别
注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科
注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科
微服务架构微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任务)的服务。为什么微服务软件系统需要借助进程间(服务间,应用程序间)通信技术?传统软件系统被进一步拆分为一组细粒度,自治和面向业务能力的实体,也就是微服务。强、弱类型接口服务API接口有强、弱类型之分。强类型接口 传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用T
微服务架构微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任务)的服务。为什么微服务软件系统需要借助进程间(服务间,应用程序间)通信技术?传统软件系统被进一步拆分为一组细粒度,自治和面向业务能力的实体,也就是微服务。强、弱类型接口服务API接口有强、弱类型之分。强类型接口 传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用T
Mybatis介绍与入门1.官方文档Mybatis中文手册:mybatis–MyBatis3或者MyBatis中文网Maven仓库:MavenRepository:org.mybatis»mybatis»3.5.7(mvnrepository.com)2.概述2.1传统Java程序操作DB传统方式操作数据库的问题:需要自己去连接数据库,这段代码由程序员编写(不一定标准)程序不是OOP的方式来操作DB(我们希望在代码层面上是以对象的形式来操作,如insert(Object))SQL语句写在程序中,属于硬编码,没有解耦2.2Mybatis基本介绍Mybatis是一个持久层框架前身是ibatis,在
Mybatis介绍与入门1.官方文档Mybatis中文手册:mybatis–MyBatis3或者MyBatis中文网Maven仓库:MavenRepository:org.mybatis»mybatis»3.5.7(mvnrepository.com)2.概述2.1传统Java程序操作DB传统方式操作数据库的问题:需要自己去连接数据库,这段代码由程序员编写(不一定标准)程序不是OOP的方式来操作DB(我们希望在代码层面上是以对象的形式来操作,如insert(Object))SQL语句写在程序中,属于硬编码,没有解耦2.2Mybatis基本介绍Mybatis是一个持久层框架前身是ibatis,在
P8548小挖的买花(双重限制之限制一个最大一个最小)题目传送门:小挖的买花题解题目分析这道题目是一个多重限制的01背包变种,而且一个限制是限制最大,另一个是限制最小三维状态表示方式:dp[i][j][k],表示前i朵花,费用最大为j,新鲜度最少为k的状态中美丽度最大的状态状态转移:转移方式不选第i枝花直接由dp[i-1][j][k]转移来选第i枝花(判断是否满足限制金额大于等于第i枝花的金额)1.当前的花(第i枝花)直接能满足k需求(即第i枝花的新鲜度大于k)2.第i枝花新鲜度不够k,从之前减去第i枝花金额的j和减去第i枝花新鲜度的k的状态转移过来dp[i][j][k]=dp[i-1][j]