小编Uri*_*Uri的帖子

Java中对原始类型的引用(如何强制原始数据保留在盒中)

我想将对原始类型的引用传递给方法,这可能会更改它。

考虑以下示例:

public class Main {

    Integer x = new Integer(42);
    Integer y = new Integer(42);

    public static void main(String[] args) {
        Main main = new Main();
        System.out.println("x Before increment: " + main.x);

        // based on some logic, call increment either on x or y
        increment(main.x);

        System.out.println("x after increment: " + main.x);
    }

    private static void increment(Integer int_ref) {
        ++int_ref;
    }
}
Run Code Online (Sandbox Code Playgroud)

运行示例的输出为:

x Before increment: 42
x after increment: 42
Run Code Online (Sandbox Code Playgroud)

这意味着int_ref是通过值而不是通过引用传递给函数的,尽管我的名字很乐观。

显然,有一些方法可以解决此特定示例,但是我的实际应用程序要复杂得多,并且通常可以想到,“指针”或对整数的引用在许多情况下都是有用的。

我试图将Object传递给函数(然后将其转换为int),以及其他各种方法,但是没有运气。一种似乎可行的解决方法是定义我自己的Integer类版本:

private static class IntegerWrapper {
    private …
Run Code Online (Sandbox Code Playgroud)

java

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

有没有更好的方法来使用Perl来分离(扩展标签)?

我想要删除我的源文件.(请注意,为什么我想要删除我的消息来源没有火焰.这不是重点:-)我找不到一个实用程序来做到这一点.Eclipse没有为我做,所以我实现了自己的.

我无法将其纳入单线程(-e)程序.我带来了以下,完成了这项工作.

while( <> )
{
    while( /\t/ ) {
        s/^(([^\t]{4})*)\t/$1    /;
        s/^((([^\t]{4})*)[^\t]{1})\t/$1   /;
        s/^((([^\t]{4})*)[^\t]{2})\t/$1  /;
        s/^((([^\t]{4})*)[^\t]{3})\t/$1 /;
    }
    print;
}
Run Code Online (Sandbox Code Playgroud)

然而,这让我想知道Perl--处理文本的冠军语言 - 是否是正确的工具.代码看起来不是很优雅.如果我必须删除假设tab = 8空格的源代码,代码看起来会更糟.

特别是因为我可以想到一个只有4个状态的确定性状态机来完成这项工作.

我觉得存在更优雅的解决方案.我错过了一个Perl成语吗?根据TIMTOWTDI的精神,我很好奇其他方法.

ü.

perl

4
推荐指数
4
解决办法
1632
查看次数

暂时使用与远程存储库不同的协议

我在笔记本电脑上有一个git存储库,以及GiHub上的远程存储库(运行'git clone'时创建的直接配置).

我正在使用SSH传输协议.即远程地址是:git@github.com:MyName/MyProg.git

我现在处于端口23被阻塞的网络环境中(据我所知,只有端口80和443打开).我需要获取/合并服务器上可用的最新更改.我有什么选择?如果可能的话,我想避免使用http协议创建一个新的远程分支(这与我已经拥有的远程分支基本相同).

git version-control git-config git-fetch git-remote

4
推荐指数
1
解决办法
546
查看次数

根据状态在视图之间切换

假设我有一个显示用户好友列表的应用程序.好友列表以TabItem显示.用户必须首先登录到服务器,以获取朋友列表.

我创建了两个用户控件,一个用于用户登录时,另一个用于未登录时.这条线上的东西:

UnloggedView.xaml

<UserControl x:Class="UnloggedView" ...>
    <TextBlock ...>You need to <Hyperlink Command="{Binding LoginCmd}">
        Login</Hyperlink>too see your friends list</TextBlock>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

LoggedView.xaml:

<UserControl x:Class="LoggedView" ...>
    ...
    <ListView ItemSource={Binding Path=friends}">...
</UserControl>
Run Code Online (Sandbox Code Playgroud)

主窗口包含以下代码:

....
<TabItem Header="Friends">
    <vw:UnloggedView />
</TabItem>
Run Code Online (Sandbox Code Playgroud)

我相信一切都是根据MVVM的原则.LoginCmd是在ViewModel中实现的DelegateCommand(来自prism)的简化变体.两个视图都正常工作,并且在填充(异步)列表时,会触发通知并更新视图.我很高兴.

所以我有两个问题:第一个问题是我如何激活LoginWindow(提示用户输入他的凭据?现在,我只是创建LoginWindow(一个视图对象)并使用ShowDialog呈现它.它看起来像我通过直接操作ViewModel中的UI来打破MVVM的规则.

主要问题是在我使用服务器登录后,用LoggedView替换TabItem内容的正确方法是什么.根据MVVM主体,ViewModel不应该对View的内部有所了解.我在ViewModel中暴露了IsLogged属性(它将触发PropertyChanged通知)但是我应该绑定什么才能使一切发生?我真的不希望ViewModel操纵View.

谢谢

wpf mvvm

3
推荐指数
1
解决办法
5671
查看次数

解码self.request.body

在我的帖子处理程序中,消息的主体是一个json.在self.request.body中,我收到一条HTML编码的消息:

%7B+%22name%22%3A+%22John+Dao%22%2C+%22Age%22%3A+42+%7D=
Run Code Online (Sandbox Code Playgroud)

看一下网络流量,有效载荷实际上是:

{ "name": "John Dao", "Age": 42 }
Run Code Online (Sandbox Code Playgroud)

所以,我很确定编码发生在服务器上.我如何解码这个字符串,或以某种方式告诉json.loads接受编码的消息,或者更好 - 告诉WSGI(它是谷歌应用引擎)不编码身体与beging?

python google-app-engine wsgi

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