当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪java process调用可执行文件(windows 或者 linux)      最近项目中看到有需要在java程序中调用其他三方工具(如程序中调用三方转码工具)的需求,于是process便在这个需求中崭露头角: (一下只简述用法,不透露实际应用) 1.调用windows平台的.bat .........
    ▪J2EE 下各登录用户共享对象的实现 源码下载      原理:设置 web.xml,使 Servlet 在项目启动时自动创建对象,各用户访问 Servlet 可实现在  Servlet  下的对象共享,再通过 Session 可将 JSP 也实现对象共享。   将要共享的对象 ShareInfo.java.........
    ▪Android - Binder机制 - Binder框架总结       以下几篇文章是较深入分析binder机制。 目录 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通service注册 3. Android - Binder机制 - 获得普通service 4. Android - Binder机制 - cli.........

[1]java process调用可执行文件(windows 或者 linux)
    来源: 互联网  发布时间: 2013-11-19

最近项目中看到有需要在java程序中调用其他三方工具(如程序中调用三方转码工具)的需求,于是process便在这个需求中崭露头角:

(一下只简述用法,不透露实际应用)

1.调用windows平台的.bat

a.在F:盘下 新建a.txt 编辑内容为“love code”;

     新建cmd.bat,编辑内容“notepad F:\a.txt”

b.在java程序中写如下调用语句

CommandUtil.exec("cmd /c start F://cmd.bat");

CommandUtil的exec方法如下:

public static boolean exec(String command) throws IOException, InterruptedException{
		log.info("执行脚本:"+command);
		Process process = Runtime.getRuntime().exec(command);
		int exitValue = process.waitFor();
		 if (process != null) {
	            process.destroy();
	        }
		 if (exitValue!=0){
			 return false;
		 }
		 return true;
	}

c.在windows平台下运行程序,变可以打开记事本,看到“love code”字样;


2.调用linux平台下的.sh脚本

用法一样,只是把bat文件换成linux下的shell脚本文件,并用相同代码调用 。

在linux平台下运行程序即可调用shell脚本。

作者:wangyang2698341 发表于2013-5-8 17:48:22 原文链接
阅读:47 评论:0 查看评论

    
[2]J2EE 下各登录用户共享对象的实现 源码下载
    来源: 互联网  发布时间: 2013-11-19

原理:设置 web.xml,使 Servlet 在项目启动时自动创建对象,各用户访问 Servlet 可实现在  Servlet  下的对象共享,再通过 Session 可将 JSP 也实现对象共享。

 

将要共享的对象 ShareInfo.java

 

/**
 * 
 */
package test;

/**
 * @author Administrator
 * 
 */
public class ShareInfo
{

  private int val = 0;

  /**
   * 
   */
  public ShareInfo()
  {
    // TODO Auto-generated constructor stub
  }

  /**
   * 累加
   */
  public void add()
  {
    val = val + 1;
  }

  /**
   * 取值
   * 
   * @return
   */
  public int getVal()
  {
    return val;
  }

}


启动时加载的 Servlet

 

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import test.ShareInfo;

/**
 * Servlet implementation class Info
 */
@WebServlet(name = "info", urlPatterns = { "/info" })
public class Info extends HttpServlet
{
  private static final long serialVersionUID = 1L;
  
  // 声明共享对象
  private ShareInfo shareInfo = null;

  /**
   * @see HttpServlet#HttpServlet()
   */
  public Info()
  {
    super();
    // TODO Auto-generated constructor stub
  }

  /**
   * @see Servlet#init(ServletConfig)
   */
  public void init(ServletConfig config) throws ServletException
  {
    // TODO Auto-generated method stub
    // 创建共享对象
    shareInfo = new ShareInfo();
  }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    // TODO Auto-generated method stub
    doPost(request, response); 
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
   *      response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    // TODO Auto-generated method stub

    // 对象得到共享
    // 对象内数字累加
    shareInfo.add();

    // 存入 session,jsp 页面也将获得共享
    HttpSession httpSession = request.getSession();
    httpSession.setAttribute("INFO", shareInfo);

    processRequest(String.valueOf(shareInfo.getVal()), request, response);
  }

  /**
   * return text to explorer
   * 
   * @param strMessage
   * @param request
   * @param response
   * @throws ServletException
   * @throws IOException
   */
  protected void processRequest(String strMessage, HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
  {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try
    {
      out.print(strMessage);
    }
    finally
    {
      out.close();
    }
  }

}


 设置启动 Servlet 的 web.xml

 

	<servlet>
		<servlet-name>Info</servlet-name>
		<servlet-class>servlet.Info</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>


 

获得共享的 jsp

 

<%@page import="test.ShareInfo"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ page import="test.ShareInfo"%>

<%
  ShareInfo shareInfo = null;

  Object object = session.getAttribute("INFO");
  if (object != null)
  {
    shareInfo = (ShareInfo) object;
    shareInfo.add();
  }
  else
  {
    out.print("没有找到对象,用户需要访问一次  servlet 获取 session 赋值");
    return;
  }
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GlassFish JSP Page</title>
</head>
<body>
	<%=shareInfo.getVal()%>
</body>
</html>


 

源码下载

http://download.csdn.net/detail/joyous/5345508

 

Q群讨论:236201801

 

作者:joyous 发表于2013-5-8 17:47:30 原文链接
阅读:58 评论:0 查看评论

    
[3]Android - Binder机制 - Binder框架总结
    来源: 互联网  发布时间: 2013-11-19

以下几篇文章是较深入分析binder机制。

目录

1. Android - Binder机制 - ServiceManager

2. Android - Binder机制 - 普通service注册

3. Android - Binder机制 - 获得普通service

4. Android - Binder机制 - client和普通service交互

5. Android - Binder机制 - Binder框架总结

6. Android - Binder机制 - ProcessState和IPCThreadState

7. Android - Binder机制 - 驱动

Android - Binder机制 - Binder框架总结

UML



说明

1. 以中间的IXXX的垂直线为准,左边是客户端进程,它们的命名类似Bp***,右边是服务端进程,它们的命名类似Bn***;
2. 以中间的一条水平虚线为界线,上边执行的是具体业务,如我们之前讲到的AddServcie、GetService、StartPreview等,它们都是普通业务,下边执行的是数据交互,就是讲上边的业务数据打包成binder定义的数据包结构,然后通过binder驱动发送出去或者接收;
3. 第一篇的ServiceManager不是按照Bn***类构建的,但是只是我用的版本不是这样构建的,ServiceManager也完全可以用Bn***来构建,用Bp***和Bn***来构建,让程序员在看代码时更加轻松,代码结构也更加简洁,所以,基本上都是通过Bp***和Bn***来完成的;
4. Bn***和Bp***都继承了两个基类,一个是IXXX,一个是BBinder(或者BpRefBase),其实也正说明了BpXXX和BnXXX既要完成业务层的任务,也要执行数据传输相应的任务;
5. IPCThreadState是真正和驱动打交道的角色,一个进程可以有几个;
6. ProcessState的任务很简单,一是打开binder设备供IPCThreadState使用,一个是获得ServiceManager;
7. 客户端至少持有两个服务端,一个是ServiceManager,一个是它的业务服务端XXXService;


通过这个图,你是不是对复杂的binder找到了很多的规律了;

作者:Gykimo 发表于2013-5-8 17:42:30 原文链接
阅读:34 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3