小编Cod*_*bal的帖子

理解Java InputStream读取方法的问题

假设我有一个Inputstream.如果我错了,请纠正我,但InputStream中的所有数据都保存为字节,例如以下文字:"为什么不用♥?" 现在我想知道,这个文本是如何转换为字节数组的,因为我不知道(例如)♥是如何保存的.如果我打电话

InputStream myInputStream = os.getInputStream();
byte[] b = new byte[1];
while ((in.read(b)) != -1) {
            System.out.write(b, 0, 1);
}
Run Code Online (Sandbox Code Playgroud)

然后我的byteArray(长度为1)将填充每个循环中的下一个字节.

int.read(b)
Run Code Online (Sandbox Code Playgroud)

返回一个整数值,稍后将其转换为一个字符.所以,如果我看一下Java文档,你会发现这样的东西:

从输入流中读取下一个数据字节.值字节作为int返回,范围为0到255.

我的想法是:只有255个不同的角色可能吗?在推理中必定存在错误,因为在我的源中使用哪个字符无关紧要.

所以 - 任何人都可以帮助我这个脑筋急转弯吗?多谢.

java inputstream

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

JDBC 如何知道去哪里寻找驱动程序类?

我想知道 JDBC 如何知道它应该使用哪个数据库驱动程序类。

例子:

Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection verbindung = DriverManager.getConnection("jdbc:derby:d:/memory/onlineshop;create=true");
Run Code Online (Sandbox Code Playgroud)

第一行需要注意,驱动程序(EmbeddedDriver)将被加载到类加载器中(因此可用,例如与反射一起使用,对吧?)。

所以,下一行是我的连接字符串。它开始于:

jdbc:德比:...

我期待这样的事情:

jdbc:ConcreteDriverClassForInit

正如您所看到的,我缺少类加载器中加载的类与该类的连接字符串调用之间的链接。

我在德比存档中搜索了一个名为“Derby.Class”的类 - 但没有这样的类。

即使当我尝试某事时。像这样,JDBC仍然知道,要做什么:

Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Class.forName("org.something.anyotherDBDriver1");
Class.forName("org.something.anyotherDBDriver2");
Connection verbindung = DriverManager.getConnection("jdbc:derby:d:/memory/onlineshop;create=true");
Run Code Online (Sandbox Code Playgroud)

但为什么?感谢您的帮助!

java database database-connection jdbc

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

了解没有MVVM的ICommand实现

我试图了解如何使用命令.我读了很多关于命令的知识,我知道,大多数时候命令都是在MVVM模式中使用的.我也知道,有一个RoutedCommand类 - 通常用于在开发时节省时间.

但是 - 我想了解基础知识 - 而这正是问题所在.开始了:

在我的应用程序中,我定义了一个类'MyCommand':

 public class MyCommand :ICommand
{
    public void Execute(object parameter)
    {
        Console.WriteLine("Execute called!");
        CanExecuteChanged(null, null);
    }

    public bool CanExecute(object parameter)
    {
        Console.WriteLine("CanExecute called!");
        return true;
    }

    public event EventHandler CanExecuteChanged;
}
Run Code Online (Sandbox Code Playgroud)

好吧 - 为了获得静态访问,我决定创建一个类,仅适用于所有应用程序命令:

 public static class AppCommands
    {
        private static ICommand anyCommand = new MyCommand();

        public static ICommand AnyCommand
        {
            get { return anyCommand; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

就快到了.现在我在MainWindow中放了两个按钮.其中一个是"绑定"到命令:

<StackPanel>
    <Button Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" />
    <Button Content="Button" Height="23" Name="button2" Width="75" …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm command-pattern

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

@SessionScoped (CDI) 和 @Stateful (Java EE) 之间的区别

我了解到 CDI Bean 可以用于不同的基于 Web 应用程序的范围(仅限于此,对吧?)。例如:@RequestScoped、@SessionScoped等。@SessionScoped 将数据保存在整个浏览器会话上的托管 bean 中。这在逻辑上听起来很安静,因为注释名称描述了它的作用。然而,现在我更仔细地了解了 EJB 会话 Bean。到目前为止我知道,这样的状态可能具有以下三种状态之一:@Stateless、@Stateful 和@Singleton。对我来说,看起来它们和 CDI bean 的注释之间有直接的可比性:@RequestScoped --> @Stateless、@SessionScoped --> @Stateful、@ApplicationScoped --> @Singleton。但由于我正在研究一些示例,我发现了一个同时包含 @Stateful 和 @SessionScoped 注释的 bean。我寻找解释 - 但我没有找到任何可以理解的答案。那么,到底有什么区别呢?为什么我必须使用这两个注释?谢谢。

annotations stateful session-scope cdi jakarta-ee

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

Nhibernate:如何为'Sets'添加AddAll方法?

由于我安装了当前版本的Nhibernate(版本4.0.0.4000),因此不再包含Iesi.Collections.Generic.HashedSet.

我在代码的很多部分使用了这个集合类型,因为它有一个"AddAll"方法,对我来说非常有用.

但是 - 现在在同一命名空间中只剩下3种类型: LinkedHashSet<T> ReadOnlySet<T> SychronizedSet<T>

他们都没有这样的方法.我试图自己实现它,但它不起作用.

这是我做的:

  1. 创建了一个接口"IMySet"

    public interface IMySet:ISet {void AddAll(IEnumerable items); }

  2. 从"LinkedHashSet"实现复制完整源代码,将其重命名为"TestSet"并替换派生接口.

之前:

public class TestSet<T> : ISet<T>
Run Code Online (Sandbox Code Playgroud)

后:

public class TestSet<T> : IMySet<T>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.如果我尝试保存实现IMySet的对象,则会发生错误:

NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesWithOptimizer(Object entity,Object [] values)

我不明白这是什么问题.有人可以帮忙吗?

c# mapping nhibernate set

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