有人可以举例说明如何正确使用模板标签Roxygen2
.我试图做最明显的事情(对我来说):
在我的packageName-package.R
档案中:
#' [... other Roxygen blocks ...]
#'
#' @templateVar testTemplateTag Testing one two
NULL
Run Code Online (Sandbox Code Playgroud)
然后在someFunction.R文件中
#' [... other Roxygen blocks ...]
#'
#' @template testTemplateTag
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error : Can not find template testTemplateTag
Run Code Online (Sandbox Code Playgroud)
我试图有一个地方来记录通常重复的定义示例等.当这些东西嵌套在我一直在使用的一组函数中时@inheritParms
.但有些东西,如定义和其他描述,在几个地方使用.我已经搜查高和低的使用@template
和@templateVar
并没有发现任何东西.
谢谢.
我有一个JSF2/Richfaces 4项目,其中我想使用其中一个默认皮肤,但我也想使用我自己的自定义样式表设置一些东西的样式.这听起来很简单,但我发现至少在某些情况下,我自己的风格没有被使用.为了明确,这是我的相关web.xml context-params:
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.control_skinning</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.control_skinning_classes</param-name>
<param-value>enable</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
我的CSS文件包含:
<h:outputStylesheet name="jsp-css.css" library="css" />
Run Code Online (Sandbox Code Playgroud)
一个这样的实际样式定义:
.obsOptBtnSel{
background-color: transparent;
background-image: url('/images/circleY.gif');
background-repeat: no-repeat;
background-position: center;
border: none;
text-align: center;
width: 2em;
height: 2em;
}
Run Code Online (Sandbox Code Playgroud)
而实际按钮使用的风格:
<h:commandButton
value="?"
styleClass="#{obs.observation.observationExtent == -1.0 ? 'obsOptBtnSel' : 'obsOptBtnUns'}"
id="unknownButton"
/>
Run Code Online (Sandbox Code Playgroud)
所以,人们会认为我会从相关的blueSky皮肤继承样式,然后因为我指定了样式类,所以自定义样式表中提到的任何属性都将被覆盖.
但相反,当我查看Firebug中的元素时,我看到我的styleClass被皮肤指定的覆盖,例如它继续使用blueSky背景图像而不是我的.
我知道我可以通过简单地在样式表中将所有样式放入!important来解决这个问题,但这似乎是一个非常糟糕和不必要的方法来处理这个问题.
我在这做错了什么?还有其他解决方案吗?
与任何内存管理问题一样,这是一个漫长的故事,所以绑定.
我们的应用程序一直存在一些内存管理问题,因此我一直在尝试分析应用程序以了解问题所在.我今天早些时候看过这个帖子:
...这似乎跟我在剖析器中看到的一样.基本上,如果我使用Jmeter的一堆用户点击应用程序,它会长时间保留在堆内存中,最终直到会话开始到期.然而,与该线程中的海报不同,我有源代码,并且可以选择尝试使用Tomcat实现持久状态会话,这是我今天一直在尝试做的事情,但成效有限.我认为这是一些我缺少的配置设置.这是我在context.xml中的内容:
<Manager className='org.apache.catalina.session.PersistentManager'
saveOnRestart='false'
maxActiveSessions='5'
minIdelSwap='0'
maxIdleSwap='1'
maxInactiveInterval='600'
maxIdleBackup='0'>
<Store className='org.apache.catalina.session.FileStore'/>
</Manager>
Run Code Online (Sandbox Code Playgroud)
在web.xml中我有这个:
<session-config>
<session-timeout>
10
</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望会话在一小时内超时,但出于测试目的,这很好.现在,在玩了一些东西并最终进入这些设置后,我正在观看分析器中的应用程序,这就是我所看到的:
正如您在图像中看到的那样,我已经添加了一些注释.这是围绕问号圈出的部分,我真的不了解其中的任何事情.您可以看到我在几个不同的点使用Jconsole的"执行GC"按钮,您可以在图表中看到我使用Jmeter的许多客户端访问应用程序的部分.
如果我没记错的话(我必须回去并确实记录下来),在我实现持久状态之前,GC按钮在清除堆时不会做太多.这里奇怪的是,我似乎必须为这个持久状态手动运行GC以实际帮助任何事情.
或者,这只是一个简单的内存泄漏情况吗?今天早些时候,我进行了堆转储并将其加载到Eclipse Memory Analyzer工具中,并使用了"检测泄漏"功能,所有这一切都强化了这是一个会话大小问题的理论; 它检测到的唯一泄漏是在java.util.concurrent.ConcurrentHashMap $ Segment中引导我进入这个线程内存完全被Java ConcurrentHashMap使用(在Tomcat下)
这让我觉得这不是实际泄漏的应用程序.
其他相关细节: - 暂时在我的本地机器上运行/测试.这就是所有这些结果的来源. - 使用Tomcat 6 - 这是一个JSF2.0应用程序 - 我根据Tomcat文档添加了系统属性-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE = true
所以,我想这里有几个问题:1.我是否正确配置了这个?2.是否有内存泄漏?3.此内存配置文件中发生了什么?它(相对)正常吗?
提前致谢.
UPDATE
所以,我尝试了肖恩的提示,并找到了一些新的有趣的东西.
会话侦听器运行良好,并且在分析此场景方面发挥了重要作用.还有一件事,我忘了提到的是应用程序的负载只是被单个页面混淆了,它在几乎可笑的比例上达到了功能复杂性.因此,在测试中,我有时会瞄准该页面,有时我会避开它.所以在我的下一轮测试中,这次使用会话监听器我发现了以下内容:
1)使用几十个客户端点击应用程序,只需访问一个简单的页面.我注意到会话在指定的时间限制之后都按预期发布,并且内存已经释放.同样的事情与少数客户完美配合,对于复杂的情况,点击"大"页面.
2)接下来,我尝试使用复杂的用例,使用几十个客户端来访问应用程序.这一次,发起的会议比预期多了几十个.似乎每个客户都在一到三个会话之间启动.在会话到期时间之后,释放了一点内存,但根据会话监听器,只有大约三分之一的会话被销毁.但是,与此相反,实际包含会话数据的文件夹是空的.大多数使用的内存也被保留.但是,在运行压力测试一小时后,垃圾收集器就会运行,一切都恢复正常.
所以,后续问题包括:
1)为什么在简单的情况下可以正确处理会话,但是当事情变得紧张时,它们会被正确管理?Session处理程序是否误报,或者使用JMeter以某种方式影响它?
2)为什么垃圾收集器等待一小时才能运行?是否有系统设置要求垃圾收集器必须在给定的时间范围内运行,或者是否有某些配置设置我缺少?
再次感谢您的继续支持.
更新2
只是一个简单的说明:更多地玩这个,我发现我得到关于实时会话数量的不同报告的原因是由于我使用持久会话; 如果我把它关闭,一切都按预期工作.它确实在Tomcat页面上表示持久会话,它是一个实验性功能.它必须是调用侦听器正在接收的会话事件,当人们非常期望它这样做时.
所以,我看过这篇文章: JSF - 由不同机器上的浏览器共享的会话范围bean
但这是两年前的一个问题,所以我不知道从那时起JSF世界是否有任何更新,我还有一些更具体的案例,我要求澄清.基本上,我想知道的是如何在具有不同范围的bean中处理静态范围变量.例如:
@ManagedBean
@ApplicationScoped
public class ApplicationBean{
static private int someStaticInt=0;
...
}
Run Code Online (Sandbox Code Playgroud)
由于这个bean是应用程序作用域,我完全希望应用程序的所有用户共享一些StaticInt,即用户A将值设置为3,所有用户此后将该值视为3.如果我错了,请纠正我.
但是这个场景呢:
@ManagedBean
@ViewScoped
public class ViewScopeBean{
static private int staticInt = 0;
private SomePOJO myClass;
...
public void someAction(){
SomePOJO.memberStaticInt++;
...
}
}
...
public SomePOJO{
static private int memberStaticInt = 0;
...
}
Run Code Online (Sandbox Code Playgroud)
现在,这个bean是ViewScoped,因此应用程序的每个用户都有一个单独的实例.但那个静态int怎么样?如果我增加它,它是否只会在我的Bean实例中,或者是否会为所有用户增加.那么,那个成员对象myClass怎么样?它在bean中没有声明为static,但它本身有一个静态成员.如果我运行someAction,是否会为所有用户或仅使用Bean实例的用户增加memberStaticInt?
最后,我有兴趣知道上述情况中的任何和所有这些逻辑是否也适用于RequestScoped bean.
我的代码如下:
var mysql= require('mysql');
var client = mysql.createClient({
user: 'root',
password: 'root',
host: 'localhost'
});
client.query('USE sample');
for(var k=0;k<=100;k++)
{
var sql="SELECT `id` FROM `data` WHERE `id`= ?";
console.log(k);
client.query(sql,[k],function(err,results,field){
console.log("DATABASE "+k);
if(results.length == 0) {
var sql2="INSERT INTO `data` (`id`) VALUES (?);";
client.query(sql2,[k],function(err,results,field){
});
}
});
}
client.end();
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,结果如下:
1
2
3
...
100
Database 101
Database 101
Database 101
...
Database 101
Run Code Online (Sandbox Code Playgroud)
它既不会关闭数据库连接也不会插入任何数据.
我想在循环中插入数据.但在插入新记录之前,还需要检查它是否已经存在.
我已经从我的手册和互联网上阅读了许多解释getView方法的教程,但我不明白为什么他们使用它.有人可以用一些例子或片段向我解释一下吗?
我有一个 Android 应用程序,该应用程序将用户重定向到包含 reCAPTCHA 问题的网页。以前,我只是通过打开浏览器窗口并将用户引导到那里来实现这一点。最近,为了更好的用户体验,我将其更改为使用 webview,但问题是现在由于某种原因 reCAPTCHA 问题没有在页面上呈现;其他一切功能正常。为什么会这样,我该如何解决?我认为这一定与从 webview (www.google.com) 访问不同的域有关,但不确定如何以不同的方式配置它不是问题。这是我设置 Webview 的方式。请注意,覆盖的方法用于处理此 Web 视图中可能发生的某些 OAuth 授权过程。即使我将其注释掉,我也有同样的问题。
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl(this.url);
myWebView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url){
Uri uri = Uri.parse(url);
if (url != null && uri.getScheme().equals(NNApplication.CALLBACK_SCHEME)) {
SharedPreferences shPref = getSharedPreferences("NN_PREFS", Activity.MODE_PRIVATE);
new OAuthAccessTokenTask(Authorization.this, consumer, provider, shPref).execute(uri);
webView.setVisibility(View.GONE);
finish();
return true;
}else{
return false;
}
}
@Override
public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
handler.proceed() ;
}
});
Run Code Online (Sandbox Code Playgroud)
同样,您可以在下面的 URL …