小编Zoy*_*oyd的帖子

在多任务应用程序中管理GUI和EDT

我开发了一个用于创建和提取存档的Java应用程序 - 比如WinRAR.您可以使用多线程同时创建多个归档.最近,我希望在每个创建时在新的JFrame中以JProgressBar的形式在存档创建期间添加信息状态.

但我的问题是在新的状态框架和创建存档的线程中生成信息.这就是我在存档线程中创建JFrame以更新当前进度条的原因.

但就像我可以在各种信息源和你的答案/评论中阅读它一样,它反对Java Swing和性能; 我无法在EDT的其他地方创建摆动对象.

但那么,我该如何解决我的问题呢?如何在存档的写入和状态JFrame(使用JProgressBar)之间建立通信?


编辑:

我实现了SwingWorker来管理我的应用程序中的GUI.现在已经完成了,我还有一个问题:

使用SwingWorker,如何使用状态框架按钮上的事件对后台任务执行操作?(示例:暂停压缩或停止压缩.)

java user-interface swing multithreading event-dispatch-thread

3
推荐指数
2
解决办法
1255
查看次数

在事件派遣线程---想要离开它

假设我拥有的方法有时在Event Dispatch Thread上调用,有时则不然.现在假设我希望在该方法中的一些代码调用除事件调度线程之外的线程.

有没有办法在此时在EDT以外的线程上运行某些代码?

我试过这个:

        if (SwingUtilities.isEventDispatchThread()) {
            new Runnable() {
                @Override
                public void run() {
                    myMethod();
                }
            }.run();
        } else {
            myMethod();
        }
Run Code Online (Sandbox Code Playgroud)

但是即使我创建了一个新的Runnable,myMethod()也最终在EDT上运行.

有没有办法在此时在EDT以外的线程上运行myMethod()?

java multithreading event-dispatch-thread awt-eventqueue

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

HTTP路由器和中间件

我正在使用Julien Schmidt的GoLang路由器,并尝试让它与Alice合作来连接中间件.我收到这个错误:

不能使用commonHandlers.ThenFunc(final)(类型http.Handler)作为路由器的参数httprouter.Handle.GET

而且我不太清楚为什么.

我的代码是:

package main

import (
  "log"
    "net/http"

    "github.com/julienschmidt/httprouter"
  "github.com/justinas/alice"
    "gopkg.in/mgo.v2"
    //"gopkg.in/mgo.v2/bson"
)


func middlewareOne(next http.Handler) http.Handler {
  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    log.Println("Executing middlewareOne")
    next.ServeHTTP(w, r)
    log.Println("Executing middlewareOne again")
  })
}

func middlewareTwo(next http.Handler) http.Handler {
  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    log.Println("Executing middlewareTwo")
    if r.URL.Path != "/" {
      return
    }
    next.ServeHTTP(w, r)
    log.Println("Executing middlewareTwo again")
  })
}

func final(w http.ResponseWriter, r *http.Request) {
  log.Println("Executing finalHandler")
  w.Write([]byte("OK"))
}

func main() {
    session, err := mgo.Dial("conn-string") …
Run Code Online (Sandbox Code Playgroud)

middleware go go-alice

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

特定路由上的中间件

在 中go-chi,在单个路由级别设置中间件,而不仅仅是针对所有路由全局设置

// Routes creates a REST router
func Routes() chi.Router {
    r := chi.NewRouter()
    r.Use(middleware.Captcha)

    r.Post("/", Login)

    return r
}
Run Code Online (Sandbox Code Playgroud)

如何Login指定唯一的中间件或从通用中间件中排除?

middleware http go go-chi

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

需要刷新Java EDT(事件调度队列)

我有一个Java应用程序,其中许多线程正在快速写入StyledTextBox.在某些时候,所有线程都被终止.但是,TextBox继续接收一些文本,大概是因为调度队列有点备份了.是否有可能以某种方式强制刷新EDT,以便在线程终止时,TextBox的更新立即结束?

谢谢你,吉姆

java queue swt dispatch event-dispatch-thread

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

未能中止()上下文 - 杜松子酒

我有以下 Gin 中间件:

func CheckAppId(appC *core.Context) gin.HandlerFunc {
    return func(c *gin.Context) {
        //get Basic Auth credentials
        appId, token, _ := c.Request.BasicAuth()

        if appId == "" {
            c.JSON(http.StatusOK, gin.H{"code": "MISSING_APP_ID", "message": "Your request is missing an application id"})
            return //this is being ignored???
        }

        c.Next() //this still gets hit
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果appId == ""JSON 被返回c.Next()并被执行。这是预期的行为吗?

编辑 我以为问题已售出,但似乎正在发生同样的事情。我现在有:

func CheckAppId(appC *core.Context) gin.HandlerFunc {
    return func(c *gin.Context) {
        //get Basic Auth credentials
        appId, token, _ := c.Request.BasicAuth()

        if appId …
Run Code Online (Sandbox Code Playgroud)

go go-gin

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

Accessing route in middleware using Gin

I have a user.save route (below) in my Golang API that can be used to create and update a user depending on whether an id was provided in the request object. The route uses the auth middleware which other routes do too.

api.POST("/user.save", auth(), user.Save())
api.POST("/user.somethingElse", auth(), user.SomethingElse())
Run Code Online (Sandbox Code Playgroud)

Here is my middleware:

func auth() gin.HandlerFunc {
    return func(c *gin.Context) {
        //I would like to know here if user.save was the route called
        //do authy stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

I'm thinking that …

go go-gin

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

如何使用毒蛇将环境变量解组到切片?

我有以下代码:

package main

import (
    "log"

    "github.com/spf13/viper"
)

func main() {
    viper.SetEnvPrefix("myprefix")
    viper.SetDefault("languages", []string{"french", "spanish"})
    viper.BindEnv("name")
    viper.BindEnv("languages")

    type config struct {
        Name      string
        Languages []string
    }

    var C config

    err := viper.Unmarshal(&C)
    if err != nil {
        log.Fatalln("unable to decode into struct, %v", err)
    }

    log.Println(C)
    log.Println(len(C.Languages))
}
Run Code Online (Sandbox Code Playgroud)

$MYPREFIX_LANGUAGES未设置C.Languages的长度为2(例如缺省值)。当我设置$MYPREFIX_LANGUAGES为“英语西班牙语法语”时,我得到的长度为1。它只是将变量作为1个长字符串,而不是一个切片。如何获得切片([]string{"english", "spanish", "french", "russian"}

go viper-go

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

gorm db.find(&users) to json with gin in golang

这是我的 GET 方法问题是我在 json 中得到的只是一个用户,而不是我的数据库中有 3 个用户。

func GetUsers(c *gin.Context) {

var users = db.Find(&models.Person{})
c.JSON(200, users)
}
Run Code Online (Sandbox Code Playgroud)

go go-gorm go-gin

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

Golang gin-gonic JSON 绑定

我有下面的结构

type foos struct { Foo string `json:"foo" binding:"required"`}
Run Code Online (Sandbox Code Playgroud)

我有以下端点

  func sendFoo(c *gin.Context) {
      var json *foos

      if err := c.BindJSON(&json); err != nil {
          c.AbortWithStatus(400)
          return
      }

      // Do something about json
   }
Run Code Online (Sandbox Code Playgroud)

当我发布此 JSON 时

{"bar":"bar bar"}
Run Code Online (Sandbox Code Playgroud)

错误始终为零。我写了需要绑定,但它不起作用。但是当我像下面这样更改端点时,

func sendFoo(c *gin.Context) {
    var json foos //remove pointer

    if err := c.BindJSON(&json); err != nil {
          c.AbortWithStatus(400)
          return
    }

    // Do something about json
}
Run Code Online (Sandbox Code Playgroud)

绑定有效,错误不是零。为什么?

json pointers go

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