<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangdefa9898的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangdefa9898</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangdefa9898]]></copyright><item><title><![CDATA[机器学习笔记之基础回归问题]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/109728454</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/109728454</guid><author>wangdefa9898</author><pubDate>Tue, 17 Nov 2020 10:14:10 +0800</pubDate><description><![CDATA[前言
本文参考了《机器学习》周志华著中的3.2节中的线性回归内容和《统计学习方法》李航著的6.1节中的逻辑回归内容，并结合逻辑回归两个实验进行总结。
线性模型
什么是线性模型呢？给定的样本有n个属性，xi表示第i个属性，而形如如下：

线性回归
我们已经知道了线性模型是什么，那么线性回归是干啥的呢？按照统计学习方法的三要素，模型已经确定，接下来就是策略。按策略来看，我们需要确定损失函数，损失函数是一种性能度量，在线性回归问题中，我们经常ongoing均方误差来作为损失函数（更准确的叫法应该叫经验风险）。

]]></description><category></category></item><item><title><![CDATA[机器学习笔记之统计学习方法三要素]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/109727231</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/109727231</guid><author>wangdefa9898</author><pubDate>Mon, 16 Nov 2020 19:42:44 +0800</pubDate><description><![CDATA[前言
本学期学习了机器学习的课程，读了《统计学习方法》——李航著，做为笔记。统计学习方法都是由模型、策略和算法构成的，作为初学者，可能大部分人都直接上手，各种python库一顿乱调，但其实知识不成体系（比如我hhhh），在我学习过程中慢慢意识到知识体系的重要性。
统计学习方法三要素
模型
我们在拿到一个问题，需要想的第一件事就是学习什么样的模型。在监督学习中，模型就是所要学习的条件概率分布或决策函数。在模型的假设空间中，包含了无数个可能的条件概率分布或决策函数。至于什么是决策函数和条件概率模型的区别是什么呢]]></description><category></category></item><item><title><![CDATA[HIT 软构 第七章总结]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/107273218</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/107273218</guid><author>wangdefa9898</author><pubDate>Sat, 11 Jul 2020 00:46:36 +0800</pubDate><description><![CDATA[前言
终于要来到最后一部分了，多线程。我们之前的程序基本都是单线程的，可能在可视化写监听的时候用到了多线程，但是其实多线程是我们提升程序运行效率的重要手段，但它也带来了很多麻烦的问题，这一章就来简单的总结一下。
并发
Processes：进程，私有空间，彼此隔离。
Threads：线程 ，程序内部的控制机制。
进程之间不共享内存，线程却可以，这就是麻烦的开始但也是高效的起步。
如果说进程是虚拟机的话，线程就是虚拟机的cpu。
那如何创建多线程呢？
通常有两种方法：

从Thread类中派生出子类，实现run]]></description><category></category></item><item><title><![CDATA[HIT 软构第六章总结]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/107272312</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/107272312</guid><author>wangdefa9898</author><pubDate>Fri, 10 Jul 2020 23:52:38 +0800</pubDate><description><![CDATA[前言
第四章讲可复用性，第五章讲可维护和扩展性，终于到了健壮性了，可复用性和可维护性都有相应的设计模式，有很多比较技术性的思路，可能需要我们在平时练习中慢慢消化，这一章则是程序员必须掌握的技能----面向健壮性的编程。
健壮性和正确性
我们在设计ADT的时候，很多情况都是按照自己的思路，但我们很难要求客户端也一定按照我们的思路，一个兼容性高适用范围广的软件其健壮性一定高，这就要求我们能对可能出现任何一种操作都进行预判，作为面向客户友好型的软件，我们需要遵循以下两点基本的观念：

处理未期望的行为和错误终止
]]></description><category></category></item><item><title><![CDATA[HIT 软构 第五章总结]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/107238003</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/107238003</guid><author>wangdefa9898</author><pubDate>Thu, 09 Jul 2020 23:28:32 +0800</pubDate><description><![CDATA[前言
第四章讲了怎么可以提高代码的可复用度，第五章就是在提高可复用度之后再提高我们代码的可维护性和可扩展性，这一章的主要内容是面向可维护的设计模式，提高可维护性和可扩展性，才能延长一个软件的生命周期。
我们在编程的时候，可以经常问自己一下几个问题：

设计结构是否足够简单？
模块之间是否松散耦合？
模块内部是否高度聚合？
是否使用了非常深的继承树？
是否使用了委派替换继承？
代码的圈复杂度是否太高?
是否存在重复代码?

模块化编程
我们在编写类或者函数的时候都尽可能的追求高内聚和低耦合。尽可能的使得函数功]]></description><category></category></item><item><title><![CDATA[HIT 软件构造lab3总结之 面向可复用性编程的6种设计模式]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/107095346</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/107095346</guid><author>wangdefa9898</author><pubDate>Fri, 03 Jul 2020 20:00:38 +0800</pubDate><description><![CDATA[前言
在软件设计的时候，我们要充分的复用我们的代码，这样可以给我们节省很多时间，可以少打很多重复的代码。下面就是节省6种设计模式，这6种设计模式主要基于继承和委派两种机制，给出的高效复用的思想。
适配器模式（Adapter）
有的时候，我们在以前就实现某些功能或写过某些类，或某些类的某些方法，这些方法的功能我想复用，但是由于不同的项目场景不同，方法对应的参数不同了，怎么办呢？如果这些参数是可以转化成以前的参数类型，那还可以接着复用，这就是适配器模式。
举一个例子，比如我的有一个U盘，是正常的USB接口，但我]]></description><category></category></item><item><title><![CDATA[HIT 软件构造 第四章总结]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/107025492</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/107025492</guid><author>wangdefa9898</author><pubDate>Tue, 30 Jun 2020 22:38:54 +0800</pubDate><description><![CDATA[前言
第三章介绍了软件构造的核心理论（ADT）和技术（OOP），主要是介绍怎么去实现一个软件的核心，保证代码的质量、提高代码的安全性。第四章就是在这基础之上进行的提高代码的可复用性。在以前我们都是面向应用的编程，就是应用要什么功能我们就做什么，但其实很多类之间都是有共性的方法，比如飞机类，汽车类，他们都有驾驶员，都有载客，年限等等共性的东西，我们没必要在具体类中都把共性的东西写一遍，这样效率是十分低下的，而且代码也会很长，所以我们要提高代码的可复用性。
嵌套

...]]></description><category></category></item><item><title><![CDATA[HIT 软件构造 第三章总结]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/106990103</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/106990103</guid><author>wangdefa9898</author><pubDate>Sun, 28 Jun 2020 23:15:21 +0800</pubDate><description><![CDATA[前言
大致复习完这一章的所有知识内容，做了些概括，结合实验中的体会，这章主要讲到了可变和不可变数据类型，讲到了spec（规约），还有ADT（抽象数据类型），面向对象编程（OOP），还有多肽。
可变数据类型和不可变数据类型
介绍可变数据类型和不可变数据类型之前，先介绍一下java不像c语言有指针，但其实很多实现都是和指针类似的。一个别名a指向了一个地址，如果这个地址中的数据不能被改变，那就是不可变的（immutable）。比如一些基础类，String，int等都是不可变的数据类型。那么像集合类List，Set]]></description><category></category></item><item><title><![CDATA[HIT计算机系统大作业-hello的人生]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/103843459</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/103843459</guid><author>wangdefa9898</author><pubDate>Tue, 23 Jun 2020 22:13:18 +0800</pubDate><description><![CDATA[HIT计算机系统大作业-hello的一生
转变，经历过预处理、编译、汇编、链接的修修改改，缝缝补补，成为能被机器加载到内存的可执行文件。在终端输入./hello后，shell为其调用fork创建子进程，调用execve映射虚拟内存，mmap为其创建虚拟空间，MMU为其翻译地址实现访存，最终却仿佛一切都没有发生过，hello的痕迹从这个机器中被抹除，在数字变化间体会计算机系统的工作原理，在文件转换间...]]></description><category></category></item><item><title><![CDATA[HIT软件构造 lab3总结之 java可视化开发工具WindowBuilder]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/106907669</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/106907669</guid><author>wangdefa9898</author><pubDate>Mon, 22 Jun 2020 22:38:57 +0800</pubDate><description><![CDATA[前言
这次的分享只是为初学者做简易的可视化界面做的，只对java可视化开发的初学者作为参考。
编译器：eclipse
我们使用java做可视化开发的时候，或许很多初学者都是靠代码写出来的，如果一个页面十分复杂的话，有很多的组件，各种面板，五花八门的布局，稀奇百怪的监听，这些如果真的纯代码敲那真是太死亡了，而且做出来的效果还不一定好看。所以我给大家推荐一个eclipse的外置工具----WindowBuilder。
它可以让你以可视化的形式去制作可视化界面，自动生成相对应的代码，相当于拼图一样，十分简单，容易]]></description><category></category></item><item><title><![CDATA[HIT 软件构造lab2 P3总结分享--象棋围棋的可视化实现]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/106893459</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/106893459</guid><author>wangdefa9898</author><pubDate>Mon, 22 Jun 2020 18:21:56 +0800</pubDate><description><![CDATA[前言
lab2的P3部分相比于前两P，更有点软件的味道，在这一部分里面，我们需要自己设计ADT，并使用这些ADT作出一个棋类游戏的软件（没有加入行棋规则，但有基础的吃，移动，拿走等回合制）。我们不再像前两部分一样仅仅只是设计了一个或者两个比较简单的ADT，这一部分最有考验的地方应该就是如何去设计这些ADT，并且将其组装起来。
任务很明确，ADT在实验指导书上都有给出来，很明显我们需要做两个棋盘，一个是象棋的，一个是围棋的，由于象棋和围棋的行棋规则并不完全相同，我们还要区分不同的下棋规则。然后就是需要实验各个]]></description><category></category></item><item><title><![CDATA[java 为什么要重写equals()和hashcode()]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/105523124</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/105523124</guid><author>wangdefa9898</author><pubDate>Tue, 14 Apr 2020 23:10:57 +0800</pubDate><description><![CDATA[为什么要重写equals()和hashcode()
在java里集合类是使用十分频繁的数据类型，Collection类中定义了一个方法是.contains()，不知道小伙伴们是否遇到过使用.contains()一直返回false，明明某个元素就在集合中的情况，反正我是遇到了。。。
那为什么会出现这种情况呢？其实Collection实现contains方法是通过调用equals()来将参数和集合中的...]]></description><category></category></item><item><title><![CDATA[HIT 软件构造Lab2 P1，P2总结分享]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/105480278</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/105480278</guid><author>wangdefa9898</author><pubDate>Tue, 14 Apr 2020 23:00:34 +0800</pubDate><description><![CDATA[前言
相比较实验一，实验二真是好几个实验一的工作量啊。害，这头发是保不住的了。但是实验二比实验一有趣太多了，是的，实验二更有一种创造的乐趣，从P1到P3，一步一步，学习如何设计ADT，再到实际应用，一度有一种自己已经是个软件工程师的感觉（累傻了出现幻觉了）。
Graph
P1的难度已经比实验一难了，在刚开始实验的时候，我对接口和泛型真是一窍不通，然后刚开始看了两天书和查了两天资料才知道原来Grap...]]></description><category></category></item><item><title><![CDATA[HIT 软件构造Lab1实验总结]]></title><link>https://blog.youkuaiyun.com/wangdefa9898/article/details/105461585</link><guid>https://blog.youkuaiyun.com/wangdefa9898/article/details/105461585</guid><author>wangdefa9898</author><pubDate>Mon, 13 Apr 2020 00:56:27 +0800</pubDate><description><![CDATA[前言
其实写这篇的时候我刚lab2做完了，当时写完lab1休息了几天又开始了lab2，相比较下来lab1简直是。。。怎么说呢，工作量少很多吧。不过还是有不少的感悟可以说一下的。
Magic Squares
总的来说幻方这个任务不太难，java有很多很方便的方法，相比较c语言，简直是省了一大笔劲。
难点：读取字符串然后解析成数字。
我们根据spec，要从文本中读入内容，java中读取文本你的方法有很...]]></description><category></category></item></channel></rss>