自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

转载 数据结构和算法分析之排序篇--归并排序(Merge Sort)和常用排序算法时间复杂度比较(附赠记忆方法)

归并排序的基本思想归并排序法是将两个或以上的有序表合并成一个新的有序表,即把待排序序列分成若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。注意:一定要是有序序列! 归并排序实例: 合并方法:设r[i……n]由两个有序子表r[i….m]和r[m+1……n]组成,两个子表长度分别为m-i+1、n-m。 1. J=m+1 ;k=i ; I=i ; 置两个子表的起始...

2018-09-08 22:06:38 1631

转载 递归树求解递归算法的时间复杂度(看这篇博客看懂的)

递归算法时间复杂度的计算方程式一个递归方程:    在引入递归树之前可以考虑一个例子:  T(n) = 2T(n/2) + n2  迭代2次可以得:  T(n) = n2 + 2(2T(n/4) + (n/2) 2)  还可以继续迭代,将其完全展开可得:  T(n) = n2 + 2((n/2) 2 + 2((n/22)2 + 2((n/23) 2 + 2((n/24)...

2018-09-08 22:04:20 25863 1

转载 算法导论------递归算法的时间复杂度求解

文章总结的很好,为了尊重版权。附上链接https://blog.csdn.net/so_geili/article/details/53444816#3.3

2018-09-08 22:03:05 281

转载 C语言中结构体变量到底占多大空间

 很久之前就想将内存对齐这块儿知识点总结记录下来,无奈本人患有very very严重的拖拉症,直到今天才下决心将这件事儿解决掉,废话不多说了,开工!(ps:本人所用编译器version为 gcc Ubuntu4.9.2-10 ubuntu13 4.9.2)        结构体到底占多大的空间呢?先看一下下面这道题的输出结果:#include<stdio.h> typed...

2018-09-07 21:56:30 4634

原创 字符串反转--句子反转和单词反转

#include <iostream>using namespace std;//所有单词反转void allReverse(char s[]){ int i=0,j=strlen(s)-1;//别忘了减1 char temp ; while(j > i){ temp = s[i];s[i]=s[j];s[j]=temp; j--; i++; } c...

2018-08-23 23:06:19 323

转载 从输入URL到浏览器显示页面发生了什么

当在浏览器地址栏输入网址,如:www.baidu.com后浏览器是怎么把最终的页面呈现出来的呢?这个过程可以大致分为两个部分:网络通信和页面渲染。一、网络通信    互联网内各网络设备间的通信都遵循TCP/IP协议,利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。分层由高到低分别为:应用层、传输层、网络层、数据链路层。发送端从应用层往下走,接收端从数据链路层网上走。如图...

2018-08-23 22:39:55 196

转载 互联网公司校招Java面试题总结及答案——美团

因为有很多是重复的,所以其他的请参看我的总结系列文章:互联网公司校招Java面试题总结及答案——京东( 百度Java面经)互联网公司校招Java面试题总结及答案——百度(目前只是部分总结)--------------------------------------我自己的三面面经-----------------------------------------------一面:1.了解面...

2018-08-23 22:00:24 4214

转载 单链表就地逆置的两种方法(递归与普通循环)

//1.用递归算法,对于不带头结点的单链表(a1,a2,a3,a4,a5,a6)逆置后的结果为(a6,a5,a4,a3,a2,a1)//考虑递归算法,若只有一个结点,则直接返回,若存在两个结点(a1,a2)则需要做的操作有:      a2->next=a1;a1->next=NULL;return a2;//a2即新的头结点,若有三个结点,则应先将子链(a2,a3)先逆置且返回该...

2018-08-23 21:37:14 6298

转载 CAS原理分析

一、锁机制 常用的锁机制有两种:1、悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。悲观锁的实现,往往依靠底层提供的锁机制;悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。2、乐观锁:假设不会发生并发冲突,每次不加锁而是假设没有冲突而去完成某项操作,只在提交操作时检查是否违反数据完整性。如果因为冲突失败就重试,直到成功为止。乐观锁大多是基于数据版本记录机...

2018-08-22 21:35:38 116

转载 Java并发编程:volatile关键字解析

 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先...

2018-08-22 21:11:20 95

转载 Spark为什么比Hadoop快?

最近在招聘面试的时候,往往听到应聘者在介绍Spark的时候,通常拿Spark官网案例Spark和Hadoop做比较。当我问到为什么Spark比Hadoop快时候,得到的答案往往是:Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。果真如此吗?事实上,不光Spark是内存计算,Hadoop其实也是内存计算。Spark和Hadoop的根本差异是多个任务之间的...

2018-08-22 15:45:34 2340 2

原创 交互两个数(不引入第三个变量)

#include <stdio.h> ...

2018-08-22 15:05:27 236

原创 快速排序

快速排序,顾名思义,是一种速度快,效率高的排序算法。快排原理:        在要排的数(比如数组A)中选择一个中心值key(比如A[0]),通过一趟排序将数组A分成两部分,其中以key为中心,key右边都比key大,key左边的都key小,然后对这两部分分别重复这个过程,直到整个有序。        整个快排的过程就简化为了一趟排序的过程,然后递归调用就行了。        一趟...

2018-08-08 11:12:11 183

转载 面试必备:常用的设计模式总结

单例模式 简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧public class Singleton { priv...

2018-08-06 16:20:28 380

转载 MapReduce二次排序

**答:**先了解下二次排序吧,在MapReduce操作时,我们知道传递的<key,value>会按照key的大小进行排序,最后输出的结果是按照key排过序的。有的时候我们在key排序的基础上,对value也进行排序。这种需求就是二次排序。数据处理分为四个阶段:(1)Mapper任务会接收输入分片,然后不断的调用map函数,对记录进行处理。处理完毕后,转换为新的<key,valu...

2018-07-26 23:14:46 161

转载 Java事务处理总结

Java事务处理总结一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该...

2018-07-26 23:10:48 104

转载 JVM入门——运行时数据区

jdk1.7.0_79   这张图我相信基本上对JVM有点接触的都应该很熟悉,可以说这是JVM入门的第一课。其中的“堆”和“虚拟机栈(栈)”更是耳熟能详。下面将围绕这张图对JVM的运行时数据区做一个简单介绍。程序计数器(Program Counter Register)  这和计算机操作系统中的程序计数器类似,在计算机操作系统中程序计数器表示这个进程要执行的下个指令的地址,对于JV...

2018-07-26 22:19:49 125

转载 JVM常见垃圾回收算法

jdk1.7.0_79  众所周知,Java是一门不用程序员手动管理内存的语言,全靠JVM自动管理内存,既然是自动管理,那必然有一个垃圾内存的回收机制或者回收算法。本文将介绍几种常见的垃圾回收(下文简称GC)算法。  在Java堆上分配一个内存给实例对象时,此时在虚拟机栈上引用型变量就会存放这个实例对象的起始地址。Object obj = new Object();   现在...

2018-07-26 21:51:54 276

转载 常用垃圾回收算法

今天我关于常见的垃圾回收算法来做个总结,我们最常听到的是Java虚拟机里的垃圾回收机制,其实垃圾回收的概念最先并不是Java里首先提出来的,垃圾回收这个概念很早就已经被提出来了,并且已经在其他语言中得到了应用。      关于垃圾回收的机制,这里不再解释,这篇文章我主要介绍常见的垃圾回收算法,当然还有其他的。算法一:引用计数法。            这个方法是最经典点的一种方法。...

2018-07-26 21:40:20 134

转载 sql优化的几种方法

在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t ...

2018-07-26 20:28:08 145

转载 MySQL中四种常用存储引擎的介绍

MySQL常用的四种引擎的介绍(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表支持3种不同的存储格式,分别是:静态表;动态表;压缩表静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多...

2018-07-24 23:00:54 102

转载 Mysql存储引擎 _MyISAM、InnoDB

一、 MySQL存储引擎MyISAM与InnoDB如何选择MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是两个。...

2018-07-24 22:54:57 66

转载 你对spring是如何理解的?

这是面试时经常被问到的问题,在此做一些整理:1.Spring是对j2EE诸多功能进行封装了的一个工具集;它的核心就是提供了一种新的机制来管理业务对象及依赖关系;具体就是控制反转、依赖注入,Aop(面向切面)。  Spring的底层实现机制是用Demo4j 解析XML文件,使用反射机制实例化bean。2.SpringIOC ,其实就是依赖注入、控制反转。相当于把每个bean与bean之间...

2018-07-24 22:32:35 522

转载 快速失败(fail-fast)和安全失败(fail-safe)的区别

1.fail-fast和fail-safe比较Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。快速...

2018-07-24 22:29:02 482

转载 Java提高篇(三四)-----fail-fast机制

在JDK的Collection中我们时常会看到类似于这样的话:        例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失败...

2018-07-24 22:16:20 72

转载 HashMap和Hashtable的区别

HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java...

2018-07-24 22:02:57 91

转载 java中fail-fast 和 fail-safe的区别

原文地址:http://javahungry.blogspot.com/2014/04/fail-fast-iterator-vs-fail-safe-iterator-difference-with-example-in-java.html在我们详细讨论这两种机制的区别之前,首先得先了解并发修改。1.什么是同步修改?当一个或多个线程正在遍历一个集合Collection,此时另一个线程...

2018-07-24 21:58:58 382

转载 构建二叉树并求其深度

/*题目描述:输入:第一行为整数n(n >= 2),表示二叉树节点总数后面带n-1行,每行为整数a和整数b的输入格式,a表示父亲节点,b表示a的一个子节点输出:二叉树的深度示例输入:50 10 21 31 4输出:3*/ #include <iostream>#include <cstdio>using namespace std...

2018-07-24 20:25:17 1380

转载 Hive中Sqoop的基本用法和常见问题

一、通过Sqoop将Hive表数据导入到Mysql1、第一种是将hive上某张表的全部数据导入到mysql对应的表中。2、第二种是将hive上某张表中的部分数据导入到mysql对应的表中。两种方式的区别在于第二种情况需要指定要导入数据的列名称。两种情况的导入方式分别如下:1.全部导入Sqoop export --connect jdbc:mysql://127.0.0.1:33...

2018-07-24 20:14:34 2337

原创 100阶乘后有多少个0

思路:对于大数据问题应考虑是否会溢出,先看看5的阶乘有1个0, 10的阶乘有2有0,  遇到5就会产生1个0,  10本身有1个0,照这样到100就是有5,10,15,20,25,30,35.。。。95,100,共产生21个0,但25=5*5    ,50=5*5*2 ,    75=5*5*3,都含有2个5所以还要加3次就是24个0代码:#include <stdio.h&g...

2018-07-24 19:49:03 844

转载 Java中的值传递和引用传递

理解Java中的值传递和引用传递,形参和实参1. 两大数据类型以及特殊的String8种基本数据类型  int char byte boolean long short float double 对象类型  1、8种基本数据类型的包装类型  2、数组等  3、定义的对象 特殊: String2. 两大引用类型基本类型 对象的引用  这两者是有区别的基本类型 对...

2018-07-22 23:22:34 115

原创 Java包装类、自动装箱与拆箱知识总结

因为在学习集合时知道集合里存放的对象都是Object类型,取出的时候需要强制类型转换为目标类型(使用泛型集合不需要),如int a = (Integer)arrayList.get(0);然后我们就会发现,为什么要强制转换为Integer,而不是int呢?int与Integer有什么区别呢?1、基本类型与包装类区别int是基本类型,直接存数值;如:int i = 5;//直接在栈中分...

2018-07-22 23:08:24 289

转载 C++ 值传递、指针传递、引用传递详解

最近写了几篇深层次讨论数组和指针的文章,其中提到了“C语言中,所有非数组的形式参数传递均以值传递形式”数组和指针背后——内存角度语义"陷阱"---数组和指针而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实...

2018-07-22 22:15:45 93

转载 一步一步写数据结构(二叉树的建立和遍历,c++)传地址引用

简述:二叉树是十分重要的数据结构,主要用来存放数据,并且方便查找等操作,在很多地方有广泛的应用。二叉树有很多种类,比如线索二叉树,二叉排序树,平衡二叉树等,本文写的是最基础最简单的二叉树。思路:二叉树的建立采用的是递归的思想:给定一个指向根节点的指针,然后递归调用ceate()函数,自动生成一个二叉树。就像是在地上挖了个坑(根节点),然后他会拿着铲子(create函数)按照一定的规...

2018-07-22 21:21:20 383

转载 多线程中的ThreadLocal 详解

要了解ThreadLocal,首先搞清楚ThreadLocal 是什么?是用来解决什么问题的?ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问, 通常是类中的 private static 字段,是对该字段初始值的一个拷贝,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联我们知道有时候一个对象的变量会被多个线程所访问,这时就会...

2018-07-22 15:30:23 115

转载 ThreadLocal用法详解和原理

一、用法ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。1、ThreadLocal.get: 获取ThreadLocal中当前线程共享变量的值。2、ThreadLocal.set: 设置ThreadLocal中当前线程共享变量的值。3、ThreadLoc...

2018-07-22 00:03:56 454

转载 Java并发编程:深入剖析ThreadLocal

Java并发编程:深入剖析ThreadLocal  想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。  以下是本文目录大纲:  一.对ThreadLocal的理解  二....

2018-07-21 23:50:22 97

转载 Java弱引用(WeakReference)的理解与使用

看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, 20多个拥有5年以上java开发经验的面试者中, 只有两人知道weak reference的存在, 而其中...

2018-07-21 23:28:49 1353

原创 java递归实现阶乘factorial

public class jiecheng { static int result=1; public static int jiecheng(int n) { if (n==1) { return 1; } else return n*jiecheng(n-1); // if (n>0) {// result = result*...

2018-07-19 22:01:03 832

转载 京东2018秋季校招——括号匹配

import java.util.Scanner;import java.util.Stack; /** * 京东2018秋招Android * 括号匹配方案 * 合法的括号匹配序列被定义为: * 1. 空串""是合法的括号序列 * 2. 如果"X"和"Y"是合法的序列,那么"XY"也是一个合法的括号序列 * 3. 如果"X"是一个合法的序列,那么"(X)"也是一个合法

2018-07-19 21:42:32 233

HugeChm.rar

chm,电子书制作软件,多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加

2016-09-13

空空如也

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

TA关注的人

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