草庐IT

我的Go gRPC之旅、02 四种通信模式

借助gRPC我们可以实现不同进程间通信模式(也称RPC风格)。repeated关键字messageOrder{stringid=1;repeatedstringitems=2;stringdescription=3;floatprice=4;stringdestination=5;}使用repeated表明这个字段在消息中可以重复出现多次,包括0次。编译成go,结构体会表示成一个切片。一元RPC模式01初识gRPC,感受gRPC的强大魅力-小能日记-博客园一元RPC模式也被称为简单RPC模式。在该模式中,当客户端调用服务器端的远程方法时,客户端发送请求至服务器端并获得一个响应,与响应一起发送的

深入C++02:深入学习C++还必须掌握的基础

?深入学习C++还必须掌握的基础掌握形参带默认的函数1.给默认值方向:从右向左给默认值;2.调用效率:如果传默认值或者立即数(不需要从容器或内存取取的数字)的话都是直接将数字直接push进栈;没有mov汇编指令的操作;(面试回答要往汇编上描述)3.默认值给的地方:定义和声明处均可以给默认值;4.形参给默认值的时候,定义是可以多次定义这个函数的,都可以给默认值,声明的时候也可以给,但是每个参数的默认值只能出现一次;掌握inline内联函数函数调用开销:就是汇编生成的一系列指令,生成栈帧,对栈顶和栈底指针不断操作等,对于函数命令少,执行多次,函数调用开销大,不值得;1.内联函数和普通函数的区别:①

深入C++02:深入学习C++还必须掌握的基础

?深入学习C++还必须掌握的基础掌握形参带默认的函数1.给默认值方向:从右向左给默认值;2.调用效率:如果传默认值或者立即数(不需要从容器或内存取取的数字)的话都是直接将数字直接push进栈;没有mov汇编指令的操作;(面试回答要往汇编上描述)3.默认值给的地方:定义和声明处均可以给默认值;4.形参给默认值的时候,定义是可以多次定义这个函数的,都可以给默认值,声明的时候也可以给,但是每个参数的默认值只能出现一次;掌握inline内联函数函数调用开销:就是汇编生成的一系列指令,生成栈帧,对栈顶和栈底指针不断操作等,对于函数命令少,执行多次,函数调用开销大,不值得;1.内联函数和普通函数的区别:①

我的设计模式之旅、02 单例模式(第二次更新)

编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结什么是单例模式单例模式(SingletonPattern)属于创建型模式,它提供了一种创建对象的最佳方式。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。含义:这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。职责角度看,实例化与否不应该由使用方判断,而是应该由自己来判断。将实例化判断过程迁移到GetInstance()函数。Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以

我的设计模式之旅、02 单例模式(第二次更新)

编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结什么是单例模式单例模式(SingletonPattern)属于创建型模式,它提供了一种创建对象的最佳方式。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。含义:这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。职责角度看,实例化与否不应该由使用方判断,而是应该由自己来判断。将实例化判断过程迁移到GetInstance()函数。Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以

PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台

为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象。虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱。根据常见开发需要,数据库连接串、数据库元数据管理基本上是合格的开发人员必须要用到的功能。一、数据库连接数据库连接串管理起来不难,但是写法随意可能造成编程开发的混乱。通常我们写的应用程序,如果要访问数据库,除了调用远程API服务,基本都会配置一个或多个数据库连接串,有数据库密码安全需要的还需要配置安全模块。随着应用增多,数据库连接串使用容易失控。我个人在某厂碰到过某大型CS结构的应用程序,WinForm客户端赫然写着各种数据

PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台

为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象。虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱。根据常见开发需要,数据库连接串、数据库元数据管理基本上是合格的开发人员必须要用到的功能。一、数据库连接数据库连接串管理起来不难,但是写法随意可能造成编程开发的混乱。通常我们写的应用程序,如果要访问数据库,除了调用远程API服务,基本都会配置一个或多个数据库连接串,有数据库密码安全需要的还需要配置安全模块。随着应用增多,数据库连接串使用容易失控。我个人在某厂碰到过某大型CS结构的应用程序,WinForm客户端赫然写着各种数据

我的Go并发之旅、02 基本并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键

我的Go并发之旅、02 基本并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键

day02-容器功能

容器功能1.Spring注入组件的注解Spring中的传统注解@Component、@Controller、@Service、@Repository,在SpringBoot中仍然有效。2.@Configuration@Configuration是Spring3.0添加的一个注解,用来代替原先Spring中的applicationContext.xml容器配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。在SpringBoot项目中,依然可以使用Spring的容器文件来注入bean/获取bean,但是不推荐使用2.1应用实例例子:使用SpringBoot的注解@Con