摘要: 1. 为什么要并发 a) 并发是一种解耦策略。他帮助我们吧做什么(目的)和何时做(时机)分解开。 b) 在web应用的servlet模式下,当有web请求时,servlet就会异步执行。2. 挑战 a) 当两个线程相互影响时就会出现不可预期的情况。这是因为线程在执行那行java代码时有许多可能路径可 阅读全文
posted @ 2019-09-26 16:38 _Meditation 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 1. 简单设计原则: a) 运行所有测试 b) 不可重复 c) 表达了程序员的意图 d) 尽可能减少类和方法的数量2. 运行所有的测试3. 简单设计原则2-4: a) 提升内聚性,降低耦合性,切分关注面,模块化系统性能关注面,缩小函数和类的尺寸,选用更好的名称。。。。4. 不可重复 a) 做一点点共 阅读全文
posted @ 2019-09-26 16:32 _Meditation 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 第11章 1. 将系统的构造和使用分开 软件系统应将启动过程和和运行时的逻辑分开,在启动过程中构建应用对象,也会存在互相缠结的依赖关系。 a. 分解main b. 工厂 c. 依赖注入 有一种强大的机制可以实现分离构造与使用,那就是依赖注入,控制反转在依赖管理中的一种应用手段。控制反转将第二全责从对 阅读全文
posted @ 2019-09-26 16:31 _Meditation 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 第十章 类 1. 类的组织 如果有公共静态常量,应该先给出,然后是私有静态变量,以及私有实体变量。很少会有公共变量 公共函数应跟在变量列表之后,我们喜欢吧由某个公共函数调用的私有工具函数紧紧随在该公共函数后面。符合自顶向下原则。 2. 类应该短小 类的名称应该描述其全责。命名是帮助判断类的长度的第一 阅读全文
posted @ 2019-09-26 16:28 _Meditation 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 第九章 单元测试 1. TDD三定律 在编写不能通过的单元测试前,不可编写生产代码 只可编写刚好无法通过的单元测试,不能编译也不算通过 只可编写刚好可以足以通过当前失败测试的生产代码 2. 保持测试整洁 测试代码和生产代码一样重要,他需要被思考,被设计和被照料。 3. 整洁的测试 4. 每个测试一个 阅读全文
posted @ 2019-09-26 16:27 _Meditation 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 第八章 边界 1. 在接口提供者和使用者之间,存在与生俱来的张力。这种张力很可能导致问题 2.浏览和学习边界 4.测试第三方的好处不只是免费 无论是否需要测试来学习,总要有一系列与生产代码中调用方式一致的输出测试来支持整洁的边界。不使用这些边界测试来减轻迁移的劳力,我们可能会超出应有实限,长久的绑定 阅读全文
posted @ 2019-09-26 16:26 _Meditation 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 第七章 错误处理 1. 使用异常而非返回码 遇到错误时,最好抛一个异常,调用代码很整洁,其逻辑不会被错误处理搞乱。 2.先写try –catech-finally语句 3. 使用不可控异常 假设某个位于最低层级的函数被修改为抛出一个异常,如果该异常可控,则函数签名就要添加throw子句。这意味着每个 阅读全文
posted @ 2019-09-26 16:25 _Meditation 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 第六章 对象和数据结构 1. 数据抽象 隐藏实现并非只是在变量之上放一个函数那么简单。隐藏实现关乎抽象 通过一个接口的抽象,将内部实现隐藏。 2. 数据、对象的反对称性 过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下,添加新函数,面向对象代码便于在不改动既有函数的的前提下添加新类。 阅读全文
posted @ 2019-09-26 16:22 _Meditation 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 第五章.格式 1. 垂直格式 ①. 向报纸学习 源文件最顶部应该给出高层次的概念和算法,细节应该往下依次展开,直至找到源文件中最底层的函数和细节 ②. 概念间垂直方向上的区隔 空白格很重要 ③. 垂直方向上的靠近 有时候不要空白格。一眼看过去,就知道 ④. 垂直距离 变量声明 应尽可能靠近其使用位置 阅读全文
posted @ 2019-09-26 16:20 _Meditation 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 第4章 注释是一种失败,我们无法找到不用注释就能表达自我的方法,所以总要有注释,这不值得庆贺。 1. 注释不能美化糟糕的代码 a) 与其花时间编写解释你搞出的糟糕的代码的注释,不如花时间清洁那堆糟糕的代码 2. 用代码来阐述 a) 3. 好注释 a) 法律信息 b) 提供信息的注释 c) 对意图的解 阅读全文
posted @ 2019-09-26 16:19 _Meditation 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 第一章 童子军军规 让营地比你来时更干净 第二章.有意义的命名 1. 变量命名 (名副其实) a) Data ->? Property ->? Age? Address? 2. 避免误导 a) AccountList 注意容器是否是list b) XYZControllerForEfficientH 阅读全文
posted @ 2019-09-26 16:14 _Meditation 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 1 import smtplib 2 import time 3 from email.mime.text import MIMEText 4 5 times = 60 * 60 * 8 6 7 8 mailserver = "smtp.163.com" # 邮箱服务器地址 9 username_s 阅读全文
posted @ 2019-09-26 15:50 _Meditation 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 正序(2017-01-01 ~2019-xxxxx) 倒序(2019-2-25 ~2017-01-01): 阅读全文
posted @ 2019-09-26 10:26 _Meditation 阅读(1177) 评论(0) 推荐(0) 编辑
摘要: 在一次代码编写场景,需要post一些数据,同时携带获得的token,(但是token的有效时间是7200s),但是post需要很多次,很长时间,不可能2小时候中断程序,手动去获取token,这样效率太低下。 所以就想到,通过主线程维护一个Token(这个对象是我自己定义的),然后重新开辟子线程,让子 阅读全文
posted @ 2019-09-26 10:23 _Meditation 阅读(1521) 评论(0) 推荐(0) 编辑
摘要: 本次主要涉及 application/x-www-form-urlencoded方式。 postman访问方式如图: java代码实现: 首先使用maven作为第三方依赖管理: 实现的方法块: 阅读全文
posted @ 2019-09-26 08:57 _Meditation 阅读(3359) 评论(0) 推荐(0) 编辑