??xml version="1.0" encoding="utf-8" standalone="yes"?>久久人人爽人人爽人人av东京热,亚洲国产精品无码久久98,久久精品国产亚洲AV香蕉http://www.shnenglu.com/FongLuo/命运负责z牌,但是玩牌的是我们自己zh-cnTue, 06 May 2025 22:53:50 GMTTue, 06 May 2025 22:53:50 GMT60STL法概述http://www.shnenglu.com/FongLuo/archive/2017/05/26/214958.htmlFongLuoFongLuoFri, 26 May 2017 01:18:00 GMThttp://www.shnenglu.com/FongLuo/archive/2017/05/26/214958.htmlhttp://www.shnenglu.com/FongLuo/comments/214958.htmlhttp://www.shnenglu.com/FongLuo/archive/2017/05/26/214958.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214958.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214958.htmlhttp://www.cnblogs.com/kzloser/archive/2012/11/02/2751424.html

目录

STL法概述
查找法
堆算?/a>
关系法
集合法
排列l合法
排序和通用法
删除和替换算?/a>
生成和变异算?/a>
数法


STL法概述

?

STL法部分主要由头文g<algorithm>,<numeric>,<functional>l成。要使用 STL中的法函数必须包含头文?lt;algorithm>Q对于数值算法须包含<numeric>Q?lt;functional>中则定义了一些模板类Q用来声明函数对?/p>

注意:

~译器无法检出所传递的q代器是一个无效Ş式的q代?当然也无法给出算法函数错误的提示,因ؓq代器ƈ不是真实的类?它只是传递给函数模板的一U参数格式而已

STL中算法分c?

  • 操作对象
    • 直接改变容器的内?
    • 原容器的内容复制一?修改其副?然后传回该副?
  • 功能:
    • 非可变序列算?指不直接修改其所操作的容器内容的法
    • 可变序列法 指可以修改它们所操作的容器内容的法
    • 排序法 包括对序列进行排序和合ƈ的算法、搜索算法以及有序序列上的集合操?
    • 数值算?对容器内容进行数D?

查找法(13?Q判断容器中是否包含某个?/span>

函数?/span> 头文?/span> 函数功能
adjacent_find <algorithm> 在iteratorҎ识元素范围内,查找一对相邻重复元?扑ֈ则返回指向这对元素的W一个元素的ForwardIterator .否则q回last.重蝲版本使用输入的二元操作符代替相等的判?/td>
函数原Ş template<class FwdIt> FwdIt adjacent_find(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt adjacent_find(FwdIt first, FwdIt last, Pred pr);
binary_search <algorithm> 在有序序列中查找value,扑ֈq回true.重蝲的版本实用指定的比较函数对象或函数指针来判断相等
函数原Ş template<class FwdIt, class T> bool binary_search(FwdIt first, FwdIt last, const T& val);
template<class FwdIt, class T, class Pred> bool binary_search(FwdIt first, FwdIt last, const T& val,Pred pr);
count <algorithm> 利用{于操作W?把标志范围内的元素与输入值比?q回相等元素个数
函数原Ş template<class InIt, class Dist> size_t count(InIt first, InIt last,const T& val, Dist& n);
count_if <algorithm> 利用输入的操作符,Ҏ志范围内的元素进行操?q回l果为true的个?/td>
函数原Ş template<class InIt, class Pred, class Dist> size_t count_if(InIt first, InIt last, Pred pr);
equal_range <algorithm> 功能cMequalQ返回一对iteratorQ第一个表Clower_boundQ第二个表示upper_bound
函数原Ş template<class FwdIt, class T> pair<FwdIt, FwdIt> equal_range(FwdIt first, FwdIt last,const T& val);
template<class FwdIt, class T, class Pred> pair<FwdIt, FwdIt> equal_range(FwdIt first, FwdIt last,const T& val, Pred pr);
find <algorithm> 利用底层元素的等于操作符,Ҏ定范围内的元素与输入D行比?当匹配时,l束搜烦,q回该元素的一个InputIterator
函数原Ş template<class InIt, class T> InIt find(InIt first, InIt last, const T& val);
find_end <algorithm> 在指定范围内查找"p入的另外一对iterator标志的第二个序列"的最后一ơ出?扑ֈ则返回最后一对的W一个ForwardIterator,否则q回输入?另外一?的第一个ForwardIterator.重蝲版本使用用户输入的操作符代替{于操作
函数原Ş template<class FwdIt1, class FwdIt2> FwdIt1 find_end(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2);
template<class FwdIt1, class FwdIt2, class Pred> FwdIt1 find_end(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2, Pred pr);
find_first_of <algorithm> 在指定范围内查找"p入的另外一对iterator标志的第二个序列"中Q意一个元素的W一ơ出现。重载版本中使用了用戯定义操作W?/td>
函数原Ş template<class FwdIt1, class FwdIt2> FwdIt1 find_first_of(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2);
template<class FwdIt1, class FwdIt2, class Pred> FwdIt1 find_first_of(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2, Pred pr);
find_if <algorithm> 使用输入的函C替等于操作符执行find
  template<class InIt, class Pred> InIt find_if(InIt first, InIt last, Pred pr);
lower_bound <algorithm> q回一个ForwardIteratorQ指向在有序序列范围内的可以插入指定D不破坏容器序的第一个位|?重蝲函数使用自定义比较操?/td>
函数原Ş template<class FwdIt, class T> FwdIt lower_bound(FwdIt first, FwdIt last, const T& val);
template<class FwdIt, class T, class Pred> FwdIt lower_bound(FwdIt first, FwdIt last, const T& val, Pred pr);
upper_bound <algorithm> q回一个ForwardIterator,指向在有序序列范围内插入value而不破坏容器序的最后一个位|,该位|标志一个大于value的?重蝲函数使用自定义比较操?/td>
函数原Ş template<class FwdIt, class T> FwdIt upper_bound(FwdIt first, FwdIt last, const T& val);
template<class FwdIt, class T, class Pred> FwdIt upper_bound(FwdIt first, FwdIt last, const T& val, Pred pr);
search <algorithm> l出两个范围Q返回一个ForwardIterator,查找成功指向W一个范围内W一ơ出现子序列(W二个范?的位|,查找p|指向last1,重蝲版本使用自定义的比较操作
函数原Ş template<class FwdIt1, class FwdIt2> FwdIt1 search(FwdIt1 first1, FwdIt1 last1,FwdIt2 first2, FwdIt2 last2);
template<class FwdIt1, class FwdIt2, class Pred> FwdIt1 search(FwdIt1 first1, FwdIt1 last1, FwdIt2 first2, FwdIt2 last2, Pred pr);
search_n <algorithm> 在指定范围内查找val出现nơ的子序列。重载版本用自定义的比较操?/td>
函数原Ş template<class FwdIt, class Dist, class T> FwdIt search_n(FwdIt first, FwdIt last,Dist n, const T& val);
template<class FwdIt, class Dist, class T, class Pred> FwdIt search_n(FwdIt first, FwdIt last,Dist n, const T& val, Pred pr);

堆算?span style="font-size: 15px">(4?

函数?/span> 头文?/span> 函数功能
make_heap <algorithm> 把指定范围内的元素生成一个堆。重载版本用自定义比较操作
函数原Ş template<class RanIt> void make_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void make_heap(RanIt first, RanIt last, Pred pr);
pop_heap <algorithm> q不真正把最大元素从堆中弹出Q而是重新排序堆。它把first和last-1交换Q然后重新生成一个堆。可使用容器的back来访问被"弹出"的元素或者用pop_backq行真正的删除。重载版本用自定义的比较操?/td>
函数原Ş template<class RanIt> void pop_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void pop_heap(RanIt first, RanIt last, Pred pr);
push_heap <algorithm> 假设first到last-1是一个有效堆Q要被加入到堆的元素存放在位|last-1Q重新生成堆。在指向该函数前Q必d把元素插入容器后。重载版本用指定的比较操作
函数原Ş template<class RanIt>void push_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void push_heap(RanIt first, RanIt last, Pred pr);
sort_heap <algorithm> Ҏ定范围内的序列重新排序,它假设该序列是个有序堆。重载版本用自定义比较操作
函数原Ş template<class RanIt> void sort_heap(RanIt first, RanIt last);
template<class RanIt, class Pred> void sort_heap(RanIt first, RanIt last, Pred pr);

关系法(8?

函数?/span> 头文?/span> 函数功能
equal <algorithm> 如果两个序列在标志范围内元素都相{,q回true。重载版本用输入的操作W代曉K认的{于操作W?/td>
函数原Ş template<class InIt1, class InIt2> bool equal(InIt1 first, InIt1 last, InIt2 x);
template<class InIt1, class InIt2, class Pred> bool equal(InIt1 first, InIt1 last, InIt2 x, Pred pr);
includes <algorithm> 判断W一个指定范围内的所有元素是否都被第二个范围包含Q用底层元素的<操作W,成功q回true。重载版本用用戯入的函数
函数原Ş template<class InIt1, class InIt2> bool includes(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2);
template<class InIt1, class InIt2, class Pred> bool includes(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, Pred pr);
lexicographical_compare <algorithm> 比较两个序列。重载版本用用戯定义比较操作
函数原Ş template<class InIt1, class InIt2> bool lexicographical_compare(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2);
template<class InIt1, class InIt2, class Pred> bool lexicographical_compare(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, Pred pr);
max <algorithm> q回两个元素中较大一个。重载版本用自定义比较操作
函数原Ş template<class T> const T& max(const T& x, const T& y);
template<class T, class Pred> const T& max(const T&  x, const T& y, Pred pr);
max_element <algorithm> q回一个ForwardIteratorQ指出序列中最大的元素。重载版本用自定义比较操作
函数原Ş template<class FwdIt> FwdIt max_element(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt max_element(FwdIt first, FwdIt last, Pred pr);
min <algorithm> q回两个元素中较一个。重载版本用自定义比较操作
函数原Ş template<class T> const T& min(const T& x, const T& y);
template<class T, class Pred> const T& min(const T& x, const T& y, Pred pr);
min_element <algorithm> q回一个ForwardIteratorQ指出序列中最的元素。重载版本用自定义比较操作
函数原Ş template<class FwdIt> FwdIt min_element(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt min_element(FwdIt first, FwdIt last, Pred pr);
mismatch <algorithm> q行比较两个序列Q指出第一个不匚w的位|,q回一对iteratorQ标志第一个不匚w元素位置。如果都匚wQ返回每个容器的last。重载版本用自定义的比较操?/td>
函数原Ş template<class InIt1, class InIt2> pair<InIt1, InIt2> mismatch(InIt1 first, InIt1 last, InIt2 x);
template<class InIt1, class InIt2, class Pred> pair<InIt1, InIt2> mismatch(InIt1 first, InIt1 last, InIt2 x, Pred pr);

集合法(4?

函数?/span> 头文?/span> 函数功能
set_union <algorithm> 构造一个有序序列,包含两个序列中所有的不重复元素。重载版本用自定义的比较操?/td>
函数原Ş template<class InIt1, class InIt2, class OutIt> OutIt set_union(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_union(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2,OutIt x, Pred pr);
set_intersection <algorithm> 构造一个有序序列,其中元素在两个序列中都存在。重载版本用自定义的比较操?/td>
函数原Ş template<class InIt1, class InIt2, class OutIt> OutIt set_intersection(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_intersection(InIt1 first1, InIt1 last1,InIt2 first2,InIt2 last2, OutIt x, Pred pr);
set_difference <algorithm> 构造一个有序序列,该序列仅保留W一个序列中存在的而第二个中不存在的元素。重载版本用自定义的比较操?/td>
函数原Ş template<class InIt1, class InIt2, class OutIt> OutIt set_difference(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_difference(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x, Pred pr);
set_symmetric_difference <algorithm> 构造一个有序序列,该序列取两个序列的对U差?q-交集)
函数原Ş template<class InIt1, class InIt2, class OutIt> OutIt set_symmetric_difference(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt set_symmetric_difference(InIt1 first1, InIt1 last1, InIt2 first2, InIt2 last2, OutIt x, Pred pr);

排列l合法(2?提供计算l定集合按一定顺序的所有可能排列组?/span>

函数?/span> 头文?/span> 函数功能
next_permutation <algorithm> 取出当前范围内的排列Qƈ重新排序Z一个排列。重载版本用自定义的比较操?/td>
函数原Ş template<class BidIt> bool next_permutation(BidIt first, BidIt last);
template<class BidIt, class Pred> bool next_permutation(BidIt first, BidIt last, Pred pr);
prev_permutation <algorithm> 取出指定范围内的序列q将它重新排序ؓ上一个序列。如果不存在上一个序列则q回false。重载版本用自定义的比较操?/td>
函数原Ş template<class BidIt> bool prev_permutation(BidIt first, BidIt last);
template<class BidIt, class Pred> bool prev_permutation(BidIt first, BidIt last, Pred pr);

排序和通用法(14?Q提供元素排序策?/span>

函数?/span> 头文?/span> 函数功能
inplace_merge <algorithm> 合ƈ两个有序序列Q结果序列覆盖两端范围。重载版本用输入的操作q行排序
函数原Ş template<class BidIt> void inplace_merge(BidIt first, BidIt middle, BidIt last);
template<class BidIt, class Pred> void inplace_merge(BidIt first, BidIt middle, BidIt last, Pred pr);
merge <algorithm> 合ƈ两个有序序列Q存攑ֈ另一个序列。重载版本用自定义的比?/td>
函数原Ş template<class InIt1, class InIt2, class OutIt> OutIt merge(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x);
template<class InIt1, class InIt2, class OutIt, class Pred> OutIt merge(InIt1 first1, InIt1 last1,InIt2 first2, InIt2 last2, OutIt x, Pred pr);
nth_element <algorithm> 范围内的序列重新排序,使所有小于第n个元素的元素都出现在它前面,而大于它的都出现在后面。重载版本用自定义的比较操?/td>
函数原Ş template<class RanIt> void nth_element(RanIt first, RanIt nth, RanIt last);
template<class RanIt, class Pred> void nth_element(RanIt first, RanIt nth, RanIt last, Pred pr);
partial_sort <algorithm> 对序列做部分排序Q被排序元素个数正好可以被放到范围内。重载版本用自定义的比较操?/td>
函数原Ş template<class RanIt> void partial_sort(RanIt first, RanIt middle, RanIt last);
template<class RanIt, class Pred> void partial_sort(RanIt first, RanIt middle, RanIt last, Pred pr);
partial_sort_copy <algorithm> 与partial_sortcMQ不q将l过排序的序列复制到另一个容?/td>
函数原Ş template<class InIt, class RanIt> RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2);
template<class InIt, class RanIt, class Pred> RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2, Pred pr);
partition <algorithm> Ҏ定范围内元素重新排序Q用输入的函数Q把l果为true的元素放在结果ؓfalse的元素之?/td>
函数原Ş template<class BidIt, class Pred> BidIt partition(BidIt first, BidIt last, Pred pr);
random_shuffle <algorithm> Ҏ定范围内的元素随整次序。重载版本输入一个随机数产生操作
函数原Ş template<class RanIt> void random_shuffle(RanIt first, RanIt last);
template<class RanIt, class Fun> void random_shuffle(RanIt first, RanIt last, Fun& f);
reverse <algorithm> 指定范围内元素重新反序排序
函数原Ş template<class BidIt> void reverse(BidIt first, BidIt last);
reverse_copy <algorithm> 与reversecMQ不q将l果写入另一个容?/td>
函数原Ş template<class BidIt, class&nnbsp;OutIt> OutIt reverse_copy(BidIt first, BidIt last, OutIt x);
rotate <algorithm> 指定范围内元素Ud容器末尾Q由middle指向的元素成为容器第一个元?/td>
函数原Ş template<class FwdIt> void rotate(FwdIt first, FwdIt middle, FwdIt last);
rotate_copy <algorithm> 与rotatecMQ不q将l果写入另一个容?/td>
函数原Ş template<class FwdIt, class OutIt> OutIt rotate_copy(FwdIt first, FwdIt middle, FwdIt last, OutIt x);
sort <algorithm> 以升序重新排列指定范围内的元素。重载版本用自定义的比较操?/td>
函数原Ş template<class RanIt> void sort(RanIt first, RanIt last);
template<class RanIt, class Pred> void sort(RanIt first, RanIt last, Pred pr);
stable_sort <algorithm> 与sortcMQ不q保留相{元素之间的序关系
函数原Ş template<class BidIt> void stable_sort(BidIt first, BidIt last);
template<class BidIt, class Pred> void stable_sort(BidIt first, BidIt last, Pred pr);
stable_partition <algorithm> 与partitioncMQ不q不保证保留容器中的相对序
函数原Ş template<class FwdIt, class Pred> FwdIt stable_partition(FwdIt first, FwdIt last, Pred pr);

删除和替换算?span style="font-size: 15px">(15?

函数?/span> 头文?/span> 函数功能
copy <algorithm> 复制序列
函数原Ş template<class InIt, class OutIt> OutIt copy(InIt first, InIt last, OutIt x);
copy_backward <algorithm> 与copy相同Q不q元素是以相反顺序被拯
函数原Ş template<class BidIt1, class BidIt2> BidIt2 copy_backward(BidIt1 first, BidIt1 last, BidIt2 x);
iter_swap <algorithm> 交换两个ForwardIterator的?/td>
函数原Ş template<class FwdIt1, class FwdIt2> void iter_swap(FwdIt1 x, FwdIt2 y);
remove <algorithm> 删除指定范围内所有等于指定元素的元素。注意,该函C是真正删除函数。内|函C适合使用remove和remove_if函数
函数原Ş template<class FwdIt, class T> FwdIt remove(FwdIt first, FwdIt last, const T& val);
remove_copy <algorithm> 所有不匚w元素复制C个制定容器,q回OutputIterator指向被拷贝的末元素的下一个位|?/td>
函数原Ş template<class InIt, class OutIt, class T> OutIt remove_copy(InIt first, InIt last, OutIt x, const T& val);
remove_if <algorithm> 删除指定范围内输入操作结果ؓtrue的所有元?/td>
函数原Ş template<class FwdIt, class Pred> FwdIt remove_if(FwdIt first, FwdIt last, Pred pr);
remove_copy_if <algorithm> 所有不匚w元素拯C个指定容?/td>
函数原Ş template<class InIt, class OutIt, class Pred> OutIt remove_copy_if(InIt first, InIt last, OutIt x, Pred pr);
replace <algorithm> 指定范围内所有等于vold的元素都用vnew代替
函数原Ş template<class FwdIt, class T> void replace(FwdIt first, FwdIt last,const T& vold, const T& vnew);
replace_copy <algorithm> 与replacecMQ不q将l果写入另一个容?/td>
函数原Ş template<class InIt, class OutIt, class T> OutIt replace_copy(InIt first, InIt last, OutIt x,const T& vold, const T& vnew);
replace_if <algorithm> 指定范围内所有操作结果ؓtrue的元素用新g?/td>
函数原Ş template<class FwdIt, class Pred, class T> void replace_if(FwdIt first, FwdIt last,Pred pr, const T& val);
replace_copy_if <algorithm> 与replace_ifQ不q将l果写入另一个容?/td>
函数原Ş template<class InIt, class OutIt, class Pred, class T> OutIt replace_copy_if(InIt first, InIt last, OutIt x, Pred pr, const T& val);
swap <algorithm> 交换存储在两个对象中的?/td>
函数原Ş template<class T> void swap(T& x, T& y);
swap_range <algorithm> 指定范围内的元素与另一个序列元素D行交?/td>
函数原Ş template<class FwdIt1, class FwdIt2> FwdIt2 swap_ranges(FwdIt1 first, FwdIt1 last, FwdIt2 x);
unique <algorithm> 清除序列中重复元素,和removecMQ它也不能真正删除元素。重载版本用自定义比较操作
函数原Ş template<class FwdIt> FwdIt unique(FwdIt first, FwdIt last);
template<class FwdIt, class Pred> FwdIt unique(FwdIt first, FwdIt last, Pred pr);
unique_copy <algorithm> 与uniquecMQ不q把l果输出到另一个容?/td>
函数原Ş template<class InIt, class OutIt> OutIt unique_copy(InIt first, InIt last, OutIt x);
template<class InIt, class OutIt, class Pred> OutIt unique_copy(InIt first, InIt last, OutIt x, Pred pr);

生成和变异算?span style="font-size: 15px">(6?

函数?/span> 头文?/span> 函数功能
fill <algorithm> 输入Dl标志范围内的所有元?/td>
函数原Ş template<class FwdIt, class T> void fill(FwdIt first, FwdIt last, const T& x);
fill_n <algorithm> 输入Dlfirst到first+n范围内的所有元?/td>
函数原Ş template<class OutIt, class Size, class T> void fill_n(OutIt first, Size n, const T& x);
for_each <algorithm> 用指定函Cơ对指定范围内所有元素进行P代访问,q回所指定的函数类型。该函数不得修改序列中的元素
函数原Ş template<class InIt, class Fun> Fun for_each(InIt first, InIt last, Fun f);
generate <algorithm> q箋调用输入的函数来填充指定的范?/td>
函数原Ş template<class FwdIt, class Gen> void generate(FwdIt first, FwdIt last, Gen g);
generate_n <algorithm> 与generate函数cMQ填充从指定iterator开始的n个元?/td>
函数原Ş template<class OutIt, class Pred, class Gen> void generate_n(OutIt first, Dist n, Gen g);
transform <algorithm> 输入的操作作用与指定范围内的每个元素,q生一个新的序列。重载版本将操作作用在一对元素上Q另外一个元素来自输入的另外一个序列。结果输出到指定容器
函数原Ş template<class InIt, class OutIt, class Unop> OutIt transform(InIt first, InIt last, OutIt x, Unop uop);
template<class InIt1, class InIt2, class OutIt, class Binop> OutIt transform(InIt1 first1, InIt1 last1, InIt2 first2,OutIt x, Binop bop);

数法(4?

函数?/span> 头文?/span> 函数功能
accumulate <numeric> iteratorҎ识的序列D元素之和,加到一个由val指定的初始g。重载版本不再做加法Q而是传进来的二元操作W被应用到元素上
函数原Ş template<class InIt, class T> T accumulate(InIt first, InIt last, T val);
template<class InIt, class T, class Pred> T accumulate(InIt first, InIt last, T val, Pred pr);
partial_sum <numeric> 创徏一个新序列Q其中每个元素g表指定范围内该位|前所有元素之和。重载版本用自定义操作代替加法
函数原Ş template<class InIt, class OutIt> OutIt partial_sum(InIt first, InIt last,OutIt result);
template<class InIt, class OutIt, class Pred> OutIt partial_sum(InIt first, InIt last,OutIt result, Pred pr);
product <numeric> 对两个序列做内积(对应元素怹Q再求和)q将内积加到一个输入的初始g。重载版本用用户定义的操作
函数原Ş template<class InIt1, class InIt2, class T> T product(InIt1 first1, InIt1 last1,Init2 first2, T val);
template<class InIt1, class InIt2, class T,class Pred1, class Pred2> T product(InIt1 first1, InIt1 last1,Init2 first2, T val, Pred1 pr1, Pred2 pr2);
adjacent_difference <numeric> 创徏一个新序列Q新序列中每个新g表当前元素与上一个元素的差。重载版本用指定二元操作计算盔R元素的差
函数原Ş template<class InIt, class OutIt> OutIt adjacent_difference(InIt first, InIt last,OutIt result);
template<class InIt, class OutIt, class Pred> OutIt adjacent_difference(InIt first, InIt last,OutIt result, Pred pr);


FongLuo 2017-05-26 09:18 发表评论
]]>
Listary Pro- 文g览与搜索增强的񔼜器http://www.shnenglu.com/FongLuo/archive/2017/02/27/214704.htmlFongLuoFongLuoMon, 27 Feb 2017 00:50:00 GMThttp://www.shnenglu.com/FongLuo/archive/2017/02/27/214704.htmlhttp://www.shnenglu.com/FongLuo/comments/214704.htmlhttp://www.shnenglu.com/FongLuo/archive/2017/02/27/214704.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214704.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214704.htmlListary Pro- 文g览与搜索增强的񔼜器

Listary 是一?Windows 文g览增强工具Qؓ Windows 资源理器增加智能命令、最q文档以及收藏功能。文件小Q功能强大?br>U杀pȝ自带搜烦功能Q!

它是一N怼U?Windows 文g览和搜索增强工P可以Z Windows 的「文件浏览对话框」、「资源管理器」等增加非常方便的文件快速定位、实时全盘搜索、常用文件夹收藏、打开历史、快速切换到已打开的\径、快捷右键菜单等一pd非常非常实用和高效的功能Q它能将 Windows 的便h提高到一个新的高度!

q里有一D|自iPlaySoft.com的视频介l,其中展C Listary 怎样为我们带来的高效操作体验的:

如视频演C,使用 Listary 之后Q你完全不需像一般的搜烦软g那样L搜烦框或启动H口来进行输入,在资源管理器或对话框的界面下Q只需直接按键盘,输入字母pL定位和操作文件了Q非常赞的一Ҏ它竟然能支持用拼音羃写来匚w中文文g名)Q善加用可以节省大量的鼠标Ud和点击,极大的提升文件操作效率。当你习惯了使用 Listary 之后Q你一定不会再愿意回到q去Q因Z永远都不知道Q它以后到底能ؓ你省回多那些原本被默默费掉的生命Q又或许Q用q之后你才知道,原来 Windows q能q么个用法!

Listary 的功能介l:

Listary 体积yQ而且q行快速,即便在低配置的电脑上帔Rpȝ使用也不会察觉有丝毫拖慢速度的现象。它提供了简体中文语aQ加上前面所说的拼音搜烦功能Q可以说对中文环境的支持已经辑ֈ了完。虽然官|的介绍视频是英文的Q但软g本n也提供了中文?“教学?功能Q安装后W一ơ打开QY件会有新手指引,非常人性化Q相信大家上手用应该是无鸭梨的?

集成在windows资源理其中Q操作非常方?

方便新手上手Q分享一些用教E:

1、双击Ctrl键,调出搜烦界面
2、在搜烦见面输入Ʋ查扄文g或文件夹Q如果是中文Q徏议用汉字Q设|选项里面有模p匹配)
3、搜索结果栏会出现在搜烦界面下方Q上、下键选择后回车直接调用关联程序?br>5、徏议长期用者设|成随电脑启动?br>6、经条件允许的话,购买正版Q支持国产YӞ虽然不购买此软g也正怋用,只是部分Pro功能限制Q正版终w免费升U)?br>7、此上介l仅仅只是该软g最大的使用亮点Q其实还有很多功能,比如之前搜烦q的历史记录可以随时调用{?

Listary 除了支持 Windows 的资源管理器、文件对话框的增Z外,q能提供TotalCommander、WinRAR、FileZillar?Zip、XYPlorer、FreeCommander {知名Y件的增强支持Q配合它们用h使用效率更加无敌Q此外,如果你喜Ƣ?Everything q行文g搜烦的话QListary q能与它l合Q用它替代自w的搜烦功能?

WinRAR{第三方软g中也能用

与第三方E序 Total Commander集成,详细请参考:Listary+TC: 提高效率Q取代传l低效的"打开/保存"对话?/a>

Listary+TC: 提高效率Q取代传l低效的"打开/保存"对话?

免费版与Pro版区别:

除了视频中介l的那些Ҏ之外,Listary 其实q有很多很实用的增强功能和特性,譬如 Project (目汇聚搜烦)、FuzzyNavigation (搜烦当前文g多w面的所有文?  {特性大家可以下载回L慢试用和体会。不q可惜的是,其中很多优秀的功能(如刚提到的两V还有视频中按右方向键调用文件的菜单{等Q都?Listary Pro 专业版专享的Q免费版q不能用。所以如果你觉得免费版用得不够爽Q或者用q觉得这软g实有用Q那么我极度你升U到 Pro 版,因ؓ你不仅可以用目前全部的功能Q而且未来版本新增的功能也能全部获得?

Pro版可以到官网购买Q当然本着互联|分享精,q里提供一个免Ҏ册ProҎQ相x件下载链接在文末提供Q:

Install Listary

Close the Program

Run (Run as admin) the file "Kill-ListaryService.bat" for stoping the ListaryService

Copy the cracked file "MSVCP140.dll" and paste to Listary Installtion Folder(C:\Program Files\Listary)

Register the program with following key

Name: Mike Rountree
Email: soft@instant-demo.com
Registration Code:

JE4V8T3M96PWT4SUCNZNVZ37XKLBU2QW
N64LEJQ3VHY7MPL6KY2R5SQZ76QFFTKP
VVE8JBVEAME8MMBRHRGF2P6MAJG7ZSQY
MUY2PGTQ2EG3W2YHTU2CFWL7SE6THU3Q
TAL3U894S2BWA9629EFCXYYYG3S65WEQ
5R234G26AT52UWD27PNENP4GR2EKKDK6

Name: John James Jones
Email: john.james.jones@hushmail.com

Registration Code:
2RJSDKSSNGSXMYNWEEH7E4T6FUVCGPPB
CDADQ5LMEABJF76Y369B5LTLVXVFWUN3
26KQ58M78J2NNS6WKPT9CG4MJXNXH4MJ
YBYXSARTBNPFNVBF6UFXQUVEWXQQGSUY
HFF9AVV857AENGWWMPMRN5VLHB884JEA
Y48FXJJ5JDY6UVTP8FMJSHDLSAXZB5HE

Done

成功升到Pro版本

相关文g下蝲地址Q?/h5>

官方|站Q?a >讉K

链接Q?a >https://eyun.baidu.com/s/3qYqAZGo 密码Qleftshine

参考文章:

Listary ?文g览增强工具

Listary Pro - 能极大幅度提高你 Windows 文g览与搜索速度效率的「超U神器?/a>

windows资源理器增强工具Listary.Pro.5.0.2581.0最新破?/a>

FongLuo 2017-02-27 08:50 发表评论
]]>C# winformE序免安?net framework在XP/win7/win10环境q行Q?/title><link>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214703.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Mon, 27 Feb 2017 00:45:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214703.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214703.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214703.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214703.html</trackback:ping><description><![CDATA[<h3><a >C# winformE序免安?net framework在XP/win7/win10环境q行Q?/a></h3> <h5><strong>前文Q?/strong></h5> <p>首先感谢里的大?strong>宇内云 </strong>提供的anyexec for windows版本?<p>l过本h搭徏虚拟机在xp环境 使用anyexecq行winfromE序后,试通过,如下是用的xpq行winfromE序的部分截?<p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225130139445-2029189323.png"> <p>下面是nq前入坑C#写的winform。。。玩毒奶_用的,勿喷?<p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225130157413-1217025110.png"> <p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225130704695-891705366.png"> <p>.net framework 4.5环境的winformE序 <p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225130352913-749725817.png"> <p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225131457773-1578652797.png"> <p>不过要注意的是,exe引用的自己写的dll需要放在根目录?<p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225131556960-1163669389.png"> <p><strong>整个步骤Q?/strong> <h5><strong>1、下载anyexec</strong>  链接: http://pan.baidu.com/s/1jIyViC2 密码: ss3a Q链接已更新Q支持中文名和中文\径)</h5> <h5><strong>2、目录内容介l?/strong></h5> <p>?<strong>any.exe q行控制台程序员的,名字要与攑օapp目录的控制台E序对应</strong><br>?list.txt<br>?<strong>winform.exe q行winformE序的,名字要与攑օapp目录的控制台E序对应</strong><br>?使用说明.txt<br>?<strong>备用DLL.zip  mono环境下的dllQ如果缺了dllQ可以将dll解压后,攑ֈruntime\lib目录里面</strong><br>?目录l构.bat<br>?em><em> </em></em> <p><em><em><em><em>├─app <strong>q目录存放你写的exeE序Q里面是两个CZdemo</strong><br>?any.exe CZ控制台程?br>?winform.exe CZwinformE序<br>?br>└─runtime monoq行环境<br>├─bin<br>├─etc<br>?└─mono<br>??browscap.ini<br>??br>?├─4.5<br>???DefaultWsdlHelpGenerator.aspx<br>???machine.config<br>???settings.map<br>???web.config<br>???br>??└─Browsers<br>??Compat.browser<br>??br>?└─mconfig<br>?config.xml<br>?br>└─<strong>lib 如果了dlld份dll.zip解压攄到这?/strong><br>?any.dll<br>?System.Drawing.dll<strong> winformE序必须的dll</strong><br>?System.Windows.Forms.dll<strong> <em><em><em><em><strong>winformE序必须的dll</strong></em></em></em></em></strong><br>?br>└─mono<br>├─4.5<br>└─gac</em></em></em></em> <h5><strong><em><em><em><em><br></em></em></em></em>3、把你写的winformE序攑օ到app目录</strong></h5> <p><em><em><em><em><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225134110554-150051719.png"></em></em></em></em> <p>exe如果有引用的dll放在根目录?<p>如下图,我引用了helper.dll文g <p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225134207851-1626161882.png"> <h5><strong>4、把根目录的winform.exeҎ和app目录你放入的exe同名</strong></h5> <p>我这里改成了ShrinkDatabase.exe <p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225134349023-55743062.png"> <p><strong>5、运?/strong> <p><img alt="" src="http://images2015.cnblogs.com/blog/564664/201702/564664-20170225134409413-106020591.png"> <p>如果需要linux环境下运行C#E序Q请讉K<strong>宇内云</strong>大神的博?<p><a >不装monoQ你?NETE序照样可以在Linux上运行!</a> <h5><strong>意义</strong>Q?/h5> <p>无需在xp,win7下安?net 4.5和以下的框架可以直接运行你写的C#E序 <p>你可以制作更多更方便的绿色程?<p>整个环境大小压羃后只?1.3MQ不用的dllq可以删掉,获取更小的体U?<img src ="http://www.shnenglu.com/FongLuo/aggbug/214703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2017-02-27 08:45 <a href="http://www.shnenglu.com/FongLuo/archive/2017/02/27/214703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何一U钟从头构徏一?ASP.NET Core 中间?/title><link>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214702.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Mon, 27 Feb 2017 00:43:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214702.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214702.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214702.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214702.html</trackback:ping><description><![CDATA[<h3><a >如何一U钟从头构徏一?ASP.NET Core 中间?/a></h3> <h5>前言</h5> <blockquote> <p>其实C本没有\Q走的h多了Q也便成了\?-- 鲁迅</p></blockquote> <p>像上面鲁迅说的那样Q其实在我们开发中间g的过E中Q微软ƈ没有制定一些策略或者文档来U束你如何编写一个中间gE序Q?但是其中却存在者一些最佛_늚ҎQ大多数人来使用q种Ҏ来应用E序变得更加Ҏ理解q且易于l护Q这叫“\”,?017q_q叫套\?<p>在掌握了q些套\之后Q能够帮助你q速的搭徏一个中间g的基本框Ӟq且易于扩展和维护,下面我们来看看怎么样从头开始开发一个中间g吧?<p>如果你对 ASP.NET Core HTTP 道q不太清楚的话,下面q篇文章有助于你对其进行一个系l的了解Q?br><a >http://www.cnblogs.com/savorboard/p/aspnetcore-http-pipeline.html</a> <h5>Getting Started</h5> <p><strong>说明Q?/strong> q只是通常情况下,具体的情况还请用具体的套\?<h6>Setup 1 创徏扩展c?/h6> <p>如果你的中间仉要一个向 ASP.NET Core ?DI 容器中添加默认的一些服务的话,那么你就~写一个需要扩展类Q用来在 Startup.cs 中的 ConfigureServices 中注册服务?<p>举例Q?a >Microsoft.AspNetCore.ResponseCompression</a> q是一个用来压~请求内容的一个中间gQ那么它需要一个服务用来处理压~相关的东西Q所以它扩展?IServiceCollection q且d了自q Services?<p>整个中间件的核心代码q在这里,q里只是一个开始,那么有同学可能会问了Q什么情况下我们需要提前向一个DI里面注入我们中间仉要的服务呢? {案是,如果你不知道或者不定你需要什么样的服务的时候,跌此步骤,q入下一步,再等你需要的时候再回头来补上就是?<p>那么Q我们先看一下编写一个扩展Service的静态类应该怎么做? <p>首先Q新Z个以 <code>xxxServicesExtensions</code> 文g名结静态类Q用来编写注入DI的扩展方法?<p>cd立完成之后,需要向里面d内容了。通常情况下,中间件中 Service 的扩展方法都是以 <code>Addxxx(this IServiceCollection services)</code> 开头来命名。在q里有一个需要注意的地方是它的命名I间Q通常情况下我们?<strong><code>using Microsoft.AspNetCore.Builder</code></strong> q个命名I间?<p>然后Q方法里面就是需要注册的服务了。假设我们需要向里面注册一?<code>IResponseCompressionProvider</code> ?它的实现c?<code>ResponseCompressionProvider</code>Q那么最l的扩展Ҏ可能看v来是q样的?pre><code> using System; using Microsoft.AspNetCore.ResponseCompression; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Microsoft.AspNetCore.Builder { public static IServiceCollection AddResponseCompression(this IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } services.TryAddSingleton<IResponseCompressionProvider, ResponseCompressionProvider>(); return services; } } </code></pre> <h6>Setup 2 创徏配置c?/h6> <p>有的时候,用户在用我们编写的中间件的时候,我们需要向提供者提供一些配|项Q这些配|项?strong>中间件执行之?/strong>用来传递一些必要参C息或者是一些设|信息。D个我们熟悉例子,我们在?MVC 中间件的时候,可能会看C下写法:<pre><code> // Startup.cs public void ConfigureServices(IServiceCollection services) { var userDefinedFilter = new xxxFilter(); services.AddMvc(x => x.Filters.Add(userDefinedFilter)); } </code></pre> <p>可以看到Q用户可一些自定义?Filter 传入C间g的,然后中间件在q行的时候,我们传入?Filter q效了? <blockquote> <p><strong>注意</strong>Q中间g使用的配|项有两U添加方法,一U是d?<code>AddMiddleware(Action<xxxOptions> option)</code> 另外一U是 <code>UseMiddleware<>(Action<xxxOptions> option)</code>Q那么这两种有什么区别呢Q?br>那么Q前者Add中的配置一般情况下是中间执行之前就需要的一些信息,也就是说中间件的启动׃赖于q些配置,他放|于容器配置QAdd DI ServiceQ的时候添加进L加方便或者合适的时候用它Q另外一U(后者)是容器已l构建完毕,不需要依赖于容器提供的配|项可以使用此种方式?/p></blockquote> <p>同样的道理,当你自己Z的用L写一个中间g的时候,当你也需要用户可以自定义一些配|或者需要传入一些参数的时候,你也可以q么做。那到底怎么样做呢? 我们一h看看? <p>首先Q我们需要一?<code>xxxOptions</code> l尾的配|类Q用来配|我们中间g需要的一些配|项。我们还是以上面的压~中间g举例?pre><code>public class GzipCompressionProviderOptions : IOptions<GzipCompressionProviderOptions> { public CompressionLevel Level { get; set; } = CompressionLevel.Fastest; GzipCompressionProviderOptions IOptions<GzipCompressionProviderOptions>.Value => this; } </code></pre> <p>它其中配|了一个压~的{ <code>CompressionLevel</code> Q这是一个枚丑֭Dc?然后我们可以看到Q这个类它承了 <code>IOptions<out T></code> 接口Q这是一个知识点Q什么意思呢Q?<code>IOptions<out TOptions></code> ?ASP.NET Core 新的一个配|体p里面的一个接口,当你实现q个接口之后QASP.NET Core DI 容器提供了了一?<code>services.Configure<xxxOptions></code> q样的方法来让你把配|项注入到容器中Q当然你也可以将配置和 appsetting.json 中的配置兌hQ以便于配置一些在q行期可能需要变动信息。更多关?<code>IOptions<T></code> 的信息可以看 <a href="http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-3_7-configuration.html#使用选项和配|对?>q里的翻?/a>? <p>q个 <code>xxxOptions</code> c通常情况下会提供一些默认|也就是说当用户不提供q些参数的时候,你需要有一个合理的机制或者默认值来正常q行你的中间件? <p>假如你的配置Ҏ很多Q也是说还有进一步比较细化的配置Q那么你可以做一个封装,像MVC的OptionscMPq样能够l你的中间g提供更加合理的维护和扩展? <h6>Setup 3 核心中间?/h6> <p>接下来,是我们的核心代码类了,通常情况下会有一?<code>xxxMiddleware</code> l尾的类用来处理 HTTP 道h中的一些业务,q个cȝ构造函C已经可以使用在Setup1或者Setup2中向DI容器中注册的服务了? <p>按照U定QMiddleware cM需要有一?Invoke ҎQ用来处理中间g的核心业务,它的{֐如下Q?pre><code> public Task Invoke(HttpContext httpContext); </code></pre> <p>注意Q这是一个约定方法,q没有接口来U束它。在 <code>Invoke</code> Ҏ中,是中间g实现的核心代码?CZ如下Q?pre><code>public class xxxMiddleware { private readonly RequestDelegate _next; public xxxMiddleware(RequestDelegate next) { if (next == null) { throw new ArgumentNullException(nameof(next)); } _next = next; } public async Task Invoke(HttpContext context) { // ...... await _next(context); return; } } </code></pre> <p>?<code>xxxMiddleware</code> q个里面有一个构造函数参?<code>RequestDelegate</code>Q它是一个委托,代表的需要执行的下一个中间gQ通常情况下我们会把它攑ֈ我们业务代码的末? <h6>Setup 4 中间件扩展注?/h6> <blockquote> <p>中间件有三种注册ҎQRunQMapQUseQ,我们暂不考虑Run和MapQ因Z们只适用于很和的一些情?/p></blockquote> <p>完成了以上工作后Q接下来Q我们需要把中间件注册到我们?ASP.NET Core 的执行,q个时候我们需要一?<code>xxxBuilderExtensions</code> c,它也是一个静态类Q注意它的命名空间通常?br><strong><code>Microsoft.AspNetCore.Builder</code></strong>Q因个用户在使用我们的中间g的时候就不必再添加额外的命oI间Q依?Visual Studio 的智能提C就可以很快速的搜烦到。我们来看一下示例:<pre><code> using System; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Microsoft.AspNetCore.Builder { public static class xxxBuilderExtensions { public static IApplicationBuilder UseResponseCompression(this IApplicationBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } return builder.UseMiddleware<xxxMiddleware>(); } } } </code></pre> <h5>Yeoman 一U钟</h5> <p>有同学可能会说了Q这些套路既然是q样的,那么有没有什么代码生成工h帮我做这些事情呢Q答案是肯定的? <p>博主已经帮你们把工具做好了,它用的是当今最行的脚手架工具 npm 中的 Yeoman 。用它可以帮助你迅速的搭徏一个中间g解决Ҏ代码模板Q让你专注于业务开发? <p>我已l把q个模板上传?Yeoman 的仓库中Q你只需要按照如下命令就可以帮你自动生成一?ASP.NET Core 中间件解x案代码模板了Q当然单元测试也包含其中? <p>npm 工具的安装相信你自己可以的。下面是安装 Yeoman 工具和博ȝ模板工具?pre><code>// 安装 Yeoman 脚手架工? -g 命o为全局安装 npm install -g yo // 安装博主?Yeoman(ASP.NET Core Middleware)模板 npm install -g generator-aspnetcore-middleware</code></pre> <p>然后选择你需要生成解x案的文g夹,使用如下命o生成?pre><code> yo aspnetcore-middleware</code></pre> <p>注意Q生成的q程中需要输入你中间件的名称。按要求输入卛_? <p><img src="http://images2015.cnblogs.com/blog/250417/201702/250417-20170221160526820-573144934.png"> <p><img src="http://images2015.cnblogs.com/blog/250417/201702/250417-20170221160917335-163568868.png"> <h5>ȝ</h5> <p>本篇文章主要讲述了从头创Z?ASP.NET Core 的流E,q适用于大多数场合Q但是ƈ不代表所有的场合Q在实际开发的q程中还需要具体的考虑一下。接着博主提供了一个yo自动化脚手架模板用来快速创Z个中间g解决Ҏ? <p>如果你觉得这文章对你有帮助的话Q谢谢你的【推荐】? <p>如果你对 .NET Core 感兴可以关注我Q我会定期在博客分n关于 .NET Core 的学习心得? <hr> <blockquote> <p>本文地址Q?a >http://www.cnblogs.com/savorboard/p/generator-aspnetcore-middleware.html</a><br>作者博客:<a >Savorboard</a><br>Ƣ迎转蝲Q请在明显位|给出出处及链接</p></blockquote><img src ="http://www.shnenglu.com/FongLuo/aggbug/214702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2017-02-27 08:43 <a href="http://www.shnenglu.com/FongLuo/archive/2017/02/27/214702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻量却超?amp;mdash;&mdash;推荐几款好用的截囑ַ?/title><link>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214701.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Mon, 27 Feb 2017 00:41:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214701.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214701.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2017/02/27/214701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214701.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214701.html</trackback:ping><description><![CDATA[<h3><a >轻量却超强——推荐几Ƒ֥用的截图工具</a></h3> <blockquote> <p><a name="catalog"></a>阅读D(点击快速蟩转)Q?<p>1.<a >FScapture</a> <p>2.<a >Snipaste</a> <p>3.<a >Picpick</a> <p><a >相关文g下蝲及链?/a></p></blockquote> <h4><a name="FScapture"></a>1.FScaptureQ?a >q回目录</a>Q?/h4> <p>FScapture全名?FastStone CaptureQ它q有一Ƒօ弟Y件叫?<a >FastStoneImageViewer</a> 是一个图片浏览器Q有兴趣的可以下载体验?<p>博主自用Q文章里面的囑ְ是用它截的,其自带的囑փ查看/~辑器,功能强大Q可以满x囑֐Q对囑փ的各U标注、裁切调节等需求,其功能不亚于 Windows 的画图板Q做教程很是方便Q?<p>强大Q是一ƾ不可多得的多功能小工具Q兼有各U模式的截图、屏q录像、屏q取艌Ӏ屏q标Z及对囄的编辑功能! <p>yQ解压下来所有文件只?.66MBQ是不是很小呢? <p>快捷Q还可以配合自带“PrtScreen”快捷键使用 <p><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220223730366-807097851.png"> <p>滚动截图快捷?<h5>主要功能介绍</h5> <p><strong>截屏</strong><br>包括了全屏截取,当前zdH口截取Q截取选定区域Q多边Ş截取和截取滚动页面等Q基本上常用的都有了?strong>特别是滚动截?/strong>Q许多朋友ؓ了这个功能,不惜安装各种重量U的截屏软gQ甚臛_处下载各UY件的破解补丁?<p><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220223847585-1850524366.png" width="609" height="308"> <p>ȝ?<p><strong>囑փ览 / ~辑</strong><br>FS Captureq包括快速(览/~辑囑փQ的功能Q可以点MH口的“打开”图标快速打开一q图片,q行单的~放、裁切、旋转、加文字{轻量的操作。把|页中图片拖?FS Capture 的窗口上Q会快速打开囑փ览H口?<p><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220223956616-86033003.png" width="595" height="325"> <p>~辑界面 <p><strong><a name="FScapture-ScreenRcord"></a>视频录制</strong><br>7.0 版本开始具备的功能Q只需点击“视频录制”按钮,卛_选择一个录制范_可以选择“Window/Object”(H口或对象)、“Rectangular Area?矩Ş区域)、“Full Screen Without Taskbar?无Q务栏全屏)、“Full Screen?全屏){范围。选择范围后,卛_点击 Record 按钮Q非全屏范围Q还需要选择好一个区域,然后在弹出的H口点,几ZStart”按钮,卛_开始录制了Q最后可以按F11键停止?br>录制的过E如“视频录制”视频所C。录制的视频格式?WmvQ录制完成后Q会打开媒体播放器,q行播放?.3 版本开始,支持同时录制麦克风和扬声器的音频?<p><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220224218445-2017717268.png"> <p>屏幕录像 <h5><strong>功能介l?/strong></h5> <p>附带的其他两个小功能Q取色器和屏q放大镜。对抓取的图像,提供~放、旋转、剪切、颜色调整等功能。只要点炚w标,p随心抓取屏幕上的M东西Q拖放支持可以直接从pȝ、浏览器或其他程序中导入囄?<p><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220224258304-2146205876.png"> <p>功?<p><strong>屏幕取色?/strong><br>现在|上各式各样的取色器应该不少了,包括之前一直用的蓝色经典推荐的 ColorSPYQ?Firefox 下还有一个,专门的取色器扩展 ColorZillaQ这些都是很好的软g。但自从使用?FS Capture 之后Q这些我都很用C。原因很单,各种取色软g的功能,都大同小异,FS Capture 非常yQ既然有q样一个小软gQ能够包含取色器、屏q放大镜和截屏的功能Qؓ什么还要ؓq些功能Q而分开多个软g呢?FastStone Capture 的取色支?RGB、Dec ?Hex 三种格式的色|而且q有一个؜色器Q取到颜色之后,可以再编辑?<p><strong>屏幕攑֤?/strong><br>q确实是一个不错的功能Q特别是现在Q我们已l习惯用 DIV 来对面定位QDIV之间的对齐不像表格那样容易控Ӟ有时Z调整几个像素的偏差,不得不对着屏幕盯很久。有q样一个放大镜Q就方便多了。用时Q只需点击一下,FS Capture H口上的攑֤镜图标,鼠标变成一个放大镜的样子,然后在需要放大的地方Q按下右键就可以了,像手里真的拿着一个放大镜一栗可以设|放大倍率Q放大镜的尺寸,外观Q圆形,矩Ş以及圆角矩ŞQ以及是否^滑显C,?ESC 键或单击右键可退出放大镜?<p><strong>屏幕标尺</strong><br>FastStone Capture q有屏幕标尺功能Q?点击后会屏幕上会出现一个尺子,方便试屏幕某区域的像素大小?<p><strong>图像{换ؓ PDF 文g</strong> <p>囄可以直接转ؓPDF <p><strong>发送到 PowerPointQWordQFTP</strong> <p>截图后可一键发送到文档中正在编辑的位置Q非常方?<blockquote> <p>最后送一枚可能会用到的注册码Q?<p>用户名:1028<br>注册码:AXJQI-RWMDW-YBXZC-LOPHI <p>喜欢的话h持正版?/p></blockquote> <p><strong>相关文g下蝲及链接在文末提供</strong> <hr> <h4>2.<a name="Snipaste"></a>SnipasteQ?a >q回目录</a>Q?/h4> <p>Snipaste=Snip + Paste =截图 + 贴图?<h3>开发了三年的截囑ַP但不只是截图</h3> <p>它将 <strong>截图</strong> ?<strong>贴图 </strong>整合在了一P你可以将刚刚的截N意放|在桌面上而不需要打开囄览?<p><strong>Snipaste</strong> 的功能有点多Q首先这是一ƾ截囑ַP能够q行各种单、高U的截图Qƈ可以~辑截图。其ơ可以将截图、文字、图片、网c代码等剪脓板内的东西以囄的Ş式脓在屏q上?<p>我们q是从作者眼q݋q演示动画中来看看具体怎么玩吧Q?<blockquote> <p>有h问博主这些酷炫gif怎么录制的,q里有工h荐:<a >【录教程必备】推荐几Ƒֱq录制工P可录制GIFQ?/a></p></blockquote> <h5>截图</h5> <p>贴图Q即是囄成ؓ一个窗口ƈ|顶昄Q?<p>贴图H口可以旋{、羃放?strong>半透明</strong>、鼠标穿透: <p>以上功能也许q不新奇Q但<a >Snipaste</a>q有很多特别的地斏V?<p>_控制截图范围Q?<p>截图记录回放Q?<p>是的Q不只是回放全屏的截图,之前截图中的<strong>dq程</strong>也能重现?<p>取色Q不只是昄取色框,能复制当前像素点?RGB |Q?<p>取色之后Q还能把颜色贴出来(同时可得到各U颜色格式的转换Q: <p>普通的U文本,可以转换成图片: <p>HTML 格式的文本,也可以: <p>配合支持 HTML 格式复制的代码编辑器食用更佳Q?<p>囄~辑功能不止在截图时可用Q脓囄口亦可: <p>有马克笔、马赛克、高斯模p、橡皮擦功能Q?<p>文字可旋转: <p>当然Q截囑֒贴图q可以结合得更紧密?<p>截图后复制到剪脓杉K的图片,贴出来可以就在原来截囄位置Q?<p>也可以一步到位: <p>q有炫酷一点的Q在贴图H口播放 GIF Q?<p>不喜Ƣ默认的蓝色界面也没关系Q主题色M选,通知栏图标也随你定制Q?<p>换个截图遮罩的颜Ԍ <p><strong>相关文g下蝲及链接在文末提供</strong> <hr> <h4><a name="Picpick"></a>3.PicpickQ?a >q回目录</a>Q?/h4> <p>PicPick具备了截取全屏、活动窗口、指定区域、固定区域、手l区域功能,支持滚动截屏Q屏q取Ԍ支持双显C器Q具备白ѝ屏q标、直角坐标或极坐标显CZ量Q具备强大的囑փ~辑和标注功能?<p>截图可以保存到剪贴板、自动或手动命名的文Ӟpng/gif/jpg/bmpQ?<p><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220235529257-1743525456.png"> <h5><strong>软g特色</strong></h5> <p><strong><img alt="" src="http://images2015.cnblogs.com/blog/738404/201702/738404-20170220235446866-977223542.png" width="600"></strong> <p>1?strong>屏幕截图</strong>Q支持全屏、活动窗口、滚动窗?、窗口控制、区域?固定区域、手l?、重复捕捉; <p>2?strong>Ribbon界面囑փ~辑?/strong>Q?头?U条{绘囑ַ兗模p?锐化、?像素化?旋{?{Q框架等Ҏ?<p>3?strong>拾色器和调色?/strong>Q支持RGB、HTML?c + + 、Delphi{代码类型,Photoshop风格转换Q保存颜Ԍ <p>4?strong>屏幕攑֤镜、量角器、屏q坐标计?/strong>功能Qؓ你的演示文稿把屏q当作白板自q? <p>5、界面友好,直观、易用?快速便P支持所?Windows pȝ Q完兼?Windows7 ?Windows 8 Q,而且所有的功能都完全支持双屏幕环境? <p>6、多语言支持Q?0U语aQ,此处提供的文件精了语aQ只保留中文和英文语a?<p>7、Y件不更改M注册表内?Q不讉K到系l文件夹Q你可以Y件复制到便携式USBQ?<p>8、Y件已l集成注册信息,喜欢h持正?<p><strong>相关文g下蝲及链接在文末提供</strong> <hr> <h4><a name="flie-and-url"></a>相关文g下蝲及链接(<a >q回目录</a>Q?/h4> <blockquote> <h5>FScapture</h5> <p>官方主页Q?a >http://www.faststone.org/</a> <p>链接Qhttps://eyun.baidu.com/s/3hsBQhla 密码Qleftshine <h5>Snipaste</h5> <p>官方主页Q?a >https://www.snipaste.com/</a> <p>下蝲地址: <a >XP</a> / <a >X86</a> / <a >X64</a> <h5>Picpick</h5> <p>官方主页Q?a >www.<strong>picpick</strong>.org/</a> <p>官方下蝲Qhttp://ngwin.com/picpick/download <p>以上文g在百度云都有备䆾Q?<p>链接Qhttps://eyun.baidu.com/s/3hsBQhla 密码Qleftshine</p></blockquote> <p>参考文章: <p>http://bbs.chongbuluo.com/thread-29-1-1.html<br>http://www.shaoit.com/snipaste.html</p><img src ="http://www.shnenglu.com/FongLuo/aggbug/214701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2017-02-27 08:41 <a href="http://www.shnenglu.com/FongLuo/archive/2017/02/27/214701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AtomineerUtils爆破q程记录http://www.shnenglu.com/FongLuo/archive/2017/02/22/214692.htmlFongLuoFongLuoWed, 22 Feb 2017 04:39:00 GMThttp://www.shnenglu.com/FongLuo/archive/2017/02/22/214692.htmlhttp://www.shnenglu.com/FongLuo/comments/214692.htmlhttp://www.shnenglu.com/FongLuo/archive/2017/02/22/214692.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214692.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214692.htmlAtomineerUtils爆破q程记录

AtomineerUtils是国外的一Ƅ于生成源代码注释的一ƾVS插gQ官方网站:http://www.atomineerutils.com/products.php

通过链接Q可以看ƾ插件的功能十分强大Q不像GhostDoc那样Q只支持C#Q这ƾ插Ӟ支持C、C++、C++/CLI、C#、Java语言{,由此可以看出其强大,注释的风格可以灵z配|?

虽然他功能十分强大,但是׃是收费的软gQ所以当使用过30天后Q就无法再l适用了。虽然hg贵,只有40刀Q但是由于时间紧急,必须立刻使用他的功能Q所以没有时间去购买license?

那么能不能试着破解他呢Q或者l用。说到破解,我的水^也就只能研究一下未h?NetE序Q如果这个插件是用C++写的话,那么不好意思,破不了?

用Reflector试着打开Q发现能识别Q如下:

Atomineer版本

同时也可以看到这个版本号是:8.16.5174.40541。这是最新版本了?

既然?Net的DLLQ那么相Ҏ说就好说了,臛_和C++相比来说Q有希望了?

既然是VS的插Ӟ那么肯定要遵守VS的插件接口规范。(VS的插件接口不在本中介绍Q?

首先扑ֈ它的OnConnectҎ:

OnConnectҎ

然后从OnConnectҎ入手q行研究Q最l定位到q里Q?

Collapse

复制代码

internal static bool b(bool A_0, bool A_1 = false)
{
    bool flag = true;
    int num = (((DateTime.Today.Year - 2010) * 365) + DateTime.Today.DayOfYear) << 8;
    int num2 = 0;
    try
    {
        num2 = Convert.ToInt32(c(f, "0", string.Empty));
    }
    catch
    {
    }
    int num3 = (num - num2) >> 8;
    if (num3 > 19)
    {
        if (e[0][0] == 'I')
        {
            for (int i = 0; i < e.Length; i++)
            {
                StringBuilder builder = new StringBuilder();
                for (int j = 0; j < e[i].Length; j++)
                {
                    builder.Append((char) (e[i][j] ^ (16 | (j % 16))));
                }
                e[i] = builder.ToString();
            }
        }
        if (num3 > 29)
        {
            flag = false;
            Commands.f();
            if ((num3 == g) || A_1)
            {
                return false;
            }
            MessageBox.Show(e[0] + Environment.NewLine + Environment.NewLine + e[1] + Environment.NewLine + Environment.NewLine + e[2], "Atomineer Pro Documentation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else
        {
            if ((num3 == g) || !A_0)
            {
                return true;
            }
            string[] strArray2 = new string[] { e[3], (30 - num3).ToString(), e[4], Environment.NewLine, Environment.NewLine, e[5] };
            if (MessageBox.Show(string.Concat(strArray2), "Atomineer Pro Documentation", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) != DialogResult.Yes)
            {
                return true;
            }
        }
        k.h("t~e}xzws");
        g = num3;
    }
    return flag;
}

复制代码

Ҏ上面的逻辑Q只要不执行 num3 > 29的逻辑Qƈ且返回gؓtrue卛_Q可以做如下修改Q?

Collapse

bool flag = true;
...
int num3 = (num2 - num2) >> 8;

q样Qnum3{于0Q而且q回gؓtrue?

那么如何修改q些代码呢,ZReflector的Reflexil插gQ来修改IL代码Q然后另存ؓdll文g卛_?

如下Q是修改后的截图Q?

Atomineer破解? src=

q样Q整个插件就是被破解了Q可以无限期使用了?

FongLuo 2017-02-22 12:39 发表评论
]]>
MFC多文档MDI_&quot;打开文g&quot;默认后缀名修?Ҏ需要添?/title><link>http://www.shnenglu.com/FongLuo/archive/2017/02/13/214678.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Mon, 13 Feb 2017 05:03:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2017/02/13/214678.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214678.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2017/02/13/214678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214678.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214678.html</trackback:ping><description><![CDATA[<p>参考:<a >http://blog.csdn.net/segen_jaa/article/details/8489917</a> <p>应用背景Q?<p>我用的是MDI框架Q需要调用同事给的dllQ才能确定本E序解析何种格式的文件。如他给了dll1Qdll2Qdll3Qdll4Q后~分别?format1Q?format2Q?format3Q?format4。以后还可能会有Qdll5,format5Q,Qdll6,format6Q?<p>因此在MDI加蝲文档模板之前p获得全部后缀名,然后动态的传给MDI?<p>首先Q需要修Ҏ开文g的后~名。需要重载CMultiDocTemplateQ参考文章的后缀也是在主E序中写好的Q不是我惌的, <p>很简单,在承类中多加一个参?char *suffixQ?<p>具体实现如下Q?<p><b>[cpp]</b> <a >view plain</a> <a >copy</a> <ol> <li>#pragma once <li>#include "afxwin.h" <li> <li>class CMultiDocTemplateSuffixEx :   public CMultiDocTemplate   <li>{   <li>    CString m_strSuffix;   <li>public:   <li>    CMultiDocTemplateSuffixEx(char *suffix,UINT nIDResource, CRuntimeClass* pDocClass,   <li>        CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass):\   <li>        CMultiDocTemplate( nIDResource, pDocClass, pFrameClass, pViewClass )   <li>    {   <li>        m_strSuffix.Format("%s",suffix);   <li>    }   <li> <li>virtual BOOL GetDocString(CString& rString, enum DocStringIndex index) const <li>    {   <li>if(index == CDocTemplate::filterExt)   <li>        {   <li>            rString = "."+m_strSuffix;   <li>        }   <li>else if( index == CDocTemplate::fileNewName || index == CDocTemplate::filterName )   <li>        {   <li>            rString = m_strSuffix+"(*."+m_strSuffix+")";        }   <li>else <li>        {   <li>            __super::GetDocString(rString,index);   <li>        }   <li>return TRUE;   <li>    };   <li>};  </li></ol> <p>使用Q?<p><b>[cpp]</b> <a >view plain</a> <a >copy</a> <ol> <li>CMultiDocTemplate *pDocTemplate0;   <li>char *curSuffix[]={"format1","format2","format3"};   <li>for(int i=0; i<3; i++)   <li>    {   <li>        pDocTemplate0 = new CMultiDocTemplateSuffixEx   <li>            (curSuffix[i],IDR_MAINFRAME,   <li>            RUNTIME_CLASS(CTestDoc),   <li>            RUNTIME_CLASS(CChildFrm),   <li>            RUNTIME_CLASS(CTestView));   <li>        AddDocTemplate(pDocTemplate0);   <li> <li>    }   <li>}  </li></ol> <p><img alt="" src="http://img.blog.csdn.net/20130829160051781?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWVtZWFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"><img src ="http://www.shnenglu.com/FongLuo/aggbug/214678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2017-02-13 13:03 <a href="http://www.shnenglu.com/FongLuo/archive/2017/02/13/214678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PageHeapQ调试Heap问题的工?/title><link>http://www.shnenglu.com/FongLuo/archive/2017/02/03/214645.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Fri, 03 Feb 2017 08:35:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2017/02/03/214645.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214645.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2017/02/03/214645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214645.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214645.html</trackback:ping><description><![CDATA[<p>《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工兗本文主要讲了PageHeapQ调试Heap问题的工? <p>ADQ?a >http://www.cnblogs.com/lidabo/category/542683.html</a> <p>  <p><strong>2.4.2  PageHeapQ调试Heap问题的工?/strong> <p>q运的是QHeap Manager的确提供了主动检查错误的功能。只需要在注册表里面做对应的修改,操作pȝ׃Ҏ讄来改变Heap Manager的行为。Pageheap是用来配|该注册表的工具。关于heap的详l信息和原理请参考:<pre>How to use Pageheap.exe in Windows XP and Windows 2000<br><a >http://support.microsoft.com/kb/286470/en-us</a> </pre> <p>PageheapQGflag和后面介l的Application Verifier工具一P都是方便修改对应注册表的工具。如果不使用q两个工P直接修改注册表也可以辑ֈ一L效果?个工具里面Application Verifier是目前的LQGflag是老牌。除了heap问题外,q两个工兯可以修改其他的调试选项Q后面都有说明。Pageheap.exe工具主要针对heap问题Q用v来简单方ѝ目前gflag.exe包含在调试器的安装包中,Application Verifier可以单独下蝲安装。如果调试安装包中没有包含pageheap.exeQ可以从q里下蝲Q?<pre><a >http://www.heijoy.com/debugdoc/pageheap.zip</a><br><a >http://blogs.msdn.com/lixiong/attachment/2792912.ashx</a> </pre> <p><strong>单例子的多种情况</strong> <p>看几个简单的但是却很有意义的例子Q? <p>用release模式~译q行下面的代码:<pre> char *p=(char*)malloc(1024);<br>p[1024]=1; </pre> <p>q里往分配的空间多写一个字节。但是在release模式下运行,E序不会崩溃? <p>假设上面的代码编译成mytest.exeQ用下面的方法可以对mytest.exeȀzpageheapQ?pre>C:\Debuggers\pageheap>pageheap /enable mytest.exe /full </pre> <p>直接q行pageheap可以查看当前pageheap的激zȝ态:<pre>C:\Debuggers\pageheap>pageheap<br>mytest.exe: page heap enabled with flags (full traces ) </pre> <p>当激zpageheap后,重新q行一ơ上面的代码Q程序就崩溃了? <p>Q直接双击运行程序和在Windbg中用调试模式q行E序Q观察到的崩溃有差别。在Windbg中运行,pageheap会首先触发break point异常Q同时pageheapq会在调试器中输出额外的调试信息方便调试。) <p>上面的例子说明了pageheap能够让错误尽快暴露出来。接下来我们E微修改一下代码:<pre> char *p=(char*)malloc(1023);<br>p[1023]=1; </pre> <p>试试看,修改后的代码q会DE序崩溃吗? <p>Ҏ我的试Q分?023字节的情况下Q哪怕激zpageheapQ也不会崩溃。你能说明原因吗Q如果看不出来,可以查一下每ơmallocq回的地址的数|注意对这个数值在二进制上敏感一点,然后l合Heap Manager和pageheap的原理思考一下,看看有没有发现? <p>对于上面两种代码Q如果用debug模式~译Q激zpageheapQ程序会崩溃吗?Ҏ我的试Q无论是否激zpageheapQdebug模式都不会崩溃的。你能想到原因吗Q? <p>再来看下面一D代码:<pre> char *p=(char*)malloc(1023);<br>free(p);<br>free(p); </pre> <p>q里昄有double free的问题? <p>如果没有ȀzpageheapQ分别在debug和release模式下运行,Ҏ我的试Qdebug模式下会崩溃Qrelease模式下运行正常? <p>如果ȀzpageheapQ同样在debug/release模式下运行。根据我的测试,在两U模式下都会崩溃。如果细心观察,会发CU模式下Q崩溃后弹出的提C各自不同。你能想到原因吗Q? <p>如果有兴,你还可以试一下heap误用的其他几U情况,看看pageheap是不是都有帮助? <p><strong>Heap上的内存泄漏和内存碎?/strong> <p>从上面的例子Q可以很清楚地看到pageheap对于查这c问题的帮助。同时也可以看到Qpageheap无法保证查出所有潜在问题,比如分配1023个字节,但是?024个字节这U情c只有理解pageheap的工作原理,同时寚w题作认真的思考和试后,才会理解其中的差别? <p>除了Heap使用不当D崩溃外,q有一c问题是内存泄漏。内存泄漏是指随着E序的运行,内存消耗越来越多,最后发生内存不I或者整体性能下降。从代码上看Q这c问题是׃内存使用后没有及旉攑֯致的。这里的内存Q可以是VirtualAlloc分配的,也有可能是HeapAllocate分配的? <p>q里只讨论Heap相关的内存泄漏。检查内存泄漏是一个比较大的题目,W?章会作详l讨论? <p>举个例子Q客户开发一个cddE序。每ơ把盘片中所有内容写入内存,然后开始刻录。如果每ơ刻录完成后都忘记去释放分配的空_那么最多能够刻3张CD。因?张CDQ每一?00MBQ加在一起就?.8GBQ濒?GB的上限? <p>另外q有一U跟内存泄漏相关的问题,是内存碎片(FragmentationQ。内存碎片是指内存被分割成很多的块Q以至于很难扑ֈq箋的内存来满比较大的内存甌。导致内存碎片常见原因有两种Q一U是加蝲了过多DLLQ还有一U是块Heap的频J用? <p>DLL分割内存I间最常见的情冉|ASP.NET中的batch compilation没有打开Q导致每一个ASP.NET面都会被编译成一个单独的DLL文g。运行一D|间后Q就可以看到几千个DLL文g加蝲到进E中。一个极端的例子?000个DLL?GB内存q_分成5000份,D每一份的大小?00KB左右Q假设DLL本n只占?个字节)Q于是无法申请大?00KB的内存,哪怕ȝ内存q是接近2GB。对于这U情늚查很单,列一下当前进E中所有加载v来的DLL可以看出问题来? <p>对于块Heap的频J用导致的内存分片Q可以参考下面的解释Q?pre>Heap fragmentation is often caused by one of the following two reasons<br>1. Small heap memory blocks that are leaked (allocated but never freed) over time<br>2. Mixing long lived small allocations with short lived long allocations<br>Both of these reasons can prevent the NT heap manager from using free <br>memory efficiently since they are spread as small fragments that cannot <br>be used as a single large allocation </pre> <p>Z更好地理解上面的解释Q考虑q样的情c假讑ּ发h员设计了一个数据结构来描述一首歌Ԍ数据l构分成两部分,W一部分是歌曲的名字、作者和其他相关的描q性信息,W二部分是歌曲的二进制内宏V显然第一部分比第二部分小得多。假讄一部分长度1KBQ第二部?99KB。每处理一首歌需要调用两ơ内存分配函敎ͼ分别分配数据l构W一部分和第二部分需要的I间? <p>假设每次处理完成后,只释放了数据l构的第二部分,忘记释放W一部分Q这h处理一ơ,׃留下1?KB的数据块没有释放。程序长旉q行后,留下?KB数据块就会很多,虽然HeapManager的薄计信息中可能记录了有很多399KB的数据块可以分配Q但是如果要甌500KB的内存,׃因ؓ找不到连l的内存块而失败。对于内存碎片的调试Q可以参考最后的案例讨论。在Windows 2000上,可以用下面的Ҏ来缓解问题:<pre>The Windows XP Low Fragmentation Heap Algorithm <br>Feature Is Available for Windows 2000<br><a >http://support.microsoft.com/?id=816542</a> </pre> <p>关于 CLR上内存碎片的讨论和图文详解,请参考:<pre> .NET Memory usage - A restaurant analogy<br><a >http://blogs.msdn.com/tess/archive/2006/09/06/742568.aspx</a> </pre><img src ="http://www.shnenglu.com/FongLuo/aggbug/214645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2017-02-03 16:35 <a href="http://www.shnenglu.com/FongLuo/archive/2017/02/03/214645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows 7 SP1 ?Windows Server 2008 R2 SP1 升到RDP 8.0ȝhttp://www.shnenglu.com/FongLuo/archive/2017/01/19/214609.htmlFongLuoFongLuoThu, 19 Jan 2017 02:49:00 GMThttp://www.shnenglu.com/FongLuo/archive/2017/01/19/214609.htmlhttp://www.shnenglu.com/FongLuo/comments/214609.htmlhttp://www.shnenglu.com/FongLuo/archive/2017/01/19/214609.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214609.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214609.html原文传送门

    随着Windows 8 的发布,q程桌面q接协议QRDPQ也已经升?.0Q相对与RDP7.1QWindows 7 SP1?

Windows Server 2008 R2 SP1支持Q,在增强用户体验方面进行了很大的改q,例如Adaptive Graphic?

Intelligent Transport、Adaptive Network Auto Detect、DirectX 11 Support with vGPU{RemoteFX相关

功能Q在性能、易理性等斚w有很大提升?

    Z使Windows 7 SP1和Windows Server 2008 R2 SP1用户能够利用RDP8.0对远E桌面连接的改善Q微?

提供了相应的升包,?a >KB2592687Q可以点击链接进行下载和安装Q由于RDP8.0支持自动|络,在网l?

资源不佳的情况下Q例如广域网Q,可以采用UDP协议q行q程桌面q接信息的传递,从而降低对|络资源的要求,

因此在将RDP7.1升为RDP8.0之前Q先ZKB2574819升操作pȝQ之支持DTLSQDatagram Transport 

Layer SecurityQ,此升U包下蝲L击链接。(注意Q先安装KB2574819Q再安装KB2592687Q?

    升包括两个部分Q即客户端和q程桌面端,客户端是指要q接到远E桌面的计算机,q程桌面端是指要被连?

的计机Q物理机或虚拟机Q,当然客户端被其他计算接也变成了q程桌面端了:)。客L和远E桌面端升

q程相同Q升U完成后Q打开q程桌面q接客户端程序(mstsc.exeQ?右键点击左上角图表,选择“关于”菜单项Q?

打开如下囑֯话框Q?

昄“支持远E桌面协?.0",说明升成功。同Ӟ在远E连接客L的”体验“标{下Q”选择q接速度来优化性能“下?

列表中将出现”自动检连接质量“选择,说明启用了RemoteFX相关功能。在服务端启用RDP8.0中RemoteFX相关功能Q?

需要通过l策略相xӞ有些功能q需要Hyper-V支持Q如vGPUQ。打开l策略的方式是在命o行下执行”gpedit.msc?

命oQ显C本地组{略~辑器(如果在域理模式下,需要编辑相应的域组{略Q:

具体的位|在”计机配置\理模板\Windows lg\q程桌面服务\q程桌面会话L\q程会话环境?上图标出的即是相关的配置

,首先要配|”启用远E桌面协?.0“和”配|RemoteFX“,启用相关功能?

升和配|完成后Q即可用q行q接q程q接桌面Q如何验证是否启用了RDP8.0呢,具体Ҏ如下Q?

1、用RDP8.0客户端连接RDP8.0的远E桌面,q程q接栏上出现了连接质量图标(Q?

2、用RDP8.0客户端连接RDP7.1的远E桌面,q程q接栏上不会出现q接质量图标?

3、用RDP7.1客户端连接RDP7.1、RDP8.0的远E桌面,q程q接栏上均不会出现连接质量图标?

注意Q?

如果用升U到RDP8.0的客L去连接非RDP8.0的远E桌面,必须在远E桌面连接客LE序Qmstsc.exeQ的体验标签下,选择

”LANQ?0Mbps或更高)“选项Q如下图Q?

通过基本试QRDP8.0在视频播攄斚w效果q是不错的,希望MS再接再厉Q争取RDP过HDX协议Q?

FongLuo 2017-01-19 10:49 发表评论
]]>
C# C++ 语言互动资料http://www.shnenglu.com/FongLuo/archive/2016/12/24/214546.htmlFongLuoFongLuoSat, 24 Dec 2016 06:07:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/12/24/214546.htmlhttp://www.shnenglu.com/FongLuo/comments/214546.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/12/24/214546.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214546.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214546.html使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明

郎工作?/a>  C#分支Q?a title="http://blog.csdn.net/aoshilang2249/article/category/2444289" >http://blog.csdn.net/aoshilang2249/article/category/2444289

C#调用C++ q_调用P/Invoke 调用U定【一?/a>



FongLuo 2016-12-24 14:07 发表评论
]]>
C# 讉KUSB(HID)讑֤http://www.shnenglu.com/FongLuo/archive/2016/12/21/214528.htmlFongLuoFongLuoWed, 21 Dec 2016 05:36:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/12/21/214528.htmlhttp://www.shnenglu.com/FongLuo/comments/214528.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/12/21/214528.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214528.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214528.htmlhttp://www.cnblogs.com/viki117/archive/2009/09/08/1562311.html



FongLuo 2016-12-21 13:36 发表评论
]]>
开源的WeiFenLuo.winFormsUI.Docking布局控ghttp://www.shnenglu.com/FongLuo/archive/2016/12/08/214469.htmlFongLuoFongLuoThu, 08 Dec 2016 06:30:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/12/08/214469.htmlhttp://www.shnenglu.com/FongLuo/comments/214469.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/12/08/214469.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214469.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214469.html   布局控g"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控Ӟ 可以保存自定义的布局为XML文g,可以加蝲XML配置文g!

先Mark下,{以后用上再深入Q?

Q?Q:WeifenLuo.WinFormsUI.Docking学习 ?a >http://blog.csdn.net/gaoyunpeng/article/details/3873217

Q?Q:WeifenLuo.WinFormsUI.Docking 自动保存界面布局Q?http://www.cnblogs.com/zcshan/archive/2010/09/29/WeifenLuo.html

Q?Q:开源组件DockPanel Suite使用 Q?a >http://kb.cnblogs.com/a/2350244/

http://www.cnblogs.com/Microred/archive/2012/02/14/2350244.html#2348530

Q?Q:DockPanel Suite 判断H口已打开Q?a >http://www.cnblogs.com/stalwart/archive/2011/03/02/1968842.html

Q?Q?C# WinForm 技巧八Q界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar?使用

http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html

http://www.cnblogs.com/ice-river/p/3520986.html

      下蝲地址Q?a >http://download.csdn.net/download/luomingui/6291675

WeifenLuo.WinFormsUI.Docking.rar控g下蝲

?a >OutlookBar控g源码?

http://www.51aspx.com/downloadauth/outlookbarcontrol

(6)Q?WeiFenLuo.winFormsUI.Docking其实?开源组?font color="#0000ff">DockPanel SuiteQ?a >下蝲地址

Q?Q:UltraRDC    q程桌面应用Q用DockPanel做布局理?/p>

FongLuo 2016-12-08 14:30 发表评论
]]>
非托C++代码调用C#~写的dllҎhttp://www.shnenglu.com/FongLuo/archive/2016/12/08/214468.htmlFongLuoFongLuoThu, 08 Dec 2016 05:36:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/12/08/214468.htmlhttp://www.shnenglu.com/FongLuo/comments/214468.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/12/08/214468.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214468.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214468.html 

CLR VIA C#q本书里面的内容Q在|上好像很少关于q方面的内容Q脓出来以后留着看?

C#调用C++~写的dllQ一般都是直接用dllimportQ这个资料很多。C++调用C#~写的dllQ一般方法都是先用托C++C#的dllq行一ơ封装,然后由非托管C++调用装好的dll?

CLR VIA C#在讲寄宿和应用程序域的内ҎQ提供了一个非托管C++直接调用的方法。原理就是,在非托管代码中手动启动CLR加蝲应用E序域来q行托管的dllQ从而调用其中的Ҏ?

代码如下Q?

#include <Windows.h>
#include <MSCorEE.h>
#include <stdio.h>
#pragma comment(lib,"mscoree.lib")
int _tmain(int argc, _TCHAR* argv[])
{
ICLRRuntimeHost *pClrHost;
    HRESULT hr = CorBindToRuntimeEx(NULL,

    NULL,0,

    CLSID_CLRRuntimeHost,

    IID_ICLRRuntimeHost,

    (PVOID*)&pClrHost);

//启动CLR
    pClrHost->Start();
    DWORD retVal=0;

//dll加蝲到默认应用程序域中,q调用其中的Ҏ
    hr = pClrHost->ExecuteInDefaultAppDomain(L"test.dll",L"test.MyType",L"TestMethod",
        L"TestStringParam",&retVal);
    if(S_OK==hr)
        wprintf(L"Managed code returned %d\n",retVal);
    else
        wprintf(L"failed to call csharp dll.\n");
    getchar();
     return 0;
}

C#~写的test.dll如下Q?

namespace test
{
    class MyType
    {
        public static Int32 TestMethod(String s)
        {
            Console.WriteLine("Managed assembly: {0}",s);
            return s.Length;
        }
    }

}

代码输出Q?

Managed assembly: TestStringParam
Managed code returned 15

可以看到c++成功调用了test.DLL中的ҎQƈ且可以传入参数和接收q回倹{?

x入的了解Q可以看下面的内容:

http://msdn.microsoft.com/zh-cn/vstudio/9x0wh2z3.aspx



FongLuo 2016-12-08 13:36 发表评论
]]>
自己制作winhex的模?/title><link>http://www.shnenglu.com/FongLuo/archive/2016/11/30/214455.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Wed, 30 Nov 2016 08:09:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2016/11/30/214455.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214455.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2016/11/30/214455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214455.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214455.html</trackback:ping><description><![CDATA[<p><a >传送门</a> <p>  winhex有很多的官方模板Q可以在|上下蝲Q后~tplQƈ放至它的安装目录Q即可用。不q要是自p自己制作Q这才好玩,不是么?Q?<p>  打开模板理器,可以选中其中一个模板,下面有应用,有编辑,你点开~辑按钮Q就可以看到对应的模板源码。而你点开那个新徏按钮Q就可以自己写模板了Q最后保存到安装目录卛_。提醒一点,我是在记事本下写好粘贴到新徏后那个面板上的,因ؓ我发现有好些W号它不支持Q比如下划线、引LQmaybe是我自己没设|的原因Q不q,q不是重点,略过。写好后Q那个面板下有检查语法的按钮Q通过它可判断你的代码是否语法正确?<p>  闲话不多_下面Q我来讲解下模板~程的语法: <p><strong>模板头的常用关键字:</strong> <p>  1.template:声明模板的名?nbsp; egQtemplate "模板1" <p>  2.description:描述参数Q描q这个模板的用途?保存好后Q你可以在模板管理器里看C自定义的模板的名字,描述{信息?egQdescription "q个模板是用来。。? <p>  3.applies_to:参数可以是file/disk/RAM。指定该模板的适用对象时文件、磁盘还是内存。egQapplies_to disk <p>  4.fixed_start offset:模板的默认v始偏U量取决于光标停留的位置Q而这个关键字是来指定偏移量v始位|。egQfixed_start 0x040 <p>  5.sector-aligned:作用是指定模板从当前扇区的偏U?位置q行。无参数?<p>  6.requires offset:匚w数据Q若发现指定偏移量的位置的数据不匚wQ就会报错。注意:q里的偏U量是相对于模板起始偏移量计的。egQrequires 0x1fe "55aa" <p>  7.big-endian/little-endian:规定d的字节顺序,也就是^日说的小端机、大端机的区别,内存的数据存储方向不一栗无参数?<p>  8.hexadecimal:使模板中d的数据都以十六进制方式显C,octal为八q制Qdecimal为十q制。无参数?<p>  9.read-only/read-writeQ规定读取权限。无参数?<p>  10.multiple:作用是模板上出现左右键来让你可以选择d上一条或下一条记录,记录之间的跨度是该模板涉及的所有字节的长度。无参数?<p>  11.begin与end:之间的区域用于存攄序主qӀ?<p>  q里作下模板头知识ȝQ首先,模板的命名需要关键字template加引号完成。description参数可以补充描述。applies_to(RAM、file、disk)后面可以用于指定讉K对象的类型,使模杉K应当前工程的根本环境。fixed_start可以为模板指定v始偏U量。requires则制定更严格的模板运行条Ӟ要求模板作用范围内指定位|必d配指定数据。big-endian、hexadecimal、read-only{都是作用于昄输出的可选参数。头部关键字没有强制规定“出场顺序”,对引L要求也不严格。此外,模板可以用双斜杠d注释Q这是一个很好的~程习惯?<p>  注意Q数制属性关键字(hexadecimal{?、显C方向属性关键字(big-endian{?、读写属性关键字(read-only{?都可以插入begin与end之间Q用于时改变数据的属性,注意q种改变仅仅作用于紧随它们的数据cd声明语句Q而ƈ非全局?<p>  下面说下<strong>E序d里的常用关键?/strong>: <p>  1.int8:带符L8位整型,占用一字节Q范?128~127。egQint8 "w高" <p>  2.uint8:无符L8为整型,占用一字节Q范?~255。同bytecd?<p>  3.int16:带符L16位整型,占用2字节?<p>  不赘qCQ与前面q些cM的还有:uint16, int32, uint32, int64, int24, uint24?<p>  4.unit_flex:cM于c语言里位域的概念。其语法是:unit_flex "要解释的? "title" <p>  例如Qunit_flex "8,7,6,5,4,3,2,1,0" "permissions",表示d一?2位无W号整数q解释其?位?<p>  注意Q尽unit_flex所表示的数据长度可能小?个字节,但每ơ读取仍然按?个字节来计算Q故而要特别注意位域的实际长度。比如,我们要解释一?6位整型数值的?位和?2位,应当首先解释?位,q时光标Ud4字节。unit_flex "3,2,1,0" "flexlow" 因ؓq有数据要从?6位整型数g提取Q故回退4个字节。move -4 ?解释?2位。unit_flex "15,14,13,12,11,10,9,8,7,6,5,4" "flexhigh"  ׃16位整型数值只占用两个字节Q而实际光标移?字节Q故需要回退2字节Qmove -2,  否则会占用下一个数据的I间?<p>  5.binary:每次d一个字节,q解释ؓ二进制样式?<p>  6.char:d一个字节,ascii码显C。也可以用char[len]d字符数组(字符?Qlen表示长度?<p>  7.char16:d两个字节QUnicode字符昄?<p>  8.string:ascii字符丌Ӏ语法ؓstring len "title" <p>  9.string16:unicode字符丌Ӏ?<p>  10.zstring:表示不管长度d一个ascii字符Ԍ遇到"NULL"时结束。zstring16为其Unicode版本?<p>  11.hex:表示直接d字节而且q不其解释ZQ何数据类型,直接昄?<p>  12.floatQ占?字节QQҎQ同c语言?<p>  13.real:占用6字节QQҎ?<p>  14.double:占用8字节QQҎ?<p>  15.longdouble:占用10字节QQҎ?<p>  16.Loop:实现单的循环。中括号中可以存攑ָ量表C@环次敎ͼ也可以直接引用前面数据类型的title?<p>  17.IfEqual:单的if语句Q判断是否相{。比较的对象可以是常量,也可以是前面数据cd的title?<p>  egQ?pre>byte "学号" IfEqual "学号" 09 uint "成W" Else uint "l点? EndIf</pre> <p>  18.~:占位W。一般用于@环内部数据类型的标题中,以Ş成数字递增的效果。常怸numbering配合使用。numbering可以用来指定占位W的初始倹{? <p>  egQ? <p><a ><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif"></a><pre>uint32 "文g数目" numbering 1 { string16 255 "~h? }["文g数目"]<br><br>//占位W从1开始,循环代入string16 255 "~h?中?/pre> <p><a ><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif"></a> <p>  下面是随手写的一个例子,很凑合的说~ <p>  源码Q? <p><a ><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif"></a><pre>template "the dbr of ntfs of jiu" description "......" applies_to disk sector-aligned requires 0x03 "4e54465320" requires 0x1f0 "55aa" little-endian read-write multiple begin hex 3 "jmp" char[8] "OEM" uint16 "bytes per sector" uint8 "sectors per cluster" uint16 "unused" hex 3 "zero" hex 10 "unused" int64 "total sectors" int64 "mft" int64 "mftmirr" byte "file record" hex 100 "......" end</pre> <p><a ><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif"></a> <p>  自定义模板的应用Q? <p><img alt="" src="http://images.cnitblog.com/blog2015/504727/201504/280047080528790.png"><img src ="http://www.shnenglu.com/FongLuo/aggbug/214455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2016-11-30 16:09 <a href="http://www.shnenglu.com/FongLuo/archive/2016/11/30/214455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Boost学习之格式化输出--Formathttp://www.shnenglu.com/FongLuo/archive/2016/10/20/214349.htmlFongLuoFongLuoThu, 20 Oct 2016 06:01:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/10/20/214349.htmlhttp://www.shnenglu.com/FongLuo/comments/214349.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/10/20/214349.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214349.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214349.html原文地址

boost::formatcL供了cMC语言?printf'功能的格式化输出能力Q当然功能更强大?

所需头文?
#include <boost/format.hpp>
CZ代码:
    #include <iostream>
    #include <string>
    #include <boost/format.hpp>
    
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    // 使用%序号%的方式给出指C符Q?后面?q接对应的数据?/span>
        cout << boost::format("writing %1%,  x=%2% : %3%-th try") % "toto" % 40.23 % 50 << endl;
    // 输出:writing toto,  x=40.23 : 50-th try
    
    // 可以延迟使用Q顺序不必一?/span>
        boost::format fmter("%2% %1%");
        fmter % 36;
        fmter % 77;
        cout << fmter << endl;
    // 输出:77 36
    
    // 可重?/span>
        fmter % 12;
        fmter % 24;
        cout << fmter << endl;
    // 输出:24 12
    
    // 可直接{成字W串
        std::string s = fmter.str();
        std::string s2 = str( boost::format("%2% %1% %2% %1%")%"World"%"Hello");
    
        cout << s << endl << s2 << endl;
    // 输出:
    // 24 12
    // Hello World Hello World
    
    // 可以使用printf指示W?/span>
        cout << boost::format("%3.1f - %.2f%%") % 10.0 % 12.5  << endl;
    // 输出:10.0 - 12.50%
    
    // printf指示W里使用N$指定使用W几个参?/span>
        cout << boost::format("%2$3.1f - %1$.2f%%") % 10.0 % 12.5  << endl;
    // 输出:12.5 - 10.00%
    
        cin.get();
    return 0;
    }
boost::format里的指示W语法大致有三大c?
l承q强化自printf的格式化字符?/h6>    形式?font color="#0000ff">:[ N$ ] [ flags ] [ width ] [ . precision ] type-char
    N$可选,指定使用WN个参敎ͼ注意Q要么所有指C符都加此参敎ͼ要么都不加)
    接下来的参数可以参数printf的指C符Q只是format为其中的flagsd?_'?='标志Q用于指出内部对齐和居中寚w?
讄打印规则Q它是printf参数的一个补充,只是Z更直观点?/h6>    形式?font color="#0000ff">:%|spec|
    ?%|1$+5|表示昄W一个参敎ͼ昄正负P宽度?
单的位置标记
    形式?font color="#0000ff">:%N%
    单地声明昄WN个参敎ͼ优点是比较直观而且不用指定cd?

FongLuo 2016-10-20 14:01 发表评论
]]>
Windows下如何编译用boosthttp://www.shnenglu.com/FongLuo/archive/2016/10/20/214347.htmlFongLuoFongLuoThu, 20 Oct 2016 00:20:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/10/20/214347.htmlhttp://www.shnenglu.com/FongLuo/comments/214347.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/10/20/214347.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214347.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214347.html原文地址 原文中存在一些错误,q且使用的是1.49?也许?.49本n的问题,未深I?

最q在看boost::asio的东西,所以必要用到boost库,下蝲了一个,所以与大家分n下boost库的~译Ҏ?

本方法应该适用于boost的Q何版本,应该适用于Q何C++~译?VC6.0可能Ҏ些库不支持,因ؓ模板的原?Q因为Linux没怎么用,所以只是分享下windows上的~译Ҏ?

1.下蝲boost

从boost官网( http://www.boost.org )上下载最新的boost版本Q现在最新是1.62版本Q解压到自定义目?Z后面好说明,q里假设为boost_1_62_0)

2.~译安装boost

boost_1_62_0目录下会有一个bootstrap.bat批处理,可以直接点击它,会在 boost_1_62_0\tools\build\v2 文g夹下生成两个exeQb2.exe和bjam.exeQƈ且自动拷贝这两个文g到boost_1_62_0目录下。从cmd命oq入到boost_1_62_0路径下,如果你不知道如何~译Q可以输入–help查看命o行帮助?

输入如下命oQ?pre>b2 toolset=msvc-10.0 --layout=versioned architecture=x86 address-model=64 link=static variant=debug,release threading=multi runtime-link=static --without-python --without-mpi --without-wave --without-graph --without-math --without-serialization stage

使用不同的命令对你用boost也会产生很大的媄响,因ؓCPU速度和硬盘现在都已经不是大问题了Q所以本例中选择了除了不必要库的完全~译Q当然了Q你旉够,盘够,可以完全~译

b2 --toolset=msvc-10.0 --build-type=complete

解释完以上的命o后,再说完全~译的后果?

1.toolsetQ表C编译器工具Q我安装的是VS2010Q所以是msvc-10.0;
                    具体的版本对应关p,可以查看boost_1_62_0\tools\build\src\tools\msvc.jam中的# Version aliases?br>                    # Version aliases.
                    .version-alias-6 = 6.0 ;
                    .version-alias-6.5 = 6.0 ;
                    .version-alias-7 = 7.0 ;
                    .version-alias-8 = 8.0 ;
                    .version-alias-9 = 9.0 ;
                    .version-alias-10 = 10.0 ;
                    .version-alias-11 = 11.0 ;
                    .version-alias-12 = 12.0 ;
                    .version-alias-14 = 14.0 ;

2.architectureQ表C架构,也就是你的CPU架构Qx86,x64Q因为我安装的是win7 32位,所以用了x86的架?

3.instruction-setQ表C指令集Q依然是8086指o?

4.address-modelQ表C地址长度?2?

5.linkQ表C生成动?静态链接库Q动态链接库是sharedQ静态链接库是staticQ一般都会编译成静态库Q因为给出程序的时候打包boost的库会非常庞?

6.variantQ表C生成的Debug或者release版本Q一般情况下会两U版本都会编译出来的

7.threadingQ表C单/多线E编译,一般我们的E序都会用到多线E,所以选择了multi

8.runtime-linkQ表C动?静态链接C/C++q行时库(C/C++ Runtime)Q我们选择了动态链?

9.without/withQ表CZ需要编?需要编译哪些库Q一些自׃用的库可以无需~译

10.stage/installQstage表示只生成库文g(DLL和Lib)Qinstallq会生成包含头文件的include目录Q推荐用stageQ因为boost_1_62_0\boost中就是boost库完整的头文Ӟ所以无需再拷贝一份出来。编译出来的库会攑֜stage文g夹中

q样一份完整的boost库就生成了,剩下是直接使用到项目中了?

上面的编译指令可以存成一个批处理Q这栯入到boost_1_62_0目录后,只需要执行批处理可以了Q更方便?

(现在看到Z么不推荐使用完全~译了吧Q因为完全编译会~译出各U组合的所有情况,需要占用更多的I间和时_所以徏议各位朋友还是放弃了?

使用的时候可以直接包含到目中,然后在对应的文g中包含相应的头文件即可,例如

#include "boost/asio.hpp"

假如您还嫌上面你的方法太ȝ了,可以使用一个懒汉专用小工具boost setupQ下载地址?a >http://www.boostpro.com/download/

q个工具可以帮你下蝲q编译好Q你只需要点击鼠标配|下可以了Q一步步操作如下图:

boost_1_47_setup_1
boost_1_47_setup_2
boost_1_47_setup_3
boost_1_47_setup_4
最后点击Install之后׃~译q安装到你指定的目录Q这个够方便?不过q个是下载后~译Q可能会有点?。最后一步就不演CZQ因为我q不想用q种Ҏ?

以上是boost在windows环境下的安装~译ҎQboost库可以说是现在最强大的C++cd了,你想要的M功能都有Q我认ؓ每一个C/C++E序员都应该学习的?

FongLuo 2016-10-20 08:20 发表评论
]]>
Chrome插g被禁用怎么?Chrome安装非官Ҏ展教E?/title><link>http://www.shnenglu.com/FongLuo/archive/2016/10/08/214318.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Sat, 08 Oct 2016 00:44:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2016/10/08/214318.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/214318.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2016/10/08/214318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/214318.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/214318.html</trackback:ping><description><![CDATA[<h3><a >http://www.veryhuo.com</a> <a >烈火|?/a> 2016-09-10</h3> <p>大家都知?a ><b>Chrome</b></a>安装插g一般要通过Chrome<a ><b>应用商店</b></a>在线安装Q如果要ȝ安装扩展E序p下蝲以?crx”ؓ后缀名的文gQ然后打开扩展E序面Q将 .crx 文g拖放?Chrome H口上安装。但是自?Chrome 33 发布以后QGoogle Z安全考虑开始禁止用离U安装的插gQ一拖进d被直接禁用了Q还无法手动启用。所以很多“优化版”、“破解版”的扩展E序都无法直接安装用了?<p>那么如何安装chrome非官Ҏ展呢Q最火Y件站为您ȝ了两U方法,q两U方法可以离U安装扩展程序ƈ且可以不?Chrome 屏蔽Q以下是具体ҎQ?<h5>一、通过开发者模式加载扩展程?/h5> <p>1. 下载的 .crx 文g后缀名改?.zip; <p>2. 修改后的文件解压到一个新的文件夹Q名字随意,最好是扩展E序名的英文或拼韻I便于区分; <p>3. 打开 ChromeQ?转到扩展E序面Q?扑ֈ右上角的“开发者模式”,N? <p>4. 点击W二行的“加载正在开发的扩展E序…?选择刚刚解压到的文g夹,点击定; <p>5. 安装完成Q设|好可以用了?<p>6. 每次重新打开 Chrome 时会提醒是否用以开发者模式运行的扩展E序Q点d消,可以一直用了?<p>注意Q这个扩展程序解压到的文件夹是不能删除的Q删除后该扩展程序将无法l箋使用?<h5>二、在l策略添加扩展程序白名单</h5> <p>1. 下蝲 Chromel策略管理模李쀜chrome.adm?<a >下蝲地址</a>); <p>2. Win+R 打开q行Q输?gpedit.mscQ确? <p>3. 依次展开 本地计算机策?> 计算机配|?> 理模板Q在“管理模李쀝上叛_Q选择“添?删除模板? <p><img border="0" alt="" src="http://pic.veryhuo.com/allimg/1609/102Aa2S-0.png"> <p>4. 点击dQ找到第1步下载的“chrome.adm”,打开Q关闭“添?删除模板”窗? <p>5. 依次展开 本地计算机策?> 计算机配|?> 理模板 > l典理模板(ADM) > Google > Google Chrome > 扩展E序Q双d侧的“配|扩展程序安装白名单? <p><img border="0" alt="" src="http://pic.veryhuo.com/allimg/1609/102A93118-1.png"> <p>6. 炚w左边第二项“已启用”,点击下面的“显C”, <p><img border="0" alt="" src="http://pic.veryhuo.com/allimg/1609/102A96303-2.png"> <p>7. 打开 ChromeQ将下蝲?.crx 文g拖放?Chrome 扩展E序面安装; <p>8. 扑ֈ右上角的“开发者模式”,N,复制刚安装的扩展?ID; <p><img border="0" alt="" src="http://pic.veryhuo.com/allimg/1609/102A93B5-3.png"> <p>9. _脓到第6步弹出的H口中,定; <p><img border="0" alt="" src="http://pic.veryhuo.com/allimg/1609/102A94394-4.png"> <h5>三、编辑ȝ</h5> <p>虽然两种Ҏ目前都可以正怋用,但是相对来说Q第一U方法由于每ơ重新打开 Chrome 都会弹出询问H口Q比较麻?W二U虽然应用的Ҏ比第一U麻烦,但是只需要安装扩展的时候应用一ơ,以后打开览器就不会再有提示了,所以还是推荐用第二种Ҏ?<img src ="http://www.shnenglu.com/FongLuo/aggbug/214318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2016-10-08 08:44 <a href="http://www.shnenglu.com/FongLuo/archive/2016/10/08/214318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在离U环境中使用.NET Corehttp://www.shnenglu.com/FongLuo/archive/2016/07/19/214001.htmlFongLuoFongLuoTue, 19 Jul 2016 06:11:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/07/19/214001.htmlhttp://www.shnenglu.com/FongLuo/comments/214001.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/07/19/214001.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/214001.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/214001.html原文地址Q?a title="http://www.cnblogs.com/durow/p/5681331.html" >http://www.cnblogs.com/durow/p/5681331.html

 

0x00 写在开?/h4>

很早开始就?NET Core比较xQ一改微软之前给人的印象Q变得轻量、开源、跨q_。最q打试着在工作中使用。但工作是在与互联网完全隔离的网l中q行的,因此开始了在离U环境中部v.NET Core开发环境的试。ȝ来说q是比较蛋疼的,几乎每个阶段都遇C问题。不q还好最后搞定了Q写下这博客做个记录,同时分nl有cM需求的童鞋。以下都是亲有效?

0x01安装VS2015 Update3

开?NET Core可以使用VS2015和VS Code。在q里先讨论VS2015的情况,毕竟如果在Windows下开发,VS2015功能上还是要强太多?NET Core Web Tools必须要VS2015 Update3以上Q也是首先要在内网安装VS2015 Update3。我刚开始的方式是从官网下蝲光盘镜像Q然后安装。但q样大多数情况下是无法安装的。会提示“安装包丢失或损坏”,之前装VS2015时可以选择跌文gQ装完后也能用(臛_WPF没问题)Q但从VS2015 Update2开始,有些安装包无法选择跌Q只能退出安装?

之所以提C安装包损坏Q是因ؓpȝ中缺?

microsoft root certificate authority 2010

microsoft root certificate authority 2011

q两个证书,D安装包验证无法通过Q所以认为损坏?

解决ҎQ?

1.找一台正常装了VS2015的电脑,Win+R打开q行Q输入certmgr.mscQ打开证书理界面?

2.在受信Q的根证书颁发机构中找到缺的两项。按照默认方式导出(不知道ؓ什么我q台电脑上有重复Q?

3.证书复制到内|,打开证书理界面Q然后在受信ȝ根证书办法机构中导入证书?

q样可以正常安装VS2015 Update3了?

此外q要说明的是除了下蝲VS2015 Update3的光盘镜像外Q还可以ȝ安装文gQ把安装文g考到ȝ环境下安装。具体方法是Q在官方下蝲面中下载Web安装E序

https://www.visualstudio.com/downloads/download-visual-studio-vs

以community版本ZQ在安装E序所在目录打开命o行窗口,输入Qvs_community_CHS.exe /layout q样可以把文g都离U下来,貌似比光盘镜像内容要多一些?

0x02 安装DotNetCore.1.0.0-VS2015Tools.Preview2

q个可以用与VS2015同样的方式离U,下蝲在线安装E序后,在安装程序所在目录打开命o行窗口输入:

DotNetCore.1.0.0-VS2015Tools.Preview2.exe /layout

卛_把安装文件下载到相同目录下packages文g多wQ其中也包含?Net Core SDK。比较惨的是我的内网电脑装了某国产杀毒YӞ每次一q行安装提C我恶意操作然后中止安装Q我又没权限x杀毒YӞ所以只好在一个一个包手动装的Q不q好在可以正怋用。因为离U环境L~~那的,如果安装q程中出C么问题,只要查看错误logQ然后解军_可以?

0x03 如何使用nuget

.NET Core的包依赖全都使用nugetQ在U环境下自然是方便,ȝ环境下就E麻烦一点了。在安装VS2015 Update3Ӟ.NET Core所需的官方依赖包都已l安装在了(默认安装QC:\Program Files (x86)\Microsoft SDKs\NuGetPackages目录下,在nuget理中也可以看到q是默认的离U包目录Q我们需要什么样的包只要把它复制到这个目录,在nuget理中的E序包源选择ȝ的源卛_?

那么怎么获得ȝ安装包呢Q我们在用nuget安装E序包时会在C:\Users\{你的用户名}\.nuget\packages目录q行~存Q只要找到缓存的包复制到ȝ环境Q放到nugetȝ目录卛_?

另外q有一U方式就是在内网架设nuget服务Q这个也十分ҎQ?

http://edi.wang/Post/2012/12/15/setup-private-nuget-server

阿_王这网文章比较详细Q可以参考。考虑到要用的.NET Core比较斎ͼ我用的最新版的NugetServer是可以用的,其它版本的没试。服务架讑֥了在nuget理中添加新的包源就可以了?

q种方式同样可以d其它目Q例如WPFQ的包依赖?

0x04 使用VS Code开?/h4>

除了VS外也可以使用VS Code开?NET CoreQ我的方式是在能联网的电脑上下蝲VS CodeQ然后装一堆需要的插gQ插仉装在了C:\Users\{你的用户名}\.vscode\extensions目录下,只要把这个目录打包考到ȝ环境中,解压到相同目录下p用了?

另外用VS Code开发在dotnet restore旉要加-s参数指明包源Qdotnet restore -s 包目录。或者在目的根目录dnuget.config文g

此文件可在github上下载: https://github.com/aspnet/Home/blob/dev/samples/latest/HelloMvc/NuGet.Config

xml version="1.0" encoding="utf-8"?><configuration>
  <packageSources>
    <clear />
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" />
    <add key="NuGetorg" value="https://nuget.org/api/v2/" />
  packageSources>configuration>

在packageSources中添加自q包源?

0x05 写在最?/h4>

整个q程q是׃一些时间的Q中途有几次很郁闷不x了。但实在很想在工作环境中?NET Core做点东西试试Q幸好最l搞定了。想想看q是有些激动的?

FongLuo 2016-07-19 14:11 发表评论
]]>USB Tracehttp://www.shnenglu.com/FongLuo/archive/2016/05/25/213579.htmlFongLuoFongLuoWed, 25 May 2016 01:17:00 GMThttp://www.shnenglu.com/FongLuo/archive/2016/05/25/213579.htmlhttp://www.shnenglu.com/FongLuo/comments/213579.htmlhttp://www.shnenglu.com/FongLuo/archive/2016/05/25/213579.html#Feedback0http://www.shnenglu.com/FongLuo/comments/commentRss/213579.htmlhttp://www.shnenglu.com/FongLuo/services/trackbacks/213579.html最q公司牛人推荐了一套微软的工具Q?br />
下面的链接是微Y提供的usb trace工具Q可以跟t和分析windows下面QusbL驱动的所有日志,可以帮助分析讑֤不上盘的原因?div>可以试用一下?br />
https://msdn.microsoft.com/en-us/library/windows/hardware/dn741264(v=vs.85).aspx

据说可以看到整个枚Dq程。有旉得研I下?/div>

FongLuo 2016-05-25 09:17 发表评论
]]>
d的空?/title><link>http://www.shnenglu.com/FongLuo/archive/2009/08/31/94920.html</link><dc:creator>FongLuo</dc:creator><author>FongLuo</author><pubDate>Mon, 31 Aug 2009 14:23:00 GMT</pubDate><guid>http://www.shnenglu.com/FongLuo/archive/2009/08/31/94920.html</guid><wfw:comment>http://www.shnenglu.com/FongLuo/comments/94920.html</wfw:comment><comments>http://www.shnenglu.com/FongLuo/archive/2009/08/31/94920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/FongLuo/comments/commentRss/94920.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/FongLuo/services/trackbacks/94920.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 新細明體;"><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"><font color="#3333ff" size="3">d的空?/font></font></font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"><font size="3"><span lang="EN-US"><font face="Times New Roman">---</font></span><span style="font-family: 新細明體;">摘錄?/span><span lang="EN-US"><span><font face="Times New Roman">  </font></span></span><span style="font-family: 新細明體;"><a ><font color="#000099" size="3">奉家的曔R部落?/font></a></span><span lang="EN-US"><span><font face="Times New Roman">  </font></span></span><span style="font-family: 新細明體;">作者佚?/span></font></font></font></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"> </font></font></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"><font size="3"><font color="#009900"><span style="font-family: 新細明體;">相當感h的一文?/span><font face="Times New Roman"> </font></font></font><span lang="EN-US"><br></span><font size="3"><font color="#009900"><span style="font-family: 新細明體;">希望你我能更加珍惜自?/span><font face="Times New Roman"> </font></font></font><span lang="EN-US"><br></span><span style="font-family: 新細明體;"><font color="#009900" size="3">Z你摯愛的家h……………</font></span><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br> <br></font></span><span style="font-family: 新細明體;">? 的妻子因為意外事故離開我w邊已經四年了,我想Q妻子留下不會做M家事的我和孩子,她的心有何等難過呢?我也因為無法兼顧父母雙親的角色而感到挫折。有 一天我Z出差Q清晨趕出門Q無法將孩子打點好就得離開家Q正巧前一天有剩下的飯Q我׃蒸蛋Q向還沒有睡醒的孩子交代一Ԍ出門M?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">Z照顧好孩子飲食三的事,我也? 力把自己的工作做好。有一天晚上回到家Q我只是很簡短地和孩子打個招|因n體疲累,不想吃晚,脫掉西裝之後q接往床上wZ。就在那個時候,砰的 一Ԍ紅色的湯汁跟泡麵瞬時弄髒了床單和被單Q原來有麵在被!這小子真是的Q說時遲那時快,我即時拿h跑出去Q往正玩著玩L兒子的屁股就 打,因為我實在是太生氣了Q所以不停地打他。但在這個時候,他邊啜泣邊說了一D話Q我停了下來?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">兒子告訴我說Q「飯鍋裡的飯早上已經 吃完了,晚餐在幼E園吃了Q但是到了晚上,爸爸還不回來Q我在I櫃的抽屜扑ֈ了c可是我惛_爸爸說不能亂動瓦斯爐Q所以我打開洗澡的水龍頭,? 熱水泡了泡麵Q一個自己吃Q另一個想留爸爸吃。因為怕麉|掉,所以我把它放在棉被Q等你回來。可是因為我正在玩向朋友借來的玩P所以忘了跟爸爸 。?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">我不惌兒子看到我在淚Q所以衝? z手間,水龍頭打開Q大聲地哭。過了一陣子之後Q我打v_來,一面哄著兒子,一面也在他屁股上擦藥,讓他上床睡覺。當我清理好泡麵弄髒的床單和被 後,打開兒子的房門一看,發現他仍舊發出哭泣聲Q手裡還拿著媽媽的照片。我把頭靠在戉K站了a׃Q看著這一q?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">自從在一q前發生這g事之後,我為了扮演好媽媽的角Ԍ更加用心地去照顧他。現</span><span style="font-family: 新細明體;">在兒子快七歲了,不久後就要從q稚園畢業,進入國小讀書。慶q的是,兒子在這段時間毫無陰媄Q很開朗地成镗?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">在不久前,我再一ơ打孩子Q因為幼 E園來電pQ兒子沒有去學校Q我心覺得很不安,所以早退回家Q在整個社區大聲地喊他的名字,L遍尋不著。後來在文具店的門口看見他站在ȝ的前 面,於是我很生氣Q又開始一直打他。兒子並沒有說出M的解釋,只說了聲不赗後來我才知道,原來剛好是幼E園要邀請媽媽去看才藝表演的日子?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">發生這些事的q֤後,兒子回家說,他在q稚園裡怺寫字Q從此他E常關在自己的房間不出來,很認真地寫字。我看到兒子這個樣子,惛_d在天國也一定會因為看到他這樣而微W,我就無法忍住淚水?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">時間很快Q又過了一q_C冬天Q街 頭上都在播放著聖誕節的歌Ԍ我的兒子d闖了一個禍。我正要下班的時候,接到一通社區郵局的電話,說我兒子把一E沒有寫地址的信Q惡作劇地放在郵{? 每年Cq底Q正是郵局最忙碌的時候,所以這對他們造成很大的困擾。雖然我已決定不再打孩子Q但在急忙回家後Q叫了兒子來Q我</span><font face="Times New Roman"> </font><span style="font-family: 新細明體;">又忍不住痛打他一頓。兒子這一ơ只是說他做錯了Q卻沒有出M理由。我把他推到一個角落,不管了,自個兒跑到郵局領回那一E惡作劇的信。我把信丟到他眼前說Q「你ZD這樣惡作劇?」兒子哭著回{說Q「這些信是我要寄媽媽的。?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">當時我的眼眶紅了起來Q心裡很Ȁ動, 但是因為在兒子面前,所以我盡量隱忍住沒有表珑և來。我接著問他Q「那|Zgơ寄這麼多信呢?」兒子回{說Q「以前我要把信投進去的時候,因為個兒 太矮Q所以沒辦法投入Q但是最q我再去늭時,已經搆得CQ所以我把以前沒有寄的Q一ơ全部都投進入了。?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">我聽了以後,心中一片茫Ӟ不知道該孩子說什D。過了不久以後,我就跟他說:「媽媽現在在天上Q以後你寫完信,把信燒了Q就能送到天國厅R」等孩子睡著之後Q我到外面燒了那些信。我很好奇到底孩子想跟媽媽說些什|所以讀了其中的qְ信。而當中有一信攪動了我的心?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">親愛的媽媽:</span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br></font></span><span style="font-family: 新細明體;">? 很想念你Q媽媽,今天在幼E園有才藝表演,但是因為我沒有媽媽,所以沒有去參加Q我也沒有告a爸爸,怕爸爸會惛_媽媽。爸爸到處去找我Q但我為了讓爸爸? 到我很開心的樣子Q所以故意坐在電動玩具面前,雖然爸爸||Q但是我到最後也沒有告訴他原因。媽媽,我每天都看到爸爸因為惛_媽媽而哭泣,我想爸爸也跟? 一樣,很想念媽媽吧Q但是,媽,我現在已E記不清楚你的臉。媽媽,請你讓我在夢中,再一ơ能夠看C的臉Q好嗎?聽說把想늚人的照片攑֜懯睡覺Q就? 夢到那個h。可是,媽媽Q為什g沒有出現在我的夢裡呢Q?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">讀完這封信以後,我就開始嚎啕大哭。到底什麼時候,我才能填補妻子的IZ呢?</span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;"><font color="#3333ff">i已E結婚的奛_事:</font></span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"><font color="#3333ff"> <br></font><br></font></span><span style="font-family: 新細明體;"><font color="#009900">不要加太多班Q工作做不完Q一直加班也不見得有用,請務必要照顧自己的n體,才可以好好疼惜妳的小寶貝?/font></span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;"><font color="#3333ff">i已E結婚的男同事:</font></span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"><font color="#3333ff"> <br></font><br></font></span><font color="#009900"><span style="font-family: 新細明體;">不要喝太多酒Q不要抽太多煙,請問我們的生意Q我們的客戶Q有比我們的w體重要嗎?</span><font face="Times New Roman"> </font><span style="font-family: 新細明體;">一定要想一惻I有沒有辦法做到客人非我們不行,我們的差異化在哪Q我們是否真的懂客h的心Q這比拼命喝酒Q還重要Q請務必要照自qw體Q才可以好好疼惜妳的寶貝和你的愛h?/span></font></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><font color="#3333ff"><span style="font-family: 新細明體;">i?/span><span style="font-family: 新細明體;">還沒有結婚的男同事和奛_事:</span></font></font><font size="3"><span lang="EN-US"><font face="Times New Roman"><font color="#3333ff"> <br></font><br></font></span><font color="#ff0000"><span style="font-family: 新細明體;">其實是從愛自己的n體開?/span><span lang="EN-US"><font face="Times New Roman"> --</font></span><span style="font-family: 新細明體;">Q蔣勻Iw體學Q?/span></font></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><font color="#ff0000"><span style="font-family: 新細明體;">?/span><span lang="EN-US"><font face="Times New Roman">/</font></span><span style="font-family: 新細明體;">你?/span><font face="Times New Roman"> </font><span style="font-family: 新細明體;">一定要很自在,工作才能做的好,如果工作讓你</span><span lang="EN-US"><font face="Times New Roman">/</font></span><span style="font-family: 新細明體;">妛_的心情做的很辛苦,也不要傷害了?/span><span lang="EN-US"><font face="Times New Roman"> /</font></span><span style="font-family: 新細明體;">你們的w體?/span></font><font face="Times New Roman"> </font></font></font></font></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"><br></font></font></span><span style="font-family: 新細明體;"><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"><font size="3">看完內容Q心覺得好酸.Q.</font></font></font></span><font color="#000000" face="Verdana" size="2"><font face="Verdana" size="2"><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">我最q常自問Q你的收入,是預支健康及i盡腦汁換來的嗎Q!</span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">因為每個h拼命工作到頭來,常忘了工作的初衷是什|</span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">是想讓家人及自己生活過的更好Q想得到名?還是惛_到利Q?/span></font><font size="3"><span lang="EN-US"><font face="Times New Roman"> <br><br></font></span><span style="font-family: 新細明體;">但沒了「健店,家h會開心嗎Q自己又真的得到名或利了嗎?</span></font><span lang="EN-US"><br><br></span><font size="3"><span style="font-family: 新細明體;">我覺得「開心生zL最重要的」,時時關心w邊的hQ?/span><font face="Times New Roman"> </font><span style="font-family: 新細明體;">不要惌{我以後有錢時再如何如何Q因為,我們都不知道下一U會</span><span style="font-family: 新細明體;">發生什gQ?/span></font></font></font></p><img src ="http://www.shnenglu.com/FongLuo/aggbug/94920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/FongLuo/" target="_blank">FongLuo</a> 2009-08-31 22:23 <a href="http://www.shnenglu.com/FongLuo/archive/2009/08/31/94920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.029canon.cn" target="_blank">ɫۺϾþþþר </a>| <a href="http://www.taobaomaiba.cn" target="_blank">ƷëٸAVѾþ</a>| <a href="http://www.radowatchessale.cn" target="_blank">þþþAVۺϲҰ</a>| <a href="http://www.wkbxdlr.cn" target="_blank">AƬٸþ</a>| <a href="http://www.hdtnet.cn" target="_blank">þþƷ99Ӱ</a>| <a href="http://www.qvnb.cn" target="_blank">޹СƵƷþþ</a>| <a href="http://www.vyfx.cn" target="_blank">99þóĻ</a>| <a href="http://www.ksxhsd.cn" target="_blank">޵һAVվþþƷ˵AV</a>| <a href="http://www.ebianlian.cn" target="_blank">ŷ޾þav</a>| <a href="http://www.hhyskj.com.cn" target="_blank">޹Ʒ˾þ</a>| <a href="http://www.shuffley.cn" target="_blank">ŷ츾XXXXԾþþ</a>| <a href="http://www.kygg.net.cn" target="_blank">ݺݾƷþþĻ </a>| <a href="http://www.uxgj.cn" target="_blank">þþƷˬӰ</a>| <a href="http://www.lanqie.com.cn" target="_blank">91Ʒ91þþþþ</a>| <a href="http://www.fvnnv.cn" target="_blank">޾Ʒþһ</a>| <a href="http://www.bqtao.cn" target="_blank">ݹ97þ÷ѹۿ</a>| <a href="http://www.126yi.cn" target="_blank">þþƷ99Ӱ</a>| <a href="http://www.wnpigs.cn" target="_blank">ǾþþƷ</a>| <a href="http://www.jsbcly.cn" target="_blank">ŷ޹Ʒþþþ</a>| <a href="http://www.lawyer010.cn" target="_blank">seguiþùƷ</a>| <a href="http://www.enjoa.cn" target="_blank">þ91Ʒ91þû</a>| <a href="http://www.pc345.cn" target="_blank">þ޾ƷĻ</a>| <a href="http://www.sdlove.cn" target="_blank">þþþþþƷþþþ</a>| <a href="http://www.pcb0.cn" target="_blank">˾þô߽鶹</a>| <a href="http://www.sskmk.cn" target="_blank">Ʒþþþþù</a>| <a href="http://www.51keepruning.cn" target="_blank">97Ʒþ찴Ħ</a>| <a href="http://www.qp576.cn" target="_blank">þþһƷ99þþƷ66 </a>| <a href="http://www.uyfw.cn" target="_blank">99þùۺϾƷ</a>| <a href="http://www.zkduo.cn" target="_blank">þþþþëƬѿ</a>| <a href="http://www.hifistudio.cn" target="_blank">ɫݺȷӰþ</a>| <a href="http://www.hhyskj.com.cn" target="_blank">þþƷa޹v岻</a>| <a href="http://www.vrfx.cn" target="_blank">þþþseɫ͵͵޾Ʒav</a>| <a href="http://www.erbp.cn" target="_blank">޹뾫ƷŮ˾þþò</a>| <a href="http://www.keyboo.cn" target="_blank">޾ҹþþþþ</a>| <a href="http://www.bethesdagroup.cn" target="_blank">ԭۺϾþô˾Ʒ</a>| <a href="http://www.16pk8.cn" target="_blank">þøݾƷԴվ</a>| <a href="http://www.567uu.cn" target="_blank">www.þ.com</a>| <a href="http://www.1u11.cn" target="_blank">һձþþ</a>| <a href="http://www.tobeok.cn" target="_blank">þùӾƷŮ</a>| <a href="http://www.dszixun.cn" target="_blank">99þþƷһѿ</a>| <a href="http://www.97hh.cn" target="_blank">ĻƷѾþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>