`
lcy0202
  • 浏览: 178333 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表

常见排序算法

  按照稳定性分类: 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。 时间复杂度:   冒泡法 复杂度为O(n*n),当数据为正序,将不会有交换   直接插入排序:O(n*n)   选择排序:O(n*n)   快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最 ...
整合SSH思路:         1. 确定顺序:spring->structs->hibernate,或者structs->spring->hibernate,原因我认为,spring的出现影响到hibernate生成的文件,比如sessionFactory,所以一般,包括网上其他很多的教程,都是采用把hibernate放在spring后面。         2. 版本:structs 2.1+spring 3.0 + hibernate 3.3  具体步骤:         1. 创建一个web project:SSH         2. 添加struct ...
1. 原理:          线程池的基本思想是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源 ,类似于数据库连接池等。从系统资源的角度看, 在一个 JVM 里创建太多的线程可能会导致系统由于过度消耗内存而用完内存或“切换过度” , 线程池就可以用于限制任何给定时刻处理的请求数目,避免创建过多的线程导致系统崩溃。 2. 线程池的种类: 固定大小的线程池:创建固定线程数量的线程池,如果任务数大于线程池中线程的数量,那么 ...
开始学习linux,我安装了redhat enterprise 5,具体的安装过程网上很多,用起来初步觉得不错,学习的书籍是《鸟哥的linux私房菜》,废话不多说,进入正题。 命令的基本形式是:[lcy@localhost~]$ command [options] parameter1  parameter2 注意:这里的command必须是命令或者可执行文件 ,linux区分大小写 1. 简单的日期 date cal    date +%Y/%m/%d 2012/05/20 +%Y/%m/%d就是设定date的格式, [lcy@localhost~]$ cal 指的是当前这 ...
 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。     对于此模型,应该明确一下几点:     1、生产者仅仅在仓储未满时候生产,仓满则停止生产。     2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。     3、当消费者发现仓储没产品可消费时候会通知生产者生产。     4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。     此模型将要结合java.lang.Object的wait与notify、notifyAll方法来实现以上的需求。这是非常重要的。 /** * Java线程:并发协作- ...
  一、基本原理 1. 问题  如果是前端的静态HTML,处理网页设计的美术人员可以独立设计 如果是后端的类,程序设计人员可以独立设计而结合HTML与Java代码的JSP,处理网页设计的美术人员与程序设计人员,必须被彼此加入至视 ...

递推求解

去参加UC的笔试出现了一道题目,没有做出来,郁闷就跟朋友聊聊,没想到最后还是跑回到算法那里去~~~+_+ 问题:10个平面最多可以将空间分割几部分     解法一:递推思想 设用n个平面去切割空间的时候是f(n)块。 首先,理解一下,当变为二维的时候,也就是一个平面被N条边最多可以分为几部分:p(n)=1/2[n*(n+1)]+1,这个比较好理解,原理:第N条边可以将p(n)中的n-1条直线相交,从而增加了n部分,于是可推到而出。 现在,当变为三维时,n-1个平面后,放上第n个平面,那么第n个平面上最多有n-1条线,这n-1条线能把第n个平面分为多少部分,那么空间就多了多少部分。 ...
之前谈到,java提供了synchronized进行线程同步处理,在JDK1.5后,便出现了Lock,两者的区别是:   主要相同点: Lock能完成Synchronized所实现的所有功能。 主要不同点: Lock有比Synchronized更精确的线程语义和更好的性能 Synchr ...
当多线程共享一个数据时候,就会容易因为编程不对而导致出现错误。比如,两个线程对一个数据进行修改,由于线程调度的不确定性,导致出现错误。所以,java引进了synchronized进行对共享数据的保护,确保在一个线程在对数 ...
java中有两种方式进行线程的创建 1. 继承thread类创建线程类   步骤:重写Thread类的run方法,也就是线程执行体;创建Thread的子类,也就是创建线程对象;调用start方法记性启动。    //通过继承Thread类来创建线程类 public class FirstThread extends Thread{ private int i ; //重写run方法,run方法的方法体就是线程执行体 public void run() { for ( ; i < 100 ; i++ ) { //当线程类继承Thread类时, ...

socket的入门程序

一 .服务器向客户端发送信息 客户端程序 TestClient.java import java.io.*; import java.net.*; public class TestClient { public static void main(String[] args){ try { Socket s=new Socket("127.0.0.1",8488); //从服务器端收到信息 InputStream is=s.getInputStream(); DataInputStream dis=new DataInp ...
 public class Primitive2String { public static void main(String[] args) { String intStr = "123"; //把一个特定字符串转换成int变量 int it = Integer.parseInt(intStr); System.out.println(it); String floatStr = "4.56"; //把一个特定字符串转换成float变量 float ft = Float.parseFloat(floa ...
                                    (一)选择排序  通俗的原理:每次遍历整个数组,找出最小的放在第一位,之后继续找剩下n-1个的最小的,放在第二位,一直这样下去...... public class SelectSort { public static void opFunction(int[] arr){ //先将找出n个元素中最小的放在第一位,之后,找出剩下的n-1个元素中最小的放在第二位..... for(int i=0;i<arr.length;i++){ int k=i; /*第一轮,获取最小的值,原理:取第一个与所有的 ...
在一些网站上需要实现给用户手机发送短信,看起来似乎很难实现,其实不然,表面复杂的技术,当你弄明白原理之后就变成了不是问题的问题......不多说,直接看代码 1.原理:给用户发送短信主要是通过移动提供给的接口,而我们网站主要是将短信信息(手机号码、短信内容)发给这个接口,之后就是移动的事情了(根据信息发给相应的用户).... 2. 实例:本例的原理也类似,通过发给将短信信息发给一个与移动有合作关系的网站,该网站提供一个接口,负责接收外界传来的短信信息,处理之后转交给移动发送...... 前提:在该网站注册用户,网站会提供一个ID和密码、发送接收的处理方法(也就是action是什么),此 ...
前面已经介绍了如何在服务端去发布服务,现在就来聊聊如何在客户端进行调用服务端的发布的服务类 总的来说,有两种方式: 1. 通过访问服务端提供的服务类的地址进行访问,从而调用指定服务类的方法进行操作,不多说, ...
Global site tag (gtag.js) - Google Analytics