天道酬勤,学无止境

技术分享

已加载但未应用 log4j2.xml [JVM 参数](log4j2.xml loaded but not applied [JVM argument])

问题 我正在尝试使用 spring batch、spring mvc 和 spring boot 创建一个批处理。 我正在使用 log4j2 进行日志记录。 我的目标是加载外部 log4j2.xml 配置文件,这要归功于这样的 JVM 参数 -Dlog4j.configurationFile=file://C:\{path}\Workspace\demo-indexeur\config\log4j2.xml Spring boot 检测我的文件(我在控制台中没有错误)并加载它,但不应用我放在文件中的配置。 这是我的配置文件加载的调试: 2015-05-06 15:36:53,279 DEBUG Starting configuration XmlConfiguration[location=C:\{path}\Workspace\demo-indexeur\config\log4j2.xml] 2015-05-06 15:36:53,279 DEBUG PluginManager 'Core' found 69 plugins 2015-05-06 15:36:53,279 DEBUG PluginManager 'Level' found 0 plugins 2015-05-06 15:36:53,279 DEBUG PluginManager 'Lookup' found 10

2021-09-20 19:24:15   java   xml   spring   spring-boot   spring-batch

Jenkins 工件插件不会归档空目录(Jenkins artifact plugin does not archive empty directories)

问题 我使用 Jenkins artifact 插件向下流使用。 我的问题是,尽管我付出了很多努力,但没有归档空文件夹。 显然 .svn 文件也没有存档。 回答1 首先,你是对的——空目录不能被归档,因为目录作为 Jenkins 中的工件并没有真正意义。 如果您要将工件复制到另一个作业,则可以在另一个作业中创建目录,或者通过添加.keep文件(左右)并添加**/.keep来确保该目录首先存档您要存档的工件列表。 关于.svn文件或目录未存档的第二点,这也是正确的,因为默认行为是在存档工件时排除某些模式(例如.git 、 *~ )。 要禁用此行为,请单击“Archive the artifacts”构建后步骤下方的“ Advanced...”按钮,并取消选中“Use default excludes”选项。 然后您的.svn工件可以被归档。 回答2 同样的问题在这里,如果与压缩然后隐藏它相比,我提出了一个不太积极的解决方法。 sh "find ${env.WORKSPACE} -type d -empty -exec touch {}/.empty \;" stash name: "src", useDefaultExcludes: false, allowEmpty: true 然后,要unstash请执行以下操作: unstash "src" sh "find ${env

2021-09-20 19:24:11   jenkins   jenkins-plugins

使用 jQuery 更改样式表 href 不太有效(Changing stylesheet href with jQuery doesn't quite work)

问题 我正在创建一个用户将在现场访问的网络应用程序,因此他们希望能够根据环境照明手动将样式从浅色切换到深色。 我正在使用 jQuery。 我在样式表中添加了一个id属性,然后使用toggle()事件创建了一个按钮,在该事件中我将href属性更改为我想要的 CSS 文件。 CSS 文件有几个@import指令,因为我将样式拆分为多个文件以实现可维护性。 我的问题是只应用了主 CSS 文件。 我尝试在@import指令中使用绝对路径,但没有运气。 这里是否有我遗漏的修复程序,或者我是否必须将所有内容都包含在一个 CSS 文件中? 编辑: 显然,这只是 IE8 中的一个问题,在 Chrome 和 Firefox 中工作正常。 不幸的是,我的客户只想要 IE8。 看起来这是这个问题的重复。 回答1 我没有明确的答案,但我怀疑当您更改 href 的 URL 时@imports没有“运行”。 我会采取不同的方法——用一个类标记主体,并在您的toggle()事件触发时更改该类。 <body class="LightTheme"> 然后 document.getElementsByTagName("body")[0].className = "DarkTheme"; 不幸的是,这确实意味着两个主题的所有样式都必须在 CSS 中可用,而不是加载一个或另一组 CSS 文件。 还有其他可能的策略

2021-09-20 19:24:07   jquery   css   stylesheet

Azure Powershell - 检查资源是否存在(Azure Powershell - Check to see if resource exists)

问题 我正在使用 Powershell 自动设置我的 Azure 环境 - 创建存储帐户、数据库、网站等。 在开发中,我想提供和拆除很多。 很多时候,我想运行我的配置脚本并创建一个不存在的天蓝色资产 但是,我还没有找到一种优雅的方法来做到这一点。 如果项目不存在,一些“Get”cmdlet 会抛出异常,捕获它有点小技巧: try { $storageAcct = Get-AzureStorageAccount -StorageAccountName $Name Write-Verbose "Storage Account already exists" } catch { $storageAcct = New-AzureStorageAccount -StorageAccountName $Name -Location $Location } 更重要的是,使用某些命令,我​​根本无法捕获异常,也不知道为什么: try { $cache = Get-AzureRedisCache -ResourceGroupName $resourceGroupName -Name $cacheName } catch { //Even with an exception, never arrives here. } 有一个更好的方法吗? 回答1 您应该为此使用Test-AzureName而不是

2021-09-20 19:24:02   powershell   azure   azure-powershell

NSPredicate 中 ALL 、 ANY 和 SOME 运算符之间的区别(Difference between ALL , ANY and SOME operators in NSPredicate)

问题 我真的很难理解这三个。看起来ANY和SOME做同样的事情,但我看不出与ALL的区别。 回答1 让我们有一个组列表。 每个组都有person类型的成员。 每个人都有一个年龄。 所有会员。年龄 > 30 意味着您会找到一个成员都超过 30 岁的小组。您不会找到至少一个成员年龄在 30 岁或以下的小组。 任何会员。年龄 > 30 意味着您会找到至少一个成员超过 30 岁的小组。您不会找到所有成员都在 30 岁或以下的小组。 Group1 > 30 Amin 45 YES Chris 29 NO --- All NO (because Chris is too young) Any YES (because Amin is old enough) Group2 > 30 Amin 45 YES Foo 35 YES --- All YES (because all members are old enough) Any YES (because at least one member is old enough) Group3 > 30 Chris 29 NO Bar 21 NO --- All NO (because at least one member is too young) Any NO (because all members are too young) 有了 ALL

2021-09-20 19:23:57   objective-c   cocoa   core-data   nspredicate

Drupal 6 无法构建菜单路由器和链接(Drupal 6 fails to build menu router and links)

问题 当我在 Drupal 中启用新菜单(例如 mymodule)时,Drupal 应该能够从 mymodule_menu (hook_menu) 获取菜单项,处理这些项目并将菜单项插入到 menu_router 和 menu_links 表中。 但是,我的 Drupal 没有这样做。 每次我启用一个模块(由我编写或其他人贡献的模块,或核心模块)时,Drupal 似乎无法获取新信息。 在新启用的模块中定义的菜单项不会被处理并插入到 Drupal 的菜单系统中。 这意味着新启用的模块没有机会工作——因为它无法访问。 我确实通过将新模块的菜单项信息手动插入到 menu_router 和 menu_links 表中来解决此问题,并且新菜单开始工作。 但是,如果每次启用模块时都必须这样做,这将是一场噩梦。 有没有人遇到过同样的问题? 如何解决这个问题? 先感谢您。 回答1 我不会使用任何 SQL 与菜单表进行交互,如果您编辑错误的记录,可能会发生一些令人讨厌的事情。 您的 hook_menu 代码中一定有错误。 可以贴吗 此外,如果您正在开发具有菜单项的模块,我发现在添加/删除链接时在 mymodule_init() 内部调用这两个函数很方便: cache_clear_all() menu_router_build() 这将刷新所有缓存并重建菜单以及调用 hook_menu 的任何内容。

2021-09-20 19:23:51   drupal   menu   hyperlink   router   building

SQL SELECT ORDER BY 多列取决于其他列的值(SQL SELECT ORDER BY multiple columns depending on value of other column)

问题 我有一个包含以下列的表格: 身份证 | 重温(布尔)| FL(十进制)| FR(十进制) | RL(十进制)| RR(十进制)| 日期 我需要编写一个 SELECT 语句,该语句将根据“revisit”字段的值对多列进行 ORDER BY。 ORDER BY 'revisit' DESC - 此字段值为 1 的记录将在前,0 将在后如果 'revisit' = 1 按 FL、FR、RL 和 RR 中存在的最低值排序。 因此,如果记录 1 在这些字段中具有值 4.6、4.6、3.0、5.0,并且记录 2 具有值 4.0、3.1、3.9 和 2.8,那么将首先返回记录 2,因为它在这四列中拥有最低值。 如果 'revisit' = 0,则按日期排序 - 最早的日期将排在第一位。 到目前为止,我只有 'revisit' 正确排序,如果 'revisit' = 0,则按日期排序,但当 'revisit' = 1 时按四列同时排序。 SELECT * FROM vehicle ORDER BY `revisit` DESC, CASE WHEN `revisit` = 1 THEN `FL` + `FR` + `RR` + `RL` END ASC, CASE WHEN `revisit` = 0 THEN `date` END ASC 相反,它似乎是按四列的总和排序

2021-09-20 19:23:44   mysql   sql   sql-order-by

ord() 预期长度为 1 的字符串,但找到了 int(ord() expected string of length 1, but int found)

问题 我从网络收到一个字节数组缓冲区,其中包含许多字段。 当我想打印缓冲区时,出现以下错误: (:ord() 预期长度为 1 的字符串,找到 int print(" ".join("{:02X}".format(ord(c)) for c in buf)) 我怎样才能解决这个问题? 回答1 Python bytearray和bytes对象在迭代或索引时产生整数,而不是字符。 删除ord()调用: print(" ".join("{:02X}".format(c) for c in buf)) 从字节文档: 虽然字节文字和表示基于 ASCII 文本,但字节对象实际上表现得像不可变的整数序列,序列中的每个值都被限制为0 <= x < 256 (试图违反此限制将触发ValueError 。这是故意完成的强调虽然许多二进制格式包含基于 ASCII 的元素,并且可以使用一些面向文本的算法进行有效操作,但这通常不是任意二进制数据的情况(盲目地将文本处理算法应用于与 ASCII 不兼容的二进制数据格式通常会导致数据损坏)。 并进一步: 由于字节对象是整数序列(类似于元组),对于字节对象b , b[0]将是一个整数,而b[0:1]将是一个长度为 1 的字节对象。 (这与文本形成对比字符串,其中索引和切片都会产生长度为 1) 的字符串 我不会使用str.format() ,而 format()

2021-09-20 19:22:39   python   bytearray

懒惰线程安全延迟加载单例的好解决方案?(Is Lazy<T> a good solution for a thread safe lazy loaded singleton?)

问题 我们在 get 上使用双重锁定实现了一个延迟加载的单例,以确保实例只初始化一次(由于线程竞争条件而不是两次)。 我想知道仅使用Lazy<T>是否是解决此问题的好方法? IE private static Lazy<MyClass> _instance = new Lazy<MyClass>(() => return new MyClass()); public static MyClass Instance { get { return _instance.Value; } } 回答1 我建议您阅读评论中的参考文章: 懒人班在 C# 中实现单例模式 在所有情况下, Lazy<T>类都是线程安全的,但您需要记住,这种类型的Value可能是线程不安全的,并且可能在多线程环境中被破坏: private static Lazy<MyClass> _instance = new Lazy<MyClass>(() => return new MyClass()); public static MyClass Instance { get { return _instance.Value; } } public void MyConsumerMethod() { lock (Instance) { // this is safe usage Instance.SomeMethod(); }

2021-09-20 19:22:35   c#   multithreading   singleton

使用网站的 log4net 跟踪用户(Track user with log4net for a website)

问题 我正在寻找在基于 asp.net 的网站上跟踪用户的最佳方式。 我们正在使用 log4net 来记录一些业务操作(在此页面上输入、单击按钮等)。 但是对于多个用户,日志文件不容易读取。 所以我需要在配置文件上添加一个属性“用户名”,如下所示: <conversionPattern value="%date [%thread] - %property{UserName} - %-5level - %logger - %message%newline"/> 你知道如何设置 'UserName' 吗? 感谢您的帮助 回答1 有以下财产 %username the Windows identity of user making the log entry; slow 检查更多细节:http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx 检查这篇文章:在 log4net 中捕获 Web 事件 回答2 您可以像这样定义用户名(或任何其他)属性: this.SetThreadContext("UserName", userName); 假设userName包含用户的名称。 编辑(你真正想做的): 为 log4net 编写一个包装器(带接口)并制作一些方法,例如SetUserName如下所示:

2021-09-20 19:22:29   asp.net   log4net