V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mashiro233  ›  全部回复第 2 页 / 共 2 页
回复总数  38
1  2  
2018-05-22 20:39:13 +08:00
回复了 Number13 创建的主题 C 如何用 C++ 实现一个简单的文件操作?
是的。如果你要进行读写操作,那么在构造函数打开文件那里就应该设置成可写可读权限。
2018-05-22 20:28:12 +08:00
回复了 GLee9507 创建的主题 Android Android 面试奇怪问题
说错了,是 Cortex-A57 ……
2018-05-22 20:22:18 +08:00
回复了 GLee9507 创建的主题 Android Android 面试奇怪问题
@iwtbauh

针对你 39 楼的回复 `CPU 通电以后就会一直转` 这个也观点我认为也是错误的。

我们来看 Cortex-A72 的手册 2.4.1 Dynamic power management。
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0488f/Chunk1121736769.html

这里谈到了 WFI 和 WFE 的实现,其中都提到了。
ARMv8-A architecture that puts the core in a low-power state by disabling the clocks in the core while keeping the core powered up. This reduces the power drawn to the static leakage when the core is in WFI low-power state.

注意这个 disabling the clocks,进入 idle 之后时钟是被关闭的 cpu 本身不执行指令,但是能够被外部中断或者其他什么方式唤醒(比如 WFE 可以被其他核的 SEV 指令唤醒)。
2018-05-22 19:47:35 +08:00
回复了 GLee9507 创建的主题 Android Android 面试奇怪问题
手抖按到快捷键了发出来了…………
```
while(1){
是否需要调度?需要,让出: 不需要,idle 或者 poll。
}

```
2018-05-22 19:45:35 +08:00
回复了 GLee9507 创建的主题 Android Android 面试奇怪问题
@iwtbauh
@enenaaa

首先 x86 我不熟,如果 HLT 的作用是将 cpu 进入低功耗模式等待中断将其恢复到正常模式的话。那么 ARM 对应的有 WFI(Wait For Interrupt)指令将 cpu 进入一个低功耗模式,直到一个中断发生。在多核的情况下还有个 WFE。

既然都贴出内核代码了,那我们不妨分析一下。首先看死循环,死循环再往下看(227 行)是不是有个 local_irq_disable()关闭中断,再之后,检查是进入 poll 轮寻(这里会重新开启中断)还是真正的 idle 模式,这里会调用
cpuidle_idle_call(),在这里(128 行),会检查是否需要让出 idle,如果需要则让出,不需则检查当前 cpu 是否支持 idle,如果支持则调用 default_idle_call(),这里就是会调用 arch_cpu_idle(),也就是 x86 的 HLT 指令,ARM 的 WFI 指令的地方。所以很显然,内核使用了大循环没有错,但是大循环绝对不是 iwtbauh 想象的那样工作,简单点就是。

```
while(1){

}

```
2018-05-18 18:43:36 +08:00
回复了 a476286557 创建的主题 Python 关于多进程的问题中全局变量地址问题
@bantao
是的,可以这么理解。
@corethink1

不清楚你指的关联具体是啥,水果的下落路径和手指的运动是两个独立的任务。如果指的是手指和水果的碰撞检测,那就算坐标呗,计算手指当前的坐标是否在水果的面积内。2D 游戏的基本多边形是矩形,算算就是了。
不知道楼主是全手写还是用游戏引擎做的。
如果是引擎的话,判断触碰有专门的事件无需费心。当手指触碰到屏幕后,创建一个不可见的 sprite 跟着手指走就行,当手指离开的时候销毁,同时利用 onEnter 和 onLeave 这种类似方法记录刚体的切割线。刀刃我不清楚具体的效果是怎么样……不好给建议。
如果是手写,思路和上面差不多,自己做好 onEnter 和 onLeave 的实现就行。
2018-05-18 13:39:30 +08:00
回复了 a476286557 创建的主题 Python 关于多进程的问题中全局变量地址问题
@bantao

首先,运行在用户空间的程序所拿到的内存地址,都不是真实的物理内存地址。我们它所在的地址空间叫做 user virtual address space,这些地址是通过内存管理单元( MMU )来对应真实的物理地址。所以当你的程序被系统加载执行后,所获得的指针地址全都是针对你自身的虚拟地址。A 和 B 两个程序的 0x1111 地址,可能指向同一个物理内存地址,也可能指向不同的物理内存地址。同理,A 的 0x1111 和 B 的 0x2222 也可能指向同一个物理内存地址(共享内存)。

所以,这里的 g_task 在 A 和 B 两个不同的 process 观测到指向同一地址,并不能说明什么。可以运行楼主的例子,在 process A中对g_task 进行的修改,并不能在 process B 中观测到。之所以他们内存地址相同,只是因为 Linux 使用 fork 实现让他们"碰巧"相同了而已。
2018-05-18 11:15:41 +08:00
回复了 bannychen 创建的主题 程序员 匿名分享文件都有什么方式?请大神指点
filedropper
连注册都不需要
2018-05-17 21:19:54 +08:00
回复了 bigtom 创建的主题 问与答 如何在 Mac 上开发 Linux 系统程序
@bigtom 感谢,学习了。
2018-05-17 17:31:27 +08:00
回复了 a476286557 创建的主题 Python 关于多进程的问题中全局变量地址问题
不同是正常的,相同是“碰巧”的。理解多进程和多线程的区别就应该懂了。
2018-05-17 15:41:15 +08:00
回复了 bigtom 创建的主题 问与答 如何在 Mac 上开发 Linux 系统程序
@tulongtou

引入标准库 syscall 就可以了 `syscall.EpollCtl`。

不过还是有点好奇楼主是在什么样的需求下需要直接上 epoll,因为在我印象里直接用 goroutine 处理并发就够好用了。
2018-05-17 10:03:29 +08:00
回复了 fanyangyang 创建的主题 macOS 求 Mac 上较好的自动化测试软件
不太明白楼主的描述……测试自己的代码不是应该自己写单元测试然后跑一遍不就完事了吗。
如果楼主是想要一个能够跑在 macOS 上的自动化测试工具。我司的做法是 Jenkins,然后将一台 macOS 系统作为它的 slave。有需要测试的项目在 pipeline 里指定这个 slave 跑就行了。
2018-05-17 09:53:28 +08:00
回复了 dalieba 创建的主题 分享发现 这些日本名字让中国人不忍直视
还好吧,犬養这种还算正常,因为日本人的姓由来很多,有的是赐予的有的是地名。
我觉得要说奇葩姓也得是 我妻(わがづま)这种。我一直以为这个是虚构的姓,直到我认识了一个真的姓这个人……
2018-05-17 06:57:33 +08:00
回复了 s82kd92l 创建的主题 Android 原生 android 是否有统计每日流量使用情况的 app?
Internet speed meter
@Kraken
分布式和负载均衡,简单的说就是多个服务器跑不同的项目和多个服务器跑相同的项目。举个实际的例子。

因为我是做游戏服务端开发的我就用游戏举例子。魔兽世界知道吧,我们都知道魔兽世界有很多个区服,玩家通常都会选择不需要排队,延迟低的区服。所以,如果我们把游戏的逻辑服务端看成一个业务,通过增加多个服务器来跑游戏的逻辑服务端提供多个区服,这个就是负载均衡,用来解决服务器压力。

同样的,刚刚说的是以游戏服务端这个看成一个业务,然而一个完整的网络游戏可不止这么一个业务比如我们需要有一个公用的账号系统,因为我不可能换个区就要重新注册一个账号。我们还需要日志分析,用户行为分析,GM 工具等等各种其他的业务,这些业务肯定是跑在其他服务器上的,那么由这一堆业务所组成的完整的游戏运营服务,这个就是用分布式,用来解决模块的过度耦合。

然后,楼主你有一个误区,就是分布式主要是用来解决高并发或者其他因为系统资源不足所导致的瓶颈,这是错误的。我个人的观点是,分布式主要解决的是模块重用和系统边界问题,注重的是业务问题。依旧用上面那个例子,假如我们不采用分布式开发游戏整体业务,把账号系统在逻辑服务端里实现,那么就会出现换个区需要重新注册账号的问题。
我认为微服务的概念实际上和软件开发中追求的高内聚低耦合是一个目的。就是为了避免各个模块之间的过渡依赖,制定清晰的接口,只不过这个模块被放大了成了业务,就成了微服务。
就像 @q397064399 说的那样,微服务的最大意义是在于对待处理系统边界的问题,使得业务 /模块易于拆分,业务之间仅关注于接口而不是实现。微服务能够解决的不仅仅是高并发问题,还能解决开发问题。
举个例子,现在流行 restful 架构就是很好的一种拆分方式。前端在进行开发的时候,完全不需要关注后端的实现。前端只要写完逻辑,做好单元测试接口测试就完事了。管他后端是 PHP 还是 Java,何必自寻烦恼。
至于楼主提到多个微服务就要多个 tomcat 吃资源的事情。首先这个利和弊是要根据客观条件来判断的。当我们的业务只需要通过增加服务器资源,几乎不需要修改代码就能解决高并发的时候,我认为老板还是很乐意看到这种情况的。当然,如果你们根本就没有这么大的业务量,平白无故的开几个 tomcat 确实吃资源。同样,制定接口和拆分业务也需要占用开发时间。如何进行取舍,怎么进行合理的拆分,这个就是架构师的活了。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5547 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 09:28 · PVG 17:28 · LAX 01:28 · JFK 04:28
Developed with CodeLauncher
♥ Do have faith in what you're doing.