
Java
yilip
追求优秀,成功就追随你........
展开
-
摇号中签生成随机号
在现在很多类似于股票市场的交易中,很多项目发行都需要进行申购,等到申购结束,进行摇号,根据中签尾号确定每个用户的中签数量。如果用户U1购买了10个产品,那么他申购的产品尾号就是10000001到10000010,用户U2再购买5个,那么U2的产品尾号10000011到10000015。现在假如发行项目A,发行量为12345,申购量为675893。随机生成中签尾号:package com原创 2016-05-05 14:10:22 · 5843 阅读 · 1 评论 -
数据结构之二叉堆(构建堆,堆排序)-(七)
/* * 堆的性质(最小堆为例): * 0.根节点为最小值 * 1.堆可以看做是一个完全二叉树(即孩子节点从左向右排列) * 2.堆的高度lgn/lg2(n为节点的数目) * 3.第i节点的左孩子节点是2*i+1,右孩子节点为2*i+2 * 4.以任意一个节点作为根节点,那么该节点都是堆 * 5.可以用一个数据来表示堆 */ /* * 构建堆的原理: * 上滤 * 在最后一个节点后建立一个空节点原创 2015-04-23 21:16:10 · 3042 阅读 · 0 评论 -
java中使用libsvm
作为自己的参考: http://wenku.baidu.com/view/54cfa92b453610661ed9f4f6.html http://blog.sina.com.cn/s/blog_8095e51d010152xf.html转载 2015-04-09 00:03:20 · 591 阅读 · 0 评论 -
Java中遍历HashMap
//最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的,就不多说了!! public static void work(Map map) { Collection c = map.values(); Iterator it = c.iterator(); for (; it.hasNext();) {转载 2015-04-13 10:50:01 · 526 阅读 · 0 评论 -
数据结构之二叉查找树(BST)-(六)
二叉查找树在数据结构中也经常会被用到。所谓二叉查找树就是从根节点开始,左边的节点比右边的节点小。显然BST的前序遍历就是一个从小到大的有序数组。 JAVA构建二叉查找树: // 构建一颗二叉查找树 /*原理: * 下一个数据和根节点比较,比根大放在根的右边,然后再跟节点的右孩子节点比较 * 比根节点小,则放在根节点的左侧, * 如果等于根,那么不操作原创 2015-04-22 16:49:47 · 1195 阅读 · 0 评论 -
Java socket 访问网页
原来学过socket编程,因为最近我也在做自己的服务器,但是没有加任何安全机制,我就想到了这个服务器可以承受的最大并发量是多少,当然这是和服务器的内存有关的。 如:www.lipyi.com这个网址,同一时间有千万的用户访问(也可能是同一用户),那么服务器是不是要崩掉了?这时候我考虑到很多网址后面都有时间戳,原来就是避免这个问题的。另外也看到有网友说的可以过滤掉同一IP,这也是一个不错的办原创 2015-04-22 15:36:10 · 5481 阅读 · 2 评论 -
数据结构之计算器的实现(JAVA)(四)
原理: 1.将中序表达式变化后续表达式 2.当前字符为数字,将该数字放入栈中 3.当前字符为操作符,从栈中取出两个树,根据操作符来运算,将运算结果放入到栈中 4.重复,直到将字符操作完,此时栈中只剩下一个元素,即要运算的结果 PS:我没有处理,只可以运行10以内的运算,如果有需要可以扩展 package com.原创 2015-04-01 18:29:42 · 2252 阅读 · 0 评论 -
Java 中使用队列
在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。 Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。转载 2015-04-01 16:45:00 · 756 阅读 · 0 评论 -
数据结构之关于树的操作(JAVA实现)(三)
树的基本结构 public class TreeNode { public TreeNode leftNode; public TreeNode rightNode; public T data; public TreeNode(T data) { this.data = data; } } 1.构建一颗树(本文以表达式树为例,原创 2015-04-01 17:45:36 · 4604 阅读 · 1 评论 -
读写者问题-java实现
读者—写者问题(Readers-Writers problem)也是一个经典的并发程序设计问题,是经常出现的一种同步问题。计算机系统中的数据(文件、记录)常被多个进程共享,但其中某些进程可能只要求读数据(称为读者Reader);另一些进程则要求修改数据(称为写者Writer)。就共享数据而言,Reader和Writer是两组并发进程共享一组数据区,要求:(1)允许多个读者同时执行读操作;(2)不允许读者、写者同时操作;(3)不允许多个写者同时操作。原创 2014-12-17 20:39:56 · 7307 阅读 · 5 评论 -
数据结构之哈夫曼树(java实现)-(五)
所谓哈夫曼树就是要求最小加权路径长度,这是什么意思呢?简而言之,就是要所有的节点对应的路径长度(高度-1)乘以该节点的权值,然后保证这些结果之和最小。 哈夫曼树最常用的应用就是解决编码问题。一般我们用的ASCII是固定长度的编码,对于那些常用的字符,使用很长的长度就显得略为浪费空间了。 下面以一个实例来构建一颗哈夫曼编码树。 设字符集S={A,B,C,D,E,F},字符出现的原创 2015-04-13 22:24:45 · 1824 阅读 · 0 评论 -
Android 自定义实现翻转卡片的View
一般一个View只有一面,但是可以自定义一个View,实现像翻书那样的翻转效果。 旋转View: /** * 两种方式构造一个翻转卡片 * 1:直接提供一个特定命名格式的View * 2:提供两个线性布局(正面和,反面) * Created by lip on 2015/4/8. */public class FlipView extends Li原创 2015-04-08 16:25:32 · 5324 阅读 · 1 评论 -
已知二叉树的前序和中序遍历,构建该二叉树
先说说原理吧:前序遍历的第一个节点必然是树的根节点通过第1个节点将中序遍历分割为两部分,左边的就是树的左子树的节点,右边就是树的右子树的节点重复1,2步,直至构建一颗完整的二叉树 Java代码: // 前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6} public TreeNode reConstructBinaryTr原创 2015-09-04 22:51:09 · 1577 阅读 · 0 评论 -
数据结构之单源最短路径(迪杰斯特拉算法)-(九)
最开始接触最短路径是在数据结构中图的那个章节中。运用到实际中就是我在大三参加的一次美赛中,解决中国的水资源问题。所谓单源最短路径,就是一个起点到图中其他节点的最短路径,这是一个贪心算法。 迪杰斯特拉算法原理(百科):按路径长度递增次序产生算法:把顶点集合V分成两组:(1)S:已求出的顶点的集合(初始时只含有源点V0)(2)V-S=T:尚未确定的顶点集合原创 2015-05-06 21:48:31 · 3003 阅读 · 1 评论 -
数据结构之排序算法(八大排序)-(八)
排序算法可以分为稳定排序和不稳定排序。在简单形式化一下,如果A[i] = A[j],A[i]原来在位置前,排序后A[i]还是要在A[j]位置前,这才能叫稳定排序。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,对基于比较原创 2015-05-06 10:16:00 · 2414 阅读 · 3 评论 -
数据结构之关于树的操作(树的递归和非递归遍历)-(四补)
前面写了一些关于树的操作,但是没有实现树的遍历的非递归写法。 通常树有四种遍历方法:1.层次遍历(需要用到树的高度,此文没有考虑) 2.前序遍历(根左右);3.中序遍历(左根右);4.后序遍历(左右根) 树的结构如下: 层次遍历:123456789 前序遍历:124895367 中序遍原创 2015-05-13 02:35:02 · 3773 阅读 · 0 评论 -
数据结构之分治法(最短距离)-(十一)
* 分治法,所谓分治当然是分而治之,化整为零。 * 分治法分为两部分,1.分(Divide)2.治(Conquer) * 在排序算法中我们用到的二分排序就是分治法最经典的一个例子 * 传统的分治法要运行两次及其以上的递归算法,一般用分治法解决问题的时间复杂度是O(N*lgN)原创 2015-05-11 19:37:37 · 2954 阅读 · 0 评论 -
数据结构之贪心算法(背包问题的思考)-(十)
*贪心算法:装箱问题的思考 * @author Lip *装箱问题可以是时间调问题的延伸,当一个箱子没有容积限制,那么就是时间调度问题 *在时间调度问题中:存在两个可以讨论的问题。1.平均最短时间 2.总的最短时间 *这两个问题都和装箱问题中问题如此类似。 *//* * 上面是我理解的装箱问题,本来是想说背包问题的 * 背包问题的描述:有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。 * 求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大原创 2015-05-09 01:39:10 · 3161 阅读 · 1 评论 -
360笔试题目-HashMap实现
自定义一个HashMap,实现map_put,map_delete,map_get方法,要求: 1.查找时间复杂度O(1) 2.. 3.. 因为Java中自带HashMap,平时直接用,也没有考虑,前一段时间只是实现了ArrayList,Vetor,Quene,并没有考虑HashMap。笔试的时候由于时间紧,我只是在HashMap中定义两个ArrayLi原创 2015-04-25 17:48:14 · 1801 阅读 · 1 评论 -
360笔试题目
记得本科的时候算法课上看到过这个题目,当时没有做出来,今天做360笔试的时候竟然仍然没做出来,真蛋疼。回来研究了半天,我擦,两个小时做那么多题目,这个肯定做不出来。 题目: 大意是:给定一个字符串S:“BLFBFSYDLEAKLFBYM”,和一个关键字T:“LBY”,求出在S中包含T的最小字符串?那么应该求出最小字符串:“LFBY” 思路一:遍历T,再遍历S。(咋一看是这样,但是操作起来比较麻烦,我也没实现) 思路二:分别求出关键字T中第一个字符和最后一个字符原创 2015-04-25 03:02:03 · 2652 阅读 · 6 评论 -
数据结构之中序遍历转后续遍历(JAVA实现)(二)
算法流程: 主要分为四步: 1.当前字符为数字或者字母,则直接输出 2.当前字符为),则在栈中匹配输出,一直匹配到),则停止输出(就是将)及其顶上的元素全部弹出来输出) 3.当前字符为操作符,则比较当前字符的入栈优先级(icp)和字符栈内优先级(isp),如果icp 4.当前字符为空,则将栈中元素依次弹出输出 百度原创 2015-03-31 11:24:28 · 2069 阅读 · 0 评论 -
数据结构之栈的实现(JAVA)(一)
//栈顶元素public class StackElement{ private StackElementnextElement; private T data; public StackElement(T data) { this.data=data; } public StackElement getNextElement() { return nextE原创 2015-03-31 00:25:28 · 1440 阅读 · 0 评论 -
逆时针打印矩阵
金山的笔试题目:给一个矩阵,将矩阵逆时针打印出来原创 2014-11-27 13:53:32 · 3590 阅读 · 2 评论 -
java发送邮件的四种方法总结
package com.li72.email;import java.util.Properties;import javax.mail.Address;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.Inte转载 2013-11-18 17:07:19 · 960 阅读 · 0 评论 -
Java获取图片上每点RGB
http://tinyking.blog.51cto.com/3338571/749045 /** * 获取图片RGB数组 * @param filePath * @return */public int[][] getImageGRB(String filePath) {转载 2012-11-21 21:29:11 · 4761 阅读 · 0 评论 -
Java中获取键盘输入值的三种方法
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧: 以下将列出几种方法:方法一:从控制台接收一个字符,然后将其打印出来public static void main(String [原创 2012-11-04 23:11:21 · 1084 阅读 · 0 评论 -
java socket 多客户端和服务器的通信
所谓可以多客户端,就是需要在服务器端进行多线程编程,每一个客户端对应一个线程。如果要实现时时通讯和话,无论是客户端还是服务器端都要至少两个线程,主线程进行发送信息,子线程进行获取信息,这样可以保证时时通信.下面贴出我的代码:客户端:package com.lip;import java.io.BufferedReader;import java.io.BufferedWriter;impo原创 2012-11-05 09:28:00 · 14192 阅读 · 7 评论 -
Runnable接口与Thread类的区别
Runnable接口与Thread类的区别 本以为runnable接口和thread类的区别不大,看了一个实例是用thread实现多个client和server通信,我就把thread改为了runable接口来实现,开始总不对。报错是一直有空值。 原来,接口中时不能有构造函数,所以,当你使用接口的时候,就没有办法通过使用构造函数来传递变量,当我显示的用构造函数来声原创 2012-11-04 23:06:20 · 5981 阅读 · 0 评论 -
Java Socket通信
java socket通信已经被封装好了主要使用两个类ServerSocket 和Socket首先写一个1v1的通信服务端 /** * */ package com.dnion.socket; import java.io.BufferedReader; import java.io.BufferedWriter;转载 2012-09-20 16:07:16 · 1216 阅读 · 0 评论 -
java中静态初始化块,实例初始化块,构造函数区别
public class People{ public static int num=0;//静态变量 String name; static//静态初始化块 { System.out.println(num+":静态初始化块"); } {//实例初始化块 System.out.println(num+":实例初始化块");原创 2014-12-17 20:51:57 · 6691 阅读 · 1 评论 -
java 中String,StringBuilder,StringBuffer比较
转:http://www.iteye.com/topic/522167【镜头1】 String对象的创建 1、关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world"); 问题是参数"Hello world"是什么东西,也是字符串对象吗?莫非用字符串对象创建一个字符串对象?转载 2014-12-05 17:15:23 · 704 阅读 · 0 评论 -
海豚实习-实现两个大数相乘
问题描述:定义大数d为一个数组,表示为:d=a[k-1]*10^(k-1)+a[k-2]*10^(k-2)+...+a[1]*10+a[0](k为数组长度),实现一个函数,返回两个大数相乘的结果 /** d1=a[k-1]*10^(k-1)+a[k-2]*10^(k-2)+...+a[1]*10+a[0] d2=b[l-1]*10^(l-1)+b[l-2]*10^原创 2014-12-07 10:19:48 · 1271 阅读 · 0 评论 -
数据结构之队列的实现(JAVA)
StackElement请看栈的实现 package com.lip.datastruture.stack;public class Queue{ private StackElement obj;//保存数据 private int size;// 元素个数 public Queue() { this.size = 0; } // 入队列 public原创 2015-03-31 00:30:24 · 1015 阅读 · 0 评论 -
阿里电话面试-解决两个冲突的事项
情形:甲和乙有些代办事项,每一个事项都有一个开始时间,和一个截止时间。但是甲和乙的代办事项可能会出现冲突,若在一个代码事项中,存在其他代办事项,则就认为是冲突。现要求合并甲和乙的代码事项,不能够有冲突。 解决: 由于我经常用java,所以就用java模拟该问题。 定义代办事项: public class Node{ private int startTime;原创 2015-03-22 01:59:51 · 2271 阅读 · 4 评论 -
java.lang.IllegalArgumentException: Wrong state classs
java.lang.IllegalArgumentException: Wrong state class 按照Log的提示,是id起了冲突。但是我经过仔细查看XML布局文件,并没有起冲突的ID,事实上,在xml布局文件中经常有重名的id。网上还有一些说通过clean项目,这个也解决不了问题。原创 2015-03-17 18:27:24 · 7192 阅读 · 1 评论 -
Android 设置View 圆角
android 中创建一个圆角的View原创 2015-03-20 17:28:58 · 10217 阅读 · 0 评论 -
編程之美﹣電梯調度算法
最近想详细研究一下电梯调度算法,但是所涉及到内容太多了,目前没有时间了。关于电梯算法的种类: http://www.cnblogs.com/jianyungsun/archive/2011/03/16/1986439.html 那我只能研究一下简单的了。 这是编程之美中的一道题目: 一座大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯在每层都停原创 2015-03-20 22:49:54 · 1560 阅读 · 0 评论 -
java 同步锁(synchronized)
java 同步锁(synchronized) 在java中,Synchronized就是一把锁,他可以锁定一个方法,也可以锁定一个方法,我擦,其实这两个东西就是一样的。块不就是一个没有名字的方法么,方法就是一个有名字的块。本文就用块来测试。所谓锁,就是原子操作,把这个锁定的块作为一个整体,就像你上厕所,拉了就要擦屁屁,当然你也可以不擦,如果你不在意出现的问题的话。信号量Semaph原创 2014-12-24 22:23:31 · 1060 阅读 · 0 评论 -
Java 中Thread 和Runnable的区别
转:http://blog.youkuaiyun.com/wwww1988600/article/details/7309070 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限原创 2014-12-24 17:39:41 · 875 阅读 · 0 评论 -
HTTP 服务器开发(Java)--HTTP请求
最近由于要课程作业,要做一个HTTP服务器,现在纪录下我做这个课程作业的全部过程。(一)理论知识 HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的原创 2014-12-07 19:20:14 · 1199 阅读 · 0 评论