显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

进击の架构师

 
 
 
 
 
 

北京市 海淀区 天蝎座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

我的开源项目

 
 
模块内容加载中...
 
 
 
 
 

可爱的小鼠

 
 
模块内容加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 

摄影组图

 
 
数据加载中...
 
 
 
 
 
 

小铺子

 
 
模块内容加载中...
 
 
 
 
 
 
 

[置顶] [C/C++]C++管道数据流(Stream)的实现

2017-2-5 9:49:46 阅读70 评论0 52017/02 Feb5

仿照 Java8 Stream 实现的C++版本,使用时只需要包含一个头文件。

#include "stream.h" using namespace cpp::stream;

同时提供了 -> 和 >> 两种类型的操作符调用:

ST3 arr[20] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }; int count1 = make_stream(arr, __crt_countof(arr)) ->map([](const ST3& st)->ST2 { return st.st2; })->map([](const ST2& st)->ST1 { return st.st1; })->map([](const ST1& st)->ST0 { return st.st0; })->map([](const ST0& st)->int { return st.i; })->filter([](const int& i)->bool { return i > 6; })->filter([](const int& i)->bool { return

作者  | 2017-2-5 9:49:46 | 阅读(70) |评论(0) | 阅读全文>>

[置顶] [SQL优化] MySQL优化一则

2016-9-18 11:14:04 阅读19 评论0 182016/09 Sept18

考虑如下SQL语句的执行过程:

EXPLAIN SELECT

*

FROM

testb b,

testa a

WHERE

a.id = b.aid;

当表A有5条数据,表B有1条数据的时候:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE b ALL 1

1 SIMPLE a ALL 5 Using where; Using join buffer (Block Nested Loop)

而表A有5条数据,表B有10条数据的时候:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE a ALL 5

1 SIMPLE b ALL 10 Using where; Using join buffer (Block Nested Loop)

而表A有15条数据,表B有10条数据的时候:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE b ALL 10

作者  | 2016-9-18 11:14:04 | 阅读(19) |评论(0) | 阅读全文>>

[置顶] [C/C++]如何高效的阅读C++标准库源码?

2016-7-27 10:23:48 阅读134 评论0 272016/07 July27

阅读C++标准库的源码是一件非常痛苦的事情,因为里面有大量的宏,为函数的追踪带来了极大的不便!幸好,这个世界上有Visual Studio!通过使用VS的预处理功能我们可以很方便的将标准库中的宏全部展开,然后阅读干干净净的源码。

VS的配置如下:打开项目属性,依次展开“配置属性”-“C/C++”-“预处理器”,将“预处理到文件”更改为“是”,也可以选择是否“保留注释”。然后重新生成项目,这时候会报错,程序不能正常链接,没有关系。

经过上面的配置之后,每一个C++源文件都会生成一个.i文件,可以在输出目录中找到。还等什么,赶紧去试一下吧!

附:C++11标准库文件列表

https://msdn.microsoft.com/zh-cn/library/a7tkse1h.aspx

附:命令行编译VS2015的C++标准头文件的bat脚本,记得用VS2015的开发人员命令提示执行该脚本。

@echo off

rem 启用延迟变量扩展

Setlocal ENABLEDELAYEDEXPANSION

rem 删除原来的文件

del /f /s /q %~dp0.\res\*

del /f /s /q %~dp0.\src\*

rem 创建文件夹

作者  | 2016-7-27 10:23:48 | 阅读(134) |评论(0) | 阅读全文>>

[Java/Web]编译期调试Processor

2017-1-17 15:59:01 阅读15 评论0 172017/01 Jan17

0.在gradle.properties文件中添加如下设置,使项目的编译使用daemon线程:

org.gradle.daemon=true

org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

1.在IDEA中建立并执行Remote类型的调试任务,使用默认参数(如上);

2.在命令行中以daemon线程编译项目:

gradle --daemon clean assemble

这时候如果在项目中的Processor打了断点,应该能顺利的进入调试状态了。

作者  | 2017-1-17 15:59:01 | 阅读(15) |评论(0) | 阅读全文>>

使用 Simple MAPI 发送邮件是一件非常简单的事情,但是实际上它很早就被放弃了,见MSDN说明,如下:

Simple MAPI is no longer supported as of Microsoft Outlook 2007.   链接

The Simple MAPI function MAPISendMail is supported by Microsoft Outlook 2013 and Microsoft Outlook 2010. Other Simple MAPI functions have been deprecated in Windows. 链接

命令行发送Outlook邮件的方法(这种方法需要先从注册表中获取Outlook的地址):

"C:\Program Files (x86)\Microsoft Office\Root\Office16\OUTLOOK.EXE" -c IPM.Note /mailto "lvan100@yeah.net"

HKEY_LOCAL_MACHINE\

作者  | 2016-12-12 14:30:46 | 阅读(442) |评论(0) | 阅读全文>>

[MFC编程]CScrollView::OnVScroll滚动范围溢出问题

2016-12-10 17:56:31 阅读46 评论0 102016/12 Dec10

当使用鼠标拖拽竖向滚动条时,如果滚动范围过大,具体为超过32768,将会出现溢出。这个问题在MSDN中也有简述。如下:

The SB_THUMBTRACK request code is typically used by applications that provide feedback as the user drags the scroll box.

If an application scrolls the content of the window, it must also reset the position of the scroll box by using the SetScrollPos function.

Note that the WM_VSCROLL message carries only 16 bits of scroll box position data. Thus, applications that rely solely (完全依赖) on WM_VSCROLL (and 

作者  | 2016-12-10 17:56:31 | 阅读(46) |评论(0) | 阅读全文>>

[界面设计]微信UI测试报告

2016-12-10 10:48:02 阅读71 评论0 102016/12 Dec10

1. QQ消息会根据窗口大小的变化重新计算消息的显示位置,同时限制了聊天对话框中消息的数量;而微信消息则对显示位置规定了最大宽度,并且没有限制聊天对话框中消息的数量。

2. 从技术实现上来讲,如果对文字显示范围规定了最大宽度,那么在字体不发生变化的情况下,从消息加载到内存到从内存中释放,理论上任何消息只需要计算一次显示高度;当需要再次显示该消息时,直接使用计算好的高度即可。

3. 展示一组数据,好让我们来看一下重新计算消息的显示位置究竟有多么耗时间。

我在内存中创建了1万条消息,其中5000条文字消息,5000条图片消息。图片消息的高度计算很简单,直接返回其图像高度;文字消息的高度计算需要借助HDC实现,比较复杂。测试三次。

strCount:4965 imgCount:5035

(1) calcSizeTime:9015ms

(2) calcSizeTime:32ms

strCount:4952 imgCount:5048

(1) calcSizeTime:8859ms

(2) calcSizeTime:16ms

strCount:4954 imgCount:5046

(1) calcSizeTime:9000ms

(2) calcSizeTime:15ms

可以看到,重新计算一次所有消息的显示位置竟然需要9秒钟。另外,可以看到上面多了一组数据,那是在已经计算好(并记录了)消息显示位置后,再次对所有消息计算高度所耗的时间,几乎可以忽略不计。

作者  | 2016-12-10 10:48:02 | 阅读(71) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017

注册 登录  
 加关注