41 Matching Annotations
  1. Dec 2022
  2. Oct 2022
    1. 在新版本(起码 1.15 及以后)的 Go 当中,sync.Pool 里的临时对象需要两次 GC 才会被真正清除掉。 // 只一次 GC 的话只会让其中的临时对象被“打上记号”。 // 更具体的说,只做一次 GC 只会使得 sync.Pool 里的临时对象被移动到池中的“备用区域”(详见 victim 字段)。 // 在我们调用 sync.Pool 的 Get 方法时,如果 sync.Pool 的“本地区域”(详见 local 字段)当中没有可用的临时对象, // 那么 sync.Pool 会试图从这个“备用区域”中获取临时对象。 // 如果“备用区域”也没有可用的临时对象,sync.Pool 才会去调用 New 函数。 // 所以,这里的例子需要再添加一行对 runtime.GC() 函数的调用,才能使它的结果与最初的相同,并起到准确示范的作用。

      runtime.GC()

  3. Mar 2022
    1. 学习函数式编程对我产生的影响是,让我更加关注哪些概念自然地被视为"对象",哪些概念是不可变的"值"。 我还会更加注意,我的代码是否包含副作用,从而更谨慎地隔离这些地方,使代码更多是"纯的",这大大提高了我的面向对象代码的可测试性。

      《函数式编程对面向对象的程序员有什么用?》

      思考变化能更好的理解什么是对象

  4. Apr 2021
    1. 面向对象编程的问题是,默认带有环境。你只想要一个香蕉,但是得到了一只拿着香蕉的大猩猩,甚至还有整个丛林。 -- 计算机语言大师 Joe Armstrong,2019年4月20日去世。他非常不喜欢面向对象编程,发明了函数式语言 Erlang。
    1. 面向对象编程的哲学思想是,通过对语言建模来适应问题,而不是对问题建模来适应语言。 -- 《C prime plus》教材
  5. Nov 2018
    1. 面向对象开发方法有封装、继承和多态的特点

      老师能重点讲解一下封装、继承和多态的含义么,尤其是多态。还有与面向对象的开发方法相对的,应该有面向过程的开发方法吧(类似C语言和python),不太明白面向过程和面向对象之间的实质区别。