小编Woj*_*lik的帖子

套接字心跳vs keepalive

实现自己的心跳和为套接字设置keepalive有什么优缺点?

我在某处读到,keepalive有时可能会失败,无论如何都会关闭连接(取决于网络结构).另一件事是,自己的心跳可以检测应用程序是否响应(不仅是套接字).

我的主要目标是确保所有这些:保持连接活动,即使没有数据发送(旁边可能的心跳),双方快速连接丢失检测,应用程序响应性检测.

我已经在两端实现了一个简单的心跳并且它工作得很好,但是我想知道是否可以用开箱即用的keepalive功能替换它.

c++ sockets windows networking tcp

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

为什么foreach在从ListView中删除项目时起作用而在ListBox中不起作用?

我开始学习C#,我对我发现的行为感到有点困惑.我试着弄清楚,为什么在一种情况下代码工作而在另一种情况下不工作:

foreach (ListViewItem l in listView1.SelectedItems) l.Remove();
foreach (object l in listBox1.SelectedItems) listBox1.Items.Remove(l);
Run Code Online (Sandbox Code Playgroud)

第一个工作正常,没有错误,但第二个抛出异常的信息,集合被更改.

有谁可以向我解释一下?

PS.在ListView的情况下,我正在调试代码和集合SelectedItems正在改变,但即使它运作良好.

c# foreach listview listbox

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

如何在 Xamarin.Forms 中推送时隐藏标签栏?

我最近几天TabbedPage在 iOS 上的 Xamarin.Forms 中苦苦挣扎。我找到了一些类似的解决方案:https : //forums.xamarin.com/discussion/20901/hide-tab-bar-on-push

但是,它们中没有一个运行良好。我还尝试子类化TabbedRenderer并将 TabBar 高度设置为 0。它可以工作,但是如果我在NavigationPage.Pushed事件处理程序中隐藏 TabBar,则会出现一些延迟,例如 TableView 底部有空白区域。

如果我尝试NavigationRendererPushViewController/PopViewController方法中覆盖和隐藏/显示标签栏,它有时会失败。例如,如果我来回快速导航,PopViewController则不会调用方法,导航堆栈被破坏并且标签栏不会恢复。

我认为唯一好的解决方案是使该属性起作用:UIViewController.HidesBottomBarWhenPushed. 但是,我不知道该怎么做,因为在渲染器中设置/覆盖它不起作用。

有没有人成功地显示和隐藏 TabBar?

uitabbar xamarin.ios ios xamarin xamarin.forms

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

当需要后台模式访问时,如何在iOS上安全地存储数据?

我正在开发用于iOS的移动应用程序,该应用程序必须安全地存储数据并能够在后台模式下从蓝牙设备下载数据。

我想知道加密该数据的最佳方法是什么?我正在考虑使用数据保护,并添加适当的文件属性以强制加密,或者通过将密码哈希存储在钥匙串中并使用带有基于该哈希的派生密钥的AES加密文件来更手动地进行加密。

但是,我有点担心钥匙串访问标志,就我而言,我将不得不使用kSecAttrAccessibleAfterFirstUnlock。谁能解释这到底是什么意思?

总结一下我的担忧:

  1. 可以在后台模式下提供良好的安全性吗?
  2. 最好的方法是什么?
  3. kSecAttrAccessibleAfterFirstUnlock-是否表示用户在重启后解锁设备时我的数据不安全?
  4. 如果用户没有密码怎么办?数据安全与否?

预先感谢您对本主题的任何帮助。

security encryption data-protection keychain ios

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

nHibernate批量大小不起作用

我在nHibernate中遇到了批量大小的问题(C# - VS 2012).我在集合和配置中设置了"batch-size",但它不起作用.

using (var s = OpenSession())
        {
            using (var t = s.BeginTransaction())
            {                   
                Parent parent = s.CreateCriteria(typeof(Parent)).List<Parent>().First();
                Console.Write(parent.Children[0]);
                t.Commit();
            }
        }
Run Code Online (Sandbox Code Playgroud)

nHibernate profiler显示它一次性占用所有孩子(例如1000个孩子),但它应该只需要5个孩子.

Parent.hbm.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="L6.Model" assembly="L6">
  <class name="Parent">
    <id name="ParentId">
      <generator class="native" />
    </id>
    <bag name="Children" batch-size="5">
      <key column="ID_Parent"/>
      <one-to-many class="Child"/>
    </bag>
  </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

Child.hbm.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="L6.Model" assembly="L6">
  <class name="Child">
    <id name="ChildId">
      <generator class="native" />
    </id>
    <many-to-one name="Parent" column="ID_Parent" class="Parent" />
  </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

的hibernate.cfg.xml

<?xml version="1.0" …
Run Code Online (Sandbox Code Playgroud)

c# database nhibernate

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