小编St.*_*rio的帖子

声明区域和范围之间有什么区别

关于声明区域:

每个名称都在程序文本的某些部分中引入,称为声明性区域,这是该名称有效的程序的最大部分.

关于范围:

通常,每个特定名称仅在称为其范围的程序文本的一些可能不连续的部分内有效.

它们之间有什么区别?

c++ scope

5
推荐指数
1
解决办法
741
查看次数

servlet服务方法的目的

我想,我们不能覆盖service()任何特定servlet中的方法.那么目的是httpservlet service method什么?

java servlets java-ee

5
推荐指数
1
解决办法
1184
查看次数

reinterpret_cast到函数指针

我已经为实验编写了代码 reinterpret_cast<T>

#include <iostream>
#include <cstdlib>

using std::cout;
using std::endl;

int foo()
{
    cout << "foo" << endl;
    return 0;
}

void (*bar)();
int main()
{

    bar = reinterpret_cast<void (*)()>(foo); //Convertion a function type to a pointer to function type
    bar(); //displays foo. Is it UB?
}
Run Code Online (Sandbox Code Playgroud)

首先,为什么reinterpret_cast允许这种转换?我认为这种转换是不正确的。

c++ reinterpret-cast

5
推荐指数
1
解决办法
3083
查看次数

是什么破坏了java中的局部变量?

我怀疑方法局部变量仅在方法执行时才存在.此外,GC EdenLong-generation块溢出时触发(轻微/主要GC)等......所以,如果在方法体的末尾Eden没有溢出,那么就不需要触发GC.尽管没有触发主要/次要GC,我们将销毁所有局部变量.怎么做?

java garbage-collection

5
推荐指数
2
解决办法
3432
查看次数

如何结束一天?

我正在使用PostgreSQL 8.4.我有一个表的列,my_tbl其中包含日期(timestamp without timezone).例如:

       date
-------------------
2014-05-27 12:03:20
2014-10-30 01:20:03
2013-10-19 16:34:34
2013-07-10 15:24:26
2013-06-24 18:15:06
2012-07-14 07:09:14
2012-05-13 04:46:18
2013-01-04 21:31:10
2013-03-26 10:17:02
Run Code Online (Sandbox Code Playgroud)

如何编写以下格式返回所有日期的SQL查询:

xxxx-xx-xx 23:59:59
Run Code Online (Sandbox Code Playgroud)

这个日期将设置为当天结束.

sql postgresql date-arithmetic

5
推荐指数
2
解决办法
6693
查看次数

在内部类中使用非最终局部变量

JLS 8.1.3为我们提供了关于未在内部类中声明但在类中使用的变量的规则.

使用但未在内部类中声明的任何局部变量,形式参数或异常参数必须声明为final或者是有效的final(§4.12.4),否则在尝试使用时会发生编译时错误.

一个例子:

class A{
    void baz(){
        int i = 0;
        class Bar{ int j = i; }
    }

    public static void main(String[] args){
    }
}
Run Code Online (Sandbox Code Playgroud)

DEMO

为什么编译代码?我们在内部类中使用了非final的局部变量,该变量在那里没有声明.

java class

5
推荐指数
1
解决办法
117
查看次数

了解FacesContext实例化详细信息

Mojarra 2.2.12

以下是接管FacesContext实例化的代码片段:

FacesContext context = facesContextFactory.getFacesContext
              (servletConfig.getServletContext(), request, response, lifecycle);
Run Code Online (Sandbox Code Playgroud)

表达非常清楚.获得请求后,我们从中获取全局信息并FacesContext使用它创建实例.因此,为每个请求创建实例.但在facesContextFactory我看来,获得这种感觉更加棘手.

// Acquire our FacesContextFactory instance
try {
    facesContextFactory = (FacesContextFactory)
        FactoryFinder.getFactory
        (FactoryFinder.FACES_CONTEXT_FACTORY);
} catch (FacesException e) {
    //others
}
Run Code Online (Sandbox Code Playgroud)

哪里

String javax.faces.FactoryFinder.FACES_CONTEXT_FACTORY = "javax.faces.context.FacesContextFactory"
Run Code Online (Sandbox Code Playgroud)

JavaDocs用于FactoryFinder描述所谓的

JavaServer Faces API中指定的所有工厂对象的标准发现算法.

这就是我感到困惑的地方.

现在,让我们考虑创建工厂实例的实际方法:javax.faces.FactoryFinderInstance #getFactory(String factoryName)

try {
      factoryOrList = factories.get(factoryName);
      if (!(factoryOrList instanceof List)) {
          return factoryOrList;
      }
} finally {
      lock.readLock().unlock();
}
Run Code Online (Sandbox Code Playgroud)

factories字段初始化如下copyInjectionProviderFromFacesContext():

private void copyInjectionProviderFromFacesContext() { …
Run Code Online (Sandbox Code Playgroud)

lifecycle jsf

5
推荐指数
1
解决办法
5504
查看次数

如何安全发布StringBuffer?

由于StringBuffer是线程安全的,因此可以安全地发布.考虑StringBuffer(来源)的公共构造函数:

public StringBuffer() {
    super(16);
}
Run Code Online (Sandbox Code Playgroud)

在哪里super(16)指定这个:

AbstractStringBuilder(int capacity) {
    value = new char[capacity];
}
Run Code Online (Sandbox Code Playgroud)

其中值声明为

char[] value;
Run Code Online (Sandbox Code Playgroud)

问题:如何StringBuffer安全发布?

我有以下课程:

public class Holder{
     public final StringBuffer sb = new StringBuffer();
}
Run Code Online (Sandbox Code Playgroud)

它可以被视为安全出版物吗?我想,它不可能.

final保证我们会看到参考的新值sb.但写入sb内部状态AbstractStringBuilder(int capacity)并不是同步的.因此,有没有happens-before这反过来又意味着,从读命令value调用发生时,sb.append(2);并写入value在构造函数是活泼的.

你能帮忙理解这个吗?也许我错过了什么......

java multithreading safe-publication

5
推荐指数
1
解决办法
82
查看次数

CompletableFuture, thenCompose 方法

我有一些误解的合同thenCompose(Function<? super T,? extends CompletionStage<U>> fn)。这是那里所说的:

返回一个新的CompletionStage,当这个阶段正常完成时,将这个阶段作为提供函数的参数执行。

该函数似乎接受 this 的结果CompletionStage,而不是它CompletionStage本身。那么他们是什么意思呢?

那么返回的 代表的任务CompletableFuture呢?

Runnable r;
ExecutorService es;
Function<Void, CompletableFuture<Void>>f;
//...
CompletableFuture.runAsync(r, es)
.thenCompose(f);
Run Code Online (Sandbox Code Playgroud)

这是否意味着,由CompletableFuture返回的任务thenComposeThreadPoolRunnable r?

java multithreading threadpool java-8 completable-future

5
推荐指数
1
解决办法
1651
查看次数

深度优先搜索找到二叉树的最大深度

我正在解决leetcode 问题以找到二叉树的最大深度。递归解决方案相当简单,因此我尝试实现迭代 DFS 方法。这是我的想法:

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    public TreeNode() {}
    public TreeNode(int val) { this.val = val; }
    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

public static int maxDepthDfs(TreeNode root){
    Deque<TreeNode> stack = new LinkedList<>();
    Deque<Integer> depths = new LinkedList<>();
    TreeNode current = root;
    int maxDepth = 0;
    int currentDepth = 0;
    while(!stack.isEmpty() || current != null){
        if(current == …
Run Code Online (Sandbox Code Playgroud)

java algorithm binary-tree

5
推荐指数
1
解决办法
233
查看次数