.Net Framework

.Net Core踩坑记:读取txt中文乱码

那年仲夏 提交于 2020-08-15 07:31:53
迁移.net framework的项目,有块读取txt中文转码的问题,普通的不能再普通的代码,想都没想直接copy过去,也没测,结果今天就被坑了。Core是3.1版本,这是原来的代码: string content = System.IO.File.ReadAllText(fileFullPath, Encoding.Default); System.IO.File.WriteAllText(fileFullPath, content, Encoding.UTF8); 很基础的功能,网上一搜一大堆。但是Core直接运行读取中文还是乱码,看似一个小问题,百度之,渐渐的发现这是一个小坑坑,于是乎,开始刨根问底。 首先发现两个环境下 Encoding.Default 这个东西是不同的。官方API解释: 链接 瞅瞅这是人话吗,为什么Core就始终返回utf8呢?看了一眼.net framework下的 Encoding.Default,是这个东东。 所以换个编码就应该就OK了(当然中文本来就是GB2312),结果现实啪啪打脸,居然报错了(脑补一个笑哭的表情)。 string content1 = System.IO.File.ReadAllText(filePath, Encoding.GetEncoding( " GB2312 " )); 官方API解释: Encoding

C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度

回眸只為那壹抹淺笑 提交于 2020-08-15 07:31:30
在阅读本文之前,我期望你能了解基础的 PPT 解析内容,或看我的入门级博客。本文将告诉大家如何从 PPT 里面解析出通用元素的 x 和 y 的值,以及元素的宽度和高度的值 在开始之前请看 C# dotnet 使用 OpenXml 解析 PPT 文件 在拿到 slidePart.Slide.CommonSlideData.ShapeTree 里面的元素,几乎所有元素都存在坐标和宽度高度,这里的元素我称为通用元素,也就是不是特定的如形状、图片元素 此时的元素应该是继承 OpenXmlElement 类,在这个类里面可以通过 GetFirstChild 找到 ShapeProperties 的值 var shapeProperties = element.GetFirstChild<ShapeProperties>(); 上面代码的 element 是 OpenXmlElement 类 拿到了 ShapeProperties 实际上就是 PPT 文件的 p:sppr 内容,在 PPT 里面将会用如下格式设置元素里面的值中 a:xfrm 就是 Transform2D 请看下面 <p:sppr> <a:xfrm> <a:off x="3292475" y="1300390"> </a:off> <a:ext cx="6096000" cy="3429000"> </a:ext> </a

.NET ASP.NET支付宝支付接口调用实现

自闭症网瘾萝莉.ら 提交于 2020-08-15 07:30:44
此接口APP_Code下一共五个类介绍注释详细,代码如下,连个web窗体分别为同步异步,和点击去支付的点击事件,log文件夹,本人个人自己新添加的注释都有提出标注,接口压缩包地址也会留在下方。 AlipayConfig.cs代码如下,需要传入的参数有以2088开头合作身份者ID签约账号、MD5格式的密钥、同步路径、异步路径。 using System . Web ; using System . Text ; using System . IO ; using System . Net ; using System ; using System . Collections . Generic ; namespace Com . Alipay { /// <summary> /// 类名:Config /// 功能:基础配置类 /// 详细:设置帐户有关信息及返回路径 /// 版本:3.4 /// 修改日期:2016-03-08 /// 说明: /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 /// </summary> public class Config { //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ /

.net hbase client--终于浮出水面的轮子

时光怂恿深爱的人放手 提交于 2020-08-15 06:26:39
一、开篇 1.背景 在大数据时代,HBase 数据库是个绕不开的热门话题。 由于其使用 Java 作为主要开发语言,并且依赖大量的 Java 组件(如 Hadoop、zooKeep),使得其他技术栈想要有一个对应的 hbase 客户端变得有一定难度。在 .net 的世界中,一直缺乏能够直接访问 hbase 的客户端。 2.历程 Apache Thrift 作为社区内比较有名的支持多语言的 Api 服务,可以解决跨语言访问 HBase 数据库的痛点。在以往的文章中业也介绍过 C#如何使用 thrift 访问 hbase,但在真正的生产环境中,该方式的访问效率和原生 Java 客户端比起来真着实让人心灰意冷。此外,thrift 也要求服务端和客户端版本一致。 Protocol Buffers HBase 提供基于 Protocol 的数据访问,这以一种相对高效紧凑的数据交换规则。基于此,我们能够造出属于 .net 的 hbase 客户端。 这是一个造轮子的过程,中间虽有着许多难点就不再赘述。下面直接介绍该项目的使用。 二、HBaseNet 使用 1.HBase 数据库准备 作为项目使用演示,我们就不讨论如何搭建 HBase 集群了,一切以简单便捷为前提,直接使用别人构建好的 docker 镜像就可以轻松获取 HBase 数据库的使用。 在 dockerhub 中搜索 hbase

dotnet C# 如何让 Json 序列化数组时序列化继承类的属性

橙三吉。 提交于 2020-08-15 05:47:16
如果我使用的是具体的数组而我的数组是基类数组,而我传入子类的元素进行 json 序列化,可能发现 Json.NET 序列化没有包含子类元素的属性。如果要包含子类的属性或字段,可以在序列化的类数组定义为 object 数组的方式 我在用 WPF 写一个复杂的应用,我需要 ASP.NET Core 后台传输一个 AppData 类的数组,包含的属性如下 public class Lindexi { public string Name { set; get; } } 然后我有 Foo 类继承 Lindexi 类 public class Foo : Lindexi { public string F1 { set; get; } } 用下面代码序列化 static void Main(string[] args) { Console.WriteLine(ToString(new Foo() { F1 = "林德熙是逗比" })); } static string ToString(Lindexi lindexi) { return JsonSerializer.Serialize(new [] { lindexi }); } 运行可以看到输出 [{"Name":null}] 也就是 Foo 的属性被丢失了,在 .NET Core 3.0 可以使用 System.Text.Json

社群运营:让群不死,付费粉丝多次转化的模式探讨

倖福魔咒の 提交于 2020-08-15 05:07:53
分享人:胡浩天 大家好,我是千帆 电商 学院讲师,胡浩天,很荣幸能和各位大咖总裁分享探讨社群营销。 因为我们之前做视频直播的,积累了一些粉丝,目前 微信 好友大概几万人,人数虽然不多, 不过还好比较精准,所以稍微有些价值。同行业有做社群营销做的非常好的,我一直在学习, 现在来抛砖引玉,希望大家一起努力把社群营销做好。 在这里我狭隘的且把社群定义成为一个 qq 群,或者一个微信群,我见过,我做过好多的微 信群,qq 群,存活时间都不久,几天,几个星期,一个活群变死群,核心热粉退群,咸鱼 粉丝群内不断的发垃圾广告,这是很多群的结局。这类群,大部分都是免费群。某种概率上 来讲,付费的群,一般不轻易出现这种情况。 免费群对于我的理解而言,就是因为一次活动或者裂变需要而建立的,每个进入免费群的, 我们都会通知添加群主(班主任)微信,领取干货资料,然后本群 24 小时内或者活动结束 后解散。通过群主(班主任)微信朋友圈进行付费群的推广,营销宣传每日三次,都是在说 付费社群价值,你可以付费加入,也可以裂变邀请好友才有资格进入另外一个和付费社群价 值相等的临时群。 所以付费群和免费群运营的点,我认为是不同的,每个群,要预先设定好它在整个社群营销 中,它是起什么作用的?到底是裂变宣传还是营销转化,还是售后服务。 重点说一下 付费群 。在我们行业,每个机构的付费群的群主都是班主任,这个班主任负责除

十多位全球技术专家,为你献上近十个小时的.Net微服务介绍

只愿长相守 提交于 2020-08-15 04:37:13
.Net Conf: Focus on Microservices 是 .Net Conf 社区在 2020 年 7 月 30 日举办的线上分享活动。整个活动视频长达近 10 个小时。今天我们来看看都发生了什么。 章节汇总 本次分享由十多位来自全球的资深技术专家在线分享,涵盖了当前 .Net 在微服务领域的利器。包括有以下这些内容: .Net 最新特性与微服务 为何关注微服务(Why You Should Care About Microservices) 保持技术敏锐(Stay Sharp) 使用 Steeltoe 开启 .NET 微服务旅程(A Journey into .NET Microservices with Steeltoe) Orleans 在微软中的应用(Orleans at Microsoft) DARP 助力您的 .NET 微服务(Adding a Little DAPR to Your .NET Microservices) Tye 让您快乐开发微服务(Developing and Deploying Microservices With ‘Tye’) 不仅只有 REST 和 RPC,还有异步事件和消息模式(Beyond REST and RPC:Asynchronous Eventing and Messiging Patterns) 微服务、DDD 和

C#中Hashtable、Dictionary详解以及写入和读取对比

本秂侑毒 提交于 2020-08-15 03:27:11
在本文中将从基础角度讲解HashTable、Dictionary的构造和通过程序进行插入读取对比。 一:HashTable 1.HashTable是一种散列表,他内部维护很多对Key-Value键值对,其还有一个类似索引的值叫做散列值(HashCode),它是根据GetHashCode方法对Key通过一定算法获取得到的,所有的查找操作定位操作都是基于散列值来实现找到对应的Key和Value值的。 2.我们需要使用一个算法让散列值对应HashTable的空间地址尽量不重复,这就是散列函数(GetHashCode)需要做的事。 3.当一个HashTable被占用一大半的时候我们通过计算散列值取得的地址值可能会重复指向同一地址,这就是哈希冲突。 在.Net中键值对在HashTable中的位置Position= (HashCode& 0x7FFFFFFF) % HashTable.Length,.net中是通过探测法解决哈希冲突的,当通过散列值取得的位置Postion以及被占用的时候,就会增加一个位移x值判断下一个位置Postion+x是否被占用,如果仍然被占用就继续往下位移x判断Position+2*x位置是否被占用,如果没有被占用则将值放入其中。当HashTable中的可用空间越来越小时,则获取得到可用空间的难度越来越大,消耗的时间就越多。 4

.NET Core技术研究系列-索引篇

♀尐吖头ヾ 提交于 2020-08-15 03:17:41
随着.NET Core相关技术研究的深入,现在将这一系列的文章,整理到一个索引页中,方便大家翻阅查找,同时,后续也会不断补充进来。 .NET Core技术研究-WebApi迁移ASP.NET Core2.0 .NET Core技术研究-Span<T>和ValueTuple<T> .NET Core技术研究-EntityFramework Core 3.0 Preview .NET Core技术研究-ConfigurationManager在单元测试下的坑 .NET Core技术研究-一套代码同时支持.NET Framework和.NET Core .NET Core技术研究-.NET Core迁移前的准备工作 .NET Core技术研究-HttpContext访问的正确姿势 .NET Core技术研究-最实用最常用的配置读取方式 .NET Core技术研究-中间件的由来和使用 .NET Core技术研究-主机Host ASP.NET Core技术研究-探秘Host主机启动过程 ASP.NET Core技术研究-探秘依赖注入框架 ASP.NET Core技术研究-全面认识Web服务器Kestrel .NET Core技术研究-通过Roslyn代码分析技术规范提升代码质量 .NET 5 Preview 1的深度解读和跟进 .NET Core相关技术研究文章,持续更新中。 周国庆

【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持

二次信任 提交于 2020-08-15 03:05:00
原文: 【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持 目录索引   【无私分享:ASP.NET CORE 项目实战】目录索引 简介      增加对多数据库的支持,并不是意味着同时对 多种数据库 操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且不论。 分布式数据库 ,我们采用的是阿里云的Mycat,这个后面会更新出来。我们今天的场景是:我们的项目可能是在windows上开发的使用的是SqlServer,我们要发布到linux上,SqlServer 2017 据说是支持liunx的,但是还没出... 当然不是说 SqlServer 就不能装在liunx上,但是我们的Liunx服务器可能已经安装了MySql或 Oracle,我们希望使用现有的,又或者是,我们需要切换数据库。那么,我们需要可以随时切换数据库的支持。    添加NuGet包,注册服务    使用SqlServer数据库,这个官方有详细的步骤和解释,可以参考: https://docs.efproject.net/en/latest/providers/sql-server/index.html ,我们简单介绍一下   在 【(第四章)】Code First 创建数据库和数据表 中,我们使用的就是SqlServer