- 博客(212)
- 资源 (15)
- 问答 (4)
- 收藏
- 关注
原创 数据结构-归并排序
java实现归并排序算法源代码public class MergeSort extends DataCrol { // 合并两个已排好序的数组A[left...mid]和A[mid+1...right] void merge(int A[], int left, int mid, int right) { int len = right - left +...
2018-03-07 15:29:31
629
原创 数据结构-快速排序
java实现快速排序源代码public class QuickSort extends DataCrol { /** * 优化 * * @param array * @param left * @param right * @return */ int partition3(int[] array, ...
2018-03-07 15:28:18
294
原创 数据结构-希尔排序
java实现希尔排序算法源代码public class ShellSort extends DataCrol { @Override public void sort(int[] array) { int h = 0; int size = array.length; while (h <= size) {// 生成...
2018-03-07 15:26:51
323
原创 数据结构-堆排序
java实现堆排序算法源代码public class HeapSort extends DataCrol { private void heapify(int A[], int i, int size) { // 从A[i]向下进行堆调整 int leftChild = 2 * i + 1; // 左孩子索引 int rightChild =...
2018-03-07 15:25:00
231
原创 DFS,BFS 深度优先遍历,广度优先遍历
java实现DFS,BFS算法源代码 图的结构java实现public class DFSAndBFS { /** * BFS 只能遍历连通图 * * @param graph 图 * @param i 起始访问下标 * @param flag 访问标记数组 * @param queue 访问队列 ...
2018-03-07 15:21:46
311
原创 Prim(最小生成树)
java实现Prim算法源代码 图的结构java实现 Prim需要图是连通图,生成的图一定是一棵树,而Kruskal可能生成森林 Primpublic class Prim { private static final int INF = Integer.MAX_VALUE; /** * 初始化距离矩阵 * * @param gra...
2018-03-07 15:18:44
203
原创 Kruskal(最小生成树)
java实现Kruskal算法源代码 图的结构java实现 Kruskalpublic class Kruskal { private static final int INF = Integer.MAX_VALUE; /** * 初始化距离矩阵 * * @param graph 图 * @return 距离矩阵 ...
2018-03-07 15:12:58
180
原创 Floyd(多源最短路径)
java实现Floyd算法源代码 图的结构java实现Floydpublic class Floyd { private static int INF = Integer.MAX_VALUE; public static void floyd(GraphMatrix graph) { int vertexNum = graph.getVertex...
2018-03-07 15:09:43
436
原创 Dijkstra 单源最短路径
java实现Dijkstra算法源代码 图的结构Java实现Dijkstrapublic class Dijkstra { private static final int INF = Integer.MAX_VALUE; /** * 初始化距离矩阵 * * @param graph 图 * @return 距离矩阵 ...
2018-03-07 15:06:19
248
原创 数据结构-图
java实现图的数据结构源代码图的顶点,Vertexpublic class Vertex<E> { //到该顶点的边列表 List<Edge> edgeList = new ArrayList<>(); E value; public Vertex(E value) { this.value = v...
2018-03-07 14:56:22
191
原创 设计模式--解释器模式
Java工程源码 类图 定义 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表 示来解释语言中的句子 优点 - 扩展性好,修改语法规则只要修改相应的非终结符表达式就可以了 缺点 - 容易引起类膨胀。每个语法都要产生一个非终结符表达式 - 采用递归方法,不易调试 - 效率问题。大量使用了循环和递归 注意事项
2017-12-29 14:29:16
217
原创 设计模式--中介者模式
Java工程源码 类图 定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互– 优点 - 减少类间的依赖,把原有的一对多的依赖变成了一对一的依赖,降低了类间耦合性– 使用场景 适用于对象之间紧密耦合的情况。实际中的应用如MVC框架(Struts(Controller)就是一个中
2017-12-28 19:01:13
427
原创 设计模式--访问者模式
Java工程源码 类图 定义 封装一些作用于某种数据结构中的各元素操作,它可以在不改变数据结构的前提下 定义作用于这些元素的新的操作 优点 - 符合单一职责原则 Element子类和visitor职责分离 - 优秀的扩展性 - 灵活性非常高 缺点 - 具体元素对访问者公布细节 - 具体元素变更比较困难 - 违背了依赖倒
2017-12-28 18:37:28
195
原创 设计模式--状态模式
Java工程源码 类图 定义 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类 优点 - 结构清晰 - 遵循设计原则。很好的体现了开闭原则和单一职责原则 - 封装性非常好 缺点 - 子类会很多,每个状态都有一个子类 使用场景 - 行为随状态改变而改变的场景 - 条件,分支判断语句的替代者 注意事项 状
2017-12-28 18:10:10
182
原创 设计模式--备忘录模式
Java工程源码 类图 定义 在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。 这样以后就 可将该对象恢复到原先保存的状态 使用场景 - 需要保存和恢复数据的相关状态场景 - 提供一个可回滚操作 - 需要监控的副本场景中 - 数据库连接的事务管理就是用的备忘录模式 注意事项 备忘录的性能:不要在频繁建立备份的场
2017-12-28 17:45:29
183
原创 设计模式--命令模式
Java工程源码 类图 定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能 优点 - 类间解耦 调用者Invoker与接受者receiver之间没任何依赖关系,调用者不需要了解到底哪个接收者执行 - 可扩展性 command子类可非常容易的扩展 - 命令模式结合其他模式会更
2017-12-28 17:30:59
189
原创 设计模式--责任链模式
Java工程源码 类图 定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。 将这些对象连成一条链,并沿着这条链传递该请求,知道有对象处理它为止 优点 - 将请求和处理分开,两者解耦,提高系统灵活性 缺点 - 性能问题 每个请求都是从链头遍历到链尾,链比较长时,存在性能问题 - 调试不方便 因为采
2017-12-28 14:15:52
181
原创 设计模式--迭代器模式
Java工程源码 类图 定义 提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节 优点 - 它支持以不同的方式遍历一个聚合对象。 - 迭代器简化了聚合类。 - 在同一个聚合上可以有多个遍历。 - 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。 缺点 - 由于迭代器模式将存储数据和遍历数据的职责
2017-12-28 10:20:42
203
原创 设计模式--模板方法模式
Java工程源码 类图 定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 优点 - 封装不变部分,扩展可变部分 - 提取公共部分代码,便于维护 - 行为由父类控制,子类实现 缺点 - 根据习惯,抽象类负责声明最抽象,最一般的事务属性方法,实现类完成具体的事物属性和方法
2017-12-28 09:40:10
212
原创 设计模式--策略模式
Java工程源码 类图 定义 定义一组算法,将每个算法封装起来,并且使它们之间可以互换 优点 - 算法可以自由切换 - 避免使用多重条件判断 - 扩展性良好 缺点 - 策略类数量增多 每个策略一个类,复用的可能性很小,类数量增多 - 所有的策略多需要对外暴露 使用场景 - 多个类只有在算法或行为上稍有不同的场景
2017-12-28 09:11:27
200
原创 设计模式--享元模式
Java工程源码 类图 定义 使用共享对象可有效地支持大量的细粒度的对象 优点 - 大大减少应用程序创建的对象,降低程序内存的占用,增强程序的性能 缺点 - 提高了系统的复杂性,需要分离出外部状态和内部状态 使用场景 - 系统中存在大量相似对象 - 细粒度的对象都具备较接近的外部状态,且内部状态与环境无关 - 需要缓冲池的场景 注
2017-12-27 19:49:13
225
原创 设计模式--组合模式
Java工程源码 类图 定义 将对象组合成树形结构以表示部分 - 整体的层次结构,使得用户对单个对象和组合对象的使用具有一致性 优点 - 高层模块调用简单 高层模块不必关心自己处理的是单个对象还是整个组合结构 - 节点自由增加 缺点 - 场景类中,树枝和树叶使用时都需用起实现类,与依赖倒置原则冲突,没有面向接口编程 使用场景 -
2017-12-27 19:26:14
168
原创 设计模式--外观模式
Java工程源码 类图 定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供 一个高层次的接口,使得子系统更易于使用 优点 - 减少系统的相互依赖。所有的依赖都是对门面对象的依赖,与子系统无关。 - 提高了灵活性。不管子系统内部如何变化,只要不影响门面对象,任你自由活动 缺点 - 不符合开闭原则:对修改关闭,对扩
2017-12-27 19:00:52
185
原创 设计模式--代理模式
Java工程源码 类图 定义 为其它对象提供一种代理以控制对这个对象的访问 优点 - 职责清晰 真实的角色就是实现的业务逻辑,不用关心其他非本指责的事务 - 高扩展性 具体主题角色不管怎么变化,只要它实现了接口,代理类完全可以在不做任何修改的情况下使用 - 智能化 动态代理是最好的体现,即在运行阶段才指定实际代理对象(Struts如何把表
2017-12-27 18:36:46
217
原创 设计模式--原型模式
Java工程源码 类图 定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 优点 - 性能优良 原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环内产生大量对象时 - 逃避构造函数的约束 直接在内存中拷贝,构造函数不会执行 使用场景 - 资源优化场景 类初始化需要消耗非常多的资源时 - 性能
2017-12-27 16:29:14
158
原创 设计模式--工厂方法模式
Java工程源码 类图 定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工程方法使一个类的实例化延迟到其子类 优缺点 - 良好的封装性,代码结构清晰。调用者只需知道产品类名,不必知道创建对的过程,降低了模块间的耦合 - 扩展性优秀。在新增产品的情况下,适当修改具体工厂类或扩展一个工厂类即可 - 屏蔽产品类。产品类的实现如何变化,调用者无需关心
2017-12-27 14:14:37
189
原创 设计模式--观察者模式(发布订阅模式)
Java工程源码 类图 定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新 优点 - 观察者和被观察者之间是抽象耦合。如此,则不管是增加观察者还是被观察者都易扩展 - 建立一套触发机制 观察者模式可以完美地实现链条形式 缺点 - 一个被观察者,多个观察者,开发和调试比较复杂 -
2017-12-26 19:40:03
630
原创 设计模式--装饰器模式
Java工程源码 类图 定义 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活 优点 - 装饰类和被装饰类可以独立发展,而不会相互耦合 - 装饰模式是集成关系的一个替代方法,不管装饰多少层,其实现的还是 is-a 关系 - 装饰模式可以动态地扩展一个实现类的功能 缺点 - 多层装饰比较复杂 使用场
2017-12-26 19:36:32
188
原创 设计模式--适配器模式
Java工程源码 类图 定义 将一个类的接口变换成客户端期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够一起工作 优点 - 适配器角色可以让两个没有任何关系的类在一起运行 - 增加了类的透明性, target 目标角色具体实现委托给了源角色,这对高层模式是透明的 - 提高了类的复用度,源角色在原有系统中还是可以正常使用 -
2017-12-26 19:31:21
235
原创 设计模式--建造者模式
Java工程源码 类图 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 优点 - 封装性 使用建造者模式可使客户端不必知道产品内部组成的细节 - 建造者独立,容易扩展 - 便于控制细节风险 由于具体的建造者是独立的,因此可对建造过程逐步细化,而不对其它模块产生影响 使用场景 - 相同的方法,不同的执行顺序,产生不同
2017-12-26 19:28:27
202
原创 设计模式--单例模式
单例模式Java工程源码 类图 定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 优点: - 内存中仅一个实例,故减少了内存开支 - 由于只生成一个实例,故减少了系统性能开销(如读取配置,产生依赖对象等,利用常驻内存的方式,仅生成一个对象 - 可以避免对资源的多重占用(如只有一个实例存在,避免对同一资源文件同时写操作) 缺
2017-12-26 19:19:54
212
原创 设计模式--抽象工厂模式
抽象工厂模式Java工程源码 类图 定义 - 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类 优缺点 - 优点:封装性,每个产品的实现类不是高层模块要关心的,它要关心的是接口或抽象类 - 缺点:产品族扩展非常困难,严重违反开闭原则 使用场景 - 一个对象族都有相同的约束 注意事项 - 抽象工厂模式,产品族扩展困难,但产品等
2017-12-26 19:05:45
198
原创 设计模式--桥梁模式
桥接模式Java工程源码 类图 定义 - 将抽象和实现解耦,使得两者可以独立地变化 优点 - 抽象和实现分离 - 优秀的扩充能力 不管是增加抽象还是实现,都很容易 - 实现细节对客户透明 使用场景 - 不希望或不适合使用集成的场景 - 接口或抽象类不稳定的场景 - 重用性要求较高的场景 设计的颗粒度越细,则被重用的可能性就越大实现
2017-12-26 18:47:46
203
原创 git基本使用
刚刚发了篇svn基本使用,顺手还是把git的也写了吧。毕竟git才是主流。git和svn的一个区别就是svn是集中式的而git是分布式的,所以svn在局域网环境还可以,在互联网上的话就不是很好用了。首先我们要在电脑上安装git环境,这个就不多说了。 安装完成后,我们可以进行一些基本的配置。如配置用户名和邮箱$ git config --global user.name "BobbyGu"$ gi
2017-12-21 19:17:35
163
原创 svn的基本使用
svn是一个比较老的代码管理工具,最近我们通常使用基本都是git,所以svn的使用比较生疏,最近项目上用svn时出现了代码管理混乱的问题,我在这里记录下svn的trunk、tags、branches的使用。需要的软件TortoiseSVN官网创建代码仓库新建一个文件夹CodeSpace,在CodeSpace文件夹下,右键->TortoiseSVN->Create repos
2017-12-21 18:09:29
232
原创 Google Architecture Components 使用
architecture components使用google新推出的Android 架构组件,目标是帮助我们设计更好、可测试和可维护应用程序。它可以自动管理UI组件生命周期,也能处理数据持久化的问题。现在的稳定版本是1.0 官网地址 Demo项目地址环境编译器:Android Studio3.0开发语言:kotlin接入接入方式还算比较简单 在Project的build.gradle添
2017-12-21 14:27:59
344
原创 WEEX,一次撰写,多端运行
最新体验了下WEEX,这是一个使用js语法编写客户端程序的框架。我们可以使用vue.js编写代码。 vue语法 demo 效果展示: 这个展示效果app使用的是我本地的tomcat提供服务,服务端源码:码云 - 首先 web 开发体验在各端当中是相同的。包括语法设计和工程链路。 - 其次,Weex 的组件、模块设计都是 iOS、Android、Web 的开发者共同讨论出来的,有一
2017-12-14 19:59:13
926
原创 python自动化测试android项目
androidandroid uiautomator在sdk/tools/bin文件夹下,有一个uiautomatorviewer.bat 点击即可启动 需要注意的是adb连接问题,可以尝试下面命令adb kill-server在cmd中输入命令:netstat -ano|findstr "5037",查看5037端口占用情况, tasklist|findstr xxxx输入adb devic
2017-12-07 18:37:34
639
原创 解决android4.2以下addJavaScriptInterface不安全问题
问题描述android js和原生互相调用会产生安全问题,WebView addJavaScriptInterface 远程代码执行漏洞概述Android 系统通过WebView.addJavascriptInterface 方法注册可供JavaScript 调用的Java 对象,以用于增强JavaScript 的功能。但是系统并没有对注册Java 类的方法调用的限制。导致攻击者可以利用反射机制调用
2017-12-06 16:21:37
3351
文件名批量修改器
2012-11-24
genymotion模拟器 摄像头启用后 画面是横着的
2016-07-25
DatePickerDialog 显示方式是MMDDYYYY ,如何改成YYYYMMDD
2015-02-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人