自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spark基本工作原理

1、分布式 2、主要基于内存(少数情况基于磁盘) 3、迭代式计算与MapReduce进行比较:总结:每一批节点上的每一批数据,实际上就是一个RDD,一个RDD是分布式的,所以数据都散落在一批节点上了,每个节点都存储了RDD的部分partition。

2017-01-20 22:35:37 403

原创 Scala基础语法2

1、数组操作之Array、ArrayBuffer以及数组的遍历 (1)Scala数组底层实际上就是Java数组 (2)Array:长度不可变 (3)ArrayBuffer:长度可变(添加(+=)、添加其他集合的全部元素(++=)、trimEnd函数、insert()函数、remove函数) (4)Array与ArrayBuffer的相互转化(a.toArray、b.toBuffer) (5

2016-12-29 23:31:42 332

原创 Scala语法学习

1、Scala与Java的关系2、Scala解释器(REPL)3、变量声明:val(其值不可变)、var(其值可变)4、函数调用与apply()函数5、Scala的条件控制与循环 (1)if表达式–类型推断(Any、Unit等) (2)scala无for循环,但是有简易版的,也可以使用until,增强的for循环 (3)while do循环6、scala函数入门 (1)定义和调用 (2)函

2016-12-29 23:22:18 329

原创 大数据学习-Spark前世今生

1、大数据体系结构概览: (1)注意Spark可代替Hadoop的哪些部分2、Spark整体架构 Spark Streaming:实时计算 GraphX:图计算 MLlib:机器学习3、Spark 与 MapReduce的计算模型比较 4、Spark SQL 与 Hive比较5、Spark Streaming 与 Strom 比较

2016-12-29 23:04:55 847

原创 线性查找算法

线性查找主要分以下三种情况: (1)线性查找 (2)二分查找(折半查找) (3)分块查找(1)线性查找 在待查数据中进行顺序性轮询查找,当存在待查的数据时返回当前数据索引位置,如果不存在则返回不存在表示-1平均查找长度: 1/2(n+i) 计算方式:为当前元素查找到的概率乘上所匹配的次数时间复杂度: O(N)Java代码实现:public class 线性查找 { public s

2016-11-16 20:56:42 5928 1

原创 约瑟夫环问题

约瑟夫环:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。 从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数, 数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。JAVA代码实现/** * * @param totalNum 总人数 * @param countNum 报数大小 */ public

2016-11-16 17:03:55 300

原创 求最大公约数--递归法实现

求最大公约数:public static int gcd(int m, int n) { if(m % n == 0) { return n; } else { return gcd(n, m%n); } }m,n最小公倍数为:m*n/gcd

2016-11-16 16:58:36 414

原创 快速求幂算法

举个栗子:3 ^ 999 = 3 * 3 * 3 * … * 3直接乘要做998次乘法。但事实上可以这样做,先求出2^k次幂:3 ^ 2 = 3 * 3 3 ^ 4 = (3 ^ 2) * (3 ^ 2) 3 ^ 8 = (3 ^ 4) * (3 ^ 4) 3 ^ 16 = (3 ^ 8) * (3 ^ 8) 3 ^ 32 = (3 ^ 16) * (3 ^ 16) 3 ^ 64 = (3

2016-11-16 16:31:26 444

原创 动态规划--走台阶问题

问题描述 一个人上台阶,台阶有n级,他可以一次上1级,可以一次上2级,也可以一次上3级,问上这个n级的台阶一共有多少种上法。问题分析 首先我们先归纳分析一下一些比较简单的情况: 如果台阶只有1级,那么他一次就可以上去,很显然,上法只有1种; 如果台阶有2级,那么他可以1-1,也可以直接上到2级,这时一共有2种上法; 如果台阶有3级,那么他可以1-1-1,可以1-2,可以2-1,也可以直接上

2016-11-16 10:46:53 4053

原创 动态规划--求最大连续子串之和

给定由n个整数(可能为负整数)组成的序列A1,A2,A3,…,An,求该序列的连续子段的和的最大值。 例如 {-4, 11,-2, 13,-7,-3,12} 的最大子段和为24JAVA代码实现:package com.example;public class 最大连续子串之和 { /** * @param args */ public static void

2016-11-15 23:08:27 1885

原创 动态规划算法

一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策

2016-11-15 17:17:37 209

原创 二分查找算法(递归与非递归实现)

二分查找递归实现的原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程。递归查找的代码实现:/** * 递归方法实现二分查找法. * @param Array数组 * @param low 数组第一位置 * @param

2016-11-15 17:01:31 613

原创 分治算法--汉诺塔问题

一、问题描述 1.有三根杆子A,B,C。A杆上有若干碟子 2.每次移动一块碟子,小的只能叠在大的上面 3.把所有碟子从A杆全部移到C杆上二、问题分析 将A盘中的若干个盘子分为两部分,下面一个,和上面的全部两个部分。将上面的全部盘子借助C转移到B,将A的最后一个转移到C,最后B中的借助A转移到C即可。 由上面的分析,得出是一个递归的过程。三、用JAVA代码实现之package com.exa

2016-11-15 16:47:02 2355

原创 分治算法--大整数乘法

大整数乘法:就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大范围,此时如果需要得到精确结果,就不能常规的使用乘号直接计算了。没错,就需要采用分治的思想,将乘数“分割”,将大整数计算转换为小整数计算。 可以通过列表的形式来进行大整数的乘法,通过数组来保存列表中的数据。结合http://blog.csdn.net/tjsinor2008/article/details/5625849计算87

2016-11-15 16:30:04 7563

原创 分治算法

一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……二、基本思想及策略分治法的设计思想是:将一个难以直接解决的大问题,分割成一

2016-11-15 15:46:02 773

原创 匈牙利算法

匈牙利算法:基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。例子:N男N女的婚配问题。http://blog.csdn.net/dark_scope/article/details/8880547这就是匈牙利算法的流程,其中找妹子是个递归的过程,最最关键的字就是“腾”字 其原则大概是:有机会上,没机会创造机会也

2016-11-15 15:26:51 300

原创 JAVA多线程编程总结

http://lavasoft.blog.51cto.com/62575/27069/

2016-11-15 13:54:00 254

原创 8大排序算法

http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html

2016-11-10 15:05:15 214

原创 JDBC事务控制管理

一、事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 例如:A——B转帐,对应于如下两条sql语句 update from account set money=money-100 where name=‘a’; update from account set money=money+100 where name=‘b’; 数据库默认事务是自动提交

2016-10-06 11:15:40 281

原创 JavaWeb之Cookie_Session

一、cookie机制和session机制的区别具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择,比如说重写 URL和隐藏表单域。二、会话cookie和持久cookie的区别如

2016-10-03 16:56:07 1194

原创 javaweb之request_response

1、可以通过request API 获取客户机的信息 e.g.:获取当前访问资源路径 : request.getRequestURI().substring( request.getContextPath().length()); 获取请求方式:request.getMethod();2、获取信息头内容// 获得所有头信息内容 ---- 获得所有头信息名称 Enumerati

2016-10-02 19:45:19 348

原创 XML解析

三种常见的解析方式: 1、JAXP DOM 解析 2、JAXP SAX 解析 3、XML PULL 进行 STAX 解析XML 技术主要企业应用 1、存储和传输数据 2、作为框架的配置文件使用xml 存储和传输数据 1、通过程序生成xml 2、读取xml 中数据 —- xml 解析什么是DOM和SAX ? DOM Document Object Model —– 文档对象模型

2016-10-01 22:08:37 348

原创 面向对象设计强化

1.面向对象的设计原则 单一职责原则、开闭原则、里氏代换原则 、依赖倒置原则、接口隔离原则、合成/聚合复用原则、迪米特法则 (1)单一职责原则(SRP) 一个类,只有一个引起它变化的原因 如果一个类有一个以上的职责,这些职责就耦合在了一起 当一个职责发生变化时,可能会影响其它的职责 多个职责耦合在一起,会影响复用性 SRP中,把职责定义为“变化的原因” 将业务规则和持久化的

2016-10-01 19:22:35 243

原创 集合对象与常用数据结构性能分析

1.数组的回顾与排序 基本类型的数组 对象数组 java.util.Arrays Comparable接口数组的不足之处: 容量不能自动调整 查找效率低 可采用Arrays.binarySearch方法,但必须实现Comparable接口 binarySearch方法本身的效率也不高2.泛型 (1)泛型(Generic)是参数化类型的能力 可以在类,接口或者方法中声明一个泛型类型

2016-10-01 18:59:58 256

原创 多线程编程和网络编程入门

1.进程和线程的区别 (1)进程: 资源管理的最小单位 独立的内存空间 包含一个或多个线程 (2)线程: 程序执行的最小单位 拥有独立的栈空间 (3)进程类(Process) (4)线程体(Java的线程是通过java.lang.Thread类来实现的每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体(即线程的可执行代码))

2016-10-01 11:15:14 3388

原创 I/O编程强化

1.流及其意义 流的概念使得文件、网络、内存等设备可以被统一处理2.字节输入输出流 (1)字节输入流基类InputStream 常用读取数据方法 int read():从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法) int read(byte b[]):读多个字节到数组中,填满整个数组 int read(byte b[], int off, int l

2016-10-01 10:11:10 212

原创 Java设计模式--状态模式

状态模式【State Pattern 】状态模式以电梯的状态转变为例。 先看下最初的类图设计。当然这样子的设计实现起来很简单。如果再加上某个所处的状态能过渡到的状态呢?这时候就要考虑各个状态的相互转化了。有了这张表再来设计一下类图:定义如下的接口:public interface ILift { //电梯的四个状态 public final static int OPENING_S

2016-07-31 17:57:15 405

原创 Java设计模式--访问者模式

访问者模式【Visitor Pattern 】以打印公司员工的信息报表为例。下面先看下类图。使用了一个模版方法模式,把所要的信息都打印出来。这样子写出来的代码就不太符合公司不同管理层的需要,不能满足各自的需求。每个普通员工类和经理类都一个方法 report,那是否可以把这个方法提取到另外一个类中来实现呢。最初的类图如下:两个类中都有report()方法,那么再进行一些改善。这样子就将report()

2016-07-31 17:14:56 281

原创 Java设计模式--责任链模式

责任链模式【Chain of Responsibility Pattern 】以古代妇女三从(未嫁从父、既嫁从夫、夫死从子)为例。先看下刚开始的类图:古代悲哀女性:public interface IWomen { //获得个人状况 public int getType(); //获得个人请示,你要干什么?出去逛街?约会?还是看电影 public String get

2016-07-31 16:21:48 634

原创 Java设计模式--观察者模式

观察者模式【Observer Pattern 】观察者模式以秦国时期李斯监视韩非子为例。先看下类图:被观察者:public interface IHanFeiZi { //韩非子也是人,也要吃早饭的 public void haveBreakfast(); //韩非之也是人,是人就要娱乐活动 public void haveFun();}被观察者的实现类:publi

2016-07-31 15:39:48 389

原创 Java设计模式--组合模式

组合模式【Composite Pattern】组合模式以公司各个阶层的不同职能为例来进行展开。先看下最初的类图:倘若程序这样子设计,出现三个接口,然后再搞实现类,最后程序肯定是一大坨。从程序的简洁性和抽象性来看,显然不合理,比如说一些方法是可以提炼出来当抽象方法的,提升抽象的抽象性。再看一下更改后的类图:这样子的设计就将根节点也视为树枝节点,都有自己的子节点,这样的设计利用了他们之间的共性,当然接口

2016-07-31 14:46:38 409

原创 Java设计模式--迭代器模式

迭代器模式【Iterator Pattern 】 迭代器可以解决一些遍历的问题。那我们以老总查看公司项目信息为例。先看下最初的类图。上面的类图可以完成老总的需要,下面使用迭代器的方式来进行。看下类图:IProject 可以定义如下:public interface IProject { //增加项目 public void add(String name,int num,int c

2016-07-31 11:23:38 289

原创 Java设计模式--装饰模式

装饰模式【Decorator Pattern】 装饰模式顾名思义就是将程序装饰进行装饰完成我们所想要的效果。山寨手机需要装饰,我们的程序有时候也需要进行装饰。 下面以向家长汇报分数让家长签字为例。先看下最初的类图。倘若这样子直接拿给老爸看(直接汇报成绩,要签名),那岂不是要挨板子。对于差生来讲,还得先装饰一下好。 下面再看一下改善后的类图。这样子设计的话,就可以在report()方法中做点手脚

2016-07-31 10:55:52 287

原创 Java设计模式--命令模式

命令模式【Command Pattern 】 以公司做项目为例,一个项目的完成需要不同的项目组进行合作,先假设客户与每个项目组进行讨论,最后执行任务。这个项目主要是进行增删改查。 先看类图:Group类设计如下:public abstract class Group { //甲乙双方分开办公,你要和那个组讨论,你首先要找到这个组 public abstract void find

2016-07-30 21:10:28 280

原创 Java设计模式--桥梁模式

桥梁模式【Bridge Pattern 】 以公司生产产品为例子。一个房地产公司,一个山寨公司,山寨公司什么好赚就生产什么。我们先进行这样的设计。看类图:公司Crop先定义如下:public abstract class Corp { /* * 是公司就应该有生产把,甭管是什么软件公司还是制造业公司 * 那每个公司的生产的东西都不一样,所以由实现类来完成 */

2016-07-30 20:21:03 595

原创 Java设计模式--建造者模式

建造者模式【Builder Pattern 】 在模板方法模式时用到了公司生产马车的例子。这里继续,客户有了新的要求,就是能够控制基本方法的执行顺序。 先看一下类图:定义一个车辆模型的抽象类,所有的车辆模型都继承这个类public abstract class CarModel { //这个参数是各个基本方法执行的顺序 private ArrayList<String> sequ

2016-07-30 19:38:38 313

原创 Java设计模式--模板方法模式

模板方法模式先看一下通用的类图: 其中 TemplateMethod 就是模板方法,operation1 和 operation2 就是基本方法,模板方法是通过汇总或排序基本方法而产生的结果集。 这样看可能会很枯燥,来个具体的例子先。某公司生产不同的车子,见下面的类图: 有四个基本的方法还有一个模板方法。模本方法在抽象类中做实现。当然这个模板方法也称为具体方法,因为其在抽象类中进行了实现。其他

2016-07-30 17:17:55 341

原创 JAVA设计模式--适配器模式

适配器模式 适配器可以借助生活的例子理解:你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是这个适配器能够把这些不同的电压转换为你需要的 36V 电压,保证你的笔记本能够正常运行。 下面看看适配器的通用类图:Target 是一个类(接口) ,Adaptee 是一个接口,通过 Adapter 把 Ad

2016-07-30 16:30:02 188

原创 Java设计模式--门面模式

门面模式 该模式以写信送信为例。最初的类图如下: 刚开始的情况是要依次序的执行LetterProcess这四个步骤,那么如果有一个步骤不能完成,那么就不算完成这个过程,最后的代码如下:完全体现不出高内聚的设计要求。public class Client { public static void main(String[] args) { //创建一个处理信件的过程 Let

2016-07-30 11:56:05 314

原创 Java设计模式--简单工厂模式与抽象工厂模式

简单工厂模式 以女娲造人为例。下面是类图。 步骤: 1、先定义接口人2、不同的人种实现人这个接口,并实现接口中的方法3、定义一个生产人的工厂: Human createHuman(Class c) 传入要生产的人种对应的类,即可进行生产相应的人种。 human =(Human)Class.forName(c.getName()).newInstance(); //产生一个人种4、在主类

2016-07-30 10:46:53 268

Thinking in java第四版课后习题答案

Thinking in java(第四版)是一本经典教材,现在有了源码,学习更有动力了吧。

2015-11-13

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

TA关注的人

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