美文网首页
每日温习(2017/10/29-)

每日温习(2017/10/29-)

作者: 文袁 | 来源:发表于2017-10-29 23:16 被阅读0次

    2017/10/29

    1.C#基础语法:

    矩阵类的实现

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    namespace 矩形类的实现

    {

    class rectangle      //声明一个矩形的类

    {

    double length;

    double width;

    public void acceptdetails()    //接收属性值

    {

    length = 4.5;

    width = 3.5;

    }

    public double getArea()      //计算面积

    {

    return length * width;

    }

    public void Display()      //显示细节

    {

    Console.WriteLine("Lenth :{0}",length);

    Console.WriteLine("Width : {0}",width );

    Console.WriteLine("Area :{0}",getArea());

    }

    }

    class Program

    {

    static void Main(string[] args)

    {

    rectangle r = new rectangle();  //实例化一个类

    r.acceptdetails();

    r.Display();

    Console.ReadLine();

    }

    }

    }

    a.多敲代码,增加熟练度。

    b.重新认识了调试,设置断点,按F10逐过程调试,F11逐句调试。这是一个很重要的学习代码的方法,通过逐过程和逐句能更好更快地去学习代码的详细运行原理,加深自己的理解,自己之前竟然没意识到调试的重要性!以后得多和身边的优秀的同学、同事、上级交流,学习借鉴他人好的方法和心得。


    2017/10/30

    2.数据类型:

    值类型,引用类型。

    字符串前面加 可以转义字符当作普通字符对待

    装箱:(?不能理解)

    int x = 123;

    object obj1 = x;  //装箱操作

    x = x + 100;      //改变x的值时,obj1的值并不会随之改变?

    Console.WriteLine("x = {0}", x);    //x = 223

    Console.WriteLine("obj1 = {0}",obj1);  // obj1 = 123

    3.类型转换:

    隐式类型转换

    显示类型转换

    常用转换:Convert.ToInt32() , Convert.ToString()

    4.常量与变量:

    Console.WriteLine("Hello\tworld\n one two\nthree"); //转义字符有效

    Console.WriteLine(@"Hello\tworld\n one two\nthree");  //转义字符失效

    计算圆的面积:

    const double pi = 3.14159;  //声明一个常量

    double r;

    Console.WriteLine("输入半径:");

    r = Convert.ToDouble(Console.ReadLine());

    double area = pi * r * r;

    Console.WriteLine("半径是:{0},面积为:{1}",r,area);

    Console.ReadLine();


    2017/10/31

    今日盘点:

           学习并完成了webservice的部署和调用,所遇到的问题和解决方案如下,但没有调用自己写的接口。下午开始学习ELinq,但速度缓慢,没有效果。随后给了一个webservice的实例,刚开始不会查看类的具体内容,也没去百度使用方法,消极怠工。经过师傅的指点,自己需要主动探索,不懂就问度娘和身边的人,不要随之任之。

    1.问题:

    (1)不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")......

    解决方案:

    因为IIS 7采用了更安全的web.config管理机制,默认情况下会锁住配置项不允许更改。管理员身份下运行命令行

    C:\windows\system32\inetsrv\appcmd unlock config-section:system.webServer/handlers。

    其中的handlers是错误信息中红字显示的节点名称。

    如果modules也被锁定,可以运行

    C:\windows\system32\inetsrv\appcmd unlock config-section:system.webServer/modules

    (2)IIS7.0/8.0的错误HTTP Error 500.19 - Internal

    Server Error,错误代码为0x80070021

    解决方案:

    打开和关闭系统功能---》Internet信息服务--》万维网服务---》应用程序开发功能—》勾选asp.net

    (3)HTTP错误404.3 - Not Found由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加MIME映射。

    解决方案:

    管理员权限打开cmd,输入命令: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis–i

    2.具体内容:

        仔细回想,今天没有学到实际的知识点,光是Elinq的搜索和查找教程,就花了一个多小时,然后看教程操作莫名奇妙卡壳,看到复杂一点的代码格式就懵圈,时间不经意就过去了,结果实际上啥都没学到!下午开始做用webservice连接数据库、查询并以json格式返回数据结果集的任务,随后指导人给了一个webservice 的实例,自己对里面不清楚的类不会去翻看定义,也没有这个意识,这是个很严重的问题呀,不懂一定要问,不能敷衍。

         解决方案:注意积累,学习指导人和身边同事的操作技巧和做事方法;一定要多问;把问题记录到word文档中,看到底是哪些问题耗费了时间,耗费了多少时间。

    往日复习:

    从键盘输入学生百分制的成绩,换算等级制成绩:A(100-90),B(89-80),C(79-70),D(69-60),E(60以下)。

    代码:

    Console.WriteLine("请输入学生百分制的成绩");

    int grade = Convert.ToInt32(Console.ReadLine());   //成绩输入

    switch(grade/10)

    {

    case 10:

    case 9: Console.WriteLine("你的成绩为:A");break;

    case 8: Console.WriteLine("你的成绩为:B"); break;

    case 7: Console.WriteLine("你的成绩为:C"); break;

    case 6: Console.WriteLine("你的成绩为:D"); break;

    default: Console.WriteLine("你的成绩为:E"); break;

    }

    Console.ReadLine();

    用while求1到100的和

    代码:

    int sum = 0;

    int i = 1;

    while(i <= 100)

    {

    sum += i;

    i++;

    }

    Console.WriteLine(sum);

    Console.ReadLine();

    用do...while求1到100的和

    代码:

    int sum = 0;

    int i = 1;

    do     //至少执行一次

    {

    sum += i;

    i++;

    }

    while (i <= 100);

    Console.WriteLine(sum);

    Console.ReadLine();

    用for 求1到100的和:

    代码:

    int sum = 0;

    for (int i = 1 ; i < 101; i++)    //for循环

    {

    sum += i;

    }

    Console.WriteLine(sum);

    Console.ReadLine();


    2017/11/01

    今日盘点:

           今天上午学了ELinq的教程,写了一个控制台程序,成功跑通了。中间花了两个小时做了王燕平姐给的小任务。下午查看师傅给的实例,仿照着做,但是结果连最基本的结构都搞错了,太愚蠢了,糟心的学习过程,令人着急的学习效率。

          解决方案:每天晚上加班到九点再回去;多和师傅交流,先把问题记下来,整理一下,然后及时问师傅。

          具体代码:

    var dbConfiguration = DbConfiguration.Configure("Northwind");            //创建DbConfiguration,DbConfiguration在ELinq内是一个单个数据存储的概念,DbConfiguration代表一个数据库。            

    dbConfiguration.AddClass();            //注册OR映射            

    dbConfiguration.SetSqlLogger(() => new SqlLog(Console.Out));            //注册控制台日志            

    using (var ctx = dbConfiguration.CreateDbContext()) //创建IDbContext接口           

     {                var q = ctx.Set();

    //创建IDbset,表示用于执行插入,读取,更新,删除操作的类型化实体集,操作后会立即同步到数据库对应的表中。

    var c = new Customer  //添加一条记录

    {

    CustomerID = "XX1",

    CompanyName = "Company1",

    ContactName = "Contact1",

    City = "Seattle",

    Country = "USA"

    };

    // 执行PO插入

     q.Insert(c);

    //通过主键查询

    var c2 = q.FirstOrDefault(p => p.CustomerID == c.CustomerID);

    Console.WriteLine(c2.CustomerID);

    //基于Linq的局部更新

    q.Update(new { CompanyName = "ddd" },p => p.CustomerID == c.CustomerID);

    //查询

    var c3 = q.FirstOrDefault(p => p.CustomerID == c.CustomerID);

    Console.WriteLine(c3.CompanyName);

    基于Linq的删除

    q.Delete(p => p.CustomerID == c.CustomerID);

    var c4 = q.FirstOrDefault(p => p.CustomerID == c.CustomerID);

    if (c4 != null)

    {

       Console.WriteLine("delete failed");

    }

    }

    Console.Read();

    备注:后附今日详细时间的记录

    ·17:35 - 18:07

    学习webservice---最基本的结构都弄错了

    ·16:54 - 17:29

    学习webservice----在编写类-SsisDbContext,不行后,就尝试使用Elinq教程给的示例方法查询,但是不知道如何写输入、输出的代码,便接着看师傅给的范例,学习输入的方式,和对应类的编写

    ·16:15 - 16:49

    在webservie中仿照编写连接数据库类:SsisDbContext(问题:1.SsisDbContext:DbContext的时候(“DbContext”不包含采用0个参数的构造函数)2.(sqlLog不包含许多参数的构造函数))

    ·15:31 - 15:59

    仿照示例,添加实体类:casetype,映射到表s_casetype

    ·14:59 - 15:25

    查看实例中的类,headdata,httpresponse,SsisDbContext

    ·14:20 - 14:48

    完成Elinq的示例,在控制台程序上成功连接上数据库,实现增删改查。接着查看师傅给的实例,着手完成布置的任务

    ·13:47 - 14:15

    执行插入,通过主键查询,基于Linq的局部更新,基于Linq的删除,调试数据库连接

    ·11:56 - 12:24

    创建DbConfiguration,注册OR映射,注册控制台日志,创建IDbContext,创建IDbSet,添加一条记录

    ·11:13 - 11:40

    学习-Elinq-修改字符串连接信息-建customer实体类-映射Customers表

    ·10:41 - 11:08

    提交了社管对接文档(15min),继续学ELINQ(10)

    ·10:10 - 10:35

    用excel做社管事件对接,代码号对应识别匹配

    ·09:00 - 10:10

    看了二十分钟的ELinq教程,王燕平姐过来使用电脑,设置操作连接了一番,然后安排任务:浠水县的标准和黄冈市的标准对接(用excel)

    往日盘点:

    输出1-100中含有因子3的数

    代码:

    for (int i = 1; i <= 100; i++)

    {

    if (i % 3 != 0)

    {

    continue;

    }

    Console.Write(i);

    Console.Write("\t");

    求1-100中所有的素数

    代码:


    2017/11/02

    今日盘点:

    工作进度:

    1.内容:   

    今天上午在解决方案中添加网站,WEB服务,配置webconfig文件,然后添加必要的类(casetype类-用于映射s_casetype表;caseInfo类-用于存放输出的结果;SsisDbContext类-用于连接数据库,读取表格内容;returntype类-借用了现成的,这是用于以json格式返回数据结果集),在web服务sqlquery.asmx中编写主体代码。在本地能够成功实现,但是在用IIS部署的后出现了问题。

    2. 心得: 

      在程序本地成功实现之前,感觉不知所措,感觉模仿起来都很困难,不清楚范例中的哪些代码是必须用上的,哪些复杂的代码用不上,心里没底。想先看懂了,再敲代码,结果半天都没敲出两行代码。结果硬着头皮,先不管懂没懂完,严格仿照着写,适当删除示例冗余部分(这个部分感觉是困难的,不知道能不能删),写着写着,再问问师傅,结果竟然在实现了。虽然写的代码很简单,但让本来很绝望,感觉智商受限的自己有了些许的信心。以后,不管三七二十一,先动手试试看。

    3.问题详情:

    (1).问题:

    命名空间“System”中不存在类型或命名空间名称“Linq”。是否缺少程序集引用?

    解决办法:

    开始的时候创建项目选择的Framework版本是4.5,将Framework的版本改为了4.0.

    (2).问题:

    NLite.Data.QueryException:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。---> System.InvalidOperationException:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。---> System.BadImageFormatException:试图加载格式不正确的程序。(异常来自HRESULT:0x8007000B)

    解决方案:

    在IIS管理器中,1.选择网站对应的应用程序池,右键-高级设置:,2.设置“启用32位应用程序”为true,点击确定:

    (3)问题:

    测试窗体只能用于来自本地计算机的请求

    解决方案:

    计划安排:

    1.查找IIS部署的问题

    2.在部署成功后,请师傅布置下一个任务

    3.每天加班到九点再回去,免得回去不想看书从而懈怠。

    PS:每日详细时间记录

    [if !supportLists]·[endif]17:19 - 17:45

    学习webservice--百度解决发布的问题

    [if !supportLists]·[endif]16:47 - 17:14

    学习webservice--发布出现了问题:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题

    [if !supportLists]·[endif]16:08 - 16:35

    学习webservice--能够返回满足条件的第一个查询的元素,尝试返回满足条件的所有元素

    [if !supportLists]·[endif]14:18 - 14:44

    学习webservice---复制输出的类-returntype

    [if !supportLists]·[endif]13:47 - 14:13

    学习webservice----仿写响应体

    [if !supportLists]·[endif]11:33 - 12:05

    学习webservice--学写用于输入的类,

    [if !supportLists]·[endif]10:47 - 11:17

    学习webservice---写业务主体,添加一个用于输出存放的类,搁置的问题:1.如何输入typeid;2.继承时有baseservice,我也得添加到自己的网站中么

    [if !supportLists]·[endif]10:16 - 10:42

    学习webservice---严格按着结构仿照着写

    [if !supportLists]·[endif]09:42 - 10:11

    学习webservice-1.问题:命名空间“System”中不存在类型或命名空间名称“Linq”。是否缺少程序集引用?解决办法:开始的时候创建项目选择的Framework版本是4.5,将Framework的版本改为了4.0.

    [if !supportLists]·[endif]09:10 - 09:42

    统计制作智慧城市分组名单,并上报

    往日盘点:

    编写代码,感受public和private的区别。前者,任何公有成员都能被访问,后者,只有类中的其它成员能访问。而internal,是在该成员所定义的程序中的所有类都能访问


    2017.11.03

    今日盘点:

    工作进度:

    1.内容:

    (1)、向s_casetype表中插入一条数据A。(2)、通过typeid修改A案件的案件名称。(3)、通过typeid删除案件类型A。(4)、通过pid查询该父类下的所有案件。(5)、设置异常信息抛出,改正正常操作记录的数量输出。初步完成了前四个任务,目前正在做第五个任务。

    2.问题:

    问题详情:在做任务4---通过pid查询该父类下的所有案件时,抛出的结果界面

    System.ArgumentException:类型为“System.Collections.Generic.IEnumerable`1[casetype]”的表达式不能用于方法“System.Linq.IQueryable`1[casetype]

    TakeWhile[casetype](System.Linq.IQueryable`1[casetype],

    System.Linq.Expressions.Expression`1[System.Func`2[casetype,System.Boolean]])”的类型为“System.Linq.IQueryable`1[casetype]”的参数。

    解决方法:

    把查询语句:var results = db.CaseInformation.TakeWhile(p => p.pid== pidval);

    变为:varquery =

    fromcindb.CaseInformation

    wherec.pid == pidval

    selectc;

    具体原因还不清楚。

    计划安排:

    1.先完善异常信息的抛出,和正常结果集中结果记录数的更正。

    2.下周开始做多表联合查询,接着做陈友杰项目的后端查询调用。

    PS:附详细时间记录:

    [if !supportLists]·[endif]16:12 - 17:55

    学习webservice---判断传入的信息不符合格式,返回错误信息,编写对应代码。

    [if !supportLists]·[endif]15:23 - 15:55

    学习webservice--检查任务成果,存在明显问题:1.在删除,插入,更新一条记录时,count应该等于1。2.由三列做主键约束,在程序中先判断是否满足唯一性,若满足,执行对应操作,若不满足,返回错误提示信息

    [if !supportLists]·[endif]14:51 - 15:17

    学习webservice--还在看JSON格式返回结果集的类的详细代码

    [if !supportLists]·[endif]14:19 - 14:46

    学习webservice---学习以JSON格式返回结果集的类,看详细代码

    [if !supportLists]·[endif]13:46 - 14:14

    学习webservice---完成第四个任务:通过pid查询该父类下的所有案件。方法:用LINQ的查询方法加foreach,实现了查询结果的遍历

    [if !supportLists]·[endif]11:54 - 12:20

    学习webservice---查看ELinq官方网站,寻求elinq的遍历输出方法

    [if !supportLists]·[endif]11:19 - 11:48

    学习webservice----做第四个任务:通过pid查询该父类下的所有案件。问题:不知道如何遍历输出

    [if !supportLists]·[endif]10:39 - 11:04

    学习webservice--第三个任务:通过typeid删除案件类型A

    [if !supportLists]·[endif]10:07 - 10:34

    学习webservice-写代码做第二个任务:通过typeid修改s_casetype表中对应案件的案件名称

    [if !supportLists]·[endif]09:36 - 10:02

    学习webservice--完成插入一条数据纪录a

    [if !supportLists]·[endif]09:03 - 09:28

    学习webservice---做新任务-第一条:向s_casetype表中插入一条数据A


    webservice流程总结:

    1.添加一个网站


    2.添加一个web服务


    3.配置web.config文件。

    1)数据库连接语句

    add providerName="System.Data.OracleClient" name="Northwind" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.160)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl))); User Id=lt_dcms;Password=geodept3;

    2)一个远程访问的配置


    4.类的添加:

    1)casetype类:映射至ORACLE数据库中的s_casetype表格中。

    2)CaseInfo类:用于输出的类

    3)HeadData类:用于程序运行状态的说明

    4)SsisDbContent类:用于连接数据库,和赋予接口(用于执行增删改查,并同步到数据库的对应表中)

    5)returntype类:以JSON格式返回数据


    5.主体代码的编写:

    (1)、向s_casetype表中插入一条数据A。

    (2)、通过typeid修改A案件的案件名称。

    (3)、通过typeid删除案件类型A。

    (4)、通过pid查询该父类下的所有案件。

    (5)、设置异常信息抛出,改正正常操作记录的数量输出。初步完成了前四个任务,目前正在做第五个任务。

    问题:逻辑漏洞太多,异常信息的识别和抛出存在很大问题。


    2017.11.06

    今日盘点:

    汇报人:刘文袁

    工作进度:

    1.内容:上午一开始自顾自调试修改错误信息的处理,和修改摸索加了三个限制条件的对应的增删改查的语句,但不得其法,带着几个自认为的问题地去向师傅请教,结果其实所有的用法范例中都有,自己没有去仔细学习和研究,辜负了师傅的良苦用心。后面模仿着范例中的使用,解决了语句的语法问题。但逻辑结构又有很大的问题,对输入信息的判断有些混乱,在请教陈友杰同学后,才恍然明白自己的两层if语句判断内外颠倒了,犯了逻辑上的低级错误。在解决逻辑上的问题后,随后的改动就轻松了很多。下午的时候,基本完成了增删改查的完善工作,但对多条记录的输出格式还得优化。半下午后,开始看多表查询的范例代码,一个一个类的查看。

    2.详细问题:

    1)如果没输入值,如何判断,错误的用法:使用null来判定传入的参数是否为空if(typeidval ==null)。

    解决方案:if(typeidval

    ==“”),用双引号判断。

    2)逻辑问题:

    对因果判断颠倒,先进入了子集,再做全集的判断语句,导致逻辑不通。

    解决方案:多请教身边的陈友杰同学、同事和师傅,自己平时注意使用if,else语句的逻辑结构判断。今天上午就是由于逻辑错乱,导致无法弹出对应的信息提示。

    3)代码注释问题:

    在编写代码后未对写注释。

    解决方案:边写边注释。

    4)范例学习问题:

    没有充分利用师傅给的范例,没意识到这个范例的重要性,自己缺乏学习主动性。

    解决方案:多研究师傅给的范例,学习其中优秀的写法。

    计划安排:

    1.明天使用ELinq进行多表联合查询,源表为c_caseinfo,z_casetype,任务是根据TYPEID查看该案件的类型名称。

    往日盘点:

    递归方法调用:

    参数传递:

    1)按值传递参数:形参不改变实参,因为它们使用不同内存中的值(因为在调用一个方法时,会为每个值参数创建新的存储位置)更深层次的机制还不懂???

    2)按引用传递参数:

    引用参数是对变量内存位置的引用,表示与提供方法的实际参数具有具有相同的内存位置。对原理还是有点懵??



    2017/11/7

    今日盘点:

    工作进度:

    1.内容:上午开始编写多表联合查询的代码,通过仿照范例的写法。先添加了三个类,casetypemodel类和caseinfomodel类用于映射数据库中的对应表z_casetype和c_caseinfo,casedetail类用输出;接着添加SsisDbContext类中的注册映射关系,其中刚开始把一对多和多对一的关系颠倒了;最后是编写主体代码和调试异常信息的处理。半下午后开始安装学习SVN,然后和陈友杰沟通了解他的项目内容,准备着手写后端的接口。

    2.问题:

    1)未通过主键查找数据,映射关系颠倒,导致查出多条纪录,从而出错。

    解决方案:改变映射关系。

    2)在异常信息的逻辑处理上,出现问题,对输入信息的判断不全,不能判断未赋值的情况,未能考虑到输入为非整型的字符串内容的报错处理。

    解决方案:在请教陈友杰同学和百度后,解决了逻辑问题。先定义传入的参数为string类型,而不是int类型;然后通过判断字符串能否转为整型为条件,若不能,报错:"查询失败,请输入正确查询信息",若能,进入内层—案件是否存在的判断(若存在,执行查询;若不存在,返回:"案件不存在"及对应提示)。

    计划安排:

    1.掌握SVN的基本用法

    2.和陈友杰沟通,开始写后端的接口。

    2017/11/8

    今日盘点:

    汇报人:刘文袁

    工作进度:

    1.内容:上午安装调试陈友杰给的项目,运行起来,然后和陈友杰沟通需要写后端代码的内容,第一个接口功能是先查询出所有记录内容,然后以树形结构返回结果集。然后找了一个范例学习,但范例中并没有使用ELinq技术,而是涉及到在PL/SQL中写存储过程,对于使用哪个形式有些疑惑,在请教师傅后,得知使用ELinq技术也可以实现后,便决定先使用学习过的Elinq方式编写。下午就修改数据库连接字符串,添加了对应的类,编写了查询所有记录的代码。

    2.问题:查询出的所有结果是list列表,需要转换为树形结构的结果集。

    尝试的解决方案:将集合类转换为DataTable后,在转换为树形结构。

    计划安排:

    [if !supportLists]1.[endif]先解决转换为树形结构的结果集的问题。

    [if !supportLists]2.[endif]做增删改查的其它接口。

    往日盘点:

    字符串的操作



    2017/11/09

    今日盘点:

    汇报人:刘文袁

    工作进度:

    [if !supportLists]1.[endif]内容:上午进行了一个错误的尝试(想把列表转换为表,然后想办法转为树形结构,在以JSON格式返回结果集),实际上转换成表的操作根本是多余的。原因在于自己没有仔细看示例,没明白只要最终输出的结果是JSON格式即可。另外没有新建自己的解决方案和网站,而是在别人的网站中添加自己的代码,这是不可取的。下午就重新建立了自己的解决方案和代码,然后耗费了大量时间的事情在于如何把用ELINQ查询出来的结果转换为树形结构。先是学习了oracle的存储过程中的树形展示的代码,然后需要做的就是把这个存储过程以elinq的方式写出来。

    [if !supportLists]2.[endif]问题:转换为树形结构

    可能解决方案(示例):

    public IEnumerable GetClassID(int p_id)

    {

    var query = from c in this.MenuInfo

    where c.Parent  == (long)p_id

    select c;

    return  query.ToList().Concat(query.ToList().SelectMany(t => GetClassID((int)t.Id)));

    }

    计划安排:

    [if !supportLists]1.[endif]再试试在elinq技术下转换为树形结构。

    [if !supportLists]2.[endif]倘若不行,尝试通过存储过程的方式写接口。

    相关文章

      网友评论

          本文标题:每日温习(2017/10/29-)

          本文链接:https://www.haomeiwen.com/subject/cjkjpxtx.html