自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 高斯分布归一化、期望、二阶矩、方差推导证明

目录写在前面的唠叨:归一化推导证明:期望(一阶矩)推导证明:二阶矩推导证明:方差推导证明:写在前面的唠叨:最近这段时间一直在研究深度学习之类的东西,虽然如今对几种常见的神经网络都有了很好的了解,用起来也比较顺手,但是越学也越觉得瓶颈越来越明显了,最大的问题觉得还是数学基础不行,学习那些常见的模型已经把线性代数的知识捡的差不多了,而到了想自己设计模型的时候,才忽然发...

2019-07-15 11:08:18 12311 4

原创 计算机网络 IPv4转发实验

做这个实验从网上扒了好多版本,验收的时候碰到一个非常严格的助教,告诉我们网上都是错的!没有子网掩码blablabla……改了好久,踩了很多坑,终于弄出来个正确的,特此记录,如果你的助教是一个叫姓傅的可爱的老师,请参考此代码=3=(话虽这么说,确实期间学到了不少东西,本来也就知道个具体流程,现在估计让我自己写一遍都没问题了,还是要感谢这位助教啊)放源码上来不是为了方便大家应付实验,个人不要脸...

2018-11-21 15:24:45 1753 1

原创 【补充】第六章代码的可维护性——基于状态的构造技术

写在前面的废话:为什么会写在第十章的后面呢?真的是尴尬……当初写完第六章那十一个设计模式之后,后面还有两个基于状态的构造技术的设计模式没有说就去吃饭了,回来忘记了嘤嘤嘤……本来想补在第六章末尾的,发现实在是太臃肿了,所以就补充到最后了。吃饭真的耽误事,下次真的不能再吃了!先说前面,补充的内容不多,主要是两种基于状态的设计模式——Memento(备忘录)与State在这之前先简单的说一下什么是基于状...

2018-06-23 19:43:21 325

原创 第十章并发与分布式编程——并发性与线程安全

并发与分布式编程(Concurrent and Distributed Programming)1.并发(Concurrency)注意并发并不等于平行(Parallel),下面的图片就形象的解释了这一概念:在现代编程中,并发性是必不可少的:多用户并发请求服务App在手机端与云端都有计算GUI的前端用户操作和后台的计算并发编程主要有两种模式:共享内存:在内存中读写共享数据。eg:两个处理器共享内存、...

2018-06-21 17:30:52 2108 2

原创 第八章软件构造的性能——性能优化的代码调优

是的!我们这节又要说设计模式了!不过没以前那么难哦,我是认真的!1. 代码调优策略与过程(Code-Tuning Strategies and Process)代码调优并不是为了修复bug,而是对正确性的代码进行修改以提高其性能。(通常都是些小规模的变化)关于调优的几点说明调优不会减少代码行数(代码行数与性能之间无必然联系)不要猜原因,而应该要有明确的优化目标通过度量发现程序热点与瓶颈(通过上节的...

2018-06-21 11:39:37 355

原创 第八章软件构造的性能——程序的动态分析方法与工具

emm……这节主要说的各个插件等应用,不会给出详细说明,因为如果每个都要说的话肝真的疼。再次只给出一个软件动态分析的方法和流程的大概描述,如果大家对某个工具或者方法感兴趣,度娘走你!(其实很多博客都有,讲的真心好……)1. 动态程序分析(Dynamic Program Analysis)动态程序分析:根据程序的一次或多次执行的过程与结果,分析代码在时空性能方面所展现的性质。为了使动态分析有效,目标...

2018-06-20 23:06:22 3009

原创 第八章软件构造的性能——构造性能的度量、原则与方法(java中的垃圾回收机制及算法)

这节内容真的是多到炸裂,而且全都是概念,不过很挺有用的,学完这节会对内存管理有一个比较深的理解和认识,就是……这也太多了……嘤嘤嘤T_T1.性能度量(performance metrics)第一点很少,因为我们主要来说运行时性能,其主要分为两种(就是时空啦):时间性能:每条指令、每个控制结构、整个程序的执行时间空间性能:每个变量、每个复杂结构、整个程序的内存消耗2. 内存管理(Memory Man...

2018-06-20 17:00:10 297

原创 第七章软件结构的健壮性——测试与测试优先编程

1. 软件测试(Software Test)测试:发现程序中的错误,提高程序正确性的信心。程序确认的基本方法:形式化推理(Formal reasoning)代码评审(Code review)测试(Testing)为什么要测试?提高软件质量的重要手段确认是否达到可用的级别(用户需求)关注系统的某一个侧面的质量特性是否满足需求spec(正确性)是否能够正确相应所有可能的需求(正确性、健壮性)性能是否可...

2018-06-20 10:57:00 866

原创 第七章软件结构的健壮性——断言与防御式编程

上一节提到了错误和异常的处理,其主要面对的是健壮性(robustness),而这一节我们会提一些技术,侧重于正确性(correctness)1.断言(Assertions)断言:在开发阶段的代码中嵌入,检验某些假设是否成立,若成立,表明程序运行正常,否则表明存在错误。(assert)如果出现了AssertionError,也就意味着内部的某些假设被违反了。这时就应该找bug了兄弟们!断言可以增强程...

2018-06-19 23:14:17 652

原创 第七章软件结构的健壮性——错误与异常处理

1. java中的异常与错误这里如果读者对java语法有信心,那么大可跳过,因为主要说的是异常与错误的解释与区别,代码码的多了应该自然就懂了。java中异常(Exception)和错误(Error)虽然导致都是程序出现GG的现象,但是有着本质的不同,形象点说你打一把DOTA,错误和异常都能中止你那行云流水的万分大神操作,但错误指的是你的鼠标爆炸键盘冒奶这种没有办法的现象,异常则指的是游戏中对面的敌...

2018-06-19 22:34:13 415

原创 第七章软件结构的健壮性——健壮性与正确性

1.健壮性什么叫健壮性?指代码很多?多到程序员无法撼动?嘛,开个玩笑啦……健壮性不是指数量,而是衡量代码质量特性的最关键的一种,用“一人之下万人之上”来形容很恰当(在他上面的是正确性,emm……这个不用解释了吧)。健壮性具体指的是系统在不正常的输入或不正常的外部环境下仍能表现出正常的程度。形象点来说就是这个软件要求用户输入个整数,结果用户这个小坏坏输入了一个小数,那么你这个程序会怎么处理呢?崩了可...

2018-06-19 21:20:07 11281

原创 第六章代码的可维护性——可维护性的设计模式

可维护的设计模式主要分为三种,分别为:创造性模式(前三个)、结构化模式和行为化模式。接下来我们将围绕这三种模式分别进行详细讲解:1.创造性模式(Creational pattern):1. 工厂方法模式(Factory Method pattern)也叫虚拟构造器(Virtual Constructor)。当客户端不知道要创建哪个具体类的实例,或者不想在客户端代码中指明要具体创建的实例时,可以采用...

2018-06-17 19:03:05 1657

原创 第六章代码的可维护性——可维护性的度量和构造原则

1.软件的维护与演化我们一直说软件维护,那么什么是软件维护呢?其实就是修改错误、改善性能的过程。运维是软件开发中最困难的工作之一,他需要处理各种来自用户报告的问题与故障。软件维护主要针对一下几种(数据来源未知2333):纠错性25%适应性21%完善性50%预防性4%“变化”在软件生命周期中是不可避免的!那么如何在最初的设计中充分考虑到未来的变化,避免因为频繁的变化导致软件复杂度增加和质量的下降呢?...

2018-06-17 14:11:55 6322

原创 第五章 代码的可复用性——可复用的设计模式

这一部分主要分两个方面:结构型模式、行为类模式来介绍六种java设计模式:前三种为结构型模式,后三种为行为类模式1. 适配器模式(Adapter)该设计模式的目的在于将某各类/接口转换成客户期望的其他形式。其核心思想是通过增加一个接口,将已存在的子类封装起来,客户端面向接口编程,从而隐藏了具体子类。并提供给一个用户希望得到的接口。其用现有的各种组件组合成一个新的系统(包装wrapper)首先我们来...

2018-06-16 22:20:28 1595

原创 第五章 代码的可复用性——复用性的结构

1.行为子类型与LSP(Liskov Substitution Principle)行为子类型:子类型多态:客户端可用统一的方式处理不同类型的对象。栗子!在java中编译器关于这部分有以下规则(静态检查实现):子类型可以增加方法,但不可删。子类型需要实现抽象类型中的所有方法子类型重写的方法中必须有相同或子类型的返回值这里有点拗口解释一下,比如重写方法中超类返回值为Animal,那么子类型可以是An...

2018-06-16 17:28:12 1848

原创 第五章 代码的可复用性——复用性的度量、形态、与外边观测

1. 面向/基于复用编程(Programing for/with reuse)面向复用编程(Programing for reuse):是为了开发出可复用的软件。基于复用编程(Programing with reuse):利用已有的可复用软件搭建应用系统。以上是软件复用的两种观点,软件复用就是字面上的意思,使用现有的软件组件实现、更新软件系统的过程。复用的优点:降低了开发成本与时间成本。复用的代码...

2018-06-16 15:30:27 1153

原创 第四章 代码的可理解性

第四章知识清单:1. 代码可规范/可读性2. 编码规范1.代码的可规范性/可读性:一个程序员大部分时间都是用来阅读并修改已有的代码,所以代码的可读性非常重要!其中主要包括标识符(类名、变量名、方法名)的长度。度量方式:所有标识符的平均长度明明独特性的比率(Name Uniqueness Ratio)UNIQ代码复杂度:要避免多层嵌套,因为会增加复杂度(然而大多数情况也必须用)代码最大行数、文件的最...

2018-06-16 11:41:37 433

原创 第三章 ADT与OOP——ADT与OOP中的等价性

第三章ADT与OOP的知识清单:1. 基本数据类型对象数据类型2. 静态类型检查、动态类型检查3. 值的改变、引用的改变4. Mutable/Immutable5. 防御式拷贝6. snapshot diagram7. specification、行为等价性8. 前置后置条件9. 规约的强度10. ADT操作的四种类型11. 表示独立性12. 不变量、表示泄漏13. 表示不变量RI、AF14. 以...

2018-06-15 23:21:51 282

原创 第三章 ADT与OOP——面向对象编程OOP

第三章ADT与OOP的知识清单:1. 基本数据类型对象数据类型2. 静态类型检查、动态类型检查3. 值的改变、引用的改变4. Mutable/Immutable5. 防御式拷贝6. snapshot diagram7. specification、行为等价性8. 前置后置条件9. 规约的强度10. ADT操作的四种类型11. 表示独立性12. 不变量、表示泄漏13. 表示不变量RI、AF14. 以...

2018-06-15 22:24:35 573

原创 第三章 ADT与OOP——抽象数据类型ADT

第三章ADT与OOP的知识清单:1. 基本数据类型对象数据类型2. 静态类型检查、动态类型检查3. 值的改变、引用的改变4. Mutable/Immutable5. 防御式拷贝6. snapshot diagram7. specification、行为等价性8. 前置后置条件9. 规约的强度10. ADT操作的四种类型11. 表示独立性12. 不变量、表示泄漏、表示不变量RI13. 表示空间、抽象...

2018-06-15 20:37:23 596 1

原创 第三章 ADT与OOP——规约specs

第三章ADT与OOP的知识清单:1. 基本数据类型对象数据类型2. 静态类型检查、动态类型检查3. 值的改变、引用的改变4. Mutable/Immutable5. 防御式拷贝6. snapshot diagram7. specification、行为等价性8. 前置后置条件9. 规约的强度10. ADT操作的四种类型11. 表示独立性12. 表示泄漏13. 不变量、表示不变量RI14. 表示空间...

2018-06-14 22:40:18 369

原创 第三章 ADT与OOP——数据类型基础

第三章ADT与OOP的知识清单:1. 基本数据类型对象数据类型2. 静态类型检查、动态类型检查3. 值的改变、引用的改变4. Mutable/Immutable5. 防御式拷贝6. snapshot diagram7. specification、前置后置条件8. 行为等价性9. 规约的强度10. ADT操作的四种类型11. 表示独立性12. 表示泄漏13. 不变量、表示不变量RI14. 表示空间...

2018-06-14 21:10:17 347

原创 第二章 软件构造过程——Git的结构、工作原理、基本指令

本章知识点清单:软件配置管理SCM与版本控制系统VCSGit的结构、工作原理、基本指令Git的结构、工作原理、基本指令Git是一个软件配置管理工具,即本章第一点所讲的SCM。Git repository的组成部分:.git directory :即为前一节中提到的本地CMDB(配置管理数据库)。working directory(工作目录):本地文件系统。Staging area(暂存区): 隔离...

2018-06-12 15:59:40 272

原创 第二章 软件构造过程——软件配置管理SCM与版本控制系统VCS

本章知识清单:软件配置管理SCM与版本控制系统VCSGit的结构、工作原理、基本指令GitHub软件配置管理SCM与版本控制系统VCS软件配置管理SCM(Software Configuration Management):其主要功能为追踪和控制软件的变化,有以下几个术语需要着重了解:软件配置项SCI(Software Configuration Item):软件中发生变化的基本单元,例如文件等。...

2018-06-12 15:25:20 467

原创 第一章:软件构造基础

知识点总结:1. 软件构造多维度视图2. 软件构造的阶段划分,各个阶段的构造活动3. 内部/外部质量指标1. 软件构造多维度视图ss

2018-06-11 16:20:21 572

原创 调用Set.add(All)出现java.lang.UnsupportedOperationException异常原因以及解决方法

一个初学者很常见的错误,因为困扰了我有一些时间,所以就写在这里备忘并希望帮助其他初学java的人。首先看一段代码:    Map<String, Integer> map = new HashMap<>();    map.put("a", 0);    map.put("b", 1);    map.put("c", 2);     Set<Strin...

2018-03-27 20:53:23 4623

原创 java 迭代器 iteractor原理及使用误区

一、 java迭代器概述    java中有很多集合类,有时被称为容器,由于各个容器内数据结构大不相同,如ArrayList类实际实现为数组结构,LinkList类实际实现为链表结构,Map类实际为散列结构,那么如何遍历容器成为了一个麻烦的问题,由此java引入了迭代器的形式。    java中的iteractor实际为接口,其中的方法也相当简单:package java.util;public...

2018-03-20 22:14:58 1087

原创 git无法push本地代码至远程仓库解决方法(附git一点芝麻那么大的原理)

    最近在用Git上传本地代码至远程仓库的时候,突然发现上传错误,提示信息为:updates were rejected because the contains work that you do.结果一头雾水,上网查了好多说缺少README.md文件,花了很大功夫解决了还是不行。其实原因很简单,是本地的.git 文件被修改了,和远程仓库不匹配所以自然传不上去。与缺少README.md文件没有...

2018-03-08 14:21:48 3149

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除