自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

转载 前端项目模块化的实践3.1:编写可靠类库

以下是关于前端项目模块化的实践,包含以下内容:搭建 NPM 私有仓库管理源码及依赖;使用 Webpack 打包基础设施代码;使用 TypeScript 编写可靠类库使用 TypeScript 的收益使用 Mocha/Jest 进行单元测试 [实现中]在开始之前,有必要先查看使用 TypeScript 的缘由,见 benefit-of-using-typescript....

2018-09-11 11:31:00 187

转载 前端项目模块化的实践3:使用 TypeScript 的收益

以下是关于前端项目模块化的实践,包含以下内容:搭建 NPM 私有仓库管理源码及依赖;使用 Webpack 打包基础设施代码;使用 TypeScript 编写可靠类库使用 TypeScript 的收益使用 Mocha/Jest 进行单元测试 [实现中]使用 Webpack 打包基础设施代码已经很大程度上解决了生产力,但日益复杂业务和逻辑仍然让前端陷入“动态一时爽、重构火...

2018-09-11 11:24:00 163

转载 初级字典树查找在 Emoji、关键字检索上的运用 Part-3

系列索引Unicode 与 Emoji字典树 TrieTree 与性能测试生产实践生产实践我们最终要解决 Emoji 在浏览器和打印物上的显示一致。进行了多番对比,,在显示效果和精度上,macOS 和 Unicode 标准的风格相近,最终决定使用 Unicode 提供的图片作为跨平台显示。浏览器和渲染程序在渲染文本前,将内容交由后端进行 Emoji 检索。提交请求示例...

2018-09-03 09:12:00 190

转载 初级字典树查找在 Emoji、关键字检索上的运用 Part-2

系列索引Unicode 与 Emoji字典树 TrieTree 与性能测试生产实践在有了 Unicode 和 Emoji 的知识准备后,本文进入编码环节。我们知道 Emoji 是 Unicode 字符序列后,自然能够理解 Emoji 查找和敏感词查找完全是一回事:索引Emoji列表或者关键词、将用户输入分词、遍历筛选。本文不讨论适用于 Lucene、Elastic Se...

2018-08-31 10:59:00 198

转载 初级字典树查找在 Emoji、关键字检索上的运用 Part-1

系列索引Unicode 与 Emoji字典树 TrieTree 与性能测试生产实践前言通常用户自行修改资料是很常见的需求,我们规定昵称长度在2到10之间。假设用户试图使用表情符号 ‍????‍????‍????‍????作为用户名,请求是否合法?打开浏览器控制台,输入 '????‍????‍????‍????'.length,打印结果是11。公司项目涉及内容打印的,之前将 Emoji 显示成乱码、框框是家常便饭,而且...

2018-08-30 13:30:00 139

转载 前端项目模块化的实践2:使用 Webpack 打包基础设施代码

以下是关于前端项目模块化的实践,包含以下内容:搭建 NPM 私有仓库管理源码及依赖;使用 Webpack 打包基础设施代码;使用 TypeScript 编写可靠类库使用 TypeScript 的收益使用 Mocha/Jest 进行单元测试 [实现中]本文是关于前端项目模板化的第2部分现状实际项目远远比示例使用的 myGreeting 复杂,比如为了提高可维护性...

2018-08-28 21:52:00 151

转载 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖

以下是关于前端项目模块化的实践,包含以下内容:搭建 NPM 私有仓库管理源码及依赖;使用 Webpack 打包基础设施代码;使用 TypeScript 编写可靠类库使用 TypeScript 的收益使用 Mocha/Jest 进行单元测试 [实现中]本文是关于前端项目模板化的第1部分使用 Docker 搭建私有NPM仓库关于 Docker 的使用不在本文之中,请...

2018-08-28 14:20:00 462

转载 从一个前端项目实践 Git flow 的流程与参考

Git flow 出自 A successful Git branching model,这里使用了一个前端项目配合本文稿实施了 git flow 并记录流程作出示例和参考,对 hotfix 与持续部署略有提及,本意是用作公司内部的技术安利。所用源码及文档本身见于 github jusfr/HelloGitflow前言Gitflow 是一种 git 分支管理工具——说是思想也不...

2016-06-02 12:15:00 114

转载 Kafka API: TopicMetadata

Jusfr 原创,转载请注明来自博客园TopicMetadataRequest/TopicMetadataResponse前文简单说过“Kafka是自描述的”,是指其broker、topic、partition 信息可以通过 TopicMetadata API 获取。TopicMetadataRequest 的内容非常简单,是一个包含 TopicName 的数组,TopicMe...

2016-03-09 10:57:00 440

转载 从事件总线和消息队列说起

Jusfr 原创,转载请注明来自博客园事件总线(EventBus)及其演进过程必须提到内存模型、传统的队列模型、发布-订阅模型。内存模型:进程内模型,事件总线(EventBus)在内部遍历消费者(Consumer)列表传递数据;队列模型:消息或事件持久化到传统消息队列(Queue)即返回,以实时性降低换取吞吐能力提升;发布-订阅模型:事件源(EventSource)得到强化...

2016-03-09 09:39:00 643

转载 实现可用的插件系统

Jusfr 原创,文章所用代码已给出,转载请注明来自博客园。插件机制与 AppDomain示例与现实目标与设计[Serializable] 与 MarshalByRefObject思路与实现后记开始之前还是得说:插件机制老生常谈,但一下子到某工厂或 MAF 管线我相信不少园友吃不消。授人以鱼不如授人以渔,个人觉得思考过程的引导和干货一样重要,不然大家直...

2015-05-14 08:29:00 133

转载 一步步实现一个基本的缓存模块·续, 添加Memcached调用实现

jusfr 原创,转载请注明来自博客园。在之前的实现中,我们初步实现了一个缓存模块:包含一个基于Http请求的缓存实现,一个基于HttpRuntime.Cache进程级的缓存实现,但观察代码,会发现如下问题:1. 有部分逻辑如 Boolean TryGet<T>(String key, out T entry) 的实现有重复现象,Do not repeat yours...

2015-01-21 13:17:00 86

转载 一步步实现一个基本的缓存模块

一步步实现一个基本的缓存模块注意后续代码及改进见后后文及github,文章上的并没有更新。 1. 前言 2. 请求级别缓存 2.1 多线程 3. 进程级别缓存 3.1 分区与计数 3.2 可空缓存值 3.3 封装与集成 4. 小结1. 前言面向读者:初、中级用户;涉及知识:HttpContext、HttpRui...

2014-12-08 13:57:00 124

转载 Parallel中分区器Partitioner的简单使用

Partitioner.Create(1,10,4).GetDynamicPartitions()为长度为10的序列创建分区,每个分区至多4个元素,分区方法及结果:Partitioner.Create(0, 10, 4).GetDynamicPartitions()得到3个前闭后开区间:[0, 4)即{0, 1, 2, 3},[4, 8)即{4, 5, 6, 7},[8...

2014-05-28 22:50:00 356

转载 使用PetaPoco结合注入实现业务级事务

PetaPoco是一个轻量级ORM,我的MVC项目中使用它结合Repository模式,依靠Unity的生命周期管理对象,保证请求/线程级别的数据上下文单例,并使用锁和计数实现业务级事务。下文代码依个人理解实现,谬误请不吝指正。例行IUnitOfWork:public interface IUnitOfWork{ void Begin(); void ...

2013-09-18 10:19:00 413

转载 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler

按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧。Fiddler有一套自成的插件系统,可以在其官方网站找到完整文档(戳这里)。通过其提供的一整套接口,我们可以从界面至功能全方位扩展它。这里主题简单,我们只为其添加一个JSON解析界面。PART I...

2013-07-02 15:33:00 214

转载 动态加载与插件系统的初步实现(三):WinForm示例

代码文件在此Download,本文章围绕前文所述默认AppDomain、插件容器AppDomain两个域及IPlugin、PluginProvider、PluginProxy3个类的使用与变化进行。添加WinForm项目Host、类库Plugin、引用System.Windows.Forms;的类库Plugin_A与Plugin_B,其中Plugin_A、Plugin_B的项目属...

2013-06-29 18:09:00 175

转载 动态加载与插件系统的初步实现(二):AppDomain卸载与代理

前一篇文章简单展示了类型发现和MEF使用,本文初步进入AppDomain相关内容。CLR程序运行时会创建默认程序集容器即AppDomain,默认AppDomain不支持卸载其程序集,但CLR支持创建和卸载AppDomain,这意味着我们可以间接地通过额外的AppDomain实现插件的热插拔。代理AppDomain创建PluginProvider实例,该实例及其发现的IPlugin...

2013-06-22 16:09:00 158

转载 动态加载与插件系统的初步实现(一):反射与MEF解决方案

涉及内容:反射与MEF解决方案AppDomain卸载与代理WinForm、WcfRestService示PRRT1: 反射实现插件系统的基本目的是实现宿主与组件的隔离,核心是作为接驳约定的接口,宿主使用类型发现及挂载插件,以下是反射实现。创建类库项目Plugin,添加接口IPlugin:public interface IPlugin{ ...

2013-06-22 16:08:00 254

转载 一个Excel导出类的实现过程(四):格式化与若干坑 已补图和代码zip

这是本文的第四部分也是最后部分,适合新人初步学习泛型、反射,提供了有限的业务场景分析、若干的NPOI接口使用示范,前三部分链接如下:一个Excel导出类的实现过程(一):泛型与反射一个Excel导出类的实现过程(二):显示定制一个Excel导出类的实现过程(三):NPOI组件接第三部分,由于单元格设置语句仅简单的一句话row.CreateCell(i).SetCe...

2013-05-17 15:07:00 62

转载 一个Excel导出类的实现过程(三):NPOI组件

NPOI组件强大高效,这里只使用它完成我们的Excel写入功能,需要更多内容则请自行搜索。IWorkbook:工作簿对象,可以由NPOI.HSSF.UserModel.HSSFWorkbook实例化得来,Write(Stream stream)如其意;ISheet:工作表对象,可以由IWorkbook实例的CreateSheet()方法创建;IRow:行对象,可以由ISh...

2013-05-16 16:32:00 72

转载 一个Excel导出类的实现过程(二):显示定制

导出操作中,我们常常不需要显示所有属性,比如Person类加入Guid属性:public class Person{ public Int32 ID { get; set; } public Guid Guid { get; set; } public String Name { get; set; } public DateTime ...

2013-05-16 16:30:00 100

转载 一个Excel导出类的实现过程(一):泛型与反射

对数据进行导出要求很常见,我们需要通用便离不了泛型和反射。这里从伪码开始,逐步加入业务需求、场景及边界,最终使用NPOI组件实现。准备好业务中的实体类准备好:public class Person{ public Int32 ID { get; set; } public String Name { get; set; } public Da...

2013-05-16 16:29:00 95

转载 QueryString、Form表单的高效解析

HttpContent提供了ReadAsFormDataAsync()方法,实际开发中的拦截器、等常常产生重置Request流的需求,自定义解析方法如下,测试效率还算不错,字符串分切比原生读取快,自定义方法是线性时间算法,进一步提高的了效率。 public static NameValueCollection FormResolveCustom(String reqStr){...

2013-03-08 17:05:00 258

转载 与循环有关的后台线程使用

假定需要按顺序处理一系统工作,它们可能消耗较多时间,GUI线程期望获取每件工作的结果并予显示,同时处理掉异常而不是中断整体工作,比如使用同一个Http接口以上传文件,并发访问将会报错。常规做法是使用一个后台线程,线程遍历工作集合,并把结果POST到主线程,逻辑如下:AsyncOperation asyncOperation = null;private void but...

2012-08-14 15:57:00 67

转载 使用泛型委托简化TreeView递归

如以下代码所示,方法内有整型变量k,声明泛型委托hanlder并在内部对k进行自增操作,打印k得到101。static void Main(string[] args){ int k = 100; Action handler = () => k++; handler(); Console.WriteLine(k);}WinF...

2012-06-19 17:23:00 88

转载 使用Task进行多次查询的结果取舍

Demo115使用Task.StartNew(...访问服务...).ContinueWith(...更新控件...)模式处理耗时查询并绑定结果再合适不过,但查询时间的不确定性使得需要做更多工作控制结果取舍以正确更新控件。比如说一张分月的报表窗体,用户可以使用形如“下个月”的按钮进行查询。现在是1月,用户快速点击“下个月”两次,可能3月份的数据少,查询结果迅速返回并反映在窗体上,...

2012-06-06 18:02:00 129

转载 Task、AggregateException相关的异常处理

创建一个本身抛出异常、子任务抛出异常、子任务的子任务抛出异常的Task。Task pt = new Task(() =>{ Task.Factory .StartNew(() => { throw new Exception("ex 1"); }, TaskCreationOpt...

2012-05-29 13:02:00 462

转载 分页控件的实现

Demo源文件115实现虚拟服务类,提供数据using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace PagingDemo { public class VitrualModel { public int I...

2012-04-27 11:32:00 104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除