首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ruby学习笔记(4)-动态修改类的属性

动态语言之所以“动态”,最明显的特征就是:类实例的行为/属性可以在new出后,动态修改!个人觉得这种处理相对java/c#(静态语言)来说,更符合现实世界。...比如:一个人刚出生时,除了哭、吃奶等这些基本原始本能,其它的几乎全都不会(原始本能可理解类定义中最开始定义的属性和方法),但随着时间推移,学会了看书,走路,说话......(相当于新增了方法/属性),再往后的人生谁也无法预料,一切都是未知的,所以不太可能象静态语言那样,在运行前就事先把所有的属性/方法全写齐,甚至一个人后来失忆,把原先学会的东西给忘记了也没准(比如突然不会说话了...,相当于把实例的方法/属性给动态删除),后来医治好以后,又能说话了(重新添加某种方法)。

1.2K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《Effective-Ruby》读书笔记

    ,但是存在以下的问题: # 1.不能通过 getter 方法访问其属性,也不应该将这个哈希数组通过公共接口向外暴露,因为其中包含了实现细节 # 2.每次你想在类内部使用该哈希时,你不得不回头来看 initialize...除了属性列表,Struct::new 方法还能接受一个可选的块 # 也就是说,我们能在块中定义实例方法和类方法。...(值得注意的是,这条准则是个例如:Fixnum 类的对象在传递时总是通过值而不是引用传递) 这也就意味着当你把集合作为参数传入某个方法并进行修改时,原始集合也会因此被修改,有点间接,不过很容易看到这种情况的发生...# 使用 "+=" 操作符的确会像你想象中那般更新哈希,但并不明确,回顾一下 "+=" 操作符会展开成什么可能会很有帮助: # Short version: hash[key] += 1 # Expands...如果使用 Ruby 2.1 或者更新的版本,应该考虑使用 stackprof gem 和 memory_profiler gem。

    4K60

    OpenCloudOS 8.10 发布:全面兼容企业级 Linux 生态 ,引入更多新 module

    7、libkcapi 现在提供了一个用于在哈希-和计算中指定目标文件名的选项*这个 libkcapi (Linux 内核加密 API)软件包的更新引进了新选项 -T,用于在哈希-和计算中指定目标文件名。...添加了对时钟更新以及 Precision Time Protocol (PTP)父数据集中通知的支持,如 clock 类。...使用 readonly 修饰符声明一个属性,以防止在初始化后修改属性。使用光纤、全栈和可中断功能。使用只读类。声明几个新的独立类型。使用一个新的 Random 扩展。在特征中定义约束。...9、ant rebase 到版本 1.10.9ant 1.10 模块流已更新至版本 1.10.9。此版本使用提供方类和提供方参数提供对代码签名的支持。...3、支持本地用户的 bcrypt 密码哈希算法使用此更新,您可以为本地用户启用 bcrypt 密码哈希算法。

    22910

    如何整理自己的前端面试题库_2023-02-28

    用ETag的好处是如果因为某种原因到时资源的修改时间没改变,那么用ETag就能区分资源是不是有被更新。...生成哈希值相对于读取文件修改时间而言是一个开销比较大的操作,尤其是对于大文件而言。如果要精确计算则需读取完整的文件内容,如果从性能方面考虑,只读取文件部分内容,又容易判断出错。 计算误差 。...,拥有更友好的交互体验。...后代选择器的开销是最高的,尽量将选择器的深度降到最低,最高不要超过三层,更多的使用类来关联每一个标签元素。 (6)了解哪些属性是可以通过继承而来的,然后避免对这些属性重复指定规则。...类数组转化为数组的方法 题目描述:类数组拥有 length 属性 可以使用下标来访问元素 但是不能使用数组的方法 如何把类数组转化为数组?

    1.3K50

    Java多线程八股(三)一>多线程环境使用哈希表和ArrayList

    一.多线程环境使用ArrayList:  首先我们知道,Vector, Stack, HashTable, 是线程安全的(但是不建议用), 其他的集合类不是线程安全的 ,下面是 ArrayList...这个容器不是加锁设计的,而是用编程常见的一种思想方法->写时拷贝 以下是写时拷贝的讲解: 注意:CopyOnWriteArrayList容器也不是所有场景都适合,当数组非常大和涉及多个线程修改时就会可能出错...  二.多线程使用哈希表:   HashMap 本身不是线程安全的 在多线程环境下使用哈希表可以使用: Hashtable ConcurrentHashMap   1...比如 size 属性通过 CAS 来更新. 避免出现重量级锁的情况也避免了线程安全问题....(通过原子类修饰size) (4).优化了扩容方式: 化整为零 化整为零解释: 扩容需要把旧的哈希表元素全部搬运一次性搬运到新的哈希表,这个时候如果元素太多搬运完,势必进行更长时间的加锁解锁

    8610

    Ruby和Python谁更可读?

    有用了,我们甚至可以在类里完成这一操作。 那么有人就要问了,Ruby的对象更直接吗? 我认为在 Ruby 中更容易看出类和实例属性之间的区别。...默认情况下,post.count 和 BlogPost.count 都返回属性的值,但如果它只能从类中访问,则更容易注意到它是类属性。...文章最后的结论说,显然Python和Ruby都比PHP或Java更容易阅读,但Ruby更近了一步,它写出来的代码让你一眼就能看明白。...我同意,对于这两种语言的新手来说,Ruby的@和@@可能会使阅读起来有点困难,而且对我来说似乎更冗长,Python获胜。...Python语言更简单,适合初学者,而Ruby的语法更丰富,要求更高。 那么,你觉得这两种语言哪个更易懂可读?

    69320

    前端本地缓存概况之浏览器缓存策略

    前端同学也一直寄希望于服务器更大的吞吐量、更密集的cdn节点;更寄希望于浏览用户使用更优秀的浏览器及更大的带宽。。。然而随着上述几种情况一一被落实时,前端性能仍然没有达到一个让人满意的结果。。。...文件有更新,协商缓存失效,返回200及相关数据资源 ? 文件未更新,协商缓存生效,返回304和空响应,浏览器直接读取缓存资源 ?...最小颗粒为S,这颗粒度也就暴露了这个属性的弊端,如果在一秒以内修改多次,则数据不会更新。...浏览器下一次请求的时候,检测到先前返回 header 中有last-modified属性,则请求上行时 header 中会添加 if-modified-since 属性,值与 last-modified...的时间小于服务器中这个资源的最后修改时间,说明文件有更新,于是返回新的资源文件和状态码200。

    1.9K10

    Ruby和Python谁更可读?

    有用了,我们甚至可以在类里完成这一操作。 那么有人就要问了,Ruby的对象更直接吗? 我认为在 Ruby 中更容易看出类和实例属性之间的区别。...默认情况下,post.count 和 BlogPost.count 都返回属性的值,但如果它只能从类中访问,则更容易注意到它是类属性。...文章最后的结论说,显然Python和Ruby都比PHP或Java更容易阅读,但Ruby更近了一步,它写出来的代码让你一眼就能看明白。...我同意,对于这两种语言的新手来说,Ruby的@和@@可能会使阅读起来有点困难,而且对我来说似乎更冗长,Python获胜。...Python语言更简单,适合初学者,而Ruby的语法更丰富,要求更高。 那么,你觉得这两种语言哪个更易懂可读?

    53720

    微服务架构之Spring Boot(十七)

    要禁用报告的日志记录,请设置以下属性: spring.devtools.restart.log-condition-evaluation-delta=false 20.2.2不包括资源 某些资源在更改时不一定需要触发重启...默认情况下,更 改 /META-INF/maven , /META-INF/resources , /resources , /static , /public 或 /templates 中的资源不会触发重新启动...20.2.3查看其他路径 当您对不在类路径中的文件进行更改时,您可能希望重新启动或重新加载应用程序。...在大多数情况下,您可以 在 application.properties 中设置此属性(这样做仍会初始化重新启动的类加载器,但它不会监视文件更改)。...触发器 文件可以手动更新,也可以使用IDE插件更新。 要使用触发器文件,请将 spring.devtools.restart.trigger-file 属性设置为触发器文件的路径。

    47020

    果然是快手,面试问的很深啊...

    Segment 结构: 每个 Segment 包含一个哈希表,是一个独立的哈希表结构,内部通过数组 + 链表(或红黑树)的方式存储键值对。...属性填充阶段: 填充属性: 在对象实例化完成后,Spring 会开始填充属性。...完成对象创建阶段: 填充属性完成: 等到所有 Bean 都完成实例化,并且属性已经填充完毕后,Spring 会从第二级缓存中取出对象,执行属性注入。 清理缓存: 最后,清理缓存,解除循环依赖的标记。...Redo Log(重做日志): 记录时机: 在事务执行过程中,对数据进行修改时,将修改后的数据记录到 Redo Log 中。 作用: 用于数据库的恢复,保证数据库的持久性。...dp[i][j] = dp[i - 1][j - 1] + 1; maxLen = Math.max(maxLen, dp[i][j]); // 更新最大长度

    14310

    PHP使用swagger-php自动生成api文档(详细附上完整例子)

    最新的版本在bin目录下是一个openapi文件,生成yaml文件,这个对应@OA\啥啥啥的 使用composer命令安装其他版本,bin目录下面是一个swagger文件,生成json文件,可以让我们小白更容易读懂...* @SWG\Post( * path="/index/test/getstudent", * tags={"后台管理"}, * summary="更新用户的信息...只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释 ---- 数据类型 YAML 支持以下几种数据类型: 对象:键值对的集合,又称为映射(mapping)/ 哈希...,每一个数组元素又是由 id、name、price 三个属性构成。...- Perl - Python websites: YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl

    7.7K20

    派生属性-架构案例2020(三十七)

    200字以内的的文字 主动触发:通过代码读取数据库binlog日志,来更新redis的数据,保证一致性。...数据安全:以加密的方式存储在边缘设备上,比在网络上传递更安全,且黑客不会攻击单个节点导致全部不可用。 系统性能方面:性能更高,以人脸识别为例,只需要在本地处理,不需要上传到网络比较。...实时方案,有数据变化立马更新。 准实时方案,数据变化发送消息到队列,异步在队列慢慢消费。...包裹实体(主键:包裹编号) 收件人实体(主键:电话) 寄件人实体(主键:电话) (6分) 请说明什么是超类实体?结合图中包裹单信息,试设计一种超类实体,给出完整的属性列表。...答案: 超类实体指将多个实体的相同属性结合起来构建成新的实体。 用户(电话、姓名、单位名称、详细地址) (5分) 请说明什么是派生属性,并结合图2-1的包裹单信息说明哪个属性是派生属性。

    32330

    两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

    不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。...当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在Set集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降...,y.equals(x)也必须返回true)、传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)和一致性(当x和y引用的对象信息没有被修改时...对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;5. 重写equals时总是要重写hashCode;6.

    1K20

    JavaScript 中的对象

    对象 JavaScript 中的对象,Object,可以简单理解成“名称 - 值”对(而不是键值对:现在,ES 2015 的映射表(Map),比对象更接近键值对),不难联想 JavaScript 中的对象与下面这些概念类似...: Python 中的字典(Dictionary) Perl 和 Ruby 中的散列/哈希(Hash) C/C++ 中的散列表(Hash table) Java 中的散列映射表(HashMap) PHP...第二种更方便的方法叫作“对象字面量(object literal)”法。这种也是 JSON 格式的核心语法,一般我们优先选择第二种方法。...第二种方法的优点在于属性的名称被看作一个字符串,这就意味着它可以在运行时被计算,缺点在于这样的代码有可能无法在后期被解释器优化。...它也可以被用来访问某些以预留关键字作为名称的属性的值: obj.for = 'Simon'; // 语法错误,因为 for 是一个预留关键字 obj["for"] = 'Simon'; // 工作正常

    2.4K20
    领券