自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 代码质量——总结2

面对对象的三大或四大特性

2022-06-09 23:46:48 132

原创 代码质量——总结

需要总结五个方面:面对对象、设计原则、设计模式、编程规范、重构。面对对象:三大特征(封装、继承、多态);设计原则:SOLID原则;设计模式:最常用的23种模式;五个方面的关系如下图所示:相关总结:1.函数是相对比较小的可复用单位;面向对象把可复用单位提升到类层次;设计模式把可复用单位提升到框架层次;2.为避免代码过度设计,可以当代码在出现扩展性、可维护性等问题时,在对其使用设计模式进行重构;...

2022-05-31 14:57:51 223

原创 C#——lambda表达式

>>lambda表达式就是用来代替委托实例的未命名方法。编译器会把lambda表达式转化为以下二者之一:1. 一个委托实例;2. 一个表达式树(expression tree),类型是Expression<TDelegate>,它表示了可遍历的对象模型中lambda表达式的代码;它允许lambda表达式延迟到运行时再被解释。delegate int Transformer(int i);Transformer sqr = x=>x*x;Console.Wr

2020-09-26 19:48:43 314

原创 c# ——委托,事件

1.委托delegate委托实例是调用者的委托:调用者调用委托,委托调用目标方法;把调用者和目标方法解藕;2.多播委托所有委托实例都有多播的方法,即一个委托实例可以有多个目标方法;委托调用顺序与定义顺序一致;如果方法返回值不是void,则只会接受到最后一个目标方法的返回值;使用+=和-=来增减订阅的方法,会被编译成system.delegate的combine和remove静态方法;所有的委托都是派生自system.MultiCastDelegate,它是派生自system.

2020-09-26 16:55:47 165

原创 WPF 入门

1. xaml文件编译成baml,嵌入到dll或者exe中;2.常用的布局容器:3. WPF常见的控件类型继承关系如下:4. 触发器trigger一般设置在style中,也可以写在控件中,有以下五种类型:

2020-09-01 21:50:03 165

原创 批处理命令——bat文件创建和基本命令语法

批处理文件创建:1. 使用copy con命令创建批处理文件con(console)代表计算机屏幕,该命令是将计算机屏幕上的内容输入到指定的文件中,适用于创建较小的bat文件,不能用于已有的bat文件编辑2. 用记事本创建批处理文件2. 使用edit命令创建和编辑批处理文件,比较古老,很少使用。基本语法:1. echo命令和@符号 ,一般开头就会使用@echo off echo [{on|off}] [messgae], echo on后面执行的命令都会显示在屏幕...

2020-05-20 22:15:31 3395

原创 设计模式——构建器(builder)

Factory Method,Abstract Factory,Prototype,Builder属于”对象创建“模式。“对象创建”绕开new,来避免new过程中导致的紧耦合,从而支持创建对象的稳定性。motivation:在面对“一个复杂对象”创建时,通常其各子部分用一定的算法构成;由于需求变化,各子部分会剧烈变化,但是其算法确实稳定的。key interface or class:...

2020-01-06 00:43:10 205

原创 设计模式——解析器(parser)

特定领域,某些变化虽然频繁,但是可以抽象为某种规则;结合特定领域,将问题抽象为语法规则,从而给出该领域的一般性解决方案。interpreter属于"领域规则"模式。motivation:软件构件过程中,对于某一特定领域的问题比较复杂,类似结构重复出现;可以将特定领域的问题表达为语法规则下的句子,然后使用解释器来解释这样的句子。key interface or class:...

2020-01-05 22:14:30 1104

原创 设计模式——访问器模式(visitor)

组件构建构成中,组件行为的变化经常导致组件本身剧烈的变化;“行为变化”将组件本身和组件行为解耦,从而支持组件行为变化。command,visitor属于行为变化模式。motivation:软件构件过程中,由于需求的变化,某些类的层次结构中,常常需要增加新的行为,入股直接在基类中进行更改,将会给子类带来繁重的变更负担,甚至改变原有的设计;在不更改层级结构的前提下,在运行时透明地根据需求,为类...

2019-12-23 02:38:59 261

原创 设计模式——命令模式(command)

组件构建构成中,组件行为的变化经常导致组件本身剧烈的变化;“行为变化”将组件本身和组件行为解耦,从而支持组件行为变化。command,visitor属于行为变化模式。motivation:软件构件过程中,“行为请求者”和“行为执行者”常常呈现出紧耦合;在某些场合——例如记录、撤销/重做,事务等处理时,这种无法抵御变化的紧耦合时不适应软件发展的;将一个请求(行为)进行对象化,从而可以使用不同...

2019-12-23 01:49:55 145

原创 设计模式——职责链(chain of responsibility)

常常在一些组件内部会有特定数据结构,如果客户代码直接使用这些特定数据结构,会极大破坏组件复用;因此,可以将组件中主句结构封装在内部,为外部提供统一的接口,来实现与特定数据结构无关的访问。composite,iterator,chain of responsibility属于数据结构模式。motivation:一个请求可能会被多个对象处理,但是每个请求只能有一个接收者;如果显示指定,一定会给...

2019-12-23 01:26:03 160

原创 设计模式——迭代器(iterator)

常常在一些组件内部会有特定数据结构,如果客户代码直接使用这些特定数据结构,会极大破坏组件复用;因此,可以将组件中主句结构封装在内部,为外部提供统一的接口,来实现与特定数据结构无关的访问。composite,iterator,chain of responsibility属于数据结构模式。motivation:软件构建过程中,集合对象内部的数据结构变化各异,我们希望在不暴露器内部实现的同时,...

2019-12-23 00:52:54 114

原创 设计模式——组合模式(composite)

常常在一些组件内部会有特定数据结构,如果客户代码直接使用这些特定数据结构,会极大破坏组件复用;因此,可以将组件中主句结构封装在内部,为外部提供统一的接口,来实现与特定数据结构无关的访问。composite,iterator,chain of responsibility属于数据结构模式。motivation:某些情况下,软件系统过多依赖对象容器复杂的内部实现,在其内部实现发生变化时,会对代...

2019-12-22 23:03:55 147

原创 设计模式——状态模式(state)

在组件构件的过程中,某些对象的状态经常变化,如何对这些变化进行有效的管理,同时维持高层模块的稳定。state,memento属于状态变化类别的设计模式。motivation:在软件构件过程中,某些对象的状态发生变化,其行为也相应发生变化;如何在运行时根据对象状态来透明更改对象行为,而不会在对象状态和操作之间引入紧耦合。key interface or class:1...

2019-12-22 22:10:52 165

原创 设计模式——适配器模式(adapter)

某些接口之间的依赖,往往会带来问题,添加一层间隔的稳定接口来隔离接口,常常是一种解决办法。facade,proxy,adapter,mediator属于接口隔离类。motivation:软件系统中,由于应用环境的变化,常常需要将一些现存对象,放在新的环境中使用,但是新环境中对接口的要求是这些对象所不满足的;将现存的接口转化为客户希望的接口。key interface or class:...

2019-12-08 17:03:03 108

原创 设计模式——代理模式(proxy)

某些接口之间的依赖,往往会带来问题,添加一层间隔的稳定接口来隔离接口,常常是一种解决办法。facade,proxy,adapter,mediator属于接口隔离类。motivation:在某些情况下(例如对象创建的开销很大,某些操作需要安全控制,或者需要进行线程外的访问),直接访问会给使用者或者系统带来很多麻烦;需要为其他对象提供一种代理一控制对该对象那个的访问。key interfa...

2019-12-08 16:16:01 106

原创 设计模式——门面模式(facade)

某些接口之间的依赖,往往会带来问题,添加一层间隔的稳定接口来隔离接口,常常是一种解决办法。facade,proxy,adapter,mediator属于接口隔离类。motivation:A方案中组件的客户以及组件中子系统存在过多的耦合,为子系统中的一组接口提供稳定界面,需要提供一个高层接口,为子系统提供稳定复用。key interface or class:1....

2019-12-08 15:20:39 140

原创 设计模式——单件模式(singleton)

“面对对象”很好解决了抽象的问题,通常面对对象的成本几乎可以忽略不计,但是有时候面对起成本需要谨慎对待。singleton,flyweight属于”对象性能“模式。motivation:在软件中,有时候一个对象只需要一个对象的存在,才能保证正确的逻辑和良好的效率。key interface or class:1. 有getInstance的方法得到该对象,该方法中需...

2019-12-06 18:14:43 140

原创 设计模式——原型模式(prototype)

Factory Method,Abstract Factory,Prototype,Builder属于对象创建模式。prototype模式使用情况比较少,通过深拷贝来复制当前状态的对象???motivation:创建某些结构非常复杂的对象,由于需求的变化,这些对象面临着剧烈的变化,但是他们却能有一个比较稳定一致的接口。key interface or class:1...

2019-12-05 21:05:01 155

原创 设计模式——抽象工厂(absolute factory)

Factory Method,Abstract Factory,Prototype,Builder属于对象创建模式。motivation:可能面对一系列相互依赖的对象时;可能面对更多系列对象的创建工作。key interface or class:1. IFactory基类接口。feature: 多个factory method放在一个抽象工厂接口中。struc...

2019-12-02 21:13:20 158

原创 设计模式——工厂方法(Factory Method)

Factory Method,Abstract Factory,Prototype,Builder属于对象创建模式。motivation:在创建对象时,创建对象的具体类型经常变化;定义一个用于创建对象的接口,让子类来决定实例化哪个类,使得实例化延迟(目的是解耦,手段是虚函数)。key interface or class:1. product的基类接口;...

2019-11-24 21:52:41 182

原创 设计模式——桥模式(bridge)

Decorator,Bridge属于单一职责模式。motivation:某些类型的固有实现逻辑,是的他们又多个维度的变化;需要使得类型在者多个维度上(如实现平台和实现的版本)进行灵活变化,而不带来额外的复杂度。key interface or class:1.接口类,如Messager;2.接口实现类,如MessagerImp,用于被接口中函数调用以...

2019-11-24 18:11:42 173

原创 设计模式——装饰器模式(decorator)

Decorator,Bridge属于单一职责模式。motivation:过度使用继承来扩展对象的功能,由于继承为类型引入了静态特性,是的这种扩展缺乏灵活性;并且随着子类的增多,更多子类的组合会导致更多子类的膨胀。(使用组合优于继承的设计原则)上图的众多子类经过重构之后,形成下图子类较少,更易维护的结构。key interface or class:1.实现基...

2019-11-23 23:00:04 106

原创 设计模式——策略模式(strategy)

Template、Strategy、Observor属于构件协作类型的设计模式。motivation:某些对象使用的算法多种多样经常改变,如果这些对象都编码到对象中,将导致对象算法十分复杂;支持不使用的算法也是一种性能负担(封装算法,相互替换)。key interface or class:1.library或者framework—在框架或者类库中定义主流程,对变化的子...

2019-11-23 18:33:58 145

原创 设计模式——模版模式(template)

Template、Strategy、Observor属于构件协作类型的设计模式。motivation:对于某一项任务,常常有稳定的整体操作结构,但是各个子步骤却又很多改变的需求,或者由于固有原因无法与整体任务结构一起实现(整体稳定,局部变化)。key interface or class:1.library或者framework—在框架或者类库中定义主流程,对变化的子类...

2019-11-23 17:29:45 177

原创 设计模式——观察者模式(observor)

Template、Strategy、Observor属于构件协作类型的设计模式。motivation:在目标对象状态发生改变时,所有订阅者将得到通知;构建消息通知依赖关系,并使之到达松耦合。key interface or class: 1.observor—观察者,在目标状态更新发出通知时,自身进行更新操作(update); 2.subject—目标对...

2019-11-17 19:00:38 219

原创 机器学习——集成算法(二)

接着集成算法讲讲GBDT和Xgboost,二者的原理其实差不多的,他们都属于提升算法。梯度上升(Gradient Boosting)是说,在集成算法中每个弱决策树的生成都是依据损失函数的梯度方向。提升算法,是找到找到最优解F(x)使得损失函数在训练集上期望(偏差)最小。损失函数若是回归则常取最小平方误差和绝对值误差;如果是回归则采用类似Logister的似然函数,属于指数损失函数。首先从常函数...

2018-09-20 14:40:07 659

原创 机器学习算法——逻辑回归

逻辑回归可以说是基于线性回归的了,但是它实际上是做分类工作的,原理虽然简单但是也可以引出很多机器学习的概念。我们分类的标签如果设定为[0, 1],那么则需要一个函数将映射到0~1的范围,这样就需要一个近似单位阶跃的单调可微的函数,对数几率函数正是这样的函数。                                                         代入得到  ...

2018-09-10 21:12:44 262

原创 机器学习算法——线性回归

线性回归应该算机器学习算法里面最基础的算法了,分别用作回归(y值为连续值)和分类(y值为离散)。在学习线性回归的过程中,有很多机器学习的概念和方法是在这时候提出的。在现实中变量之间的关系,是有确定的和非确定的。确定关系指的是变量之间可以使用函数关系式表示,非确定的部分我们可以用概率分布来表示,如一个人的身高对应一定的体重,但不是身高相同体重就一定相同。确定关系里最常用的就是线性关系了。如下...

2018-09-09 23:16:05 623

原创 机器学习总结——数据预处理和特征工程

实际生产中机器学习的整个过程应该是如下的几步(后面还将从数据挖掘的角度另文进行讲解):1.场景选择(算法选择)——根据实际问题选择合适的算法,是分类还是回归等,是否需要做特征抽象,或者特征缩放;2.数据预处理——缺失值的处理,数据清洗等等;3.特征工程——包括特征构建、特征提取、特征选择等;4.模型训练——判断过拟合和欠拟合,通过交叉验证和grid research来选择参数,调整...

2018-09-09 16:56:01 3543

原创 机器学习算法——支持向量机

支持向量机(SVM,support vectors machine)的算法原理比较简单,就是寻找最大间隔讲两个类别分开,从数学上推可能复杂点。按照样本的情况一下三种:①当训练样本线性可分时,通过硬间隔最大化——线性可分支持向量机;②当训练样本近似线性可分时,通过软间隔最大化——线性支持向量机;③当训练样本线性不可分时,通过核技巧和软间隔最大化——非线性支持向量机;首先从线性可分支持...

2018-08-31 18:00:24 659

原创 机器学习算法——集成算法(一)

集成算法(Emseble Learning)是构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器。周志华的书上说,“个体学习器的"准确性"和"多样性"本身就存在冲突,一般准确性很高之后,要增加多样性就需牺牲准确性。事实上,如何产生并结合‘好而不同’的个体学习器,恰是集成学习研究的核心”(对准确性和多样性的论述还不是很理解)。按照个体学习器之间的关...

2018-08-27 19:26:52 11919 1

原创 机器学习算法——决策树

决策树(Decession Tree) 算法用处很多,而且还是一些集成算法的基础。它的基本原理是:选取某个特征属性,按照特征值来讲最初的样本集分开成两个节点,对分开的节点再选取特征进行划分生成新的节点,一直递归地划分下去直到满足一定条件为止(全部叶子节点中都是一类,或者树的层数、宽度达到一定数值)。这个过程有点像有一堆混在一起的豆子,我们手上有几种筛子,通过几次筛选后讲不通的豆子分开,这个“筛子”...

2018-08-25 01:14:18 549

原创 机器学习算法——K近邻

KNN(K-Nearest Neighbor,K近邻)算法作为一种分类算法,它的实现原理比较简单:1.指定K值;2.计算当前点与样本点中的距离,并按从小到大顺序排列;3.在距离最小的前K个点中,统计样本的标签数量,将当前点分类到同类最多的类别里面去(也就是少数服从多数的原则)。                                                           ...

2018-08-23 20:27:58 638

原创 机器学习算法——聚类

聚类属于无监督学习,事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类是不需要对数据进行训练和学习的。主要的聚类算法有K-Means和DBSCAN。K-Means算法的基本原理比较简单:1.指定K值(数据要分成的簇的数目),并指定初始的k个质心;2.遍历每个数据点,计算其到各个质心的距离,将其归类到距离最近的质心点;3分类完毕后,求各个簇的质心,得到新的质心点;4.重复2和3中的...

2018-08-23 14:50:44 880

原创 机器学习总结(四)——最优化方法

机器学习中所谓的训练其实就是损失函数的优化过程,求损失函数的最优化解,主要是得靠一些常规套路,去一点一点地接近最优化目标。常用的有梯度下降法、牛顿法和拟牛顿法、共轭梯度法、启发式优化方法、拉格朗日乘数法等。一、梯度下降法(Gradient Descent)       梯度下降法实现的原理简单,是最常用最简单的最优化方法。当目标函数是凸函数时(如线性规划),得到的是全局最优解。但是在一...

2018-08-21 21:57:19 1878

原创 机器学习总结(三)——损失函数

经典机器学习算法,他们最本质的区别是分类思想(预测y的表达式)不同,有的是基于概率模型,有的是动态规划,表象的区别就是最后的损失函数不同。损失函数分为经验风险损失函数和结构风险损失函数,经验风险损失函数反映的是预测结果和实际结果之间的差别,结构风险损失函数则是经验风险损失函数加上正则项(L0、L1(Lasso)、L2(Ridge))。不同的算法常用的损失函数(Loss Function)有...

2018-08-21 19:59:33 52613

原创 机器学习总结(二)——主要过程和名词

讲述机器学习算法的主要过程,以及涉及的一些名词。1、物理意义,学习不太算法时需要了解其基于什么样的物理过程,比如逻辑回归是将样本的特征通过函数映射为一个(0,1)之间的数字,如果大于决策边界(如0.5)则判定为标签1,小于则判定为0。物理意义其实相当于模型的定义,或者建立模型建立的过程。2、决策边界,分类算法是为了把样本分开,然后通过边界(也就相当于分类器或者模型)来判断未知样本的类别,比...

2018-08-20 19:03:04 364

原创 机器学习总结(一)——主要算法

自学了一段时间的机器学习后来写写自己的一些理解,首先理一下各种学习方法,以及它们的分类。机器学习的主要算法分为:一、监督学习(指样本带有标签,知道每个样本分属哪个类别):       主要包括分类和回归,但是很多方法其实可以用于分类,也可以用于回归,如决策树(DT)等。分类—— 1、逻辑回归(Logister Regression);                       ...

2018-08-19 19:35:58 781

原创 leetcode121-python 买卖股票最佳时机

Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), d...

2018-07-07 17:51:06 340

计算机考研408真题带解析09-17

计算机考研408统考真题 2009-2017九年真题 附带解析

2018-06-25

计算机408考研 考纲2018

2018年教育部考研大纲 数据结构+计算机组成+计算机网络+操作系统

2018-06-25

空空如也

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

TA关注的人

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