我Service在Android O OS上使用Class.
我计划Service在后台使用.
Android建议指出startService()应该使用startForegroundService().
如果您使用startForegroundService(),则Service抛出a Service然后调用Service错误.
这有什么问题?
service android operating-system foreground android-8.0-oreo
我读到Linux是一个单片内核.单片内核是否意味着将完整的内核代码编译并链接到可执行文件中?
如果Linux能够支持模块,为什么不将所有子系统分解为模块并在必要时加载它们?在这种情况下,内核最初不必加载所有模块,并且可以维护模块中函数的索引并在必要时加载它们.
如何使用JavaScript查找操作系统名称和操作系统版本?
我知道一般理论,但我不能适应细节.
我知道程序驻留在计算机的辅助内存中.程序开始执行后,它将完全复制到RAM中.然后处理器一次检索一些指令(它取决于总线的大小),将它们放入寄存器并执行它们.
我也知道计算机程序使用两种内存:堆栈和堆,它们也是计算机主存储器的一部分.堆栈用于非动态内存,堆用于动态内存(例如,与newC++中的运算符相关的所有内容)
我无法理解的是这两件事是如何联系起来的.用于执行指令的堆栈在什么时候?指令从RAM,堆栈到寄存器?
我需要我的代码根据编译它的操作系统做不同的事情.我正在寻找这样的东西:
#ifdef OSisWindows
// do Windows-specific stuff
#else
// do Unix-specific stuff
#endif
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?有没有更好的方法来做同样的事情?
欢迎所有平台,请指定您的答案平台.
一个类似的问题:如何以编程方式获取C++中的CPU缓存页面大小?
我试图了解使用Python的库函数执行特定于操作系统的任务(例如创建文件/目录,更改文件属性等)而不仅仅通过os.system()或执行这些命令的动机是什么subprocess.call()?
例如,为什么我要使用os.chmod而不是做os.system("chmod...")?
我知道尽可能多地使用Python的可用库方法而不是直接执行shell命令更"pythonic".但是,从功能的角度来看,还有其他动机吗?
我只是在谈论在这里执行简单的单行shell命令.当我们需要更多地控制任务的执行时,我理解使用subprocess模块更有意义,例如.
抱歉长度,这是必要的.
介绍
我正在使用C#4.0 for Windows Vista/7开发一个远程桌面软件(只是为了好玩).我已经遇到了基本障碍:我有一个强大的UDP消息系统,相对干净的程序设计,我有一个镜像驱动程序(来自DemoForge的免费DFMirage镜像驱动程序)启动并运行,我已经为所有人实现了NAT遍历除对称NAT之外的NAT类型(存在于公司防火墙情况下).
关于屏幕传输/共享,由于镜像驱动程序,我会自动通知已更改的屏幕区域,我可以简单地将镜像驱动程序不断变化的屏幕位图封送到我自己的位图.然后我将屏幕区域压缩为PNG并将其从服务器发送到我的客户端.事情看起来很不错,但还不够快.它和VNC一样慢(顺便说一下,我不使用VNC协议,只是一个自定义的业余协议).
从最慢的远程桌面软件到最快的,列表通常从所有类似VNC的实现开始,然后爬到Microsoft Windows远程桌面......然后...... TeamViewer.对CrossLoop,LogMeIn不太确定 - 我没有使用它们,但TeamViewer 非常快.它真的很直播.我tree在命令提示符上运行了一个命令,它以20毫秒的延迟更新.我可以浏览网页比我的笔记本电脑慢几毫秒.在Visual Studio中垂直滚动代码的延迟时间为50毫秒.想想TeamViewer的屏幕传输解决方案必须具备多么强大的功能才能实现这一切.
VNC使用基于轮询的钩子来检测屏幕变化和暴力屏幕捕获/比较最坏的情况.在最好的情况下,他们使用像DFMirage这样的镜像驱动程序.我在这个级别.他们使用称为RFB协议的东西.
Microsoft Windows远程桌面显然比VNC高出一步.我从StackOverflow的某个地方听说,Windows远程桌面不会发送屏幕位图,而是发送实际的绘图命令.这非常棒,因为它可以发送简单的文本(在此坐标处绘制此矩形并使用此渐变对其进行着色)!远程桌面确实非常快 - 而且它是在家工作的标准方式.它使用了一种称为RDP协议的东西.
现在TeamViewer对我来说是一个完全的谜.显然,他们发布了第2版的源代码(截至2012年2月,TeamViewer版本为7).人们已经阅读过它并说版本2没用 - 它只是对VNC进行自动NAT遍历的一些改进.
但版本7 ......现在它的速度非常快.我的意思是,它实际上比Windows远程桌面更快.我用TeamViewer流式传输DirectX 3D游戏(1 fps,但Windows远程桌面甚至不允许DirectX运行).
顺便说一句,TeamViewer在没有镜像驱动程序的情况下完成所有这些操作 有一个选项可以安装一个,它会更快一点.
问题
我的问题是,TeamViewer如此快速?一定不可能.如果你在24位深度(16位深度显然很难看)的情况下获得1920 x 1080分辨率,那么原始数据仍为6,220,800字节.即使使用libjpeg-turbo(大公司使用的最快的JPG压缩库之一),将其压缩到30KB(让我们非常慷慨),也需要时间来通过TeamViewer的服务器(TeamViewer通过简单地代理流量来绕过公司的Symmetric NAT)他们的服务器).并且libjpeg-turbo压缩需要时间来压缩.对于我来说,高质量的JPG压缩需要175毫秒才能获得完整的1920 x 1080截图.如果主机的计算机运行Atom处理器,那么这个数字会上升.我根本不明白TeamViewer如何很好地优化了他们的屏幕传输.同样,小尺寸图像可能会被高度压缩,但需要至少几十毫秒来压缩.大尺寸图像不需要时间压缩,但需要很长时间才能完成.不知何故,TeamViewer完成整个过程以获得大约每秒20-25帧.我使用过网络监视器,TeamViewer在500 Kbps和1 Mbps的速度下仍然没有时滞(VNC软件在该传输速率下滞后几秒钟).在我的tree命令提示符测试期间,TeamViewer以1 Mbps的速率接收入站数据,仍然运行5-6 fps.VNC和远程桌面不这样做.又怎样?
答案有点复杂和错综复杂,所以如果你只是说它是因为他们使用UDP而不是TCP(请你认为他们确实使用TCP就像成功一样),请不要发布0.02美元.
我希望在StackOverflow上有一个TeamViewer开发人员.
潜在的答案
一旦人们回复,将更新此内容.
performance operating-system udp network-programming remote-desktop
当需要连接多个目录时,如在可执行搜索路径中,存在与os相关的分隔符.对于Windows来说';',对于Linux来说就是这样':'.Python中是否有一种方法可以分割哪个字符?
在讨论这个问题时如何使用python找出我的python路径?,建议os.sep会这样做.答案是错误的,因为它是目录或文件名组件的分隔符,等同于'\\'或'/'.
什么是用户变量,如之间的区别PATH,TMP等和系统变量?
我不小心删除了用户变量PATH.我应该做些什么?
operating-system ×10
c ×2
c++ ×2
python ×2
android ×1
architecture ×1
caching ×1
foreground ×1
javascript ×1
linux ×1
linux-kernel ×1
memory ×1
path ×1
performance ×1
service ×1
udp ×1
user-agent ×1
windows ×1
x86 ×1