自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 String与StringBuffer以及StringBuilder的区别

String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改

2017-02-20 21:50:27 364

原创 剑指Offer题目JAVA版思路与代码(九)

第三十二题:把数组排成最小的数 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路: 可以给出一个新的定义:两个数a、b,如果ab>ba,则定义a大于b,反之,则a小于b;根据此定义将数组中的所有数从小到大排序,然后依序组合成的数字就是最小数字。

2017-02-13 10:52:22 563

原创 剑指Offer题目JAVA版思路与代码(八)

第二十九题:最小的k个数 题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路: 有一个时间复杂度是o(nlog(k))的方法,需要用到最大堆,用k个单位的空间换取时间效率,并且适用于大数据,然而对于这个题目并没有太大的必要。 所以下面介绍一种时间复杂度为o(n)的方法,就是借鉴快速排序方法,寻找最小的

2017-01-26 14:59:16 697

原创 剑指Offer题目JAVA版思路与代码(七)

第二十五题:复杂链表的复制 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 第一步:扫描原链表,把复制的结点就连在原结点的后面;例如:(原链表)A->B->C —–> A->A’->B->B’->

2017-01-24 23:30:40 365

原创 剑指Offer题目JAVA版思路与代码(六)

第二十一题:栈的压入、弹出序列 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 思路: 首先判断第二个序列中的数字是否在栈顶,如果

2017-01-21 22:45:07 407

原创 剑指Offer题目JAVA版思路与代码(五)

第十五题:反转链表 题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 思路: 由于在做指针反转的过程中,对于结点i,需要知道它前一个结点h来作为反转后的下一个结点,以及后一个结点j来继续推进。 代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) {

2017-01-20 23:32:47 368

原创 剑指Offer题目JAVA版思路与代码(四)

第十二题:树值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路: 这个题目主要的考点一是base, exponent都有0,负数,正数的情况,二是base的exponent次方可以用o(logN)的时间复杂度计算得到。 代码:public class Solution { public do

2017-01-19 22:27:39 356

原创 剑指Offer题目JAVA版思路与代码(三)

第七题:斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39。 思路: 传统思路都是用递归思路,虽然递归的思路虽然思路清晰,代码简洁,但是利用递归的写法计算重复太多,所以当n变大之后,时间呈指数地增长。所以这个题目利用循环的思路时间复杂度是o(n),先计算f(1),f(2),然后利用前两个数再计算f(3),依次类推,计算f(n)。

2017-01-18 22:22:35 716

原创 剑指Offer题目JAVA版思路与代码(二)

第四题:重建二叉树 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 这个题目考的是二叉树遍历相关的知识点。二叉树常见的遍历方式有三种,分别是前中后序。前序的遍历顺序是:根节点-左子树-

2017-01-17 12:03:50 406

原创 剑指Offer题目JAVA版思路与代码(一)

第一题:二维数组中的查找 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 如题所述,可以发现右上角的数字是一行中最大的,又是这一列中最小的,那么我们可以从右上角开始查找。如果当前查找的数字小于target,删除当前行;如果当前查找数字大于target,则

2017-01-14 21:48:54 389

转载 Mysql导出表结构及表数据 mysqldump用法

命令行下具体用法如下: mysqldump -u 用户名 -p 密码 -d 数据库名 表名 脚本名;1、导出数据库dbname的表结构(其中用户名为root,密码为dbpasswd,生成的脚本名为db.sql)mysqldump -uroot -pdbpasswd -d dbname > db.sql;2、导出数据库为dbname某张表(test)结构mysqldump -u root -p

2017-01-05 20:20:22 10347

原创 二叉树的非递归遍历

学过数据结构的同学都知道二叉树有三种常见的遍历方式,分别为前序遍历、中序遍历、后序遍历,而且这三种遍历的方式的递归编程都比较好写,然而他们的非递归遍历则不是那么的容易。下面就介绍一下树的三种遍历的非递归写法。前序遍历遍历顺序是:根节点->左儿子->右儿子// code oneprivate void nonRecursivePreOrder(BinaryNode<Integer> t) {

2016-11-28 22:27:49 321

原创 几个二叉树概念的辨析

对以下三种二叉树进行以下概念的辨析,当然也是参考了网上大神的说法。 完全二叉树 设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。如下图: 理想二叉树 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的树称为理想二叉树。高度为h(从0开始算起)且包含2^(h+1)-1个节点的二叉树是理想二叉树

2016-11-27 22:57:28 520

原创 JAVA中Collection和Collections的区别

1.java.util.Collection 是一个集合接口。 它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。以下接口实现了Collection接口: map,set,list,vector下图是collection接口定义的方法(截自jdk1.7官方文

2016-11-27 22:46:24 18073 15

原创 python如何解析包含不同编码的字符串

问题的描述 有个同学从网上下了一个数据包,是一个dat结尾的文件。读取出来的时候发现是GB2312的编码,但是当用GB2312去解码的时候还是遇到了问题。似乎有个别的字节解析不了。最后发现是字符串中的一个空格的编码并不是GB2312。那么问题来了,怎么做到正确解析这样的字符串呢?问题的发现with open('./news_sohusite_xml.dat', 'r') as f: for

2016-11-18 22:36:45 1417

原创 python 读取大文件

以前一直没有关注过python读取大文件的问题,因为一直都是顺顺畅畅地读取了文件。直到今天有人问我python怎么读取文件出现了内存不足的错误?我才发现原来大文件(GB级别)的读取和普通文件的读取是不一样的。下面介绍三种我亲测可用的方法。这里的文件类型可以是txt,dat等类型的文件。用read(size)方法用iter和yield分段分段地读用with open()方法一read(size

2016-11-18 21:44:14 1998

原创 论windows装gensim的艰辛历程

由于windows没有包管理器,所以既不能yum,也不能brew,所以新手装个gensim是如此的艰辛,此处省去一万字。。。。。。 写一篇记叙文记录一下windows下,如何绕过千坑,快速安装gensim及依赖库的过程。安装环境操作系统:win 7 64位,python版本:2.7.6主要需要安装的东西Numpy+mkl Scipy gensim安装过程附上神奇的网站一个:http://www

2016-09-28 14:48:39 1116

原创 十分钟搞定Openresty安装

分享一个Openresty简单粗暴的安装方法。 步骤1: wget http://dl.yooooo.us/build/ubuntu/openresty/openresty_1.9.7.4-1_amd64.deb http://dl.yooooo.us/build/ubuntu/libssl1.0.2_1.0.2g-1%2Bdeb.sury.org~trusty%2B1_amd64.de

2016-09-04 16:32:34 1576

原创 python 多线程与多进程的简单测试比较

想必对接触过python的朋友都知道,python的多线程由于历史原因有一个GIL,并不是真正的多线程。所以查了些许资料亲自跑了下程序比较了下。 测试环境 macbook pro, 双核四线程,i5处理器。 比较对象单线程多线程多进程 执行的任务都是耗cpu型的任务单线程# thread_test.pyimport randomimport threadingdef li

2016-08-16 23:46:05 1647

转载 IO - 同步,异步,阻塞,非阻塞

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不

2016-07-04 17:24:04 420

原创 python2x的str/unicode转换以及python3x中的str/bytes转换

Python2x中的str/unicode转换写在开头 为什么哪里都会出现编码问题,而编码问题总是那么难搞懂?我想在读这篇博客前大家都应该深刻地了解下为什么会出现所谓的编码问题?字符的十六进制表达 首先,我们在ULtraEdit中做个试验 图一:我们先用记事本保存了“中文”二字,然后以ANSI编码格式保存后用ULtraEdit打开,再转成十六进制编辑环境后就可以看到“中文”二字用A

2016-03-07 17:45:31 6878 2

原创 TCP组包问题及处理方法

TCP组包问题及处理方法问题的表述原因的剖析发送端处理方法接收端处理方法总结问题的表述问题的背景是这样的:有一个系统,那有后台服务器,也有移动端的客户端。当客户端上线时,服务器会将指定的数据库的数据发送给客户端,客户端解析后呈现。但是,有一天客户端开发跟我反映一个奇怪的问题:之前客户端一上线就收到服务器发来的数据,现在客户端收到了数据,但是解析出问题了。但是前后端的代码都没有改啊,只是

2016-03-05 18:10:44 11697 5

原创 MySQL Varchar的新认识

MySQL中的char,varvhar以及text类型一直是需要被搞清楚的一回事,他们之间的大致的区别在网上都有。我查了以后发现对于varchar,网上说的是最大长度为65535个字节(网上说MySQL5.0.3之后才有,5.0.3之前varchar的最大值并没有那么大,这个说法我并没有去求证),于是我试了下,结果发现直接把varchar的最大值调到65535是不行的,还需要考虑两个规则:

2016-02-24 14:13:08 616

原创 Android的发布与更新

前言在网上找了好久都没有找到一个具体到能够让我这样的小白了解整个Android App自动更新的教程,所以在搞定了App的更新问题后我打算写一篇博客记录一下整个操作过程。准备工作需要知道Android APK怎么生成这个我想百度一搜一大把,我也是查了教程后在dos环境下生成了一个用来签名的keystore,然后直接在eclipse里导出了一个APK。

2015-10-23 14:46:11 909

转载 java 中Array和Arraylist的区别

1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”。2)Array([]):最高效;但是其容量固定且无法动态改变;     ArrayList:  容量可动态增长;但牺牲效率;3)建议:基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!不过当你试着解决更一般化的问题时,Array的功能就可能过于受限

2015-09-26 00:54:51 442

转载 死锁产生的原因及四个必要条件

产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件

2015-09-23 01:02:34 542

空空如也

空空如也

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

TA关注的人

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