您当前位置: 首页 » 所有由

admin

发布的文章
所有由admin发布的文章 - 第8页

关于windows是一个非实时系统的验证和讨论

再看《深入理解windows》的时候,书中提到windows并非总是一个实时系统。主要原因是由于系统本身的设计,以及驱动,应用软件各方面一同构成的;然后就偶然了解到RTX这个辅助工具。

看了一下RTX的介绍,实际上RTX就是一个和windows内核相仿的一个系统。然后RTX会工作在一个或者几个独立的vcpu/cpu上,使得该vcpu/cpu变成一个实时系统。进而进行部分接管windows的一些中断响应、驱动操作。

然后就看到这个RTX的关于如何配置的视频时,听到对方介绍到用到RTX和没有用到RTX的系统。在用到了RTX的windows里面,对于一个1us采样的5s beep音频来说,能够流畅的播放出来。而对于一个没有使用RTX的是系统来说,就会出现断断续续的问题。

接着因为感兴趣对方是如何测试,就随手写了一段代码:


#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
for (int i =0; i<5000; ++i)
{
DWORD dwstart = GetTickCount();
Beep(750, 60);
DWORD dwend = GetTickCount();
printf("now cur %d, cost time %d\n", i, dwend - dwstart);
}

Sleep(1000*3600);
return 0;
}

 

由于gettickcount本身也是个严重不准的时间函数,所以也只能间接看一看;且整个声音均为断断续续。

通过测试发现,每个循环周期都有可能不是稳定的,有时候会存在2-5ms的误差,也或许和gettickcount的分辨率有关,或许确实和beep函数有关。

 

后来通过代码修改为如下,整个音频则变为流畅:


#include "stdafx.h"
#include &lt;Windows.h&gt;

int _tmain(int argc, _TCHAR* argv[])
{
Beep(750, 5000);
Sleep(1000*3600);
return 0;
}

通过上述观察然后跟踪了一下beep的汇编,汇编代码如下:
无标题

无标题

在msdn在NtDeviceIoControlFile中的描述:
无标题

参考beep函数的说明以后,在通过上述的描述;可见每调用一次beep始终是等待硬件处理完成以后,才会返回beep。然后又因为windows为非实时系统,所以就会出现上诉的代码1会出现发声会出现断断续续的问题。因为各种中断什么时候能够被处理,或者处理结束都是没有很强的约束性的。

当然,sleepex本身也是一个要走软中断的模块,显然也会影响到代码的发声情况。至于sleepex的精度情况,我自己没找到msdn官方说明,但参考waitforsingleobject和sleep,那sleepex精度也不会很高。

2015-10-28 | | win, win api, 编码技巧, 音视频_图像相关, 音视频编解码

关于windows是一个非实时系统的验证和讨论已关闭评论

【初学《调试大全》】vc8以后对程序栈上异常的检查几种类型

1,检查变量是否被改写

通过变量前后各插入一个字长的缓冲带(32bit的字长是4byte,64bit的字长是8byte),并且这个缓冲区均用0xCC填充(即 汇编指令的int 3)。

检查时机1:当对变量进行访问时,会检查这两个缓冲带。

检查时机2:函数返回时,进行栈检查。

只要缓冲带有任何一个字节不是0xCC,那就是变量被改写了。

2,char buff[100]溢出

首先按照普通变量的方式,在这个buff首位加上一段缓冲区(缓冲区具体大小由编译器决定),接着还是用0xCC填充。

并对这个buff的地址、大小、变量名,插入到一个错误检查链表。在函数返回时,会对这个链表进行检查。主要检查的还是这个buff的两侧缓冲带是否均被0xCC填充。

3,栈指针(EBP),栈顶(ESP)

有几种方式会导致EBP和ESP被改写:

第一种:如果通过溢出攻击的方式,会函数返回时的返回地址在栈上被改写。这就可能间接导致栈在函数进入前和退出后的关键状态不一致(EBP、ESP、前一栈帧的函数返回地址不正确等)。

第二种:栈出现与其增长的反方向溢出时,如栈是向上增长的,如果出现下溢时,可能会出现EBP指向的栈空间内容被改写,进而导致函数返回时ESP和EBP之前存储值不一致。

因此需要做一个安全cookie,这个cookie本质是一个随机数和ebp异或得到的。当要进行校验时,再异或一次就可以得到原先的ebp的值。

在vc8里面cookie有两个,一个是esp或ebp 和 随机数 异或得到的,另一个是 esp或ebp 和随机数的取反异或得到的。

4,对esp的针对性检查

函数返回时和ebp指向的帧地址进行比较。

2015-09-15 | | 未分类

【初学《调试大全》】vc8以后对程序栈上异常的检查几种类型已关闭评论

下一步该怎么做?

一直在为这个标题烦恼,不知道该叫一个什么样的名字。因为最近在为一些事情在烦恼。有部分是私事,有部分是公事。差不多一半一半!一直很想抽个时间反省一下,另外就是总结一下,想出一个较为折中的应对策略。

因为一些烦恼的事情,最近不得不动怒。

我也突然觉得奇怪起来,为何会这样恼火。最终自我反省得到结论如下:

1,没有良好的长期规划。

2,事情执行受阻

3,没有得到良好的沟通,以及没有进行良好的沟通

4,管不动人,管人吃力。

 

首先逐条说明一下,分析角度主要从自身和非自身出发:

— 1,没有良好的长期规划 —

自身:没考虑好后续工作需要如何开展,只是想着提前解决眼前的问题,堵住领导层的嘴,并按自己的计划迭代版本,到时候领导层不经过我进行抽调任何人时,有理有据。换句话说,还是想堵住领导层的嘴,别天天想着驴不吃草,还要驴跑的快。

非自身:公司层到底想做什么,都不知道;成天变来变去。

— 2,事情执行受阻 —

自身:对部分事情存在抵触心理,有意回避。这些事情时间长了,就容易形成推动困难,进展越来越慢零的情况。

非自身:人力资源不足,因为被借调走人力。

— 3,没有得到良好的沟通,以及没有进行良好的沟通 —

自身(没有进行良好的沟通):对部分人和事存在抵触心理,不愿意接触。对部分事情感觉无所谓,有一定程度的随性,没有正确理解领导层面说话的一些含义。

非自身(没有被进行良好的沟通):领导层面过于随性,任何事情没有做好充分沟通和确定。在人员你安排上,较为随意。事先沟通不充分要借调就借调,没有周旋余地。

— 4,管不动人,管人吃力 —

自身:对一些事情和人存在抵制,原因还在于沟通与自身心态存在问题。

非自身:对方融入团队较慢。

 

其实纵观上面的所有分析,基本可以看出几个内容来:

1,我自身有个性,没有做控制好。

2,我没有得到基本的尊重,然后出现情绪,接着就像滚雪球一样,越滚越大。

3,其他因素

从上诉三点来看,至少个性问题是力所能及并进行改进的。后续的话还需要在个性问题上进行克制一下。至于其他两点,我也只能呵呵。

2015-09-14 | | [窥视自我], *生活*, 思考

下一步该怎么做?已关闭评论

linux环境下调试真机的usb配置问题

在windows上调试真机,只需要装驱动就行了。

linux上简单一些,直接插上去就可以认出usb设备,但麻烦的是需要配置相应的usb配置项,步骤如下:

1,执行一下lsusb,得到下面的东西

Bus 002 Device 002: ID 2299:1411  
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

2,因为手里面的是个山寨机,所以显示不出描述来也是正常的。下面这条就是

Bus 002 Device 002: ID 2299:1411 

修改/etc/udev/rules.d/51-android.rules的配置文件(如果没有这个配置文件,就直接创建好了)

SUBSYSTEM=="usb", ATTR{idVendor}=="2299", MODE="0666", GROUP="plugdev"

然后重启一下udev服务

/etc/init.d/udev restart

接着在重启adb

adb kill-server
adb start-server
2015-09-11 | | [linux总结], android

linux环境下调试真机的usb配置问题已关闭评论

linux环境的中的eclipse里的logcat日志无法正常显示

装了debian 8以后,在用最新版的eclipse(mars)+adt调试android代码时,发现logcat日志是有的,但是无法显示在界面上。

查了一下网上的情况,好像很多人都有过。问题都好像出现在gtk相关的界面问题上。

有两种修改方法

— 第一种 —
相应的配置修改配置文件 /workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.ddms.prefs

为如下内容:

ddms.logcat.auotmonitor.level=error
ddms.logcat.automonitor=false
ddms.logcat.automonitor.userprompt=true
eclipse.preferences.version=1
logcat.view.colsize.Application=200
logcat.view.colsize.Level=70
logcat.view.colsize.PID=50
logcat.view.colsize.TID=50
logcat.view.colsize.Tag=170
logcat.view.colsize.Text=300
logcat.view.colsize.Time=140

— 第二种 —
或者在执行eclipse之前,设置环境变量

export SWT_GTK3=0
eclipse

我采用了第二种方式,就可以正常显示了

2015-09-09 | | [linux总结], android, NDK

linux环境的中的eclipse里的logcat日志无法正常显示已关闭评论

debian 7下安装android studio

在debian 7下由于没有oracle jdk/jre的直接软件源可以用,只能通过现有的软件源下载到openjdk。

android studio又不支持openjdk-6,应此需要更换成openjdk-7才行。

首先,安装一下openjdk-7


apt-get openjdk-7-jdk

 

接着通过切换java库版本


update-alternatives --config java

 Selection    Path                                             Priority     Status
------------------------------------------------------------
* 0           /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061         auto mode
 1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061         manual mode
 2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051         manual mode

选择2,以后直接启动android studio里面的sh脚本,即可

2015-09-01 | | android

debian 7下安装android studio已关闭评论

如何做好程序的性能优化

本来标题想取名成 《如何做好代码的性能优化》,但发现如果仅仅说代码性能优化的话就太狭义了。

最近一年一直在单线程框架的工程上写代码,阅读框架代码以后,不禁感叹道:“这个框架的设计者不仅是个高手,而且对windows相当了解,甚至借鉴了windows内核里面的一些设计元素。”

首先介绍一下我手里的这个框架:

1,总体来说,整个程序几乎就是单线程+异步(对于DNS解析、IO操作等一些耗时或难以异步的模块,会另启一个线程去执行和管理)。

2,在这个单线程框架中,所有的业务、网络协议栈、数据处理都在挂在这个单线程中去运行,并且绝大对数情况和业务下面都能够很好的运行。

3,模块间通讯采取模拟异步/同步事件、异步/同步消息的方式来完成

4,数据通讯很简单,直接用堆内存传递,用完立即释放。

5,定时器是最简单的“轮询”方式实现(并非真正轮询)

 

现在遇到一个比较严重的问题,就是在这个单线程模型中,由于开发的时候存在编码人技能层次不齐,以及任务力度控制不均匀。

导致开发一些功能在获得执行时间时,执行时间太长或没有及时的将任务中断并将执行时间让给其他任务执行。

这样的现象导致最严重的问题,自身流程过长,效率不一定高(如果还依赖其他模块的执行结果)。并且其他模块不能及时的拿到执行时间,并将执行结果及时反馈。进而引起血崩效应,导致部分要求时效性高的功能出现问题。

 

为了解决这类问题,就要做程序性能上的优化。这个问题上,一般采取的优化策略有几种:

1,代码级优化,就是通过各种技巧,将本来执行效率低的代码进行一点一点的修改并加快。这种优化方式周期长,效果不见得很明显,但对于长久来说是具备一定好处的;可以让优化者能够熟悉和了解整个代码的运行情况和流程等。

2,业务/功能优化,通过将长流程或者耗时的流程将功能和业务优化掉。然长流程变成短流程,然后进而增加执行时间在任务中的切换频率。可以促进轻量级任务的提早执行和结束,也间接能够提高大部分任务的及时性。但对于原本又长又臭的任务来说,此类优化可能带来的改善并不大,同时还需要优化者对程序整体有一定度的把握。

3,任务分拆,这样优化方式是将任务的关联性和时效性做一个定性分析。将相关任务集中起来,不相关任务分拆开;并将任务流中的上下游进行松耦,接着再对相关的业务进行松耦。这样做的好处在于一切以任务执行为视角,进行分拆,可以有效的区分开重任务和轻任务。同样也可以定性的了解到即使性要求高的任务和及时性要求低的任务。缺点在于,优化者同样也要对整个程序有一定的了解。

4,框架优化。这个难度大,没有做太大分析。

 

因为1和2都是夹杂着代码上技巧性的优化,这种优化如果考虑不当很有可能事倍功半,反而降低代码的可阅读性和可维护性。之前,我就遇到过一些成天嚷嚷着“算法”的人在用“算法”的思维去优化代码,结果代码优化下来性能是有一定的改善,但可维护性和可阅读性就差到极点了。甚至优化者本人自己去维度代码也是满天飞的bug。

介于4这种都是构架师水平,我最终选择3。

从任务的关联性出发,将一些重任务,以及及时性要求高的任务进行分类,并把这些任务的旁路任务进行一同整理。最终得到几类任务:

1,一般任务

2,及时性高任务

3,重任务

 

其中一般任务继续保留在原先的单线程框架中。及时性高的任务会从中剥离出来,并挂在一个新的单线程框架中;后期随着这个单线程任务量的增加,最终线程会逐步调整代码中的线程数。

重任务,其中重任务也被挂在一个新的单线程框架中,处理方式与及时性任务的处理方式一致。只不过对于及时性高的任务,可能还需要做一些代码层面上的执行优化,不过应该不多。

 

通过上面的方案进行优化了以后,发现整个客户端任务执行的拖沓、任务切换的不及时得到了较大的改善。看来改善任务安排有时候比起用一些代码技巧更为重要。

 

当然,我在这里说说是很容易的,实际写起代码来未必那么容易。因为涉及到多线程,就需要留意任务的关联性。因为关联性的存在,就会出现线程资源竞争,资源出现竞争时,就会很容易出现数据不同步,死锁,野指针等问题。

这是就需要经验和一定的代码技巧来解决这类问题。因此合理调整程序结构与代码技巧同样重要,如果一味的追求代码技巧和所谓的“算法”,那最终会失去对整个程序的可持续维护和开发的可能。这就如我之前所呆的一家公司一样,软件在国内某行业里还是有点小名气,但是真的要去看代码的话…………………bug、可阅读性不是在人类可理解范围内。反而这个团队内总有人一味的强调“算法”、“二叉树”什么的,数据结构与算法确实是程序的核心之一的东西,但现在国内的公司并非科研机构,顶多只能算一个做的工程。多数时候其实以工程的思维就能把问题解决好的,根本没有必要上升到“算法”层面,再说了,代码都没写好装什么逼呢?

2015-08-01 | | win, windbg, 数据结构 & 算法, 算法导论, 编码技巧

如何做好程序的性能优化已关闭评论

收集的音频中几个常用的术语缩写

PCMu                                       mu-law的PCM(PCM的一种编码方式)
PCMa                                       a-law的PCM(PCM的一种编码方式)
ILBC                                          internet Low Bitrate Codec(一个编码格式,窄带,用于语音编码的,VoIP)
ISAC                                          internet Speech Audio Codec(一个编码格式,宽带,用于语音编码的,VoIP,GIPS方案中的一部分)
G722                                         ITU-T标准中的7k宽带音频编码器(频率带宽有7k,子带自适应脉冲编码)
RED                                          前向冗余编码Redundant Audio Payload(主要是用于前向纠错的在RTP里面,一个RTP包带着两个音频样本,一个是自己的,一个是之前RTP包里面的。冗余的内容可以拿来纠错)
AVT                                          Audio/Video Transport(实时流媒体协议,核心还是RTP等协议)
CNG                                         Comfort Noise Generation(舒适噪音,模拟背景噪音)
VAD                                         Voice Activity Detection(语音活动检测,用于区分声音中,哪些是语音,那些是非语音)
Arbitrarty                                 随机声音(有一定的算法做支持的)
Opus                                        宽动态,免费的编码器。可以传输语音是音乐,有SILK(SKYPE)和CELT(xiph.org)的编码的综合。支持浮点和定点数。有恒定和可变码率
CELT                                        Constrained Energy Lapped Transform(频带范围宽,可以工作的频带是8k 到 48k,好像是基于频域特性能量移植来实现编码。可以支持语音和音乐,立体声支持。只有恒定码率,且只支持定点数。但延时比较高。)
2015-07-26 | | 音视频_图像相关, 音视频编解码

收集的音频中几个常用的术语缩写已关闭评论

一转眼3年过去了,变化还真不小

就在上周的某一天,我突发奇想,想重新对我自己的性格做一次测试。原因还主要是由于最近工作上的一些情绪、心态、工作性质发生变化,本来想的也很简单;要么跳巢算球了。

不过事后想了一下,觉得不值才作罢。也是出于好奇和积极的心态准备纠正一些问题,所以才想到了3年前做的那个性格测试。

这套性格测试是某网上上付费做的,整个测试题算是买增值业务赠送的。

做完测试以后大跌眼镜,除非少数指标发生微弱变化,最大的变化还在于心态上。比3年前沉稳了许多,而且越来越追求“稳定”!不愿意冒险,也不太容易出现激进。

回顾一下这3年的经历,感觉也没有什么。但心态确实发生了很大的变化,甚至连一些行为和做法也在一点一点的变化中。

可能不是我没有感觉,而是经历的有点多,反而觉得很自然了。

现在我考虑问题很容易被人说:“多想”。但最终做事时,或者做事结果,往往我或多或少会多一点那么灵活性或优势。以前常常在反思,要不要活的这么累,而且也常常有人说我活的累。但反观这3年,我发现了一个共同的特点!常常说我活的累的人,有一部分现在过的未必比我好多少。他们用思维上惰性来换取生活上的累!说来说去,目前为止我还是划得来,不仅让生活能更好一点,还锻炼了脑力。

简单说,总体上看生活还是较为公平的。

2015-07-26 | | [窥视自我], *生活*, 思考

一转眼3年过去了,变化还真不小已关闭评论

防御性编程是种好习惯,但控制不好也是个问题

最近在看一些同时的代码,发现有些代码确实烂的可以。不仅代码风格很差,就连最基本的逻辑也是不严谨的。接着就是在解析一段数据时,没有对数据中对应的字段进行有效值范围约束。如:

 

struct A
{
   int   msg_id;
   char  msg_body[100];
   short msg_param;
}

在实际中:
1,msg_id是有范围的,因为并不是所有的msg_id都被实现了。
2,msg_body里面的内容有可能是具有一定特征的,对于部分msg_id是可能不存在部分种类的msg_id
3.msg_param也有可能是有范围的。

当在一些习惯不好的程序员手里写这段数据的解析往往是


void parse(const char* buff)
{
   struct A a;
   memcpy(a.msg_id, buff, 4);
   memcpy(a.msg_body, buff+1, 100);
   memcpy(a.msg_param, buff+101, 2);

   .......... //do something
}

由于这里没有判断几个关键字段的有效值范围,很可能在dosomething的这个代码块部分会出现执行错误的问题。

2015-07-13 | | 编码技巧

防御性编程是种好习惯,但控制不好也是个问题已关闭评论

x86-p6构架支持的“断点”方式

了解了一下调试相关的内容,x86下的p6平台,大约支持的几种基本断点方式:

1,断点指令

2,向特定地址写数据

3,向特定地址读数据

4,操作特定IO地址(读写)

对于断点指令:int 3(0xcc),当cpu执行到该指令时,会检查中断向量表,转为去执行中断服务“函数”

对于想特定指令写数据,同样也会检查中断向量表(实际上很可能不是中断向量表,因为引发的是一个寄存器检查,检查异常处理函数的地址),执行对应的代码块。

对于3,4与2的方式一样。

在VS里面,对于监控某个变量是否被修改成某个固定的值,很有可能是采用了上述的2或3这两个机制。当然,我这边的vs的反汇编代码其实只是指令上的判断而已,当修改成了我指定的条件时,最终会引发DebugBreak这个函数(这个函数最终还是执行int 3(0xcc))

在VS里面还有没有发现那一种中断方式是对应着4的。

2015-07-12 | | win, 编码技巧

x86-p6构架支持的“断点”方式已关闭评论

学着做人与管事 – (1)

随着我老大一步一步推动,走上所谓的“小组长”快有一个季度了。

起初还是比较排斥的事情,随之老大的逐步放手,人也被赶鸭上架的一点一点扛起一些事情来。

第一次管人,说实话还有很多不情愿。主要原因在于:

1,人不是自己招过来的,不一定大部分人都能招架得住

2,突然这么“升”上次,并不是所有人都能够服气

3,性格也不是管人那类性格

4,缺乏经验和管理者必备的很多因素

 

再说后面又臭又长的话之前,首先介绍一下,我之前在组里属于那种喜欢嘻嘻哈哈,讲讲笑话之类的人。由于平时对代码稍有兴趣,可能在代码层面上感觉比其他人略突出一点而已。

好的,回过头来说后来我来“接管”组里事情。

 

在“强迫”我上之前,我就考虑到有人可能会不服,同时可能一下子招架不住所有人。

但我还是依然保持着之前嘻嘻哈哈和一贯爱“喷”人的情况,接着呢,就这样和他们打哈哈哈打了一个季度。到现在算是逐渐理顺并渐渐走上正轨。

在这个过程中,我体会比较深。

有的人说,一个“上司”需要保持应有的威严,和下属的关系需要保持一定的距离;不能太远,也不能太近。但现在的亲生经历告诉我,这不太可能;所谓威严就是威信+严肃。

我只是觉得同样一个意思的话,如果采用威严的方式讲出来反而或许很容易形成“口服心不服”的情况。所以常常和其他人嘻嘻哈哈,即便某个人有一个bug,我也不会很严肃的去说这个人有bug;我往往就是说,某某你有个锅,背好了。然后还在聊天窗口中加上萎缩的奸笑,接着就会看到某某人一番“不服气”的找bug原因。

经历过这样几次以后,发现大部分人都能够接受这种半开玩笑似的交流问题,并且工作效率也比较高,因为为了一点简单的“口角斗争”,往往总是兴冲冲的去代码里面找证据互相反驳。以前需要一天才能解决的bug,我发现现在有很大一部分只需要半个到一个小时就能解决完。

回想了一下打游戏(dota2),其实也是一样的。人和人之间总是在互相“竞争”和“争高下”,而这种争高下并不是图例和图名,仅仅是为了图自身“价值”的体现。

如果一个bug,我采取命令是的口吻和其他人说,相比之下肯定反抗情绪的占多数。如果采取半开玩笑时说,往往对方除了得到一个台阶下,也给别人留住了争回面子的机会,自然会很乐意去做。

 

作为一名刚出茅庐的“管理者”,我觉得很多观点和做法还需要一点点转变,但在这一点上,我确实得到了一些成长。

ps:人最重要的就是在有限的时间内,以最小量的树“敌”!

 

2015-05-04 | | *生活*, 思考

学着做人与管事 – (1)已关闭评论

还需要加深对编程的理解!

转眼工作5年过去了,搞c/c++5年多。确切地说,应该是C++,因为纯粹的c语言没有搞过多少。

回顾这几年,感觉水平有一定的紧进展,应付一些问题感觉比起初学者来要得心应手得多。但事实上,我发现我还是什么都不会。

最近,领导私下给我打招呼,说是客户端这块代码会交给我去负责,他将去负责更大范围的东西。事实上,我比较抗拒也排斥,本身如果就论代码而言,我并不排斥,我们现在手里的这套客户端代码确实有很多值得进一步学习的地方。我比较头疼的问题在于人和人之间的打交道,让我去负责客户端的代码,也就意味着以后或多或少要关注客户端相关模块负责人代码上的工作。

并不是所有人都会给你面子,也并不是所有的人都很好打交道,也并不是所有人从心里愿意听你的“指挥”。说实话我本身比较排斥这件事情背后的一些东西!但大势所趋,看得出领导在一些事情上有意放手不管。不得不还得自己硬着头皮上,或者有些bug尽可能的放在我自己的身上去处理好。

readmore

2015-03-18 | | *生活*, 思考

还需要加深对编程的理解!已关闭评论

windbg 批量分析dump

最近参与的一个项目中,由于重复的dump太多,为了简单处理问题。因此将dump放到同一个目录内进行集中解dump,下面是dump批量分析脚本

 

for %%i in (*.crash) do ( echo %%i
my_windbg_a.lnk -y "SRV*D:\windbg_symbol*http://msdl.microsoft.com/download/symbols;E:\tmp\pdb" -z E:\tmp\crash1\%%i -WX -Q -logo E:\tmp\crash1\%%i.log -c "!analyze -v;q"

my_windbg_a.lnk是给windbg做的一个快捷方式
-y代表符号表位置
-z是 dump的位置
-Q代表退出的时候不显示对话框
-logo输出日志
-c发命令到windbg中

2015-01-08 | | win, windbg

windbg 批量分析dump已关闭评论

【2014年底总结】矛盾

——————– 这是2014年底总结 ——————–

本文目的:

1,回顾2014下半年计划执行情况

2,自省自身在2014年中自己身上发生的一些变化

3,总结自身身上的变化,并尝试制定应对方法

4,制定2015计划

—————————————-

最近一段时间,突然发现自己脑袋灵活多了。在做一些事情的时候,明显发现理解花费的时间变短了,做事的准确性在逐渐提高。但伴随而来的是,性格的变化。

越来越抗拒在做某件事情的时候被分心或被分心多次,对待情绪的压抑控制逐渐变强,但一旦爆发起来,部分情况下会出现夸张或释放过于强烈和完全的现象。

通常情况下,对问题的观察逐渐趋于全面的形势,处理问题的目标和方法更加现实和直接。

部分情况下,对问题的观察容易情绪化,例如,应付了事、不耐烦、抗拒;从而导致片面理解问题,无法更加完全的掌握问题的情况,使得问题处理失去理智,和条件反射式的情绪化趋势;时间一长容易形成真正意义上的条件反射。

2014年下半年目标是回顾基础数学知识,主要为了能够在2015进行对《算法导论》进行理解和学习。下半年对计划的执行力度不够,高数复习进度缓慢,严重影响《算法导论》的学习时间。

 

由于性格的关系,有时人过于争强好胜,有时过于流露直白;有时候容易将情绪主动引导到其他地方,反而自己给自己闹不愉快。

针对这个问题,应该加强理性思维。对于与自身关系不大、对自身没有太大利益的事情,应该尽量采取回避措施。

处理问题还是那两个原则:

1,有感情就讲感情

2,感情用完了,就讲利益,没有利益或利益太薄的事情,基本完全看兴趣!

 

2015年计划,需要制定的有效可行。首先要考虑到工作对学习的影响(工作情绪对学习的影响、工作精力消耗对学习的影响、工作时间对学习的影响),其次需要考虑自身性格对学习的影响(懒惰、逃避、毅力),再次考虑其他额外的意料外事情对学习的影响。

2015年,相信工作将会成为比较头疼的问题。由于不对工作抱有太大的想法和希望,也不保有太多的理想,因此对待工作基本是几个处理方式和方法:

1,见招拆招。

2,应付但不流露出来,但也不积极主动。

3,忍耐,不要什么事情都要去说,对自身没有多大收益的事情,基本闭嘴即可。

2015年学习上,优先将数学知识学完,开始将周末时间利用起来,学习要抓紧在2年内过完算法导论+代码编程相关的书记,一共5本。

2014-12-03 | | [窥视自我], *生活*, 思考

【2014年底总结】矛盾已关闭评论