V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  verrickt  ›  全部回复第 9 页 / 共 11 页
回复总数  210
1  2  3  4  5  6  7  8  9  10 ... 11  
2018-06-11 13:29:31 +08:00
回复了 MrXiong 创建的主题 Java Java 超大文件统计
先对文件用外部排序按 key 排序。然后读一行,看下一行的 key,一样的话加计数,不一样把计数写到输出文件里。大体上还是外部排序+归并的思路
2018-06-04 00:27:33 +08:00
回复了 abcyuxue123 创建的主题 程序员 想了一个程序员能 get 的笑话
大家好,我的 id 是‘ 1=1 OR drop table user;
其实所有的 GUI 编程中,都存在类似 1L 所说的消息循环的概念。在 Win32 中,体现为
``` cpp
while((bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
```

GetMessage 由 Win32 的 Windows 的窗口子系统将外部事件转换为消息,发给获得焦点的进程。
进程在得到消息后,使用 TranslateMessage 翻译消息,最后调用 Dispatch 将消息发送给对应的窗口(Windows 里一个进程可以创建许多窗口),在窗口中也有这样的消息循环,根据不同的消息执行不同的操作,这样就完成对外部事件的响应。
认为一个进程如果在 5 秒钟之内没有处理消息,Windows 就认为它失去响应了

> If a message has not been retrieved within 5 seconds, the DWM declares the window to be hung.

https://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows
https://msdn.microsoft.com/en-us/library/windows/desktop/dd744765(v=vs.85).aspx
2018-05-27 21:34:16 +08:00
回复了 noli 创建的主题 程序员 会有熟练 Java 的愿意做 dotnet core 后端吗?
wpf 路过。.net 这边特别喜欢的就是 async/await 写并发了。不知道 core 里需要并发时是用 task 比较多呢还是 thread 比较多呢?
顺便问下 lz 公司.net core 的 Jd,做.net framework 久了,想往 core 上发展发展
2018-05-27 14:54:18 +08:00
回复了 whoami9894 创建的主题 C 请教一个 C 语言内存分配的问题
@whoami9894 如果还是不太懂的话,可以看一看 CSAPP 的 Machine-Level Representation of Programs 部分
2018-05-27 14:51:39 +08:00
回复了 whoami9894 创建的主题 C 请教一个 C 语言内存分配的问题
@whoami9894 还是没看懂你的意思。
针对这个情况画了张[简略的图]( https://www.draw.io/?lightbox=1&target=blank&highlight=0000ff&edit=_blank&layers=1&nav=1&title=Untitled%20Diagram.xml#R7Vtdb%2FMmFP41SO2kVrbx52XcpNvFXmlSJ227pAlJ3Doms0mTvr9%2BYOMvIInbOKnbNRctPmA%2BnvMcOBwwgHer3a8pWi9%2FkBmOgWXMdgCOgWWZhm2xf1zyWkgczykEizSaiUK14CH6ics3hXQTzXDWKkgJiWm0bgunJEnwlLZkKE3Jtl1sTuJ2q2u0wIrgYYpiVfpXNKPLQupbXi3%2FDUeLZdmy6QZFziOaPi9SsklEe8CC8%2FxXZK9QWZcYaLZEM7JtiOAEwLuUEFqkVrs7HHNsS9iK9%2B735Fb9TnFCu7wAixdeULwRQ%2F8T76joG30t8chHhPk7BoDhdhlR%2FLBGU567ZQxgsiVdxezJZElRJU4p3u3tllkNlpEIkxWm6SsrUr7gCHwEf2wonre1NsySLMuGJgIhQ4IAi6rqGgSWEDjoMfEUTMaIosFhYnXFxDJ6AMVXQHmgjOuDQ8XpCIrp9wBKoICy890byGRuzNoJH1OWWvAUmPggCEAwAhMHBHcgNPLEGLBuTDwwCkDIslgBD4S2AirlNtlCLqMpecZ3JCYpkyQkYSXDeRTHkgjF0SJhj1MGJ2bykIMdsYluJDJW0WzGm9Gqqq3MHrRlSRR2VW35GmXZzum6KknQUJaCM05mI756cMBilGXRVMdXPFMWj6PjbwzQ0QywlKU4RjR6aVevG7Vo4Q8SsYZrY5DwdSyJ5BnZpFMs3mouC0cqcqV6KEoXmCr15DqoRt1NLaaiFmNniN%2FXNQRbUpSpGoKtncp7MARLg%2Fi9%2BH1dxI%2BvE2cDXHWyvtzMU03bErxvnXjkeion5wwzj6OqZeKCkQF8ny%2FOoQ9GHk%2BMLBBM8sWZCe95mcAFYZAv4AYIzA42k%2BIs%2Boke8wKcz2ve%2F3xETgic8ZusJUaPOA6rfUZpdfVO44C5iP2S6Amo6N3iETxoRzfGLdNS0NKSeRqHyiJkPs%2FwyWp1j1vbpZ1Ux%2FFunWPTT7XmttxUr48JSN3RDBCSiozHMenDHVR999Jrn0UvLWzcfzd8Ox5ys74RdjpiJWI8p3Vu5emLWrI1SkpZQfMVipKr6zKfdbBZpCHO229L%2B%2B8S8MKP6QlacTIlj9k6fzY0ogKuiGeWy%2F8AuvQL%2B%2FdU9KlZpvgbDamXz1Uvr7jkeoXimEyv2BKEyZyLrq8H0V2KM3p1ga5oyD8eiBm%2BEDYhVUgMo08fNjWoPelEI1lUTB%2BbygikGeSTDqg13fCFqxrf5kuMz9iWA5LLHxxZU9ZxtusOkK7kcGYjpfBX3bp7nrS5rFzHhquoDRyysqe7iprYdzRA%2F7nrlkLemr8HEqiJYMwW%2BEE8kpQuyYIkKJ7UUokXDTjwLqJ%2FCzFP%2F8PTbHTsKWEdq7L4Q533hCl9FUeHaEMJE9Xt%2Fk7I%2Bo2hEzaaPEghlC72B0W8oUkEVSWd972dGaduTp4GyDjT6Eg5OXz8Hkycs1DO3E8589KUg%2BVJd4Ny0D2RcvmrozRFr40CIvy0N5rnScFSM5BOkY%2BUd8UOvVZt0YP3xnSgekjw8SePGnvQHGedzR5gh6jyxSGxZUhczcGGFpLqfO4kTNSQbuEN8lit7wPf5WFcn6XH%2FNQ1GAHfzrNcLuSh3jEI%2FM8MYx8npVAXQVXd1nch281zHQDgjuph6gHvg7aqg7n5eEzUAK3pX256s%2BE5lvsheZhQ42HCS3mYUPUwX4ZIOe%2BSlHPPQbkheZjlZNWinHMhypWNNyi3HSDlILwk5dSZX4EkW6I1T85jvBN3BELtdYGMqZUevEXQDPWo58XDvV1gB4qWAsnR6XrBQK2qWtb6v2Jg7z9kbPo%2FPPrf8JqUOwjvjvd9pmsH9p6lT9Rk3FpOeWYrFHcDTyNXr9cOHHV2%2B7bkbubXmyU7Uk39GbKjBiB%2BoCg5aLRfyjodQ8%2Ba%2BlKQCa22Nm7cIZlnh2jJt3kyF7gdyPPl85POxilV5MrhnR5tU3OPT7PIFt9w%2FB9WUufwBT5uqrClHHtIhtrh%2Bt63oVq2dIHclr%2Fx6Wyo8k3089mpegtR%2FwnRJ7e%2BPSc2lfUZwQcujOyx%2FriwKF5%2FwQkn%2FwE%3D)

代码如下:

``` c
int main()
{
int i =0;
int* j = &i;
int* k = (int*)malloc(sizeof(int));
test();
}
void test()
{
int u = 0;
int& v = u;
int w = (int*)malloc(sizeof(int));

}
```

当前执行的是`int w = (int*)malloc(sizeof(int));`。
Data 和 Stack 的内存是完全分开的。函数里定义的变量都是局部变量,分配在当前栈帧上。当函数返回后,栈帧回弹,局部变量的存储空间就被回收。当`test`执行完成,返回到`main`时,u,v,w 的存储空间就被回收了。

但是 Data 区的内存并不会因为函数返回就被回收,而是需要你自己去调用 free。


> 您好还想请教一下:像您说的那种情况,应当如何避免返回局部变量的地址呢?是直接传变量的副本作返回值吗?
直接返回*值*是一种办法,但 C 中传参的拷贝语义,有时为了避免拷贝比较大的结构,也可以让调用者传指针进来,这样可以避免拷贝。还有一种方法,在被调函数中使用 malloc 分配内存。这三种方法孰优孰劣要看具体的情况。我只用过 C 写玩具,也就没法给你建议了。

第二种方法大概是这样的
``` c
typedef struct
{
int[500] a
} very_big_structure;
int main()
{
very_big_structure t;
callee(&t);
}
void callee(very_big_structure* ptr)
{
//使用 ptr
ptr->a[0]=4;
}

```
2018-05-27 12:59:37 +08:00
回复了 SergeGao 创建的主题 问与答 目前有可以手机外接键鼠+显示器的解决方案吗?
额,没看到只能用 OTG。楼主忽略我吧
2018-05-27 12:58:34 +08:00
回复了 SergeGao 创建的主题 问与答 目前有可以手机外接键鼠+显示器的解决方案吗?
continuum 了解一下。然而 Windows Mobile 10 已经死了
2018-05-27 12:55:02 +08:00
回复了 whoami9894 创建的主题 C 请教一个 C 语言内存分配的问题
malloc 分配的内存是在堆上的(进程地址空间的 data 区),需要显示 free

> 但我在 void 函数中初始化一块内存,函数调用结束后这个指针也变成未定义了

没理解你的意思,如果是这样
``` c
int* ub()
{
int i;
return &i
}
```
的话,i 实际是分配在栈上的局部变量,函数返回后栈帧弹出,试图访问&i 的已经是未定义行为(ub)了。

总结来说,搞明白地址在栈上还是堆上就可以判断栈帧回弹之后使用指针是不是 ub 了
2018-05-24 07:12:19 +08:00
回复了 snsd 创建的主题 问与答 除了开飞机,国内现在使用 onedrive 的方法还有吗?
移动内网,无任何设置上下行都能跑满 50Mbps
跑个题,[]arr 在 golang 里叫切片(slice),数组是[int]arr 这样的。var arr = [] int{2,3,3}等价于 var p=[3]{2,3,3} var arr = make(p,3)。
slice 作为数组的 wrapper,提供了一种统一的数组访问形式。具体细节请参阅官方文档
2018-05-23 17:36:27 +08:00
回复了 q8164305 创建的主题 问与答 为什么说异步 io 快
2l 说到点上了。
这是我以前学习异步时候看过的一片博客,虽然是讲 C#的,但是基本原理是相通的
https://blog.stephencleary.com/2013/11/there-is-no-thread.html
2018-05-18 07:29:11 +08:00
回复了 q9REUgpVVCU77pWj 创建的主题 程序员 XLServicePlatform 到底需不需算不算流氓?
所以我把所有需要 uac 权限的应用都丢到沙箱里了,你应用程序爱怎么折腾怎么折腾,反正我用完了你就得不留痕迹的死。
沙箱外只用 uwp 和开源软件。
2018-05-05 11:23:02 +08:00
回复了 wjm2038 创建的主题 分享发现 Windows 10 最新内测版把看样子是要强行推 Edge 啊
其实,新的 tab 可以打开打开其他 UWP 的。
Ms 做这个功能的本意应该是 把完成同一件事情打开的一系列 app 聚合在一起,我觉得叫 Set 很能表现意图了。
@kamen 亲测 B 站国际版是有免流入口的,鬼畜区看不了倒是事实
2018-04-27 23:27:18 +08:00
回复了 xiaoyu9527 创建的主题 全球工单系统 百度的 putty 会自动安装爱奇艺和毒霸
你需要包管理。无脑安利 chocolatey.org
2018-04-23 17:42:05 +08:00
回复了 v2byy 创建的主题 游戏 使用手柄玩 FPS 游戏体验好多了
感觉手柄比较适合非硬核的设计类游戏。无主之地 2,无主之地前传是我玩过的手感一流的了。硬核向的要看厂商调教,安利一波光环 5
2018-04-21 23:38:44 +08:00
回复了 SlipStupig 创建的主题 程序员 如何实现一个分布式排序
归并排序?
wpf+1,不过我是 uwp 找不到工作转过来的。上班摸鱼写了一些.net core 感觉不错,.net standard + .net core 随便跨平台,比较爽。如果还想搞客户端开发的话可以关注下 xaml standard。
我打算往服务器端发展。对 golang 比较感兴趣。楼主如果喜欢 async / await 的话可以考虑往高并发方向发展
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2484 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 58ms · UTC 15:07 · PVG 23:07 · LAX 08:07 · JFK 11:07
Developed with CodeLauncher
♥ Do have faith in what you're doing.