.Net Framework

探究SynchronizationContext在.Net异步编程中的地位

人走茶凉 提交于 2021-01-07 08:18:30
原文: 探究SynchronizationContext在.Net异步编程中的地位 引言:   多线程编程/异步编程非常复杂,有很多概念和工具需要去学习,贴心的.NET提供 Task线程包装类 和 await/async异步编程语法糖 简化了异步编程方式。 相信很多开发者都看到如下异步编程实践原则: 实践原则 说明 例外情况 ① 避免 Async Void 最好使用 async Task 方法而不是 async void 方法 事件处理程序 ② 始终使用 await 不要混合阻塞式代码和异步代码 控制台 main 方法 ③ 配置上下文 尽可能使用ConfigureAwait(false) 需要上下文的方法   遵守以上冷冰冰的②③条的原则,可保证异步程序按照预期状态正常运作;我们在各大编程论坛常看到违背这2条原则引发的莫民奇妙的死锁问题。   UI 例子: 点击按钮触发了一个远程HTTP请求,用请求的返回值修改UI控件, 以下代码会引发deadlock (类似状态出现在Windows Form、WPF) public static async Task<JObject> GetJsonAsync(Uri uri) { using ( var client = new HttpClient()) { var jsonString = await client

IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案

梦想与她 提交于 2021-01-07 08:10:41
IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案   找到Web站点对应的应用程序池,“应用程序池” → 找到对应的“应用程序池” → 右键“高级设置...”    一、一般优化方案   1、基本设置   [1] 队列长度: 默认值1000,将原来的队列长度改为 65535。   [2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。   [3] 托管管道模式:Integrated 或 Classsic。      2、高级设置    [1] 闲置超时(分钟):默认20分钟,修改设长。   [2] 快速故障防护 → 已启用 :默认True,改为False。      3、解决PEP第一次打开PEP速度慢   回收间隔时间      使用windows server 2008 r2解决回收假死的问题   打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。    二、支持同时10万个请求   通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。   站点碰到如下问题:   Error Summary:   HTTP Error 503.2 -

java.net.UnknownHostException: api.weixin.qq.com解决办法

拟墨画扇 提交于 2021-01-07 08:08:03
java.net.UnknownHostException: api.weixin.qq.com at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) at java.net.Socket.connect(Socket.java:546) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:584) at sun.net.NetworkClient.doConnect(NetworkClient.java:173) at sun.net.www.http.HttpClient.openServer(HttpClient.java:409) at sun.net.www.http.HttpClient.openServer(HttpClient.java:530) at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275) at sun.net.www.protocol.https.HttpsClient.New

【Eclipse】【3】checkstyle插件

旧巷老猫 提交于 2021-01-07 05:38:25
用途: 自动化检查代码是否规范 安装方法: 1,离线安装 (1)下载安装包( http://sourceforge.net/projects/eclipse-cs/ ) (2)将压缩包中features文件夹和plugins文件夹的复制到eclipse中的根目录中进行覆盖 (3)打开eclipse,Window→Preferences,如果列表中出现了checkstyle的菜单,则表示安装成功了 注:如果启动eclipse时,提示ClassNotFoundException等异常信息,则启动时加上一个“-clean”参数启动即可 2,在线安装 (1)Help → Install New Software → Work with: http://eclipse-cs.sourceforge.net/update 输入后回车 → 底部框框内Select All 注:安装过程中出现警告,直接点OK 导入自己的规则: (1)Window → Preferences → checkstyle → New... (2)Type:External Configuration File;Location:选择文件路径;勾选Protect Checkstyle configuration file → OK (3)Global check Configurations :选择刚刚导入的文件 →

DLL代理加载shellcod用于免杀,维权等等

牧云@^-^@ 提交于 2021-01-07 04:24:52
DLL侧面加载或DLL代理加载允许攻击者滥用合法的和经过签名的可执行文件,以在受感染的系统上执行代码。自2017年以来,这种技术一直很流行。 代理加载与DLL劫持非常相似,但是,它不会破坏原始程序的执行流程或功能。除了将恶意活动隐藏在合法应用程序之后,它还可以用作持久性方法。 总览 为了了解DLL代理对攻击者的加载效果如何,我们首先需要了解当今的典型应用程序如何为第三方库加载外部函数。 使用上面的示例流程,将发生以下情况。 在启动时,应用程序( A ) 需要使用名为“ GetFunkyData()”( C )的第三方函数来获取数据,GetFunkyData()存在于名为“ DataFunctions.dll”( B )的动态链接库中,该库位于工作环境中。应用程序的目录。 应用程序( A) 尝试按其名称加载库“ DataFunctions.dll”,以尝试执行“ GetFunkyData()”( C )。由于该函数存在于库( B )中,因此将执行该函数,并且应用程序将正常运 行。 执行DLL代理加载攻击时,流程略有不同。 在启动时,应用程序(A)需要使用名为“ GetFunkyData()”(D)的第三方函数来获取数据,GetFunkyData()存在于动态链接库中,该动态链接库位于工作目录中,名为“ DataFunctions_Original.dll”(B)。应用程序的 应用程序

SkyWalking 分布式追踪系统

旧时模样 提交于 2021-01-06 23:08:41
随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。 service map 面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这时候 APM(应用性能管理)工具就该闪亮登场了。 目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,这里主要介绍 SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。 下面是 SkyWalking 6.x 的架构图: 6.x architecture 说明: SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看

软件测试岗位具体是做什么的?

僤鯓⒐⒋嵵緔 提交于 2021-01-06 17:27:27
  软件测试岗位具体是做什么的?软件测试就是在测试这个软件是不是能够完全按照需求运行。软件测试岗再简单点说就是找BUG。检查软件产品是否符合用户的需求,检查程序的业务逻辑和代码逻辑,提高产品的易用性。   检查软件产品是否符合用户的需求。如果用户提出的各种功能和需求,产品没有满足的话,也就根本提不上交付产品了,因为根本达不到交付程度,所以测试人员的工作非常必要。   检查程序的业务逻辑和代码逻辑。每个人对一件事的理解不同,同理不同人员对需求的理解可能会存在差异,所以适当的时候要检查下代码是否有业务逻辑错误和代码逻辑错误,当然达不到检测程序的,可以通过手工测试来做。   提高产品的易用性。若是一个软件产品不好用,用户的学习成本太高,那么产品的接受满意度就会下降,更别提产品的市场占有率了。   一些其他的错误。凡是导致软件产品不能正常使用的,功能被阻塞的,都是要提交bug的,让程序员再进行一下修改和完善。   软件测试怎么找bug?   那方法可真是不少,可以分多个维度。按照测试过程中程序执行状态可以分为静态测试和动态测试。静态测试只依靠分析或检查源程序的语句、结构、过程等来检查程序是否有错误。   直白点概括就是:程序不运行,看看面相哪里有毛病。动态测试则是通过运行被测试程序,对得到的运行结果与预期的结果进行比较分析,同时分析运行效率和健壮性等。  

GraphQL:从头开始

微笑、不失礼 提交于 2021-01-06 16:48:45
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。 ——出自 https://graphql.cn 前面几篇博文介绍了GraphQL在asp.net core框架下的实例,初步了解到Hot Chocolate的功能,不如从这篇开始,细致的过一下Hot Chocoklate,看看.net下这个GrpahQL框架究竟做了点什么,我们又能做点什么。 首先使用HotChocolate有两种姿势,代码姿势(code-first)和脚手架姿势(schema-first),那长什么样呢?实例送上: using HotChocolate; using HotChocolate.Execution; using HotChocolate.Types; using System; namespace GraphQLBase001 { class Program { static void Main(string[] args) { var schemaString = @" type Query { hello: String }"; Console.WriteLine(

快速使用C#将Excel文件转换为图像

北城余情 提交于 2021-01-06 11:54:29
在各种情况下,当需要将电子表格内容嵌入到Web或桌面应用程序中时,可能希望将Excel电子表格转换为高分辨率图像。 在本文中,将学习如何从.NET应用程序中使用C#将Excel文件转换为图像格式。 Excel到图像C#的转换 Aspose.Cells for .NET是一个C#类库,旨在创建和处理MS Excel电子表格。除了电子表格自动化和操纵功能外,API还提供了一个内置转换器,可将Excel电子表格转换为其他格式。击下方按钮可以下载API的安装包。( 点击下载 ) Excel到图像C#的转换 .NET的Aspose.Cells允许将Excel文件转换成各种流行的图像格式。该列表包括:EMF、WMF、JPEG、PNG、BMP、GIF、TIFF、SVG、GLTF、PICT、SVM、Office Compatible EMF。 以下是将Excel文件转换为图像格式的步骤。 使用Workbook类加载Excel文件。 创建ImageOrPrintOptions类的实例。 使用ImageOrPrintOptions.ImageType属性设置图像类型。 使用ImageType枚举选择输出图像的格式,例如JPEG,PNG等。 选择要在工作表对象中呈现的工作表。 创建一个SheetRender对象,并将Worksheet和ImageOrPrintOptions对象传递给其构造函数。

java.lang.NoClassDefFoundError: org/apache/spark/Logging

时间秒杀一切 提交于 2021-01-06 01:59:07
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/Logging at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net