Spiga

WPF学习笔记5:MVVM

2021-09-04 13:37:13

摘要:一、了解MVVM 1. 什么是MVVM 一种设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 为什么需要MVVM?解决什么问题? 降低耦合、独立开发、逻辑重用(Xamarin MAUI多平台应用)、可测试 响应式布局 2. 控件交互到MVVM模式的转变 控件交互:基于控件的功能开发 -**MVVM**模式 代码/项目结构 Models: Views: ViewModels: 3. MVVM绑定模式下的信息交互 数据类型:INotifyPropertyChanged接口 public event PropertyChangedEventHandler? PropertyChanged; 执行事件,发公告 ContextMenu,注意:命令的数据源的指定 行为动作:ICommand接口 public event EventHandler? CanExecuteChanged; public bool CanExecute(object? parameter) public void Execute(object? parameter) 是不是所有控件都有Command属性?是不是所有动作都可以使用Command? 无法绑定的动作如何处理? 4. MVVM绑定扩展 无法绑定的对象属性 通过附加属性进行扩展 无法绑定的动作事件 (InputBindings: ) 单击鼠标左键 :LeftClick 双击鼠标左键:LeftDoubleClick 单击鼠标中键 :MiddleClick 双击鼠标中键:MiddleDoubleClick 单击鼠标右键:RightClick 双击鼠标右键:RightDoubleClick 不执行任何操作:None 旋转鼠标滚…… 阅读全文

WPF学习笔记4:控件模版

2021-08-29 16:36:24

摘要: 阅读全文

WPF学习笔记3:基本布局

2021-08-28 22:28:44

摘要: 阅读全文

WPF学习笔记2:3D绘图

2021-08-22 17:13:30

摘要: 阅读全文

WPF学习笔记1:基础控件

2021-08-21 14:16:31

摘要: 阅读全文

规范设计:Commit规范

2021-06-05 13:18:50

摘要:一个好的 Commit Message 至关重要: 可以使自己或者其他开发人员能够清晰地知道每个 commit 的变更内容,方便快速浏览变更历史,比如可以直接略过文档类型或者格式化类型的代码变更。 可以基于这些 Commit Message 进行过滤查找,比如只查找某个版本新增的功能:git log --oneline --grep ^feat|^fix|^perf。 可以基于规范化的 Commit Message 生成 Change Log。 可以依据某些类型的 Commit Message 触发构建或者发布流程,比如当 type 类型为 feat、fix 时我们才触发 CI 流程。 确定语义化版本的版本号。比如 fix 类型可以映射为 PATCH 版本,feat 类型可以映射为 MINOR 版本。带有 BREAKING CHANGE 的 commit,可以映射为 MAJOR 版本。 Angular 规范在功能上能够满足开发者 commit 需求,在格式上清晰易读,目前也是用得最多的。 Angular 规范其实是一种语义化的提交规范(Semantic Commit Messages),所谓语义化的提交规范包含以下内容: Commit Message 是语义化的:Commit Message 都会被归为一个有意义的类型,用来说明本次 commit 的类型。 Commit Message 是规范化的:Commit Message 遵循预先定义好的规范,比如 Commit Message 格式固定、都属于某个类型,这些规范不仅可被开发者识别也可以被工具识别。 在 Angular 规范中,Commit Message 包含三个部分,分别是 Header、Body 和 Footer,格式如下: type[optional scope]: description // 空行 [optional body] // 空行 [optional footer(s)] 其中,Header 是必需的,Body 和 Footer 可以省略。在以上规范中,必须用括号 ()括起来, [] 后必须紧跟冒号 ,冒号后必须紧跟空格,2 个空行也是必需的。 在实际开发中,为了使 Commit Message 在 GitHub 或者其他 Git 工具上更加易读,我们往往会限制每行 mess…… 阅读全文

k8s生产部署(十二):jenkins搭建

2021-04-10 10:53:48

摘要:1、编辑yaml文件 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: jenkins-claim namespace: qjy-cicd annotations: volume.beta.kubernetes.io/storage-class: nfs-storage spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi # jenkins 对应的 RBAC --- apiVersion: v1 kind: ServiceAccount metadata: name: jenkins-admin namespace: qjy-cicd labels: name: jenkins --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: jenkins-admin labels: name: jenkins subjects: - kind: ServiceAccount name: jenkins-admin namespace: qjy-cicd roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io # jenkins 对应的 svc --- apiVersion: v1 kind: Service metadata: name: jenkins namespace: qjy-cicd labels: app: jenkins spec: type: NodePort ports: - name: http port: 8080 #服务端口 targetPort: 8080 nodePort: 32001 #NodePort方式…… 阅读全文

k8s生产部署(十一):netcore应用部署

2021-04-02 19:15:08

摘要:1、打包镜像 docker build -t zq-apigateway:1.0.0 ./zq-apigateway/. 2、Helm Create 在master节点上创建一个文件夹,如deploy cd deploy helm create zq-apigateway 将生成的文件下载到本地进行编辑 3、编辑deployment.yaml spec/template/spec/containers,imagePullPolicy后 containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} image: {{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }} imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: ASPNETCORE_HOSTINGSTARTUPASSEMBLIES valueFrom: configMapKeyRef: name: zq-env-config key: skywalking_hostingStartup - name: SkyWalking__Transport__gRPC__Servers valueFrom: configMapKeyRef: name: zq-env-config key: skywalking_servers - name: exceptionless__ServerUrl valueF…… 阅读全文

k8s生产部署(十):harbor搭建私有仓库

2021-03-27 17:09:31

摘要:截止到目前生产环境上要使用到的基础应用基本已经搭建完成,但似乎还缺少一点什么,对!就是docker镜像的仓库,如果没有私仓,我们需要把镜像手动推送各个node节点,这样太不方便了。 我们使用harbor来搭建: 一、安装 1. 确定30002,30003,30004端口没有被占用 2. helm repo add harbor https://helm.goharbor.io 3. helm search repo harbor 4. helm pull harbor/harbor --version=1.6.1 5. tar -xf harbor-1.6.1.tgz 6. 改values里面storageClass的值nfs-storage(有3个地方) 7. 改ingress ingress: hosts: core: harbor.qhfinance.com notary: notary.qhfinance.com 8. 改harborAdminPassword: xxxxx #设置密码 9. helm install harbor -f harbor-values.yaml --namespace qjy-public harbor/harbor --version 1.6.1 10. 配置host,随便一个节点的ip地址 vim /etc/hosts 172.16.0.3 harbor.qhfinance.com 二、访问 访问地址http://harbor.qhfinance.com/,默认用户名/密码为:admin/xxxxx 默认harbor只有一个公共的library项目,该项目的权限和docker hub一样不需要认证就可以拉取镜像,我们把它改成私有,也可以重新创建一个私有项目。 三、配置证书 因为我们部署的Harbour是有自带凭证(CA),所以需要再Docker Client加入凭证,这样Docker Client才有办法存取到私有的注册表。 首先,在Kubernetes Master使用以下指令取得凭证 kubectl get secret/harbor-harbor-ingress -n qjy-cicd -o jsonpath=…… 阅读全文

k8s生产部署(九):skywalking搭建

2021-03-25 15:47:21

摘要:1、下载Charts包 git clone https://github.com/apache/skywalking-kubernetes cd skywalking-kubernetes/chart helm repo add elastic https://helm.elastic.co helm dep up skywalking 2、修改配置文件 skywalking/values-my-es.yaml oap: image: tag: 8.4.0-es7 # Set the right tag according to the existing Elasticsearch version storageType: elasticsearch7 ui: image: tag: 8.4.0 service: type: NodePort externalPort: 80 internalPort: 8080 nodePort: 30008 elasticsearch: enabled: false config: # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false host: elasticsearch-client.qjy-efk.svc.cluster.local port: http: 9200 user: elastic # [optional] password: xxxxx # [optional] 3、执行 kubectl create namespace qjy-apm helm install skywalking skywalking --namespace qjy-apm -f ./skywalking/values-my-es.yaml 阅读全文

1 2 3 4 5 ... 26 下一页