学习通刷课脚本语言_有啥好副业
学习通刷课脚本语言,有啥好副业?
说实话我有,做的也是高端的项目,要高中以上学历,对电商还要熟悉,
我在一个公司上班,做的仓库管理,一个月5000左右,白天上班,晚上时间就比较多,家里要买房买车子,都是我做副业赚的。
具体做什么?我做是店铺倒卖,就是卖淘宝店铺,不用自己出钱,不出本钱,保赚不赔的生意,最难的是有客户和货源,那里有人要卖店铺,价格多少,复核快吗?然后在网上,各平台发信息说你有店铺要出售,这样,别人就问加你的号,就问买店铺。谈好价,叫买家付定金,你再去卖家那边谈,再付他一些定金就行了,这个项目是稳赚不亏的。下面有图有证。具体的可以关注公众号:思维小哥 在发详细的步骤给大家看。
一个店铺的利润是30-50%左右,比如3钻的店铺我们卖7000元,一般就是4000左右收来,就算你一个星期卖一个店铺,一个月有4个星期,你也卖4个店铺,一个店铺赚1500,你一个月轻松赚6000元,这还是初级的,做的好一个月赚几十万大有人在,那就做天猫卖买,这种都是大钱。可以关注公众号:思维小哥
学习前端开发好还是数据分析比较好?
我们从前端和数据分析的前景来看一下,这两个技术的市场需求量。之后再来了解一下前端所需的知识点以及数据分析所需的知识点来看看题主更适合学习哪门技术。
Web前端的前景和学习路线:
先说大趋势,随着互联网发展的飞速,不进去大数据和人工智能很火。前端也是十分热门的,还记得那时候朋友圈纷纷转发的网易的H5吗。特别是谷歌、YouTube、FireFox等大型的企业纷纷将实现都转到了H5上面。
根据数据统计,我国的H前端工程师人口缺乏到10多万。从这个数据看到前端工程师也是非常有钱途的。
前端的岗位主要是利用HTML、CSS、JavaScirpt、DOM、Flash等各种web技能结合产品的界面开发,著作标准话是纯手工代码,并且增加了交互功能。下面来看一下前端需要学习的知识点:
数据分析的前景和学习路线:
数据分析的应用领域是很多的,不仅仅是在金融、交托、电商、医疗、政府、传媒、安防、电信,教育等等都是有一席之地的。现在但凡是转型互联网公司的话,都会比较重流量,重视流量的话,就会有数据分析师的一席之地;很多人不要入坑了未来会被取缔。首先技术还是技术,数据的重点不仅仅在于数据本身,更是在于后面的分析。
用户行为数据分析系统的流程和应用领域如下:
所需知识点有几个阶段,不过数据分析选择这个岗位之前,要选择入门语言。是Python还是Java都是可以像数据分析方面发展的下图是以java为例的数据分析的职业,所必备的知识点:
古代人为什么缠足?
我记得我的奶奶、姥姥都是小脚,小时候我只觉得很好玩,不知道她们的脚为什么这么小?当然,这都是过去封建社会制度造成的。那么为什么过去的女人要缠小脚呢?真的有什么好处?
1、什么是缠足?
缠足,就是用布把女人的双脚紧紧裹住,然后慢慢让它变小。缠足是中国古代封建社会的一种摧残女性的陋习。
过去女人的缠足就是从很小时就开始缠足,到长大成年后骨骼定型才把缠布拿掉。
女孩一般从4、5岁开始缠足,缠足前要先用热水把脚烫软,然后把拇趾外的四个脚趾向脚底弯曲,同时,用明矾涂在脚趾间,慢慢地,脚背隆起,脚严重变形,软组织挛缩,能够说这个缠足过程是漫长而痛苦的。也是中国一千多年以来,无数女性所经受的痛苦。是对人性的极大摧残。
1、女人缠足的历史
关于这个问题,我们还是要从缠足的历史谈起。缠足主要在汉族女子中进行,古时就有“楚王好细腰,宫中多饿死”的传说。缠足是中国古代一种陋习,用布将双脚紧紧缠裹,使脚畸形变小,以为美观。一般女孩从很小时起便开始缠足,直到成年骨骼定型后才将布带解开,当然也有终身缠裹者。
女人从何时开始缠足有多种说法。据考证,缠足真正是从北宋开始,《鹤林玉露》:建炎四年“柔福帝姬至,以足大疑之。颦蹙曰:金人驱迫,跣行万里,岂复故态。上为恻然”。另外,《宋史·五行志》中记载:“理宗朝,宫人束脚纤直”。缠足发展至南宋时最兴盛,元代向小巧型发展。到明清时女人缠足才进入鼎盛期。出现了“三寸金莲”之现象,它要求女人的脚要小至三寸,而且还要患弓弯型。这时缠足的社会风气已流行至社会各个阶层的女子,都开始仿效缠足。
一直到清政府被打倒后,孙中山才下令禁止了缠足。新中国成立后,女人缠足的陋习才被彻底消灭,受到摧残妇女才最终得到了解脱。
2、女人为什么要缠足?
中国女人缠足是有多方面的原因的,主要是由中国古人审美观、传统文化、社会制度所引起的。中国古人很崇尚小而精的审美观念,所以脚以小为美。特别是男性,对女人的小脚很感兴趣。如:三寸小脚称为“金莲”,四寸的称“银莲”,大于四寸的称“铁莲”,从这些小脚的命名就可见古代男人对小脚的喜爱程度。
文化因素在古人审美观念上起很大决定作用,他们认为女性美就是要表现出女人“阴柔”的一面,就是要体现出柔小、弱美、娴静,小鸟依人等等。樱桃小嘴、瓜子脸、细腰都是男人认为是女性美的代表。
所以对女人的小脚也是一样喜欢小的,东汉民歌《孔雀东南飞》中就有“纤纤作细步,精妙世无双”之句,就说明了美女的纤纤小足就是人们认为的美。
另外,由于女子的脚经过缠足后,她的神情、步态,产生了很大的变化,女人整个身体给人一种弱不禁风,楚楚可怜的感觉。正是这种“可怜的感觉”,是封建社会上层贵族所喜爱的。
女人缠足也是有其社会因素造成的,女人裹足的流行就包含有上层统治者的意志。缠足是从宋朝的皇室和上层社会开始的。据《鹤林玉露》记载,当时宋朝公主缠足十分普遍,《宋史·五行志》记载:“理宗朝,宫人束脚纤直”。这句话能够说是宋朝皇室公主、宫中女子缠足证据。苏东坡《菩萨蛮 咏足》中称女人的小脚为“宫样”,可见缠足从一开始就是上层官僚贵族所特有的,后来才在民间普及开来。
封建礼教的“三从四德”,是女人缠足的枷锁,女人要服从男人的要求,男人喜欢什么,女人就要做什么,来满足男人的特殊占有欲。
3、古代文人对缠足的推波助澜
女人缠足也是受历代文人雅士用诗歌等形式来赞美,。他们以妓女的小脚鞋玩“行酒”游戏,这是大多数文人的一种特独嗜好。更有不少文人把小脚来当作“学问”来做。
清朝有一个文人叫方绚的文人自诩为“香莲博士”,写了一篇颇为有名:《香莲品藻》的文章,他费尽心机,把女人的小脚分为五式九品十八种,来进行品味和赞赏。
还有很多文人都对小脚的赞美之词,“金莲”、“三寸金莲”、“香钩”等等,都是文化人对于裹小脚女人的赞美之词。
苏东坡《菩萨蛮》一诗中道“纤妙说应难,须从掌上看”。
他们还制定出了女人小脚美的七个标准:瘦、小、 尖、 弯、 香、 软、 正,又出了小脚的“七美”:形、质、资、神、肥、软、秀。
也还有其他很多文人墨客在历史上都留下许多诗文来称赞女人小脚,什么“莲步娉婷”、“踏春有迹” 、“步月无声”等。
正是这些以小脚为美的骚客文人畸形的称赞,间接导致了古人把女人小脚视为代表女性柔美所不可或缺的。有一句俗语就说“脚小能遮三分丑” 。方绚的《香莲品藻》中也说“丑妇幸足小邀旁人誉”,就是说如果女人三寸金莲缠得好,那怕是她容貌平常、身材不怎么样那也没什么关系,她还会受到人们的赞美的。
可是这些男人根本无法理解女人裹小脚的疼痛,他们只把女人的痛苦当作一种自己的爱好来欣赏。完全不考虑女人缠足时那种彻骨的疼, 这不能不说是男人的悲哀,更是女人和社会的悲哀。
图片来自网络
软件开发的新潮流低代码开发平台如OutSystemsMendix?
随着低代码概念的火热,相关的技术及产品也是层出不穷,不管是老牌行业软件厂商还是开放平台厂商,不论是互联网行业企业SAAS软件新动向还是新兴的低代码创新产品服务,都在第一时间打出了低代码这张牌。各个平台虽然各有优势,但大多又是自成体系,真正在企业方面进行选择时却一时难以抉择。对于低代码平台的功能评价,以及各平台组件间的互联互通则成为了市场上迫切需求。
在刚刚过去的2022年,在平台互联互通的方面,阿里在第二季度推出开源引擎 “LowCodeEngin”,国家队信通院也应市场需求在第四季度推出了《低代码开发平台通用技术要求》,针对低代码相关概念以及功能点新型了进一步的规范和梳理。
在刚刚过去的2022年,在平台互联互通的方面,阿里在第二季度推出开源引擎 “LowCodeEngin”,国家队信通院也应市场需求在第四季度推出了《低代码开发平台通用技术要求》,针对低代码相关概念以及功能点新型了进一步的规范和梳理。
在全面开放的大背景下,CodeBee团队,推出了基于开源LGPL协议 低代码引擎(LowCodeEngine)。
在全面开放的大背景下,CodeBee团队,推出了基于开源LGPL协议 低代码引擎(LowCodeEngine)。
二,产品组成低代码引擎,由界面设计器、OneCode通码框架以及,DSM领域建模工具 三部分支撑体系相互支撑的部分来组成,通过开放标准的组件协议完成相互继承支持。
二,产品组成低代码引擎,由界面设计器、OneCode通码框架以及,DSM领域建模工具 三部分支撑体系相互支撑的部分来组成,通过开放标准的组件协议完成相互继承支持。
(1) 视图设计器引擎设计器,采用的是拖拽引擎+插件的构造模型,用户可以通过开放的低代码协议编写插件。支持JS和JAVA两种扩展语言。样式构建提供了标准CSS3编辑器,支持事件动作以及函数动态扩展。支持自定义函数库扩展,支持阿里字体图片等资源库。
(1) 视图设计器引擎设计器,采用的是拖拽引擎+插件的构造模型,用户可以通过开放的低代码协议编写插件。支持JS和JAVA两种扩展语言。样式构建提供了标准CSS3编辑器,支持事件动作以及函数动态扩展。支持自定义函数库扩展,支持阿里字体图片等资源库。
(2)OneCode通码编辑器:OneCode,是一款为低代码语言定制的统一语法体系,采用Java语言作为原生语言,运行在JVM环境中,用户可以通过Java语言与低代码应用进行交互,也可以通过Java语言完成引擎插件,调用代码引擎完成编译部署应用。
(2)OneCode通码编辑器:OneCode,是一款为低代码语言定制的统一语法体系,采用Java语言作为原生语言,运行在JVM环境中,用户可以通过Java语言与低代码应用进行交互,也可以通过Java语言完成引擎插件,调用代码引擎完成编译部署应用。
(3)DSMEngine领域建模:DSMEngine 是独立于设计器的OneCode建模工具,平台采用领域建模模型,支持仓储管理、聚合应用,以及CodeFactory输出为OneCode代码编译输出。
(3)DSMEngine领域建模:DSMEngine 是独立于设计器的OneCode建模工具,平台采用领域建模模型,支持仓储管理、聚合应用,以及CodeFactory输出为OneCode代码编译输出。
DSM模型支持三种建模模式:
DSM模型支持三种建模模式:
(1)CodeFrist 代码优先模式
(1)CodeFrist 代码优先模式
通过Java语言 OneCode 模式原生撰写。
通过Java语言 OneCode 模式原生撰写。
(2)ViewFrist 视图优先
(2)ViewFrist 视图优先
通过视图引擎拖拽完成前期的交互模型,反向完成DSM模型。
通过视图引擎拖拽完成前期的交互模型,反向完成DSM模型。
(3)ModuleFrist 模型优先
(3)ModuleFrist 模型优先
通过数据库,微服务接口等模式,构建基础模型。
通过数据库,微服务接口等模式,构建基础模型。
DSM逆向转换
DSM逆向转换
通过不同方式完成的DSM模型,可以通过OneCode 在视图、Code 、以及Module 三种方式之间自由切换,利用相关工具完成仿真调试以及部署运行。
通过不同方式完成的DSM模型,可以通过OneCode 在视图、Code 、以及Module 三种方式之间自由切换,利用相关工具完成仿真调试以及部署运行。
DSM第三方语言转换
DSM第三方语言转换
DSM出码模块采用了独立的模板架构,除了可以以OneCode形式存在,还可以支持独立的出码模块定制独立的第三方语言模型输出。
DSM出码模块采用了独立的模板架构,除了可以以OneCode形式存在,还可以支持独立的出码模块定制独立的第三方语言模型输出。
三,设计器引擎介绍(1)功能概览
三,设计器引擎介绍(1)功能概览
(2)设计器布局
(2)设计器布局
设计器引擎是低代码引擎前端的SDK,面向开发人员,他本身不是一套可以适应所有人的低代码平台,而是技术开发人员可以通过扩展插件,周边生态,完成自身业务的定制,实现协同办公,CRM客户管理、物联网平台等通过低代码能力赋能业务系统
设计器引擎是低代码引擎前端的SDK,面向开发人员,他本身不是一套可以适应所有人的低代码平台,而是技术开发人员可以通过扩展插件,周边生态,完成自身业务的定制,实现协同办公,CRM客户管理、物联网平台等通过低代码能力赋能业务系统
(3)物料库
(3)物料库
"物料":低代码引擎的核心目的之一是建设跨行业的低代码框架,而每个行业由于其应用的领域不同,使用的人员以及方法方式不同,在一些底层组件方面会有会有加大差距。比如:政府业务中会大量使用的非规则表单元素,企业应用中各个行业自有的图标体系,物联网行业大量的设备图标图片以及实时联网图。
"物料":低代码引擎的核心目的之一是建设跨行业的低代码框架,而每个行业由于其应用的领域不同,使用的人员以及方法方式不同,在一些底层组件方面会有会有加大差距。比如:政府业务中会大量使用的非规则表单元素,企业应用中各个行业自有的图标体系,物联网行业大量的设备图标图片以及实时联网图。
(4)组件库组件定义:可以用于低代码平台的组件,包含了搭建体验增强配置,可以在设计器中 进行拖拽、配置等操作。有两种分类方式:按照场景可以分为基础组件、业务组件、图 表组件、布局组件和复合组件等。通常用户可以自主完成相关设定,并根据业务特点在视图引擎中进行自行扩展(后续章节中会演示实际注册示例)
(4)组件库组件定义:可以用于低代码平台的组件,包含了搭建体验增强配置,可以在设计器中 进行拖拽、配置等操作。有两种分类方式:按照场景可以分为基础组件、业务组件、图 表组件、布局组件和复合组件等。通常用户可以自主完成相关设定,并根据业务特点在视图引擎中进行自行扩展(后续章节中会演示实际注册示例)
组件通常是一组完成特定功能的可交互组件,根据不同的引擎模式,在引擎中完成加载渲染配置。
组件通常是一组完成特定功能的可交互组件,根据不同的引擎模式,在引擎中完成加载渲染配置。
配置示例
配置示例
Code转换
Code转换
组件调试导入
组件调试导入
(5)支撑管理公共资源导入
(5)支撑管理公共资源导入
(6)样式体系
(6)样式体系
DOM树透视样式盒
DOM树透视样式盒
DOM树透视
DOM树透视
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
配图示例代码
配图示例代码
{ "alias":"BuildTreeTreeView", "key":"xui.UI.TreeView", "host":this, "properties":{ "name":"BuildTreeTreeGrid", "items":[ { "borderType":"none", "caption":"JAVA树", "dynDestory":false, "hidden":false, "id":"getBuildTree", "imageClass":"bpmfont bpmgongzuoliuxitongpeizhi", "tagVar":{ } } ], "iniFold":false, "dynDestory":true }, "CS":{ "KEY":{ "color":"000000", "font-weight":"lighter", "border-radius":"0px 2px 0px 0px" }, "BAR":{ "font-family":"tahoma,geneva,sans-serif" } } }
动态样式盒
动态样式盒
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
代码配置示例
代码配置示例
{ "alias":"xui_ui_cssbox1", "key":"xui.UI.CSSBox", "host":this, "properties":{ "className":"xui-css-ame", "normalStatus":{ "color":"eeeeee", "border-radius":"6px", "box-shadow":"inset 0px 1px 0px 87C1DD", "text-shadow":"0 1px 0 97192", "$gradient":{ "stops":[ { "pos":"0%", "clr":"BA3CC" }, { "pos":"70%", "clr":"289B2" } ], "type":"linear", "orient":"T" }, "cursor":"pointer", "border-top":"solid 899C6 1px", "border-right":"solid 899C6 1px", "border-bottom":"solid 899C6 1px", "border-left":"solid 899C6 1px" }, "hoverStatus":{ "border-radius":"0px 3px 0px 0px" } } }
(7)事件框架
(7)事件框架
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
配置代码示例:
配置代码示例:
{ "alias":"BuildTreeTreeView", "key":"xui.UI.TreeView", "host":this, "properties":{ "name":"BuildTreeTreeGrid", "items":[ { "borderType":"none", "caption":"JAVA树", "dynDestory":false, "hidden":false, "id":"getBuildTree", "imageClass":"bpmfont bpmgongzuoliuxitongpeizhi", "tagVar":{ } } ], "iniFold":false, "dynDestory":true }, "events":{ //获取数据 "onGetContent":{ "actions":[ { "args":[ "{page.ReloadChild.setQueryData()}", null, null, "{args[1].tagVar}", "" ], "desc":"设置扩展参数", "method":"setQueryData", "redirection":"other:callback:call", "target":"ReloadChild", "type":"control" } ] }, //数据项选择 "onItemSelected":{ "actions":[ { "args":[ "{args[1].id}" ], "conditions":[ { "symbol":"non-empty", "right":"", "conditionId":"_nonempty_{args[1].className}", "left":"{args[1].className}" } ], "desc":"删除存在页", "method":"removeItems", "target":"BuildTreeTab", "type":"control" } ] } } }
(8)动作调用功能概览
(8)动作调用功能概览
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
配置实例代码:
配置实例代码:
{ "args":[ "{page.ReloadChild.setQueryData()}", null, null, "{args[1].tagVar}", "" ], "desc":"设置扩展参数", "method":"setQueryData", "redirection":"other:callback:call", "target":"ReloadChild", "type":"control" }, { "args":[ "{page.ReloadChild.invoke()}", "temp", null, "{args[2]}" ], "desc":"子节点装载", "method":"invoke", "redirection":"other:callback:call", "return":false, "target":"ReloadChild", "type":"control" } ] }
(9)插件体系插件是嵌入到设计器的内置管理功能,不同于业务组件,插件更多的是系统极的扩展功能。在实际应用中也比较常见,如系统运行期我们要根据用户不同显示不同内容数据,这就需要权限插件来完成,而业务用户在使用过程也会涉及到大量的业务和数据的流转功能而这些功能则需要动态的来管理页面的属性,甚至动态生成注入页面。这就需要流程插件来辅助完成。 在实际开发过程中特别是真实项目的工程开发时,我们往往要针对工程方面的进行很多的宏操作比如批量的修改特定组件样式,按特定条件检索复制组件特性,自动添加动作等等。这些都需要类似的宏插件来完成,OneCode 在整合后端运行以及服务部署方面也是按插件体系来规范的。分别针对,DSM建模提供了DSM插件,发布管理及运行提供了OPS插件, API整合方面提供了代理服务器插件,系统插件部分采用全开源方式共有需要的用户自行修改方便用户后期可以参照插件体系来修改自身的插件体系。
(9)插件体系插件是嵌入到设计器的内置管理功能,不同于业务组件,插件更多的是系统极的扩展功能。在实际应用中也比较常见,如系统运行期我们要根据用户不同显示不同内容数据,这就需要权限插件来完成,而业务用户在使用过程也会涉及到大量的业务和数据的流转功能而这些功能则需要动态的来管理页面的属性,甚至动态生成注入页面。这就需要流程插件来辅助完成。 在实际开发过程中特别是真实项目的工程开发时,我们往往要针对工程方面的进行很多的宏操作比如批量的修改特定组件样式,按特定条件检索复制组件特性,自动添加动作等等。这些都需要类似的宏插件来完成,OneCode 在整合后端运行以及服务部署方面也是按插件体系来规范的。分别针对,DSM建模提供了DSM插件,发布管理及运行提供了OPS插件, API整合方面提供了代理服务器插件,系统插件部分采用全开源方式共有需要的用户自行修改方便用户后期可以参照插件体系来修改自身的插件体系。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
四,OneCode中后台OneCode 本身基于JAVA语言体系,是在Java Spring 注解基础上的一套扩展子集,可以在普通额Java程序中通过添加注解,来实现前后台与低代码引擎的交互处理。
四,OneCode中后台OneCode 本身基于JAVA语言体系,是在Java Spring 注解基础上的一套扩展子集,可以在普通额Java程序中通过添加注解,来实现前后台与低代码引擎的交互处理。
(1)渲染原理
(1)渲染原理
(2)示例展示
(2)示例展示
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
(3)完整模块OneCode
(3)完整模块OneCode
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
@Controller @RequestMapping("/admin/org/person/") @MethodChinaName(cname = "人员管理", imageClass = "spafont spa-icon-login") @Aggregation(sourceClass = PersonService.class) public class PersonAPI { @RequestMapping(method = RequestMethod.POST, value = "Persons") @GridViewAnnotation() @ModuleAnnotation( caption = "人员列表") @APIEventAnnotation(autoRun = true, bindMenu = {CustomMenuItem.reload}) @ResponseBody public ListResultModel<List<PersonGridView>> getPersons(String orgId) { ListResultModel<List<PersonGridView>> resultModel = new ListResultModel<List<PersonGridView>>(); List<Person> personList = new ArrayList<>(); try { personList = getService().getPersons(orgId); resultModel = PageUtil.getDefaultPageList(personList, PersonGridView.class); } catch (Exception e) { e.printStackTrace(); } return resultModel; } @MethodChinaName(cname = "人员信息") @RequestMapping(method = RequestMethod.POST, value = "PersonInfo") @NavGroupViewAnnotation() @APIEventAnnotation(callback = {CustomCallBack.ReloadParent, CustomCallBack.Close}, bindMenu = {CustomMenuItem.editor}) @DialogAnnotation @ModuleAnnotation(caption = "编辑人员信息", width = "800", height = "550") @ResponseBody public ResultModel<PersonNav> getPersonInfo(String personId) { ResultModel<PersonNav> resultModel = new ResultModel<PersonNav>(); return resultModel; } @MethodChinaName(cname = "添加人员") @RequestMapping(method = RequestMethod.POST, value = "AddPersonView") @FormViewAnnotation @APIEventAnnotation(bindMenu = {CustomMenuItem.add}, autoRun = true) @Disabled @ModuleAnnotation( caption = "添加人员信息", width = "370", height = "260") @ResponseBody public ResultModel<AddPerson> AddPerson(String orgId) { ResultModel<AddPerson> resultModel = new ResultModel<AddPerson>(); CtPerson person = new CtPerson(); person.setOrgId(orgId); resultModel.setData(new AddPerson(person)); return resultModel; } @MethodChinaName(cname = "保存成员信息") @RequestMapping(value = {"savePerson"}, method = {RequestMethod.GET, RequestMethod.POST}) @APIEventAnnotation(callback = {CustomCallBack.ReloadParent, CustomCallBack.Close}, bindMenu = CustomMenuItem.save) public @ResponseBody ResultModel<Boolean> savePerson(@RequestBody CtPerson person) { ResultModel<Boolean> userStatusInfo = new ResultModel<Boolean>(); getService().savePerson(person); return userStatusInfo; } @MethodChinaName(cname = "删除人员") @RequestMapping(value = {"delPerson"}, method = {RequestMethod.GET, RequestMethod.POST}) @APIEventAnnotation(callback = {CustomCallBack.Reload, CustomCallBack.ReloadParent}, bindMenu = CustomMenuItem.delete) public @ResponseBody ResultModel<Boolean> delPerson(String iD) { ResultModel<Boolean> userStatusInfo = new ResultModel<Boolean>(); getService().delPerson(iD); return userStatusInfo; } PersonService getService() { return EsbUtil.parExpression(PersonService.class); } } @PageBar // @GridAnnotation(event = CustomGridEvent.editor, customService = PersonService.class, customMenu = {GridMenu.Add, GridMenu.Delete, GridMenu.Reload}) public class PersonGridView { @CustomAnnotation(pid = true, hidden = true) String orgId; @CustomAnnotation(pid = true, hidden = true) String roleId; @CustomAnnotation(uid = true, hidden = true) String iD; @CustomAnnotation(caption = "用户名称", required = true) String name; @CustomAnnotation(caption = "账户信息", required = true) String account; @CustomAnnotation(caption = "邮箱") String email; @InputAnnotation(inputType = InputType.password) @CustomAnnotation(caption = "密码", required = true) String password; @CustomAnnotation(caption = "手机") String mobile; @CustomAnnotation(caption = "部门名称") String orgName; public PersonGridView(Person person) { this.iD = person.getID(); this.orgId = person.getOrgId(); this.name = person.getName(); this.account = person.getAccount(); this.password = person.getPassword(); this.mobile = person.getMobile(); this.email = person.getEmail(); Org org = null; try { org = OrgManagerFactory.getOrgManager().getOrgByID(person.getOrgId()); this.orgName = org.getName(); } catch (OrgNotFoundException e) { e.printStackTrace(); } } } @BottomBarMenu @FormAnnotation(bottombarMenu = {CustomFormMenu.Save, CustomFormMenu.Close}, customService = PersonService.class, col = 1) public class AddPerson { @CustomAnnotation(uid = true, hidden = true) String iD; @CustomAnnotation(caption = "用户名称", required = true) String name; @CustomAnnotation(pid = true, hidden = true) String orgId; @CustomAnnotation(pid = true, hidden = true) String roleId; @CustomAnnotation(caption = "账户信息", required = true) String account; @CustomAnnotation(caption = "邮箱") String email; @InputAnnotation(inputType= InputType.password) @CustomAnnotation(caption = "密码", required = true) String password; @CustomAnnotation(caption = "手机") String mobile; public AddPerson(Person person) { this.iD = person.getID(); this.orgId = person.getOrgId(); this.name = person.getName(); this.account = person.getAccount(); this.password = person.getPassword(); this.mobile = person.getMobile(); this.email = person.getEmail(); } }
(五)DSM建模工具DSM建模,百度百科是这样定义的:
(五)DSM建模工具DSM建模,百度百科是这样定义的:
特定域建模(Domain-specific modeling,DSM),是一种设计和开发系统(如电脑软件)的软件工程方法学。它系统使用图形化特定域语言(DSL),表现系统的各个方面。DSM的语言倾向于支持比通用建模语言更高级别的抽象,因此需要较少的努力和更少的底层细节来描述特定系统。
特定域建模(Domain-specific modeling,DSM),是一种设计和开发系统(如电脑软件)的软件工程方法学。它系统使用图形化特定域语言(DSL),表现系统的各个方面。DSM的语言倾向于支持比通用建模语言更高级别的抽象,因此需要较少的努力和更少的底层细节来描述特定系统。
低代码技术应用可以通过提供更强的工具,提升程序员的代码效率。但其实质上也是一种特定场景下的软件描述方法,这个层面上低码技术和DSM思想是有其相通相同之处的,产品在设计之初就将DSM建模语言的构建以及工具支撑作为了底层支撑设计,将应用中积累的建模应用采用DSM的思想进行重构整合在底层打通。
低代码技术应用可以通过提供更强的工具,提升程序员的代码效率。但其实质上也是一种特定场景下的软件描述方法,这个层面上低码技术和DSM思想是有其相通相同之处的,产品在设计之初就将DSM建模语言的构建以及工具支撑作为了底层支撑设计,将应用中积累的建模应用采用DSM的思想进行重构整合在底层打通。
我们将现有的资源类的工具,统一到仓库应用中,包括统一的物料库导入,统一的数据源(数据库,外部存储)管理。并通代码工厂的辅助构建统一到Contenxt(OneCode)的当前环境技术模型中。在各个特定的业务模型中,完成独立的聚合实体整合,以及相应的服务管理,并为相关的方法模型透视管理服务。在OneCode 的基础之上,摆脱传统的 代码模板与生成机制。实现代码向模型的逆向能力。将DSM设计能贯穿整个项目开发实施管理过程,打造结余真实的代码之上的建模语言。
我们将现有的资源类的工具,统一到仓库应用中,包括统一的物料库导入,统一的数据源(数据库,外部存储)管理。并通代码工厂的辅助构建统一到Contenxt(OneCode)的当前环境技术模型中。在各个特定的业务模型中,完成独立的聚合实体整合,以及相应的服务管理,并为相关的方法模型透视管理服务。在OneCode 的基础之上,摆脱传统的 代码模板与生成机制。实现代码向模型的逆向能力。将DSM设计能贯穿整个项目开发实施管理过程,打造结余真实的代码之上的建模语言。
(1)仓储建模
(1)仓储建模
(2)聚合应用
(2)聚合应用
(3)视图工厂
(3)视图工厂
(4)支撑域
(4)支撑域
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
(5)流程建模
(5)流程建模
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
六,应用集成(1)内核最小集合集成(JS离线应用)设计器内核完全采用JS脚本完成,是独立的前端框架。内核版本包括:RAD 页面设计编辑器,xui运行运行脚本两部分。
六,应用集成(1)内核最小集合集成(JS离线应用)设计器内核完全采用JS脚本完成,是独立的前端框架。内核版本包括:RAD 页面设计编辑器,xui运行运行脚本两部分。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
最小集合仅包含,页面设计及器以及插件框架。
最小集合仅包含,页面设计及器以及插件框架。
设计界面集成:
设计界面集成:
下载开源包后,运行debug.html 即可打开编辑器。
下载开源包后,运行debug.html 即可打开编辑器。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
集成到自由应用时只需要,引入两个关键的js lib包即可集成到自有的应用。
集成到自由应用时只需要,引入两个关键的js lib包即可集成到自有的应用。
<script type="text/javascript" src="/RAD/xui.js"></script> <script type="text/javascript" src="/RAD/index.js"></script> <script type="text/javascript"> var lang = (function () { var dft = 'zh-cn', map = { 'en-us': 'en', 'zh-cn': 'cn' }, n = navigator, l = (n.language || n.browserLanguage || '').toLowerCase(); return map[l] || map[dft]; })(); xui.include("xui.Locale." + lang + '.doc', "/RAD/Locale/" + lang + ".js", function () { xui.Module.load('RAD', function () { SPA = this; }, lang); });
运行支撑环境集成:打开:
运行支撑环境集成:打开:
设计完成的文件再应用环境中引入如下代码即可
设计完成的文件再应用环境中引入如下代码即可
<script type="text/javascript" src="/xui/js/xui-all.js"></script> <script type="text/javascript" src="./xuiconf.js"></script> <script type="text/javascript" src="/xui/Locale/cn.js"></script>
(2)团队协作版团队协作版是独立的服务器部署版,在官网上申请账号后,可以在独立的服务器上运行。启动后通过浏览器访问 http://demoserver:83 用管理员 sysadmin 登录:
(2)团队协作版团队协作版是独立的服务器部署版,在官网上申请账号后,可以在独立的服务器上运行。启动后通过浏览器访问 http://demoserver:83 用管理员 sysadmin 登录:
首次登录 会进入默认的工程配置界面
首次登录 会进入默认的工程配置界面
配置工程
配置工程
关联API
关联API
设定团队管理员
设定团队管理员
代练通单价为什么这么低?
客户少
第一,现在打游戏的人很理智,不再像前几年那样子追求游戏段位以及俱乐部地位,现在主要是为了娱乐。所以找代打的人就很少
第二,未成年游戏法颁布,作为游戏的主力军青少年退出游戏市场,游戏玩家锐减,导致代打行情不好。
第三,现在打游戏玩家段位普遍较高,就不需要代打。