官方网址:http://j-ui.com/

 

先来个界面切图:

 

 

是不是很像ExtJ呢?

 

下面来看看J-UI与ExtJS的优势在哪里:

 

·         完全开源,源码没有做任何混淆处理,方便扩展

·         CSSjs代码彻底分离,修改样式方便

·         简单实用,扩展方便,轻量级框架,快速开发

·         仍然保留了html的页面布局方式

·         支持HTML扩展方式调用UI组件,开人员不需写js

·         只要懂html语法不需精通js,就可以使用ajax开发后台

   基于jQueryUI组件以jQuery插件的形式发布,扩展方便 

  源代码完全开放,在Apache License 2.0许可下, 可免费应用于个人或商业目的

 

先来一个示例:

 <a href="user.do?method=remove" target="ajaxTodo" title="确定要删除吗?">删除</a>

 

 

 

 是不是很简单呢?是的,他与HTML严格分离的。具体使用请访问官方网站吧!

 

posted @ 2012-01-19 13:01 李锡远-Taven 阅读(48) 评论(1) 编辑

站在下一个10 年的起点:打造软通动力2.0 时代

软通动力集团 董事长兼首席执行官 刘天文

软通动力全体同事,大家好:

我们刚刚度过公司成立10周年庆典,又将迎来2012年元旦。在此新春佳节来临之际,我谨代表软通动力董事会、管理层和我们的投资伙伴,向在世界各地努力工作的每一位同事致以节日的问候!同时也向你们的家人致以衷心的感谢和节日祝福!

在过去的10年里,软通动力一步一个脚印,一年一个台阶,已经发展成为中国领先的全方位IT服务及行业解决方案提供商,业务范围遍布全球,服务于世界500强中的80多家企业,业务量过千万的客户50多家,约45%收入来自海外,销售及服务中心近20个,从40余人发展到如今13000人规模。

从默默无闻到行业领先,从关注企业生存到成为中国IT服务产业不可或缺的力量,软通动力在挑战和机遇里成长,用10年时间完成了同业公司近20年走完的历程,取得了令人瞩目的成就。在下一个10年,软通动力将致力于提供高附加值服务,不遗余力地推进全球化进程,以打造世界级企业为目标,致力于成为兼顾客户、股东、员工利益、不忘社会责任,可持续发展而令人尊敬的优质企业。

2012年,是软通动力下一个10年的新起点,是软通动力2.0时代的崭新开篇。我们的关键词是“品质、效益、创新、责任”。软通动力将致力于海外+中国的全球化战略落地,致力于创新和知识驱动的增长,也就是从“线性”增长到“非线性”增长,形成“软件+服务”的发展模式。同时,把人力资源的发展放在公司战略体系的重要位置,坚持“关注、尊重、发展、提升”的人才价值观,坚持“以人为本”的企业文化, 努力为员工提供更好的工作环境、职业发展、生活质量。

在全球经济迟缓衰退的大背景下,这个冬天有些冷,但冬日里依然充满暖阳,只要大家齐心协力,以必胜的信念迎接种种挑战,我们就一定能够顺利渡过寒冬,迎来软通动力2.0时代的春天!

祝大家新年快乐,身体健康,阖家幸福!

 

Looking Forward to the Next 10 Years: Building iSoftStone 2.0

iSoftStone Chairman and CEO, T.W. LIU

Dear iSoftStone Employees:

We just celebrated the company’s 10th anniversary, and 2012 is right around the corner. On behalf of iSoftStone’s Board of Directors, management team and our shareholders, I would like to extend holiday greetings to every one of our employees around the world! Thank you for your continued efforts and outstanding achievements during the past year – and the past 10 years.

As we look back upon the past 10 years, we have made continued progress and great strides in becoming a leading China-based IT services and solutions provider, serving clients across greater China and the globe. We have grown from a small start-up company of 40 staff to an industry leader in IT services and solutions with 13,000 employees around the world. Just look at some of the progress we have made:

·         Our current clients now include more than 80 of the Fortune 500 companies.

·         Fifty of our Fortune 500 clients spend more than 1 million dollars per year on our services.

·         We have nearly 20 sales and delivery centers in China and around the world today.

·         Almost 45% of our revenue comes from North America and Europe and Japan clients, and the rest from China-based clients – a great, global balance of customers. 

From a small company to an IT services leader, we have accomplished in the last 10 years what has taken many of our industry peers over 20 years to accomplish. In the next decade, we will continue to provide high quality services to our clients, increase our focus on moving up the value chain and will dedicate and align our efforts to become a global organization and a world-class company. Additionally, we are committed to building a sustainably developed and well-respected enterprise, ensuring we always are taking customers, shareholders, employees and social responsibility into account as we grow.

2012 will be a defining year for iSoftStone, and will be the beginning of the “iSoftStone 2.0” era. Our joint and continuing efforts in “quality, efficiency, innovation, accountability” will be paramount to a successful 2012 and beyond. We will focus on executing our “Global + China” strategy, pushing innovation and knowledge-driven growth further and farther this upcoming year.  We will also emphasize our “software + services” business model and accelerate our growth through additional focus on software, solutions, and R&D. Additionally, human resource management will be a priority for the company. By promoting a healthy company culture that focuses on “Care, Respect, Development and Career Growth”, we will work to provide its employees with a better work environment, career development opportunities and a balanced quality of life.

Lastly, I would like to wish each of you and your families a Happy New Year. I hope that during this holiday season you will relax, enjoy some time away from work, and become refreshed for an incredibly exciting 2012.

 

 

刘天文  T.W Liu

董事长兼首席执行官

Chairman and CEO of iSoftStone

 

posted @ 2011-12-30 14:34 李锡远-Taven 阅读(33) 评论(0) 编辑
摘要: importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;/**本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西阅读全文
posted @ 2011-12-17 23:38 李锡远-Taven 阅读(26) 评论(0) 编辑
摘要: /***Exchanger让两个线程互换信息*实例模拟服务生和顾客,服务生往空杯子中倒水,顾客从装满水的杯子中喝水,然后互换杯子,服务生接着倒水,顾客接着喝水.*//***使用Exchanger的关键技术点如下:*1.初始化Exchanger对象时,可以通过泛型指定杯子能交换的信息类型.如"newExchanger<String>;"表示只能交换String类型的信息*2.Exchanger的exchange方法表示当前线程准备交换信息,等待其他线程与它交换信息.当有其他线程调用该Exchanger对象的exchange方法时,立即交换信息*/publiccla阅读全文
posted @ 2011-12-17 23:37 李锡远-Taven 阅读(16) 评论(0) 编辑


import java.util.Random;

import java.util.concurrent.CyclicBarrier;

 

/**

 * CyclicBarrier维持一个计数器,CountDownLatch不同的是,等待这个CyclicBarrier的线程必须等到计数器的某个值时,才可以继续.

 * CyclicBarrier就像它名字的意思一样,可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍.

 */

/**

 * 本实例实现一个数组相邻元素的加法,一个线程给数组的第一个元素赋值,然后等待其它线程给数组第二个元素赋值,然后将第一个元素和第二个元素相加.

 */

/**

 * CyclicBarrier的关键技术点如下:

 * 1.构造CyclicBarrier对象时,需要指定计数器的目标值,计数器的初始值为0.

 * 还可以在构造方法中带一个 Runnable参数,表示当计数器到达目标值是,在等待CyclicBarrier的线程被唤醒之前,指定该Runnable任务.

 * 2.CyclicBarrierawait方法使当前线程进入等待状态,同时将计数器值加1,当计数器到达目标值时,当前线程被唤醒.

 */

public class CyclicBarrierTest {

       public static class ComponentThread implements Runnable{

              CyclicBarrier barrier;//计数器

              int ID;//组件

              int[] array//数据数组

              public ComponentThread(CyclicBarrier barrier,int[] array,int ID){

                     this.barrier = barrier;

                     this.ID = ID;

                     this.array = array;

              }

              public void run(){

                     try{

                            //RandomnextInt(int n)方法返回一个[0,n)范围内的随机数

                            array[ID] = new Random().nextInt(100);

                            System.out.println("Componet " + ID + " sleep...");

                            barrier.await();

                            System.out.println("Componet " + ID + " awaked...");

                            //计算数据数组中的当前值和后续值

                            int result = array[ID] + array[ID + 1];

                            System.out.println("Component " + ID + " result: " + result);

                     }catch(Exception ex){

                     }

              }

       }

       /**测试CyclicBarrier的用法*/

       public static void testCyclicBarrier(){

              final int[] array = new int[3];

              CyclicBarrier barrier = new CyclicBarrier(2,new Runnable(){

                     public void run(){

                            System.out.println("testCyclicBarrier run...");

                            array[2] = array[0] + array[1];

                     }

              });

              //启动线程

              new Thread(new ComponentThread(barrier,array,0)).start();

              new Thread(new ComponentThread(barrier,array,1)).start();

       }

       public static void main(String... args){

              CyclicBarrierTest.testCyclicBarrier();

       }

}

 

 

 

 

 

posted @ 2011-12-17 23:36 李锡远-Taven 阅读(24) 评论(0) 编辑

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * CountDownLatch维护一个计数器,等待这个CountDownLatch的线程必须等到计数器为0时才可以继续.
 * 以下实例模拟服务器的启动,假设启动一个服务器需要初始化3个组件,当3个组件初始化完毕后,服务器才算成功启动.
 */
/**
 * 使用CountDownLatch的关键技术点如下:
 * 1.构造CountDownLatch对象时,需要指定计数器的初始值,该值必须大于等于0,一旦对象被创建,其初始值将不能被改变.
 * 2.CountDownLatch的await方法使当前线程进入等待状态,直到计数器为0
 * 3.CountDownLatch的 和countDown方法使计数器减1.
 */
public class CountDownLatchTest {
  /** 初始化组件的线程 */
  public static class ComponentThread implements Runnable {
    CountDownLatch latch; //计数器
    int ID; //组件ID

    //构造方法
    public ComponentThread(CountDownLatch latch, int ID) {
      this.latch = latch;
      this.ID = ID;
    }

    public void run() {
      //初始化组件
      System.out.println("Initializing component " + ID);
      try {
        Thread.sleep(500 * ID);
      }
      catch (InterruptedException e) {}
      System.out.println("Component " + ID + " initialized!");
      latch.countDown()//将计数器减1
    }
  }

  /** 启动服务器 */
  public static void startServer() throws Exception {
    System.out.println("Server is starting.");
    //初始化一个初始值为3的CountDownLatch
    CountDownLatch latch = new CountDownLatch(3);
    //启动3个线程分别去3个组件
    ExecutorService service = Executors.newCachedThreadPool();
    service.submit(new ComponentThread(latch, 1));
    service.submit(new ComponentThread(latch, 2));
    service.submit(new ComponentThread(latch, 3));
    service.shutdown();
    latch.await();//等待3个组件的初始化工作都完成
    System.out.println("Server is up!");//当所需的三个组件都完成时,Server就可以继续了
  }

  public static void main(String... argsthrows Exception {
    CountDownLatchTest.startServer();
  }
}

 

posted @ 2011-12-17 23:35 李锡远-Taven 阅读(30) 评论(0) 编辑
摘要: importjava.util.ArrayList;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.Semaphore;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/***Java5.0里新增加了4个协调线程间进程的同步装置,它们分别是:Semaphore,CountDownLatch,CyclicBarr阅读全文
posted @ 2011-12-17 23:34 李锡远-Taven 阅读(19) 评论(0) 编辑
摘要: importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/***有时候线程取得lock后需要在一定条件下才能做某些工作,比如经典的Producer和Consumer问题*在Java5.0以前,这种功能是由Object类的wait(),not阅读全文
posted @ 2011-12-17 23:33 李锡远-Taven 阅读(20) 评论(0) 编辑
摘要: importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.Future;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReadWriteLock;importjava.util.concurrent.locks.ReentrantLock;importjava.util.concurrent.locks.ReentrantReadWriteLoc阅读全文
posted @ 2011-12-17 23:32 李锡远-Taven 阅读(30) 评论(0) 编辑