2018年12月12日星期三

2018年11月27日星期二

C++ Builder 2009 Types 命名空间类型

C++ Builder 2009 Types 命名空间类型
是其所有 VCL 类中方法的参数类型:
Name 
Description 
DWORD is equivalent to LongWord. 
PByte is a pointer to a Byte variable. 
PDouble is a pointer to a Double variable. 
PInteger is a pointer to a Integer variable. 
This is type Types.PLongint. 
PPoint is a pointer to a TPoint variable. 
PRect is a pointer to a TRect variable. 
PSize is a pointer to a TSize variable. 
This is type Types.PSmallInt. 
This is type Types.PSmallPoint. 
SIZE 
This is type Types.SIZE. 
This is type Types.tagPOINT. 
TBooleanDynArray defines an array of Boolean elements. 
This is type Types.TByteDynArray. 
TCardinalDynArray defines an array of Cardinal elements. 
TDoubleDynArray defines an array of Double elements. 
TInt64DynArray defines an array of Int64 elements. 
This is type Types.TIntegerDynArray. 
TLongWordDynArray defines an array of LongWord elements. 
TShortIntDynArray defines an array of ShortInt elements. 
TSingleDynArray defines an array of Single elements. 
TSize represents a width and height. 
TSmallIntDynArray defines an array of SmallInt elements. 
TStringDynArray defines an array of String elements. 
TValueRelationship defines value comparison possibilities. 
TWideStringDynArray defines an array of WideString elements. 
TWordDynArray defines an array of Word elements.


TStringList

2018年11月15日星期四

nf_conntrack: table full, dropping packet

https://testerhome.com/topics/7509

# 在64位下,当CONNTRACK_MAX为 1048576,HASHSIZE 为 262144 时,最多占350多MB
# 对现在的机器来说毫无压力

推荐bucket至少 262144,max至少 1048576,不够再继续加

net.netfilter.nf_conntrack_tcp_timeout_established  # 默认 432000 秒(5天)
# 理论上不用这么长,不小于 net.ipv4.tcp_keepalive_time 就行了

# net.netfilter.nf_conntrack_buckets 不能直接改(报错)
# 需要修改模块的设置:
echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
# 如果不是root:
echo 262144 | sudo tee /sys/module/nf_conntrack/parameters/hashsize

# 再查看,bucket已经变成设置的大小
sudo sysctl net.netfilter.nf_conntrack_buckets

# max设为桶的4倍
sudo sysctl -w net.netfilter.nf_conntrack_max=1048576
suod sysctl -w net.nf_conntrack_max=1048576
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=15

sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=300

2018年3月8日星期四

php socket 相关问题

php 打开 socket 有几种方法
1、fsockopen,然后用 fwrite 和 fread 读写数据,这种方式的问题是不支持 socket 等待,不能获取全部数据。
2、socket 扩展,这种需要设置 socket 选项才能更好的使用。
3、推荐使用 stream_socket_client, stream_socket_sendto, stream_socket_recvfrom 等,并设置阻塞模式,stream_set_blocking。如果还得不到数据说明数据包格式不正确。

2018年3月3日星期六

DHT 协议的几种方法和社交的模拟

find_node - 找朋友,朋友介绍朋友。。。
ping - 经常联系
get_peer - 谁那有我需要的信息吗
announce_peer - 我这有了会告诉你

2018年1月29日星期一

socket/tcp/udp 的问题

1、同一个 socket 可以同时发送和接收数据吗?
在TCP/IP协议栈里发送和接收是不同的Buffer,Socket是全双工的,可以同时进行发送和接收。

2、同一个socket 接收可以并行吗?
http://bbs.csdn.net/topics/390997945

C# 在减少编程人员支出中的作用和要读的书

1、C# 使用 winform 方式写 windows 程序 | C# Windows 程序设计
2、C# 可以写 Web 程序 asp.net,跑在 nginx 上
3、C# 可以写 shell 扩展
4、C# 可以写 COM
5、C# 可以写 windows 服务
6、C# 可以写 iOS 和 安卓
7、C# 可以模拟 JSP

在编程人员上,就不需要那么多人了。

windows 64位程序调用32位 DLL

https://www.cnblogs.com/mazhenyu/archive/2007/06/28/798710.html
https://stackoverflow.com/questions/30648528/wrapping-a-32-bit-com-shell-extension-within-a-thin-64-bit-dll-wrapper
https://www.codeproject.com/Tips/267554/Using-bit-COM-Object-from-bit-Application
https://msdn.microsoft.com/en-us/library/windows/desktop/ms695225(v=vs.85).aspx

2018年1月28日星期日

C++ Builder 的版本选择

1、支持 UNICODE 版本,始于 CB2009
2、支持 64 位的版本,始于 XE3 UPDATE2

但是,XE3 已经不用了,没必要开发 64 位,64 位 Shell 扩展,可以采用 64 位调用 32 位的方式

2018年1月27日星期六

C++ Builder 实现 shell 扩展

步骤:
1、新建 ActiveX Library
2、新建 COM Object 在这个时候,找不到要实现的系统shell接口,比如 ICopyHook,IContextMenu 等,先不用管,先实现默认接口
3、在实现代码的头文件中加入这些要实现的 shell 接口所在的头文件包含,比如 shlobj.h
4、在类继承中加入集成,比如 icopyhook
5、在类实现中实现shell接口的方法,比如icopyhook的callback方法

参考:
http://www.andreanolanusse.com/en/shell-extension-for-windows-32-bit-and-64-bit-with-delphi-xe2/
https://community.embarcadero.com/article/technical-articles/149-tools/8761-writing-an-infotip-shell-extension-in-delphi

既然这么麻烦,还这么难写,就直接用纯 C 写得了,COM 也就是个两侧的 C 指针的普通 DLL,C 写 wrapper,调用 VCLFORM

2018年1月26日星期五

COM SERVER 用 C++ 的两种调用方法

1、queryinterface
2、如果 COM SERVER 实现了 IDispatch 接口,那就靠 OLE 去封装 wrapper 去调用

COM 组件的线程模型

实例化:
Internal  不允许外部创建实例
Single 一个 EXE 只能创建一个实例,单例模式
Multiple 一个 EXE 能创建多个实例,每个实例自己的进程空间

线程模型
Single Apartment 一次只能服务一个客户端线程。COM序列化所有传入的调用来执行此操作。您的代码不需要线程支持。
Free 每个对象实例可以同时被多个线程调用。您必须保护实例数据和全局内存。
Both 这与自由线程模型相同,但客户机提供的所有回调都保证在相同的线程中执行。这意味着您不需要保护作为参数提供给回调函数的值。
Neutral 多个客户端可以同时调用不同线程上的对象,但是COM确保没有两个调用冲突。您必须防止涉及全局数据的线程冲突和由多个方法访问的任何实例数据。该模型不应该与具有用户界面的对象一起使用。此模型仅在COM+下可用。在COM之下,它被映射到公寓模型。

COM 自动化 Automation

自动化(以前称为OLE自动化)是一种技术,它允许软件包向脚本工具和其他应用程序公开其独特的特性。

自动化概述 Overview of Automation
为什么要自动化,queryinterface 不行吗?
是的,比如脚本和 vb 并不支持指针类型,
不能像 C 语言那样调用函数指针。
所以,一个 COM 库实现 IDispatch 接口,
为了这些语言可以像调用类方法一样调用 COM 库函数


还有自定义的接口,不是 OLE 自动化的一部分,非指针语言需要通过 IDispatch 访问


https://msdn.microsoft.com/en-us/library/windows/desktop/ms221251(v=vs.85).aspx

Windows 编程必读的书

1、C 程序设计,这是基础,C++ 要熟悉语法,尤其是继承、多态、虚函数、纯虚函数
2、Windows 程序设计第五版,charles petzold | 没有精读
3、Windows SDK 文档对于 Windows 各个组件编程的介绍
4、Windows 核心编程,jeffrey richter | 只读了几部分
5、MFC、ATL、WTL 都不学了
6、Windows SDK 关于 COM 的章节 | 只读了普通 COM 和 COM 自动化原理
    COM 和 Windows Shell 读几本书,了解 COM 结构。
    COM 服务器是一个库,库中有很多类,这些类实现了很多接口。
    COM 客户端先初始化一个 COM 服务器,然后查询接口,调用接口的方法(函数)等
    COM 自动化就是你中有我,我中有你
    http://blog.csdn.net/chenyujing1234/article/details/7753863
    http://blog.csdn.net/CNHK1225/article/details/50555647

    Visual C++ Windows Shell 编程 Dino Esposito
    Windows Shell 编程指南与实例 萧秋水

    COM 外皮还是用纯 C 写,逻辑部分用 C++ Builder 写

2018年1月22日星期一

Windows C++ BUILDER 快速开发的选型

1、命令行应用程序和DLL,C++ Builder 2009 win32 with system library,不要 VCL,很小
2、窗口应用程序,C++ Builder 2009 win32 with VCL,很小
3、SHELL 扩展,C++ Builder 2009 C 外皮 + VCL FORM。
      64 位系统,使用 64 位调用 32位的方式

纯 C/C++ 如何实现 COM DLL

用VC SDK实现的ICopyHook和IShellExecuteHook接口
https://bbs.pediy.com/thread-161282.htm

1、不要 VCL,实现四个 COM 函数
2、实现  IClassFactory 接口
3、参考例子 CtxMenu
http://blog.csdn.net/kaizi318/article/details/8129455
http://blog.csdn.net/woshinia/article/details/22300089
http://www.codeproject.com/Articles/13601/COM-in-plain-C
https://www.codeguru.com/cpp/com-tech/shell/article.php/c1333/Shell-Extension-Context-Menu-Sample.htm

2018年1月6日星期六

性生活后如何缓解腰酸腿痛

性生活后腰酸腿痛的根本原因是肌肉中肌酸难以排除。
通过在性生活后补充加糖牛奶,能快速缓解症状。


延迟性肌肉酸痛的康复方案及营养措施
2017-09-04 07:28:24 体育时空·上半月2017年8期
丁涛+康举
摘 要 延迟性肌肉酸痛(delayed-onset muscle soreness,DOMS)是指人们在进行不习惯运动或强度突然增加后所出现的肌肉疼痛或不舒适的感觉。它最大的特征即为延迟性。减轻DOMS的症状的方式不仅要依靠物理治疗的手段,而且可以通过补充营养的方式来快速减轻症状。
关键词 DOMS 康复方案 营养
中图分类号:G804 文献标识:A 文章编号:1009-9328(2017)08-000-01
普遍认为DOMS发生在一个人反复进行高强度离心肌肉收缩或不习惯的运动,并在运动后24和48小时之间达到峰值。DOMS确切的原因尚不清楚,有几项研究提出DOMS是由一系列生化變化引发的肌肉损伤,而不是单一的损伤事件。临床多采用西药、运动、物理、热敷及点刺激等疗法,缓解DOMS的症状,但是,目前临床尚缺乏一种简单有效的防治方法。许多研究报告了营养干预措施减少DOMS。常见的营养干预措施包括咖啡因,ω-3脂肪酸,牛磺酸和多酚。这篇综述的目的是提供大家更好地了解DOMS的缓解方式。
一、延迟性肌肉酸痛的康复方案
(一)理疗对DOMS的影响
对于DOMS的治疗,临床上常用的手段包括物理因子疗法及运动疗法。有研究者发现,热水浸泡能减轻DOMS症状。目前,普遍认为冰水疗法在肌肉损伤治疗中的作用为限制炎症的应答,对于运动损伤的应用也很普遍。瞿超艺等人的结果显示对于DOMS,超低温冷疗(WBC)是一种有效的恢复手段;WBC对与DOMS相关的部分生理生化指标和部分体能指标具有一定的积极影响。
(二)PNF牵伸法对于延迟性肌肉酸痛的影响
王小迪等人指出在运动后通过PNF 牵伸法可以显著降低由一次大强度的离心运动后的肌酸激酶水平,并能显著减轻运动员的主观疼痛感,使运动员尽快地投入到高强度的训练之中。运动之前进行PNF牵伸,可使肌肉充分放松,肌纤维及周围结缔组织的弹性增强,减缓了运动对肌肉的微细损伤;运动后进行PNF牵伸,可使痉挛的肌纤维变得放松,排列变得整齐,另外腱索的兴奋会将冲动传导至脊髓,使脊髓发出神经冲动抑制游离神经末梢受到的各种刺激,使运动员的主观酸痛感觉降低。另有报道PNF训练可引起肌肉超微结构的改变,也是PNF牵伸法对DOMS进行治疗的可能机制之一。
(三)深部肌肉刺激疗法对延迟性肌肉酸痛的影响
韩秀兰等人的研究中,经过DMS治疗,研究对象的主观体力恢复较快达到正常水平,而VAS评分也能够比较快下降,在治疗后的第3天,疼痛感觉明显改善,第5天达到无痛感觉。但是对照组在力竭性运动后,VAS评分一直比较高,在运动后第4天,VAS仍然在7.30±0.94的高分值。说明DMS治疗能够明显缓解运动后出现的体感疲劳和疼痛感,并且能缩短疼痛持续时间,加快患者体力恢复。
(四)中医手段对延迟性肌肉酸痛的影响
针灸是中医治疗DOMS的主要手段之一,在放松肌肉和镇痛方面的效果较明显。针刺的作用体现在抗自由基,防止脂质过氧化以及运动性下丘脑-垂体-性腺功能紊乱,增强机体抗疲劳能力。推拿也是中医治疗DOMS的主要手段之一,胡精超等研究表明,推拿能一定程度防治DOMS。中药对于DOMS也起到一定的作用,中草药不仅可以促进肌肉血液循环,改善微循环功能,加速炎性产物和渗出物的吸收,而且中药复方的使用对提高肌肉功能及运动能力具有显著的效果。
二、延迟性肌肉酸痛的营养手段
(一)蛋白质的补充对于延迟性肌肉酸痛的影响
大强度运动中,肌肉持续收缩将导致肌肉可逆性损伤,运动后及时修复肌肉损伤有助于缓解运动性疲劳。蛋白质是肌肉的主要组成成分,蛋白质及必需氨基酸的供给与肌肉恢复具有重要关系。乳清蛋白所含必需氨基酸种类齐全,并含有丰富的支链氨基酸,BuckleyJD等给28位受试者运动后补充250 ml调味水(N=14)或加入25g乳清蛋白水解物的调味水(N=14),结果显示乳清蛋白水解物能增强肌肉收缩运动后肌力恢复(P=0.006)。
(二)糖的补充对于延迟性肌肉酸痛的影响
在运动过程中,最主要的供能系统便是糖的代谢,首先是在供养充足的情况下通过糖的有氧氧化,提供能量保持人体的运动系统正常运行,其次是供氧不足时的糖的无氧酵解供能。当长时间大强度