奇怪!遗传算法中,经过if(null!=bestChromo)判断后,bestChromo和上一代群体都发生了突变

EvilsBlood 2018-01-11 05:11:13
在我写遗传算法中,出现了最优个体bestChromo的适应度总是变小,找了很久的bug,对bestChromo.fit添加监视,发现在经过 if (null != bestChromo)后,bestChromo和上一代群体都发生了突变,但并不是每次经过 if (null != bestChromo)语句都会发生突变,求问是什么原因,还有没有别的因素会导致这样的现象
...全文
670 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-01-12
  • 打赏
  • 举报
回复
bestChromo = (GAChromosome)m_thisGeneration[0]; m_nextGeneration.Insert(0, bestChromo); 你这摆弄的不都是同一个对象吗?
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
好的,非常感谢,我调试试试,有问题就回来继续问,非常感谢
xuzuning 2018-01-12
  • 打赏
  • 举报
回复
使用了随机数的程序,使调试变得很困难,但你可以先固定随机数发生器的种子,从而固定住程序的流程
xuzuning 2018-01-12
  • 打赏
  • 举报
回复
引用 16 楼 weixin_40430379 的回复:
可是突变不是发生在对 bestChorom 进行了修改的时候, 看起来这个突变挺随机的,我上一次发现的突变是在if(null!=bestChromo)之后,但并不是每一次if(null!=bestChromo)都会变,删了if(null!=bestChromo)之后还是不对,
我只看到你的代码片段,当然不知道问题可能出在哪里,但是将 bestChromo 从队列中取出,加工后又当作新对象加入到队列中,这个做法肯定是不可取的 基因突变本来就是随机的,但这是业务上的事情,与编写代码本身没有直接关系
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
引用 24 楼 weixin_40430379 的回复:
不是那一段代码没执行,是bestchromo这个对象的成员变量的值突然就改变了,在if(bestchromo!=null)之后, 调试起来好困难啊,循环10次可能会突然改变
那你的问题就是刚才说的,引用类型的问题。 至于你为何不能添加this.MemberwiseClone()方法,只能看你整个的class和继承类了。
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 23 楼 hanjun0612 的回复:
[quote=引用 21 楼 weixin_40430379 的回复:] 几乎不会进入else判断,我还没学多线程和单线程,我这个应该是单线程吧
既然不是多线程,那你完全可以调试查看。 我不是太理解你说的突变到底是哪一段代码没执行。[/quote] 不是那一段代码没执行,是bestchromo这个对象的成员变量的值突然就改变了,在if(bestchromo!=null)之后, 调试起来好困难啊,循环10次可能会突然改变
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
引用 21 楼 weixin_40430379 的回复:
几乎不会进入else判断,我还没学多线程和单线程,我这个应该是单线程吧
既然不是多线程,那你完全可以调试查看。 我不是太理解你说的突变到底是哪一段代码没执行。
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复

还是不行呢
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 18 楼 hanjun0612 的回复:
其实,我本来以为你这个是并发的问题。 但是从头到尾,你只字未提多线程。 所以我不能确定,你指的 看起来这个突变挺随机的,我上一次发现的突变是在if(null!=bestChromo)之后,但并不是每一次if(null!=bestChromo)都会变,删了if(null!=bestChromo)之后还是不对 到底是不是指有时进入else的判断
几乎不会进入else判断,我还没学多线程和单线程,我这个应该是单线程吧
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
引用 19 楼 weixin_40430379 的回复:
[quote=引用 13 楼 hanjun0612 的回复:] m_nextGeneration.Insert(0, bestChromo); 你每次新增完,然后改变bestChromo, 那么m_nextGeneration中的bestChromo都会变成当前bestChromo。这是引用类型。 在GAChromosome 类中 增加 public GAChromosome MemberwiseClone() { return (GAChromosome)this.MemberwiseClone(); } 然后 bestChromo = (GAChromosome)m_thisGeneration[0]; 改为 GAChromosome bestChromo =((GAChromosome)m_thisGeneration[0]).MemberwiseClone;
有错误 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1540 无法通过“GAChromosome”类型的限定符访问受保护的成员“object.MemberwiseClone()”;限定符必须是“GA”类型(或者从该类型派生) [/quote] 方法名改一下 public GAChromosome MyClone() { return (GAChromosome)this.MemberwiseClone(); }
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 13 楼 hanjun0612 的回复:
m_nextGeneration.Insert(0, bestChromo); 你每次新增完,然后改变bestChromo, 那么m_nextGeneration中的bestChromo都会变成当前bestChromo。这是引用类型。 在GAChromosome 类中 增加 public GAChromosome MemberwiseClone() { return (GAChromosome)this.MemberwiseClone(); } 然后 bestChromo = (GAChromosome)m_thisGeneration[0]; 改为 GAChromosome bestChromo =((GAChromosome)m_thisGeneration[0]).MemberwiseClone;
有错误 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1540 无法通过“GAChromosome”类型的限定符访问受保护的成员“object.MemberwiseClone()”;限定符必须是“GA”类型(或者从该类型派生)
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
其实,我本来以为你这个是并发的问题。 但是从头到尾,你只字未提多线程。 所以我不能确定,你指的 看起来这个突变挺随机的,我上一次发现的突变是在if(null!=bestChromo)之后,但并不是每一次if(null!=bestChromo)都会变,删了if(null!=bestChromo)之后还是不对 到底是不是指有时进入else的判断
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
引用 16 楼 weixin_40430379 的回复:
[quote=引用 9 楼 xuzuning 的回复:] 你对 bestChorom 进行了修改,那么这个修改就会表现到 m_thisGeneration 中的每一个 bestChorom 因为对象是引用传递的 下一代虽然继承了上代的属性,但仍是一个独立的个体 其实你只要将 GAChromosome 的定义,由 class 改成 struct 就可以了
可是突变不是发生在对 bestChorom 进行了修改的时候, 看起来这个突变挺随机的,我上一次发现的突变是在if(null!=bestChromo)之后,但并不是每一次if(null!=bestChromo)都会变,删了if(null!=bestChromo)之后还是不对,[/quote] 你的意思是,并不会每次都进入if(null!=bestChromo)? 那么就是进入了 else { System.Windows.Forms.MessageBox.Show("bestChrom==null"); } 是这样吗
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
你运行一下就知道了
public class User
        {
            public int id { get; set; }
            public virtual string name { get; set; }
            public virtual string buyer { get; set; }
            public virtual string idArr { get; set; }
            public virtual DateTime expiredTime { get; set; }

            public User MyClone()
            {
                return (User)this.MemberwiseClone();
            }
        }

        static void Main(string[] args)
        {
            //浅拷贝
            User u = new User() { id = 1 };
            User u1 = u;
            Console.WriteLine("before:"+u.id);
            u1.id = 2;
            Console.WriteLine("after:"+u.id);

            Console.WriteLine("-------------------");

            //深拷贝
            u = new User() { id = 1 };
            User u2 = u.MyClone();
            Console.WriteLine("before:" + u.id);
            u1.id = 2;
            Console.WriteLine("after:" + u.id);
            Console.WriteLine("after:" + u1.id);

            Console.ReadLine();
        }
xuzuning 2018-01-12
  • 打赏
  • 举报
回复
只要 fit 属性不是引用类型就可以
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
你对 bestChorom 进行了修改,那么这个修改就会表现到 m_thisGeneration 中的每一个 bestChorom 因为对象是引用传递的 下一代虽然继承了上代的属性,但仍是一个独立的个体 其实你只要将 GAChromosome 的定义,由 class 改成 struct 就可以了
可是突变不是发生在对 bestChorom 进行了修改的时候, 看起来这个突变挺随机的,我上一次发现的突变是在if(null!=bestChromo)之后,但并不是每一次if(null!=bestChromo)都会变,删了if(null!=bestChromo)之后还是不对,
正怒月神 2018-01-12
  • 打赏
  • 举报
回复
m_nextGeneration.Insert(0, bestChromo); 你每次新增完,然后改变bestChromo, 那么m_nextGeneration中的bestChromo都会变成当前bestChromo。这是引用类型。 在GAChromosome 类中 增加 public GAChromosome MemberwiseClone() { return (GAChromosome)this.MemberwiseClone(); } 然后 bestChromo = (GAChromosome)m_thisGeneration[0]; 改为 GAChromosome bestChromo =((GAChromosome)m_thisGeneration[0]).MemberwiseClone;
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 8 楼 Allblus 的回复:
这是在研究啥啊?
遗传算法
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
但并不是每次经过 if (null != bestChromo)语句都会发生突变。 你指的突变是哪一块代码
bestChromo和m_thisGeneration中的成员变量发生了突变,(bestChromo是类GAChromosome 的对象,用来存储每一代群体中的最优个体,m_thisGeneration是arraylist数组,存储GAChromosome 的对象,表示上一个群体)
EvilsBlood 2018-01-12
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
你对 bestChorom 进行了修改,那么这个修改就会表现到 m_thisGeneration 中的每一个 bestChorom 因为对象是引用传递的 下一代虽然继承了上代的属性,但仍是一个独立的个体 其实你只要将 GAChromosome 的定义,由 class 改成 struct 就可以了
那我如果是修改了 m_thisGeneration,bestChorom也会变吗? 有没有其它办法?感觉从class改成struct比较难呃。 把 bestChromo = (GAChromosome)m_thisGeneration[0]; 改成 bestChromo.fit= (GAChromosome)m_thisGeneration[0].fit,不直接在对象之间使用等号,在成员变量之间使用等号可以吗?
加载更多回复(8)
​ 博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌项目名称基于Web的酒店客房管理系统的设计与实现系统说明3.2.1  用户模块功能分析前台模块应主要包括用户登录模块、用户注册模块、查看客房信息模块、客房预定 模块、用户留言模块、充值模块和个人信息维护模块。用户登录模块:用户通过输入注册的的账号和密码,然后进行身份验证,匹配成功 后实现登录功能。用户注册模块:用户输入合法的账号和密码可以实现注册功能。 查看客房信息模块:用户可以通过首页查看客房的价格,图片,详情等信息,从而   可以选择想要预定的房间。 客房预定模块:用户选择自己想要预定的客房后,可以通过输入相关信息进行订房操作。用户留言模块:用户可以向管理员发送留言。 充值模块:用户可以通过添加银行卡再为自己进行充值操作。 个人信息维护模块:用户可以修改自己的姓名、密码、身份证号等信息,还可以查看自己的订单。3.2.2  管理员模块功能分析对于管理员而言,一个好的管理系统总是能让酒店的管理工作事半功倍[7]。管理员 能够通过这个系统对自己的酒店情况一目了然,应该包括客户留言模块、客房管理模 块、订房信息管理模块、入住信息管理模块、统计分析模块、酒店新闻管理模块、会 员信息管理模块、员工信息管理模块、系统用户管理模块、个人信息维护模块。客户留言模块:管理员可以查看并回复用户的留言。客房管理模块:管理员可以管理客房信息,可以添加新的客房,删除已经停用的客房信息,还可以修改现有的客房信息。订房信息管理模块:管理员可以处理用户的订房请求,为用户办理入住手续。入住信息管理模块:对于没有注册的线下客户,也可以办理入住手续。统计分析模块:可以对酒店所有的入住信息进行记录和总结分析。酒店新闻管理模块:管理员可以更新网站上的新闻公告,展示图片等信息。会员信息管理模块:管理员可以查看到所有的注册会员信息,可以对会员信息进行删除,修改,添加操作。员工信息管理模块:管理员可以查看到自己公司所有的员工信息,而且还可以对员工的相关信息进行管理。系统用户管理模块:管理员可以查看到所有的系统管理员信息并对管理员信息进行管理。个人信息维护模块:管理员可以更改自己的登录密码或者是姓名、性别、手机号等 相关个人信息。​编辑 环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;6.是否Maven项目:否;技术栈1. 后端:Spring+SpringMVC+Mybatis2. 前端:JSP+CSS+JavaScript+jQuery使用说明1. 使用Navicat或者其它工具,在mysql创建对应名称的数据库,并导入项目的sql文件;2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;3. 将项目springmvc-servlet.xml配置文件的数据库配置改为自己的配置;4. 运行项目,在浏览器输入http://localhost:8080/ 登录运行截图​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑 用户管理控制层:package com.houserss.controller;import javax.servlet.http.HttpSession;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.houserss.common.Const;import com.houserss.common.Const.Role;import com.houserss.common.ServerResponse;import com.houserss.pojo.User;import com.houserss.service.IUserService;import com.houserss.service.impl.UserServiceImpl;import com.houserss.util.MD5Util;import com.houserss.util.TimeUtils;import com.houserss.vo.DeleteHouseVo;import com.houserss.vo.PageInfoVo;/** * Created by admin */@Controller@RequestMapping(/user/)public class UserController if (ip != null && ip.length() > 0) String[] ips = ip.split(,);for (int i = 0; i  
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL动态传参和自定义函数: sql使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹多Excel文件并合并解决多文件合并列顺序不一致使用参数和函数批量导入文件 文本提取文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 
尹成Python27天从入门到实战项目!全课665节讲解详细易操作,助力实战项目能力成长,轻松、简单、易懂!day1  python入门与学习方法精确思维与用到才能记忆深刻课程简介课前介绍计算机简介与硬盘概念内存作用计算机小结编程语言简介操作系统简介python版本简介切换python版本修改环境变量交互式编程两种风格python3代码保存必须是utf-8使用IDE了解注释段落打印三引号注释多行三个单引号python代码要严格对齐文输入字符错误简单数学表达式代码风格三种错误风格系统执行指令运行结果乱码交互式编程绘图绘制线段与圆形改变颜色绘制奥运五环小结习题day1plus python  常量变量数据类型 常量与变量区别标识符关键字输入输出id求地址type求类型python变量是地址赋值可以改变类型python主要数据类型复数数据类型自适应变长整数intdel作用连续赋值交互对称赋值字符串转化与输入输出编程wmv多行拆分多行归并成一行规范用的常量算术运算符科学计数法与数字越界优先级结合性赋值运算符数据类型转换四舍五入数据提取时间处理作业day2   python字符串与绘图复习变量None变量参与运算没有赋值的情况不会改变绘制立方体绘制五角星时间计算强化实现贷款计算连续输入多个字符串加法与绘图实现显示线段长度数据函数使用快速查阅函数帮助字符串三种风格字符与编号文字符编号问题字符编号用途统一码转义字符意义转义字符用于字符串print高级用法字符串加法与转换字符串小结python所有的数据都是对象字符串格式化了解进制图形绘制重点作业以及学习认知方法day3   python运算符与ifelse逻辑语句第一天上午回顾第二天下午回顾1第二天回顾2.7习题解答2.11习题解答2.26作业KaliLinux简介3.4实现五边形面积计算3.7随机字符生成3.8实数误差与四舍五入3.18解答与特殊字符if简介与空格的作用if处理的是逻辑表达式关系运算符针对数值字符串的关系运算符if自动转化Bool类型随机数if缺点且运算符或运算符取反运算符短路效应身份运算符运算符优先级结合性概览pass语句潜台词翻译系统None用途指令翻译系统嵌套嵌套与elif对比以及注意细节习题解答绘图作业与重点day4  语音合成与逻辑循环回顾语音合成简单理解while控制次数WhileElseWhileElse实战whileFloat回顾与ifelse表达式赌博概率分类设计方法-一元二次方程嵌套求有序3个数闰年计算矩形区域随机数ifelse回文数判断10进制转化16进制16进制转十进制暴力穷举无限循环指令循环同步异步黑科技读写内存读写内存无限循环监测重点与作业day5  复杂逻辑循环while与whileelse编程风格循环控制图形绘制while猜数字输入输出重定向while习题分析可以退出的命令系统for初步简介跑分流程结合for循环小结forfor嵌套forfor分析break断循环contiune结束本次循环双层循环的break与continue分析break与contiue小结一闪一闪亮晶晶循环控制大小与位置对角线绘制圆形口顺时针运动循环等价作业与小结day6  函数实战回顾.算学费输入数据求最大精确划分思维解决最大次大交换数据实现按行显示围棋棋盘绘制国际象棋绘制为什么要用函数函数的四种类型函数的一般形式必须用函数的理由-哥德巴赫函数的本质就是地址函数变量意义函数变量用途装饰器设计模式包含模式函数概念None函数默认参数与返回值作为参数名称参数与位置参数参数副本机制副本练习多个返回值全局变量与局部变量函数内部引用全局变量函数可以嵌套nolocal处理函数嵌套变量函数nonlocalnonlocal总结开房数据查询day7      函数实战与常用数据结构函数的两种类型函数的本质再分析函数地址切换切换功能ifelse配合地址筛选函数收费函数调用过程函数基本小结return小结位置参数与默认参数混合参数填充混合填充错误情况lambda匿名函数可变长函数字符串常识普及字符串特点字符串不可以修改内部字符list列表list用途tuple简介集合运算字典概念in与notin运算符构造表达式转换数据类型系统小结拓展查询作业day8   字符串实战简单回顾eval与exec简介字符串的简单规范字符串的截取字符串赋值规范字符串转义字符字符串常见运算符字符串格式化字符串格式化强化字符串编码简介dir与help查看str字符串函数第一个大写以及字符串居显示打印金字塔count统计字符串出现个数字符串编码注意事项解码失败判断字符串以什么为结束tab键转换find函数与rfind函数day9   字符串高级简单回顾..eval与exec简介字符串的简单规范字符串的截取字符串赋值规范字符串转义字符字符串常见运算符字符串格式化字符串格式化强化字符串编码简介dir与help查看str字符串函数第一个大写以及字符串居显示打印金字塔count统计字符串出现个数字符串编码注意事项解码失败判断字符串以什么为结束tab键转换find函数与rfind函数index函数与rindex函数字符串判断字符串间隔求长度以及左右填充字符串大小写取出最大最小字符替换去除空格简单切割换行切割判断开头大小写切换以及填充0翻译表.字符串模板小结day10  字符串集合与语音识别实战回顾lset初始化风格set增加与去重set删除元素遍历set类型转化set无法操作单个元素的赋值set常见方法set常见运算符set关系运算符判断包含set集合判断frozenset字典的基本定义循环字典判断在不在实现插入与更新字典删除字典详解字典与set无法嵌套迭代器列表生成式生成器生成器节省内存用于循环生成器yield作用生成器简介测试游戏简介游戏初级修改键盘模拟语音控制游戏实现鼠标模拟代码规范函数简化重用列表与元组小结作业day11  阶段综合练习昨日回顾.堆栈函数模块引用系统模块引用与错误列表生成式的若干方法生成矩阵str与reprpython把输入输出设备当作文件处理写入文写入英文读取文读取英文读取错误写入错误处理文件缓存区文件读取若干种方式for循环按行读取数据文件指针seektell数据结构与文件的交互数据查询并保存结果数据查询小结与数据day12downwithoutdata  数据处理开发大数据指令数据清洗的概念初级数据清洗密码排序次数统计QQ密码概率分布QQ号码分类器.开房数据清洗..区域划分省份划分年龄月份划分日划分day12up  数据实战简单回顾12系统默认编码文编码常见错误字符串切割抓取邮箱抓取用户名与密码排序密码文件统计次数排序.统计文件密码次数密码次数排序day13withoutdata  数据分类与list深入地区分类详解字典分类器数据简单归并数据如何切割数据加密数据解密指令执行判断文件夹编程小结列表归并-删除列表归并-下标小结与作业day14down   面向对象编程与深浅拷贝面向对象与过程的差异self用途动态绑定增加属性方法重载运算符的概念有名对象与匿名对象重载运算符的返回值重载运算符多个类型类的拷贝是浅复制深浅拷贝函数调用参数副本原理函数调用可以改变list的元素不可以改变list指向对象当作参数的细节私有变量私有变量用于设计权限私有方法用于设计权限私有变量本质用类的方式读取文件行数密码次数归并数据处理方法简介今日小结作业wmvday14up  暴力穷举与类回顾....排列组合暴力生成穷举密码密码破解必破生成器密码破解小结为啥使用类-代码重用类的一般形式详解self构造函数与析构函数构造函数初始化类的属性最简洁的UI设定窗体的位置以及大小类的实际用途day15down  面向对象数据搜索实战输入处理文本编辑器表格数据树状显示数据搜索可视化第一步实现查询窗体数据搜索可视化第二步实现搜索数据数据搜索可视化第三步实现显示窗体数据可视化第四步显示与搜索串联数据可视化终结作业小结day15up  面向对象设计与图像界面上设计一个类发短信类的方法设计一下短信发送邮件类的设计-设计发邮件类的多文件引用腾讯营销类的设计消息循环消息回掉函数机制lambda按下按钮标签显示文本文本输入框listcombobox选择列表day16up  面向对象与图形界面开发下设计一个类发短信类的方法设计一下短信发送邮件类的设计-设计发邮件类的多文件引用腾讯营销类的设计消息循环消息回掉函数机制lambda按下按钮标签显示文本文本输入框listcombobox选择列表day17  面向对象继承实战昨日小结.,.继承的概念多继承的概念多继承的覆盖私有变量不可以被继承Object类类的常见属性super解决父类重复初始化isinstance多态静态方法类方法数据工具1类的继承数据工具实现小结day18down  正则表达式正则表达式bB贪婪与非贪婪标签.标签解决提取标签名称提取QQ生成邮箱列表工具简单正则表达式编写常见的正则表达式复杂正则表达式编写复杂表达式代码验证作业与小结day18up 正则表达式实践为什么使用正则表达式正则表达式匹配.预编译的概念搜索技能搜索用在找出第一个邮箱手机提取findall字符串切割筛选正则表达式正则表达式替换单个字符判断括号选择一个字符正则表达式次数正则开头结尾括号与选择正则表达式特殊符号day19down 递归与爬虫实战函数递归模拟文件树文件树事件读取网页抓取邮箱抓取QQ提取http抓取邮箱简单程序框架实现抓取邮箱的框架核心两个函数完成广度遍历深度遍历作.业day19up 深度遍历与广度遍历正则表达式小结最简单递归递归顺序递归求和递归腾讯台阶面试题文件夹的函数遍历文件夹遍历文件夹有层次感栈模拟递归栈模拟递归遍历文件夹栈模拟递归遍历文件夹层次感普及网站提取概念栈修改的逻辑错误广度遍历 day20 正则 爬虫实战行情简介提取页面信息提取股票代码提取股票代码下载功能下载股票批量下载股票抓取1页的股票数据抓取多个页面的股票抓取基金信息作业day21  网络编程与信息安全网络概念UDP协议UDP通信UDP远程控制TCP通信TCP控制测试网站后台网站密码破解作业 day22down  线程通信线程通信线程通信强化线程condition高级线程调度生产者消费者线程池延时线程with作用前台进程后台进程TLS线程独立存储作业day22up  多线程实战多线程核心目标并发主线程与小弟线程多线程解决加速多线程的加速线程冲突基于类实现多线程基于类实现多线程的顺序与乱序互斥锁解决线程冲突死锁-使用锁要注意Rlock解决一个线程反复加锁单线程死锁创建线程的三种风格信号量限制线程数量限定线程数量day23  多进程实战多线程回顾多进程拷贝代码多进程拷贝全局变量获取进程编号subprocess执行LinuxShell信号Linux进程小结__name__进程mutiprocessing创建过程join作用进程不可以用全局变量共享数据进程同步进程pipe发送接收数据进程队列进程队列传输数据进程共享数据进程之间共享数组进程共享字典与list简单小结day23down  多进程多线程综合实战读取CSV写入csv单线程统计行数多线程统计行数多进程统计行数多线程检索数据第一步多线程检索赵琳多线程检索找到通知其他人退出多线程检索开放数据并保存同一个文件作业day24up  多进程多线程综合实战多进程检索第一步多进程检索开房数据求平均市值多线程解决平均市值多进程统计平均市值单线程BFS抓取邮箱多线程并行抓取邮箱多线程采集邮箱并保存csv归并多线程归并文件day25down 文件格式处理doc处理系统处理doc与docx文件处理的小结读取并写入xls与xlsx读取网络pdf文pdftelnet简介登陆Linux登陆Windows小结day25up  时间编程与单元测试时间的简单风格时间格式化抓取年月日计算时间差时间函数计算时间差date小结python2与3的差异内置函数筛选内置函数map内置的函数sorted新浪数据抓取实时文档测试单元测试函数单元测试一个类day26  综合实战播放音乐设置背景鬼程序协程简介协程传递数据wmv协程编号协程生产者消费者模式office自动化操作wordoffice办公自动化操作exceloffice办公自动化操作outlookoffice办公自动化access开发环境配置访问mdb格式访问accdb格式实现CGI程序显示页面环境变量cgi处理前后端day26down  破解wifi实战扫描wifi扫描网卡区分链接成功或者失败wifi密码爆破工具设计Linux破解简介day27down  飞机大战实战命令行下脱裤创建一个pygame窗体窗体加载背景图片处理消息飞机移动实现基本框架飞机框架飞机销毁双机对战双机对战加载子弹双机与敌机出现发射子弹day27up  数据库实战jython的安装MySQL简介数据库的一般操作MySQL数据类型数据表的创建于删除数据的查询数据的插入数据的删除数据的更新联合查询字段一致数据查询排序排序与分组join与nullmysql用python编程查询数据python数据库增删查改项目简介other  异常与错误综合练习异常与错误的概念作业tryexcept解决异常不出错继续执行密码破解工具进攻数据库爆破mysql异常else异常处理的标准公式弹出异常withas类使用异常继承自定义异常断言密码工具设计三个独立的类密码工具2类链接3类密码工具1类链接3类密码工具分析作业speech   语音识别问题解决语音识别解决None

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧