小编Grz*_*Żur的帖子

将外部.jar添加到androidstudio项目中

bsh-2.0b4.jar通过进入Project structure -> Modules -> myProject -> Tab-Dependencies -> + Sign然后添加.jar文件将外部库添加到android-studio中的android项目中.我还尝试将文件复制到/ libs目录,然后在工作室中右键单击add as library...(两种方法独立!!).我插入以下代码作为测试

  import bsh.Interpreter;
  ...
  Interpreter interpreter = new Interpreter();
  interpreter.eval("result = (7+21*6)/(32-27)");
  return interpreter.get("result").toString();
Run Code Online (Sandbox Code Playgroud)

我用android中的buildin按钮编译.build.gradle看起来像:

  buildscript {
    repositories {
      mavenCentral()
    }
    dependencies {
     classpath 'com.android.tools.build:gradle:0.5.+'
    }
  }
  apply plugin: 'android'

  repositories {
    mavenCentral()
  }

  android {
     compileSdkVersion 17
     buildToolsVersion "17.0.0"

     defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17
     }
  }

  dependencies {
     compile 'com.android.support:support-v4:13.0.+'
  }
Run Code Online (Sandbox Code Playgroud)

但是当我编译所有内容时,我收到错误

  Gradle: error: package bsh does not exist …
Run Code Online (Sandbox Code Playgroud)

java android gradle android-studio

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

如何在Go中编组xml但忽略空字段

如果我有一个结构,我希望能够使用(使用encoding/xml)进出xml的Marhsal/Unmarshal内容 - 我怎么能打印空的属性?

package main

import (
    "encoding/xml"
    "fmt"
)

type MyThing struct {
    XMLName xml.Name `xml:"body"`
    Name    string   `xml:"name,attr"`
    Street  string   `xml:"street,attr"`
}

func main() {
    var thing *MyThing = &MyThing{Name: "Canister"}
    result, _ := xml.Marshal(thing)
    fmt.Println(string(result))
}
Run Code Online (Sandbox Code Playgroud)

例如,请参阅http://play.golang.org/p/K9zFsuL1Cw

在上面的操场上,我不想写出我的空街道属性; 我怎么能这样做?

go

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

在服务器拦截器中应答 gRPC 调用

我想验证调用并可能在服务器拦截器中回答错误。有办法做到吗?如果是的话我怎样才能实现它?

grpc grpc-java

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

如何释放切片分配的内存?

package main

import (
    "fmt"
    "time"
)

func main() {
    storage := []string{}

    for i := 0; i < 50000000; i++ {
        storage = append(storage, "string string string string string string string string string string string string")
    }

    fmt.Println("done allocating, emptying")

    storage = storage[:0]
    storage = nil

    for {
        time.Sleep(1 * time.Second)
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将分配大约 30mb 的内存,然后不会释放它。这是为什么?如何强制释放此切片使用的内存?我把那片切成薄片,然后把它磨碎了。

我正在调试的程序是一个简单的 HTTP 输入缓冲区:它将所有请求附加到大块中,并通过通道将这些块发送到 goroutine 进行处理。但问题如上所示 - 我无法通过存储来释放内存,然后最终耗尽内存。

编辑:正如有些人对类似问题指出的那样,不,它首先不起作用,其次不是我所要求的。切片被清空,内存不会。

go

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

为什么未关闭的html标记会使html模板无法呈现?

我遇到了一个非常麻烦的问题,我花了大约一个小时来确定导致问题的原因,但我不知道为什么:

html/template用来翻页网页,代码是这样的:

t, _ := template.parseFiles("template/index.tmpl")
...
t.Execute(w, modelView) // w is a http.ResponseWriter and modelView is a data struct.
Run Code Online (Sandbox Code Playgroud)

但不知不觉中,我犯了一个错误,让<textarea>标签打开:

<html>
<body>
        <form id="batchAddUser" class="form-inline">
        **this one**  -->  <textarea name="users" value="" row=3 placeholder="input username and password splited by space">
            <button type="submit" class="btn btn-success" >Add</button>
        </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后Go没有给出任何异常和其他提示,但只是给出一个没有任何内容的空白页面,状态代码是200.

由于没有提供任何信息,它可以解决问题,但为什么会这样呢?一个未着色的标签怎么会引起这样的问题呢?以及如何调试?

go go-html-template

3
推荐指数
1
解决办法
144
查看次数

指数超出范围goroutine golang

索引超出范围错误,在for循环生成的goroutine中似乎不可能

这是我正在执行的代码.问题是索引超出范围错误是在对goroutine中countlinks调用的一个参数的评估中产生的.我们正在迭代的切片的长度总是2.基于我对go中的for循环的理解,i永远不应该评估为2(在表达式中产生索引超出范围grph.entryPoints[i]),但它是.拜托,告诉我我是多么疯狂.

func main() {
    grph := structures.ConfigGraphDefault()
    counter := structures.NewCounter()
    queue := structures.NewQueue()
    tracker := structures.NewTracker()
    fmt.Printf("entries: %v\nnodes: %v\n", grph.EntryPoints, grph.Nodes)
    wg := sync.WaitGroup{}
    fmt.Println(len(grph.EntryPoints))
    // this will always evaluate to 2
    l := len(grph.EntryPoints)
    for i := 0; i < l; i++ {
        wg.Add(1)
        go func() {
            fmt.Printf("index: %v, length of slice: %v\n", i, len(grph.EntryPoints))
            structures.CountLinks(&grph, counter, queue, tracker, grph.EntryPoints[i], i)
            wg.Done()
        }()
    }
    wg.Wait()
    fmt.Printf("counter: %v", counter.GetCounts())
}
Run Code Online (Sandbox Code Playgroud)

go goroutine

3
推荐指数
1
解决办法
517
查看次数

为什么逻辑运算符,当java中有Bitwise运算符时

我知道Bitwise运算符&,| 和^是按位运算符或逻辑运算符...取决于操作数的类型.

如果操作数是整数,则运算符是按位的.如果他们是布尔,那么运营商是合乎逻辑的.

那么为什么有逻辑运算符&&,|| 和!?我相信在某些情况下我们只能使用逻辑运算符,所以它们就是这样.

那么,任何人都可以解释这种情况吗?或者比按位操作有任何优势.

java bitwise-operators logical-operators

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

单个gradle工人进行单元测试

是否有可能让gradle知道使用单个工作线程进行所有单元测试?在控制台中,我可以看到并行调用许多gradle worker来执行单元测试.在我的情况下,这是不希望的,我希望Gradle以特定的顺序调用单元测试.我已经创建了多个测试任务并添加了dependsOn属性,因此已经应用了一个级别的排序.但是,对于某些测试任务,有多个单元测试,并且这些测试任务未按顺序排列.Gradle在这里聘请了多名工人.有没有办法使这也顺序?

java unit-testing gradle

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

使用多个goroutine写入相同的通道

这段代码正常工作,我的问题就是原因.我了解到,在阻止之前,您只能将一个值发送到无缓冲的通道.但是在我的代码中,我写了两次,但是来自不同的例行程序,它起作用.如果有人能向我解释原因,我将不胜感激!

func main(){
    var ch chan string =make(chan string)
     go write(ch)
     go write2(ch)
     go read(ch)
        select{}
}

func write(ch chan string){
    for{
        ch<-"write1"
    }
}

func write2(ch chan string){
    for{
        ch<-"write2"
    }
}

func read(ch chan string){
    for{    
        time.Sleep(time.Second)
        select{
            case res:= <-ch: fmt.Println(res)
            case <-time.After(time.Millisecond*200): fmt.Println("time out")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

go channels

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

golang diff类型的函数提供“未解析的类型”

我正在使用类似下面的功能

import (
   "m5/cmd/models"
)

func  TypeCommand(m Modules) string {

…

}
Run Code Online (Sandbox Code Playgroud)

现在我要改变

func (m models.Modules) TypeCommand() string {

}
Run Code Online (Sandbox Code Playgroud)

现在我收到错误消息“未解决的类型模块”,为什么?第一个函数被编译...

go

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