Web浏览器中的操作F5和Ctrl + F5触发器是否有标准?
我曾经在IE6和Firefox 2.x中做过实验.的F5 刷新将触发发送到服务器与HTTP请求If-Modified-Since
报头,而Ctrl + F5不会具有这样的标题.在我的理解中,F5 将尝试尽可能多地利用缓存内容,同时Ctrl + F5 旨在放弃所有缓存内容,并再次从服务器中检索所有内容.
但是今天,我注意到在一些最新的浏览器(Chrome,IE8)中它不再以这种方式工作了.双方F5并Ctrl + F5发送If-Modified-Since
头.
那么这应该如何工作,或者(如果没有标准)主要浏览器如何实现这些刷新功能?
是否可以在Sun JVM中滚动垃圾收集器日志?
目前我用以下方法生成日志
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log
Run Code Online (Sandbox Code Playgroud)
但是我必须使用fifo队列和rotatelogs手动旋转它们以创建每天的新日志.我希望有一个更好的解决方案.
也许有一种方法可以从java里面访问这些日志条目,所以我可以将它们重定向到log4j?
编辑:使用fifo队列的解决方案不够好,因为如果从此队列读取的进程(例如rotatelogs)读取速度变慢,则会减慢整个jvm(显然Sun/Oracle会同步执行gc日志记录)
我在代理服务器后面使用Maven 3.1.1.相同的代理处理两者HTTP
和HTTPS
流量.
我似乎无法告诉maven settings.xml
使用这两种协议.在我看来,只能使用一个活动代理,因为首先使用的是最先定义的活动代理,并忽略后续的"活动"代理定义.这是我的settings.xml
:
<proxies>
<proxy>
<id>myhttpproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>192.168.1.2</host>
<port>3128</port>
<nonProxyHosts>localhost</nonProxyHosts>
</proxy>
<proxy>
<id>myhttpsproxy</id>
<active>true</active>
<protocol>https</protocol>
<host>192.168.1.2</host>
<port>3128</port>
<nonProxyHosts>localhost</nonProxyHosts>
</proxy>
</proxies>
Run Code Online (Sandbox Code Playgroud)
是否可以为maven HTTP
和HTTPS
maven 配置代理settings.xml
?我知道我可以通过将Java系统属性传递给maven调用来解决这个问题,例如:
-Dhttps.proxyHost=192.168.1.2 -Dhttps.proxyPort=3128
Run Code Online (Sandbox Code Playgroud)
但肯定这可能是从内部来的settings.xml
吗?
如MNG-2305和MNG-4394等提出的Maven错误表明这个问题已经解决,但我不相信.
或者,是否有一个"代理代理",我可以在本地运行,我可以指向maven?"代理代理"将相应地路由http/https.即便如此,我仍然需要settings.xml
为Maven 定义两个活动代理定义来指导这两种类型的流量.
我正在尝试将Jenkins文件用于Jenkins中的所有构建,并且我有以下问题.我们基本上有3种构建:
我应该如何将所有上述构建包含在一个Jenkins文件中.现在我唯一的想法就是创造一个巨人,如果它将检查它是哪个分支并将执行这些步骤.
所以我有两个问题:
1.在Jenkinsfile中这样做是否合适?
作为参考,这是我目前的Jenkinsfile
:
def servers = ['server1', 'server2']
def version = "1.0.0-${env.BUILD_ID}"
stage 'Build, UT, IT'
node {
checkout scm
env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
sh 'mvn -e clean deploy'
sh 'mvn -e scm:tag'
}
}
def nodes = [:]
for (int i = 0; i < servers.size(); i++) {
def server = servers.get(i)
nodes["$server"] = { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Jenkins中使用DSL管道.我认为如果我可以将项目名称作为我脚本的一部分,那就太好了.
git credentialsId: 'ffffffff-ffff-ffff-ffff-ffffffffffffff',\
url: "${repo_root}/${JOB_NAME}.git"
Run Code Online (Sandbox Code Playgroud)
我收到错误:
groovy.lang.MissingPropertyException: \
No such property: JOB_NAME for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud)
我以为我遵循了这些指示,他们提到JOB_NAME
了变量之一.
我决定尝试:
sh 'env'
Run Code Online (Sandbox Code Playgroud)
在我的DSL中,打印出来:
JOB_NAME = foo-bar
Run Code Online (Sandbox Code Playgroud)
这是我所期待的.
另一篇博客提到:
使用环境变量
我们有两种方法来获取它们的价值.-D=
在启动期间传递的属性我们可以阅读,System.getProperty("key")
这要归功于Groovy与Java的强大关系.用Java方式读取常规环境变量是
System.getenv("VARIABLE")
......
我们试试这个:
println "JOB_NAME = " + System.getenv('JOB_NAME');
Run Code Online (Sandbox Code Playgroud)
现在,我得到:
java.lang.NullPointerException: Cannot get property 'System' on null object
Run Code Online (Sandbox Code Playgroud)
空物体?但是,我可以看到这JOB_NAME
是一个环境变量!
如何$JOB_NAME
在Pipeline作业中读入DSL脚本.我正在尝试一个管道工作,当我得到它的工作将使这个多分支管道与Jenkinsfile
.
我有一个从Word导出的文件,它用奇怪的unicode字符替换了所有引号,这些字符在vim中没有正确显示.所以现在我想用引号替换这些字符,但我不知道如何输入这个字符
:%s/???/'/g
Run Code Online (Sandbox Code Playgroud)
字符看起来像这样:~U~R.但当然我不能用鼠标标记它们并粘贴在命令中.
我的代码类似于我在Jenkinsfile中的代码:
node {
checkout scm
// do some stuff
try {
// do some maven magic
} catch (error) {
stage "Cleanup after fail"
emailext attachLog: true, body: "Build failed (see ${env.BUILD_URL}): ${error}", subject: "[JENKINS] ${env.JOB_NAME} failed", to: 'someone@example.com'
throw error
} finally {
step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml'
}
}
Run Code Online (Sandbox Code Playgroud)
如果上面的代码因为一些与jenkins-pipeline相关的错误而try { }
失败(例如使用未经批准的静态方法),则脚本会无声地失败.当我删除try/catch/finally时,我可以看到错误.难道我做错了什么?不应该重新抛出error
使管道错误出现在日志中?
编辑:当我使用尚未分配的变量时,我已设法将问题固定为groovy语法.示例:
echo foo
如果foo
未在任何地方声明/分配Jenkins将失败构建,并且如果它在try/catch/finally内部而不会重新抛出异常,则不会显示原因.
我使用以下命令生成了用户名ssh -keygen -b 1024 -f user -t dsa
,现在我正在尝试使用putty登录我的私钥,但它不起作用.我收到以下错误消息?
无法使用密钥文件C:\Users\admin\Desktop\da.ppk
(OpenSSH SSH-2私钥)
我刚刚用名字创建了一个记事本 da.ppk
-----BEGIN DSA PRIVATE KEY-----
MIIBugIBAAKBgQDTpIlC4HDT8+R7nALILZfh9zA93J9r9CYwrvNFIUa+43toyABg
vY2P2gwsC1xPraujPYb2+AVZPmyrbtjmnw+4zIXufcz6mw4nlYJfc5Rd0Ms00uWB
uMmQlqOYMG6HJHjyVmMd631rGu9lQeSTwzDq6H9BZl9keuxmgVB4nF651QIVAOdB
min0w2sHLA0X3MHDIKj1t7PzAoGADpUoMeeI5JM7yoQ2bQTe1FKEVI9LS09MCwfJ
3TNVjcVqF8EQAK5tSLTo1bVUVrKXi22Aamd1o/3b+IDjG28VQV/vysej7X2TmxZ2
Y8RYpKD8eMhRkgYSVMzwyUj28kYGAPtO+AJtd2Lolr8Vx8DdhpK/YygKWoPPX6gu
SRKgeD8CgYAqUInGtRYaFXIFw10ahbzVKCxUuB2KngkPpNKzEJeXtFoeXirt3BCR
c8AtqassvzluUF3a1Y9L+zt8Bf7Xo7vU0wvpEEnjKG4Lcl2SeO8Eoqb1wZcDbDJC
wqv0g+PG8dI4uqboFPqAIr4/s/U+/REW81PHx7wjfhaBe2GXoBAbrQIUXZzuw+aG
ERrD9L4URL9HP2GbWno=
-----END DSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud) 我想env
在Jenkinsfile 中的对象中打印所有可用的属性(及其值).
当我做
print env
Run Code Online (Sandbox Code Playgroud)
我明白了:
org.jenkinsci.plugins.workflow.cps.EnvActionImpl@112cebc2
Run Code Online (Sandbox Code Playgroud)
所以看起来好像toString
没有在那里实现,如果我不知道他们的名字怎么能访问这个对象中的属性?
我尝试使用regexp和(使用大量)输入使用jshell 重新创建正则表达式拒绝服务攻击:(a+)+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
a
Pattern.compile("(a+)+")
.matcher("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!")
.matches()
Run Code Online (Sandbox Code Playgroud)
但每次尝试时,这都很快完成.Java中的regexp实现与其他实现不同吗?或链接的维基百科页面错了?
(顺便说一句.我正在使用Java 11,如果那是相关的)
编辑:看起来它与Java版本有关,当我在Java 8上尝试它时,它会挂起,但在Java 9和11中它立即可用.这些版本之间的变化可能会对此产生什么影响?Java中的所有正则表达式都是安全的吗?
是否有特定的Java JEP改变了regexp实现?我想知道什么样的regexp仍然是新Java的问题.