Temporary Record
临时记录,后续完善,以免忘记。
值得学习或巩固的知识点
关于 C++11 新特性
defaulted 和 deleted 修饰函数
Deleted functions in C++11
对象移动
右值引用与转移语义
Range-based for 循环
Windows
Windows Path
- Windows 调试器
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe
Windows Command
- 永久设置环境变量 setx
- 查看系统版本
winver
systeminfo
wmic(已弃用)
或者HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- wmic diskdrive list brief 列举磁盘驱动器:
\\.\PHYSICALDRIVE0
、\\.\PHYSICALLDRIVE1
。
Windows API
错误码处理
GetLastError、FormatMessage
https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms680582(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/ms679351(v=VS.85).aspx
HRESULT 与 Windows Error Codes
C++异常继承关系文件版本信息
GetFileVersionInfoSizeEx、GetFileVersionInfoEx、VerQueryValue获取 Windows 特殊目录
SHGetFolderLocation
SHGetFolderPath
SHGetSpecialFolderLocation
SHGetSpecialFolderPath提高计时精度
NtSetTimerResolution
andNtQueryTimerResolution
. All times are specifified in hundreds of nanoseconds.Timer 定时器
SetTimer
利用 Windows 窗口消息 WM_TIMER 实现。要用KillTimer
销毁定时器。注:工作线程(非UI)无法使用。
WaitableTimer
可以跨线程、进程使用。CreateWaitableTimer
创建定时器对象,SetWaitableTime
设置回调,CloseHandle
销毁定时器。
TimerQueueTimer
相当强大,多种工作模式,精度高。键盘按键检测
GetAsyncKeyState _kbhitMicrosoft Try-except Statement
try-except
https://msdn.microsoft.com/en-us/library/s58ftw19(v=vs.140).aspx
try-final
https://msdn.microsoft.com/en-us/library/9xtt5hxz.aspx剪切板相关操作
GetClipboardData
OpenClipboard
GlobalLock
GlobalUnlock
系统信息
sysinfoapi.h
进程操作(权限问题)
OpenProcessToken
LookupPrivilegeValue
AdjustTokenPrivileges
网络操作
InternetAttemptConnect
InternetCheckConnection
InternetQueryOption
InternetGetConnectedState
WinINet Functions
IP Helper Functions
UDP 也可用 connect 操作,好处多多:绑定 IP,无需频繁建立与断开连接,拒绝第三方数据报干扰。DIA
Debug Interface Access SDK
,访问存储在PDB(Program Database)文件中信息的库。
VisualStudio 安装目录下有库及示例:D:\Program Files (x86)\Microsoft Visual Studio 14.0\DIA SDK 。
官方参考PDH
Performance Data Helper
微软性能数据助手,如同性能监视器记录数据。
PDH header
browsing-performance-counters关于进程退出检测
std::atexit
注册进程退出时调用的函数(可注册多个函数,后注册者先调用。)Session 远程桌面相关
WTSQuerySessionInformationA function文件操作
SetFileAttributes
CopyFile
CopyFileEx
MoveFileEx
打印机操作
【Print Spooler API Functions】
【Print Document Package API】
【Print Dialog Box】
【Print Ticket API】跟踪日志
TraceLog.exe
TracePdb.exe
TraceView.exe
Using TraceViewETW (Event Trace for Windows)
MSDN: EventRegister 内含示例
MSDN: EventWrite
Windows Service
- Related API:
OpenSCManager
、CreateService
、OpenService
、ControlService
、DeleteService
、RegisterServiceCtrlHandler
、SetServiceStatus
、StartServiceCtrlDispatcher
- Complete Service Sample
COM 编程
Component Object Model
https://www.microsoft.com/com/default.mspx
Microsoft RPC
基于 命名管道 和 tcp/ip
Thread Pooling
- Thread Pools
- Process and Thread Functions
QueueUserWorkItem
Synchronization Functions
- Synchroization Function
InterlockedIncrement
InterlockedIncrement64
Unhandled Exception
- SetUnhandledExceptionFilter : Enables an application to supersede(紧接着…) the top-level exception handler of each thread of a process.
- _set_invalid_parameter_handler : Sets a function to be called when the CRT detects an invalid argument.
- _set_purecall_handler : Sets the handler for a pure virtual function call.
RtlCaptureContext
MIDI MCI
- MIDI Functions
- MIDI Reference
- Musical Instrument Digital Interface (MIDI)
- MCI Functions
- MCI Reference
- MCI
Linux
函数妙用
- echo ANSI 控制码 常用 ANSI 控制码表
- man -f 显示指定内容的所有 section
命令行
.
是bash
内部指令:在当前shell
中执行指定的shell
脚本。source
在当前shell
环境下读取并执行指定脚本中的命令。- getopt 命令
:: 表示该选项可有有 0 个或 1 个参数,短型时,选项与参数之间不能有空格,长型时,选项与参数之间需用等号连接。
调试技巧
gdb
使用手册。gdb
生成调试信息参数:-g
。gdb > target remote IP:PORT
进行远程调试。add-symbol-file FILENAME ADDR
加载符号文件(本地文件),ADDR 为代码段地址,根据进程物理地址和符号文件代码段偏移地址计算而来。strip
从带调试信息的可执行文件中删除调试信息,移出符号记录。objcopy --only-keep-debug
从带调试信息的可执行文件中玻璃符号信息到独立的调试文件。add-symbol-file TestDemo.dbg
将objcopy
导出的符号文件加载到调试器。handle
调试器对信号的处理,如:收到SIGUSR2
不中断程序,handle SIGUSR2 nostop
,其他:stop
、print
、pass
、ignore
。info handle/signal
查看调试器对信号的处理情况。show debug-file-directory
查看调试器加载调试信息的路径。- 从四个问题透析Linux下C++编译&链接
需要总结内容
C#
- C# WinForm 应用退出
C# WinForm程序退出的方法
C# — WinForm 退出方法总结
C# Enum,Int,String的互相转换 枚举转换 - C# dllimport 类型转换
C#调用dll时的类型转换总结
C#调用VC的DLL的接口函数参数类型转换一览表 - C# Windows 服务
穿透Session 0 隔离(一)
穿透Session 0 隔离(二)
C/C++
- Google开源项目风格
- 初始化列表
- STL 元素要求
- CComPtr 用法OB总结
- static 用法总结
static关键字详解
static作用 - const 查看是否已完善
- 类型转换:
static_cast
dynamic_cast
const_cast
reinterpret_cast
参考 - extern 用法总结
多个源文件共用一个全局变量
extern关键字详解
全局变量的声明和定义 - inline 用法
- explicit 用法
- #pragma pack([show]|[push|pop][, identifier], n)
- 仿函数 【C++ STL】深入解析神秘的 — 仿函数
- std::transform(retValue.begin(), retValue.end(), retValue.begin(), toupper);
- 类成员函数指针
- 重点 std::packaged_task std::future std::chrono
- WinUI : SkinUI DirectUI DuiEngine(“svn checkout http://duiengine.googlecode.com/svn/trunk/ duiengine-read-only”)
- C++11 异步编程
深入浅出std::async
用C++11的std::async代替线程的创建
协程概念 - 并发编程
自旋锁:自旋锁(spin lock)与互斥量的区别, 【原创+整理】线程同步之详解自旋锁, C++11实现自旋锁 - 并行计算库
TBB
和PPL
- 字符串 Hash 函数
BKDRHash
APHash
DJBHash
JSHash
RSHash
SDBMHash
PJWHash
ELFHash
- window 内存泄漏检测:
VLD
、_CrtDumpMemoryLeaks
、_CrtMemCheckpoint
、_CrtMemDifference
。 - 变量存储期:自动、静态、线程、分配。
- 仿 QFile QFileInfo 封装文件操作
Java
- 高性存储
高性能队列——Disruptor
并发框架Disruptor译文 - 文本格式化
FOP xml、xslt、xpath、xsl-fo,文档格式化
FreeMarker 模板引擎 - GC 算法相关
GC的三大基础算法 - SLF4j
基于外观模式的日志框架,不提供具体日志功能,可与多种日志类库兼容。Log4j + slf4j-log4j12
、Logback
、java.util.Logging
、slf4j-simple
等 - Spring Boot 相关
Spring Boot 中文索引
纯洁的微笑-Spring Boot 系列完整 - JVM内存结构、Java内存模型、Java对象模型区别。
Python
- 经典示例
CPython解释器支持的线程和进程 - CSDN 视频链接 微信公众号: GitHubDaily
从游戏开始的“0基础Python学习之路”
Python分布式爬虫+数据分析实战
2020最新热点反爬虫机制与绕过实战
Python程序化自动下单交易
Python自动化办公
Python量化分析预测股灾拐点
Python数据分析财务造假因子
数据分析师必备的软硬技能
提升Python数据处理速度四种方式
从数据专员到行业“叫兽”,必备经历
Python机器学习与推荐系统应用
用40行Python代码实现抖音AI换脸
用2个小时写一个CSDN
0基础快速上手推荐系统
实战:CSDN站内搜索技术关键词
程序员简历剖析课:如何打造高质量的简历内容?
大型互联网公司面试复盘
XML
- XML 解释器
DOM
SAX
Xerces
Castor
解析xml文件的几种方法和原理
- 几个 PDF 软件库:
xpdf
,poppler
,mupdf
。 - PDF 阅读器开发参考
- MuPDF 参考 xiangxw/mupdf-qt
VisualStudio
- VC 编译器参数设置
显示类内存布局 - dllimport、dllexport
VS下 dllimport与dllexport作用与区别
BAT 批处理
- 系统应用:
shutdown
、sc
、reg
。
Docker
常用工具
- CURL POST 传参
curl -d @- http://hostname:port
Linux: ctrl + D 一次不行就两次,前后输入 ENTER 试试。
Windows: ctrl + Z 一次不行就两次,前后输入 ENTER 试试。
命令行中输入EOF,即文本结束符 - 调试信息查看器
Debug View - 进程监视器
Process Explorer
Process Monitor - GPU 性能问题排查
GPUView log.cmd错误:此时不应有 4000
缺环境变量TRACE_LOGGING_MEMORY
扫描 systeminfo 查看内存时,遇到中文。
(设置环境变量或者 set 临时变量)
Vtune
Nvidia NightSight - Alternative Data Stream(备用数据流)
dir /r file/directory 查看文件是否有备用数据流
streams64.exe -d file 删除指定文件的备用数据流
PowerShell : Get-Content -Path filename -Stream streamname 可获取备用数据流的内容
算法
局部敏感哈希
- 字符串变形,可见范围,自定义基长度,同
Base64
(Base85
git 源码 base85.h base85.c)
网络协议
Tools
- Windows CMD:
ping
、netstat
、arp
、tracert
、route
、nbtstat
、telnet
。
FTP
ICMP
PXE
- PXE 网络装机环境搭建:
DHCP
,TFTP
,HTTP
。
性能分析
- VTune
Intel VTune Get Started - 值得参考的内容内容
动态追踪技术漫谈
内核探测工具 Systemtap 简介
Ubuntu官网 wiki-Systemtap
在 Ubuntu12.04 上安装 Systemtap
Linux 下的一个全新的性能测量和调试诊断工具 Systemtap
Java 火焰图
白话火焰图
Go 代码调优利器-火焰图
开源项目之调试 Python 应用生成性能 CPU 火焰图
使用火焰图做性能分析
如何读懂火焰图
linux 下用火焰图进行性能分析
Windows Performance Toolkit Technical Reference
性能优化
- 高并发编程系列:4大JVM性能分析工具详解,及内存泄漏分析方案
- 阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略
- 阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结
- 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则
- 常用的后端性能优化六种方式:缓存化+服务化+异步化等
- 阿里P8架构师谈:架构设计之数据库垂直、水平拆分六大原则
- 阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
运维监控
Prometheus
特性说明
存储有限,将数据保存在本地,只监控近期数据变化,不适合大量数据存储。远程存储:OpenTSDB
、M3db
。
数据并非 100% 可靠
无权限管理系统,需额外上层管理系统配合支持。推荐 GrafanaPushGateway
避免收集数据本身的job
和instance
被覆盖:prometheus 配置文件中添加honor_labels: true
。1
2
3
4# 未覆盖示例:
some_metric{instance="some_instance",job="some_job"}
# 被覆盖示例:
some_metric{exported_instance="some_instance",exported_job="some_job",instance="localhost:9091",job="PushGateway"}防止 pushgateway 重启或宕机时丢失数据:
-persistence.file
、-persistence.file
其他