草庐IT

01.Go-开篇综述

1.1语言介绍Go语言由谷歌(Google)公司于2009年正式对外发布,设计Go语言的初衷都是为了满足Google公司的需求。主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、执行性能好”等优势。最主要还是为了并发而生,并发是基于goroutine的,goroutine类似于线程,但并非线程,可以将goroutine理解为一种轻量级线程。Go语言运行时会参与调度goroutine,并将goroutine合理地分配到每个CPU中,最大限度地使用CPU性能。1.2作者介绍从左到右分别

01.Go-开篇综述

1.1语言介绍Go语言由谷歌(Google)公司于2009年正式对外发布,设计Go语言的初衷都是为了满足Google公司的需求。主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、执行性能好”等优势。最主要还是为了并发而生,并发是基于goroutine的,goroutine类似于线程,但并非线程,可以将goroutine理解为一种轻量级线程。Go语言运行时会参与调度goroutine,并将goroutine合理地分配到每个CPU中,最大限度地使用CPU性能。1.2作者介绍从左到右分别

我的Go并发之旅、01 并发哲学与并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科

我的Go并发之旅、01 并发哲学与并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科

我的Go gRPC之旅、01 初识gRPC,感受gRPC的强大魅力

微服务架构微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任务)的服务。为什么微服务软件系统需要借助进程间(服务间,应用程序间)通信技术?传统软件系统被进一步拆分为一组细粒度,自治和面向业务能力的实体,也就是微服务。强、弱类型接口服务API接口有强、弱类型之分。强类型接口 传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用T

我的Go gRPC之旅、01 初识gRPC,感受gRPC的强大魅力

微服务架构微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。将软件应用程序构建为一组独立、自治(独立开发、部署和扩展)、松耦合、面向业务能力(强调能力,而不是完成任务)的服务。为什么微服务软件系统需要借助进程间(服务间,应用程序间)通信技术?传统软件系统被进一步拆分为一组细粒度,自治和面向业务能力的实体,也就是微服务。强、弱类型接口服务API接口有强、弱类型之分。强类型接口 传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用T

day01-Mybatis介绍与入门

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,在

day01-Mybatis介绍与入门

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背包双重限制之限制一个最大一个最小)

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]

P8548小挖的买花(01背包双重限制之限制一个最大一个最小)

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]