小编Mik*_*e Q的帖子

BinaryReader.ReadChars()的问题

我遇到了我认为BinaryReader.ReadChars()方法的问题.当我在原始套接字NetworkStream周围包装BinaryReader时偶尔会出现流损坏,其中正在读取的流不同步.所讨论的流包含二进制序列化协议中的消息.

我已将此跟踪到以下内容

  • 它只在读取unicode字符串时发生(使用Encoding.BigEndian编码)
  • 只有当有问题的字符串被分成两个tcp数据包时才会发生(使用wireshark确认)

我认为发生的事情如下(在下面的例子中)

  • 调用BinaryReader.ReadChars()要求它读取3个字符(字符串长度在字符串本身之前编码)
  • 第一个循环在内部请求从网络流中读取6个字节(3个剩余字符*2个字节/字符)
  • 网络流只有3个字节可用
  • 3个字节读入本地缓冲区
  • 缓冲区交给解码器
  • 解码器解码1个字符,并将另一个字节保留在它自己的内部缓冲区中
  • 第二个循环内部请求读取4个字节!(2个剩余字符*2个字节/字符)
  • 网络流有4个可用字节
  • 4个字节读入本地缓冲区
  • 缓冲区交给解码器
  • 解码器解码2个字符,并在内部保留剩余的第4个字节
  • 字符串解码完成
  • 序列化代码试图解组下一个项目并因为流损坏而呱呱叫.

    char[] buffer = new char[3];
    int charIndex = 0;
    
    Decoder decoder = Encoding.BigEndianUnicode.GetDecoder();
    
    // pretend 3 of the 6 bytes arrives in one packet
    byte[] b1 = new byte[] { 0, 83, 0 };
    int charsRead = decoder.GetChars(b1, 0, 3, buffer, charIndex);
    charIndex += charsRead;
    
    // pretend the remaining 3 bytes plus a final byte, for something unrelated,
    // arrive next
    byte[] …
    Run Code Online (Sandbox Code Playgroud)

.net c# binaryreader

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

使用Spring对安全性使用LDAP进行身份验证

我正在尝试使用spring-security来获取Java应用程序,以便与我设置的本地ADAM实例进行通信.

我已成功安装ADAM并设置如下....

  • 在localhost上运行的实例:389
  • 根是 O=Company
    • 一个孩子叫OU=Company Users(orgnizationalUnit)
      • 一个叫做CN=Mike Q(用户)的granchild
      • uid = mikepassword = welcome

然后我设置了spring-security(版本3.0.3,spring-framework 3.0.4和spring-ldap 1.3.0).弹簧文件

  <security:ldap-server id="contextSource" url="ldap://localhost:389/o=Company"/>

  <security:authentication-manager>
    <security:ldap-authentication-provider user-dn-pattern="uid={0},ou=Company Users"/>
  </security:authentication-manager>

  <bean class="com.xxx.test.TestAuthentication" lazy-init="false"/>
Run Code Online (Sandbox Code Playgroud)

和TestAuthentication

public class TestAuthentication
{
    @Autowired
    private AuthenticationManager authenticationManager;

    public void initialise()
    {
        Authentication authentication = new UsernamePasswordAuthenticationToken( "mike", "welcome" );
        Authentication reponseAuthentication = authenticationManager.authenticate( authentication );
    }
}
Run Code Online (Sandbox Code Playgroud)

运行这个我得到以下错误

Caused by: javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C090336, comment: AcceptSecurityContext error, data 2030, …
Run Code Online (Sandbox Code Playgroud)

java authentication adam spring-security

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

Hibernate session.contains(Class clazz,Serializable id)

我希望能够检查会话是否包含给定类/标识符的实体.我现在看不到这样做的方法.

  • contains() 获取实体对象而不是类+键
  • get() 如果实体不存在则查询数据库,我不想这样做
  • load() 永远不会返回null,因为始终会创建代理,因此我无法使用此方法

是否可以执行上述操作而不会对DB产生任何副作用/查询?

java session hibernate

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

spring classpath资源中的相对路径

我有一堆spring配置文件,所有这些文件都存放在各种子包中的META-INF目录下.我一直在使用以下导入...

  <import resource="../database/schema.xml"/>
Run Code Online (Sandbox Code Playgroud)

所以来自源文件的相对路径.当我在jar文件之外使用本地构建时,这很好用.但是,当我将所有内容打包在一个jar中时,我得到一个错误,它无法解析URL资源.如果我将上面的内容更改为绝对路径(使用classpath :),那么它可以正常工作.

有什么方法可以使用带有".."的相对路径,当配置包装在一个罐子里时,或者我只限于下降相对路径和绝对路径?

谢谢.

java url spring path relative-path

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

使用spring按需创建bean

我想在工厂模式启动后创建一些spring bean.例如,每隔一段时间我就有一些工作要做,我需要创建一个任务bean(可能对其他单例spring bean有依赖)并执行它.

可能有多个工作要同时执行,因此每个任务bean都需要独立(原型).

人们用它来实现这个目标吗?

正如我所看到的,我需要以某种方式与容器/ applicationContext进行交互,但我真的不想分散对applicationContext/beanFactory的注入并且到处调用getBean("...").

我想到了这样的事情(注意"工厂"是我想象的东西,而不是存在的东西)

<bean id="myTask" class="MyTask" scope="prototype">
  <property name="entityManager" ref=".../>
  ...
</bean>

<bean id="myTaskExecutor" class="MyTaskExecutor">
  <property name="taskFactory">
     <xxx:factory bean="myTask"/>
  </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

然后是代码

class MyTaskExecutor
{
  private Factory<MyTask> taskFactory;

  public void setTaskFactory( Factory<MyTask> taskFactory )
  {
    this.taskFactory = taskFactory;
  }
}
Run Code Online (Sandbox Code Playgroud)

也许是一个注释版本

class MyTaskExecutor
{
  @Factory(MyTask.class)
  private Factory<MyTask> taskFactory;

}
Run Code Online (Sandbox Code Playgroud)

也许有类似上面的东西?或者我错过了一些基本的东西.

我意识到我可以有一个单独的MyTaskFactory并使用它来实例化使用"new"然后我必须从工厂传递所有它的家属感觉不对.

所以我想总结一下这个问题

从应用程序代码中按需创建原型spring bean的推荐方法是什么?

感谢任何输入.

java spring

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

快速开发Java中的Web应用程序

我需要非常快速地(1周)开发一个基本的Web应用程序来进行演示.

我的要求是

  • Java(我需要利用现有的Java库来访问相关数据)
  • 2个屏幕
  • 一个用于静态数据视图,可能是一些搜索参数
  • 其他用于基本表单输入
  • 不需要花哨的AJAX
  • 对于网页设计师来说,理想情况下可以轻松地进入并根据需要进行调整,而无需重写所有内容

我的第一站是检查Wicket,因为我听说过它的好消息.我现在没有时间潜入任何沉重的事情,这可能在我的脑海中写下了JSF(我玩JSF1,陡峭的学习曲线,我现在已经滑倒了).

我很高兴将结果视为一次性,所以如果有一个框架开始很好,但是没有扩展到更大的项目,那就没关系.

对框架/方法表示赞赏的任何建议.

java web-applications

5
推荐指数
3
解决办法
5947
查看次数

发布最新的Jenkins构建

我一直在和詹金斯一起玩,并且全力以赴.版本1.447

但是,我想将最新的稳定版本"发布"到Jenkins工作区/工作区域以外的区域.这将是用户可以获取最新稳定版本进行测试的地方,并且可以节省我不得不指向它们.

有人可以推荐我应该如何接近这个吗?Jenkins似乎有能力发布人工制品,但只能在Jenkins工作区/区域内发布.有一个好的插件可以做我想要的.我还想先完全删除现有的构建.

jenkins

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

liquibase是否允许访问java.sql.Connection以执行自定义任务

有没有办法让liquibase调用自定义Java类/插件,并让该类访问底层连接以进行数据更改.我看了一眼,但它只是

因此,我们的更新步骤需要大量的数据操作,这比使用SQL更容易在代码中进行调试和调试.所以我想编写可以提取,转换和保存数据的任务.这可能在liquibase框架内吗?

liquibase

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

当SQL Server bcps进入带有索引的空表时,它在内部执行什么操作?

如果我有一个带索引的空表并且我执行bcp,SQL Server(内部)是否删除/禁用索引,加载数据然后重新应用/启用/构建索引?

sql-server indexing bcp

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

可以将此Linq查询键入除"var"之外的任何内容吗?

当我执行返回匿名类型的查询时

    var assets =
        from Product p in Session.CreateLinq<Product>()
        where bundles.Contains(p.ProductBundle)
        select new {p.Asset, p.Asset.PropertyTbl};
Run Code Online (Sandbox Code Playgroud)

我可以输入var以外的其他内容吗?

c# linq var anonymous-types

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