你Java有MVC,我C#有MVVM(02:MVVM的一个小的成熟的稳定的项目应用)
@TOC
前言做项目的时候,用到了设计模式,总结下来,供以后参考,与诸君共勉。MVVM基础介绍【以简单加法计算器为例】,前情回顾
使用MVVM之后,界面和逻辑分开之后,界面中是不包含任何逻辑代码的
一、接着上文,这次做一个比较成熟、比较稳定、比较安全的小小小项目,方便自己以后查阅,与诸君共勉1.首先,咱们接到需求,一般都是UI长啥样,UI中的控件长啥样,每个控件的属性和作用是什么样的…,然后咱们得去进行需求分析、结合组内的资源进行任务优先级、人员、进度等进行详细的安排,然后就是方案的概设详设,然后就是开发…:
流程就不细说了,之前的文章里都有,这里还是要多多留心,避免做无用功
决定使用MVVM后,就需要结合UI界面,从上到下,仔细对View进行分析,也就是进行ViewModel建模
其实这里就需要分析UI中哪些是可以写死的,哪些是动态变化的?
一般动态变化的,咱们是不是就可以整上DataBinding啦
用我们的软件LCT做分析,从上到下,标题栏中显示的是版本号,那么包括底部的版本号,都需要使用DataBinding来做。【由此可以知道,咱们的软件LCT—->需要预留一块区 ...
你Java有MVC,我C#有MVVM(01)
@TOC
前言做项目的时候,用到了设计模式,总结下来,供以后参考,与诸君共勉。
一、我为什么要用MVVM1.假设有一天,在你还有三个小时下班时,公司来了个新需求,说是开发一个简单的加法计算器【两个输入框可以输入加数和被加数,另外一个输入框显示和,还有一个按钮用于保存求和结果】。作为一个始于Java,ing于C#的小学生,哼哧哼哧就开始了:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586//贴上最主要的代码。完整的项目代码见下面gitee链接<Window x:Class="AddNotUseMVVM.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...
百度世界大会2023-简短总结
@TOC
前言刚进公司,需要学开发需要的新框架及现成框架,完成自己的需求。那么在此期间,遇到新东西,就可以以此为基础,学习新语言新框架新工具…,可能会学到一些新技术、新知识,总结一下,以供后面参考学习,查看。肯定大家都有一定差异啦,大家作为参考哦,与诸君共勉。
一、百度世界大会2023:
看了百度世界大会2023之后,明显的感受就是:
无论是基础模型的研发,还是AI原生应用的落地与发展,百度厚积薄发
1.当其他团队还在“卷大模型”的时候,而百度已经快人两步:
不仅判断出“卷应用”才是方向
而且迅速完成一批应用的重构,并在这次大会上正式对外亮相
2.传统的三层IT技术栈架构:
芯片层
OS层
应用层
步入AI时代以后,相关技术栈的理解和分层也发生了变化,,从最底层的芯片层,如下:
最顶端的应用层
模型层
框架层
最底层的芯片层
巨人的肩膀
周志明老师的凤凰架构
codesheep老师的公众号文章
Unity-Learn02(场景Scene、游戏对象GameObject、组件Component)
@TOC
前言刚进公司,需要学开发需要的新框架及现成框架,完成自己的需求。那么在此期间,遇到新东西,就可以以此为基础,学习新语言新框架新工具…,总结一下,以供后面参考学习,查看。肯定大家都有一定差异啦,大家作为参考哦,与诸君共勉。
[工欲善其事,必先看点书嘛,看啥书呢?](https://aiminminai.gitee.io/aiminminai/categories/%E6%B8%B8%E6%88%8F/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/Unity%E7%9A%84%E5%A4%A7%E6%A6%82%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF-%E8%A6%81%E5%AD%A6%E4%B9%A0%E7%9A%84%E6%96%B0%E4%B8%9C%E8%A5%BF%E9%83%BD%E6%9C%89%E4%BB%80%E4%B9%88/)
一、咱们开发,开发的是Component,组件。
GameObject,是容器【游戏中的物体可以看作是容器】,来装组件的。
运行时出现在场景中的游戏物体就是游戏对象 Ga ...
Unity-Learn01-Unity的大概学习路线&要学习的新东西
@TOC
前言-工欲善其事,必先看点书嘛,看啥书呢?刚进公司,需要学开发需要的新框架及现成框架,完成自己的需求。那么在此期间,遇到新东西,就可以以此为基础,学习新语言新框架新工具…,总结一下,以供后面参考学习,查看。肯定大家都有一定差异啦,大家作为参考哦,与诸君共勉。
一、说起Unity,游戏引擎嘛,心中大概有个方向,程序基础–>Unity基础(理论+实践)–>搞几个项目练练呗–>踩踩坑–>进行总结复盘
首先给自己强调一下:理论+实践
学习理论:是什么,有什么作用,在哪用【应用场景】,怎么用,【常见错误,解决办法,解决过程中用的工具和方法】
1.游戏、AR、VR概念漫谈
在移动平台,Unity几乎成为3D游戏开发的标准工具
2D游戏:视角完全锁定,二维坐标。
比如2048
做2D游戏,在Unity中选择第二个Orthographic,会隐藏垂直向里的Z轴,也就是隐藏距离感,看起来就是平面的,做3D的可以选择第个,放开距离感
特例比如 cs类游戏是透视视角。但小地图是正交视角,有些2D横版游戏拿第一个做效果应该也不错
3D游戏,可以任意改变视角,无锁定 ...
Code Snippet的使用
@TOC
前言在工作中学习中,快速编写代码的快捷操作很常见,也很重要,那就从Code Snippet开始学起吧,与诸君共勉。
Code Snippet:就是咱们在VS中敲的prop、propfull、ctol【构造器快捷键】、for等快捷键,然后按tab键自动生成代码1.VS自带的:prop、propfull、ctol【构造器快捷键】、for等快捷键,直接使用2.自定义Snippet:
步骤1:VS进入“工具选项”,找到“代码片段管理器”
步骤2:调整语言为目标语言,这里以C#【CSharp】为例。在里面找到原来的比如,prop的位置
步骤3:位置,例如D:\kaohuixianqumin\Visual Studio2022\VC#\Snippets\2052\Visual C#,这里每个人都不一样,根据自己配置展开即可
步骤4:复制一个原来的,然后将里面的内容修改为你自己想要做的
常用的就是修改两处:
步骤5:然后把修改的放入库中,如D:\kaohuixianqumin\Visual Studio2022\VC#\Snippets\2052\Visual C#,即可使用
知道你喜 ...
C-编程经验-遇到的bug及陷阱-四
@TOC
前言搞编程的,在工作中学习中,除了培养好的代码习惯、养成自己的一套代码风格,还需要多思考如何把代码写的更健壮,碰到bug如何去调试呢,与诸君共勉。
一、CS5720的优化点【gitee里面有笔记,可以参考】1.代码中使用了一些硬编码的数字和字符串,例如this.Size = new Size(654, this.Size.Height);和byte[] regData = new byte[24];。 将这些硬编码的值提取为常量或配置项,以提高代码的可维护性和可扩展性。
使用枚举类型:对于字符串数组 _strRegistor 中的寄存器编号, 使用枚举类型来代替字符串。这样可以提高代码的可读性和类型安全性。
2.代码中存在一些未使用的命名空间引用,例如using System.Drawing;。 删除这些未使用的命名空间引用,以保持代码的整洁性。3.ChipExtendReg1.UpdataRegValue方法中的Update写错为Updata4.CopyTo 方法中的条件判断可以简化为【因为它们的结果已经是布尔值。】123456789...retur ...
C#高频语法集锦(二)
@TOC
前言搞编程的,基础不牢,地动山摇,多多复习哦,与诸君共勉。
一、委托和事件1.简略八股
事件
用于对象或类之间的信息传递(消息推送)、动作协调
例子。对象Student拥有一个事件E1:意思就是当事件E1发生时,对象Student有能力通知别的对象一些消息【可以理解为类或者对象之间通信、同步信息】
事件不会主动发生,只会被触发
2.事件的使用经验/个人理解
建一个window forms或者WPF程序,在里面建好textbox及button等,然后调出button的属性,点那个闪电符号,也可以找到button的一些微软给咱们提供的事件,可以找到咱们需要的click事件,也可以自定义事件处理器【其实就是自己重新起个名字,然后点击或者双击进入自定义的事件处理器回调函数中,编写逻辑即可】,双击,就进入到事件处理器那个回调方法中了,然后编辑逻辑即可。当然啦,你也可以 += 连续按两下tab键,也可以生成事件处理器,两种方法都可以
事件的拥有者.事件 += 事件的响应者.事件处理器。+=代表订阅事件。用+=把+= ...
C#高频语法集锦(一)
@TOC
前言搞编程的,基础不牢,地动山摇,多多复习哦,与诸君共勉。
一、特征【ObsoleteAttribute】、程序1.[Obsolete(“提示信息”, ture/false)]:false/true代表是否停止编译,true代表。编译器发出错误提示并停止遍历,否则只发出提示信息不停止编译。提醒旧函数过时,使用新函数:12345[Obsolete("该函数已经过时,请使用新函数NewDoSomething()", false)]public void DoSomething(){ //...}
2..NET中预定义了200多个特性,细致信息在System.Reflection命名空间中的类
也可以自定义特性类,咱们用特征修饰哪个程序就用[]括起来放在程序前面。自定义的特性中的构造函数中的参数是必选参数,特性中的公有变量是可选参数
自定义特性时可以被其他特性修饰:1234567/// <summary>/// AttributeUsageAttribute类时专门修饰特性的特性,有AttributeT ...
C#编程经验/遇到陷阱总结(三)
@TOC
前言搞编程的,在工作中学习中,除了培养好的代码习惯、养成自己的一套代码风格,还需要多思考如何把代码写的更健壮,碰到bug如何去调试呢,与诸君共勉。
一、写代码之前:1.属性:原本为了防止成员age,设置为公共的之后出现age = -10这种,所以设置GetXxx/SetXxx访问器进行封装,对数据通过两个public函数GetXxx/SetXxx进行合法性检查。但是咱们平时访问age属性,就是一个变量呀,用函数去访问不太符合习惯,所以C#出来一种特殊语法,属性
set访问器有个特殊的隐式参数value
属性运行方式和函数类似,算是一种特殊函数。但是属性的使用方式还是对象或者类,和普通变量一样
属性和他对应的变量同名,但是属性首字母大写Age,变量还是小写age,属性名字可以随便,但是乱起不好识别
2.编译遇到:两个输出文件名解析为同一个输出路径:“obj\x86\Debug\xxxxxx.resources”:使用小乌龟对之前的修改进行删除,不知道是增加了什么3..NET约定,所有特性的名称都以Attribute结尾,使用时可以省略Attri ...
