- 博客(31)
- 收藏
- 关注
原创 6 TCP与UDP
TCP:转发数据量较多 对可靠性要求比较高 流(数据无间隔)协议 (顺序控制 重发控制 流量控制 拥塞控制)(http 通信必须使用 tcp) UDP:高速传输和实时性有较高要求的通信或广播/多播通信 细节控制交给应用 udp-lite 校验和错误不希望丢弃所有收到的包,校验和范围可以由应用设定,只针对不允许发生错误的部分(端口号、IP 地址等)进行校验和的检查 端口号 => 识别在传输层上一层的应用层中所要进行处理的具体程序 应用程序 <=> 套接字API(可以设置对端的IP 地址、端口
2021-06-19 02:45:39
670
2
原创 5 IP协议相关技术
DNS(domain name system 域名系统):主机名 — IP 地址 ARP(address resolution p 地址解析协议):通过广播 IP 地址(同一链路内)发送 ARP 请求包来查找 MAC 地址(目标主机/路由器发现 IP 地址一致 就会将自己 MAC 地址塞入 ARP 响应包返回源主机)ARP 缓存表 IP ICMP(internet control message p 控制报文协议) 确认 IP 包是否成功送达目标地址,通知在发送过程当中 IP 包被废弃的具体原因,改善网络.
2021-06-18 23:55:46
371
原创 4 IP协议
TCP/IP 心脏 => 互联网层(主要 IP ICMP,其它 DNS ARP) 数据链路层(物理层面分段触达) 在同一种数据链路的节点间进行包传递,只负责一个区间(一跳)内的通信传输 相当于限定区间内的火车票或机票 网络层(逻辑层面终极触达) 可跨越不同的数据链路,负责将数据包发给最终的目标地址(点对点) 相当于旅行的行程表 IP IP 寻址 路由(转发) IP 分包与组包:路由器负责进行分片 旅行者:IP 数据包 车站工作人员:路由器 车:数据链路 路由控制表:网络地址和对应的下一个路由器的
2021-06-18 01:08:24
584
原创 3 数据链路
太底层 干货少 特别基础 适合作为参考资料 记忆的意义不大 数据链路层:定义了通信媒介互连设备间传输规范 物理层:0、1二进制与电压高低、光的闪灭、电波的强弱的转换 网卡 NIC,全世界不会有相同mac 地址的网卡 相关技术 mac 寻址(物理寻址) 介质共享 半双工:只发送/接收的通信方式(无线电收发器)共享介质(同轴电缆 FDDI) 全双工:同一时间既可以发送数据也可以接收数据(电话)不共享介质(ATM 以太网) 非公有网络 分组交换 环路检测:防止数据帧被反复转发。 生成树(每个端口设置权重
2021-06-17 02:23:22
246
原创 2 TCP/IP 基础知识
TCP/IP:网际协议族 利用IP进行通信时所必须用到的协议群的统称 osi参考模型(抽象):通信协议必要功能是什么 tcp/ip(实现):在计算机上实现协议应该开发哪种程序 OSI(七层)参考模型 TCP/IP (四层)分层模型 应用层、表示层、会话层 应用层(dns url tls/ssl pop imap ftp sip rtp ldap http => html smtp => mime snmp => mib ssh & telnet) 应用程序
2021-06-17 00:49:37
169
原创 1 网络基础知识
文章目录计算机网络 出现的背景计算机网络发展的 7个阶段协议协议标准化协议分层与 OSI 参考模型OSI 参考模型 通信处理举例传输方式的分类地址网络的构成因素现代网络实态 计算机网络 出现的背景 分层 应用 作用 设备 7 应用层 telnet(远程登录【虚拟终端】服务) ssh(Secure Shell 安全外壳协议) http smtp(Simple Mail Transfer Protocal 电子邮件) pop(Post Office Protocol) ssl/tls ftp文件
2021-06-09 17:01:22
909
2
原创 18并发编程 II
文章目录客户端 / 服务器的例子服务器添加线程代码观察服务器端执行的可能路径路径数量深入挖掘了解类库Executor 框架非锁定的解决方案非线程安全类方法之间的依赖可能破坏并发代码容忍错误基于客户代码的锁定基于服务端的锁定提升吞吐量单线程条件下的吞吐量多线程条件下的吞吐量死锁互斥上锁及等待无抢先机制循环等待不互斥不上锁及等待满足抢先机制不做循环等待测试多线程代码测试线程代码的工具支持完整代码范例不使用线程的 客户端 / 服务器 代码使用线程的 客户端 / 服务器 代码 todo 客户端 / 服务器的例子 服
2021-04-05 22:09:02
156
1
原创 14-15-16 JUnit内幕 重构SerialDate
文章目录15 Junit 内幕16 重构 SerialDate 15 Junit 内幕 16 重构 SerialDate
2021-04-05 22:02:31
340
原创 13 并发编程
todo 平时并发用的少 等系统学完并发使用 再回头补充这节 为什么要并发 挑战 并发防御原则 单一权责原则 限制数据作用域 使用数据复本 线程应尽可能地独立 了解 Java 库 了解执行模型 生产者—消费者模型 读者—作者模型 宴席哲学家 警惕同步方法之间的依赖 保持同步区域微小 很难编写正确的关闭代码 测试线程代码 将伪失败看作可能的线程问题 先使非线程代码可工作 编写可插拔的线程代码 编写可调整的线程代码 运行多于处理器数量的线程 在不同平台上运行 装置试错代码 硬编码 自动化 ...
2021-04-05 21:56:19
114
原创 12 迭进
文章目录通过迭进设计达到整洁目的简单设计规则 1:运行所有测试简单设计规则 2~4:重构不可重复表达力 能够编写整洁代码的人 一定精通并擅长使用设计模式! 换句话说如果你连设计模式都不能熟谙 就休要声称自己有代码洁癖 能写出真正整洁代码 通过迭进设计达到整洁目的 简单设计的四条规则 运行所有测试 不可重复 表达了程序员的意图 尽可能减少类和方法的数量 以上规则按其重要程度排列 简单设计规则 1:运行所有测试 编写测试引致更好的设计 遵循 SRP 保持类短小且目的单一 高内聚 遵循 DIP 使用依赖注入
2021-04-05 21:49:54
342
原创 11 系统
文章目录如何建造一个城市将系统的构造与使用分开扩容三种切面机制Java代理纯 Java AOP 框架AspectJ 的方面测试驱动系统架构优化决策 如何建造一个城市 分工清晰明确 全局&细节—— 角色:老师 医生 程序员 … 恰当的抽象层级模块 ——管理: 老板 领导 下属 … 关注面切分 —— 全局性适用功能:每个人都要有身份证 社保卡 将系统的构造与使用分开 构造与使用分开的方法 分解main 将全部构造过程搬迁到 main 依赖注入 控制反转 DI容器 工厂解耦了构造细节 扩容 横贯式
2021-04-05 20:40:41
398
1
原创 10 类
文章目录类应该短小单一权责原则低耦合 高内聚保持内聚性就会得到许多短小的类为了修改而组织 感觉到这一级就开始更加涉及到设计模式相关的思想了 类应该短小 如果无法为某个类命以精确的名称 这个类大概就太长了 单一权责原则 单一权责原则:类或模块应有且只有一个修改的原因 低耦合 高内聚 内聚性高 意味着类中的方法和变量互相依赖 互相结合成一个逻辑整体 保持内聚性就会得到许多短小的类 采用更有描述性的变量名 将函数 类 变量的声明当作是给代码添加注释的一种手段 为了修改而组织 具体类包含实现细节 抽象类呈现概念 依
2021-04-05 19:26:59
148
原创 9 单元测试
文章目录TDD 三定律保持测试整洁整洁的测试每个测试一个断言F.I.R.S.T TDD 三定律 定律一 在编写不能通过的单元测试前 不可编写生产代码 定律二 只可编写刚好无法通过的单元测试 —— 测试临界 定律三 只可编写刚好足以通过当前测试的生产代码 测试与生产代码一起编写 测试只比生产代码早写几秒钟 保持测试整洁 命名 短小 具有描述性 设计良好 仔细划分 脏测试 = 没测试 测试不能保持整洁 你就会失去它们 因为测试必须随着生产代码的演进而修改 脏测试导致测试成为不断翻番的债务 不断恶性循环
2021-04-05 10:57:01
267
原创 8 边界
文章目录使用第三方代码浏览和学习边界学习 log4j学习性测试的好处不只是免费使用尚不存在的代码整洁的边界 使用第三方代码 浏览和学习边界 学习 log4j 学习性测试的好处不只是免费 使用尚不存在的代码 整洁的边界 ...
2021-04-05 00:21:14
177
原创 7 错误处理
文章目录使用异常而非返回码先写 try-catch-finally 语句使用不可控异常给出异常发生的环境说明依调用者需要定义异常类定义常规流程别返回 null 值别传递 null 值 编写既整洁又强大的代码——雅致地处理错误代码的一些技巧和思路 使用异常而非返回码 使用返回码的问题 搞乱了调用者的代码 调用者必须在调用之后即刻检查错误 并且这个步骤很容易被遗忘 解决方式:抛异常 调用代码很整洁 其逻辑不会被错误处理搞乱 先写 try-catch-finally 语句 没看懂 不好意思 使用不可控异常 可
2021-04-05 00:18:35
207
原创 6 对象和数据结构
文章目录数据抽象数据结构与对象的反对称性得墨忒耳律 Demeter's law隐藏结构 数据抽象 // 具象点:暴露实现 public class Point { public double x; public double y; } // 抽象点:隐藏实现 public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double ge
2021-04-04 23:08:22
201
原创 5 格式
文章目录格式目的垂直格式向报纸学习垂直区隔垂直靠近垂直距离垂直顺序水平格式水平区隔与靠近缩进团队规则 格式目的 关乎沟通 沟通是专业开发者的头等大事 可读性 代码风格和律条的深远影响 影响到可维护性 扩展性 垂直格式 向报纸学习 顶部有头条 —— 源文件名应该一目了然 足够告诉我们是否在正确的模块中 第一段是大纲 给出粗线条概述 但隐藏了细节 —— 源文件最顶部应该给出高层次的概念和算法 接着读下去 细节渐次增加 —— 源文件后面是越来越底层的函数和细节 多数短小精悍 —— 要拆分函数 每个函数只做一
2021-04-04 17:10:37
291
原创 4 注释
文章目录注释不能美化糟糕的代码让代码来阐述好注释法律信息提供信息注释意图声明注释阐释警示todo注释放大公共 API 中的 JavaDoc复杂算法坏注释多余注释误导注释循规式注释日志式注释废话注释能用函数或变量就别用注释位置标记括号后面的注释归属与署名注释掉的代码非公共代码中的 JavaDoc 别给糟糕的代码加注释——重新写吧 若编程语言足够有表达力 或者长于用这些语言来表达意图 就不那么需要注释 注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败 程序员并不能坚持维护注解 代码在变化 在演化 注释并不总
2021-04-04 16:41:11
501
2
原创 3 函数
文章目录短小只专心做一件事每个函数一个抽象层级swith使用描述性名称函数参数一元函数标识函数二元函数三元函数参数对象参数列表动词与关键字无副作用分隔查询与操作使用异常代替返回错误码抽离 try-catch 代码块错误处理就是一件事Error.java 依赖磁铁别重复自己结构化编程如何写出这样的函数 短小 函数第一规则 要短小 函数第一规则 还要更短小 通常要小于 10 行 if | else | while 语句,其中的代码块应该只有一行 这行大抵应该是个函数调用语句 不但能保持短小 函数名较具有说明性
2021-04-04 00:28:42
243
原创 2 命名
文章目录名副其实避免误导做有意义区分使用可读名称使用可搜索名称避免使用编码避免思维映射类名方法名每个抽象概念对应一个词别用双关使用解决方案领域名称使用问题领域名称添加有意义语境不要添加没用语境 名副其实 如果名称需要注释来补充 那就不算是名副其实 避免误导 避免留下掩藏代码本意的错误线索 hp hypotenuse(斜边) & linux 专有名称【还有 aix sco】 accountList 如果不是列表类型 => accountGroup | bunchOfAccounts | acc
2021-04-03 23:09:02
399
原创 1 整洁代码
文章目录要有代码糟糕的代码混乱的代价华丽新设计态度谜题整洁代码的艺术什么是整洁代码?思想流派我们是作者童子军军规前传与原则 为什么要阅读本书? 你是个程序员 你想成为更好的程序员 要有代码 **代码永存!**我们永远抛不掉代码 因为代码呈现了需求的细节。某些层面上 这些细节无法被忽略或抽象 必须明确之 将需求明确到机器可以执行的细节程度 就是编程要做的事 糟糕的代码 糟糕的代码足以毁了公司 稍后等于永不 混乱的代价 混乱增加 — 团队生产力下降 — 增加人手 — 新人不熟悉系统设计,什么修改符合设计意图
2021-04-03 22:18:01
139
2
原创 0 前言
文章目录内容提要序代码猴子与童子军军规 内容提要 软件质量的决定因素 架构 项目管理 代码质量 整洁度 序 软件开发 80% 以上的工作量集中在修补上 写出可读的代码重要程度不亚于写出可执行代码 用为自己孩子命名般谨慎给变量命名 签入代码前是否已做重构 代码猴子与童子军军规 离开时要比发现时更整洁 ...
2021-04-03 21:20:12
107
原创 mockito官网文档解读
文章目录ArgumentMatchersdoReturn vs WhenVerifyStubbingMatchersVerify Invocation TimesStub void with exceptionVerify in orderRedundant invocations@MockConsecutive calls打桩返回一个较为复杂的业务处理逻辑结果doReturn | doThrow | doAnswer | doNothing | doCallRealMethod .when(mocke
2021-02-26 11:28:59
4621
原创 《PowerMock实战手册》读书笔记及个人总结
文章目录前言依赖及注解mock local variablemock staticmock final class / methodmock constructorsmock private methods 前言 注:本文总结源自汪文君的e-book 《PowerMock 实战手册》, pdf不知道为何导入不了,以下是随书笔记。 pdf我保存在了百度云里,需要的可以自取 链接: https://pan.baidu.com/s/1WbZbHLjntUXK1BhDqmkiZQ 密码: 6hm4 本文目的:通过
2021-02-25 16:41:57
1397
1
原创 《软技能·代码之外的生存指南》读书笔记 ——精神
文章目录心灵开始重启心态重构形象爱情游戏书单面对失败 心灵开始 如果你不相信自己能够做到,你几乎做不成任何事情。你的思想对身体的影响有多大,对你能够获得成功的影响有多大,这是令人惊叹的。 如果你相信,你就能做到。 信念 => 思想 => 言语 => 行动 => 习惯 => 价值 => 命运 重启心态 选择从好的一面去思考问题 重构形象 那些不能激励自己的人一定是甘于平庸的人,无论他们的其他才能有多么令人印象深刻。 我可以决定我想成为怎样的人 假装自己不害羞,迫使自己陷于尴
2021-02-22 16:37:26
346
2
原创 《软技能·代码之外的生存指南》读书笔记 ——健身
文章目录健康密码健康标准卡路里让屁股离开椅子增肌完美腹肌站立式办公 健康密码 挑剔别人的身材,你自己管理好了吗? 健身不仅是保持健康体魄的关键要素之一,也是灵活的、具有创造性的脑力活动的基础。 毕竟,谁不想让自己外形迷人呢? 软开人员,更应该坚信,学习让身体保持健壮和健康能让我们获益良多,因为我们的工作往往会把我们推到另一个方向上。 立刻开始健身——就是现在,不是明天,也不是下周。 健身能让你成为更好的软件开发人员,这就是原因。 自信心比天赋更适合预测成功 好身材能让你感觉良好,也能让你对能完成自己设定目标
2021-02-22 16:32:08
308
6
原创 《软技能·代码之外的生存指南》读书笔记 ——理财
文章目录怎样支配薪水退休计划债务的危害彩蛋 金钱只是一种工具,它会带你去往任何你想去的地方,但不会取代你成为司机。 成为百万富翁还是一生靠薪水过活,选择权在你自己,而且很大程度取决于你在财务管理方面的知识,以及金融系统运行原理方面的知识。 你对自己财务和投资的管理方式会对自己的生活产生深远的影响,甚至可能远超除健康之外的其它东西。 你在职业生涯中做出的许多关键决策很大程度上是以财务状况为基础的, 怎样支配薪水 拒绝短期思维 赚钱多并不能让一个人在财务上更精明。 资产与负债 考虑物品的实际开销,而不是根据你每
2021-02-22 15:21:49
321
1
原创 《软技能·代码之外的生存指南》读书笔记 ——学习
文章目录自我教育十步学习法Step 1~6Step 7~10 循环往复发现短板 注:可能并不是该章节全部内容的笔记,后续会继续完善。 自我教育 教育体系的设计初衷针对群体而非个人。但是,如果想成为最好的软件开发人员,就必须学会自学。主动学习是效率更高的方式。 学习知识最好的方式就是立即付诸实践,即使你还不知道自己在做什么。玩耍是一项强大的学习机制,乐在其中。 最后,将自己所学打包教给别人。 http://simpleprogrammer.com/ss-learning-myth 十步学习法 背景 我们往往
2021-02-19 10:47:12
218
原创 《软技能·代码之外的生存指南》读书笔记 ——自我营销
@[TOC] 自我营销 营销就是一场争夺人们注意力的竞赛。—— Seth Godin 优秀的营销会将人们的需要或者期待与能够满足此愿望的产品或服务关联起来 实现价值在先,要求回报在后 营销基础 在生活中,仅仅拥有才华是远远不够的。伟大的音乐家与超级巨星之间的真正区别无非就是营销自己。对于有才华的人来说,营销就是乘数/杠杆效应。你的营销越好,你的才华能表现得越发淋漓尽致。 如何包装一个想法往往比想法本身更重要。你也许是世界上最有天赋的软件开发人员,但是如果没有人知道你的存在,你也只不过是浮云一片。 自我营销的
2021-02-17 12:42:35
272
2
原创 《软技能·代码之外的生存指南》读书笔记 —— 职业
作者博客 https://simpleprogrammer.com/ https://getupandcode1.libsyn.com/ https://entreprogrammers.com/ 工作是属于公司的,但我们为自己而工作,为自己的职业发展(生涯)而工作 从非同凡响开始 转变心态,把自己当做一个企业去思考 自己 => 企业 雇主 => 客户 软件开发服务 => 生意 把自己当作企业,会影响到 工作的方式 处理财务的方式 寻求新工作(客户)的方式 应该怎么
2021-02-17 12:18:42
251
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅