小编jen*_*wan的帖子

Java:在同一个JVM中从运行时获取类的字节码

相关: 有没有办法在运行时获取类的字节码?

我正在为Clojure增加耐久性,我终于到了准备添加功能的地步.在Clojure中,函数通过调用方法(以及其他方式)进行字节编译.这样,功能就是一流的.为了使这些持久,我需要序列化和反序列化这些类.如何在不访问.class文件的情况下获取类的字节码?

如果我弄错了,请纠正我,但使用代理需要生成一个单独的VM,代理连接到第一个VM.我需要从同一个VM做到这一点.

使用Serializable来设置和获取Class对象是不够的.在反序列化时,我需要加载该类,并且在后续VM实例上,可能存在类名冲突.我需要修改字节码,以便在反序列化/类加载时将类重命名为唯一的.

java persistence bytecode clojure java-bytecode-asm

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

在Clojure服务器中嵌入NREPL的最佳实践方法

我刚开始在Clojure开发服务.我对如何接近服务器关机感到有点迷茫.

我正在使用Clojure 1.5.1.对于日志记录,我使用的是Timbre 1.5.3.我想将NREPL嵌入到我的服务器中以进行热代码部署.

这是我的core.clj文件.核心是我的主要,我正在使用"lein new app"生成的app shell.

(ns extenium.core
  (:require [taoensso.timbre :as t]
            [clojure.tools.nrepl.server :as nrs])
  (:gen-class))

(def nrepl-server)

(defn start-nrepl-server []
  (t/info "Starting nrepl server on port 8628")
  (alter-var-root #'nrepl-server
                  (constantly
                   (nrs/start-server :port 8628)))
  (t/info "Started nrepl server"))

(defn stop-nrepl-server []
  (t/info "Stopping nrepl server")
  (nrs/stop-server nrepl-server)
  (t/info "Stopped nrepl server"))

(defn start []
  (alter-var-root #'*read-eval*
                  (constantly
                   false))
  (start-nrepl-server))

(defn stop []
  (stop-nrepl-server))

(defn -main [& args]
  (start))
Run Code Online (Sandbox Code Playgroud)

当我"lein run"时,nrepl-server按预期启动,并将信息消息发送到终端.然后我与Emacs的"nrepl"联系.没问题.从Emacs我执行"(extenium.core/stop)".此时,我在Emacs上收到"Stopping nrepl server"消息(意味着stdout被重定向到客户端).连接关闭(如预期的那样),我从未看到"已停止的nrepl服务器"消息.精细.

我看着终端,我没有看到"停止......"或"停止..."的消息.相反,我得到以下异常:

Exception in thread "nREPL-worker-0" java.lang.Error: …
Run Code Online (Sandbox Code Playgroud)

clojure nrepl

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

Python - 使用Setuptools打包Alembic迁移

在Setuptools setup.py文件中打包Alembic迁移文件的正确方法是什么?一切都在我的回购根源中alembic/.

这是一个Python应用程序,而不是库.

我想要的安装流程是有人可以pip install将轮子作为我的应用程序.然后,他们可以通过运行类似的方式来初始化应用程序数据库<app> alembic upgrade --sqlalchemy.url=<db_url>.然后升级将需要a pip install -U,之后他们可以再次运行Alembic命令.

这是非正统的吗?

如果没有,我将如何做到这一点?当然是console_scripts entry_points.但除此之外?

python setuptools alembic

11
推荐指数
2
解决办法
716
查看次数

跟进viewDidUnload与dealloc问题

澄清问题作为后续行动:

我应该在viewDidUnload中做些什么? 我什么时候应该在 - (void)viewDidUnload而不是-dealloc中释放对象?

因此,假设存在内存错误,视图被隐藏,并且调用了viewDidUnload.我们做发布和零舞蹈.之后不需要整个视图堆栈,因此调用dealloc.因为我已经在viewDidUnload中有release和nil的东西,所以我没有在dealloc中使用它.完善.

但是如果没有低内存错误,则永远不会调用viewDidUnload.dealloc被调用,因为我没有release和nil的东西,所以有内存泄漏.

换句话说,如果没有首先调用viewDidUnload,是否会调用dealloc?

实际的后续操作就是,如果我在viewDidLoad中分配和设置一些内容,并在viewDidUnload中将其释放并设置为nil,我是否将其保留为dealloc,或者我是否在dealloc中执行防御性nil检查并释放/没有它,如果它不是零?

iphone memory-management objective-c

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

Common Lisp源代码组织

我是CL的新手,正在使用AllegroCL.我正在试图弄清楚如何组织我的源代码以满足以下要求:

  1. 我想阻止src代码包含我的测试套件.
  2. 我想以可移植的方式声明项目依赖项(src和test deps),以便我团队中的其他成员不必修改他们的系统.
  3. 我希望在签到时简化持续集成,包括构建和测试.

我一直在尝试创造性地使用ASDF来满足这些要求,但我无法做到这一点.其他人如何解决这个问题?这两个要求是不是"Lispy"?

common-lisp asdf

7
推荐指数
3
解决办法
1476
查看次数

SQL Server 2000中的缓存函数结果

我想记住函数结果的性能,即懒惰地填充索引在函数参数上的缓存.第一次调用函数时,缓存将没有输入参数的任何内容,因此它将在返回之前计算并存储它.后续调用只使用缓存.

但是,似乎SQL Server 2000有一个关于函数"确定性"的愚蠢任意规则.INSERT,UPDATE和常规存储过程调用是被禁止的.但是,允许扩展存储过程.这是如何确定的?如果另一个会话修改了数据库状态,则函数输出仍会发生变化.

我疯了.我以为我可以让缓存对用户透明.这可能吗?我没有部署扩展存储过程的权限.

编辑:

这种限制仍然存在于2008年.出于上帝的缘故,你不能叫兰德!

缓存将由我在DB中实现.缓存是用于缓存的任何数据存储...

编辑:

在基础数据的更改之外,不存在函数的相同参数将产生不同结果的情况.这是一个BI平台,唯一的变化来自计划的ETL,此时我将TRUNCATE缓存表.

这些是I/O密集型时间序列计算,大约为O(n ^ 4).我没有权限更改基础表或索引.此外,许多这些函数使用相同的中间函数,缓存允许使用这些函数.

UDF不是真正的确定性,除非它们考虑到数据库状态的变化.重点是什么?是SQL Server缓存吗?(Ironic.)如果SQL Server正在缓存,那么它必须在对模式绑定的表的更改时到期.如果它们是模式绑定的,那么为什么不绑定函数修改的表?我可以看到为什么不允许触发,尽管这只是草率的; 只是架构绑定过程.而且,BTW,为什么允许扩展存储过程?你无法跟踪那些确保确定性的行为!哎呀!

编辑:

我的问题是:有没有办法以一种可以在视图中使用的方式懒惰缓存功能结果?

sql-server caching sql-server-2000

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

Common Lisp的持续集成?

CL有任何持续的集成框架吗?具体来说,我正在寻找:

  • 自动"构建",即从基础状态加载ASDF系统
  • 自动化测试
  • 状态推送 - 电子邮件通知等,特别是对于损坏的构建和失败的测试
  • 状态拉动 - 网站,日志,开发团队可以阅读的任何内容
  • 状态历史记录 - 保存并易于浏览的运行详细信息
  • 在我看来,Lisp社区的开源方面支持独立开发.对团队的支持很少.只需创建一个可以由随机开发人员检出的具有lib依赖关系的项目主干,就必须手动滚动.

    version-control continuous-integration unit-testing common-lisp

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

    Erlang发布最佳实践?

    我是Erlang的新手,并且我一直在检查Faxien + Sinan和Rebar,而Erlang OTP的基本原理似乎是在单个Erlang图像实例上安装应用程序和发行版。使发布保持自我控制的最佳实践是什么?有没有办法打包发行版本,而不必为要部署到的计算机修改站点?如何将所有依赖项收集到代码库中进行管理?

    也许我不赞成……我来自Java背景,“什么都没有预装,但JVM”的哲学似乎非常不同。

    erlang dependencies release build

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

    面向方面的SQL Server

    是否有可以安装到可以强制执行A​​OP标准的SQL Server实例(2008或更高版本)中的库,开放源代码或其他库?我真的希望避免在我们的开发人员中强制执行模板的跨领域问题.如果它可用,AOP似乎是最好的选择.

    如果它不存在,我将尝试自己滚动.

    编辑:

    一些示例可能是子类化Table以生成特定类型的表,例如mixin特性.我在一个有很多审计要求的数据仓库环境中,所以我们创建了很多双时态表.拥有一个真棒太棒了

    CREATE BITEMPORAL TABLE
    
    Run Code Online (Sandbox Code Playgroud)

    将添加事务和有效时间并根据这些表修改CRUD语句的语句.(是的,我知道视图和触发器可以做到这一点.)更难实现的是具有特定日志记录或事务特征的存储过程,例如

    CREATE PROC FOO /* VERBOSE, ATOMIC, SERIALIZABLE */
    
    Run Code Online (Sandbox Code Playgroud)

    并使用适当的T-SQL自动包裹身体来做这些事情.是的,可以添加存储过程来获取这些参数并执行SQL生成并编译这些工件.但缺点是没有强制执行 - 开发人员可以绕过该过程并直接使用CREATE PROC - 并且syscomments中的内容是生成的代码,而不是AOP注释版本,它打破了抽象.

    sql-server aop

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