小柊

就是一个简单的孩子。
活在梦里的程序员。

本站所有文章转载时请注明原出处,谢谢合作。

C#/Python Json序列化时控制字段顺序

小柊 发表于 2018年08月13日 22时39分49秒

一、背景

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

 

Json广泛的用于数据传输的时候(比如Web的前后端数据传输),对于这种场景我们不会刻意的去控制对象序列化后,Json字符串中的字段顺序。因为在这种场景下,我们的要求只是能用就好。但一些特殊的情况,例如需要对一个对象进行Json序列化,并对产生的Json字符串进行RSA签名,那就一定要控制Json字符串中的字段顺序了。因为如果不严格的控制字段顺序,明明是一样的对象会因为序列化后Json字符串中的字段顺序不一致,导致产生的签名结果不一致。

那么,在C#和Python里,有什么方法可以控制对象字段在Json序列化时的顺序呢?

浏览内容

C# 拓展方法

小柊 发表于 2018年07月31日 22时41分25秒

一、序

拓展方法是C# 3.0中添加的一个新特性,虽然C# 3.0的推出已经过去很久了,但我还是想把这个拓展方法单独提出来和大伙讲讲——因为它真的真的太棒了!

虽然C#的拓展方法可能在您日常开发中很少会需要自己去写拓展方法,但您在日常的开发工作中,一定会多多少少用到一些库提供的拓展方法,因为有很多库的功能就是基于拓展方法提供的,比如说像.net自带的System.Linq命名空间下,提供的一系列关于集合查询的方法,以及Polly中Policy的定义等也会使用到拓展方法。可见拓展方法已经深深的融入到我们的开发生活中。

浏览内容

WordPress获得经过阿里云CDN服务的访客真实IP

小柊 发表于 2018年06月30日 23时48分08秒

一、背景

也记不得是去年阿里云搞的哪个活动了,反正笔者我在那会儿参加了一个CDN优惠购流量的活动,现在每个月都有20G的CDN流量包会充值进来。

毕竟自己也是花了钱的,不用就太可惜了。所以我把自己几个主要对外的网站都接入了阿里云的CDN服务。

不过在用了一段时间之后发现了一个问题,那就是后台看不到提交评论的用户IP了。

浏览内容

C# 如何像Python一样使用推导式?

小柊 发表于 2018年05月01日 21时51分20秒

序、扯淡

现在我做.net这块并不多,因为现在上班的公司不用.net。为了混口饭吃,就转去做Python开发了。

我一直觉得换一门主力开发语言并不是一件非常困难的事情,因为我认为编程语言只是思想的一种具体表达方式,用于构成一个程序的肉身,而一个程序里最重要的灵魂,是具体的编程思想、算法和设计模式组成的。

所以我也是这么和身边的人这么“传教”的,虽说语言本身也很重要,但算法设计模式等等千万别落下,各个语言自带的语法糖其实都可以用代码实现,万变不离其宗。

 

扯得有些远了,这次的题目主要是因为有个学弟,在我转到Python之后,也跟着转到Python来了。有次谈天的时候我表示不希望他到时候C#半桶水叮当不说,到时候Python也是这样。C#除了国内的就业前景相比之下并不是特别好以外,就语言本身素质来说还是非常不错的,用了这么久的Python,貌似只有Python里的列表切片和负索引(例如-1表示列表倒数第一位元素)以外,没有C#做不到的。

然后这个学弟就给我举反例了:

 

当时因为算是上班时间摸鱼,所以就只是去翻了一下System.Linq命名空间下面的拓展方法,发现没有什么类似的拓展方法后,也就以为C#里的确没有这种写法,后来就没再去注意。

 

最近两天又突然记起这件事情,仔细琢磨了一下,发现自己当时怕是智障了:都想到去翻System.Linq命名空间了,怎么就想不起直接用LINQ呢?

浏览内容

CentOS 7 删除无用的旧内核

小柊 发表于 2018年04月27日 23时20分24秒

少说废话一句话系列:

执行命令:

 

去自动筛选并删除当前无用的系统内核版本。

 

序、扯淡

最近真的是忙到爆炸,其实手里有几个非常有意思的议题,但无奈因为忙的不行不能专门展开来写个博客。所以这次也是为了每月一水而开的教程。

 

一、背景

不知道各位有没有注意过这么个问题,CentOS系统用的久了,随着我们的日常更新,每次启动时启动项就会慢慢多起来,就像下面这样:

 

这是个什么情况呢?

浏览内容

CentOS 7 Yum离线下载安装软件包

小柊 发表于 2018年02月19日 19时21分23秒

一、背景

yum是Fedora 22-、RedHat以及CentOS系统中默认使用的一款软件包管理器。使用yum命令我们可以非常轻松的为系统安装各种软件包。

由于系统自带源中的软件包往往收录不全面或更新并不即时,所以例如Nginx,MySQL,MongoDB、Docker等有名的程序都会创建自己的软件源,我们只需添加他们的源即可在yum中找到并安装最新的版本了。

不过这种非官方自建源,往往会因为服务器在国外,且国内没有镜像服务器,导致下载速度非常不稳定,比如MySQL官方源在国内最高速度一般只有200-300KB/s,最低甚至只有几B/s。

所以现在就有这么一个想法,能不能把yum在线安装时下载的文件离线保存在本地,到时候需要安装的时候直接拿着之前离线保存的安装包直接安装,这样在可以联网的电脑上安装需要的程序包时就可以省去从网上下载程序包的时间,另外也可以给不能联网的电脑安装程序包了。

浏览内容

Asp.net Core中使用GDI+绘图

小柊 发表于 2018年01月01日 00时00分03秒

一、扯淡

光阴荏苒,日月如梭。转眼2017年就这么过去了。在这2017年里本人遇见了很多人,遇到了很多事。如果要从其中挑出一件最遗憾的事情,那大概就是.net Core 2.0居然不支持System.Drawing命名空间。

浏览内容

WordPress Docker化迁移实战

小柊 发表于 2017年12月24日 23时17分37秒

序、扯淡

很久没有正儿八经的写一份算得上是干货的文章了,不知道有没有细心的朋友注意到本站更新日志里悄悄的更新了一条吗?是的,本站在2017年12月05日完成了Docker化迁移,现在你们看到的网站其实已经部署在Docker里面了。

浏览内容

MySQL 开启root账户的远程连接功能

小柊 发表于 2017年11月30日 22时01分39秒

废话少说一句话系列(下面的命令都在MySQL控制台下执行):

授权:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '[你的密码]' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

取消授权:

USE mysql;

DELETE FROM user WHERE Host='%' AND User='root';

FLUSH PRIVILEGES;

一、扯淡

这个月真的忙得飞起,本来这个月是想再继续之前的Docker系列,无奈实在抽不出时间,连这篇文章都是在30号晚上21点开始起草的。

在公司开发的时候,系统数据库选择的是MySQL,由于我个人现在是属于一种身在曹营(Python)心在汉(.net)的情况,所以并不想在自己电脑上装MySQL,所以决定直接把开发服务器上的MySQL打开root远程连接,方便自己本地的调试。

浏览内容

C# Docker开发(二) 打开Docker的Remote API

小柊 发表于 2017年10月28日 23时21分38秒

序、扯淡

各位大家好啊,距离上一篇发布已经有快两个月了。在九月的谜之高产之后,十月又突然消失。讲到原因大概就是又滚回去上班了,难得的周末就只想在床上趴着睡觉就是了。所以一直鸽到现在。

浏览内容