有没有办法在eclipse控制台中着色部分日志.我知道我可以发送错误和标准流并对它们进行不同的着色,但我更喜欢ANSI转义代码(或任何其他,HTML?)的行,我可以在字符串中嵌入颜色以使其在日志.
它确实有助于使重要的部分脱颖而出而不依赖于奇怪的布局,而是将布局保持为log4j设置
这是我正在寻找的一个例子:
[INFO]网格完整....... false
在粗体部分为蓝色的情况下,这种着色可以通过应用程序在一定程度上控制.像这样(标签是概念性的和任意的,但你明白了):
log.info(String.format("网格完整....... <blue>%s </blue>",isComplete));
更一般地说,它是在日志中嵌入元信息以帮助显示这些日志的能力.就像我们标记网页内容以帮助通过CSS呈现信息一样.
我必须与一组Web服务进行交互,每个Web服务都有自己的WSDL和XSD.XSD有时合并在一个文件中,有时会分布在多个文件中(20-30).但是,根据经验,我知道大多数消息结构和数据共享一个大的公共子集,在不同的事务中可能只有20%不同.
不幸的是,我无法控制服务器部件或服务声明,所以让他们修复它是不可能的.客户端的第一个版本单独生成每个服务,然后将它们用作单独的外观,以形成连贯的更高级别服务,作为另一个系统的适配器.
我使用CXF和默认的JAXB绑定,并为每个服务强加了不同的生成包.我这样做是因为一些大多数服务都使用通用数据模型,但并非所有服务都使用相同的版本或定制,所以我有冲突,因此选择了暴力,所以我可以完成系统.
但是,这会导致适配器的内存要求在每个服务加载其上下文时通过屋顶.现在,即使在我开始发送请求和处理响应之前,我还有500M的内存仅用于容纳服务客户端的适配器.虽然我可以使用当前情况毫无问题地运行系统,但这会产生危害解决方案部署的约束; 我的客户希望大幅减少这种情况(60%或更多),以便该系统可以与其他系统一起安装而无需硬件升级.
问题如下: 是否有工具或技术允许我将每个交易的公共部分放在一起,以便它们可以生成一次并在需要时引用?
除了将系统重新分解为不同的框架或数据绑定所需的时间之外,我不受CXF或JAXB的约束.
预先感谢您的帮助.
---编辑---
谢谢Blaise.这指向JAXB的一个有用的功能:剧集.不幸的是,我仍然需要提取不同服务的公共基础部分.所以现在我需要的是一种通过结构差异提取这个公共部分的方法,这是一个diff工具,可以了解XSD描述的结构和类型层次结构,以便使用适当的引用来连接公共部分.专业部分.
来自maven 文档
pluginManagement:是一个沿侧插件看到的元素.插件管理以大致相同的方式包含插件元素,除了不是为这个特定的项目构建配置插件信息,它旨在配置从这个继承的项目构建.但是,这仅配置在子节点的plugins元素中实际引用的插件.孩子们有权重写pluginManagement定义.
现在:如果我在父POM中有这个
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<executions>
Some stuff for the children
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)
我在父项目上运行mvn help:effective-pom我得到了我想要的东西,即直接在构建下的插件部分(做工作的那个)仍然是空的.
现在,如果我执行以下操作:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<executions>
Some stuff for the children
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<inherited>true</inherited>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
mvn help:effective-pom我再次得到我想要的东西,插件包含声明的内容,并且忽略了pluginManagement部分.
但改变如下
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<executions>
Some stuff for the children
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
<inherited>false</inherited> <!-- …Run Code Online (Sandbox Code Playgroud) 使用Eclipse编码时,如何关闭启动多行注释时出现的"*"注释?
而不是看到这个,
/**
* Here is a comment
* some more
*/
Run Code Online (Sandbox Code Playgroud)
我能得到这个吗?
/**
Here is a comment
some more
*/
Run Code Online (Sandbox Code Playgroud)
如果你想知道"/**"是因为我使用doxygen.
.NET世界中管理导致版本冲突的传递依赖项的最佳实践是什么?
详情:项目A取决于项目B,而项目B又取决于图书馆C.
也
项目A还依赖于项目X,它取决于库C的不同和(可能)不兼容的版本.
A-> B-> Cv1.0
&
A-> X-> Cv2.0
其中
Cv1.0 <> Cv2.0
有没有办法让这项工作?
可以在不使用GAC的情况下完成吗?
即使B和X只是二进制格式(源不可访问),它能否完成?
换句话说,有一种方法可以让Project B和X在项目A中一起使用时使用它们自己的依赖项而不会引起冲突.
注意:我意识到理想情况下我根本不应该有这个问题,但是由于对外部库的依赖扩展,这将是一个不可避免的副作用.所以我想知道它应该如何最好地处理它.
我在一个不相关的问题上看到了一些代码,但它让我很好奇,因为我从来没有看到过使用Java Generics这样的构造.创建一个可以作为类型参数本身或其自身后代的泛型类会有什么用处.这是一个例子:
abstract class A<E extends A<E>> {
abstract void foo(E x);
}
Run Code Online (Sandbox Code Playgroud)
我想到的第一件事就是将列表作为参数的列表.使用这段代码感觉很奇怪,你如何声明A类型的变量?递归声明!?
这甚至有用吗?如果是这样,你们中的任何人在代码中看到了吗?怎么用?
编辑
事实上,事实证明我的问题与这个只有不同的措辞相同,但这个问题的答案也将回答我的问题.
同样感谢参考奇怪的重复模板模式,该模式给出了一些历史背景和关于该主题的进一步解释.
这篇旧博客文章可能会给我们Java家伙提供最好的解释.
现在很难在这里选择一个正确的答案,因为它们都很有用,所以我会选择最终产生最多阅读材料的那个(上面引用)
作为这个问题的必然结果,我想知道是否有好的比较研究我可以参考并传递使用RDMBS的优点做连接优化与系统非规范化,以便始终一次访问一个表.
具体来说,我想要的信息:
有一段历史可以看到我要去的地方:我们的系统使用内部数据库抽象层,但它很老,无法处理多个表.因此,必须在每个相关表上使用多个查询来实例化所有复杂对象.现在为了确保系统始终使用单个表格,在整个表格中使用重度系统非规范化,有时会将两个或三个层次压平.至于nn关系,他们似乎已经通过精心设计他们的数据模型来解决这个问题,以避免这种关系,并始终回到1-n或n-1.
最终结果是一个复杂的过于复杂的系统,客户经常抱怨性能.在分析这样的瓶颈时,他们永远不会质疑系统所基于的这些基本前提,并且总是寻找其他解决方案.
我错过了什么 ?我认为整个想法是错误的,但不知何故缺乏无可辩驳的证据来证明(或反驳)它,这就是我转向你的集体智慧,指向我的良好,被广泛接受的文学,可以说服我团队中的其他人方法是错误的(说服我,我对于一致的数据模型我太偏执和教条).
我的下一步是建立自己的测试平台并收集结果,因为我讨厌重新发明轮子我想知道这个主题已经有了什么.
----编辑注意:系统最初是使用没有数据库系统的平面文件构建的...后来才将其移植到数据库,因为客户端坚持使用Oracle进行系统管理.他们没有重构,只是简单地添加了对现有系统的关系数据库的支持.平面文件支持后来被删除,但我们仍在等待重构利用数据库.
嗨我在java中使用了很多临时文件,我的问题是它们不会被删除.
无需实现我自己的临时文件管理处理(不是很难,我授予你,但我很懒,加上很多事情要做,如果我可以保存重新发明轮子,那就更好了)有没有办法确保临时文件在磁盘上将以相当规律的方式被删除.
1 - 使用File tmp = File.createTempFile(),确定我可以说tmp.deleteOnExit()但是如果事物在服务中运行它退出的唯一方式是它崩溃(很少发生),或者当系统崩溃时(比如当驱动器完全充满临时文件并翻倒集群时......哎呀!)
理想情况下,创建的实例在某些时候被垃圾收集器收集,并且由于应用程序中有很多空闲时间,如果GC可以完成它的清理并实际删除文件,那就太花哨了.从内存中取消引用实例时也可以使用磁盘.
我现在看到的唯一方法是重载File类并添加一个finalized方法......如果我这样做,那么可以选择我自己的临时文件管理器!
长话短说,我可以使用垃圾收集器来清理系统资源(即文件)吗?
谢谢大家的答案.我接受了Christoffer,因为它是最简单的实现,也是我最终做的事情.
我想,经过这么多年的清理让我忘记了基本的家务管理,虽然我在C++的好日子里做了很多努力.
在我必须维护的旧应用程序中进行一些法医考古调查时,我遇到了这个:
这是一个最近转换为 .NET 4.0 的 WPF 应用程序,此代码在后台工作程序中运行
if(bgWorker1.IsBusy || bgWorker2.IsBusy)
{
Thread.Sleep(100);
Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Background,
new System.Threading.ThreadStart(delegate { })
);
}
Run Code Online (Sandbox Code Playgroud)
1 - 通过使用无操作委托调用线程(主 gui)会实现什么可能的副作用。其他两个线程也在主 gui 线程上执行调用,但只有这个线程将优先级设置为 Normal 以外的其他线程(尽管它们使用 Action 而不是 TreadStart)。
2 - 我有一些奇怪地类似于此应用程序死锁的情况,有些东西告诉我这可能是原因。(无缘无故地绕过优先级和主 gui 线程)。
谢谢
作为这个问题的扩展,有没有办法从 ServletContextListener 的范围内获取同一容器中特定页面的有效 URL?
为什么我需要这个的一些背景:
在一个相当复杂的系统中,我设置了一个简单的 servlet 来显示 JSON 中的当前信息,这样我就可以根据需要轻松地显示它。
现在我想更进一步,保留一份历史记录,以查看这些测量点的时间演变。
我已经设置了一个简单的 ServletContextListener,它启动一个线程以按设定的时间间隔轮询同一个页面,我可以将数据保存到文件中,然后我可以在以后读取。
一切正常,除了我必须通过配置手动指定目标页面的 URL。如果我能以编程方式获取这些数据,那么会减少一个可能出错的配置点。我认为它不应该太难,因为一切都源于相同的上下文,但事实证明它显然没有那么简单。由于一切都紧密联系在一起并且该线程在服务器上运行,因此主机地址可以硬编码到本地主机。也就是说,我仍然需要获取 webapp 的端口和基本路径。从那里我可以接手,因为我知道 webapp 中的结构。
所以......我怎样才能以编程方式获取该信息,并让稍后部署应用程序的可怜的 sap 的生活更轻松!
来自Java或Python我习惯于制作这样的结构,通常它"只是工作".最近发现了C#,除了一些挫折之外,发现它很愉快.
令人沮丧的是,我必须通过多态构造(覆盖,虚拟等)来掌握它.
这是一个我还没有找到如何"只是做工"的案例.
class Polymorphism
{
public interface IPerson
{
String Name { get; set; }
}
public class Doctor : IPerson
{
public String Name { get; set; }
}
public class DoctorGroup
{
public IEnumerable<IPerson> Members
{
get
{
return DoctorMembers;
}
}
public List<Doctor> DoctorMembers { get; set; }
public DoctorGroup()
{
DoctorMembers = new List<Doctor>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里DoctorMembers是IPersonS,所以当记者问一个我应该能够仅仅返回医生的名单IEnumerable中IPerson.
public IEnumerable<IPerson> Members
{
get
{
return DoctorMembers;
} …Run Code Online (Sandbox Code Playgroud) 我有一个系统,我通过一个定义良好的访问点创建一个插件.但是,有问题的插件使用了一些框架也使用但不同版本的jar.
代码的结构是一种方式,在框架中集成的代码(扩展插件扩展点)和执行实际工作的代码非常好地解耦(基本上归结为少于10个类的API).然而,在这几个类背后隐藏着一个相当大而复杂的系统(60+ jar依赖)
问题如下:
如何确保API类实例化的任何内容都是使用独立的jar文件私有库完成的?
换句话说,如何隔离插件以使其与自己的私有库一起运行而不会干扰主应用程序的库?
----编辑----到目前为止,只有两种方法可以实现,就是嵌入一个像OSGi这样的框架,或者提供我自己的类加载器实现.后者可以完成,并且在网上提出了许多变体,虽然我发现什么都不会让我对手头系统所需的稳定性充满信心.
这让我们回到OSGi,我希望有一个更轻量级的解决方案,但也许一旦我学会了技术,它将证明可以做我想要的而不需要太多的努力.