git 基本操作记录
2017-12-9 C++
1. 创建空版本库方便上传已有版本库代码
git init --bare
2.项目代码加入git版本控制
git init //初始化git版本库
git add . //把当前项目文件夹内的文件加入版本控制
git commit -m "备注" //提交所有代码到版本库
3. 提交代码到远程版本库
git remote add usb h:\gitres\xxx //usb 远程版本库标识 h:\gitres\xxx 远程版本库位置
git push usb master //提交代码到远程版本库
4. 下载合并远程版本库变动到本体
git fetch usb :tmp //先下载远程版本库到tmp分支
git diff tmp //刚获取的远程版本库跟本地文件的差异
git merge tmp //合并远程版本库代码到本地
5. 新建分支切换
git checkout -b newbranch
6. 放弃当前修改
git checkout . //放弃所有的修改
git checkout -- file //放弃文件file的改动
标签: git
ado open 连接数据库卡住
2017-12-3 C++
情景:
程序采用ado访问access数据库
现象:
公司编译生成的程序在公司的电脑上运行没问题,但是到了客户的电脑上运行就卡住!
解决办法:
通过打印调试信息,发现程序是卡在数据库open的时候,就不往下走了!
对比了下ado版本,发现客户电脑上的ado版本比公司编译环境的低!
替换掉客户端电脑上的msado.dll,问题解决
windbg调试句柄泄露
2017-11-22 C++
场景:程序运行后句柄一直往上增加,导致程序崩溃 解决办法:利用windbg提供的!htrace,分析未关闭的句柄 帮助:windbg命令行输入!htrace -?可以查看帮助 步骤: 使用windbg打开要调试的程序 1 在命令行输入”!htrace -enable” 打开句柄回溯 2 输入g启动程序运行 3 运行一会儿后正常关闭程序 4 输入!htrace 查看打开的句柄 5 输入!htrace -diff 分析未关闭的句柄windbg调试程序崩溃
2017-11-22 C++
场景:程序运行到一半崩溃,程序一开始有重定向dmp文件输出,到时到现场环境,崩溃后不产生dmp文件 解决方案:使用windbg启动程序 步骤: 可以使用windbg直接运行程序,启动后输入g,程序开始运行 也可以程序运行后windbg挂载上去 调试方法: 程序崩溃后输入!analyze -v分析可能出现崩溃的原因 使用.dump /m 转储路径!生成标准dmp文件 也可以通过.dump /ma 转储路径!生成完整dump文件 利用dmp文件分析崩溃原因 1.配置pdb路径(d:\mysymbol)为本地缓存路径 SRV*D:\mysymbol*http://msdl.microsoft.com/download/symbols 2命令行输入.reload 重新加载符号文件 3输入!analyze -v 分析可能产生崩溃的原因c++面试
2017-9-6 C++
基础:
进程与线程的区别
写一个宏返回最小值
双向链表删除某个节点,插入节点
单链表反转
字符串反转
String构造类、操作符=重载
字符串循环右移
exe的文件头结构
虚构函数可以直接调用吗
构造函数初始化列表异常捕获
Makefile怎么编译一个文件
dll信息在exe头文件哪里
gdb调试bt有什么作用
算法:
牛牛判断牛几算法
int grad(int *arr, int len)
{
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
for (int k = 0; k < len; k++)
{
if (i !=j && i !=k && k != j)
{
if ((arr[i] + arr[j] + arr[k]) % 10 == 0)
{
int sum = 0;
for (int l = 0; l < len; l++)
{
sum += arr[l];
}
return (sum - arr[i] - arr[j] - arr[k]) % 10;
}
}
}
}
}
return -1;
}
k个任务,每个任务有开始时间和结束时间,求24小时内最大执行任务数
斗地主随机洗牌算法
Fisher–Yates shuffle 洗牌算法
void shuffle(int *arr, int len)
{
for (int i = len - 1; i >= 0; i--)
{
int randomIndex = rand() % (i + 1);
int itemIndex = arr[randomIndex];
arr[randomIndex] = arr[i];
arr[i] = itemIndex;
}
}
使用:
多线程无锁编程:
http://blog.csdn.net/zzulp/article/details/6259866
send与write区别:
在功能上,read/write是recv/send的子集。read/wirte是更通用的文件描述符操作,而recv/send在socket领域则更“专业”一些。
当recv/send的flag参数设置为0时,则和read/write是一样的。
如果有如下几种需求,则read/write无法满足,必须使用recv/send:
- 为接收和发送进行一些选项设置
- 从多个客户端中接收报文
- 发送带外数据(out-of-band data)
标签: c++
git使用步骤
2017-3-13 C++
利用git进行代码版本管理步骤:
第一步:初始化版本库:
进入要进行版本控制的代码目录执行:git init .
第一步:从其他版本库克隆过来:
如要从远程机器的test.git克隆项目:
git clone http://xxx/test.git test
第二步:对代码进行修改
第三步:提交修改的代码
git add .(这是提交所有有修改的文件,如果只要提交特定的文件请参阅git帮助)
第四步:提交说明:
git commit -m "测试提交"
第五步:push代码到远程版本库:
git push origin master
git相关命令说明:
git remote [-v] :查看远程目录地址
标签: git
windows 利用apache + git 搭建远程版本仓库
2017-3-13 C++
需求:
局域网内电脑代码同步管理
环境:
mac osx/windows7
软件:
wamp:安装php + http + mysql 开发环境
git:git版本控制
步骤:参考http://blog.csdn.net/wangwei_cq/article/details/9379757
第一步:安装wamp:傻瓜化一步步就可以
第二步:安装git:基本也是傻瓜化看情况选择配置
第三步:配置Apache服务器
进入Apache安装目录下的conf目录,打开httpd.conf文件,找到<directory />节点,修改如下:
<directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</directory>
然后在httpd.conf文件的末尾追加:
# Set this to the root folder containing your Git repositories.
# 指定 Git 版本库的位置
SetEnv GIT_PROJECT_ROOT C:/workspace
# 该目录下的所有版本库都可以透过 HTTP(S) 的方式存取
SetEnv GIT_HTTP_EXPORT_ALL
# Route specific URLS matching this regular expression to the git http server.
# 令 Apache 把 Git 相关 URL 导向给 Git 的 http 处理程序
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
"C:/Program Files/Git/libexec/git-core/git-http-backend.exe/$1"
#这边git-http-backend.exe安装路径又得时在c:/Program Files/Git/mingw64/libexec/git-core/git-http-backend.exe
<Location />
AuthType Basic
AuthName "GIT Repository"
AuthUserFile "C:/Program Files/Git/htpassword"
#密码需求,不需要可以注释掉
Require valid-user
</Location>
第四步:添加用户
进入Apache安装目录下的bin,执行
htpasswd -cmb htpassword abc 123456
把生成的htpassword放到c:/Program Files/Git(位置随意,跟上面的AuthUserFile对应就行)
第五步: 测试
进入c:/workspace 创建空版本库
git init --bare test.git
到目的电脑上执行命令上传版本
如:服务端ip为192.168.0.2
git push http://192.168.0.2/test.git master
win10 createprocess等执行批处理窗口闪退
2016-10-26 C++
32位程序本来在win7 64位系统上运行没问题,后来系统升级到win10时,原先使用createprocess等执行的批处理程序启动不了
后来把程序编译成64位后就可以了!
通过测试,发现原来是win10系统上的32位cmd.exe启动不起来,而32位系统虽然是调用c:\windows\system32里面的cmd.exe,
实际上调用的是c:\windows\sysWow64里面的cmd.exe,具体可以查看如下网址解释:
http://www.cnblogs.com/hbccdf/p/dllchecktoolandsyswow64.html
当然如果要在32位系统调用system32里面的cmd.exe,微软也有提供接口实现!
Wow64DisableWow64FsRedirection:具体调用方式参考:
https://msdn.microsoft.com/zh-tw/library/aa365743(v=vs.85).aspx
标签: win10 createprocess 批处理
vs2008编译出错C2813 #import is not supported with /MP
2016-10-25 C++
用vs2008编译别人项目时候出错,报错码c2813 #import is not supported with /MP
上网找了下原因大致是import不支持并发编译;
具体错误解释https://msdn.microsoft.com/zh-cn/library/bb384890.aspx
解决办法:在项目属性的c/c++命令行加上额外参数/MP1 使用单处理器编译
OpenProcess 打开任务列表不存在进程返回200
2016-10-12 C++
通过OpenProcess判断进程存不存在时,
对于在进程管理器不存在的进程通过OpenProcess打开时返回不为NULL
原因是进程存在时open时没有关闭HANDLE
进程关闭后,虽然在进程管理器找不到该进程,
但是openprocess打开返回不为NULL
解决办法,保证每个openprocess后都对应closehandle
标签: VC OpenProcess