自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tanyujing的专栏

无论你犯了多少错,或者你进步得有多慢,你都走在了那些不曾尝试的人的前面。

  • 博客(92)
  • 资源 (1)
  • 收藏
  • 关注

原创 公钥和私钥

公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。用电子邮件的方式说明一下原理。      使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:      1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。      2. 必须保证是我发送的邮件,不是别人冒充我的。      要达到这样的目标必须发送邮件的两人都有公钥和

2013-12-16 10:27:36 130634 11

转载 单例模式的常见应用场景

单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一。这里又不具体讲如何实现单例模式和介绍其原理(因为这方便的已经有太多的好文章介绍了),如果对单例模式不了解的可以先看下:http://terrylee.cn

2013-11-05 09:21:10 92051 1

原创 linux apt-get

常用的APT命令参数:   apt-cache search package 搜索包   apt-cache show package 获取包的相关信息,如说明、大小、版本等   sudo apt-get install package 安装包   sudo apt-get install package - - reinstall 重新安装包   sudo

2013-10-24 22:12:33 2907

原创 Linux rpm

RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。常用命令组合: -ivh:安装显示安装进度--inst

2013-10-24 22:04:55 2079

原创 ssh连接的时候出现Host key verification failed.

今天在服务器上执行远程操作命令出现以下的问题:[root@www ~]# ssh 205.209.161.**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSS

2013-09-02 18:09:50 2363

原创 linux sed

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed [-nefri] ‘command’ 输入文本        常用选项:        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般

2013-09-02 16:19:38 1763

原创 shell test用法

)判断表达式 if test  (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2                  两个表达式都为真 test 表达式1 –o 表达式2                 两个表达式有一个为真 2)判断字符串 test –n 字符串                         

2013-08-28 17:00:46 919

原创 Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell

2013-08-02 17:53:37 1022

原创 Shell脚本编程的常识

(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用)七种文件类型d            目录                                                       l             符号链接s             套接字文件                                    

2013-08-02 16:11:06 1430

原创 mysql select简单用法

1、select语句可以用回车分隔$sql="select * from article where id=1"和 $sql="select * from article     where id=1",都可以得到正确的结果,但有时分开写或许能更明了一点,特别是当sql语句比较长时2、批量查询数据可以用in来实现$sql="select * from article w

2013-07-20 15:09:46 1391

原创 前序 中序 后序 遍历 递归 非递归算法 java实现

前序遍历 非递归  public void preordernorec(TreeNode root){ //System.out.println("先序遍历(非递归):"); //用数组模拟栈,假设有节点个数不超过32个 TreeNode[] stack = new TreeNode[32]; for(int i =0;i<32;i++){ stack[i] = nu

2013-07-19 15:20:53 6449

原创 String StringBuffer StringBuilder 区别

String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结。 在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。不可变类。3.StringBuffer 也是对一串字符进行操作,但是可变类。String:是对

2013-07-18 17:37:19 1151

原创 Linux tail命令

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 1.命令格式;tail[必要参数][选择参数][文件]   2.命令功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

2013-07-18 15:01:03 897

原创 linux head命令

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。 1.命令格式:head [参数]... [文件]...  2.命令功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。 3.命令参数:-q 隐藏文件名-v

2013-07-18 14:52:02 1033

原创 Linux less命令

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的

2013-07-18 11:22:59 1044

原创 linux 下cat命令的用法

简略版:cat主要有三大功能:1.一次显示整个文件。$ cat filename2.从键盘创建一个文件。$ cat > filename     只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件: $cat file1 file2 > file参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonblank

2013-07-18 10:51:30 21699

原创 TCP time_wait状态

主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在1-4分钟。    TIME_WA

2013-07-17 19:57:00 1132

原创 常见排序算法稳定性分析

这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。      首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的

2013-07-16 17:05:24 1071

原创 get和post的区别

表单提交中Get和Post方式的区别有5点   1. get是从服务器上获取数据,post是向服务器传送数据。   2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个

2013-07-15 14:32:37 3193

原创 调整数组使奇数位元素为奇数,偶数为元素为偶数

本题为百度质量部面试题2n个数,一半奇数,一半偶数,设计一个程序让奇数位上的数是奇数,偶数位上的是偶数,并计算程序的空间复杂度和时间复杂度 程序思想:本题类似于调整数组使奇数位于数组前半部分,偶数位于数组后半部分。设两个指针,一个初始化为ou=0,另一个初始化为ji=1,如果arr[ou]为偶数,ou+=2;如果arr[ji]为奇数,ji+=2;如果oupublic c

2013-07-15 11:28:22 3835 1

原创 ping过程

“Ping”的幕后过程我们以下面一个网络为例:有A、B、C、D四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.11.在同一网段内在 主机A上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协

2013-06-29 16:50:12 4543

原创 HTTP协议通信过程

当我们在浏览器的地址栏输入“www.baidu.com”然后按回车,这之后发生了什么事,我们直接看到的是打开了对应的网页,那么内部客户端和服务端是如何通信的呢?1、     1、URL自动解析      HTTP URL包含了用于查找某个资源的足够信息,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶盖HTTP协议来定位网络资源;hos

2013-06-27 17:03:33 5843

原创 tcp/ip四次挥手协议

四次分手:由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。(2)服务器B

2013-06-26 21:29:23 5217

原创 TCP /ip三次握手协议分析

TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急

2013-06-26 21:13:57 4069

原创 linux 软连接 硬连接

1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一

2013-06-23 10:42:16 1296

原创 linux kill 进程

准备kill以下两个进程opt/IBM/WebSphere/AppServer/java/bin/javaopt/IBM/WebSphere/AppServer/java/jre/bin/java通过ps aux|grep opt/IBM/WebSphere/AppServer/java/bin/java得到进程号,再用kill-9命令,一直提示 no such process.

2013-06-04 17:28:20 1162

原创 快速排序算法是不稳定的算法

快速排序:27 23 27 3以第一个27作为pivot中心点,则27与后面那个3交换,形成3 23 27 27,排序经过一次结束,但最后那个27在排序之初先于初始位置3那个27,所以不稳定。

2013-04-18 20:24:26 3320

原创 调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。分析:如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于碰到一个偶数,需要移动O(n)个数字,因此总的时间复杂度是O(

2013-04-13 11:47:05 3863

原创 字符串的排列

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列

2013-04-13 11:22:19 1136 1

原创 求二元树的深度

题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树:                                            10                                          /     \

2013-04-11 15:37:15 1919

原创 和为n连续正数序列

题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:这是网易的一道面试题。这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移

2013-04-11 15:07:07 973

原创 在从1到n的正数中1出现的次数

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。 分析:这是一道广为流传的google面试题。用最直观的方法求解并不是很难,但遗憾的是效率不是很高;而要得出一个效率较高的算法,需要比较强的分析能力,并不是件很容易的事情。当然,google的面试题中简单的也没有几道。首先我们

2013-04-10 16:58:10 1161

原创 栈的push,pop序列

题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,

2013-04-10 14:57:17 6560

原创 JDBC中使用事务编程步骤

1.关闭自动提交事务Connection conn = DriverManager.getConnection("链接url","用户名","密码");conn.setAutoCommit(false);2.捕获(try/catch)执行代码,如果执行过程顺利,提交事务;一旦发生异常,回滚事务,示意代码如下try{conn.setAutoCommit(false);stmt

2013-04-09 21:10:00 7064

原创 JDBC操作数据库的编程步骤

//第一步,注册驱动程序Class.forName("数据库驱动的完整类名");//第二步,获取一个数据库的连接Connection conn = DriverManager.getConnection("连接URL","用户名","密码");//第三步,创建一个会话Statement stmt=conn.createStatement();//第四步,执行SQL语句,增加

2013-04-09 20:55:04 1431

原创 java中Vector、ArraryList和LinkedList的区别

List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储

2013-04-04 11:03:22 5095

原创 根据前序中序序列重建二叉树

在编程 过程中遇到的问题,跟java的值传递机制有关,先了解下java的值传递机制。当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?    答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改

2013-04-03 20:30:12 1272

原创 根据二叉树的前序和中序构建二叉树

有了二叉树的前序和中序或者中序和后序遍历序列就可以利用这些信息来重构一棵二叉树了,这是编程之美3.9里面的一个题目。java实现中遇到的难点:java的值传递机制当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?    答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中

2013-04-03 14:55:31 5408

原创 求二叉树中节点的最大距离递归解法

问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。代码实现中二叉树用的是完全二叉树import java.util.LinkedList;public class Test_3_8 { public static int maxlen=0; public s

2013-04-02 16:39:39 4343

原创 生产者消费者模拟程序

//模拟生产者消费者,生产者(Producter类)生产窝头(WoTou类),放入一个大筐(stack类),消费者(Consumer类)从大筐中取出窝头并打印窝头的idpublic class producconsumertest { /** * @param args */ public static void main(String[] args) { Stack ss =

2013-03-31 21:32:55 1768

背包九讲完整版

第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背包问题问法的变化 附:USACO中的背包问题

2013-03-19

空空如也

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

TA关注的人

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