我在哪里工作,我们使用Log4j进行Web应用程序日志记录.log4j.jar位于应用程序级别,而不是容器级别.我们正在使用每日滚动文件appender.我们的log4j.properties文件根据应用程序包名称定义了appender,因此只有应用程序包及其下面的类才会记录到我们应用程序的日志文件中.
在我的应用程序中,我正在使用一些支持类扩展我们的框架.这些类不在应用程序的包中,因为它们不是我的应用程序所独有的,最终会被制作成jar库以供其他应用程序使用.因此,我的日志记录语句不会被我的应用程序的appender选中,因此不会记录到我的应用程序的日志文件中.
我想允许jar中的类使用类登录到应用程序的日志文件.但是,如果我根据我的类名在我的应用程序的log4j属性文件中创建一个appender,我怀疑当多个应用程序使用我的jar时,由于log4j.properties文件中的类名相同,只有一个应用程序日志文件会收到我的jar的日志记录语句,它将从使用该jar的每个应用程序接收所有日志记录语句.我认为情况就是这样,因为我们使用静态Logger.getLogger()调用来检索记录器.
我首先想知道我的恐惧是否有效,如果真的是当同一个或不同容器中的多个Web应用程序同时使用我的jar时会发生什么.
我还想知道这种行为是否存在"边界"变化.例如,无论log4j.jar是容器级jar还是app级jar,或者每个容器是否在单独的JVM中运行,是否存在此问题?
最后,如果是这种情况,我想知道我应该用什么策略来解决这个问题.
提前致谢!
所以我们有这个支持UTF8数据的网络应用程序.万岁UTF8.我们可以将用户提供的数据导出为CSV没问题 - 此时它仍然是UTF8.问题是当你在Excel中打开一个典型的UTF8 CSV时,它会将其读作ANSII编码文本,并因此尝试读取两个字节的字符,如ø和ü作为两个单独的字符,最终会失败.
所以我已经做了一些挖掘(Intervals人员在这里有一个有趣的帖子),并且有一些有限的,如果有可笑的烦人选择.其中:
看起来无论如何,我可能会继续为那些不使用它的人提供一个普通的CSV文件,以及一个单独的Excel下载选项.
生成那个能正确支持UTF8的Just-For-Excel文件的最简单方法是什么,亲爱的Stack Overflowers?如果最简单的选项仅支持最新版本的Excel,那仍然是有意义的.
我在Rails堆栈上执行此操作,但很奇怪.Net-ers和任何框架上的人员如何处理这个问题.我自己在几个不同的环境中工作,这绝对是一个将再次出现的问题.
更新2010-10-22:我们在时间跟踪系统Tempo中使用Ruport gem在我第一次发布此问题时提供CSV导出.我的一个同事Erik Hollensbee为Ruport提供了一个快速过滤器,为我们提供了实际的Excel XSL输出,我想我会在这里分享其他任何红宝石:
require 'rubygems'
require 'ruport'
require 'spreadsheet'
require 'stringio'
Spreadsheet.client_encoding = "UTF-8"
include Ruport::Data
class Ruport::Formatter::Excel < Ruport::Formatter
renders :excel, :for => Ruport::Controller::Table
def output
retval = StringIO.new
if options.workbook
book = options.workbook
else
book = Spreadsheet::Workbook.new
end
if options.worksheet_name
book_args = { :name => options.worksheet_name }
else
book_args = { }
end
sheet = …Run Code Online (Sandbox Code Playgroud) 该关键字protected授予对同一包和子类中的类的访问权限(http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html).
现在,每个类都有java.lang.Object超类(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html).
因此,我得出结论,每个班级都可以访问其java.lang.Object方法,即使它们是protected.
看一下下面的例子:
public class Testclass {
public Object getOne() throws CloneNotSupportedException {
return this.clone();
}
public Object getTwo() throws CloneNotSupportedException {
return ((Object) this).clone();
}
}
虽然getOne()编译很好,但getTwo()给出了
Testclass.java:6: clone() has protected access in java.lang.Object
return ((Object) this).clone();
我既不明白为什么getTwo()不编译也不知道有什么区别(关于java.lang.Objects成员的访问)getOne().
GWT.create()是GWT中的反射等价物,但它只接受类文字,而不是类名的完全限定String.如何使用GWT.create()动态创建带有字符串的类?
根据许多GWT论坛帖子,这是不可能的,但是如何在Rocket-GWT(http://code.google.com/p/rocket-gwt/wiki/Ioc)和Gwittir(http://代码)等框架中完成.google.com/p/gwittir/wiki/Introspection)
假设我有'myStoredProcedure',它将Id作为参数,并返回一个信息表.
是否可以编写类似于此的SQL语句?
SELECT
MyColumn
FROM
Table-ify('myStoredProcedure ' + @MyId) AS [MyTable]
Run Code Online (Sandbox Code Playgroud)
我觉得它不是,但在遗留代码和链接服务器表的情况下,它会非常有用
谢谢!
我的问题是:我如何使用SendMessage()来实现两个线程之间的线程通信,一个带有窗口(GUI),另一个没有窗口?
问题是SendMessage()需要一个句柄(HWND)?
关于我的项目的另一个细节:两个线程,一个运行托管代码(一个带有用户界面),另一个运行本机代码(没有窗口的代码)
非常感谢你!
是否可以在不使用C++的情况下进行CAD/CAM软件?我的公司使用c/C++开发了他们的软件,但这已经超过10年了.今天,有许多遗留代码切换会迫使我们摆脱,但我想知道实际的风险是什么.我们有很多用于刀具路径计算,特征识别和模拟以及3D渲染的数学算法,我想知道C#是否可以处理所有这些而没有很大的性能损失.
在c#中重写这样的算法是不是乌托邦,或者该语言是否只处理UI.我们不是在谈论游戏开发(Halo 3或Call of Duty),那么CAD/CAM真正需要多少处理?
在这件事上有人可以启发我吗?我的大多数同事都是硬核C++程序员,虽然我用c ++编程我喜欢.NET,但除了基本用户界面之外我很难向他们销售.NET.考虑在这样的领域中切换到.NET是否有意义,或者这不是一个明智的想法?
谢谢
我正在尝试动态定义调用另一个带有options参数的函数的函数:
class MyClass
["hour", "minute", "second"].each do |interval|
define_method "get_#{interval}" do |args|
some_helper(interval, args)
end
end
def some_helper(interval, options={})
# Do something, with arguments
end
end
Run Code Online (Sandbox Code Playgroud)
我希望能够以这两种方式在MyClass上调用不同的方法(使用和不使用可选参数):
mc = MyClass.new
mc.get_minute( :first_option => "foo", :second_option => "bar")
mc.get_minute # This fails with: warning: multiple values for a block parameter (0 for 1)
Run Code Online (Sandbox Code Playgroud)
在第二次拨打分钟时,我看到了这个警告:
警告:块参数的多个值(0表示1)
在Python中,我有一个字典列表,如下所示:
matchings = [
{'id': 'someid1', 'domain': 'somedomain1.com'},
{'id': 'someid2', 'domain': 'somedomain2.com'},
{'id': 'someid3', 'domain': 'somedomain3.com'}
]
Run Code Online (Sandbox Code Playgroud)
而且,我有一个变量:
the_id = 'someid3'
Run Code Online (Sandbox Code Playgroud)
检索项目域值的最有效方法是什么?
试图让我的WCF服务在IIS 6下运行.
我创建了.svc并aspnet_isapi.dll映射根据:http://msdn.microsoft.com/en-us/library/ms752241.aspx
查看Server1.svc页面时,我得到的是404.
我已经使用简单的.aspx页面测试了该站点,以确保URL正常工作,但同样不再使用.svc扩展名.
我安装了.NET 3.5 SP1,我web.config正在引用3.5程序集,并且在查看.aspx页面时我没有收到错误,所以它可能会正确地选择那些程序集.
可能有什么不对?