Structs

C# 中的只读结构体(readonly struct)

笑着哭i 提交于 2020-10-29 16:56:51
翻译自 John Demetriou 2018年4月8日 的文章 《C# 7.2 – Let’s Talk About Readonly Structs》 [1] 在本文中,我们来聊一聊从 C# 7.2 开始出现的一个特性 readonly struct 。 任一结构体都可以有公共属性、私有属性访问器等等。我们从以下结构体示例来开始讨论: public struct Person { public string Name { get; set; } public string Surname { get; set; } public int Age { get; set; } public Person(string name, string surname, int age) { Name = name; Surname = surname; Age = age; } public void Replace(Person other) { this = other; } } 如您所见,所有属性都可以公开访问和修改。更糟糕的是,我们甚至可以访问 this (通过调用 Replace 方法),将其更改为同一结构体类型的另一个实例。 这就是 readonly 关键字出现的原因。如果( 仅 )在结构体的定义中添加它,如下所示: public readonly struct Person

Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]

与世无争的帅哥 提交于 2020-08-19 03:19:16
Golang作为一个略古怪而新的语言,有自己一套特色和哲学。从其他语言转来的开发者在刚接触到的时候往往大吃苦头,我也不例外。这篇文章很细致地介绍了Golang的一些常见坑点,读完全篇中枪好多次。故将其转载。由于文章很长,分为上下两部分,第一部分记录初级篇,第二部分记录进阶和高级篇:此为第二部分 目录 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing 不使用显式类型,无法使用“nil”来初始化变量 使用“nil” Slices and Maps Map的容量 字符串不会为“nil” Array函数的参数 在Slice和Array使用“range”语句时的出现的不希望得到的值 Slices和Arrays是一维的 访问不存在的Map Keys Strings无法修改 String和Byte Slice之间的转换 String和索引操作 字符串不总是UTF8文本 字符串的长度 在多行的Slice、Array和Map语句中遗漏逗号 log.Fatal和log.Panic不仅仅是Log 内建的数据结构操作不是同步的 String在“range”语句中的迭代值 对Map使用“for range”语句迭代 "switch"声明中的失效行为

阿里P9架构师推荐的Spring领域巅峰之作,颠覆了我对Spring的认知

匆匆过客 提交于 2020-07-28 09:48:37
写在前面 你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了解spring都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做spring的框架,这个框架号称完爆之前的structs和structs2,吸引了不少人的注意。 今天给大家分享一份阿里P9架构师推荐的Spring领域巅峰之作 《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》 ,我读完这本书之后彻底颠覆了我对Spring的认知。 本书从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从Spring优雅的实现源码中一窥Java语言的精髓。 适读人群: 无论你是Java程序员、Spring开发者,还是平台开发人员、系统架构师,抑或是对开源软件源代码着迷的代码狂人,都能从本书中受益。 转发+关注,然后添加我的VX:tkzl6666 即可获得《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》电子版的免费领取方式 内容结构 本书主要内容分为三个部分,分别阐述了Spring的核心、组件和应用三个方面。在展开这三个部分的内容之前,第1章对Spring的项目情况和整体架构进行了简要的介绍,这一章就像一个热身活动,为本书的主要内容做铺垫,如果您已经很熟悉Spring的使用

使用metaweblog API实现通用博客发布 之 API测试

时光毁灭记忆、已成空白 提交于 2020-04-27 11:43:09
使用metaweblog API实现通用博客发布 之 API测试 使用博客比较少,一则是文笔有限,怕写出的东西狗屁不通,有碍观瞻, 二则是懒,很讨厌要登录到网站上写东西,也没有那么多时间(借口)。个人最喜欢用于记录的工具是Zim https://zim-wiki.org/ ,记录东西超级方便,可惜只支持PC版本, 记录的东西可以到处为MarkDown 格式,非常方便(你现在看到的这篇就是用Zim写的)。 无意间看到Vs Code上有博客园的插件,作为程序员,顺手google/百度了一下,原来通用博客都支持使用metaweblog API来访问,还支持直接发布markdown 格式,简直不要太好。 找了找2年前注册的博客源账号,用来测试一下。 发挥典型中国程序员的拿来主义精神,经过goolgle/百度一番搜索,参考以下文档进行API测试,在此表示感谢!! https://www.cnblogs.com/caipeiyu/p/5475761.html https://github.com/1024th/cnblogs_githook 1 在哪里找API说明 在博客设置最的最末端,有MetaWeblog 的访问地址链接 点击进入页面,有metaweblog API 的详细说明 具体内容不赘述了。 2 测试API 使用python3 进行API测试,直接上代码: #encoding =

C ++中'struct'和'typedef struct'之间的区别?

為{幸葍}努か 提交于 2019-12-19 18:47:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在C ++中,之间有什么区别: struct Foo { ... }; 和 typedef struct { ... } Foo; #1楼 您不能对typedef结构使用forward声明。 struct本身是一个匿名类型,因此您没有实际名称来转发声明。 typedef struct{ int one; int two; }myStruct; 像这样的前瞻声明不会起作用: struct myStruct; //forward declaration fails void blah(myStruct* pStruct); //error C2371: 'myStruct' : redefinition; different basic types #2楼 C ++中'typedef struct'和'struct'之间的一个重要区别是'typedef structs'中的内联成员初始化将不起作用。 // the 'x' in this struct will NOT be initialised to zero typedef struct { int x = 0; } Foo; // the 'x' in this struct WILL be initialised to zero struct Foo {

EOS cleos ABI transfer 推送操作

流过昼夜 提交于 2019-11-27 12:45:02
推送操作 根据合约ABI,消息应该是合约。 例如,货币合约的ABI被构造如下。 $ cleos get code -a currency.abi currency code hash: 9b9db1a7940503a88535517049e64467a6e8f4e9e03af15e9968ec89dd794975 saving abi to currency.abi $ cat currency.abi { "types": [{ "newTypeName": "AccountName", "type": "Name" } ], "structs": [{ "name": "transfer", "base": "", "fields": { "from": "AccountName", "to": "AccountName", "amount": "UInt64" } },{ "name": "account", "base": "", "fields": { "account": "Name", "balance": "UInt64" } } ], "actions": [{ "action": "transfer", "type": "transfer" } ], "tables": [{ "table": "account", "indextype": "i64",

EOS cleos get code 查询ABI

空扰寡人 提交于 2019-11-27 12:41:24
查询ABI 命令格式: $ cleos get code -a ${contract}.abi ${contract} 我们可以在区块链中查询合约的.abi,我们可以在其中查看可用操作列表及其各自的消息结构 $ cleos get code -a currency.abi currency code hash: 9b9db1a7940503a88535517049e64467a6e8f4e9e03af15e9968ec89dd794975 saving abi to currency.abi $ cat currency.abi { "types": [{ "newTypeName": "AccountName", "type": "Name" } ], "structs": [{ "name": "transfer", "base": "", "fields": { "from": "AccountName", "to": "AccountName", "amount": "UInt64" } },{ "name": "account", "base": "", "fields": { "account": "Name", "balance": "UInt64" } } ], "actions": [{ "action": "transfer", "type":