• 2024-09-07【Effective Java】多构造器参数使用构建器 (快速上手)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:2.1为什么引入构建器2.2建造者模式2.2.1书中的例子2.2.2例子加上有效性检查三、问题描述四、解决方案:4.1类层次结构4.2
  • 2024-08-29Effective Java理解笔记系列-第2条-何时考虑用构建器?
    类中有几个必选参数,且存在大量可选参数时。大量指至少有4个可选指大部分实例只在某几个可选域存在非零值,其他都是零。如:publicclassNutritionFacts{ privatefinalintservingSize;//每份含量,必选 privatefinalintservings;//每罐含量,必选 privatefinalintcalor
  • 2024-08-28Effective Java理解笔记系列-第1条-何时考虑用静态工厂方法替代构造器?
    为什么写这系列博客?在阅读《EffectiveJava》这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受;同时,在解决疑惑的过程中,还存在着有些内容不容易查找、查找到的解答质量不高等问题,于是我决定把我阅读此书
  • 2024-08-20Effective-Java-Chapter9-通用程序设计
    https://github.com/clxering/Effective-Java-3rd-edition-Chinese-English-bilingual/blob/dev/Chapter-9/Chapter-9-Introduction.md准则一将局部变量的作用域最小化不要在变量使用之前就申明,在需要使用的时候进行申明。当然这条准则不是那么绝对,大部分时候遵守就好。
  • 2024-06-22Effective C++ 改善程序与设计的55个具体做法笔记与心得 4
    四.设计与声明18.让接口容易被正确使用,不易被误用请记住:好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。“阻止误用”的办法包括建立新类型、限制类型上的操作、束缚
  • 2024-06-21[Effective Modern C++] 条款18笔记
    条款18中的完整代码:点击查看代码#include<iostream>#include<memory>#include<string>//假设基础的Investment类和Stock类classInvestment{public:virtual~Investment()=default;virtualvoiddisplay()const=0;};//其它类类似,略classSto
  • 2024-06-21[Effective Modern C++] 条款19笔记 - 为什么deleter的类型是std::unique_ptr类型的一部分,而不是std::shared_ptr的一部分?
    为什么deleter的类型是std::unique_ptr类型的一部分,而不是std::shared_ptr的一部分?std::unique_ptr<Widget,decltype(loggingDel)>upw(newWidget,loggingDel);std::shared_ptr<Widget>upw(newWidget,loggingDel);这个问题涉及到std::unique_ptr和std::shared_ptr
  • 2024-06-20Effective Java 学习总结
    前言EffectiveJava作为Java四大名著之一,聚焦于Java语言习惯和高效的用法。EJ告诉读者如何更好地构建代码,以便代码能够更好地工作;也便于其他人能够理解这些代码,便于修改和改善;程序也会因此变得更加令人愉快,更加优雅。全书共90条,接下来笔者将逐条进行总结。第1条:用
  • 2024-06-09lipaper-基本概念
     一、关于SAT的基本概念 MakingDeductionMoreEffectiveinSATSolversIII.Preliminaries                      
  • 2024-05-26Effective ModernC++条款42:考虑使用置入代替插入
    更多C++学习笔记,关注wx公众号:cpp读书笔记Item42:Consideremplacementinsteadofinsertion如果你拥有一个容器,例如放着std::string,那么当你通过插入(insertion)函数(例如insert,push_front,push_back,或者对于std::forward_list来说是insert_after)添加新元素时,你传入的元
  • 2024-05-19Effective C++:3.资源管理
    所谓资源,就是一旦用了,就要还给系统。C++中最常见的就是动态分配内存。其他资源还包括文件描述符、互斥锁等等1.条款13:以对象管理资源把资源放到对象内,那么就可以通过C++的析构函数自动调用的机制去确保资源被释放。这种观念常被称为RAII(资源取得时机就是初始化时机)智能指针shar
  • 2024-05-16《Effective C++》第三版-5. 实现(Implementations)
    目录条款26:尽可能延后变量定义式的出现时间(Postponevariabledefinitionsaslongaspossible)条款27:尽量少做转型动作(Minimizecasting)条款28:避免返回handles指向对象内部成分(Avoidreturning“handles”toobjectinternals)条款29:为“异常安全”而努力是值得的(Striveforexc
  • 2024-05-12Effective C++:2.构造、析构、赋值函数
    几乎每个class都会有一个或者多个构造函数,一个析构函数,一个copyassignment函数,因此有必要加深理解1.条款05:了解C++默默编写并调用哪些函数如果你没有生成一下函数,那么C++会在需要的时候(被调用)帮你自动生成这些函数:default构造函数copy构造函数default析构函数copyassign
  • 2024-05-02《Effective C++》第三版-4. 设计与声明(Design and Declarations)
    目录条款17:让接口容易被正确使用,不易被误用(Makeinterfaceseasytousecorrectlyandhardtouseincorrectly)限制类型和值规定能做和不能做的事提供行为一致的接口条款19:设计class犹如设计type(Treatclassdesignastypedesign)条款20:宁以pass-by-reference-to-const替换pass
  • 2024-04-30《Effective C++》第三版-3. 资源管理(Resource Management)
    目录条款13:以对象管理资源(Useobjectstomanageresources)关键想法智能指针条款14:在资源管理类中小心copying行为(Thinkcarefullyaboutcopyingbehaviorinresource-managingclasses)条款15:在资源管理类中替工对原始资源的访问(Provideaccesstorawresourcesinresource-ma
  • 2024-04-21《Effective C++》读书笔记
    《EffectiveC++》读书笔记之前看过一遍,不过草草了事。近日看了《深度探索C++对象模型》,想起《EffectiveC++》中的内容已经有些忘记了,所以重新温习一下。这篇笔记只挑选书中的一些重要内容进行记录。条款07:为多态基类声明virtual析构函数这一个条款几乎是面试中的高频问题,只需
  • 2024-04-19Effective Python:第8条 用zip函数同时遍历两个迭代器
    用Python内置的zip函数来实现。这个函数能把两个或更多的iterator封装成惰性生成器(lazygenerator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。names=["Cecilia","Lise","Marie"]counts=[len(n)forninnames]max_count=
  • 2024-04-18Effective Python:第7条 尽量用enumerate取代range
    Python有个内置的函数,叫作enumerate。enumerate能够把任何一种迭代器(iterator)封装成惰性生成器(lazygenerator)。这样的话,每次循环的时候,它只需要从iterator里面获取下一个值就行了,同时还会给出本轮循环的序号,即生成器每次产生的一对输出值。下面通过内置的next函数手动推进enumera
  • 2024-04-18Effective Python:第6条 把数据结构直接拆分到多个变量里,不要专门通过下标访问
    使用拆分(unpacking),就可以把元组里面的元素分别赋给多个变量。优点:1,通过unpacking来赋值要比通过下标去访问元组内的元素更清晰,而且这种写法所需的代码量通常比较少。2,便于原地交换两个变量;tb=[1,2]tb[0],tb[1]=tb[1],tb[0]print(tb)3,for循环或者类似的结构(例如推
  • 2024-04-17Effective Python:第5条 用辅助函数取代复杂的表达式
    初始代码: 第一次优化:多次使用:  
  • 2024-04-16Effective Python:第3条 了解bytes与str的区别
    Python有两种类型可以表示字符序列:一种是bytes,另一种是str。bytes实例包含的是原始数据,即8位的无符号值(通常按照ASCII编码标准来显示)。str实例包含的是Unicode码点(codepoint,也叫作代码点)。注意点:1,bytes和str并不兼容。在传递字符序列的时候需要注意。a=b"h\x65llo"b="wo
  • 2024-04-16Effective Python:第2条 遵循PEP 8风格指南
    PEP8文档:https://peps.python.org/pep-0008/与空白有关的建议:用空格(space)表示缩进,而不要用制表符(tab)。和语法相关的每一层缩进都用4个空格表示。每行不超过79个字符。对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别之上再加4个空格。
  • 2024-04-11Protobuf - Designing Effective APIs
       
  • 2024-03-31【粉丝福利社】《Effective Java》(文末送书-进行中)
  • 2024-03-29Effective C++ 导论
    芝士wa2024.3.29EffectiveC++.pdf“本书的目的在于引导你如何高效使用C++”本书的研究范围:标准的设计策略特殊语言特性的具体细节例如:如何在inheritance(继承)和templates(模板)之间选择?如何在public(公有)和privateinheritance(私有继承)之间选择?如何在member(成员