/ dev/random和/ dev/urandom使用环境噪声来产生随机性.
使用虚拟化服务器,在一个硬件配置上可以有多个操作系统实例.这些操作系统都将从相同的环境噪声中获取随机性.
这是否意味着随机数生成器强度降低,因为所有操作系统实例都基于相同输入的计算?或者,是否将环境噪声划分为不共享?
如果后者是真的,我可以看到这降低了/ dev/urandom的有效性,因为它重用了它的内部池并减少了环境输入,降低了熵.
/ dev/random应该没问题,因为它会阻塞,直到获得足够的噪声......除非OS实例都共享输入.
那么,问题是:虚拟化对加密强随机数生成器的影响是什么,特别是那些使用环境噪声的生成器?
问题
我们需要在WPF ListBox控件中有效地显示大量(> 1000)个对象.我们依靠WPF ListBox的虚拟化(通过VirtualizingStackPanel)来有效地显示这些项目.
错误:使用虚拟化时,WPF ListBox控件无法正确显示项目.
如何再现
我们已将问题提炼到下面显示的独立xaml中.
将xaml复制并粘贴到XAMLPad中.
最初,ListBox中没有选定的项目,因此按预期,所有项目大小相同,并且它们完全填充可用空间.
现在,单击第一个项目.正如预期的那样,由于我们的DataTemplate,所选项目将展开以显示其他信息.
正如预期的那样,这会导致水平滚动条出现,因为所选项目现在比可用空间更宽.
现在使用鼠标单击并将水平滚动条拖动到右侧.
错误:未选择的可见项目不再拉伸以填充可用空间.所有可见项目的宽度应相同.
这是一个已知的错误?有没有办法通过XAML或以编程方式解决这个问题?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Page.Resources>
<DataTemplate x:Key="MyGroupItemTemplate">
<Border Background="White"
TextElement.Foreground="Black"
BorderThickness="1"
BorderBrush="Black"
CornerRadius="10,10,10,10"
Cursor="Hand"
Padding="5,5,5,5"
Margin="2"
>
<StackPanel>
<TextBlock Text="{Binding Path=Text, FallbackValue=[Content]}" />
<TextBlock x:Name="_details" Visibility="Collapsed" Margin="0,10,0,10" Text="[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]" />
</StackPanel>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}"
Value="True">
<Setter Property="TextElement.FontWeight"
TargetName="_details"
Value="Bold"/>
<Setter Property="Visibility"
TargetName="_details"
Value="Visible"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Page.Resources>
<DockPanel x:Name="LayoutRoot">
<Slider x:Name="_slider"
DockPanel.Dock="Bottom"
Value="{Binding FontSize, ElementName=_list, Mode=TwoWay}"
Maximum="100" …Run Code Online (Sandbox Code Playgroud) 我试图了解像App-V和sandboxie(http://www.sandboxie.com/)这样的软件是如何工作的.但对于我的生活,我想不出任何可能使这成为可能的事情.他们如何拦截API调用并欺骗目标软件?如果有人会说它只是魔法和小精灵,我会相信它们.但是说真的,有没有白皮书讨论这个问题的解决方案?
如果这在CLR级别上是可能的那么那将是好的但是如果必须的话我愿意去本地.
两者都是相当笼统的术语,但我很想知道这些高度何时会与我们使用虚拟化的情况不同?
还有一个问题:我在MSDN上阅读:
如果CanContentScroll为true,则ExtentHeight,ScrollableHeight,ViewportHeight和VerticalOffset属性的值是项目数.如果CanContentScroll为false,则这些属性的值为"设备无关像素".
但是我遇到了ViewPort Height的问题:我在应用程序中有2个列表框:
1.启用了虚拟化并且CanContentScroll = True.
2.哪些没有虚拟化,CanContentScroll = True.
在ListBox 1中,拖放视口高度达到4/5(当前可见的元素数).但是在ListBox 2中,我得到的视口高度等于列表框的实际高度.
为何如此区别?
更多的发现:
1.可滚动高度是滚动查看器2中不可见的项目数
.视口高度是滚动查看器中可见的项目数.
因此,视口高度+ ScrollableHeight =范围高度
有人可以解释两个列表框之间有什么区别吗?在Listbox 1的情况下我需要ViewPort hieght
我需要处理WPF应用程序中的大量数据.
我已将大型集合绑定到ListView,并且我使用ItemContainerStyle将列表项的IsSelected属性绑定到我的对象的IsSelected属性,以便在选中该项时ListView,my objects的IsSelected属性也将设置为true.通过这样做,我可以轻松地仅对列表中已选择的对象执行命令.
我在ListView中使用UI虚拟化,因为应用程序会缓慢.但是因为我的整个集合中只有一部分在列表中可见,所以当我使用CTRL + A选择列表中的所有项目时,只有加载的项目的IsSelected属性设置为true.不可见的项目(虚拟化的项目)的IsSelected属性设置为false.这是一个问题,因为当我选择列表中的所有项目时,我希望该IsSelected属性对于集合中的所有项目都设置为true.
我已经创建了一些示例代码来说明问题:
MainWindow.xaml
<Window x:Class="VirtualizationHelp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" x:Name="wnd">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Content="Click me" Click="Button_Click" />
<ListView Grid.Row="1" ItemsSource="{Binding Path=Persons, ElementName=wnd}">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace VirtualizationHelp
{
public partial class MainWindow : Window
{ …Run Code Online (Sandbox Code Playgroud) 我用250行填充Datagrid.当用户使用滚动条向下滚动时(例如,低于75%),我想从数据库中获取接下来的250行,依此类推.我们的想法是,网格可能有数百万个结果,我们不希望将它们全部加载,直到用户请求它们为止.这有一个现有的机制吗?
编辑:因为似乎有很多困惑:我不是在寻找标准数据虚拟化解决方案,我已经使用过它们了.但是它们都要求你提前指定"虚拟行"的数量,而这个查询对我来说代价很高.他们之所以需要它,是因为当你知道网格中的总项数时,它会更容易计算当前页面/偏移量等.但是计算该数量是一个非常昂贵的SQL查询,所以我想迁移到另一个我可以跳过COUNT()查询的解决方案.
在我的计算机网络课程中,我们应该通过使用本机寄存器来学习并行端口编程(比如使用outportb之类的命令).我没有并行端口(因为我住在2011年)但想要练习程序(我使用dosbox安装了旧的turboc 3 IDE).是否有一个模拟并行端口的程序,如此程序模拟串口?
我一直试图弄清楚VMware是如何工作的(特别是安装Linux时),我有几个问题:
VMware遇到类似命令时会发生什么push cs?特别是cs,因为它的权限级别为0,VMware运行在1个权限级别,所以我假设它不得不将其转换为其他命令.
虚拟内存:它如何在虚拟机上运行?有2级翻译 - 进程虚拟内存 - >虚拟机物理内存 - >真机物理内存?当真实机器交换页面时,如何通知VMware?
更新:Docker 0.9.0现在使用libcontainer,从LXC转移请参阅:将进程附加到Docker libcontainer容器
我正在运行弹性搜索:
docker run -d -p 9200:9200 -p 9300:9300 dockerfile/elasticsearch
Run Code Online (Sandbox Code Playgroud)
检查它显示的过程如下:
$ docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49fdccefe4c8c72750d8155bbddad3acd8f573bf13926dcaab53c38672a62f22 dockerfile/elasticsearch:latest /usr/share/elasticsearch/bin/elasticsearch java About an hour ago Up 8 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp pensive_morse
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试连接正在运行的容器时,我得到堆积:
$ sudo docker attach 49fdccefe4c8c72750d8155bbddad3acd8f573bf13926dcaab53c38672a62f22
[sudo] password for lsoave:
Run Code Online (Sandbox Code Playgroud)
tty没有连接,提示没有回来.使用lxc-attach做同样的工作正常:
$ sudo lxc-attach -n 49fdccefe4c8c72750d8155bbddad3acd8f573bf13926dcaab53c38672a62f22
root@49fdccefe4c8:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 49 20:37 ? 00:00:20 /usr/bin/java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC …Run Code Online (Sandbox Code Playgroud) 我正在尝试调查docker的IO性能开销,所以我在特定的机器上创建了一个mysql docker容器,并运行了sysbench mysql基准来测量IO性能.Sysbench基本上在一段时间内执行一些读/写事务,然后输出已完成事务的数量和事务/秒速率.
当我在本机上运行基准测试时,我每秒获得779.5次事务.当我在mysql容器中运行基准测试时,我得到336个事务/秒.几乎是每秒交易数量的一半.这是docker的正常性能开销吗?这对于在生产系统中的容器中运行数据库是一个巨大的缺点,特别是对于IO /数据库密集型应用程序