jfow-core 代码分析

news/2023/6/8 0:50:31

EntityNoName

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.code:
      • 2.code2:
      • 3.FLows
      • 4.frm
      • 5.code3:
      • code4:
      • EntityTreeAttr
      • EntitiesNoName
      • enum:
      • JUmp way
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

需求:

设计思路

实现思路分析

1.code:

package bp.wf.admin;import bp.da.*;
import bp.en.Map;
import bp.port.*;
import bp.en.*;
import bp.web.*;
import bp.sys.*;
import bp.wf.data.*;
import bp.wf.template.frm.*;/** 流程
*/
public class Flow extends EntityNoName
{///#region 属性./** 存储表*/public final String getPTable(){return this.GetValStringByKey(FlowAttr.PTable);}public final void setPTable(String value){this.SetValByKey(FlowAttr.PTable, value);}/** 流程类别*/public final String getFKFlowSort(){return this.GetValStringByKey(FlowAttr.FK_FlowSort);}public final void setFKFlowSort(String value){this.SetValByKey(FlowAttr.FK_FlowSort, value);}/** 是否可以独立启动*/public final boolean isCanStart(){return this.GetValBooleanByKey(FlowAttr.IsCanStart);}public final void setCanStart(boolean value){this.SetValByKey(FlowAttr.IsCanStart, value);}/** 流程事件实体*/public final String getFlowEventEntity(){return this.GetValStringByKey(FlowAttr.FlowEventEntity);}public final void setFlowEventEntity(String value){this.SetValByKey(FlowAttr.FlowEventEntity, value);}///#endregion 属性.///#region 构造方法/** UI界面上的访问控制*/@Overridepublic UAC getHisUAC(){UAC uac = new UAC();if (WebUser.getIsAdmin() == false){throw new RuntimeException("err@管理员登录用户信息丢失,当前会话[" + WebUser.getNo() + "," + WebUser.getName() + "]");}uac.IsUpdate = true;uac.IsDelete = false;uac.IsInsert = false;return uac;}/** 流程*/public Flow(){}/** 重写基类方法*/@Overridepublic Map getEnMap(){if (this.get_enMap() != null){return this.get_enMap();}Map map = new Map("WF_Flow", "流程模版");///#region 基本属性。//处理流程类别.String sql = "";if (bp.difference.SystemConfig.getCCBPMRunModel() == CCBPMRunModel.Single){map.AddDDLEntities(FlowAttr.FK_FlowSort, null, "类别", new FlowSorts(), true);}else{sql = "SELECT No,Name FROM WF_FlowSort WHERE OrgNo='@WebUser.OrgNo' ORDER BY No,Idx";map.AddDDLSQL(FlowAttr.FK_FlowSort, null, "类别", sql, true);map.AddTBString(FlowAttr.OrgNo, null, "组织编号", false, false, 0, 50, 10, false);map.AddHidden(FlowAttr.OrgNo, " = ", bp.web.WebUser.getOrgNo());}map.AddTBStringPK(FlowAttr.No, null, "编号", true, true, 1, 4, 3);map.SetHelperUrl(FlowAttr.No, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3661868&doc_id=31094"); //使用alert的方式显示帮助信息.map.AddTBString(FlowAttr.Name, null, "名称", true, false, 0, 50, 300);//add  2013-08-30.map.AddTBString(FlowAttr.BillNoFormat, null, "单号格式", true, false, 0, 50, 10, false);map.SetHelperUrl(FlowAttr.BillNoFormat, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3953012&doc_id=31094");map.AddTBString(FlowAttr.FlowEventEntity, null, "事件实体", true, true, 0, 150, 30);map.SetHelperUrl(FlowAttr.FlowEventEntity, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3661871&doc_id=31094");map.AddTBString(FlowAttr.PTable, null, "存储表", true, false, 0, 30, 10);map.SetHelperUrl(FlowAttr.PTable, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=4000827&doc_id=31094");// add 2013-02-05.map.AddTBString(FlowAttr.TitleRole, null, "标题生成规则", true, false, 0, 150, 10, true);map.SetHelperUrl(FlowAttr.TitleRole, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3661872&doc_id=31094");map.AddBoolean(FlowAttr.IsCanStart, true, "独立启动?", true, true);//map.AddBoolean(FlowAttr.IsCanStart, true, "可以独立启动否?(独立启动的流程可以显示在发起流程列表里)", true, true, true);//map.SetHelperUrl(FlowAttr.IsCanStart, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3661874&doc_id=31094");// // 草稿map.AddDDLSysEnum(FlowAttr.Draft, 0, "草稿规则", true, true, FlowAttr.Draft, "@0=无(不设草稿)@1=保存到待办@2=保存到草稿箱");map.SetHelperUrl(FlowAttr.Draft, "https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3661878&doc_id=31094");///#endregion 基本属性。map.AddTBDateTime(FlowAttr.DesignTime, null, "创建时间", true, true);map.AddTBString(FlowAttr.OrgNo, null, "组织编号", false, false, 0, 50, 10, false);//查询.map.AddSearchAttr(FlowAttr.FK_FlowSort);///#region 流程模版管理.RefMethod rm = new RefMethod();rm.Title = "流程模版";rm.Icon = "../../WF/Img/undo.png";rm.ClassMethodName = this.toString() + ".DoExps()";rm.refMethodType = RefMethodType.RightFrameOpen;rm.Icon = "icon-paper-plane";map.AddRefMethod(rm);rm = new RefMethod();rm.Icon = "../../WF/Img/Btn/DTS.gif";rm.Title = "重生成报表数据"; // "删除数据";rm.Warning = "您确定要执行吗? 注意:此方法耗费资源。"; // "您确定要执行删除流程数据吗?";rm.ClassMethodName = this.toString() + ".DoReloadRptData";rm.GroupName = "流程维护";rm.Icon = "icon-briefcase";map.AddRefMethod(rm);rm = new RefMethod();rm.Title = "重生成流程标题";rm.Icon = "../../WF/Img/Btn/DTS.gif";rm.ClassMethodName = this.toString() + ".DoGenerTitle()";//设置相关字段.//rm.RefAttrKey = FlowAttr.TitleRole;rm.RefAttrLinkLabel = "重新生成流程标题";rm.refMethodType = RefMethodType.Func;rm.Target = "_blank";rm.Warning = "您确定要根据新的规则重新产生标题吗?";rm.GroupName = "流程维护";rm.Icon = "icon-briefcase";map.AddRefMethod(rm);rm = new RefMethod();rm.Title = "重生成FlowEmps字段";rm.Icon = "../../WF/Img/Btn/DTS.gif";rm.ClassMethodName = this.toString() + ".DoGenerFlowEmps()";rm.RefAttrLinkLabel = "补充修复emps字段,包括wf_generworkflow,NDxxxRpt字段.";rm.refMethodType = RefMethodType.Func;rm.Target = "_blank";rm.Warning = "您确定要重新生成吗?";rm.GroupName = "流程维护";rm.Icon = "icon-briefcase";map.AddRefMethod(rm);//带有参数的方法.rm = new RefMethod();rm.GroupName = "流程维护";rm.Title = "删除指定日期范围内的流程";rm.Warning = "您确定要删除吗?";rm.Icon = "../../WF/Img/Btn/Delete.gif";rm.getHisAttrs().AddTBDateTime("DTFrom", null, "时间从", true, false);rm.getHisAttrs().AddTBDateTime("DTTo", null, "时间到", true, false);rm.getHisAttrs().AddBoolen("thisFlowOnly", true, "仅仅当前流程");rm.Icon = "icon-briefcase";rm.ClassMethodName = this.toString() + ".DoDelFlows";map.AddRefMethod(rm);rm = new RefMethod();rm.Icon = "../../WF/Img/Btn/Delete.gif";rm.Title = "按工作ID删除"; // this.ToE("DelFlowData", "删除数据"); // "删除数据";rm.GroupName = "流程维护";rm.ClassMethodName = this.toString() + ".DoDelDataOne";rm.getHisAttrs().AddTBInt("WorkID", 0, "输入工作ID", true, false);rm.getHisAttrs().AddTBString("beizhu", null, "删除备注", true, false, 0, 100, 100);rm.Icon = "icon-briefcase";map.AddRefMethod(rm);//带有参数的方法.rm = new RefMethod();rm.GroupName = "流程维护";rm.Title = "强制设置接收人";rm.getHisAttrs().AddTBInt("WorkID", 0, "输入工作ID", true, false);rm.getHisAttrs().AddTBInt("NodeID", 0, "节点ID", true, false);rm.getHisAttrs().AddTBString("Worker", null, "接受人编号", true, false, 0, 100, 100);rm.Icon = "icon-briefcase";rm.ClassMethodName = this.toString() + ".DoSetTodoEmps";map.AddRefMethod(rm);rm = new RefMethod();rm.Title = "按工作ID强制结束"; // this.ToE("DelFlowData", "删除数据"); // "删除数据";rm.GroupName = "流程维护";rm.ClassMethodName = this.toString() + ".DoStopFlow";rm.getHisAttrs().AddTBInt("WorkID", 0, "输入工作ID", true, false);rm.Icon = "icon-briefcase";rm.getHisAttrs().AddTBString("beizhu", null, "备注", true, false, 0, 100, 100);map.AddRefMethod(rm);rm = new RefMethod();rm.Title = "回滚流程";rm.Icon = "../../WF/Img/Btn/Back.png";rm.ClassMethodName = this.toString() + ".DoRebackFlowData()";// rm.Warning = "您确定要回滚它吗?";rm.getHisAttrs().AddTBInt("workid", 0, "请输入要会滚WorkID", true, false);rm.getHisAttrs().AddTBInt("nodeid", 0, "回滚到的节点ID", true, false);rm.getHisAttrs().AddTBString("note", null, "回滚原因", true, false, 0, 600, 200);rm.Icon = "icon-briefcase";rm.GroupName = "流程维护";map.AddRefMethod(rm);///#endregion 流程运行维护.this.set_enMap(map);return this.get_enMap();}///#endregionpublic final String DoExps(){return "../../Admin/AttrFlow/Exp.htm?FK_Flow=" + this.getNo() + "&Lang=CH";}}

2.code2:

package bp.wf.admin;import bp.da.*;
import bp.port.*;
import bp.en.*;
import bp.web.*;
import bp.sys.*;
import bp.wf.data.*;
import bp.wf.template.frm.*;
import java.util.*;public class FlowAttr extends bp.wf.template.FlowAttr
{}

3.FLows

在这里插入图片描述

4.frm

package bp.wf.admin;import bp.da.*;
import bp.en.Map;
import bp.port.*;
import bp.en.*;
import bp.web.*;
import bp.sys.*;
import bp.wf.data.*;
import bp.wf.template.frm.*;
import java.util.*;/** 流程
*/
public class Frm extends EntityNoName
{///#region 属性./** 存储表*/public final String getPTable(){return this.GetValStringByKey(FrmAttr.PTable);}public final void setPTable(String value){this.SetValByKey(FrmAttr.PTable, value);}///#endregion 属性.///#region 构造方法/** UI界面上的访问控制*/@Overridepublic UAC getHisUAC(){UAC uac = new UAC();if (WebUser.getIsAdmin() == false){throw new RuntimeException("err@管理员登录用户信息丢失,当前会话[" + WebUser.getNo() + "," + WebUser.getName() + "]");}uac.IsUpdate = true;uac.IsDelete = false;uac.IsInsert = false;return uac;}/** 流程*/public Frm(){}/** 重写基类方法*/@Overridepublic Map getEnMap(){if (this.get_enMap() != null){return this.get_enMap();}Map map = new Map("Sys_MapData", "傻瓜表单属性");///#region 基本属性.map.AddTBStringPK(MapDataAttr.No, null, "表单编号", true, true, 1, 190, 20);if (bp.wf.Glo.getCCBPMRunModel() == CCBPMRunModel.SAAS){map.AddTBString(MapDataAttr.PTable, null, "存储表", false, false, 0, 100, 20);}else{map.AddTBString(MapDataAttr.PTable, null, "存储表", true, false, 0, 100, 20);String msg = "提示:";msg += "\t\n1. 该表单把数据存储到那个表里.";msg += "\t\n2. 该表必须有一个int64未的OID列作为主键..";msg += "\t\n3. 如果指定了一个不存在的表,系统就会自动创建上.";map.SetHelperAlert(MapDataAttr.PTable, msg);}map.AddTBString(MapDataAttr.Name, null, "名称", true, false, 0, 500, 20, true);map.AddTBInt(MapDataAttr.TableCol, 0, "显示列数", false, false);map.AddTBInt(MapDataAttr.FrmW, 900, "表单宽度", true, false);if (bp.wf.Glo.getCCBPMRunModel() == CCBPMRunModel.SAAS){}else{map.AddTBString(MapDataAttr.DBSrc, null, "数据源", false, false, 0, 500, 20);map.AddDDLEntities(MapDataAttr.FK_FormTree, "01", "目录", new FrmSorts(), true);}//表单的运行类型.map.AddDDLSysEnum(MapDataAttr.FrmType, FrmType.FoolForm.getValue(), "表单类型", true, true, MapDataAttr.FrmType);//表单解析 0 普通 1 页签展示map.AddDDLSysEnum(MapDataAttr.FrmShowType, 0, "表单展示方式", true, true, "表单展示方式", "@0=普通方式@1=页签方式");map.AddTBString(MapDataAttr.Icon, "icon-doc", "图标", true, false, 0, 100, 100);map.AddBoolean("IsEnableJs", false, "是否启用自定义js函数?", true, true, true);///#endregion 基本属性.///#region 设计者信息.map.AddTBString(MapDataAttr.Designer, null, "设计者", true, false, 0, 500, 20);map.AddTBString(MapDataAttr.DesignerContact, null, "联系方式", true, false, 0, 500, 20);map.AddTBString(MapDataAttr.DesignerUnit, null, "单位", true, false, 0, 500, 20, true);map.AddTBString(MapDataAttr.GUID, null, "GUID", true, true, 0, 128, 20, false);map.AddTBString(MapDataAttr.Ver, null, "版本号", true, true, 0, 30, 20);map.AddTBString(MapDataAttr.Note, null, "备注", true, false, 0, 400, 100, true);//增加参数字段.map.AddTBAtParas(4000);map.AddTBInt(MapDataAttr.Idx, 100, "顺序号", false, false);///#endregion 设计者信息.map.AddSearchAttr(MapDataAttr.FK_FormTree);this.set_enMap(map);return this.get_enMap();}///#endregion
}

5.code3:

package bp.wf.admin;import bp.da.*;
import bp.port.*;
import bp.en.*;
import bp.web.*;
import bp.sys.*;
import bp.wf.data.*;
import bp.wf.template.frm.*;
import java.util.*;/** 流程集合
*/
public class Frms extends EntitiesNoName
{///#region 构造方法/** 工作流程*/public Frms(){}///#endregion///#region 得到实体/** 得到它的 Entity */@Overridepublic Entity getGetNewEntity(){return new Frm();}///#endregion///#region 为了适应自动翻译成java的需要,把实体转换成List./** 转化成 java list,C#不能调用.@return List*/public final List<Frm> ToJavaList(){return (List<Frm>)(Object)this;}/** 转化成list@return List*/public final ArrayList<Frm> Tolist(){ArrayList<Frm> list = new ArrayList<Frm>();for (int i = 0; i < this.size(); i++){list.add((Frm)this.get(i));}return list;}///#endregion 为了适应自动翻译成java的需要,把实体转换成List.
}

code4:

package bp.wf.admin;import bp.da.*;
import bp.en.*;
import bp.en.Map;
import bp.port.*;
import bp.sys.*;
import java.util.*;/** 表单目录
*/
public class FrmSort extends EntityNoName
{///#region 属性./** 组织编号*/public final String getOrgNo(){return this.GetValStrByKey(FrmSortAttr.OrgNo);}public final void setOrgNo(String value){this.SetValByKey(FrmSortAttr.OrgNo, value);}public final String getDomain(){return this.GetValStrByKey(FrmSortAttr.Domain);}public final void setDomain(String value){this.SetValByKey(FrmSortAttr.Domain, value);}public final String getParentNo(){return this.GetValStrByKey(FrmSortAttr.ParentNo);}public final void setParentNo(String value){this.SetValByKey(FrmSortAttr.ParentNo, value);}///#endregion 属性.///#region 构造方法/** 表单目录*/public FrmSort(){}/** 表单目录@param _No*/public FrmSort(String _No){super(_No);}@Overridepublic UAC getHisUAC(){UAC uac = new UAC();uac.IsDelete = false;uac.IsInsert = false;uac.IsUpdate = true;return uac;}///#endregion/** 表单目录Map*/@Overridepublic Map getEnMap(){if (this.get_enMap() != null){return this.get_enMap();}Map map = new Map("Sys_FormTree", "表单目录");map.AddTBStringPK(FrmSortAttr.No, null, "编号", false, false, 1, 100, 20);map.AddTBString(FrmSortAttr.ParentNo, null, "父节点No", false, false, 0, 100, 30);map.AddTBString(FrmSortAttr.Name, null, "名称", true, false, 0, 200, 30, true);map.AddTBString(FrmSortAttr.ShortName, null, "简称", true, false, 0, 200, 30, true);map.AddTBString(FrmSortAttr.OrgNo, "0", "组织编号(0为系统组织)", false, false, 0, 150, 30);map.SetHelperAlert(FrmSortAttr.OrgNo, "用于区分不同组织的的流程,比如:一个集团有多个子公司,每个子公司都有自己的业务流程.");map.AddTBString(FrmSortAttr.Domain, null, "域/系统编号", true, false, 0, 100, 30);map.SetHelperAlert(FrmSortAttr.Domain, "用于区分不同系统的流程,比如:一个集团有多个子系统每个子系统都有自己的流程,就需要标记那些流程是那个子系统的.");map.AddTBInt(FrmSortAttr.Idx, 0, "Idx", false, false);this.set_enMap(map);return this.get_enMap();}/** 创建的时候,给他增加一个OrgNo。@return */@Overrideprotected boolean beforeInsert() throws Exception {if (bp.wf.Glo.getCCBPMRunModel() != CCBPMRunModel.Single){this.setOrgNo(bp.web.WebUser.getOrgNo());}return super.beforeInsert();}/** 删除之前的逻辑@return */@Overrideprotected boolean beforeDelete() throws Exception {String sql = "SELECT COUNT(*) as Num FROM Sys_MapData WHERE FK_FormTree='" + this.getNo() + "'";int num = DBAccess.RunSQLReturnValInt(sql);if (num != 0){throw new RuntimeException("err@您不能删除该目录,下面有表单。");}return super.beforeDelete();}
}

在这里插入图片描述

EntityTreeAttr

package bp.wf.admin;import bp.da.*;
import bp.en.*;
import bp.port.*;
import bp.sys.*;
import java.util.*;/** 表单目录属性
*/
public class FrmSortAttr extends EntityTreeAttr
{/** 组织编号*/public static final String OrgNo = "OrgNo";/** 简称*/public static final String ShortName = "ShortName";/** 域/系统编号*/public static final String Domain = "Domain";
}

EntitiesNoName

package bp.wf.admin;import bp.da.*;
import bp.en.*;
import bp.port.*;
import bp.sys.*;
import java.util.*;/** 表单目录
*/
public class FrmSorts extends EntitiesNoName
{///#region 构造./** 表单目录s*/public FrmSorts(){}/** 得到它的 Entity */@Overridepublic Entity getGetNewEntity(){return new FrmSort();}/** @return */@Overridepublic int RetrieveAll() throws Exception {if (bp.wf.Glo.getCCBPMRunModel() != CCBPMRunModel.Single){return this.Retrieve(FrmSortAttr.OrgNo, bp.web.WebUser.getOrgNo(), FrmSortAttr.Idx);}QueryObject qo = new QueryObject(this);qo.AddWhere(FrmSortAttr.ParentNo, "!=", "0");qo.addOrderBy("Idx");int i = qo.DoQuery();if (i == 0){FrmSort fs = new FrmSort();fs.setName("流程树");fs.setNo("100");fs.setParentNo("0");fs.Insert();fs = new FrmSort();fs.setName("公文类");fs.setNo("01");fs.setParentNo("100");fs.Insert();fs = new FrmSort();fs.setName("办公类");fs.setNo("02");fs.setParentNo("100");fs.Insert();qo = new QueryObject(this);qo.AddWhere(FrmSortAttr.ParentNo, "!=", "");qo.addOrderBy("Idx");i = qo.DoQuery();}return i;}///#endregion 构造.///#region 为了适应自动翻译成java的需要,把实体转换成List./** 转化成 java list,C#不能调用.@return List*/public final List<FrmSort> ToJavaList(){return (List<FrmSort>)(Object)this;}/** 转化成list@return List*/public final ArrayList<FrmSort> Tolist(){ArrayList<FrmSort> list = new ArrayList<FrmSort>();for (int i = 0; i < this.size(); i++){list.add((FrmSort)this.get(i));}return list;}///#endregion 为了适应自动翻译成java的需要,把实体转换成List.
}

在这里插入图片描述

enum:

在这里插入代码片

在这里插入图片描述

JUmp way

在这里插入代码片

在这里插入图片描述

参考资料和推荐阅读

  1. 爬虫框架的设计与实现之JAVA篇.
  2. 主流爬虫框架的基本介绍.
  3. 高拓展性的Java多线程爬虫框架reptile.

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4553896.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

32岁辞职读博,博三还没有文章,焦虑,如何调节?

链接&#xff1a;https://www.zhihu.com/question/418159010编辑&#xff1a;深度学习与计算机视觉声明&#xff1a;仅做学术分享&#xff0c;侵删可能因为在企业工作过&#xff0c;觉得自己现在研究的东西全是表面功夫&#xff0c;一点不实用。导师不管&#xff0c;不发钱&…

38.“财务自由“,喂给创业者的童话故事

现在我们拼搏两三年&#xff0c;等公司上市后&#xff0c;就实现财务自由&#xff0c;就能过上好日子。上面是我看到有些人拉创业者入伙时说的话&#xff0c;很具有蛊惑性。我很疑惑&#xff0c;怎么“财务自由”就和“过上好日子”画上了等号呢&#xff1f;记得“财务自由”这…

普通人怎么去赚钱?想实现财务自由只能去创业。丨国仁网络资讯

大家好&#xff0c;我是猫哥&#xff0c;今天要给大家分享的仍然是怎么去赚钱&#xff0c;我们就死磕赚钱。 近朱者赤近墨者黑。这是我一直信奉的一句真理。如果你身边的人都是穷人&#xff0c;那么你毫无意外&#xff0c;一定也是一个穷人&#xff0c;如果你身边有很多富人&a…

亚马逊云科技携手普华永道,助力泉峰集团破解数据治理与使用难题

大数据时代的到来&#xff0c;掀起了企业数字化转型的热潮&#xff0c;对于制造行业的企业来说&#xff0c;除了顺应发展潮流快速开启数字转型之外&#xff0c;以创新思维不断拓展业务广度&#xff0c;对于自身发展也有着格外重要的意义。数字化水平能否与创新发展的脚步保持一…

(二十三:2020.12.14)CVPR 2020 学习(二)《U^2 Net》

《U^2 Net: Going Deeper with Nested U-Structure for Salient Object Detection》《借助嵌套U型结构深入研究显着物体》讲在前面摘要论文内容1.介绍2.之前的相关工作2.1 多级的深度特征整合2.2 多尺度特征提取3.我们提出的方法3.1 残差U型块3.2 U2-Net的结构3.3 监督策略4.实…

SVM入门(六)至(十)

原文转自&#xff1a;http://www.blogjava.net/zhenandaci/archive/2009/03.html 感谢原创作者~~ SVM入门&#xff08;六&#xff09;线性分类器的求解——问题的转化&#xff0c;直观角度 让我再一次比较完整的重复一下我们要解决的问题&#xff1a;我们有属于两个类别的样本…

SVM入门(十)将SVM用于多类分类

&#xfeff;&#xfeff;&#xff08;一&#xff09;SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的&#xff0c;它在解决小样本、非线性及高维模式识别中表现出许多特有的优势&#xff0c;并能够推广应用到函数拟合等其他机器学习问题…

SVM入门(五)到十

从最一般的定义上说&#xff0c;一个求最小值的问题就是一个优化问题&#xff08;也叫寻优问题&#xff0c;更文绉绉的叫法是规划——Programming&#xff09;&#xff0c;它同样由两部分组成&#xff0c;目标函数和约束条件&#xff0c;可以用下面的式子表示&#xff1a; &…