随笔分类 -  .NET技术及企业级开发

摘要:由于没想到合适的 Evaluation Stack 对应的中文,索性就不给它中文名了。 Evaluation Stack 是基于 MSIL 应用程序(C#、F#、VB.NET 语言应用)的关键结构,它是应用程序 和 内存之间的桥梁。 它跟普通的栈有一些关键性的区别。 你的应用程序 可以通过 使用 E 阅读全文
posted @ 2021-03-15 20:26 Snow~Forever 阅读(418) 评论(0) 推荐(0)
摘要:在我们的认知里,调用parent.Wait() 时,会等待它的子线程都结束,才会向下执行。 比如,一个线程A有B、C两个子线程,A.Wait() 是等待 A、B、C都结束,才会向下执行。 然而,最近碰到的问题却跟我想的不一样。 问题表象 可以简化为,在父线程中,创建一个子线程。然后在外部等待父线程结 阅读全文
posted @ 2020-10-26 16:43 Snow~Forever 阅读(690) 评论(0) 推荐(0)
摘要:之前分享过一篇如何做接口性能分析的文章,但是整个分析过程有点繁琐,需要写一个控制台程序调用被测接口,再预热、启动dottrace追踪,最后才能得到我们想要的性能分析报告。如果有办法一键生成性能分析报告,那就会省很多不必要的时间。这里我们就借助Jenkins自动化完成这一过程。 目标: 把Dottra 阅读全文
posted @ 2020-04-07 17:24 Snow~Forever 阅读(391) 评论(0) 推荐(0)
摘要:C#里结构体是值类型,其局部变量的空间分配在栈上。很多同学喜欢用它,是因为它的存储密度高、分配和回收成本非常低。 但是前几天在查热点的时候,却碰到结构体的性能非常慢,甚至远低于把同样数据结构做成的引用类型。下文对这个问题做了些简化,方便大家理解。 代码分析 优化前的源代码示例: //结构体声明 pu 阅读全文
posted @ 2020-01-26 21:01 Snow~Forever 阅读(1226) 评论(0) 推荐(0)
摘要:不熟悉代码的情况下做性能优化 阅读全文
posted @ 2019-11-28 20:53 Snow~Forever 阅读(7276) 评论(2) 推荐(6)
摘要:在我们对一个API站点进行微服务化的过程中,使用KONG网关可以实现以下几个效果: 1. 业务线无感知,其实内部已经被Kong转到其他站点上执行了,这对业务线特别友好。 2. 可以实现租户级/接口级灰度验证。(KONG的路由规则是根据URL判断的,因此需要URL上包含租户ID) 比如,原先是业务方直 阅读全文
posted @ 2019-11-18 19:06 Snow~Forever 阅读(1381) 评论(0) 推荐(0)
摘要:拆分对象简介: 公司的一款工作计划管理SaaS软件,2013年上线,单体架构。起初仅任务管理功能,发展到后来加上了账号身份权限、Feed流、日周月报、项目管理、计划管理、OKR、消息中心、打赏、贴标签、评价等等。常用租户数量1W+ 目前的问题: 1. 目前是3个团队共同维护,经常一个团队改点东西,需 阅读全文
posted @ 2019-10-18 21:23 Snow~Forever 阅读(1393) 评论(0) 推荐(0)
摘要:线上报了大量异常,错误信息为:找不到XX方法实现 代码调用关系是: 查看代码历史记录,发现最近上线前对 GetUserDottedLineSuperiors 方法做过修改,增加了一个可选参数。 跟相关开发同学确认后,是Hotfix的方式上线了UserService.dll,没有整版发布(而在测试环境 阅读全文
posted @ 2019-09-14 23:47 Snow~Forever 阅读(293) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-09-11 17:53 Snow~Forever 阅读(395) 评论(0) 推荐(0)
摘要:Windows 7 下需要安装docker toolbox即可(里面打包了docker、oracle virtualbox、Git) 1. 下载 1. 下载路径https://github.com/docker/toolbox/releases这里下载的版本是18.09.3 或者,到https:// 阅读全文
posted @ 2019-06-30 14:56 Snow~Forever 阅读(2867) 评论(0) 推荐(0)
摘要:1. 下载windbg并安装。 我下载的是 Windbg 6.12。注意,windbg分32位和64位,由分析环境的位数决定。我这里安装的是32位的。安装过程很简单,一路next就可以。 2. 准备被调试的程序。 新建一个C#控制台程序,使用如下代码。编译~ class Program { stat 阅读全文
posted @ 2019-04-12 00:06 Snow~Forever 阅读(1357) 评论(0) 推荐(2)
摘要:这是VS2015上的bug。 我碰到的时候,是VS在合并两个分支的代码时,多加了一个}。导致编译语法报错。。 解决办法就是在错误的附近,找找有没有多余的大括号,删掉即可。 这个问题在vs2017上面没有出现。。 参考文档:https://github.com/hybridview/Configura 阅读全文
posted @ 2019-01-17 19:15 Snow~Forever 阅读(997) 评论(0) 推荐(0)
摘要:在使用C#的应用程序域的时候,碰到这么一个异常: System.Runtime.Remoting.RemotingException: Object ‘/76e7cd41_2cd2_4e89_9c03_fae752ec4d59/zb_uualy_cm6kwizjlentfdl_3.rem’ has 阅读全文
posted @ 2017-12-01 14:28 Snow~Forever 阅读(657) 评论(1) 推荐(0)
摘要:二.什么时候处理异常 仅当以下一种或多种情况时,我们的代码才需要抓住异常 1. 记录异常(logging) 将异常记录到日志中,便于support人员查找错误原因。 2. 为这个异常添加相关信息(wrap exception) 加发生异常的环境信息记录,并产生新异常,交给调用本方法的代码负责处理。 阅读全文
posted @ 2017-09-26 11:15 Snow~Forever 阅读(560) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2017-09-04 11:53 Snow~Forever 阅读(15) 评论(0) 推荐(0)
摘要:在生产环境,QA会同时跑几十个上百个的test case。如果用单机串行的话,是一件非常耗时的事情,估计比手点快不了多少。使用并行方案的话,有两种方法,一个是自己写并行框架,一个是用现成的Selenium Grid。 自己写并行框架,好处是一切尽在掌控,有问题可以快速定位,针对业务的定制化程度高,用 阅读全文
posted @ 2017-08-29 18:33 Snow~Forever 阅读(2079) 评论(0) 推荐(1)
摘要:Selenium可以执行UI的交互,ExtentReport用来生成测试报告,NUnit是我熟悉的基础测试框架,当然你也可以用MSTest、Xunit来代替。Selenium、NUnit没啥好讲的,网上相关文章很多,这里主要说一下ExtentReport。参考(http://automationte 阅读全文
posted @ 2017-08-25 15:50 Snow~Forever 阅读(929) 评论(0) 推荐(0)
摘要:写这篇文章时,我们碰到的一个场景是:要给R系统做一个扩展小应用,前端的html、js放在R系统里,后端需要做一个单独的站点N.B.com。这就导致了跨域问题,而且要命的是,后端同学没有权限向招聘的系统里加接口做后端跨域,因此只能做个接口允许前端跨域访问。 有两种方案:1. 使用ajax直接跨域访问, 阅读全文
posted @ 2017-08-10 15:32 Snow~Forever 阅读(28942) 评论(0) 推荐(0)