.Net Framework

深入解析 C# 的 String.Create 方法

爷,独闯天下 提交于 2021-01-13 22:12:29
作者:Casey McQuillan 译者:精致码农 原文:http://dwz.win/YVW 说明:原文比较长,翻译时精简了很多内容,对于不重要的细枝末节只用了一句话概括,但不并影响阅读。 你还记得上一次一个无足轻重的细节点燃你思考火花的时刻吗?作为一个软件工程师,我习惯于专注于一个从未见过的微小细节。那一时刻,我大脑的齿轮会开始转动, 我喜欢这样的时刻 。 最近,我在逛 Twitter 时发生了一件事。我看到了 David Fowler 和 Damian Edwards 之间的这段交流,他们讨论了 .NET 的 Span<T> API。我以前使用过 Span<T> API,但我在推文中发现了一些不一样的新东西。 上面使用的 String.Create 方法是我从未见过的用法。我决定要揭开 String.Create 的神秘面纱。此时我在问自己一个问题: 为什么用这个方法创建字符串而不用其它的? 我便开始探索,它把我带到了一些有趣的地方,我想和你分享。在本文中,我们将深入探讨几个话题: String.Create 与其它 API 有什么不同? String.Create 做得更好的是什么,它如何让我的 C# 代码更快? String.Create 的性能能提高多少? 为了书写方便,我将用下面的词来指代 .NET 中的几个 API: Create — 指代 String

深入解析 C# 的 String.Create 方法

。_饼干妹妹 提交于 2021-01-13 22:05:49
作者:Casey McQuillan 译者:精致码农 原文:http://dwz.win/YVW 说明:原文比较长,翻译时精简了很多内容,对于不重要的细枝末节只用了一句话概括,但不并影响阅读。 你还记得上一次一个无足轻重的细节点燃你思考火花的时刻吗?作为一个软件工程师,我习惯于专注于一个从未见过的微小细节。那一时刻,我大脑的齿轮会开始转动, 我喜欢这样的时刻 。 最近,我在逛 Twitter 时发生了一件事。我看到了 David Fowler 和 Damian Edwards 之间的这段交流,他们讨论了 .NET 的 Span<T> API。我以前使用过 Span<T> API,但我在推文中发现了一些不一样的新东西。 上面使用的 String.Create 方法是我从未见过的用法。我决定要揭开 String.Create 的神秘面纱。此时我在问自己一个问题: 为什么用这个方法创建字符串而不用其它的? 我便开始探索,它把我带到了一些有趣的地方,我想和你分享。在本文中,我们将深入探讨几个话题: String.Create 与其它 API 有什么不同? String.Create 做得更好的是什么,它如何让我的 C# 代码更快? String.Create 的性能能提高多少? 为了书写方便,我将用下面的词来指代 .NET 中的几个 API: Create — 指代 String

深蓝词库转换2.7版发布——支持Mac原生输入法词库,QQ拼音新词库qcel格式

元气小坏坏 提交于 2021-01-13 17:52:05
2020年过年期间,由于冠状病毒肺炎的流行,在家无事,就把搁置了很久的词库进行了改进。发布了2.7版: https://github.com/studyzy/imewlconverter/releases/tag/v2.7.0 转眼深蓝词库转换从诞生到现在都已经10个年头了,这是我做的最久的软件了。本次2.7版的更新主要包含了以下新特性: 一、MacOS原生简体拼音输入法自定义短语词库的支持 在MacOS的“系统偏好设置”中选择“键盘”,“文本”,即可看到,Mac简体拼音输入法的自定义短语词库。 这里的自定义短语既可以通过点击左下角的➕➖进行增减,也可以通过拖拽的方式,将词库导入导出成文本文件,这个文本文件的后缀为plist。 假如我们想把某搜狗细胞词库转换为Mac简体拼音的词库,可以在Mac中安装dotnet core,下载解压imewlconverter_Linux_Mac.tar.gz,然后运行以下命令: dotnet ./ImeWlConverterCmd.dll -i:qcel ./846eed0aa7c8570ef89c89e15c722633.qcel -o:plist ./qq.plist 这样我们就创建了qq.plist这个词库文件。然后我们通过鼠标拖拽的方式,将这个文件拖拽到窗口上, 不一会儿,就可以看到导入成功了。 成功后界面如图:

在Ocelot中使用自定义的中间件(二)

白昼怎懂夜的黑 提交于 2021-01-13 17:01:56
在上文中《 在Ocelot中使用自定义的中间件(一) 》,我介绍了如何在Ocelot中使用自定义的中间件来修改下游服务的response body。今天,我们再扩展一下设计,让我们自己设计的中间件变得更为通用,使其能够应用在不同的Route上。比如,我们可以设计一个通用的替换response body的中间件,然后将其应用在多个Route上。 Ocelot的配置文件 我们可以将Ocelot的配置信息写在appsettings.json中,当然也可以将其放在单独的json文件里,然后通过ConfigureAppConfiguration的调用,将单独的json文件添加到配置系统中。无论如何,基于JSON文件的Ocelot配置都是可以加入我们自定义的内容的,基于数据库的或者其它存储的配置文件信息或许扩展起来并不方便,因此,使用JSON文件作为配置源还是一个不错的选择。比如,我们可以在ReRoute的某个配置中添加以下内容: { "DownstreamPathTemplate" : "/api/themes" , "DownstreamScheme" : "http" , "DownstreamHostAndPorts" : [ { "Host" : "localhost" , "Port" : 5010 } ], "UpstreamPathTemplate" : "/themes

cmder 安装

百般思念 提交于 2021-01-13 07:49:26
原文链接: cmder 安装 官网 http://cmder.net/ 下载解压即可 修改命令提示符λ为$ 进入解压后的cmder的目录,进入vendor,打开init.bat文件。 修改第15行的代码 @prompt $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m 改为: @prompt $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m $$ $S$E[0m 添加至环境变量 cmder.exe存放的目录添加到系统环境变量Path。添加成功够,就可以使用Win+R下输入cmder,就可以找到cmder. 添加至右键菜单 需要管理员权限 进入cmder的根目录执行注册要右键菜单即可。 C:\Windows\system32>d: D:\>cd cmder D:\cmder>Cmder.exe /REGISTER ALL 效果: 添加ll等命令 在cmder->config->aliases,打开aliases。 并将: l=ls --show-control-chars la=ls -aF --show-control-chars ll=ls -alF --show-control-chars ls=ls --show-control-chars -F 常用快捷键 双Tab,用于补全 Ctrl+T

我没学过计算机,是怎么接了四个私活还挣了两个 iPad 的?

僤鯓⒐⒋嵵緔 提交于 2021-01-13 06:47:23
这是我的第 61 篇原创文章 作者 | 悟空聊架构 来源 | 悟空聊架构 (ID:PassJava666) 转载请联系授权(微信ID:PassJava) 前言 大家看到这篇文章的时候,我和 一枝花、Guide哥、Guide哥的妹纸 一起恰饭去啦! 离国庆还有几天,无心写技术干货,那就来点珍藏的私活(货)吧。 谐音梗 有没有发现? 大家可能不知道,我 并不是 「计算机专业的,在大学都是自学编程、单片机、嵌入式的」 ,和计算机专业的学生还是有些差距。 要是说单片机、嵌入式我还能给您倒腾倒腾,毕竟大学期间还获得过全国研究生嵌入式电子设计 二等奖 ( 以本科身份破格参加 )、全国大学生电子设计比赛 三等奖 。 但是 编译原理 、 Linux 内核 我真心不会。 能接到这四个私活实属意外,很魔幻了。 魔幻一、小白做网站-小亏 那个时候刚毕业几个月,通过公司培训 + 自学,学了点编程技术。从公司小伙伴中结识了一个计算机专业的大学同学,想找我一起帮他亲戚做个小网站,说是几百块钱。 第一次接私活,所以带着一颗 激动的心 就开始做了,功能就是做一个静态网站,有顶部导航栏,可以切换菜单,每个菜单下有不同内容,支持跳转等,总共有 7 个主页面,最复杂的是首页功能。 下面这张图就是当时做的网站,做的首页还是 有模有样 的~ 第一个私活截图 打完收工 做完了提的需求后,我就将网站效果图发给他们,他们觉得还行

37岁的老码农在找工作

最后都变了- 提交于 2021-01-13 05:49:30
作者 自由飞 来源 http://17bang.ren/Article 前几天突然接到dk的电话,要和我聊聊天。 他说他们部门调整,虽然最后他留了下来,但还是非常焦虑。人无远虑必有近忧,他这次被刺激到了,想提高一下自己,以免下次再有类似的心惊肉跳。但怎么提高呢? 程序员第一考虑的当然是技术,但现在真不知道学什么了:干了三四年的开发,手头的工作马马虎虎都没什么问题了。就算有问题,也是业务逻辑上的问题,系统太复杂,吃不透;或者系统里一些过时的/生僻的技术,真心觉得没必要花时间花精力去研究,能对付就行了,是不是?反正下家单位99.99%的几率是不会用到这些东西的的。 那么就是一些新技术了。新技术杂得很,不知道学什么,框架类库啥的其实没什么技术含量,一两个星期就可以上手,上手了之后呢?往深里学?其实和老旧技术一样的问题,谁知道下一份工作用不用得上呢!而且没趣,大概是因为没有挑战性吧,反正就那个样,还能咋的? 一直聊到这里,我都非常理解。我这个十年的老码农,体会比他还深。其实稍微干上一些年头,就是这个样子,看起来像是“学习热情下降”“懒得学习”,但本质上呢,两个原因: 1、本身的技能增强,能够应付日常工作,没有刚入行时那么大的压力了。 2、学习的边际效益递减,所以开始考虑投资/收益比了。刚入行的时候,技术一丁点的进步,都能带来非常大的成就感,至少能少挨点骂,是不是?积累到一定时候

10 大白帽黑客专用的 Linux 操作系统

给你一囗甜甜゛ 提交于 2021-01-13 00:40:13
作者: Irshad Pathoor 链接:https://linux.cn/article-6971-1.html 平时在影视里见到的黑客都是一顿操作猛如虎,到底他们用的都是啥系统呢?小编分享一篇白帽黑客专用的Linux操作系统。 ▍ 1 . Kali Linux Kali Linux是最著名的Linux发行版,用于道德黑客和渗透测试。Kali Linux由Offensive Security开发,之前由BackTrack开发。 Kali Linux基于Debian。它带有来自安全和取证各个领域的大量渗透测试工具。现在,它遵循滚动发布模型,这意味着您集合中的每个工具将始终保持最新状态。 它是目前最先进的渗透测试平台,可支持各种设备和硬件平台。此外,Kali Linux提供了不错的文档,并拥有一个庞大而活跃的社区。 您可以轻松地在Windows内的VirtualBox中安装Kali Linux,并立即开始练习黑客。 下载地址: https://www.kali.org/downloads/ ▍ 2. BackBox BackBox是基于Ubuntu的发行版,旨在进行渗透测试和安全评估。这是该领域最好的发行版之一。 BackBox拥有自己的软件存储库,该存储库提供了各种系统和网络分析工具包的最新稳定版本以及最受欢迎的道德黑客工具。设计时考虑了极简主义,并使用XFCE桌面环境

10大白帽黑客专用的 Linux 操作系统

拟墨画扇 提交于 2021-01-13 00:34:49
1. Kali Linux 下载地址:https://www.kali.org/ 2. BackBox 它包括了一些经常使用的安全和分析工具,可以用于从 web 应用分析到网络分析,从压力测试到嗅探,以及脆弱性分析、计算机取证分析和破解等等的各种用途。 这个发行版的一大特点是,它的 Launchpad 软件库会持续更新各种工具的最新稳定版,它们都是白帽黑客所熟知常用的。该发行版中的新工具集成和开发遵循了开源社区的标准,特别是 Debian 自由软件指导Debian Free Software Guidelines的标准 Kali Linux 是一个 Debian 衍生发行版,设计用于数字取证和渗透测试。它是由 Offensive Security 公司开发和维护的,该公司的 Mati Aharoni 和 Devon Kearns 对 BackTrack 进行了重写,从而开发了全新的 Kali Linux 。它是最灵活、最先进的渗透测试发行版。Kali 会不断更新其上的工具。它支持许多不同的平台,包括 VMware 和 ARM 等。如果你想了解更多关于 Kali Linux 的信息,推荐你阅读我之前的文章: 黑客级操作系统 Kali Linux 的介绍与安装指引 。 下载地址:https://backbox.org/download 2. BackBox

nginx 日志配置log_format用法

徘徊边缘 提交于 2021-01-13 00:29:49
nginx服务器日志相关指令主要有两条: 1.一条是log_format,用来设置日志格式; 2.另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,可以参加 ngx_http_log_module 。 log_format指令用来设置日志的记录格式,它的语法如下: log_format name format {format ...} name 定义的格式; format 定义日志样式; log_format有一个默认的、无须设置的combined日志格式设置,相当于Apache的combined日志格式,其具体参数如下: log_format combined '$remote_addr-$remote_user [$time_local]' ‘"$request"$status $body_bytes_sent’ ‘"$http_referer" "$http_user_agent"’ 假设将Nginx服务器作为Web服务器,位于负载均衡设备、Squid、Nginx反向代理之后,不能获取到客户端的真实IP地址了。 原因是经过反向代理后,由于在客户端和Web服务器之间增加了中间层,因此Web服务器无法直接拿到客户端的IP。 通过$remote_addr变量拿到的将是反向代理服务器的IP地址。 在日志格式样式中,变量$remote_addr和$http_x