2019-09-24 15:15
装饰者模式(wrapper):
允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。
示例:英雄学习技能
复制代码
1 public class Program
2 {
3 private static void Main(string[] args)
4 {
5 //选择英雄
6 Hero hero = new BlindMonk();
...
2019-09-24 15:47
ByteBuf的I/O主要解决的问题有两个:...
2019-09-24 15:14
本文主要归纳总结了常见的几种PPT幻灯片文档打印的方法及需求。具体通过C#示例来分别阐述以下几种情况:
一、通过PresentationPrintDocument 对象来打印
使用默认打印机打印文档
使用虚拟打印机(Microsoft XPS Document Writer)打印
设置打印页码范围、份数和打印PPT时的显示名称
二、通过PrinterSettings 对象来设置打印选项并打印
指定幻灯片打印页面
设置打印方向
设置纸张页面打印的幻灯片数量
设置灰度打印
设置幻灯片加框打印
使用工具:Spire.Presentation for .NET
...
2019-09-24 15:45
最近开发的过程中遇到了this指向问题,首先想到的是call()、apply()、bind()三个方法,有些时候这三个方法确实是十分重要,现在我们就把他们的使用方法及异同点讲解一下。...
2019-09-23 11:58
近来在学习react源码, 最初是直接从入口一行一行的看, 结果跟着调用的函数跳转来跳去头都晕了. 后来决定带着一个目的去看源码, 每次看只研究一个东西. 一开始最想了解的就是充满魔性的setState. 本文是我对setState的一些理解, 不当之处欢迎留言指正....
2019-09-23 11:21
最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办?...
2019-09-23 11:45
很多业务系统开发中,不可避免的会出现状态变化,通常采用的情形可能是使用工作流去完成,但是对于简单场景下,用工作流有点大财小用感觉,比如订单业务中,订单状态的变更,涉及到的状态量不是很多,即使通过简单的if-else也能足够使用,甚至是用上switch去减少if-else的使用,都是可以的,尽管这会丧失某些东西。为更好的优化整个流程,此时会考虑到使用状态模式来解决一些问题。...
2019-09-23 11:09
字典相对于数组,链表来说,是一种较高层次的数据结构,像我们的汉语字典一样,可以通过拼音或偏旁唯一确定一个汉字,在程序里我们管每一个映射关系叫做一个键值对,很多个键值对放在一起就构成了我们的字典结构。
有很多高级的字典结构实现,例如我们 Java 中的 HashMap 底层实现,根据键的 Hash 值均匀的将键值对分散到数组中,并在遇到哈希冲突时,冲突的键值对通过单向链表串联,并在链表结构超过八个节点裂变成红黑树。
那么 redis 中是怎么实现的呢?我们一起来看一看。
一、字典结构定义
Redis 中的字典相关结构都定义在 dict.h 文件中,dict 表示一个字典结构:
...
2019-09-23 11:42
上篇的链接在这里:函数,从编辑到编译 (上) --带你了解预编译做了什么...
2019-09-23 11:14
朴素贝叶斯分类器(算法)与朴素贝叶斯假设
在高斯判别分析模型(GDA)中,特征向量x 是连续实值向量。现在我们来讨论分量xj 取离散值的贝叶斯朴素贝叶斯模型。
在文本分类问题中,有一个问题是分出一个邮件是(y=1 )或者不是(y=1 )垃圾邮件。我们的训练数据集是一些标好是否是垃圾邮件的邮件。现在我们首先需要把每个邮件表示成特征向量的形式。
假设我们有一个固定长度的词表。这个词表不包括一些在每个文档中都出现的,高频的对判别垃圾邮件没有太大作用的停用词。然后对于每一个邮件。可以用一个长度为词表长度的0,1向量来表示。向量的分量$ x_j就表示这个词表中的第 j$项所代表的单词是否出现在这个邮件中,0表示没有出现,1表示出现。
...
2019-09-23 11:47
背景:一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢;而在Java应用开发中数据库更是尤为重要,绝大多数情况下数据库的性能决定了程序的性能,如若前期埋下的坑越多到后期数据库就会成为整个系统的瓶颈;因此,更规范化的使用MySQL在开发中是不可或缺的。...
2019-09-23 11:17
背景
Read the fucking source code! --By 鲁迅
A picture is worth a thousand words. --By 高尔基
说明:
Kernel版本:4.14
ARM64处理器,Contex-A53,双核
使用工具:Source Insight 3.5, Visio
1. 介绍
在(四)Linux内存模型之Sparse Memory Model中,我们分析了bootmem_init函数的上半部分,这次让我们来到下半部分吧,下半部分主要是围绕zone_sizes_init函数展开。
...
2019-09-23 11:39
C++ 11新标准中,正式的为该语言引入了多线程概念。新标准提供了一个线程库thread,通过创建一个thread对象来管理C++程序中的多线程。...
2019-09-23 11:22
SpringCloud Sleuth 简介
Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案。
Spring Cloud Sleuth借鉴了Dapper的术语。
Span:基本的工作单元。Span包括一个64位的唯一ID,一个64位trace码,描述信息,时间戳事件,key-value 注解(tags),span处理者的ID(通常为IP)。
Trace:一组Span形成的树形结构。
Annotation:用于及时记录存在的事件。常用的Annotation如下:
...