小编Rag*_*ani的帖子

如何在不安装条形码扫描应用程序的情况下使用ZXing库

我一直在开发一个Android应用程序来扫描条形码和QR码并将结果发送到其他应用程序(HTTP).我已经通过互联网阅读了大部分文档,并且在堆栈中通过流程阅读并使其正常工作.我能够在我的设备上运行独立的zxing android应用程序,我也可以运行我自己的独立Android应用程序来使用Zxing意图扫描条形码.但即使在这里阅读了这么多问题以及互联网上的一些博客之后,我也无法满足我的严格要求.

我想实现以下目标.1.我不想在我的设备中安装单独的条形码扫描仪应用程序以使我自己的应用程序工作(扫描条形码).我使用了以下代码

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)

当我在我的设备中运行应用程序时,它会询问"选择应用程序以完成此操作"并显示"Google"和"Google Goggles"并打开Goog​​le页面默认摄像头并扫描条形码.我希望CaptureActivtiy默认捕获页面(不是Google的)来扫描条形码.3.我尝试在我自己的应用程序中使用ZXing作为库,但它没有用.

你能告诉我到底哪里出错吗?

android barcode barcode-scanner zxing

7
推荐指数
1
解决办法
4万
查看次数

如何为可变数量的路径参数编写单个JAX-RS资源

我一直在使用Apache Wink编写基于JAX-RS的ReST应用程序,我理解了路径参数与资源句柄类之间的关联概念.在这里,我看到,我们可以使用@Path注释和相应的资源来定义路径,这些资源将基于HTTP方法被调用.

现在我正在寻找类似资源的东西,应该调用可变数量的路径参数.

例如,我希望我的单个资源类CollegeResource应该像URI那样被调用,/rest/college, /rest/college/subject, /rest/college/subject/teachers, 并且它可以达到任意数量的路径参数.

如果我知道之前路径参数的数量,那么我可以使用类似的东西实现这一目标/rest/college/{param1}/{param2}.但路径参数的数量是未知的.所以我觉得(我可能错了)不能使用这种方法.

我仍然可以使用的另一种方法是使用查询参数.但我希望这只能作为路径参数.

有没有办法使用apache wink与任何其他配置完成此操作?如果不是在Apache wink中,任何其他JAX-RS实现都支持这个吗?

java rest jax-rs apache-wink

7
推荐指数
1
解决办法
2338
查看次数

高速XSLT从XML转换为CSV

我一直在尝试使用XSLT在最有效的时间从XML文档中获取CSV数据.以下是我的示例XML

<?xml version="1.0" encoding="ISO-8859-1"?>
 <sObjects xmlns="urn:sobject.partner.soap.sforce.com">
     <sObject>
        <Name>Raagu</Name>
        <BillingStreet>Hoskote</BillingStreet>
</sObject>
     <sObject>
        <Name>Rajath</Name>
         <BillingStreet>BTM</BillingStreet>
         <age>25</age>
</sObject>
     <sObject>
        <Name>Sarath</Name>
         <BillingStreet>Murgesh</BillingStreet>
         <location>Bangalore</location>
         <age>#N/A</age>
</sObject>
     <sObject>
         <Name>Bharath</Name>
         <BillingStreet>EGL</BillingStreet>
         <location>Bangalore</location>
             <shipping>Hoskote</Shipping>
</sObject>
     <sObject>
         <Id>12312321321</Id>
         <Name>Guru</Name>
         <location>Sirsi</location>
         <date>12-12-12</date>
</sObject>
     <sObject>
         <Name>Appa</Name>
         <BillingStreet>someStrrt</BillingStreet>
         <accountNo>213213</accountNo>
</sObject>
           <sObject>
          <Name>Sarath</Name>
          <BillingStreet>Murgesh</BillingStreet>
         <location>Bangalore</location>
</sObject>
     <sObject>
          <Name>Sarath</Name>
         <BillingStreet>Murgesh</BillingStreet>
          <location>Bangalore</location>
</sObject>
     <sObject>
          <Name>Sarath</Name>
          <BillingStreet>Murgesh</BillingStreet>
           <location>Bangalore</location>
</sObject>
Run Code Online (Sandbox Code Playgroud)

我想要这种输出

 <?xml version="1.0" encoding="utf-8"?><csv xmlns="http://www.approuter.com/schemas/RootNode"><data>Name,BillingStreet,age,location,Shipping,Id,date,accountNo
Raagu,Hoskote,,,,,,
Rajath,BTM,25,,,,,
Sarath,Murgesh,#N/A,Bangalore,,,,
Bharath,EGL,,Bangalore,Hoskote,,,
Guru,,,Sirsi,,12312321321,12-12-12,
Appa,someStrrt,,,,,,213213
Sarath,Murgesh,,Bangalore,,,,
Sarath,Murgesh,,Bangalore,,,,
Sarath,Murgesh,,Bangalore,,,,</data></csv>
Run Code Online (Sandbox Code Playgroud)

为了完成这项工作,我尝试了以下XSLT

<xsl:stylesheet version="1.0" xmlns:p0="urn:sobject.partner.soap.sforce.com" xmlns:csv="csv:csv" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="utf-8"  method="xml"/>
    <xsl:strip-space elements="*" />
    <xsl:variable …
Run Code Online (Sandbox Code Playgroud)

xml csv xslt transform xslt-1.0

5
推荐指数
2
解决办法
8983
查看次数

中断正在Java中进行HTTP调用的线程

我正在编写一个Java程序,以在另一个线程中对服务器进行HTTP调用。我在线程池执行程序中的单独Callable任务中执行以下代码。

public static class MyRunnable implements Callable<Boolean>{

    @Override
    public Boolean call() {
        HttpURLConnection conn = null;
        try {
            URL url = new URL("http://www.myserver.com");
            conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            conn.setRequestMethod("GET");
            int response = conn.getResponseCode();
                            return response == 200;
        }
        catch (IOException e) {
            e.printStackTrace();
                            return false;
        } catch (Exception e) {
            e.printStackTrace();
                            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于某些原因,服务器不响应或服务器响应非常慢。由于该服务器的行为,连接超时和读取超时都不会发生。

因此,我想监视此任务(在线程池执行程序中运行),并在一段时间后中断线程,并确保从池中删除此任务,以便线程池不包含此任务并释放此任务占用的所有资源。线。

我尝试Future了如下的java

 ThreadPoolExecutor tpe = new ThreadPoolExecutor(2, 5, 5, TimeUnit.SECONDS, new      ArrayBlockingQueue<Runnable>(10));
 Future<Boolean> f = tpe.submit(new MyRunnable());
  try {
        Boolean …
Run Code Online (Sandbox Code Playgroud)

java multithreading http threadpoolexecutor

5
推荐指数
1
解决办法
1739
查看次数

Java:GarbageCollectorMXBean getCollectionCount抛出java.io.IOException:客户端已关闭

我正在编写一个Java应用程序,我使用Java GarbageCollectorMXBeanAPI定期(每5秒)获取一次收集计数.以下是我为完成任务而编写的程序.

import java.io.IOException;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.HashMap;
import java.util.Map;

import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class JMXTest {
    public static final String GC_NAME = "java.lang:name=MarkSweepCompact,type=GarbageCollector";
    private static GarbageCollectorMXBean garbageCollectorMXBean;
    private static JMXConnector jmxConnector;
    private static MBeanServerConnection mbsc;

    public static void main(String[] args) throws Exception {
        String rmiHostname = "jmxserver";
        String defaultUrl = "service:jmx:rmi:///jndi/rmi://" + rmiHostname + ":1999/jmxrmi";
        JMXServiceURL jmxServiceURL = new JMXServiceURL(defaultUrl);

        Map<String,Object> jmxCredentials = new HashMap<String,Object>();
        String[] credentials = new String[]{"jmxusername", "jmxpassword"}; …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jmx mxbean

5
推荐指数
1
解决办法
1174
查看次数

使用XSLT将XML转换为CSV

我正在寻找一种智能高效的XSLT,它可以将XML文档转换为CSV数据.它应该处理子节点中的所有可能元素.例如,XML看起来像这样

<?xml version="1.0" encoding="ISO-8859-1"?>
<sObjects>
   <sObject>
     <Name>Raagu</Name>
     <BillingStreet>Hoskote</BillingStreet>
   </sObject>
   <sObject>
      <Name>Rajath</Name>
      <BillingStreet>BTM</BillingStreet>
      <age>25</age>
   </sObject>
   <sObject>
      <Name>Sarath</Name>
      <BillingStreet>Murgesh</BillingStreet>
      <location>Bangalore</location>
   </sObject>
</sObjects>
Run Code Online (Sandbox Code Playgroud)

而我的输出CSV应该是这样的

Name,BillingStreet,age,location
Raagu,Hoskote,,
Rajath,BTM,25,
Sarath,Murgesh,,Bangalore
Run Code Online (Sandbox Code Playgroud)

所有行都应包含CSV中所有键的字段,即使XML确实具有值.

以下是我通过查看此处的不同示例而提出的XSLT代码.

这是我提出的XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:variable name="delimiter" select="','"/>

    <xsl:key name="field" match="sObject/*" use="name()"/>

    <xsl:template match="/">

        <xsl:for-each select="/*/*/*[generate-id()=generate-id(key('field', name())[1])]">
            <xsl:value-of select="name()"/>

            <xsl:if test="position() != last()">
                <xsl:value-of select="$delimiter"/>
            </xsl:if>
         </xsl:for-each>

        <xsl:text>&#xa;</xsl:text>

        <xsl:for-each select="/*/sObject">

            <xsl:variable name="property" select="." />
            <xsl:for-each select="$property/*">

                <xsl:variable name="value" select="." />
                <xsl:value-of select="$value"/>
                <xsl:if test="position() != last()">
                    <xsl:value-of select="$delimiter"/>
                </xsl:if>
                <xsl:if test="position() = …
Run Code Online (Sandbox Code Playgroud)

xml csv xslt

2
推荐指数
1
解决办法
1万
查看次数

从文件系统动态加载OSGi包

我有一个使用OSGi框架的模块化应用程序.这里我使用的是org.eclipse.equinox.common_3.4.0 OSGi容器.所以现在应用程序已经运行,所有的osgi软件包都已安装并处于活动状态,我在UI上显示所有活动的OSGi软件包,通过基于某些操作循环哈希映射.现在的要求是,当应用程序已经运行时,我想从文件系统安装一个新的OSGi包,方法是将这个新的包提供给应用程序的OSGi容器,以便它启动这个包.

我该如何实现这一目标?我已经尝试将OSGi包作为JarInputstream读取并读取bundle激活器完全限定的类路径并尝试使用Class.forName("")实例化它并输入到BundleActivator接口.但是在启动时,它将bundle上下文作为start方法的参数.

有没有办法我可以实际上将OSGi包捆绑到容器中,以便它将负责安装和启动包,然后我的UI将自动在显示中获取这个新的包名称.

osgi osgi-bundle

2
推荐指数
1
解决办法
3127
查看次数

在多线程环境中使用HashMap进行定期更新

我有一个Java应用程序,在其中我将其他服务器的IP集维护在内存中的哈希映射中.哈希映射包含服务器实例ID与服务器IP地址之间的映射.我还将这些服务器信息保存在数据库中以保持持久性.

我试图解决一个简单的问题,我只需要在内存中缓存服务器信息,以便更快地访问.所以我已经使用了hashmap.我需要确保内存中的服务器信息不是陈旧的,并且缓存中的所有服务器都是响应式的.

所以我创建了两个单独的后台守护程序线程

  • 一个线程从hashmap获取每个条目并ping所有条目.如果任何服务器没有响应,则它从散列映射中删除该条目.
  • 另一个线程基本上将数据库条目与此hashmap缓存同步.因此,它查询所有条目数据库,并删除散列映射中的条目,这些条目在DB中不存在,对于DB中的新条目,它会ping每个条目并添加到散列映射.

这里第一个线程经常运行15秒,第二个DB线程每5分钟运行一次.

由于两个线程都在这里更新缓存,我使用了ConcurrentHashMap,因为它将被同步.即便如此,当我阅读多篇文章,文档和一些stackoverflow帖子时,我看到多个线程更新hashmap会有风险,比如当一个线程迭代hashmap时,其他线程可能会被触发并开始更新hashmap.

那么我如何使用不同的方法来解决这个问题,这样我就不会在应用程序性能,时间和空间复杂性方面干扰JVM,并确保我的hashmap中始终只有响应式服务器条目.

java synchronization hashmap concurrenthashmap

2
推荐指数
1
解决办法
1222
查看次数