Hprose 3.0 for .NET 采用模块化设计。目前共分 7 个包,它们分别是:
- Hprose.IO
- Hprose.RPC
- Hprose.RPC.Plugins
- Hprose.RPC.Codec.JSONRPC
- Hprose.RPC.Owin
- Hprose.RPC.AspNet
- Hprose.RPC.AspNetCore
经过一年的开发,Hprose 3.0 for .NET 终于基本上完成了。
这次升级对 Hprose for .NET 进行了重新设计。去掉了一些不常用的功能,新增插件机制,提升了可扩展性,并提供了许多常用插件,取消了对一些过时的 .NET 平台的支持。仅保留了对 .NET 3.5 Compact Framework、.NET 4.0+、.NET Core 2.0+、.NETStandard 2.0+(包含 Android、iOS、Mac 平台)的支持。
这次升级后的代码,使用了最新版本的 C# 的语法来编写,代码在可读性和性能上较之之前的版本都有了极大的改进。
下面我们就来看看 Hprose 3.0 for .NET 在 VS2019 下该如何编译。
首先,操作系统我使用的是当下的最新版本的 Windows 10(1809-17763.316),其他旧版本的 Windows 操作系统不保证一定可以成功。
从 hprose/hprose-dotnet 下载最新版本的代码。如果你不打算提交你的修改,最好不要使用 git clone 来下载整个项目,因为使用 git clone 下载的内容有 300 多 M。直接点 Download ZIP 来下载,只有 300 多 K。
然后下载 VS2019 并安装,免费的社区版就可以,专业版和企业版应该也没问题。
之后,下载最新的 .NET Core 3.1 和 .NET Framework 4.8 开发包 安装。
接下来,下载 .NET Compact Framework 3.5 Redistributable 并安装。
.NET Compact Framework 3.5 安装之后位置在:C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE
,将其中的文件复制到:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\CompactFramework
。
在该目录中新建目录 RedistList
,在目录 RedistList
中创建文件 FrameworkList.xml
,内容为:
|
接下来,就可以用 VS2019 打开 Hprose.sln
进行编译了。
经过一年的开发,Hprose 3.0 for .NET 的序列化反序列化部分终于基本上完成了。
这次升级是完全重写了 Hprose for .NET 的代码。
之前的 Hprose 1.x for .NET 兼容 .NET 所有的平台版本,包括 .NET Framework 、.NET Compact Framework、.NET Micro Framework、SilverLight、Windows Phone、Mono、.NET Core 等。
这次升级取消了对一些过时的 .NET 平台的支持。仅保留了对 .NET 3.5 Compact Framework、.NET 4.0+、.NET Core 2.0+、.NETStandard 2.0(包含 Android、iOS、Mac 平台)的支持。
这次升级后的代码,使用了最新版本的 C# 的语法来编写,代码在可读性和性能上较之之前的版本都有了极大的改进。
下面我们就来看看 Hprose 3.0 for .NET 序列化究竟有多快。
首先来看一下对象数组序列化反序列化性能对比,测试代码为:BenchmarkObjectSerialize.cs,测试结果如下表所示:
Hprose 3.0 相对于 1.x 相比,增加了对 DataSet、DataTable 序列化和反序列化的支持。下面是 DataSet 序列化反序列化性能对比,测试代码为:BenchmarkDataSetSerialize.cs,测试结果如下表所示:
从上面两个图表可以看出,虽然 Newton Json 的序列化反序列化性能跟 .NET 自带的 DataContract 相比已经高出很多,但是 Hprose 比 Newton Json 还要快 1 倍左右。这是怎么做到的呢?下面我们就来详细剖析一下。
阅读全文…今天装了一台阿里云上的服务器,打算安装 nginx、php 和 mysql。系统一开始是 debian 8,所以需要先升级一下。
首先进入 /etc/apt/sources.list.d
目录,里面有个阿里云安装源的配置文件,把它内容删除,然后改成:
deb http://mirrors.aliyun.com/debian stretch main contrib non-free |
接下来执行:
sudo apt update |
然后确认一下,就是漫长的等待了。下载完所有的安装包之后,会有一个升级列表说明,看不看无所谓了,直接输入 q 就可以退出继续了。后面会遇到几处确认,因为是新装的系统,所以没什么顾及,都选 Y 就可以了。
安装完成后,再执行:
sudo apt autoremove --purge |
把没有用的包清理掉就可以了。
阅读全文…之前在开发 hprose for .NET 时,因为老版本的 Visual Studio 不支持创建面向多个目标框架的 .NET 项目,所以只能在一个 .NET 工程下面为每个目标框架的 .NET 版本创建一个 csproj 项目文件,费时又费力。所以我甚至一度抛弃创建 .NET 工程项目,用编写 bat 文件的命令行方式来编译 hprose for .NET 的 dll 类库。
现在要开发 hprose 3.0 for .NET 时,我希望能够在这方面省点事,毕竟现在的 .NET 跟之前比起来,版本更多了,而且还增加了许多跨平台的目标框架,如果还用 bat 的方式来编译打包,想一想都是很头疼的事情。
微软估计也考虑到了这一点,所以现在终于在 Visual Studio 2017/2019 中提供了一种新的 csproj 格式,使用这种格式,就可以创建面向多个目标框架的 .NET 项目了。这对于开发多目标框架的 .NET 库来说,无疑是提供了很大的便利。
阅读全文…这两天测试 PowerShell 环境,顺便写了一个小程序 lolcat
用来检测 Windows 控制台是否支持 24 位色,这个程序原版是 ruby 写的,用来以彩虹色显示文本。它还有一些其它语言的移植,比如 python,c,js,rust,go 等。不过都不太适合在 PowerShell 环境下运行,一是需要安装运行环境,或者需要自己编译,这一点倒还好说,只是比较麻烦而已。第二点就比较致命了,PowerShell 的管道传递的是对象,而其它语言实现的版本,只能处理文本,所以如果在 PowerShell 中使用其它语言实现的 lolcat
跟管道结合使用的话,要么显示的不是你想要的东西,要么干脆就挂掉了。所以,我花了两天时间写了这个 PowerShell 的版本。它可以工作在 Windows 10 自带的 PowerShell 环境下,也可以工作在跨平台的 PowerShell 6.0+ 环境下。
项目地址是:https://github.com/andot/lolcat,欢迎大家点赞~
阅读全文…前一篇文章介绍了如何美化 PowerShell,今天来写几个比较实用的 PowerShell 脚本。
阅读全文…因为最近开始 Hprose 2.0 for .NET 的开发工作了,所以使用的操作系统从 Mac OS X 转到了 Windows 10 上来。在之前用 Mac OS X 和 Linux 时,命令行是经常用到的,转到 Windows 10 上之后,虽然大部分操作通过图形界面都可以完成了,但是有些操作还是会用到命令行,但是 Windows 10 的默认命令行控制台实在是丑的要命,让人感觉不爽。所以,我最后打算先把 Windows 10 的控制台美化一下,接下来工作时,也会变得心情舒畅。
阅读全文…星期在日语中用「曜日」表示,一周七天分别为:
周日 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 |
---|---|---|---|---|---|---|
日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 |
にちようび | げつようび | かようび | すいようび | もくようび | きんようび | どようび |
也就是说,这一周七天是日月加五行构成,只不过五行的顺序不太好记,网上流传着这样一个记忆法,只需看一遍便能记住:
周日对应日,都有个「日」字
周一对应月,天上只有一个月亮
周二对应火,火字上面有两个点
周三对应水,有个偏旁叫三点水
周四对应木,「木」字有四笔构成
周五对应金,有种商店叫五金店
周六对应土,其它的都分完了,就剩它了,所以就分给周六了。
现在你记住了吗?
提问星期的疑问词是「何曜日(なんようび)」。
在日语中,年份按照全部数字的位数来读。
1980年 (せんきゅうひゃくはちじゅうねん)
2006年 (にせんろくねん)
昭和64年(しょうわろくじゅうよねん)
一月(いちがつ)
二月(にがつ)
三月(さんがつ)
四月(しがつ)
五月(ごがつ)
六月(ろくがつ)
七月(しちがつ)
八月(はちがつ)
九月(くがつ)
十月(じゅうがつ)
十一月(じゅういちがつ)
十二月(じゅうにがつ)
月份没什么难点,注意一下 4、7、9 月的读音就可以了。
1日(ついたち)
2日(ふつか)
3日(みっか)
4日(よっか)
5日(いつか)
6日(むいか)
7日(なのか)
8日(ようか)
9日(ここのか)
10日(とおか)
11日(じゅういちにち)
12日(じゅうににち)
13日(じゅうさんにち)
14日(じゅうよっか)
15日(じゅうごにち)
16日(じゅうろくにち)
17日(じゅうしちにち)
18日(じゅうはちにち)
19日(じゅうくにち)
20日(はつか)
21日(にじゅういちにち)
22日(にじゅうににち)
23日(にじゅうさんにち)
24日(にじゅうよっか)
25日(にじゅうごにち)
26日(にじゅうろくにち)
27日(にじゅうしちにち)
28日(にじゅうはちにち)
29日(にじゅうくにち)
30日(さんじゅう)
31日(さんじゅういちにち)
其中,1-10 日和 20 日是训读,11-19,21-31 日是音读(14 日、24 日比较特殊,前面是音读,后面是训读)。
几个周和几年跟小时,分,秒一样,是在后面加「間(かん)」就可以了。比如:
一週間(いっしゅうかん)
三週間(さんしゅうかん)
十週間(じっしゅうかん)
五年間(ごねんかん)
需要注意的是 1、10 周有促音变。
几个月用量词「か」,可以写作「ヶ」「か」「ヵ」「個」等,而且月数的月读音为「げつ」,跟月份的月「がつ」的读音不同。例如:
一ヶ月(いっかげつ)
二ヶ月(にかげつ)
三ヶ月(さんかげつ)
四ヶ月(よんかげつ)
五ヶ月(こかげつ)
六ヶ月(ろっかげつ)
七ヶ月(ななかげつ)
八ヶ月(はっかげつ/はちかげつ)
九ヶ月(きゅうかげつ)
十ヶ月 (じっかげつ/じゅうかげつ)
注意,1、6、8、10 个月有促音变,8 和 10 个月也有不发生音变的读法。
另外,一个月,两个月还有训读法:
一月(ひとつき)
二月(ふたつき)
所以,在文章中看到「一月」「二月」时,要根据上下文来判断是指的月份还是月数,如果是前者就读「いちがつ」「にがつ」,如果是后者就读「ひとつき」「ふたつき」。
一天写作「一日」,但是读作「いちにち」,作为一号的时候,读作「ついたち」。这两个不能混淆。其它的天数跟日期的读法是一样的,为了避免混淆,也可以在后面加上「間(かん)」来表示天数。
大前天 | 前天 | 昨天 | 今天 | 明天 | 后天 | 大后天 |
---|---|---|---|---|---|---|
一昨昨日 | 一昨日 | 昨日 | 今日 | 明日 | 明後日 | 明明後日 |
さきおととい | おととい | きのう | きょう | あした | あさって | しあさって |
上上周 | 上周 | 本周 | 下周 | 下下周 |
---|---|---|---|---|
先々週 | 先週 | 今週 | 来週 | 再来週 |
せんせんしゅう | せんしゅう | こんしゅう | らいしゅう | さらいしゅう |
上上个月 | 上个月 | 这个月 | 下个月 | 下下个月 |
---|---|---|---|---|
先々月 | 先月 | 今月 | 来月 | 再来月 |
せんせんげつ | せんげつ | こんげつ | らいげつ | さらいげつ |
大前年 | 前年 | 去年 | 今年 | 明年 | 后年 | 大后年 |
---|---|---|---|---|---|---|
一昨々年 | 一昨年 | 去年 | 今年 | 来年 | 再来年 | 大後年 |
さきおととし | おととし | きょねん | ことし | らいねん | さらいねん | だいこうねん |
今天来集中学习一下日语的时间名词。
1時(いちじ)
2時(にじ)
3時(さんじ)
4時(よじ)
5時(ごじ)
6時(ろくじ)
7時(しちじ)
8時(はちじ)
9時(くじ)
10時(じゅうじ)
11時(じゅういちじ)
12時(じゅうにじ)
13時(じゅうさんじ)
14時(じゅうよじ)
15時(じゅうごじ)
16時(じゅうろくじ)
17時(じゅうしちじ)
18時(じゅうはちじ)
19時(じゅうくじ)
20時(にじゅうじ)
21時(にじゅういちじ)
22時(にじゅうにじ)
23時(にじゅうさんじ)
24時(にじゅうよじ)
0時(れいじ)
半点用「半(はん)」来表示,例如:
1時半(いちじはん)
9時半(くじはん)
23時半(にじゅうさんじはん)
疑问词用「何時(なんじ)」。
上面的都是时间点,如果要表示时间段,比如 3 个小时,而不是 3 点钟,只需要在后面加上「‐間(かん)」就可以了,比如:
3時間(さんじかん)
11時間半(じゅういちじかんはん)
用来表示时间段的疑问词是「何時間(なんじかん)」。
1分(いっぷん)
2分(にふん)
3分(さんぷん)
4分(よんぷん)
5分(ごふん)
6分(ろっぷん)
7分(ななふん/しちふん)
8分(はっぷん/はちふん)
9分(きゅうふん)
10分(じっぷん/じゅっぷん)
11分(じゅういっぷん)
14分(じゅうよんぷん)
20分(にじっぷん/にじゅっぷん)
25分(にじゅうごふん)
100分(ひゃっぷん)
分钟的个位数为 1,6,8,10 时会发生促音变,此外,个位为 3 和 4 时也读「ぷん」。
提问分钟的疑问词是「何分(なんぷん)」。
提问时间的疑问词可以是「何時何分(なんじなんぷん)」,也可以用「いつ」,但是「いつ」的意思是什么时候,表示的范围更广一些。
秒直接在数字后面跟「秒(びょう)」就可以了,读音都一样。
分,秒也可以在后面加「‐間(かん)」来表示时间段。
日语 | 中文 |
---|---|
日の出(ひので) | 日出 |
朝(あさ) | 早上 |
午前(ごぜん) | 上午 |
昼(ひる) | 中午,白天 |
午後(ごご) | 下午 |
夕方(ゆうがた) | 傍晚 |
夕暮れ(ゆうぐれ) | 黄昏 |
日の入り(ひのいり) | 日落 |
晩(ばん) | 晚上 |
夜(よる) | 夜晚 |
真夜中(まよなか) | 午夜 |
夜通し(よどおし) | 通宵 |
夜明け(よあけ) | 黎明 |
表示昨天晚上还有几个特别的词:昨夜(さくや)、昨夜(ゆうべ)、昨晩(さくばん)。
今天晚上是「今晩(こんばん)」。就是「こんばんは」(晚上好)里面的「こんばん」。
阅读全文…