草庐IT

搞懂EventLoop机制

全部标签

gRPC(Google远程过程调用)根据.proto文件生成代码机制(grcp_cpp_plugin插件)详解。

    这几天一直在研究grpc,谷歌的远程调用系统,这套系统谷歌开源在了github上,直接搜索grpc,star最高的就是项目本尊,我怀着好奇的心情去研究它,却被它蹂躏的很惨,道一句“珍爱生命,远离谷歌”。本篇大概分为这几部分:grpc项目的编译、简单样例的使用、grpc自动生成通讯代码浅谈、总结。目录一、Windows平台下编译grpc1.代码下载2.代码编译二、 简单样例的使用1.VS内依赖的配置2.demo的调用过程  三、代码生成机制 1.Protoc部分2.代码生成的插件部分(grpc_cpp_plugin)总结一、Windows平台下编译grpc        环境准备:   

gRPC(Google远程过程调用)根据.proto文件生成代码机制(grcp_cpp_plugin插件)详解。

    这几天一直在研究grpc,谷歌的远程调用系统,这套系统谷歌开源在了github上,直接搜索grpc,star最高的就是项目本尊,我怀着好奇的心情去研究它,却被它蹂躏的很惨,道一句“珍爱生命,远离谷歌”。本篇大概分为这几部分:grpc项目的编译、简单样例的使用、grpc自动生成通讯代码浅谈、总结。目录一、Windows平台下编译grpc1.代码下载2.代码编译二、 简单样例的使用1.VS内依赖的配置2.demo的调用过程  三、代码生成机制 1.Protoc部分2.代码生成的插件部分(grpc_cpp_plugin)总结一、Windows平台下编译grpc        环境准备:   

Git基础 - git tag 一文真正的搞懂git标签的使用

1.什么是tag1.1tag的简单理解tag中文我们可以称它为标签。简单的理解,tag就是对某次commit的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次commit起一个v1.0.100这样的标签来标识里程碑的意义。1.2tag的类型有两种类型的标签:轻量标签(lightweight)、附注标签(annotated)【轻量标签】:只是某个commit的引用,可以理解为是一个commit的别名;【附注标签】:是存储在git仓库中的一个完整对象,包含打标签者的名字、电子邮件地址、日期时间以及其他的标签信息。它是可以被校验的,可以使用GNUPrivacyGuard(G

Git基础 - git tag 一文真正的搞懂git标签的使用

1.什么是tag1.1tag的简单理解tag中文我们可以称它为标签。简单的理解,tag就是对某次commit的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次commit起一个v1.0.100这样的标签来标识里程碑的意义。1.2tag的类型有两种类型的标签:轻量标签(lightweight)、附注标签(annotated)【轻量标签】:只是某个commit的引用,可以理解为是一个commit的别名;【附注标签】:是存储在git仓库中的一个完整对象,包含打标签者的名字、电子邮件地址、日期时间以及其他的标签信息。它是可以被校验的,可以使用GNUPrivacyGuard(G

重大发现,AQS加锁机制竟然跟Synchronized有惊人的相似

在并发多线程的情况下,为了保证数据安全性,一般我们会对数据进行加锁,通常使用Synchronized或者ReentrantLock同步锁。Synchronized是基于JVM实现,而ReentrantLock是基于Java代码层面实现的,底层是继承的AQS。AQS全称AbstractQueuedSynchronizer,即抽象队列同步器,是一种用来构建锁和同步器的框架。我们常见的并发锁ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier都是基于AQS实现的,所以说不懂AQS实现原理的,就不能说了解Java锁。当我仔细研究AQS底层加锁原理,发

重大发现,AQS加锁机制竟然跟Synchronized有惊人的相似

在并发多线程的情况下,为了保证数据安全性,一般我们会对数据进行加锁,通常使用Synchronized或者ReentrantLock同步锁。Synchronized是基于JVM实现,而ReentrantLock是基于Java代码层面实现的,底层是继承的AQS。AQS全称AbstractQueuedSynchronizer,即抽象队列同步器,是一种用来构建锁和同步器的框架。我们常见的并发锁ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier都是基于AQS实现的,所以说不懂AQS实现原理的,就不能说了解Java锁。当我仔细研究AQS底层加锁原理,发

Java 继承和多态的重点&动态绑定机制&instanceOf(看源码必备知识!)

在看集合源码的时候,因为对继承和多态的知识有些模糊,导致看源码比较吃力。所以重新回顾一下面向对象的继承和多态,顺便记录一下重点。继承子类会继承父类的所有属性和方法,但私有属性和方法在子类不能直接访问,需要通过父类提供的公共方法访问;子类必须调用父类的构造器,完成父类的初始化(创建子类对象时会调用父类的无参构造器,其实在子类的无参构造方法的第一行默认有super());创建子类对象时,不管子类使用有参构造还是无参构造,默认情况下总会去调用父类的无参构造。如果父类没有写无参构造器(当父类写了有参构造器而没写无参构造器,那么无参构造器就没有了),那么子类的构造器要用super()指定使用父类的什么构

Java 继承和多态的重点&动态绑定机制&instanceOf(看源码必备知识!)

在看集合源码的时候,因为对继承和多态的知识有些模糊,导致看源码比较吃力。所以重新回顾一下面向对象的继承和多态,顺便记录一下重点。继承子类会继承父类的所有属性和方法,但私有属性和方法在子类不能直接访问,需要通过父类提供的公共方法访问;子类必须调用父类的构造器,完成父类的初始化(创建子类对象时会调用父类的无参构造器,其实在子类的无参构造方法的第一行默认有super());创建子类对象时,不管子类使用有参构造还是无参构造,默认情况下总会去调用父类的无参构造。如果父类没有写无参构造器(当父类写了有参构造器而没写无参构造器,那么无参构造器就没有了),那么子类的构造器要用super()指定使用父类的什么构

从XXE漏洞修复引起Not supported: http://javax.xml.XMLConstants/property/accessExternalDTD说到SPI机制

引子   在使用Fortify扫描时代码报XMLExternalEntityInjection,此漏洞为xml实体注入漏洞,XXE攻击可利用在处理时动态构建文档的XML功能。修复方案也包含了增加安全配置,使它不允许将外部实体包含在传入的XML文档中。  具体在修复过程中,代码在解析drools的transfer.xls时,调用代码中增加内容,包括serFeature和setAttributeTransformerFactoryfactory=TransformerFactory.newInstance(); factory.setFeature(XMLConstants.FEATURE_SE

从XXE漏洞修复引起Not supported: http://javax.xml.XMLConstants/property/accessExternalDTD说到SPI机制

引子   在使用Fortify扫描时代码报XMLExternalEntityInjection,此漏洞为xml实体注入漏洞,XXE攻击可利用在处理时动态构建文档的XML功能。修复方案也包含了增加安全配置,使它不允许将外部实体包含在传入的XML文档中。  具体在修复过程中,代码在解析drools的transfer.xls时,调用代码中增加内容,包括serFeature和setAttributeTransformerFactoryfactory=TransformerFactory.newInstance(); factory.setFeature(XMLConstants.FEATURE_SE