- 博客(22)
- 资源 (4)
- 收藏
- 关注
原创 抽象工厂模式
动机首先,引入产品等级和产品族的概念。产品等级表示产品的继承结构,比如一个抽象类是汽车,那么宝马、奔驰、保时捷等品牌的汽车都继承于汽车这个抽象类,它们形成了一个产品等级,汽车是父类,各个品牌是子类。产品族表示由一个工厂生产的,位于不同等级结构中的一组产品。比如,保时捷公司旗下不仅仅有汽车产品,还有手机、自行车等,这些形成了一个产品族。当系统提供的工厂需要生产位于不同产品等级属于不同类型...
2018-04-30 23:34:21 922
原创 工厂方法模式
动机为了解决简单工厂模式中,抽象工厂不满足开闭原则的缺陷。不在创建一个抽象的工厂类完成所有的产品的创建,而是把具体产品的创建过程交给专门的工厂的子类去完成。可以先定义生产抽象类的抽象工厂,再定义具体的工厂类来生产具体的产品。可以在不修改具体工厂类的情况下引入新的产品,更加符合开闭原则。简单地理解为单独建立一个抽象工厂,专门用于生产接口。之后根据需要,建立抽象工厂的子类,让这些子类完成具体的...
2018-04-28 23:37:20 186
原创 安卓数据库的使用方式
简介该博客主要是为安卓数据库开发做的笔记,该笔记肯定有很多不完善的地方,希望dalao们及时指正,不胜感激。该笔记很大程度上参考了《第一行代码》第二版,很多细节大家可以参考书籍,本笔记主要是一个总结。SQLiteOpenHelper类的简介SQLiteOpenHelper用于创建和升级数据库。在安卓的数据库系统中,一旦创建了一个数据库的表,那么这个表会一致存在于应用的文件夹...
2018-04-28 10:06:08 5412 1
原创 简单工厂模式
动机需要使用的对象都来自于同一个基类。比如按钮有各种形状的,但是它们都来自与按钮这个基类。不需要知道具体的对象名,只需要知道有合适的参数,传入参数即可调用需要的方法。定义简单工厂模式可以根据参数的不同返回不同类的实例。专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。结构Factory:工厂角色Product:抽象产品角色Concrete Pr...
2018-04-26 23:39:00 2387 2
原创 设计模式概述
设计模式分类依据目的分类创建型 创建对象 结构型 处理对象和类的组合 行为型 描述类和对象的交互和分配职责的方式。设计模式的分类类模式 处理类和子类的关系,这些 关系通过继承建立,在编译时确定,是静态的。 对象模式 处理对象的关系,关系在运行时刻变化,是动态的分类图示: ...
2018-04-25 23:26:36 140
原创 7个设计模式的基本原则
单一职责原则一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小。类的职责表现在数据职责和行为职责。前者通过属性体现,后者通过方法体现。高内聚、低耦合。把不同的职责分离成不同的类。类不要过于庞大。开闭原则对扩展开发,对修改关闭。设计一个模块的时候,使得该模块可以在不被修改的前提下进行扩展。一般使用抽象化的设计原则。扩展的时候,仅仅是对抽象类的一个实现与扩展。抽象化是...
2018-04-25 10:04:55 706
原创 UML类图
关联关联类之间的关系是平等的,这与聚合、组合有不同。其中一个类作为另一个类的成员变量,默认情况下时双向关联的。如果时单向关联,需要由箭头指向被包含方单向关联UML表示为: Java代码表示:public class Customer{ private Address address; /* ....... */}public cl...
2018-04-24 23:56:27 1066
原创 Java中的接口与抽象类的区别
抽象类抽象类的作用与C++类似,不能实例化。只能通过子类继承,再进行实例化。一般是为了确定一种统一的抽象格式。// 定义的抽象类abstract class AbsClass{ abstract void myName(); // 一个抽象方法 void print(){ System.out.println("play method !"); ...
2018-04-24 22:03:12 308
原创 Android使用Intent完成活动之间的通信
假设我们由一个活动FirstActivity,作为主活动,并且这个活动加载了一个布局,该布局上有一个按键名称为Button1,id为button_1 现在,转到这个活动的源码文件上:public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bund...
2018-04-22 21:32:14 563
原创 浏览器对象
本文来自廖雪峰的Javascript教程window表示浏览器窗口,一些属性查表解决navigator表示浏览器信息 - navigator.appName:浏览器名称; - navigator.appVersion:浏览器版本; - navigator.language:浏览器设置的语言; - navigator.platform:操作系统类型; - navigat...
2018-04-19 12:36:22 298
原创 Qt与HTML/JavaScript网页端通信和调用
QWebChannel类QWebChannel弥补了C++与HTML/JavaScript直接通信的空白。Qt内部自带了qwebchannel.js文件,只要浏览器端支持该js文件,就可以完成相互通信。在通信时,需要在浏览器端的HTML文件中引用该文件。 常用函数: 注册用的函数: void QWebChannel::registerObject(const QString &i...
2018-04-19 12:05:52 3237 1
原创 Qt无法使用webengineview的解决方案
开发环境:Ubuntu18.04 Qt5.9.4 在.pro文件中添加:QT += webenginewidgetsQT += webengine打开终端,输入:sudo apt-get install qtwebengine5-dev qtpositioning5-dev注意,在qt5.6以及以后的版本中,webkit控件已经不在支持了,因此在UI设计栏中,不要使用QW...
2018-04-18 13:47:27 12071 4
原创 基于C++/Qt带有界面的四则运算生成程序
开发环境操作系统:Ubuntu16.04 开发语言:C++ 开发环境:Qt Creator 4.0.2 ,Based on Qt 5.7.0 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 bit)需求分析这是一个软件工程作业,题目要求如下: 1. 能够自动生成四则运算练习题 2. 可以定制题目数量 3. 用户可以选择运算符 4. ...
2018-04-16 12:54:05 903 1
原创 数据链路层
使用点对点信道的数据链路层封装成帧:把网络层的IP数据报添加首部和尾部后封装成帧。 透明传输:无论什么样的比特组合的数据,都可以按照原样无差错的通过数据链路层差错检验:通过有关算法处理比特差错。点对点协议PPPPPP协议是用户计算机和ISP进行通信是所使用的数据链路层协议。 使用广播信道的数据链路层局域网的数据链路层广播信道可以一对多通信,主要在局域...
2018-04-06 21:49:12 184
原创 区块链中的Merkle树
简单的Hash函数介绍在进入Merkle树之前,先简单地介绍一下哈希函数。假设有下面的哈希函数: value=Hash(value1,value2)value=Hash(value1,value2)value=Hash(value_1,value_2) 其中,valuevaluevalue是一个定长的数值,作为输入value1value1value_1和value2value2value_...
2018-04-06 18:00:07 5129 2
原创 区块链中的基础数据结构
区块区块/Block区块是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和之前一个区块哈希值的数据结构,区块经过网络的共识机制验证并确认区块中的交易。父块/Parent Block父块是指区块的前一个区块,区块通过早去块头记录区块以及父块的哈希值来在时间上排序。区块头记录当前区块的元信息,包含当前版本号、上一区块的哈希值、时间戳、随机数、Merkl...
2018-04-06 16:21:30 3739
原创 计算机网络简介
计算机网络的组成边缘部分由所有互联网上的主机组成,用户直接使用的,进行通信和资源共享。主机之间的通信是指一个主机的某个进程与另一个主机上的进行进行通信。主机通信分为两种方式: 客户-服务器方式:客户是服务请求方,服务器是服务提供方。是传统的中心化交易的架构模式。客户与服务器上分别运行这客户程序和服务器程序。 客户程序: 1. 必须知道服务器程序的地址 2. 不需要...
2018-04-06 14:06:21 941
原创 区块链基础
区块链的简介:区块链不是一个单一的、全新的技术,它是多种技术整合的结果;区块链的四大核心技术分别是:数据结构、分布式存储、加密算法、共识机制。区块链可以理解成一个分布式的数据存储仓库,该仓库是去中心化的。去中心化的一个非常重要的特征是:网络中的所有数据不是由单一的结点存储,并且网络中发生的交易也不是由该节点进行认证的。数据机构由“区块”和“链”组成。区块相当于一个数据包,这个数据包中存储了...
2018-04-06 12:53:37 1257
原创 语法分析
【问题描述】简单的语法分析程序设计【输入形式】随机输入赋值语句【输出形式】相应的四元式序列同时输出所输入的赋值语句与相应的四元式序列以作对照。【要求】采用递归下降分析程序完成(自上而下的分析)确定各个子程序的功能并画出流程图3.文法如下:编码、调试通过(C语言编写)设计3-5个赋值语句测试实例,检验程序能否输出正确的四元式;当输入错误的句子时,检验程序能够给出...
2018-04-05 20:06:18 1020 3
原创 词法分析程序
#include <iostream>#include <fstream>#include <string>#include <map>#include <queue>#include <cctype>using namespace std;map<string,int>Dict;queue&am
2018-04-05 20:04:27 310
原创 NFA转DFA程序设计
实验二:利用子集构造法实现NFA到DFA的转换【问题描述】利用子集构造法实现NFA到DFA的转换。NFA的确定化 【输入形式】NFA 参见样例。其中,第一列表示状态名,终状态用f表示;第二列和第三列分别表示输入字符a和b所到达的状态。【输出形式】DFA 参见样例。其中,第一列表示输入状态名;第二列表示重新命名的状态名,第三列和第四列分别表示输入字符a和b所到达的状...
2018-04-05 20:02:31 4906 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人