现在我有一个链接
<a href="blabla" target="_blank">link</a>
Run Code Online (Sandbox Code Playgroud)
但是,这总是打开一个新选项卡.我想要以下效果
如何使用JavaScript实现这一目标?
如果只有一些特定于浏览器的方法,那就没关系,因此没有相应支持的浏览器用户将"回退"到always-new-tab方式.
在Java中:
class Base {
public Base() { System.out.println("Base::Base()"); virt(); }
void virt() { System.out.println("Base::virt()"); }
}
class Derived extends Base {
public Derived() { System.out.println("Derived::Derived()"); virt(); }
void virt() { System.out.println("Derived::virt()"); }
}
public class Main {
public static void main(String[] args) {
new Derived();
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出
Base::Base()
Derived::virt()
Derived::Derived()
Derived::virt()
Run Code Online (Sandbox Code Playgroud)
但是,在C++中,结果是不同的:
Base::Base()
Base::virt() // ? Not Derived::virt()
Derived::Derived()
Derived::virt()
Run Code Online (Sandbox Code Playgroud)
(有关C++代码,请参阅http://www.parashift.com/c++-faq-lite/calling-virtuals-from-ctors.html)
什么导致Java和C++之间的这种差异?这是vtable初始化的时间吗?
编辑:我确实理解Java和C++机制.我想知道的是这个设计决定背后的见解.
这是一个编程问题.
问题如下:
将给出一组数字以及我们必须除以的数字k.我们必须从该数组中选择元素,使得这些元素的总和可以被k整除.这些元素的总和应尽可能大.
输入:
在第一行n上,表示元素的数量.
在下一行,给出了n个数字.
在下一行,我们必须划分k.
输出:
通过从该数组st sum中选择元素,尽可能最大的和可被k整除.
样本输入:
5
1 6 2 9 5
8
Run Code Online (Sandbox Code Playgroud)
样本输出:
16
Run Code Online (Sandbox Code Playgroud)
注意16可以通过多个数字组合获得,但我们这里只关注最大总和.
我建议的解决方案:
我遍历数组并在给定输入数组的数组b中维护累积和,如:
b=[1 7 9 18 23]
Run Code Online (Sandbox Code Playgroud)
并将数组中的数字mod乘以k并存储到
c=[1 7 1 2 7]
Run Code Online (Sandbox Code Playgroud)
现在数字在c中具有相同的值,即索引0和索引2; 索引1和索引4.现在我已经得到了所有解决方案,答案就是
max(b[2]-b[0],b[4]-b[1])
Run Code Online (Sandbox Code Playgroud)
并且在一种情况下,三个索引在c中具有相同的值,即在其中的情况下
c=[1 2 3 1 1 2]
Run Code Online (Sandbox Code Playgroud)
答案是
max(b[4]-b[0],b[5]-b[1])
Run Code Online (Sandbox Code Playgroud)
基本上减去最右边出现的那个数字的最左边的出现.
我的解决方案只有在有连续元素时才有效.元素之和可以被k整除.期待对正确解决方案的描述
来自http://www.erlang.org/doc/man/gen_tcp.html#accept-1:
值得注意的是,不必从套接字所有者进程发出accept调用.使用版本5.5.3及更高版本的仿真器,可以从不同进程发出多个同时接受调用,这允许处理传入连接的接受器进程池.
(Q1)这是否意味着我们可以在Erlang中实现Unicorn风格的负载均衡?
(Q2)如果是,是否有任何现有的服务器或库使用此功能?
(Q3) Unicorn在假设请求处理很快的情况下工作.在同样的假设下,是否有可能通过在Erlang中组合受主和工人来获得更好的性能?
对于那些不熟悉Unicorn的人来说,它是一个传统的UNIX prefork web服务器.工作进程之间的负载平衡由OS内核完成.所有工作者共享一组通用的侦听器套接字,并对它们执行非阻塞的accept().如果没有什么可以接受(),内核将决定给哪个工作进程提供套接字,工作人员将休眠.对于单个侦听器套接字,我相信当工作进程阻塞accept()并且OS内核决定"竞争"的结果时,它是相同的.
我正在寻找如何使用hedis通过Unix域套接字连接到redis服务器,如hackage页面中所宣传的那样:
通过TCP或Unix域套接字连接:
TCP套接字是连接到Redis服务器的默认方式.对于与同一台机器上的服务器的连接,Unix域套接字提供比标准TCP连接更高的性能.
从构造函数ConnectInfo
,以及defaultConnectInfo
它,似乎我们应该填写connectPort
,因为它PortID
具有一个名为构造函数的类型UnixSocket
.但它只显示UnixSocket
一个String
,没有格式细节等.
那么如何connectPort
通过Unix域套接字填写连接?谢谢.
更新:我试了一下,发现并不难.以下是我的问候世界.
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Trans
import Database.Redis
myConnectInfo :: ConnectInfo
myConnectInfo = defaultConnectInfo { connectPort = UnixSocket "/tmp/redis.sock" }
main :: IO ()
main = do
conn <- connect myConnectInfo
runRedis conn $ do
set "hello" "hello"
set "world" "world"
hello <- get "hello"
world <- get "world"
liftIO $ print (hello,world)
Run Code Online (Sandbox Code Playgroud) 我正在尝试建模data Photo
并想知道用于图像数据的类型:
> data Photo =
> Photo
> { photoUploaderId :: AccountId
> , photoWidth :: Int
> , photoHeight :: Int
> , photoData :: ByteString
> }
Run Code Online (Sandbox Code Playgroud)
我在Data.ByteString
这里用.还有更好的选择吗?
背景:我将把图像数据存储在数据库中,并通过网络连接检索和发送它.在第一次将照片插入数据库时,我可能需要对其进行一些操作,例如缩放等.
我有一个哈希数组:
arr = [ {:a => 1, :b => 2}, {:a => 3, :b => 4} ]
Run Code Online (Sandbox Code Playgroud)
我想要实现的是:
arr.map{|x| x[:a]}.reduce(:+)
Run Code Online (Sandbox Code Playgroud)
但我认为它有点丑陋,或者至少没有那么优雅:
arr.map(&:a).reduce(:+)
Run Code Online (Sandbox Code Playgroud)
a
后一种是错误的,因为哈希中没有调用任何方法。
有没有更好的写作方法map{|x| x[:a]}
?
我正在尝试从头启动C(的子集),而不使用额外的依赖项(解析器生成器,库等)。我也想利用解析器组合器的思想,这在函数式编程中是一种很棒的技术。我想以一种简洁实用的方式将这种想法从功能世界借鉴到过程C中。
我尝试为以下玩具语法实现一些必要的解析器组合器,这也是Simon Peyton Jones 的《实现功能语言-教程》一书中的示例。
greeting -> hg person "!"
hg -> "hello"
| "goodbye"
Run Code Online (Sandbox Code Playgroud)
person
以字母开头的令牌在哪里?例如,令牌列表
["goodbye", "James", "!"]
Run Code Online (Sandbox Code Playgroud)
被解析为
[(("goodbye", "James"), ["!"])]
Run Code Online (Sandbox Code Playgroud)
(这本书使用了Haskell,很难使它与语言无关,但是您会明白的:-)
我用C语言实现了这一点,您可以在这里查看代码:https : //gist.github.com/4451478
此实现花费200多行C代码,远远超过本书中编写的约20行Haskell。因此,我不确定我是否在使用C进行解析器组合器方面是否正确,以及是否有任何可能的改进。任何建议都欢迎。提前致谢。
假设函数g
定义如下.
utop # let g ~y ~x = x + y ;;
val g : y:int -> x:int -> int = <fun>
utop # g ~x:1 ;;
- : y:int -> int = <fun>
utop # g ~y:2 ;;
- : x:int -> int = <fun>
utop # g ~x:1 ~y:2 ;;
- : int = 3
utop # g ~y:2 ~x:1 ;;
- : int = 3
Run Code Online (Sandbox Code Playgroud)
现在有另一个功能 foo
utop # let foobar (f: x:int -> y:int …
Run Code Online (Sandbox Code Playgroud) https://github.com/grpc/grpc/blob/master/examples/cpp/helloworld/greeter_async_server.cc#L91
service_->RequestSayHello(&ctx_, &request_, &responder_, cq_, cq_,
this);
Run Code Online (Sandbox Code Playgroud)
两次出现cq_
对我来说看起来很奇怪所以我深入研究了导致我
https://github.com/grpc/grpc/blob/master/include/grpcpp/impl/codegen/service_type.h#L92
void RequestAsyncUnary(int index, ServerContext* context, Message* request,
internal::ServerAsyncStreamingInterface* stream,
CompletionQueue* call_cq,
ServerCompletionQueue* notification_cq, void* tag) {
server_->RequestAsyncCall(methods_[index].get(), context, stream, call_cq,
notification_cq, tag, request);
}
Run Code Online (Sandbox Code Playgroud)
那么call_cq
和之间有什么区别notification_cq
?使用差异完成队列的潜在用途/好处是什么?