<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[InkSlab_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/InkSlab_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; InkSlab_]]></copyright><item><title><![CDATA[SpringBoot3版本下SpringSecurity的HttpSecurity配置]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130937812</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130937812</guid><author>InkSlab_</author><pubDate>Mon, 29 May 2023 22:24:18 +0800</pubDate><description><![CDATA[springSecurity中配置HttpSecuritry部分方法爆红]]></description><category></category></item><item><title><![CDATA[软构复习12 Construction for Robustness and Correctness]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130835253</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130835253</guid><author>InkSlab_</author><pubDate>Tue, 23 May 2023 20:49:25 +0800</pubDate><description><![CDATA[client希望使用checked异常，因为可以提示更清晰的错误信息并加以补救，避免程序的直接推出。尽量使用unchecked exception来处理编程错误，因为不用使客户端代码显式的处理他们，衙门会在出现的地方挂起程序并打印出异常信息。对于Error，程序员通常无能为力，一旦发生了，只能想办法让程序优雅的结束。可以不处理，编译没问题，但执行时出现就代表程序失败，代表程序中的潜在bug。非运行时异常是程序员无法完全控制的外在问题所导致的，比如IO异常。]]></description><category></category></item><item><title><![CDATA[软构复习 11 Design Patterns for Reuse and Maintainability]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130835237</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130835237</guid><author>InkSlab_</author><pubDate>Tue, 23 May 2023 20:47:39 +0800</pubDate><description><![CDATA[所以我们可以将那些频繁出现的对象创建，封装到一个工厂类中，当我们需要创建对象的时候，直接调用工厂类中的工厂方法来为我们生成对象，这样，就算出现了变动，我们也只需要修改工厂中的代码即可。创建一个工厂类，里面可以生产多个物品（手机，平板，路由器），然后我就就只需创建三个具体的工厂（小米工厂，华为，苹果工厂）但是这样的话，当我们需要添加新的物品的时候，就难免需要在具体的工厂中添加，违反了OCP开闭原则。例如，如果我们还是按照上面的工厂模式，那么我们需要创建9个具体的工厂类，这时我们可以通过抽象工厂。]]></description><category></category></item><item><title><![CDATA[软构复习10 Construction for Change]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130792009</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130792009</guid><author>InkSlab_</author><pubDate>Sun, 21 May 2023 14:57:22 +0800</pubDate><description><![CDATA[就是尽量不要让接口太大，可以将一个方法很多的接口划分为很多小的接口，然后按需实现，避免实现很多不需要的方法。对扩展性的开放：模块的行为应该是可拓展的，从而该模块可表现出新的行为以满足需求的变化。1.SRP原则：不应该有多于一个的原因使得一个类发生变化，一个类一个责任。3.ISP原则：不能强迫客户端依赖于它们不需要的接口，只提供必须的接口。4.DIP原则：抽象的模块不应该依赖于具体的模块，具体应该依赖于抽象。对修改的封闭：模块自身的代码是不应该被修改的。例如：[a-c]：表示匹配a或b或c。]]></description><category></category></item><item><title><![CDATA[软构复习9 Construction for Reuse]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130791999</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130791999</guid><author>InkSlab_</author><pubDate>Sun, 21 May 2023 14:56:34 +0800</pubDate><description><![CDATA[由于能处理父类的，也都能处理所有的子类，那么子类要有比父类更强的规约，即：更弱的（或者相同）前置条件，更强的（或相同）的后置条件。同样，子类也要有比父类更强的RI（比如，父类要求人数num必须大于0，如果子类的num为负数，那么子类用父类的操作会出问题）对于方法的参数，子类型的参数要更加"宽泛",不仅要接受父类可以接受的，还能接受一些父类不能接受的（子类型参数"逆变")子类型中重写的方法必须：相同类型的返回值或者是父类返回值的子类。子类方法抛出的异常比父类抛出的异常范围小。]]></description><category></category></item><item><title><![CDATA[软构复习8 Equality in ADT and OOP (ADT和OOP中的“等价性“)]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130784704</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130784704</guid><author>InkSlab_</author><pubDate>Sat, 20 May 2023 18:59:48 +0800</pubDate><description><![CDATA[当list集合添加了一个“b”，那么他的哈希值会改变，不再是a了，但set集合不会因此改变list的哈希桶位置，所以查找就永远不会找到它了。首先put的时候，会把int的130转换为Integer的130，注意这里因为130不在缓存的范围内，所以a和b放入的不是一个Integer对象，所以两者地址不同，返回false。一个为我们上面新加的，另一个为Object类中的equals方法（所有的类均为Obejct的子类)2.声明一个Class接口实现类的对象，判断obj是否为Class接口实现类的实例对象。]]></description><category></category></item><item><title><![CDATA[软构复习7Object-Oriented Programming(OOP)]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130715607</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130715607</guid><author>InkSlab_</author><pubDate>Tue, 16 May 2023 22:39:21 +0800</pubDate><description><![CDATA[/animal的编译类型为Animal，运行类型为Dog。//animal的运行类型变为了Cat，编译类型仍然为Animal。//运行机制：首先先去Cat类中找有没有f1和f2方法，如果有，就运行，没有的话才会去Animal类中去找。1.要求父类的引用必须指向的是当前目标类型的对象（要求a原先必须指向Cat类型)a.f1()和a.f2()是正确的，a.f3()是错误的！的，a的编译类型为Animal，根本不知道cat中的方法。和a.f2()运行的是Cat中的方法！]]></description><category></category></item><item><title><![CDATA[软构复习6 Abstract Data Tyoe(ADT)抽象数据类型]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130715589</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130715589</guid><author>InkSlab_</author><pubDate>Tue, 16 May 2023 22:37:56 +0800</pubDate><description><![CDATA[2.Producers 生产器：例如String的concat()方法，让两个String拼接，并产生一个新的String。我们应当随时检查RI是否满足：可以定义一个checkRep（）函数，在所有可能改变rep的方法内都要检查。表示R-->A的映射，R为开发者关注的表示空间，A为client关注的抽象空间。可以将RI看做：表示值的一个子集，包含了所有合法的表示值 或者。表示泄露的安全声明：给出理由，证明代码并未对外泄露其内部表示。可变类型的对象：提供了可改变其内部数据的值的操作。]]></description><category></category></item><item><title><![CDATA[软件构造5 Designing Specification复习]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130631122</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130631122</guid><author>InkSlab_</author><pubDate>Thu, 11 May 2023 21:27:57 +0800</pubDate><description><![CDATA[5.客户端无需阅读调用函数的代码，只需要理解spec即可。1.前置条件：对客户端的约束，在使用方法时必须满足的条件。以判断是否可以用一个规约去替换另一个？2.后置条件：对开发者的约束，方法结束时必须满足的条件。3.契约：如果前置条件满足了，后置条件必须满足。给“供需双方”都确定了责任，在调用的时候。是一种契约，规定程序与客户端之间达成的一致。2.不写下来，那么不同开发者的理解就不同。如果前置条件不满足，则方法。1.很多bug来自于双方之间的误解。3.没有规约，难以定位错误。什么样的规约强度更强？]]></description><category></category></item><item><title><![CDATA[软件构造4Data Type and type Checking复习笔记]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130629965</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130629965</guid><author>InkSlab_</author><pubDate>Thu, 11 May 2023 20:22:18 +0800</pubDate><description><![CDATA[可以使用final关键字.final类无法派生子类，final变量无法改变值、引用，final方法无法被子类重写。注意：如果分母为float和double类型的0的时候，结果为Infinity。如果是引用类型，其指向的对象也是不可以被改变的。包括：语法错误、类名（函数名）错误、参数数目错误、参数类型错误、返回值类型错误。包括：非法的参数值（比如分母为0）、非法的返回值（区别返回值类型错误)、改变一个变量的值：将该变量当前指向的值的存储空间写入一个新的值。静态检查关于“类型“的检查，不考虑值。]]></description><category></category></item><item><title><![CDATA[Maven使用jar打包，运行jar文件出现“没有主清单”问题]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130446241</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130446241</guid><author>InkSlab_</author><pubDate>Sun, 30 Apr 2023 09:19:07 +0800</pubDate><description><![CDATA[mainClass>运行方法的主类（路径,比如com.xx.xx.app）</mainClass>问题原因：是因为我们没有指定main函数的入口。解决方法：在pom.xml文件中添加。]]></description><category></category></item><item><title><![CDATA[Idea+JavaSwing实现快速界面设计]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130380300</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130380300</guid><author>InkSlab_</author><pubDate>Wed, 26 Apr 2023 10:27:01 +0800</pubDate><description><![CDATA[Java Swing 在Idea中的快速开发]]></description><category></category></item><item><title><![CDATA[软构设计模式]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/130254743</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/130254743</guid><author>InkSlab_</author><pubDate>Wed, 19 Apr 2023 22:17:54 +0800</pubDate><description><![CDATA[在 1994 年，由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为Design Patterns - Elements of Reusable Object-Oriented Software（中文译名：设计模式 - 可复用的面向对象软件元素）的书，该书首次提到了软件开发中设计模式的概念。四位作者合称GOF（四人帮，全拼 Gang of Four）]]></description><category></category></item><item><title><![CDATA[当需要删除时，如何正确遍历List集合中的元素？]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129767593</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129767593</guid><author>InkSlab_</author><pubDate>Sat, 25 Mar 2023 15:38:10 +0800</pubDate><description><![CDATA[不会把List的每个元素都给遍历一边，比较不容易发现。因此，我们需要多加注意！首先这一种代码，很明显的会出现数组下标越界的异常，会提醒我们注意。错误2：for循环+删除LIst集合的元素。]]></description><category></category></item><item><title><![CDATA[软件构造Specification笔记]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129541995</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129541995</guid><author>InkSlab_</author><pubDate>Tue, 14 Mar 2023 22:48:12 +0800</pubDate><description><![CDATA[可以根据规约来判断是否行为等价。例如上述蓝色框里的五条，方法所做的都是正确的，因为前置条件违反了，我方法怎么做都可以。：如果前置条件满足了，后置条件必须满足。相反，如果前置条件不满足，则方法可以做。3.规约扮演着防火墙的角色，用户不需要了解具体实现，只需知道是干什么的。1.Spec给“供需双方”都确定了责任，在调用的时候双方都要遵守。2.规约可以隔离”变化“，无需通知客户端，可以提高代码效率。前置条件：对客户端的约束，在使用方法时候必须满足的条件。后置条件：对开发者的约束，方法结束时必须满足的条件。]]></description><category></category></item><item><title><![CDATA[JSP页面空白问题]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129362776</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129362776</guid><author>InkSlab_</author><pubDate>Mon, 06 Mar 2023 15:01:39 +0800</pubDate><description><![CDATA[jsp空白问题]]></description><category></category></item><item><title><![CDATA[软构软件测试学习笔记]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129247372</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129247372</guid><author>InkSlab_</author><pubDate>Mon, 27 Feb 2023 18:48:49 +0800</pubDate><description><![CDATA[软件构造课程学习笔记---02软件测试]]></description><category></category></item><item><title><![CDATA[MyBatis学习笔记]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129226524</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129226524</guid><author>InkSlab_</author><pubDate>Sun, 26 Feb 2023 14:21:02 +0800</pubDate><description><![CDATA[MyBatis学习笔记]]></description><category></category></item><item><title><![CDATA[Git学习笔记]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129217148</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129217148</guid><author>InkSlab_</author><pubDate>Sat, 25 Feb 2023 16:18:53 +0800</pubDate><description><![CDATA[Git学习笔记]]></description><category></category></item><item><title><![CDATA[Maven学习笔记]]></title><link>https://blog.youkuaiyun.com/InkSlab_/article/details/129204396</link><guid>https://blog.youkuaiyun.com/InkSlab_/article/details/129204396</guid><author>InkSlab_</author><pubDate>Fri, 24 Feb 2023 16:54:04 +0800</pubDate><description><![CDATA[Maven学习笔记]]></description><category></category></item></channel></rss>