我是Java的新手,刚刚开始弄清楚类加载器的概念.现在我对log4j有一些关于它使用线程上下文类加载器的问题.
我收到以下错误: A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable. The class "org.apache.log4j.Appender" was loaded by [java.net.URLClassLoader@105691e] whereas object of type "org.apache.log4j.ConsoleAppender" was loaded by [sun.misc.Launcher$AppClassLoader@16930e2]. Could not instantiate appender named "CONSOLE".
我的应用程序大致以这种方式工作:在初始化URLClassLoader#1构造并加载一些类,这些类使用log4j.后来构建了URLClassLoader#2(它的URLClassLoader#1是它的父级)并加载了更多的类,这些类也使用了log4j.当URLClassLoader#2用于加载这些类时,会出现上述错误消息(还有一些问题存在同一问题).
我当前的解决方法是在加载有问题的类之前将当前线程上下文类加载器设置为URLClassLoader#2,然后将其重置为旧类:
ClassLoader urlClassLoader; // this is URLClassLoader #2
Thread thread = Thread.currentThread();
ClassLoader loader = thread.getContextClassLoader();
thread.setContextClassLoader(urlClassLoader);
try {
urlClassLoader.loadClass(...)
} finally {
thread.setContextClassLoader(loader);
}
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但我不确定它是否是正确的方法.
任何有关此事的见解将不胜感激.另外,为什么log4j迫使我搞乱线程上下文类加载器?为什么不让我传入类加载器(当我不使用时使用默认的加载器)而不是使用线程的?
我是大学的CS专业,为我的Calc III课程编写一个涉及奇异值分解的编程项目.该想法基本上是将m×n维度的图像转换为m×n矩阵,其中每个元素是表示点(m,n)处的像素的颜色通道(r,g,b)的元组.我正在使用Python,因为它是我迄今为止(好)教授的唯一语言.
据我所知,Python通常不喜欢元组作为数组的元素.我对自己进行了一些研究并找到了一种解决方法,即按如下方式预先分配数组:
def image_to_array(): #converts an image to an array
aPic = loadPicture("zorak_color.gif")
ph = getHeight(aPic)
pw = getWidth(aPic)
anArray = zeros((ph,pw), dtype='O')
for h in range(ph):
for w in range(pw):
p = getPixel(aPic, w, h)
anArray[h][w] = (getRGB(p))
return anArray
Run Code Online (Sandbox Code Playgroud)
这适用于赋值的第一部分,它只是将图像转换为矩阵(不涉及线性代数).
然而,具有SVD的部分变得更加棘手.当我调用内置的numPy svd函数时,使用我从我的图像构建的数组(其中每个元素是一个元组),我得到以下错误:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in -toplevel-
svd(x)
File "C:\Python24\Lib\site-packages\numpy\linalg\linalg.py", line 724, in svd
a = _fastCopyAndTranspose(t, a)
File "C:\Python24\Lib\site-packages\numpy\linalg\linalg.py", line 107, in _fastCopyAndTranspose
cast_arrays = cast_arrays + (_fastCT(a.astype(type)),)
ValueError: setting …Run Code Online (Sandbox Code Playgroud) 说我有以下内容
try{
//something
}catch(Exception generic){
//catch all
}catch(SpecificException se){
//catch specific exception only
}
Run Code Online (Sandbox Code Playgroud)
遇到SpecificException会发生什么?它首先将它作为通用异常捕获,然后捕获特定的异常吗?
或者它只捕获SpecificException而忽略通用异常.
我不希望捕获泛型和特殊化的异常.
我遇到了DRY原则(不要重复自己)的问题,并最大限度地减少了围绕Rete规则引擎的依赖性.
大型IT组织中的规则引擎往往是企业(注意资本"E" - 这是严肃的业务).所有规则必须表达一次,很好和DRY,并集中在昂贵的规则引擎中.一个组维护规则引擎,并且是规则集的守护者.
当该IT组织是美国保险公司的一部分时,往往会有很多规则.有些规则适用于所有州和产品,但每个州都倾向于为不同的产品制定自己的法律,因此规则需要反映这些怪癖.这些类别很多:精算,承保,甚至是来自第三方机构的订购信用和机动车报告.
从设计的角度来看,我所面临的问题是集中规则和处理当然是好的和干的,但是有成本:
许多其他企业技术(例如,B2B网关,ESB等)都会出现这些问题.
相同的企业集团也将SOA视为基本原则.但我对正确的服务设计的理解是,它们应该平铺业务空间并且是幂等的,独立的和孤立的.如果服务规则在其他地方维护,服务如何独立和隔离?
我想在简单性方面犯错,认为如果规则只能在孤立的情况下应用,那么消除依赖关系应该优先于集中化.我不确定这个论点会赢得胜利.
所以我的问题是:
仅使用内置加速度计的手机(Android),如何才能找到它的速度?
我一直在修补这个数学,但无论我想出什么功能都会导致速度呈指数增长.我的假设是,在应用程序启动时,手机处于静止状态.这绝对应该能够找到速度(至少粗略地).
我在物理和数学方面也有不错的背景,所以我对这里的任何概念都不会有任何困难.
我该怎么办?
我在IntelliJ 15中看到了一些我以前从未见过的东西,我不知道如何让它停下来.
在我升级的IntelliJ 15中,左边的排水沟,包括断点,行号,版本控制注释等,是几英寸宽.底部滚动条也停在边框处.我无法在常规设置中找到任何内容以使其停止.
这是IntelliJ 15中的新"功能"吗?任何人都可以告诉我如何告诉IDE回到合理的宽度并停止浪费我的所有屏幕空间?
我希望有多个客户端通过LAN连接到服务器并访问/修改服务器中的mySQL数据库.
我该怎么做呢?你们能提供一些我可以研究这个主题的资源/链接吗?
在我正在开发的系统中,我经常需要导航对象树,并根据其状态和值采取行动.在普通的Java中,这导致了繁琐的for循环,if语句等...是否有其他方法来实现树导航,类似于XPath for XML?我知道有JXPath和OGNL,但你知道其他任何库吗?您是否知道任何为特定树导航表达式生成字节码的库,以使处理速度与Java本机fors和ifs一样快?
我需要修剪java中的String,以便:
快速的棕色狐狸跳过laz狗.
变
快棕...
在上面的例子中,我修剪为12个字符.如果我只使用子字符串,我会得到:
快速...
我已经有了使用子字符串执行此操作的方法,但我想知道什么是最快(最有效)的方法,因为页面可能有许多修剪操作.
我能想到的唯一方法是将字符串分割成空格并将其重新组合,直到其长度超过给定长度.还有其他方法吗?也许是一种更有效的方法,我可以使用相同的方法来执行"软"修剪,其中我保留最后一个单词(如上例所示)和硬修剪,这几乎是一个子字符串.
谢谢,
我在Windows 7 64位上的F:驱动器上有一个.csv文件,我想读入pandas并进行操作.
我看到的所有示例都没有读取除简单文件名之外的任何内容(例如'foo.csv').
当我尝试这个时,我得到的错误消息并没有让我明白这个问题:
import pandas as pd
trainFile = "F:/Projects/Python/coursera/intro-to-data-science/kaggle/data/train.csv"
trainData = pd.read_csv(trainFile)
Run Code Online (Sandbox Code Playgroud)
错误消息说:
IOError: Initializing from file failed
Run Code Online (Sandbox Code Playgroud)
我在这里错过了一些简单的东西.谁能看到它?
更新:
我确实得到了这样的更多信息:
import csv
if __name__ == '__main__':
trainPath = 'F:/Projects/Python/coursera/intro-to-data-science/kaggle/data/train.csv'
trainData = []
with open(trainPath, 'r') as trainCsv:
trainReader = csv.reader(trainCsv, delimiter=',', quotechar='"')
for row in trainReader:
trainData.append(row)
print trainData
Run Code Online (Sandbox Code Playgroud)
我在阅读时收到了权限错误.当我检查文件的属性时,我发现它是只读的.取消选中后,我成功读取了892行.
现在大熊猫也在努力.无需移动文件或修改路径.谢谢你的期待.