Dawn-K's Blog

「From ashes to the empire」

「软件工程-设计模式」 单例模式

单例模式 概述 单例模式是说处于某种原因, 我们只能初始化一个对象, 然后在程序中都是引用这对象, 而不能创建新对象. 实现 线程不安全的懒汉式 首要的条件是将构造函数设置为私有, 然后当且仅当 getInstance 被调用且还未曾初始化过对象的时候, 才创建一个对象. 这个实现方法简单, 但是线程不安全, 也就是如果有两个线程紧跟着调用了if那一句的话, 就会产生两个对象. ...

「软件工程-设计模式」 建造者模式

建造者模式 知乎参考资料 概述 当一个类特别复杂时(比如构造函数有很多参数且有一些可选参数), 考虑建造者模式. 建造者模式的一种简单实现是使用建造者类通过一系列set的链式调用来构建一个复杂的对象. 比如电脑, 其有多个必选属性, 也有一些可选属性. 由于Java本身不支持默认参数, 导致构建很复杂(可以使用重叠构造器, 但是也不够优雅). 实现方法 我们将 Computer...

「软件工程-设计模式」 工厂模式

工厂模式 [toc] 简单工厂模式 假设我们要制造小米和苹果的笔记本, 我们声明一个 Computer 抽象类, 然后派生 MiComputer 和 MacComputer 两个子类. 但是直接用new的话, 就无法将装配工作统一接口. 维护起来就会很麻烦. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public abstract class Compu...

「Linux」 Shell

Shell [toc] 概述 Shell 是提供给用户的用以访问操作系统服务的程序. sh(Bourne Shell)是一个早期的重要shell, 1978年由史蒂夫·伯恩编写, 并同Version 7 Unix一起发布. bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell.1987年由布莱恩·福克斯创造. 主要目标是与POS...

「android」 网络

网络 原生http 界面 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <Button android:id="@+id/send_request" android:layout_width="match_parent" android:layout_height="wrap_content" android:tex...

「CodeNote」 STL常用组件

STL常用组件 [toc] 函数 fill 需要 algorithm fill速度和手动for赋值基本相同 1 2 3 4 // 将a在[2,5)区间赋值为3 fill(a+2,a+5,3); // 相比于memset, 它可以赋值任何数, 也可以对容器使用. fill(v.begin(),v.end(),5); 黑科技 自定义hash 网上流行的一个简单实现如下 1 2...

「android」 多媒体

多媒体 [toc] 通知 书上的代码有一点过时, 所调用的方法的参数已经被废弃了. 如果想在自己手机测试的话一定要在应用的设置中打开此应用的通知提示以及声音开关 首先新建一个按钮, 名为 send_notice 然后新建一个活动, 名为 NotificationActivity , 里面随便写个 TextView , 作为点击通知后的显示界面 1 2 3 4 5 6 7 8 9 1...

「Java」 面向对象

面向对象 接口与抽象类的区别 语法区别 1)抽象类可以提供成员方法的实现细节, 而接口中只能存在 public abstract 方法; 2)抽象类中的成员变量可以是各种类型的, 而接口中的成员变量只能是 public static final类型的; 3)接口中不能含有静态代码块以及静态方法, 而抽象类可以有静态代码块和静态方法; 4)一个类只能继承一个抽象类, 而一个类却可以...

「android」 MVC

MVC 概述 MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型可以对于多种视图模型. 而控制器就是为了保证数据一致. 这个与观察者模式相同. 视图层(View) 视图代表模型包含的数据的可视化。 控制层(Controller) 它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。控制业务逻辑的实现...

「android」 内容提供器

内容提供器 权限 以拨号(之前是打开拨号界面, 此处是指直接拨号)为例分析权限申请和使用的过程. 还是基于Intent, 和之前一样, 给一个按钮增加点击的监听器, 重载onClick, 写入如下内容. 为防止权限被拒绝时程序崩溃, 所以此处需要捕获异常. 1 2 3 4 5 6 7 8 try { // DIAL 是 打开拨号界面, CALL 是直接拨号,必须申请权限 ...