.Net Framework

php的openssl扩展版本兼容问题

谁说胖子不能爱 提交于 2020-11-18 14:40:45
因为服务器里在跑一些老项目兼容问题很多,一直运行PHP7.0版本没有升级。在对接微信分时需要使用到AES-256-GCM加密需要调整PHP环境,决定先升级到PHP7.2,升级后发现openssl_sign()报错,排查后做下简单兼容调整说明。 做三方对接时时常会出现问题,尤其是运行环境发生变化时。对于PHP环境主要分为:php版本、扩展库版本。如果出现兼容性问题则首先需要确认环境问题,避免走弯路。 openssl在对接支付等功能时基本上都会使用到,一般三方有对应写好的SDK,通常按指定的环境要求下运行问题不大。但有时SDK并没有太细说明,难免会出现兼容问题。 扩展库版本兼容 openssl版本在1.0.1及以下时要求证书内容分段换行,否则openssl_sign、openssl_verify使用证书的函数会报错,比如: openssl_sign(): supplied key param cannot be coerced into a private key in 查看php安装的openssl库版本直接通过openssl扩展提供的常量OPENSSL_VERSION_TEXT获取: var_dump(OPENSSL_VERSION_TEXT); 排查时首先确认证书是否有错、参数是否配置错误,环境是否匹配。 如果扩展库是openssl-1.0

RocketMQ如何应对每天1500亿条的数据处理?

狂风中的少年 提交于 2020-11-18 14:39:52
同程艺龙的机票、火车票、汽车票、酒店相关业务已经接入了 RocketMQ,用于流量高峰时候的削峰,以减少后端的压力。 同时,对常规的系统进行解耦,将一些同步处理改成异步处理,每天处理的数据达 1500 亿条。 在近期的 Apache RocketMQ Meetup 上,同程艺龙机票事业部架构师查江,分享了同程艺龙的消息系统如何应对每天 1500 亿条的数据处理。 通过此文,您将了解到: 同程艺龙消息系统的使用情况 同程艺龙 消息系统的 应用场景 技术上踩过的坑 基于 RocketMQ 的改进 同程艺龙消息系统的使用情况 RocketMQ 集群分为 Name Server 和 Broker 两部分,Name Server 用的是双主模式,一个是考虑性能,另一个考虑安全性。 在纯数据的 Broker 分成很多组,每个组里面分为 Master 和 Slave。 目前,我们的机票、火车票、汽车票、酒店相关业务已经接入了 RocketMQ,用于流量高峰时候的削峰,以减少后端的压力。 同时,对常规的系统进行解耦,将一些同步处理改成异步处理,每天处理的数据达 1500 亿条。 选择 RocketMQ 的原因是: 接入简单,引入的 Java 包比较少 纯 Java 开发,设计逻辑比较清晰 整体性能比较稳定的,Topic 数量大的情况下,可以保持性能 同程艺龙消息系统的应用场景 退订系统

Blazor一个简单的示例让我们来起飞

不问归期 提交于 2020-11-18 08:40:24
Blazor Blazor他是一个开源的Web框架,不,这不是重点,重点是它可以使c#开发在浏览器上运行Web应用程序.它其实也简化了SPA的开发过程. Blazor = Browser + Razor 为什么选择Blazor? Blazor可以让.NET附有全栈开发功能,它可以使Web开发变得轻松而高效.而且Blazor是开源的,它得到了社区的大力支持,而且发展速度会很快. 它还拥有SPA的一些功能比如: 路由 依赖注入 服务端渲染 Layout 等等 创建应用 如果说无法在看到 Blazor WebAssembly App 那么执行如下命令即可. dotnet new -i Microsoft.AspNetCore.Components.WebAssembly.Templates::3.2.0-preview5.20216.8 项目结构如下所示 我们可以看到上图中的项目结构 BlazorServerCRUDSample.Client :该项目工程中包含了客户端的相关代码页面等文件 BlazorServerCRUDSample.Server :该项目工程中包含了webapi. BlazorServerCRUDSample.Shared :该类库中用于存放客户端和服务端之间的共享代码. BlazorServerCRUDSample.Server 控制器代码如下所示 [Route(

(四)C# Winform自定义控件-选择按钮组

回眸只為那壹抹淺笑 提交于 2020-11-18 08:37:06
(四)C# Winform自定义控件-选择按钮组 准备工作 该控件是由多个按钮组合形成的,类似多选框和单选框,需要用到前面我们说到的控件UCBtnExt ,如果你对UCBtnExt 还不了解,请移步 请移步 (二)c#Winform自定义控件-按钮 查看 我们先理一下思路,我们需要显示多个按钮,支持多选和单选,具有选中效果 开始 我们先看下有哪些属性 /// <summary> /// 选中改变事件 /// </summary> public event EventHandler SelectedItemChanged; private Dictionary< string , string > m_dataSource = new Dictionary< string , string >(); /// <summary> /// 数据源 /// </summary> public Dictionary< string , string > DataSource { get { return m_dataSource; } set { m_dataSource = value ; Reload(); } } private List< string > m_selectItem = new List< string >(); /// <summary> /// 选中项 /// <

疫情大考下,安全服务方式何去何从?

天涯浪子 提交于 2020-11-18 03:43:31
http://dy.163.com/v2/article/detail/F6EG4P460511CJ6O.html       前言:   抗疫前线的火力交锋还在继续,我们都不清楚这场疫情最终会持续多久,但是科技发展带来了更多的可能性,让我们在面对灾难时更加从容,比如通过远程办公来维持企业与社会生活的正常运转。   病毒疫情就像是一次大考,科技进步在非常时期不再扮演锦上添花的角色,对于很多企业来说,因为新冠病毒的影响,云服务成为一项必需品,而在网络安全领域,云安全服务在这种非常时期也变的更加必要。   从某种角度上来说,计算机病毒是在并行的网络空间中不断存续的另一场疫情,在漫长的互联网发展长河中,与计算机病毒的对抗催生出网络安全行业,无可否认的是,云安全开启了网络空间对抗的新篇章。   事实上,在对抗疫情的同时,网络空间的病毒对抗也在继续。    一则短讯: 2月14日,阿里云安全团队帮助某疫情防控部门进行远程安全托管服务,在24小时内完成云上资产的第一次体检,及时发现了通过漏洞上传webshell文件,通过webshell文件执行恶意命令的安全隐患,并第一时间进行了漏洞确认和删除。   嘶吼联系到阿里云安全,对阿里云安全总监牛纪雷(花名东厂)做了采访,希望了解云端安全运营,以及在疫情阶段云安全服务有什么样的发展趋势。    云端安全运营是什么?    嘶吼:

.NET必知的EventCounters性能指标监视器

ε祈祈猫儿з 提交于 2020-11-17 14:05:54
在.NET我们对于性能指标监控,其实常见的有两个方法,一个是CLI工具 dotnet-counters 而另一个是代码级别的 EventListener . 使用dotnet-counters dotnet-counters 是一个性能指标监视工具,用于临时运行状态监视和初级性能调查。它可以观察通过 EventCounter API发布的性能计数器值。例如,可以快速监视 CPU 使用情况或 .NET Core 应用程序中引发的异常率,以了解在使用 PerfView 或 dotnet-trace 深入调查更严重的性能问题之前是否有任何可疑操作。 -- 摘自 dotnet-counters 命令 dotnet-counters collect dotnet-counters list dotnet-counters monitor dotnet-counters ps 安装dotnet-counters CLI工具,可通过如下命令: dotnet tool install --global dotnet-counters 更新命令如下所示: dotnet tool update dotnet-counters --global 安装完工具之后,我们可以进行查看可监视的进程: dotnet-counters ps 12268 dotnet C:\Program Files\dotnet

从这里走进Python的世界

送分小仙女□ 提交于 2020-11-17 07:56:56
认识Python 人生苦短,我用Python Python的起源 解释器(科普) 计算机编程语言 解释型语言VS编译型语言 区别 性能方面 Python解释器 python程序执行过程: python解释器有很多种: 世界语言排行榜 人生苦短,我用Python ---Life is short,you need Python Python的起源 为什么要用Python? Python的特点 Python的优缺点 Python的起源 Python的创始人为 吉多.范罗苏姆(Guido van Rossum) 1.1989年的圣诞节期间,吉多.范罗苏姆(Guido van Rossum)为了在阿 姆斯特丹打发时间,决心开发一个新的 解释程序 ,作为ABC语言的一种继承( 感觉一下什么叫牛人 ) 2.ABC是由吉多参加设计的教学语言,就吉多本人来看,ABC这种语言非常优美和强大,是专门为非程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并获得了非常好的效果。 3.之所以选中Python(蟒蛇)作为程序的名字,是因为他是BBC电视剧----蒙提.派森的飞行马戏团的爱好者。 4.1991年,第一个Python解释器诞生,它是用C语言实现的,并能够调用C语言的库文件 解释器(科普) 计算机编程语言 从计算机编程语言说起

.NET移植到.NET Core

╄→尐↘猪︶ㄣ 提交于 2020-11-17 07:16:05
本月初,Microsoft 宣布了.NET Core 3.0的.NET Framework API移植项目的结论 。 这意味着官方开发团队不会将任何其他API从.NET Framework移植到.NET Core 3.0(及以后的版本)。 但是,在同一公告中,Microsoft还声明了他们打算开放更多.NET Framework代码的源代码,这可能允许将来创建由社区驱动的移植项目。 Microsoft .NET的程序经理Immo Landwerth解释说,该决定与Microsoft .NET Core的计划一致: 我们宣布,.NET的未来将基于.NET Core。 使用.NET Core 3.0,我们可以轻松移植现代工作负载所需的所有技术,无论是台式机应用程序,移动应用程序,控制台应用程序,网站还是云服务。 这并不是说我们在新技术方面没有任何差距或机会,但我们通常认为我们不会再在.NET Framework代码库中找到它们。 展望未来,我们将资源集中在整合新技术上。 根据Immo的说法,自1.0版以来,超过一半的.NET Framework API(约120k)已移植到.NET Core。 此外,.NET Core中有62k个新API,但.NET Framework中不存在。 根据API的总数进行比较时,.NET Core约占.NET Framework API表面积的80%。

[C#.NET 拾遗补漏]12:死锁和活锁的发生及避免

那年仲夏 提交于 2020-11-17 03:55:28
多线程编程时,如果涉及同时读写共享数据,就要格外小心。如果共享数据是独占资源,则要对共享数据的读写进行排它访问,最简单的方式就是加锁。锁也不能随便用,否则可能会造成死锁和活锁。本文将通过示例详细讲解死锁和活锁是如何发生的,以及如何避免它们。 避免多线程同时读写共享数据 在实际开发中,难免会遇到多线程读写共享数据的需求。比如在某个业务处理时,先获取共享数据(比如是一个计数),再利用共享数据进行某些计算和业务处理,最后把共享数据修改为一个新的值。由于是多个线程同时操作,某个线程取得共享数据后,紧接着共享数据可能又被其它线程修改了,那么这个线程取得的数据就是错误的旧数据。我们来看一个具体代码示例: static int count { get; set; } static void Main(string[] args) { for (int i = 1; i <= 2; i++) { var thread = new Thread(ThreadMethod); thread.Start(i); Thread.Sleep(500); } } static void ThreadMethod(object threadNo) { while (true) { var temp = count; Console.WriteLine("线程 " + threadNo + " 读取计数");

简要分析近几年商业软件开发平台的现状

早过忘川 提交于 2020-11-17 01:37:10
如今各大软件厂商为了应对频繁变化的需求,控制急速上涨的成本以及尽可能地提升客户满意度,大多数都在使用快速开发平台这一类开发工具,期望可以尽可能地解决上述问题。随着时间的推移, 很多开发者逐步接受了这 类 软件开发平台, 毕竟 通用项目可在软件平台 的 基础上二次开发, 可以免去 不少的麻烦。 目前市面上有着各种各样的快速开发平台,尤其是近几年犹如雨笋一般层出不穷,国内海外免费付费的应有尽有。但即使有如此众多的可选择项,找到合适的开发工具却依然不易。毕竟其产品的定位、面向的人群、开发语言和技术手段都有差异,如果使用了不合适的开发工具,则可能导致 开发周期 延长 、软件不稳定、开发成本升高 。 所以,开发工具选型是软件开发前最重要一个步骤。 这里简要介绍几款市场上流行的快速开发平台。所谓快速开发平台是指一类半成品状态的目标软件,可在此基础上进行二次开发与配置,能快速将半成品转化为个性化成品软件。 从各自使用开发技术来看 ,一般 可 分为Java 和 .Net 两类 , 总体而言二者的 差别不大,都是比较成熟的技术。从系统部署方面来说,Java平台可部署到Windows、Linux、Unix操作系统之上,而.Net技术一般只 支持 Windows操作系统。 而 从平台目标上来说,分为以开发为目的 和 以系统实施为目的 这两种 。以开发为目的的平台主要面向 开发者