自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

读万卷书,行万里路

deniro's thinking

  • 博客(26)
  • 资源 (9)
  • 收藏
  • 关注

原创 系统架构设计笔记(58)—— 嵌入式系统概论

嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用对功能 、 可靠性 、 成本 、 体积 、 功耗等方面的要求,集可配置,可裁减的软 、 硬件于一体的专用计算机系统。它具有很强的灵活性,主要由嵌入式硬件平台 、 相关支撑硬件 、 嵌入式操作系统 、 支撑软件以及应用软件组成。其中, “ 嵌入性 ” 、 “ 专用性 ” 与 “ 计算机系统 ” 是嵌入式系统的三个基本的核心要素,具体来讲:嵌入性:指计算机计算机嵌入到对象系统中,且满足对象系统的环境要求,如物理环境(小型) 、 电气 /

2020-07-26 16:09:26 483

原创 系统架构设计笔记(57)—— 测试自动化与面向对象的测试

1 测试自动化软件测试的工作量很大,但测试却极有可能应用计算机进行相当一部分自动化的工作,原因是测试的许多操作是重复性的 、 非智力创造性的 、 需要细致注意力的工作,而计算机就最适合于代替人类去完成这些任务。测试自动化会对整个开发工作的质量 、 成本和周期带来非常明显的效果。一些适于考虑进行自动化的测试工作为:(1)测试用例的生成(包括测试输入 、 标准输出 、 测试操作指令等)。(2)测试的执行控制(包括单机与网络多机分布运行 、 夜间及假日运行 、 测试用例调用控制 、 测试对象 、 范围 、

2020-07-26 15:46:17 404

原创 系统架构设计笔记(56)—— 验证与确认

验证与确认都是确定软件产品是否满足其预期要求和条件的过程。验证可适用于分析、 设计、编码、测试和评审等众多的过程,而确认通常用于验收过程。1 验证软件项目的验证一般应包括合同验证 、 过程验证 、 需求验证 、 设计验证 、 编码验证 、 集成验证和文档验证。(1)合同验证供方具有满足需求的能力。需求是一致的并复盖了用户的需要。为处理需求变更和升级问题规定了适当的规程。规定了各方之间的接口及其合作规程与范围,包括所有权 、 许可权 、 版权和保密要求。按照需求规定了验收准则和规程。(2)

2020-07-25 15:20:48 917

原创 说说在 Java 中如何创建流

1 元素转换为流通过 Stream.of() ,我们可以很容易地将一组元素转化成流。Stream.of("今天", "是", "个", "好日子").forEach(System.out::println);System.out.println();Stream.of(23, 29.2, 291.8).forEach(System.out::println); 运行结果:今天是个好日子2329.2291.82 集合转换为流每种集合都可以通过调用&n

2020-07-25 11:45:16 438

原创 Tomcat 启动后,请求的 js 出现中文乱码的解决方法

1 原因因为win10系统的默认字符集是GBK,而 java 虚拟机在启动时,会读取该字符集。而我们的项目一般会设置为 UTF-8。而 Tomcat 本质上也是依赖于 JDK,所以自然会出现中文乱码。2 解决修改 Tomcat 安装路径的 bin 目录下 catalina.bat 文件:set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"-D<name>=<value> 语法表示设置系统属性,它是一对键值对。这里其实是设置

2020-07-25 11:43:19 1692

原创 Java 流式编程概述

让我们首先从随机数说起。1 随机数真正的随机数是使用物理现象产生的,比如投掷钱币。这种随机数发生器叫做物理性随机数发生器。它的缺点是技术要求比较高。这幅图是芬兰的钱币。但这种通过物理性随机数发生器生成的真随机数,才是真正的随机,体现的是绝对的公平。伪随机数是有规律的,只不过这个规律周期比较长,但还是可以预测的。主要原因是伪随机数是计算机使用算法模拟出来的,因为这个过程并不涉及到物理过程,所以自然不可能具有真随机数的特性。目前用的比较广泛的有以下两种算法:线性同余算法周期:2^32= 4

2020-07-25 11:41:14 990

原创 系统架构设计笔记(55)—— 评审方法

根据 IEEE1028 的定义,评审是对软件元素或者项目状态的一种评估手段,以确定其是否与计划的结果保持一致,并使其得到改进。狭义的 “ 软件评审 ” 通常指软件文档和源程序的评审。广义的 “ 软件评审 ” 还包括与软件测试相结合的评审及管理评审。软件评审包括软件需求评审 、 概要设计评审 、 详细设计评审 、 软件验证和确认评审 、 功能检查 、 物理检查 、 综合检查和管理评审。(1)软件需求评审。在软件需求分析结束后必须进行软件需求评审( software requirements rev

2020-07-25 11:38:38 1547

原创 系统架构设计笔记(54)—— 测试方法

在介绍软件测试之前,首先应该明确 “ 错误 ” ( error )和 “ 缺陷 ” ( fault )的概念。根据 IEEE 的定义, “ 错误 ” 主要针对软件开发过程, “ 缺陷 ” 主要针对软件产品。软件开发人员在软件开发过程(主要是分析 、 设计和编码过程)中所出现的 “ 错误 ” 是导致软件产品 “ 缺陷 ” 的原因,反过来说, “ 缺陷 ” 是 “ 错误 ” 的结果和表现形式。软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件产品(主要是指程序)中的错误(缺陷)。为了发现软件中的

2020-07-25 11:36:17 835

原创 说说在 Python 中如何使用列表推导

1 从示例说起Luciano Ramalho 举了这样一个示例,把一个字符串转为 Unicode 码的列表。传统写法是这样的:symbols='@#$%^&'codes=[]for symbol in symbols: codes.append(ord(symbol))运行结果:INFO - codes -> [64, 35, 36, 37, 94, 38]ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unico

2020-07-25 11:28:55 291

原创 说说 Python 内置序列类型

Python 标准库用 C 语言实现了很多种序列类型,具体说明见下图:可变序列(MutableSequence)从不可变序列 (Sequence)中继承了一些方法。箭头从子类指向超类,斜体表示是抽象类或抽象方法。

2020-07-25 08:55:10 308

原创 系统架构设计笔记(53)—— 设计模式

面向对象技术为软件技术带来新的发展。人们运用面向对象的思想分析系统 、 为系统建模并设计系统,最后使用面向对象的程序语言来实现系统。但是面向对象的设计并不是一件很简单的事情,尤其是要设计出架构良好的软件系统更不容易。为了提高系统的复用性,需要进行一些 “ 额外 ” 的设计(这里的额外并不是无用的,而是指业务领域之外),定义类的接口 、 规划类的继承结构 、 建立类与类之间的关系。毋庸置疑,良好的设计可以让系统更容易地被复用 、 被移植和维护,而如何快速进行良好的设计则是设计模式要讨论的问题。设计模式是软件架

2020-07-19 17:19:55 726

原创 系统架构设计笔记(52)—— 软件架构视图

1 软件视图的分类现代软件系统非常复杂,通常在某个具体的时间内只需将注意力集中在某几个结构上(就像看病时,医生只是将注意力集中在某方面的人体结构上,骨科医生与心血管科医生关心不同的结构),结构是元素本身的集合,而视图则是捕获和表达结构(文档描述),虽然它们有区别,但在实际使用时则不严格区分,即从系统体系的角度说是结构,从文档角度说是视图。软件架构是一种无法以简单的一维方式进行说明的复杂实体,从不同侧面的描述就是视图。架构的优势也在于使用视图:每个视图强调系统的某一个方面,同时忽视系统的其他方面,以便有助

2020-07-18 15:27:21 1141 1

原创 系统架构设计笔记(51)—— 产品线及系统演化

软件企业追求长远的发展,通常采用产品线模型及系统演化策略,它实质上是用架构技术构建产品线,并在此基础上借助复用技术持续演化,不断地推出新产品,满足市场追求产品升级换代的需求。1 复用与产品线软件产品线是指一组软件密集型系统,它们共享一个公共的 、 可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理 、 复用 、 集成新的系统。核心资产库包括软件架构及其可剪裁的元素,更广泛地,它还包括设计方案及其文档 、 用户手册 、 项目管理的历史

2020-07-11 15:55:30 702

原创 系统架构设计笔记(50)—— 构件及其复用

软件企业为了提高开发效率,越来越注重软件元素的复用(也称重用),因此,架构设计师在进行架构设计时,必须关注复用,例如,考虑丰富企业构件和充分使用已有的构件。与复用技术密切相关的概念是构件( component ,组件),业界对构件还没有公认的定义,如下为几种常见的定义。定义1:构件是指软件系统中可以明确辨识的构成成分。而可复用构件(reusable component )是指具有相对独立的功能和可复用价值的构件。定义2:构件是一个组装单元,它具有约定式规范的接口及明确的依赖环境。定义3:构件是软件系

2020-07-11 15:25:26 1264

原创 系统架构设计笔记(49)—— 软件架构评估

软件架构评估是在对架构分析 、 评估的基础上,对架构策略的选取进行决策。它也可以灵活地运用于对软件架构进行评审等工作中。1 软件架构评估的方法业界已开发出多种软件架构评估的方法,按基于的技术手段来看,可以分为三类:基于调查问卷或检查表的方式 、 基于场景的方式和基于度量的方式。(1)基于调查问卷或检查表的方式该方式的关键是要设计好问卷或检查表,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于评估人员的主观推断。(2)基于场景的方式基于场景的方式由 SEI 首先提出

2020-07-11 11:14:03 1789

原创 系统架构设计笔记(48)—— 软件架构文档化

记录软件架构的活动就是架构编档过程,也就是架构的文档化。它包含两个方面:一是过程,编档过程能促使架构设计师进一步思考,使得架构更加完善;二是结果,描述架构的文档将作为架构开发的成果,供项目关系人使用。1 架构文档的使用者架构文档的使用者是架构的项目关系人。编写技术文档(尤其是软件架构文档)最基本的原则之一是要从读者的角度来编写,易于编写但很难阅读的文档是不受欢迎的。架构的主要用途是充当项目关系人之间进行交流的工具,文档则促进了这种交流 —— 架构项目关系人希望从架构文档中获得自己所关心的架构信息,如:

2020-07-11 11:12:14 1348

原创 系统架构设计笔记(47)—— 架构设计

架构模式也称为架构风格,它是适当地选取战术的结果,这些固定的结果(模式)在高层抽象层次上具有普遍实用性和复用性。通过架构模式,架构设计师可以借鉴和复用他人的经验,看看类似的问题别人是如何解决的。但不要把模式看成是一个硬性的解决方法,它只是一种解决问题的思路 。MartinFowler 曾说: “ 模式和业务构件的区别就在于模式会引发你的思考 。”1 演变交付生命周期业界已开发出各种软件生命周期模型,其中把架构放在一个适当位置的模型中,典型的有演变交付生命周期模型。在生命周期模型中,架构设计就是从初

2020-07-11 11:10:21 538

原创 系统架构设计笔记(46)—— 面向服务的架构

迄今为止,对于面向服务的架构( Service-Oriented Architecture , SOA )还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个:(1)W3C 的定义SOA 是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。(2)Service-architecture.com 的定义服务是精确定义 、 封装完善 、 独立于其他服务所处环境和状态的函

2020-07-11 11:07:39 2161

原创 系统架构设计笔记(45)—— 层次系统架构风格

1 二层及三层 C/S 架构风格C/S 架构是基于资源不对等,且为实现共享而提出来的,是 20 世纪 90 年代成熟起来的技术, C/S 结构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。C/S 软件架构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。但随着企业规模的日益扩大,软件的复杂程度不断提高,传统的二层 C/S 结构存在以下几个局限:二层 C/S 结构为单一服务器且以局域网为中心,所以难以扩展至大型企业广域网或 Internet ;软

2020-07-11 11:05:41 1223

原创 Oracle 数据库笔记(2)—— 逻辑存储结构

Oracle 数据库中的数据文件被分组到一个或多个表空间中。在每个表空间中,逻辑数据库结构 ( 如表和索引 ) 都是片段,被进一步细分为 “ 盘区” ( extent ) 和 “ 块 ( block ) ”。这种存储的逻辑细分允许 Oracle 更有效地控制磁盘空间的利用率。图 1 显示了数据库中逻辑存储结构之间的关系。1 表空间Oracle 表空间 ( tablespace ) 由一个或多个数据文件组成,一个数据文件是且只能是一个表空间的一部分。 Oracle 12c最少会创建两个表空间 :

2020-07-11 11:03:45 401

原创 Oracle 数据库笔记(1)—— 数据库与实例之间的区别

数据库(Database)与实例(Instance)之间存在本质区别。(1)数据库(Database)Oracle 中的数据库(Database)是硬盘上的数据集合,表现为数据库服务器上的一个或多个文件。它是由各种物理或逻辑结构组成的,比如表就是一种逻辑结构。数据库文件依据存储的内容可以如下划分:(2)实例(Instance)Oracle 中的数据库放置在磁盘上,而实例(Instance)是放置在服务器的内存中。Oracle 实例是由一个大型内存块和后台进程所组成的 : 这个内存块被分配在系统

2020-07-11 11:02:00 620

原创 说说如何搭建与使用 Nacos 配置中心

1 Nacos 服务(Server)从 Nacos 官网 下载 nacos-server-$version.zip 包,解压到指定目录。Windows 中,打开解压目录下的 \bin\startup.cmd 启动服务。Nacos 服务占用内存近 2G,对资源要求很高。启动成功后,Nacos 服务就运行起来了。在浏览器中输入 http://127.0.0.1:8848/nacos/index.html,就可以打开 Nacos 控制台:使用默认账号密码(n

2020-07-11 10:59:29 792

原创 系统架构设计笔记(44)——软件架构风格

软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用。也就是说,能否在不同的软件系统中,使用同一架构。基于这个目的,学者们开始研究和实践软件架构的风格和类型问题。软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式( idiomatic paradigm )。架构风格定义了一个系统家族,即一个架构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如

2020-07-05 14:57:24 1229 1

原创 Java 函数式编程最佳实践笔记

Joshua Bloch 提出了函数式编程最佳实践的 3 条经验法则,这里总结如下:1 匿名类与 lambda 表达式,优先选择 lambda假设需要实现一个根据单词长度排序的功能。匿名内部类实现方式为:而 Lambda 表达式的实现方式为:可以看到, Lambda 表达式摆脱了那些样板代码,给人以简洁 、 直观 、 易懂的印象。lambda 表达式使用原则:最理想的是一行代码,最多不超过三行。因为 lambda s 缺少描述说明,无法做到自解释。所以如果 lambda s 过长

2020-07-05 10:27:46 392

原创 说说 Java 中的函数式编程

Java8 提供了以下两种方式,来支持函数式编程。Lambda 表达式方法引用 (MethodReferences)Bruce Eckel 举了一个策略模式的示例,来比较传统写法与函数式编程写法之间的区别。首先定义一个策略接口,然后我们就可以实现不同的策略,以供其它业务类使用。在此可以看到,传统的匿名内部类代码量最多, lambda 表达式代码居中,而方法引用最精简。1 Lambda 表达式Lambda 表达式( lambda expression )是一个匿名函数, Lambda 表

2020-07-05 09:29:13 981

原创 说说什么是函数式编程思维

假设来到阿里巴巴面试,面试官可能就会让你把反转下二叉树镜像。请大家先思考下,怎么实现?(1)命令式编程思维一种实现方式是这样的:Node invertTree(root){ if (root is null){ return null; } root.left = invertTree(root.right); root.right = invertTree(root.left); return root;}我们首先判断节点是否为空,如果为空则直接抛出;然后翻转右

2020-07-05 08:29:24 719

Nginx 1.18.0 以及相关依赖库

该压缩包内包含了 Nginx-1.18.0以及 Nginx所需要的依赖库。依赖库主要为: * 编译 Nginx 的GCC 编译器; * 未来使用 C++ 来编写 Nginx 的 G++ 编译器; * Perl 正则表达式(Nginx HTTP 模块依赖库); * zlib (网络数据包 gzip压缩依赖库); * openssl (提供HTTPS 支持以及 MD5、SHA1 等加密算法实现)。

2020-12-27

Vue.js 技术交流培训材料.pdf

包含数据绑定、计算属性、内置指令、组件、自定义指令、Render 函数、webpack、插件等内容。

2019-11-22

jasperreports-functions-6.3.1.jar

jasperreports 的函数依赖包,用于解决 jasperreports 抛出 Caused by: java.lang.NoClassDefFoundError: net.sf.jasperreports.functions.standard.DateTimeFunctions 的问题

2017-11-07

mysql 函数,可以将数字转换为中文大写形式

mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。

2017-10-30

olap4j-0.9.7.309-JS-3.jar jasperreports 6.x 的依赖包

olap4j-0.9.7.309-JS-3.jar jasperreports 6.x 的依赖包哦

2017-10-20

axis1.4 包,一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。

axis全称Apache Extensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器

2017-09-29

Fiddler4 破解版,http协议调试代理工具

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

2017-09-29

mdwiki 项目模板代码

可用于搭建 mdwiki 项目架构,mdwiki 是基于 markdown 的 wiki 系统。里面有一些基础文件,可在此基础上进行扩展。

2016-12-30

空空如也

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

TA关注的人

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