小编cev*_*ing的帖子

Java中公共抽象类中方法的默认访问级别是什么?

通常,方法的默认访问级别是包本地.但在我看来,对于公共抽象类来说它是不同的.在这些类中,默认值似乎是公开的.它是否正确?

更新

@EJP

这是我的代码中的一个错误.可以使用公共方法隐藏包本地方法,这让我感到困惑.这让我觉得公共摘要可能类似于公共方法的接口.看例子:

A/A.java:

package a;

public abstract class A
{
    String a () { return "a"; }
}
Run Code Online (Sandbox Code Playgroud)

test_a.java:

class test_a
{
    static class NewA extends a.A
    {
        public String a () { return "new a"; }
    }

    public static void main (String[] args)
    {
        NewA a = new NewA();
        System.out.println(a.a());
    }
}
Run Code Online (Sandbox Code Playgroud)

java

8
推荐指数
1
解决办法
1万
查看次数

是否可以将Perl的Marpa解析器用于公共网络服务器?

Perl的Marpa解析器的文档包含以下关于污染数据的部分:

Marpa :: R2的存在允许其输入以灵活和强大的方式改变执行.Marpa不应该与不受信任的输入一起使用.在Perl的污点模式中,使用Marpa的SLIF接口时会出现致命错误,该接口具有受污染的语法,受污染的输入字符串或受污染的令牌值.

如果我理解这种限制的后果,我不确定.我明白,语法一定不会被污染.但我不明白输入不应该被污染.对我来说,解析器的任务是验证输入.解析器必须信任其输入对我来说听起来不合理.

真的那样吗?用Marpa实现任何类型的公共网络服务是不可能的吗?

我之所以这样问是因为其中一个参考用例是Marpa HTML解析器,而且使用HTML解析器似乎是矛盾的,虽然大约99,99%的HTML可能被污染,但它不能与受污染的数据一起使用.

任何人都可以解释这个矛盾吗?

perl parsing taint marpa

8
推荐指数
1
解决办法
362
查看次数

如何正确引用嵌套的子shell参数?

如何将带空格的字符串传递给一个命令,该命令返回一个带空格的字符串?

我尝试了以下四个版本.

arg='one arg'

arg() { echo "arg: $1"; }

printf '1 |%s|\n' $(arg "$arg")
printf '2 |%s|\n' "$(arg $arg)"
printf '3 |%s|\n' "$(arg \"$arg\")"
printf '4 |%s|\n' "$(arg '$arg')"
Run Code Online (Sandbox Code Playgroud)

他们都失败了:

1 |arg:|
1 |one|
1 |arg|
2 |arg: one|
3 |arg: "one|
4 |arg: $arg|

如何得到这个结果?

? |arg: one arg|

bash quoting

8
推荐指数
1
解决办法
426
查看次数

如何定义一个在Go中接受任意数量参数的函数类型?

我尝试编写一个函数,它接受任何其他函数并围绕它包装一个新函数.这是我到目前为止所尝试的:

package main

import (
    "fmt"
)

func protect (unprotected func (...interface{})) (func (...interface{})) {
    return func (args ...interface{}) {
        fmt.Println ("protected");
        unprotected (args...);
    };
}

func main () {
    a := func () {
        fmt.Println ("unprotected");
    };
    b := protect (a);
    b ();
}

当我编译这个时,我得到错误:

cannot use a (type func()) as type func(...interface { }) in function argument
Run Code Online (Sandbox Code Playgroud)

为什么没有参数的函数与具有可变数量参数的函数不兼容?我该怎么做才能使它们兼容?

更新: 受保护的功能应与原始功能兼容:

func take_func_int_int (f func (x int) (y int)) (int) {
    return f (1)
}

func main () { …

go

7
推荐指数
1
解决办法
1690
查看次数

Linux脚本解析telnet消息并退出

我正在连接到telnet监听器.Telnet服务器每秒发送"1234".我想阅读消息"1234"并关闭telnet会话.以下是我的代码,但它不起作用.

#!/bin/bash
telnet 192.168.10.24 1234
read $RESPONSE
echo "Response is"$RESPONSE
echo "quit"
Run Code Online (Sandbox Code Playgroud)

如何自动读取telnet消息?

linux bash telnet

7
推荐指数
2
解决办法
2万
查看次数

为什么java.net.URL最终?

我想继承java.net.URL,但我不能,因为它是最终的.我收到错误:

cannot inherit from final java.net.URL
Run Code Online (Sandbox Code Playgroud)

为什么是最终的?

对于为什么String是最终状态的问题的一些答案,JVM依赖于String,因为它是一种非常基本的数据类型.我看不出这将如何适用于URL类型.

更新

许多答案和评论都给出了理由,为什么避免继承是一种好习惯.有些人甚至认为一切都应该是最终的.但现实是不同的.JDK中的大多数类都不是最终的.良好的做法是一个不应该继承java.net.URL 的原因.这甚至可能适用于JDK的任何类.但是当某些东西被定义为最终的时候,无法继承.这仅适用于极少数类,如String或URL.

因此,URL和所有其他非最终类之间必定存在不同之处.问题是:这是什么区别,这使得必要的URL是最终的?

说我不应该关心这个问题,因为我不应该继承这个问题是没有答案的.

java

7
推荐指数
1
解决办法
823
查看次数

Web应用程序应该如何使用我的公共API

我正在为服务开发一个公共HTTP后端API.最重要的是,有一个用户登录的Web应用程序,应该使用后端API来满足用户请求.API支持OAuth2,Web应用程序是单页面应用程序,带有大量的javascript.

我担心的是浏览器和Web应用程序应该如何与API通信.我发现了两种可能的方法.

浏览器直接使用API

当用户输入他的凭据进行登录时,Web应用程序会将其传递给API并获得OAuth access_token,该权限直接传递给浏览器并存储在某个cookie中.然后,API的每个请求都是通过JSONP直接从浏览器发出的.当用户注销时,Web应用程序会破坏会话.

浏览器与Web应用程序对话,该应用程序与API进行通信

当用户输入其凭据进行登录时,Web应用程序会将其传递给API并获得OAuth access_token.用户创建会话,access_token存储在会话中.当浏览器需要与API通信时,它会通过Web应用程序.Web应用程序在会话中使用访问令牌,调用API并将响应传递给浏览器.

两种方式都有性能和安全权衡的利弊.你怎么看?

PS:从我所看到的,twitter直接从浏览器使用它的公共API,但传递会话cookie进行身份验证.这意味着他们的API还支持cookie会话?

api http oauth

7
推荐指数
1
解决办法
261
查看次数

b/w Hurd和Minix有什么区别?

知道两者都是微内核,b/w Mach(赫德所基于的)和Minix的区别是什么.有任何架构差异吗?对"什么是L4"稍微有点了解将会非常有帮助.我找不到任何涉及此的文件.

minix microkernel mach

7
推荐指数
1
解决办法
1993
查看次数

如何从文件中读取Unicode G-Clef(U + 1D11E)?

G-Clef(U + 1D11E)不是基本多语言平面(BMP)的一部分,这意味着它需要超过16位.几乎所有Java的读取函数都只返回一个charint包含16位.哪个函数读取完整的Unicode符号,包括SMP,SIP,TIP,SSP和PUA?

更新

我已经问过如何从输入流中读取单个Unicode符号(或代码点).我既没有任何整数数组,也不想读一行.

可以构建一个代码点,Character.toCodePoint()但是这个函数需要一个char.另一方面,读取a char是不可能的,因为read()返回一个int.到目前为止我最好的工作是这个,但它仍然包含不安全的演员表:

public int read_code_point (Reader input) throws java.io.IOException
{
  int ch16 = input.read();
  if (Character.isHighSurrogate((char)ch16))
    return Character.toCodePoint((char)ch16, (char)input.read());
  else 
    return (int)ch16;
}
Run Code Online (Sandbox Code Playgroud)

怎么做得更好?

更新2

另一个返回String但仍使用强制转换的版本:

public String readchar (Reader input) throws java.io.IOException
{
  int i16 = input.read(); // UTF-16 as int
  if (i16 == -1) return null;
  char c16 = (char)i16; // UTF-16
  if (Character.isHighSurrogate(c16)) { …
Run Code Online (Sandbox Code Playgroud)

java unicode

7
推荐指数
1
解决办法
739
查看次数

如何扩展 Generator 类?

我试图过滤一个生成器,并期望这种通用功能必须在 JavaScript 中的任何地方定义,因为它是为数组定义的,但我找不到它。所以我试图定义它。但我无法扩展内置生成器。

我有一个示例生成器

function make_nums ()
{
  let nums = {};
  nums[Symbol.iterator] = function* () {
    yield 1;
    yield 2;
    yield 3;
  };
  return nums;
}
Run Code Online (Sandbox Code Playgroud)

生成一些数字。

[...make_nums()] // => Array [ 1, 2, 3 ]
Run Code Online (Sandbox Code Playgroud)

如果我构建一个数组,我可以通过使用数组的filter函数来过滤数组。

[...make_nums()].filter(n => n > 1) // => Array [ 2, 3 ]
Run Code Online (Sandbox Code Playgroud)

但我不想建立一个数组。相反,我想使用旧的生成器并构建一个新的过滤生成器。为此,我编写了以下函数。

function filtered (generator, filter)
{
  let g = {};
  g[Symbol.iterator] = function* () {
    for (let value of generator)
      if (filter(value))
        yield value;
  };
  return g;
} …
Run Code Online (Sandbox Code Playgroud)

javascript generator ecmascript-6

7
推荐指数
2
解决办法
695
查看次数

标签 统计

java ×3

bash ×2

api ×1

ecmascript-6 ×1

generator ×1

go ×1

http ×1

javascript ×1

linux ×1

mach ×1

marpa ×1

microkernel ×1

minix ×1

oauth ×1

parsing ×1

perl ×1

quoting ×1

taint ×1

telnet ×1

unicode ×1