
教程
文章平均质量分 57
落单枫叶
嘉善县文化市场行政执法队
展开
-
Blazor Server 如何从客户端上读取文件内容
一种方式是将文件上传到Server端进行读取,一种方式当然是直接在网页客户端读取后发送数据到Server端进行保存。考虑到Server端的安全性,后一种方式相对更安全,同时减轻Server端压力。需要注意的是IBrowserFile接口没有包含原始文件的路径。正因为没有路径,不可能以打开文件的方式去直接打开它然后读取,所以,需要再次将它写入到定义好的路径中,然后打开它。原创 2023-05-19 10:35:14 · 1281 阅读 · 0 评论 -
【SSL证书】使用mkcert创建局域网或单机可信任Windows格式证书
所谓SSL证书,其实它包含两个方面,一是根证书,二是HTTPS的证书,HTTPS证书合法性由其根证书来进行认定。几大证书供应商的根证书一般都预置在系统中了,所以给人的错觉就是只知HTTPS证书,而不清楚其根证书。所以,我们的目的是有两个,创建自己的根证书和由这个根证书能认定的HTTPS证书。不同的系统证书的格式不尽相同,Windows的格式后缀名为.crt或.p12,为包含安装需要密码的独立文件,其他系统的可能为.pem,为两个文件,其中一个是key文件。3、创建HTTPS Windows格式的证书。原创 2023-05-15 12:43:08 · 2338 阅读 · 1 评论 -
第十四课功能键之取反——C#计算器编程教学
编写取反的功能我曾经想换成求阶乘,因为是太麻烦了。我又不得不跟括号打交道。没办法啊,你不这样,算式表示就有问题。然而加上括号,好几个方法说我还没有对括号进行处理的代码,所以遇到括号我会忽略哦!说明一点,本程序没有实现括号功能,但是为了实现取反,在表示上可能有括号(当数字为负),其他的就不是括号的意思,只是表示本项为负数而已。所以因为这个功能,好多代码必须增加判别功能,工作量加得不是一般的大。原创 2016-05-04 16:01:39 · 1883 阅读 · 0 评论 -
第十五课代码复用——C#计算器编程教学
新手和老手的区别之一,就是看代码的简洁程度。简洁的办法之一就是代码复用。看着我前面围绕等于写了至少5个方法,其实这其中有方法也由另外的方法调用,这就达到了复用的目的。举个例子,上节课讲到的取反,它的代码就用到了SetCaclLists方法。我不能在caclString上直接取反,那样做代码不是一般的长,也可能不可行。那么怎样实现呢?答案是:收到取反命令,先把已经接收到的输入串也就是cacl原创 2016-05-04 16:04:54 · 534 阅读 · 0 评论 -
第十六课程序的测试和修改——C#计算器编程教学
为了编好这个程序,我点击运行几百次。从中找出的差错满箩筐。可能我写这一节课有点多余,因为大家都会这样做。但是我觉得还是要细说一下。测试程序,首要的目的是检验解决问题思路的正确性,不正确就要及时换思路。其次,检验程序逻辑的正确性,尤其是各种循环代码,它的初始值,它的验证值,以及它是否超出了范围而报错。第三,编程的期望和运行的实际是否相同,是否出现了预期的结果。第四测试用例要想周到,很多错误在于用原创 2016-05-04 16:06:09 · 653 阅读 · 0 评论 -
第十七课预期策略选择——C#计算器编程教学
编程的一个难题是,方法我可以穷尽,但有些结果并非是用户的选择或期望,换个说法,有些表达具有二义性,可以这样,也可以那样,或者因为表达不够完整,因而结果是什么可能也有二义性。那么我们生成哪个结果呢?本程序有很多这样的情况。比如,用户输入了计算式,他再按开根号,你是给他当前项的根号值,还是给算式结果的根号值?用户输入了不完整的算式,你怎样处理?反正这都考验的不是编程能力,而是策略选择能力。一方原创 2016-05-04 16:08:07 · 417 阅读 · 0 评论 -
第十八课程序容错能力——C#计算器编程教学
支持键盘输入,不可控因素增加,必须具有很强的容错能力。一是中文习惯的乘除符号,与键盘及程序语言是不同的,所以,你要在SwitchString方法中添加对键盘乘除符号的支持。二是对错误输入进行过滤。三就是上面说的预期策略选择。四是对计算构造try一catch语句,把出错原因摆在明面上。第十八课结语。允许用户犯错,自己千万别犯错是程序员编程的最高原则。原创 2016-05-04 16:10:54 · 848 阅读 · 0 评论 -
第十九课关于记忆存取——C#计算器编程教学
这个编程其实难度不高,无非就是反算式保存在memoryString里,读取时返回给caclString。如果增加点功能,无非就是把记忆的算式添加到新算式上。比如: private void MemoryRecall() { if (HaveMemory) { if (isOPA原创 2016-05-04 16:13:40 · 1159 阅读 · 0 评论 -
C#计算器编程教学课程前言
最近完成C#计算器编程,模仿WIN7的基本型,但有所超越。除了完成90%的功能,还添加了多项式,支持键盘输入,算式保留,根据中国人习惯作了改进。程序运用了C#的基本功能,包括接口、绑定、面向对象、事件、字段封装、多种循环、集合操作、操作符重载、string的多种操作等,同时实现先乘除后加减的功能,但还没实现带括号的计算。这次是WinForm的计算器,下次是WPF的。先上图所谓90%原创 2016-05-03 17:19:29 · 671 阅读 · 0 评论 -
第二十课先乘除后加减——C#计算器编程教学
不少人念念不忘四则运算的运算符优先级,而Windows7的计算器基本型也没有实现它。其实根据我的算式运算解决思路,其实就查找有乘除的项,先加好(对象加),然后做加减。代码修改如下: private string RunCaclLists() { for (int i = 0; i < CaclLists.Count; i++)原创 2016-05-04 16:28:21 · 2877 阅读 · 0 评论 -
第十三课功能键之开根号——C#计算器编程教学
首先说明一点,这里实现的是整个算式结果开根号,而不是输入项数的开根号。所以,先计算,再开根号。代码如下: private void Square() { try { if (noStringAdded) {原创 2016-05-04 15:59:40 · 7156 阅读 · 0 评论 -
第十二课通知界面变更接口——C#计算器编程教学
前面说了,这个接口微软的FrameWork库里的名称叫INotifyPropertyChanged,在System.ComponentModel名称空间里。前面也说过了,CaclString属性实现了这个接口,你们是否举一反三,Result属性也实现了这个接口呢?没有?那你的学习能力有问题。(哈)凡是要和界面打交道的公有属性必须实现这个接口,这是我说过的界面和程序编写分离的编程模式的要求。原创 2016-05-04 15:56:36 · 507 阅读 · 0 评论 -
第十一课私有变量——C#计算器编程教学
前几节讲到了7个私有变量,分别是:private int i = 0;private IList caclLists = new List();private string caclString = "";private string result;private bool haveDecimal = false;private bool noStringAdded = true;原创 2016-05-04 15:46:57 · 607 阅读 · 0 评论 -
第二课用循环简化编程——C#计算器编程教学
上节课讲到,有完整功能版的接口和基本功能的接口。为啥会这样呢?这其实就是为了少写代码,用个循环解决输入的问题。你可以数字1的点击事件是输入1,就是每个按钮做一段程序。这当然没问题。简化版的接口是根据按钮的Text值来判断执行哪个功能,程序原本20多块,可以省略成2块。这里说一下,建立项目和添加控件等基本动作不讲了。实际编程,要多考虑将重复的过程用循环来简化编程。第一步,建立操作类,Ca原创 2016-05-04 11:55:28 · 1178 阅读 · 0 评论 -
第三课输入和显示——C#计算器编程教学
首先完成输入功能。前面讲到了那个语句cacl.EnterString(key);那么,方法EnterString(string str)是必须有的,而且是public。最先想到的循环语句是什么呢?想想界面上的Button的Text,都是不同的,但有只是输入的,有功能键的,所以要有判断,判断的循环有while和switch case,这里当然是swich case了。代码如下:原创 2016-05-04 12:21:59 · 1352 阅读 · 0 评论 -
第四课输入时的细节处理——C#计算器编程教学
第一课中讲到,算式是有规矩的,不能任何输入都作有效输入,所以判断是否有效输入,这是第三课讲到了AddCaclString方法的负责处理。今天就专门讲这个方法。先上代码: private void AddCaclString(bool isDecimal, bool isOP, string str) { if (!isDecimal原创 2016-05-04 15:10:30 · 936 阅读 · 0 评论 -
第五课等于之解决思路——C#计算器编程教学
输入了就要计算,这是计算器的功能要求。本程序要解决多项式的运算,难度不是一般的大,甚至有人怀疑使用了Eval。已经说过了,当然不是这样的。先分析算式特点,我们看到,算式其实是有规律的,一个数字加一个运算符,再加一个数字加一个运算符,如此循环而已。可能最后没有运算符只有数字了。程序员同志,你想到解决办法了没有?这就是一个List啊!所以第一步,设计List泛型的原型是当务之急。原型其原创 2016-05-04 15:15:20 · 606 阅读 · 0 评论 -
第六课等于之对象相加——C#计算器编程教学
到第五课为止,只是解决了思路问题。具体办法还要多想想。List是一个集合,集合里面是对象,对象之间怎么运算?答案是:操作符重载。这里当然是+重载。代码如下: public static CaclList operator +(CaclList a, CaclList b) { string result = "";原创 2016-05-04 15:18:44 · 905 阅读 · 0 评论 -
第七课等于之算式还原——C#计算器编程教学
导入了List集合,它是一个个对象,本程序还用到了算式还原,熟悉C#编程的朋友一定知道类里可以重写ToString方法,这里就用到了这个方法。代码如下: public override string ToString() { string op = ""; switch (TypeOp)原创 2016-05-04 15:25:18 · 569 阅读 · 0 评论 -
第八课等于之集合对象的操作——C#计算器编程教学
在Cacl类中,添加集合字段:IList caclLists = new List();或者可以这样写,以保证对象不为空: private IList caclLists; private IList CaclLists { get { if (caclList原创 2016-05-04 15:33:44 · 454 阅读 · 0 评论 -
第九课等于之关键调用——C#计算器编程教学
前几节课围绕等于花了很多心思,但这不是白花的,这是计算器的根本功能!但心思还没花完,只是构建了可以生成操作的集合方法,可以并非真的生成了,关键如何调用,今天就说说这个。真的生成可以操作的集合,先取名。取好方法、属性、事件、结构等名称是基本功和良好习惯,可以少很多说明文档。我把生成集合的方法命名为SetCaclLists()。生成集合,作为程序员,应先想到初始化生成环境,这是基本要求原创 2016-05-04 15:36:50 · 487 阅读 · 0 评论 -
第十课等于之调用关键调用——C#计算器编程教学
操作集合生成方法加调用生成方法,还没有真的进行等于操作。这节课就是本程序的“等于”的代码如何写?先期做了很多基本功,都是围绕它来做的基础工作。完成了基础工作,总体工作就容易多了,不就是再次调用吗?不全对。你考虑过计算吗?还有一个计算方法,这是核心!集合真的生成了,接着其实就是通过集合进行计算。所以等于之前还有个计算方法。计算方法代码: private string原创 2016-05-04 15:43:22 · 408 阅读 · 0 评论 -
第一课程序框架的构建——C#计算器编程教学
程序再小,它也要运行的相关功能要求,或者还有扩展需求。比如,算式中有括号怎么办?你们不要被图片中的括号诱导,其实我没实现算式中有括号的功能,那只是取反。 选择了项目,当然第一步是确定功能需求。本计算器是模仿Win7的基本型,这上面的每一个按钮基本可代表一个功能,分析也简单,英语单词不会查百度。主要功能其实是三个,输入、输出和记忆,也可以考虑可扩展等因素,编写完整实现功能暴露。原创 2016-05-04 08:52:59 · 1098 阅读 · 0 评论