- 博客(15)
- 收藏
- 关注
原创 如何实现GoF《设计模式》一书中备忘录模式的例子?
背景 如图,这是GoF的《设计模式》一书第五章中Memento备忘录模式动机一节的例子。 应用介绍摘自Gang of Four的《设计模式》第五章行为型模式的备忘录模式: 例如,考虑一个图形编辑器,它支持图形对象之间的连线。用户可用一条直线连接两个矩形,者两个矩形仍能保持连接。在移动过程中,编辑器自带伸展这条直线以保持该连接。 完成效果 原书没有给出实现代码,所以我基于Java语言实现一个。 可拖拽任意一个矩形移动位置。可按Ctrl+Z撤销操作,回到图形上一次的位置。下面有完整代码和注释,读者可先
2020-10-07 23:40:29
229
原创 Gof设计模式中介者模式The quick brown box实现详解
动机 如图,这是Gof《设计模式》一书第五章中Mediator中介者模式动机一节的例子。 原文: 考虑一个图形用户中对话框的实现。对话框使用一窗口来展现一系列的窗口组件,如按钮、菜单和输入域等。如下图。 实现效果 这是我的实现效果。 点击font choose按钮,弹出对话框界面。 选择效果后,点击确定。 文本区域的字体已改变。 完整代码 简要思路: 我们自定义两个类 FontChooser 和 FontChooserDialog 。 FontChooserDialog 继承自 JDialog,
2020-09-25 22:54:34
365
原创 抽象工厂和单例模式能结合吗?
因为工厂类这个东西用来生成产品。那么一般我们只留一个工厂类使用就好了。那我们来尝试一下结合单例模式的抽象工厂。 首先定义一个抽象工厂。这里抽象工厂的类图 产品系列代码 public interface Product { public void makeSerivice(); } public class AProduct implements Product { @Override public void makeSerivice() { System.out.
2020-09-14 21:53:26
1496
转载 C++单例抽象工厂模式
#include <iostream> #include <memory> #include <stdexcept> #include <string> using namespace std; class Scrollbar; class WindowFactory { public: static void setFactory(std::string const&); static Scrollbar* createScro
2020-09-14 21:34:24
368
原创 位运算的使用小技巧
对于位运算的学习,可以通过位运算替换一些常用操作的使用场景来学习,如奇数偶数判断、两个变量交换、实现加法。如果面试官要求不能使用常规的方法解决,那我们如何想起一些清奇的思路呢?位运算也能起到同样乃至性能更好的效果。 1.奇数偶数判断 1 2 3 4 5 if(n %2 ==1){ //是奇数odd }else{ //是偶数even } 可以使用&位运算 1 ...
2020-08-30 16:10:45
306
原创 HeadFirst设计模式第11章代理模式设计谜题>>ImageProxy类似乎有两个有条件语句控制的状态
问题来自HeadFirst设计模式第11章代理模式468页的设计谜题: ImageProxy类似乎有两个有条件语句控制的状态,你能否用另一个设计模式清理这样的代码?你要如何重新设计ImageProxy? 思路: 我们可以使用状态模式:实现两个状态,分别是ImageLoaded和ImageUnloaded。然后把if语句内的代码放进去各自的状态中。一开始的状态是ImageLoaded,当ImageIcon取回后就转换道ImageLoaded状态。 下面是自己写的一段参考代码 State类 扩展Ico.
2020-08-30 15:42:14
246
原创 android notification pendinintent issue wrong 3rd argument type
在我的app中,我在第一次使用notification的时候出现错误。 报错:android notification pendinintent issue wrong 3rd argument type 下面的报错截图 分析:我只需要把PendingIntent.getActivity() 改为 PendingIntent.getActivities() 下图为官方文档 ...
2020-01-17 21:22:21
767
原创 划重点——线性代数考试精准扶贫
考试满分攻略。懂的人已经懂了。对于大学生来说,大学考试是非常套路化的。复习的基本调子是到了复习周,对于每科,收集复习资料后,能重复复习三遍就好了。有句话说:practice make perfect。重复带来完美。我第一次复习大概花费三四天,再看一次,发现自己几个小时梳理完了知识。最后再看一次,十几分钟搞定。重复又简单,高效复习完还可以发发博客。这篇笔记是我**最后一次看的提炼**出来的笔记。供同学们参考。也供自己回顾。加油!欧里给!
2020-01-09 09:26:54
1060
原创 【理论】关系代数——更轻松地与人交流你的查询语言
关系代数概述 定义 首先我们由代数引出: 已知代数定义:操作运算符(如加减乘除)和它的原子操作数就是集合形式 这是传统的代数 那么,关系代数就是:基于一组一以关系为操作对象的运算符,它的原子操作数是 关系实例变量和元组集合常量(如{ ‘1’,‘Julian’}集合的东西, 关系 指的是在n个属性列组成一行,产生联系。 元组 指的是 一行 属性 指的是一列 关系代数运算符分为两类: 传统的集合...
2020-01-03 20:33:52
1105
原创 【理论】怎么设计一个好的数据库?——关系模式的规范化设计
在前面学习了数据库的多表查询语言后,有没有考虑过这些数据库是怎么设计的呢? 既然做笛卡尔积的多表连接那么费时间,为什么不直接全部都作为一个表来查询呢? 总而言之,我们来判断什么是好的数据库关系模式?并自己也能设计出来! 先回答一个问题,为什么不直接全部都作为一个表来查询呢? 答案是会造成 数据冗余,更新异常,数据不一致啦~ 所以解决了上面三个点,就是一个好的数据库关系模式 前面讲关系模式的概念时...
2020-01-02 21:38:52
1238
原创 手动输入数据麻烦?试试用命令行进行数据更新
本文讲解数据库增删改常用命令行操作。供大家查阅并通过简单例题快速掌握上手 插入元组 语句格式: INSERT INTO <表名> [(<属性名1>[,<属性名2>,...])] VALUES (<常量1>[,<常量2>,...]); 常量值与相应属性名值域相同,个...
2020-01-01 22:01:54
454
原创 【进阶】分组查询玩法——GROUP BY的使用
语法规范:[GROUP BY <属性列名1>[,<属性列名2>,…][, HAVING<组选择条件表达式>]] 依次按属性列名1,…进行分组 HAVING子句对分组进行筛选 聚集函数将以每一份组的元组为计算对象 秒懂例子: 查询平均成绩在90分以上的学生学号和平均成绩 SELECT SNO, AVG(GRADE) FROM SC GROUP BY ...
2020-01-01 21:22:01
480
原创 【进阶】多个表怎么查询?——连接查询的用法
多表连接查询 查询选修课程号为“C01”的学生姓名和成绩 SELECT SN,GRADE FROM SC,S WHERE CNO='C01' AND SC.SNO=S.SNO; 外连接查询 FROM <左关系> LEFT | RIGHT | FULL [OUTER] JOIN ON <连接条件> 外连接主要作用是保留悬浮元组,OUTER 可省 说明:...
2019-12-31 22:28:22
572
原创 常用的SQL语法查询规则
一个完整的数据查询语句的格式 SELECT [ALL | DISTINCT] <目标列表达式1>[,目标列表达式2>,…] FROM<表名或视图名1>,[,<表名或视图名2>,…] [WHERE <元组选择条件表达式>] [GROUP BY <属性列名1>[,<属性列名2>,…][, HAVING<组选择条件表达式...
2019-12-24 19:22:22
820
原创 【从零开始设计一个数据库】基本表的定义
基本表的定义基本表的创建用户定义完整性定义基本表的修改增加列或表约束规则修改原有列的类型基本表的删除删除原有的列或约束规则 基本表的创建 最简单的创建数据库语句——CREATE DATABASE <数据库> 打开数据库——USE <数据库名> 基本表创建的一般格式: CREATE TABLE <表名> ( <属性名1><数据类型>[列级完...
2019-12-23 23:07:46
1276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅