自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 线程状态

2017-09-12 15:37:37 237

原创 Java集合类总结

LinkedListQuene Deque ArrayDeque PriorityQueueSet SortedSet  HashSet TreeSetMap SortedMap TreeMap HashMap

2017-09-10 00:06:12 249

原创 Python装饰器

Python装饰器:装饰器本身是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。d

2017-09-07 17:54:40 288

原创 遍历二叉树

定义:二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点被访问一次且仅被访问一次。二叉树的遍历方式有很多,按照从左到右的习惯方式,主要有四种:1、前序遍历先访问根结点,然后前序访问左子树,再前序遍历右子树。2、中序遍历从根结点开始(注意不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。3、后序遍历从左到右先叶

2017-08-21 12:33:26 272

原创 字符串的模式匹配

简单模式匹配算法:        对主串的每一个字符作为子串开头,与要匹配的字符串进行匹配。对主串做大循环,每个字符开头子串长度的小循环,直到匹配成功或全部遍历完成为止。版本一:/* * 简单模式匹配算法 * 输入主串和子串,在主串中匹配子串所在的位置; * 如果主串存在子串,返回所在位置,负责返回-1。 * */public class Main { publi

2017-08-18 13:57:08 337

原创 白话GitHub

先说说Git与GitHub的区别Git和GitHub是两个完全不同的东西。在Git中,开发者将源代码存入名叫“Git仓库”的资料库中并加以使用。而Github则是提供Git仓库的一项服务。 也就是说,Github上公开的软件源代码全都有Git进行管理。理解Git,是熟练运用Github的关键所在。 Github与社会化编程Github这一服务创造了社会化编程的概念。随着Github的出现

2017-03-02 11:28:23 300

原创 关于c++的inline关键字

C++中支持内联函数,其目的是为了提高函数的执行效率,用关键字inline放在函数定义的前面即可将函数指定为内联函数,内联函数通常就是将它在程序中的每个调用点“内联地”展开,比如下面这个内联函数:inline int testInline(int a,int b){ return a > b ? a : b;}如果在程序中调用这个函数max(a,b),则在编译时展开为:a>b?

2017-01-07 16:40:50 268

原创 Java实参与形参

Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没

2017-01-05 09:37:11 391

原创 Java数据类型转换——数值型

Java数值型数据类型由低级到高级排序为:byte->short->int->long->float->double1、低级到高级的自动类型转换低级变量可以直接转换成高级变量。2、高级到低级的强制类型转换强制转换如:byte b = (byte)i;强制转换可能会导致精度的下降。数据类型所占空间byte8位short16位

2017-01-04 21:08:48 435

原创 Java类加载过程

类从被加载到虚拟机开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为链接(Linking):加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的

2017-01-01 20:06:41 290

原创 Java异常类

异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语言规则,jvm就会将出现的错误表示一个异常抛出。异常也是java的对象,定义java.lang.throwable作为异常父类。这些异常又包括error和exception两大类。常见的error如栈溢出。error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。

2017-01-01 01:01:54 148

原创 native关键字总结

native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如c++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其它语言来实现对底层的访问。JNI是Java本地接口(Java Native Interface),是一个本地编程接口,它是Java软件开发工具箱(JDK)的一部分。JNI允许Java代码使用以其

2017-01-01 00:16:49 207

原创 static关键字总结

static表示“全局”或者“静态”的意思,用来修饰成员变量的成员方法,也可以形成静态static代码块。1、static变量      两种变量:1)被static修饰的变量,叫静态变量或类变量;                        2)没有被static修饰的变量,叫实例变量。      对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态变量分配一次

2016-12-30 22:06:05 153

原创 final关键字总结

final关键字:1.final修饰变量,则等同于常量;2.final修饰方法中的参数,称为最终参数;3.final修饰类,则类不能被继承;4.final修饰方法,则方法不能被重写;注意:A.接口和抽象类不能是final的,它们需要被实现和继承;B.重载和重写要区分开,父子之间是重写,同一个类里面是重载,final修饰的子类没发重写,而不是重载。

2016-12-30 21:12:51 178

原创 Java中Scanner类的next()和nextLine()方法对比

next()和nextLine()都是读取字符串的方法,它们的区别主要在于:next()结束读取条件比较苛刻,读取有效字符之后,遇到空格、Tab和换行符都会终结输入。如果字符之前有空格,next()也不会读取,所以next()不会得到带有空格的字符串。如图所示,next()只会读取到AAAAAAAAAAAAA,前面和后面的空格都不会读取。nextLine()的结束条

2016-12-30 15:55:06 305

原创 Java中的大整数操作

BigInteger类封装了操作大整数的方法,使用方法如下:1.int类型或者Long类型的变量存储不了大整数,可以放在byte数组或者String中。然后用BigInteger的构造函数返回一个BigInteger对象。(BigInteger x = new BigInteger(String str))2.调用相关函数:   相加:add(BigInteger val);

2016-12-27 14:57:53 1522

原创 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。

题目描述实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。输入例子:abcdd输出例子:dd

2016-12-26 20:21:38 4443

原创 Java排序搜索利器——Arrays

Arrays类包含操作数组(排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。(需要注意的是,String类型可以看成是字符数组,所以Arrays也可以操作String类型)binarySearch( Type[] a, Type key ) : 使用二分搜索法来搜索指定类型的数组,如果它包含在数组中,则返回搜索值得索引;否则返回一个负值(该负值=(-(插入

2016-12-22 16:24:40 186

原创 String转int的几种常用方法

String类型转int类型通常需要int的包装类Integer,该类有三个方法可以实现这种转换,分别为decode(String s)、parseInt(String s)、valueOf(String s)。那么他们有哪些不同呢?下面看看API文档中的介绍:decode(String s):将 String 解码为 Integer。接受通过以下语法给出的十进制、十六进制和八进制

2016-12-20 21:03:12 21166

转载 |、||、&、&&

| : 会检查每一个 条件的真伪,再做“或”运算 (光棍的不怕死)||: 按照条件写的顺序,直到一个为true时,后面的条件则不再检查,直接进入条件 & : 会检查每一个 条件的真伪,再做“与”运算  (光棍的不怕死)&&: 按照条件写的顺序,直到一个为false时,后面的条件则不再检查,直接跳出&是位运算符,表示按位与运算。&&是逻辑运算符,会短路。

2016-12-14 14:54:14 216

原创 递归与迭代的区别与联系

递归算法,简而言之就是一种函数调用函数自身来完成算法设计的方法。       迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一指令进行重复执行,在每次执行这组指令时,都从变量的原值推出它的一个新值。Fibonacci数列的递归实现:int Fib(int n){ int fibn; if(n==0) fibn

2016-10-15 14:13:37 685

原创 数据结构的重要性

商用程序员李申在他的博客中写到:“这么多年,我做过游戏、通信、工业控制、教育、VoIP、服务器集群等各个方向的项目,不可谓不宽”。       但是我知道的是,其实我都是在用同一种方法写程序。那就是从最底层的数据结构和算法开始做起,用最基本的C、C++语言开发。用来用去,还是那么几个数据结构,队列、堆栈,等等。       这就好比武侠小说里面的内功,内功修好了,学招式,非常容易。但如果没

2016-10-14 13:38:29 5449

原创 利用Map实现统计一组数字(字母)中每个数字(字母)出现的次数

Map的基本操作——put、get、containsKey、containsValue、size以及isEmptyimport java.util.*;public class Freq{           public static void main(String[] args){                      Map m = new HashMap ()

2016-10-09 22:37:54 2477 1

翻译 回溯法

回溯法有“通用的解题法”之称。用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的算法。回溯法以深度优先方式系统搜索问题解,适用于组合数较大的问题。用回溯法解题通常包含以下3个步骤:(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。

2016-10-09 19:20:26 267

翻译 贪心算法

顾名思义,贪心算法总是做出在当前看来最好的选择。       也就是说,贪心算法并不从整体最优上加以考虑,它所做出的选择只是在某种意义上的局部最优选择。       虽然贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题它能产生整体最优解,如单源最短路径问题、最小生成树问题。       对于一个具体的问题,怎么知道是否可以用贪心算法来解决此问题,以及能否得到问题的一个

2016-10-08 23:07:31 1120

翻译 动态规划算法的基本要素

最优子结构性质和子问题重叠性质是该问题可用动态规划算法求解的基本要素:1.最优子结构       当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。问题的最优子结构性质提供了该问题可用动态规划算法求解的重要线索。       在动态规划算法中,利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。2.重叠子问题      

2016-10-08 22:09:05 31962

原创 算法基本概念

所谓算法,就是解决问题的一种方法或一个过程。具体来讲,算法是由若干指令组成的有穷序列。算法概念并不是计算机学科独有的概念,生活到到处可见算法的应用。算法要满足4条性质:1.输入2.输出3.确定性4.有限性复杂性: 时间复杂度(T)——算法所求解问题规模n的函数               渐进时间复杂度(O)——当问题规模趋向无穷大时,算法时间复杂度的数

2016-09-22 10:42:48 346

原创 Scanner的常用方法

1.hashNext()   判断输入中是否有下一个标记,返回boolean型变量。2.next()   查找并返回下一个完整的标记,返回String型变量。3.nextLine()   此方法返回当前行的其余部分,不包括结尾处的行分割符,并查找要跳过的行。比如,当前扫描到第一行的中间数据,执行此方法后,会返回第一行剩下的所有数据,并跳到下一行行首。(注意与next()方法的区

2016-09-21 23:34:20 822

原创 巧妙利用数组下标

int[] count = new int[10000];for(int i =0; i       ++count[scanner.nextInt()];}

2016-09-21 23:10:23 775

空空如也

空空如也

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

TA关注的人

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