侯捷stl源码剖析注释之42 sgi-stl-slist

侯捷stl源码剖析注释之42 sgi-stl-slist
侯捷stl源码剖析注释之42 sgi-stl-slist

完整列表 The Annotated STL Sources 1

G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_slist.h 完整列表

/*

* Copyright (c) 1997

* Silicon Graphics Computer Systems, Inc.

*

* Permission to use, copy, modify, distribute and sell this software

* and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and

* that both that copyright notice and this permission notice appear

* in supporting documentation. Silicon Graphics makes no

* representations about the suitability of this software for any

* purpose. It is provided "as is" without express or implied warranty. *

*/

/* NOTE: This is an internal header file, included by other STL headers. * You should not attempt to use it directly.

*/

#ifndef __SGI_STL_INTERNAL_SLIST_H

#define __SGI_STL_INTERNAL_SLIST_H

__STL_BEGIN_NAMESPACE

#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) #pragma set woff 1174

#endif

// 單向串列的節點基本結構

struct __slist_node_base

{

__slist_node_base* next ;

};

// 全域函式:已知某一節點,安插新節點於其後。

inline __slist_node_base* __slist_make_link (__slist_node_base* prev_node, __slist_node_base* new_node)

{

// 令 new 節點的下一節點為prev 節點的下一節點

new_node->next = prev_node->next;

prev_node->next = new_node; // 令 prev 節點的下一節點指向new 節點

return new_node;

}

// 全域函式:找出某一節點的前一個節點。

inline __slist_node_base* __slist_previous (__slist_node_base* head,

const __slist_node_base* node)

{

完整列表

The Annotated STL Sources 2 while (head && head->next != node) // 在單向串列中,只能採用循序搜尋法

head = head->next;

return head;

}

// 全域函式:找出某一節點的前一個節點。const 版。

inline const __slist_node_base* __slist_previous (const __slist_node_base* head, const __slist_node_base* node) {

while (head && head->next != node) // 在單向串列中,只能採用循序搜尋法

head = head->next;

return head;

}

// 全域函式:

inline void __slist_splice_after (__slist_node_base* pos,

__slist_node_base* before_first,

__slist_node_base* before_last)

{

if (pos != before_first && pos != before_last) {

__slist_node_base* first = before_first->next;

__slist_node_base* after = pos->next;

before_first->next = before_last->next;

pos->next = first;

before_last->next = after;

}

}

// 全域函式:

inline __slist_node_base* __slist_reverse (__slist_node_base* node)

{

__slist_node_base* result = node;

node = node->next;

result->next = 0;

while(node) {

__slist_node_base* next = node->next;

node->next = result;

result = node;

node = next;

}

return result;

}

// 單向串列的節點結構

template

struct __slist_node : public __slist_node_base

{

T data;

};

完整列表 The Annotated STL Sources 3

// 單向串列的迭代器基本結構

struct __slist_iterator_base

{

typedef size_t size_type ;

typedef ptrdiff_t difference_type ;

typedef forward_iterator_tag iterator_category ; // 注意,是單向

__slist_node_base* node ; // 指向節點基本結構

__slist_iterator_base (__slist_node_base* x) : node (x) {}

void incr () { node = node->next ; } // 前進一個節點

bool operator==(const __slist_iterator_base& x) const {

return node == x.node ;

}

bool operator!=(const __slist_iterator_base& x) const {

return node != x.node ;

}

};

// 單向串列的迭代器結構

template

struct __slist_iterator : public __slist_iterator_base

{

typedef __slist_iterator iterator ;

typedef __slist_iterator const_iterator ;

typedef __slist_iterator self ;

typedef T value_type ;

typedef Ptr pointer ;

typedef Ref reference ;

typedef __slist_node list_node ;

__slist_iterator (list_node* x ) : __slist_iterator_base(x ) {}

// 呼叫 slist::end() 時會造成 __slist_iterator(0),於是喚起上述函式。

__slist_iterator () : __slist_iterator_base(0) {}

__slist_iterator (const iterator& x ) : __slist_iterator_base(x.node ) {}

reference operator*() const { return ((list_node*) node)->data ; }

#ifndef __SGI_STL_NO_ARROW_OPERATOR

pointer operator->() const { return &(operator*()); }

#endif /* __SGI_STL_NO_ARROW_OPERATOR */

self& operator++()

{

incr (); // 前進一個節點

return *this;

完整列表

The Annotated STL Sources 4 }

self operator++(int)

{

self tmp = *this;

incr(); // 前進一個節點

return tmp;

}

// 注意,沒有實作 operator--,因為這是一個 forward iterator

// 注意,沒有實作 operator==。於是將使用 __slist_iterator_base::operator==。

// 換句話說兩個 __slist_iterator 的比較,其實就是其底層的兩個 __slist_iterator_base // 的比較,而也就是比較其內的 __slist_node_base 指標是否相等。

};

#if n def __STL_CLASS_PARTIAL_SPECIALIZATION

inline ptrdiff_t*

distance_type(const __slist_iterator_base&)

{

return 0;

}

inline forward_iterator_tag

iterator_category(const __slist_iterator_base&)

{

return forward_iterator_tag();

}

template

inline T*

value_type(const __slist_iterator&) {

return 0;

}

#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */

// 全域函式:單向串列的大小(元素個數)

inline size_t __slist_size (__slist_node_base* node)

{

size_t result = 0;

for ( ; node != 0; node = node->next)

++result; // 累計

return result;

}

// 單向串列

template

class slist

{

完整列表 The Annotated STL Sources 5

public:

typedef T value_type ;

typedef value_type* pointer ;

typedef const value_type* const_pointer ;

typedef value_type& reference ;

typedef const value_type& const_reference ;

typedef size_t size_type ;

typedef ptrdiff_t difference_type ;

typedef __slist_iterator iterator ;

typedef __slist_iterator const_iterator ;

private:

typedef __slist_node list_node ;

typedef __slist_node_base list_node_base ;

typedef __slist_iterator_base iterator_base ;

typedef simple_alloc list_node_allocator ;

static list_node* create_node (const value_type& x) {

list_node* node = list_node_allocator::allocate (); // 配置空間

__STL_TRY {

construct (&node->data, x); // 建構元素

node->next = 0;

}

__STL_UNWIND(list_node_allocator::deallocate(node));

return node;

}

static void destroy_node (list_node* node) {

destroy (&node->data); // 將元素解構

list_node_allocator::deallocate (node); // 釋還空間

}

void fill_initialize (size_type n, const value_type& x) {

head.next = 0;

__STL_TRY {

_insert_after_fill(&head, n, x);

}

__STL_UNWIND(clear());

}

#ifdef __STL_MEMBER_TEMPLATES

template

void range_initialize (InputIterator first, InputIterator last) {

head.next = 0;

__STL_TRY {

_insert_after_range(&head, first, last);

}

__STL_UNWIND(clear());

完整列表

The Annotated STL Sources 6 }

#else /* __STL_MEMBER_TEMPLATES */

void range_initialize (const value_type* first, const value_type* last) { head.next = 0;

__STL_TRY {

_insert_after_range(&head, first, last);

}

__STL_UNWIND(clear());

}

void range_initialize (const_iterator first, const_iterator last) {

head.next = 0;

__STL_TRY {

_insert_after_range(&head, first, last);

}

__STL_UNWIND(clear());

}

#endif /* __STL_MEMBER_TEMPLATES */

private:

list_node_base head ; // 頭部。注意,它不是指標,是實物。

public:

slist () { head.next = 0; }

slist (size_type n, const value_type& x) { fill_initialize (n, x); }

slist (int n, const value_type& x) { fill_initialize (n, x); }

slist (long n, const value_type& x) { fill_initialize (n, x); }

explicit slist (size_type n) { fill_initialize (n, value_type()); }

#ifdef __STL_MEMBER_TEMPLATES

template

slist (InputIterator first, InputIterator last) {

range_initialize (first, last);

}

#else /* __STL_MEMBER_TEMPLATES */

slist (const_iterator first, const_iterator last) {

range_initialize (first, last);

}

slist (const value_type* first, const value_type* last) {

range_initialize(first, last);

}

#endif /* __STL_MEMBER_TEMPLATES */

slist (const slist& L) { range_initialize(L.begin(), L.end()); }

slist& operator= (const slist& L);

~slist () { clear(); }

完整列表 The Annotated STL Sources 7

public:

iterator begin () { return iterator((list_node*)head.next ); }

const_iterator begin () const { return const_iterator((list_node*)head.next );}

iterator end () { return iterator(0); }

const_iterator end () const { return const_iterator(0); }

size_type size () const { return __slist_size (head.next ); }

size_type max_size () const { return size_type(-1); }

bool empty () const { return head.next == 0; }

// 兩個 slist 互換:只要將 head 交換互指即可。

void swap (slist& L)

{

list_node_base* tmp = head.next;

head.next = L.head.next;

L.head.next = tmp;

}

public:

friend bool operator== __STL_NULL_TMPL_ARGS(const slist& L1, const slist& L2);

public:

// 取頭部元素

reference front () { return ((list_node*) head.next )->data ; }

const_reference front () const { return ((list_node*) head.next )->data ; }

// 從頭部安插元素(新元素成為 slist 的第一個元素)

void push_front (const value_type& x) {

__slist_make_link (&head, create_node (x));

}

// 注意,沒有 push_back()

// 從頭部取走元素(刪除之)。修改 head 。

void pop_front () {

list_node* node = (list_node*) head.next;

head.next = node->next;

destroy_node (node);

}

iterator previous (const_iterator pos) {

return iterator((list_node*) __slist_previous (&head, pos.node));

完整列表

The Annotated STL Sources 8 }

const_iterator previous (const_iterator pos) const {

return const_iterator((list_node*) __slist_previous (&head, pos.node)); }

private:

list_node* _insert_after (list_node_base* pos, const value_type& x) { return (list_node*) (__slist_make_link (pos, create_node (x)));

}

void _insert_after_fill (list_node_base* pos,

size_type n, const value_type& x) {

for (size_type i = 0; i < n; ++i)

pos = __slist_make_link (pos, create_node(x));

}

#ifdef __STL_MEMBER_TEMPLATES

template

void _insert_after_range(list_node_base* pos, InIter first, InIter last) { while (first != last) {

pos = __slist_make_link(pos, create_node(*first));

++first;

}

}

#else /* __STL_MEMBER_TEMPLATES */

void _insert_after_range(list_node_base* pos,

const_iterator first, const_iterator last) {

while (first != last) {

pos = __slist_make_link(pos, create_node(*first));

++first;

}

}

void _insert_after_range(list_node_base* pos,

const value_type* first, const value_type* last) { while (first != last) {

pos = __slist_make_link(pos, create_node(*first));

++first;

}

}

#endif /* __STL_MEMBER_TEMPLATES */

// 刪除 pos 的下一個元素,並傳回新的下一個元素。

list_node_base* erase_after (list_node_base* pos) {

list_node* next = (list_node*) (pos->next); // 下一個元素

list_node_base* next_next = next->next; // 下下一個元素

pos->next = next_next; // 串接

destroy_node (next); // 刪除

return next_next; // 傳回

}

完整列表 The Annotated STL Sources 9

list_node_base* erase_after (list_node_base* before_first,

list_node_base* last_node) {

list_node* cur = (list_node*) (before_first->next);

while (cur != last_node) {

list_node* tmp = cur;

cur = (list_node*) cur->next;

destroy_node(tmp);

}

before_first->next = last_node;

return last_node;

}

public:

iterator insert_after (iterator pos, const value_type& x) {

return iterator(_insert_after (pos.node, x));

}

iterator insert_after (iterator pos) {

return insert_after(pos, value_type());

}

void insert_after (iterator pos, size_type n, const value_type& x) {

_insert_after_fill(pos.node, n, x);

}

void insert_after (iterator pos, int n, const value_type& x) {

_insert_after_fill(pos.node, (size_type) n, x);

}

void insert_after (iterator pos, long n, const value_type& x) {

_insert_after_fill(pos.node, (size_type) n, x);

}

#ifdef __STL_MEMBER_TEMPLATES

template

void insert_after (iterator pos, InIter first, InIter last) {

_insert_after_range(pos.node, first, last);

}

#else /* __STL_MEMBER_TEMPLATES */

void insert_after (iterator pos, const_iterator first, const_iterator last) { _insert_after_range(pos.node, first, last);

}

void insert_after(iterator pos,

const value_type* first, const value_type* last) {

_insert_after_range(pos.node, first, last);

}

#endif /* __STL_MEMBER_TEMPLATES */

完整列表

The Annotated STL Sources 10 iterator insert (iterator pos, const value_type& x) {

return iterator(_insert_after (__slist_previous (&head, pos.node), x)); }

iterator insert (iterator pos) {

return iterator(_insert_after (__slist_previous (&head, pos.node),

value_type()));

}

void insert (iterator pos, size_type n, const value_type& x) {

_insert_after_fill(__slist_previous(&head, pos.node), n, x);

}

void insert (iterator pos, int n, const value_type& x) {

_insert_after_fill(__slist_previous(&head, pos.node), (size_type) n, x); }

void insert (iterator pos, long n, const value_type& x) {

_insert_after_fill(__slist_previous(&head, pos.node), (size_type) n, x); }

#ifdef __STL_MEMBER_TEMPLATES

template

void insert (iterator pos, InIter first, InIter last) {

_insert_after_range(__slist_previous(&head, pos.node), first, last); }

#else /* __STL_MEMBER_TEMPLATES */

void insert (iterator pos, const_iterator first, const_iterator last) { _insert_after_range(__slist_previous(&head, pos.node), first, last); }

void insert (iterator pos, const value_type* first, const value_type* last) { _insert_after_range(__slist_previous(&head, pos.node), first, last); }

#endif /* __STL_MEMBER_TEMPLATES */

public:

iterator erase_after (iterator pos) {

return iterator((list_node*)erase_after(pos.node));

}

iterator erase_after (iterator before_first, iterator last) {

return iterator((list_node*)erase_after(before_first.node, last.node)); }

iterator erase (iterator pos) {

return (list_node*) erase_after(__slist_previous(&head, pos.node)); }

iterator erase (iterator first, iterator last) {

return (list_node*) erase_after(__slist_previous(&head, first.node), last.node);

}

完整列表 The Annotated STL Sources 11

void resize (size_type new_size, const T& x);

void resize (size_type new_size) { resize(new_size, T()); }

void clear () { erase_after(&head, 0); }

public:

// Moves the range [before_first + 1, before_last + 1) to *this,

// inserting it immediately after pos. This is constant time.

void splice_after (iterator pos,

iterator before_first, iterator before_last)

{

if (before_first != before_last)

__slist_splice_after(pos.node, before_first.node, before_last.node); }

// Moves the element that follows prev to *this, inserting it immediately // after pos. This is constant time.

void splice_after (iterator pos, iterator prev)

{

__slist_splice_after(pos.node, prev.node, prev.node->next);

}

// Linear in distance(begin(), pos), and linear in L.size().

void splice (iterator pos, slist& L) {

if (L.head.next)

__slist_splice_after(__slist_previous(&head, pos.node),

&L.head,

__slist_previous(&L.head, 0));

}

// Linear in distance(begin(), pos), and in distance(L.begin(), i).

void splice (iterator pos, slist& L, iterator i) {

__slist_splice_after(__slist_previous(&head, pos.node),

__slist_previous(&L.head, i.node),

i.node);

}

// Linear in distance(begin(), pos), in distance(L.begin(), first),

// and in distance(first, last).

void splice (iterator pos, slist& L, iterator first, iterator last)

{

if (first != last)

__slist_splice_after(__slist_previous(&head, pos.node),

__slist_previous(&L.head, first.node),

__slist_previous(first.node, last.node));

}

public:

完整列表

The Annotated STL Sources 12 void reverse () { if (head.next) head.next = __slist_reverse(head.next); }

void remove (const T& val);

void unique ();

void merge (slist& L);

void sort ();

#ifdef __STL_MEMBER_TEMPLATES

template void remove_if (Predicate pred);

template void unique (BinaryPredicate pred);

template void merge (slist&, StrictWeakOrdering); template void sort (StrictWeakOrdering comp); #endif /* __STL_MEMBER_TEMPLATES */

};

template

slist& slist::operator=(const slist& L)

{

if (&L != this) {

list_node_base* p1 = &head;

list_node* n1 = (list_node*) head.next;

const list_node* n2 = (const list_node*) L.head.next;

while (n1 && n2) {

n1->data = n2->data;

p1 = n1;

n1 = (list_node*) n1->next;

n2 = (const list_node*) n2->next;

}

if (n2 == 0)

erase_after(p1, 0);

else

_insert_after_range(p1,

const_iterator((list_node*)n2), const_iterator(0)); }

return *this;

}

template

bool operator==(const slist& L1, const slist& L2)

{

typedef typename slist::list_node list_node;

list_node* n1 = (list_node*) L1.head.next;

list_node* n2 = (list_node*) L2.head.next;

while (n1 && n2 && n1->data == n2->data) {

n1 = (list_node*) n1->next;

n2 = (list_node*) n2->next;

}

return n1 == 0 && n2 == 0;

}

完整列表 The Annotated STL Sources 13

template

inline bool operator<(const slist& L1, const slist& L2) {

return lexicographical_compare(L1.begin(), L1.end(), L2.begin(), L2.end()); }

#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER

template

inline void swap (slist& x, slist& y) {

x.swap(y);

}

#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */

template

void slist::resize (size_type len, const T& x)

{

list_node_base* cur = &head;

while (cur->next != 0 && len > 0) {

--len;

cur = cur->next;

}

if (cur->next)

erase_after(cur, 0);

else

_insert_after_fill(cur, len, x);

}

template

void slist::remove (const T& val)

{

list_node_base* cur = &head;

while (cur && cur->next) {

if (((list_node*) cur->next)->data == val)

erase_after(cur);

else

cur = cur->next;

}

}

template

void slist::unique ()

{

list_node_base* cur = head.next;

if (cur) {

while (cur->next) {

完整列表

The Annotated STL Sources 14 if (((list_node*)cur)->data == ((list_node*)(cur->next))->data) erase_after(cur);

else

cur = cur->next;

}

}

}

template

void slist::merge (slist& L)

{

list_node_base* n1 = &head;

while (n1->next && L.head.next) {

if (((list_node*) L.head.next)->data < ((list_node*) n1->next)->data) __slist_splice_after(n1, &L.head, L.head.next);

n1 = n1->next;

}

if (L.head.next) {

n1->next = L.head.next;

L.head.next = 0;

}

}

template

void slist::sort ()

{

if (head.next && head.next->next) {

slist carry;

slist counter[64];

int fill = 0;

while (!empty()) {

__slist_splice_after (&carry.head, &head, head.next);

int i = 0;

while (i < fill && !counter[i].empty ()) {

counter[i].merge (carry);

carry.swap (counter[i]);

++i;

}

carry.swap (counter[i]);

if (i == fill)

++fill;

}

for (int i = 1; i < fill; ++i)

counter[i].merge (counter[i-1]);

this->swap (counter[fill-1]);

}

}

完整列表 The Annotated STL Sources 15 #ifdef __STL_MEMBER_TEMPLATES

template

template void slist::remove_if (Predicate pred) {

list_node_base* cur = &head;

while (cur->next) {

if (pred(((list_node*) cur->next)->data))

erase_after(cur);

else

cur = cur->next;

}

}

template template

void slist::unique (BinaryPredicate pred)

{

list_node* cur = (list_node*) head.next;

if (cur) {

while (cur->next) {

if (pred(((list_node*)cur)->data, ((list_node*)(cur->next))->data)) erase_after(cur);

else

cur = (list_node*) cur->next;

}

}

}

template template void slist::merge (slist& L, StrictWeakOrdering comp) {

list_node_base* n1 = &head;

while (n1->next && L.head.next) {

if (comp(((list_node*) L.head.next)->data,

((list_node*) n1->next)->data))

__slist_splice_after(n1, &L.head, L.head.next);

n1 = n1->next;

}

if (L.head.next) {

n1->next = L.head.next;

L.head.next = 0;

}

}

template template void slist::sort (StrictWeakOrdering comp)

{

if (head.next && head.next->next) {

slist carry;

完整列表 The Annotated STL Sources 16 slist counter[64];

int fill = 0;

while (!empty()) {

__slist_splice_after(&carry.head, &head, head.next);

int i = 0;

while (i < fill && !counter[i].empty()) {

counter[i].merge(carry, comp);

carry.swap(counter[i]);

++i;

}

carry.swap(counter[i]);

if (i == fill)

++fill;

}

for (int i = 1; i < fill; ++i)

counter[i].merge(counter[i-1], comp);

this->swap(counter[fill-1]);

}

}

#endif /* __STL_MEMBER_TEMPLATES */

#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) #pragma reset woff 1174

#endif

__STL_END_NAMESPACE

#endif /* __SGI_STL_INTERNAL_SLIST_H */

// Local Variables:

// mode:C++

// End:

侯捷stl源码剖析注释之42 sgi-stl-slist

完整列表 The Annotated STL Sources 1 G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_slist.h 完整列表 /* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * */ /* NOTE: This is an internal header file, included by other STL headers. * You should not attempt to use it directly. */ #ifndef __SGI_STL_INTERNAL_SLIST_H #define __SGI_STL_INTERNAL_SLIST_H __STL_BEGIN_NAMESPACE #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) #pragma set woff 1174 #endif // 單向串列的節點基本結構 struct __slist_node_base { __slist_node_base* next ; }; // 全域函式:已知某一節點,安插新節點於其後。 inline __slist_node_base* __slist_make_link (__slist_node_base* prev_node, __slist_node_base* new_node) { // 令 new 節點的下一節點為prev 節點的下一節點 new_node->next = prev_node->next; prev_node->next = new_node; // 令 prev 節點的下一節點指向new 節點 return new_node; } // 全域函式:找出某一節點的前一個節點。 inline __slist_node_base* __slist_previous (__slist_node_base* head, const __slist_node_base* node) {

六西格玛管理读后感

《六西格玛管理》读后感 目前,很多国内的企业都在实施六西格玛管理,如联想,中兴,宝钢等,并且取得了初步成效。这些企业的成功促使国内的考虑导入六西格玛管理的企业越来越多,人们对六西格玛管理知识的需求也越来越迫切。所以我们要紧跟潮流了解学习六西格玛。 读了此书之后我了解了六西格玛的的发展历史,六西格玛于20世纪,80年代产生,他是一种降低缺陷的方法,是对全面质量管理特别是质量改进理论的继承性发展,它的DMAIC 改进流程模式源于PDCA循环,其统计技术集成,囊括了所有数字类和思维类质量工具技术。六西格玛一共有两层含义,一层是基于统计角度,另一层是基于管理角度。 通过这本书我了解到六西格玛管理的含义。第一点以顾客为关注中心,获得高的各科满意度是企业所追求的主要目标,然而顾客只有在其需求得到充分理解并获得满足后,才会满意和忠诚,我们要知道顾客的需求是动态变化的,所以我们要实时追踪客户的需求,第二点六西格玛管理是基于数据和事实驱动的管理方法。是应用统计数据和分析方法来建立对关键变量的理解和获得优化结果。第三点聚焦于流程改进。在六西格玛中流程是采取改进行动的主要对象。设计产品和服务,度量业绩,改进效率和顾客满意度等都是流程,流程在六西格玛中是成功的关键。第四点有预见的积极管理。积极是指主动的在事情发生之前进行管理,而不是被动的处理那些令人忙乱的危机。第五点无边界合作。六西格玛管理建立在广泛沟通的基础上,改进企业内部的合作。联结这种无边界合作的纽带就是那些有强烈使命感的黑带。黑带就是项目改进团队的负责人。第六点追求完美,容忍失误。也就是说六西格玛为企业提供一个近乎完美的努力方向,但是这样做总是有风险的,在推行六西格玛管理的过程中,可能会遇到挫折和失败,企业应以积极的应对挑战的心态,面对挑战和失败。 而且六西格玛管理的核心理念就是以顾客为中心,关注过程,减少或消除过程变异,实现突破性改进,以提升企业组织的经营业绩。 并且在选择六西格玛项目时,我们选择需要遵从一些原则:第一点,有意义有价值。六西格玛项目要支持顾客满意的改善,要支持企业战略目标的实现,要有挑战性,强调过程的改进,要为企业带来较大的经济效益。第二点:可管理,每个六西格玛项目都是可管理的,也就是说六西格玛项目预解决的问题应清晰且可测量。 而且做项目的时候我们需要确定好项目的目标,需要一个定义明确,大家都理解的目标,要考虑一下的因素确定目标,第一目前水平,顾客需求,业界标准,公司目标。然后我们需要制定项目计划,先做任务的分解,然后估算任务时间并确定任务之间的关系,再编制项目

毕设-施工组织设计--任务书

集美大学 毕业设计(论文)任务书工程技术学院土木工程专业1011 班学生杜军斌学号2010100025 一、毕业设计(论文)题目:晋江阳光城翡丽湾高支模施工专项方案 二、毕业设计(论文)工作规定进行日期:2014年1月10日起至2014年 5 月24日止 三、毕业设计(论文)进行地点: 集美大学工程技术学院 四、任务书的内容: 1.熟悉图纸 2.了解工程概况 工程名称:晋江阳光城翡丽湾 建设地点:晋江英塘村,地处社马路与灵石路交叉路口 总建筑面积:1550㎡ 建筑主要结构合理使用年限50年 建筑主体耐火等级: 一级 建筑物抗震设防烈度:7度 屋面防水等级:Ⅱ级 结构形式:框架剪力墙结构 基础形式:PHC管桩基础 设计标高:室内±0.0000相当于黄海标高26.8000。 标高说明:本工程施工图所注标高及总平面图尺寸以米为单位,其余以毫米为单位,门窗尺寸均指土建砖口尺寸,建筑楼地面、窗台、吊顶标高均为完成面标高。 3.施工条件 1)施工单位资质情况以及施工能力:国家房屋建筑工程总承包特级资质 2)劳动力:满足工期要求及要求连续施工。 3)施工机械:均可满足要求。

4)水电:建设单位已从城市供水,供电网引至施工现场。 5)生活条件:在工地上设有活动房供外包工人及保卫人员住在工地,还有在工地上搭设临时的食堂供其他人员吃饭,所有生活设施须统一安排。 4.主要设计内容 1高支模的方案选择 2 高支模的施工计划 3 模板安装工艺流程 4 模板的施工方法 5 模板安装检查验收 6 模板拆除 7 模板的施工安全保证措施 8高支模安装的劳动力计划 5.进度要求 (1)2013年09月20日~10月31日,毕业设计(论文)前期准备工作; (2)2013年11月01日~11月20日,组织教师命题,修订并印刷《毕业设计(论文)指导手册》; (3)2013年12月03日教研室上报毕业设计(论文)命题; (4)2013年12月06日~12月17日,学院审定毕业设计(论文)命题; (5)2013年11月22日~12月10日,举办毕业设计(论文)专题讲座; (6)2013年12月20日~26日,组织学生选题; (7)2013年12月27日~2013年12月31日审核学生选题情况,确定毕业设计(论文)指导教师; (8)2014年01月10日前,指导教师下达毕业设计(论文)任务书; (9)2014年02月16日~03月15日,毕业设计(论文)实习; (10)2014年02月16日~03月15日,指导学生完成毕业设计(论文)开题报告; (11)2014年03月17日学生上交毕业设计(论文)开题报告、实习日记、实习报告、实习鉴定; (12)2014年03月16日教研室报送毕业实习成绩; (13)2014年03月23日~03月31日,完成毕业设计(论文)粗纲; (14)2014年03月30日~04月12日,中期进度检查; (15)2014年04月13日~04月19日,完成毕业设计(论文)细纲;

六西格玛质量控制管理解读

同济大学 硕士学位论文 第三方物流服务质量的控制与改进姓名:张翔申请学位级别:硕士 专业:管理科学与工程指导教师:刘仲英20050112

『刊济人学硕.L学位论文第三方物流服务质量的控制与改进 1绪论 ”第三方物流”(Third Party Logistics,简称3PL或TPL于上世纪80年代中期在欧美困家首先提出。在1988年美国物流管理委员会的一项顾客服务调查中,首次提到” 第三方服务提供者~词。目前对于第三方物流解释很多,国内外学术和实践领域尚没有一个统一的定义,在我国2001年公布的国标《物流术语》中,暂将第三方物流定义为”供方与需方以外的物流企业提供物流服务的业务模式”。 国外第三方物流服务始于上个世纪80年代初,随着航空管制等政策的开放开始起步,得到快速发展。在我国,其发展的历程非常短,开始于上世纪90年代末,目前只处于刚刚起步的阶段。 由于物流关系到社会生产、消费的顺利进行,在国民经济中占据着重要地位,因此对物流技术和服务的研究也成为了当前重要的课题。社会各界,无论是学术界、企业界还是政府,都对第三方物流给予了热切关注,这种关注,从东南沿海城市逐步蔓延到全国,俨然形成了一股”第三方物流热”。但由于从理论研究到实践经验的全面

缺乏,中国的第三方物流企业面临着发展中的众多难题,而2001年11月中国加入WTO, 市场的开放更加引起了国内第三方物流企业发展的紧迫感,迫使我们加快引入国外各种管理理念和方法,结合中国实际情况,研究中国第三方物流企业发展之道。 根据我国的一些统计数据,我国经济发展的物流成本一直居高不下,除了生产流通环节周期长,如制造企业制成品的库存周转时间是51天,第三方物流服务所提供的物流服务质量也是一个重要因素,统计数据显示TPL物流服务过程中单证准确率仅为96.4%,及时率仅为86.7%,破损率则高达2.2%。在物流服务外包业务中,服务质量已经成为客户主要关心的方面。 由于物流服务质量关系到物流活动的特性和服务质量管理的特点,本章从中国物流企业发展的环境谈起,通过发展中的瓶颈引出物流服务质量的问题;指出本文研究的意义;最后提出要讨论的重点问题、研究思路和论文结构。 1.1研究背景 1.1.1中国第三方物流服务发展环境 1.1.1.1需求快速增长 在第三方物流概念引入中国之后,中国的物流市场快速得到发展。原因之一是原本计划经济体制下那种“大而全”、“小而全”的企业生产、销售模式无法适应市场经 蚓济人学顼I:学位论文第一章绪论 济环境下的激烈竞争,很多企业为了集中资源优势和核心能力,通过外包仓储、运输以及相关的物流活动减轻管理压力:原因之二是外资、合资企业在进入中国市场后, 由于伙伴物流企业由于暂时的政策限制没有能够同时进入1,他们对专业物流的需求强烈而且要求严格,对国内物流市场的发展起到了一个推动作用,也培养了一

STL源码剖析总结_第二章-空间配置器

2.空间配置器 2.1具备次配置力(sub-allocation)的SGI空间配置器 SGI含有两个空间配置器类,std::allocator内存分配类符合标准,但是仅仅是对operator new和operator delete简单封装一下而已;其次是SGI特殊的内存分配器std::alloc,其中实现采用了内存池,对于分配大量小容量的对象,可以大大减少内存碎片。 SGI标准的空间配置器std::allocator 这是对应的模板内联内存分配函数。实现起来也很简单,注意这里分配的内存仅仅是一块没有使用的空间而已,在上面并没有构造对象,后面讲解如何在上面构造对象。 模板内联内存释放函数,直接调用全局的operator delete释放对应的内存。

SGI特殊的空间配置器Std::alloc class Foo{…} Foo* pf = new Foo;//配置内存,然后构造对象delete pf;//将对象析构,然后释放内存 new的算是包含两个阶段:

1)调用::operator new 配置内存 2)调用Foo::Foo()构造对象内容 Delete算式也包含两个阶段 1)调用Foo::~Foo()将对象析构 2)调用::operator delete释放内存 为了精密分工,STL allocator将两个阶段的操作分开来,内存配置操作由alloc::allocate()负责,内存释放操作由alloc::deallocate()负责;对象构造由::construct()负责,对象析构由::destroy()负责。

2.stl_alloc.h 内存空间的分配和释放 内部使用malloc在堆中申请内存,其中制造了一个内存池,可以减少小型区块过多而造成的内存碎片问题。 SGI设计了双层级配置器,第一级配置器直接使用malloc()和free(),第二级配置器则视情况采用不同的策略:当配置区块超过128bytes时,采用第一级配置器,当配置区块小于128bytes时,采用第二级配置器,采用复杂的memory pool。它内存池实际上就是内部维护了16个自由链表,预先已经分配好了,当需要从内存池中取内存时候,直接从对应链表取出即可;当释放内存到内存池时候,直接将内存插入链表即可。每个链表中节点分别占用8、16、24、32、40、48、52、64、72、80、88、96、104、112、120、128字节。

六西格玛管理读书笔记

《六西格玛管理》读书笔记 姓名:毛艳金学号:2114508109 班级:工程081 六西格玛(6σ)概念于1986年由摩托罗拉公司的比尔·史密斯提出,此概念属于品质管理范畴,西格玛(Σ,σ)是希腊字母,这是统计学里的一个单位,表示与平均值的标准偏差。旨在生产过程中降低产品及流程的缺陷次数,防止产品变异,提升品质。六西格玛是一种能够严格、集中和高效地改善企业流程管理质量的实施原则和技术。它包含了众多管理前沿的先锋成果,以”零缺陷”的完美商业追求,带动质量成本的大幅度降低,最终实现财务成效的显著提升与企业竞争力的重大突破。 20世纪90年代发展起来的6σ(西格玛)管理是在总结了全面质量管理的成功经验,提炼了其中流程管理技巧的精华和最行之有效的方法,成为一种提高企业业绩与竞争力的管理模式。该管理法在摩托罗拉、通用、戴尔、惠普、西门子、索尼、东芝行众多跨国企业的实践证明是卓有成效的。为此,国内一些部门和机构在国内企业大力推6σ管理工作,引导企业开展6σ管理。 企业也可以用西格玛的级别来衡量在商业流程管理方面的表现。传统的公司一般品质要求已提升至3sigma.这就是说产品的合格率已达至99.73%的水平,只有0.27%为次货。又或者解释为每一千货产品只有2.7件为次品。很多人认为产品达至此水平已非常满意。可是,根据专家研究结果证明,如果产品达到99.73%合格率的话,以下事件便会继续在现实中发生:每年有20,000次配错药事件;每年不超过15,000婴儿出生时会被抛落地上;每年平均有9小时没有水、电、暖气供应;每星期有500宗做错手术事件;每小时有2000封信邮寄错误。由此可以看出,随着人们对产品质量要求的不断提高和现代生产管理流程的日益复杂化,企业越来越需要象六西格玛这样的高端流程质量管理标准,以保持在激烈的市场竞争中的优势地位。事实上,日本已把”6 Sigma”作为他们品质要求的指标。管理专家Ronald Snee先生将6西格玛管理定义为:“寻求同时增加顾客满意和企业经济增长的经营战略途径。 六西格玛管理的特征 六西格玛管理的核心特征是使顾客与企业获得双赢,并降低经营风险。它能使企业的质量活动同时为顾客、员工、所有者和整个公司创造价值和经济利益。它注重质量的经济性,企业改进原来有缺陷的流程,这种投资可降低原来的高成本,提升顾客满意度,并挽回部分失去的顾客。 六西格玛管理是一种量化的综合管理方法,是一种目标管理、主动改进型管理、绩效管理和文化管理。六西格玛管理的主要特征具体如下: 1.以顾客为关注中心。六西格玛管理关注顾客的需求,以顾客为中心。它的出发点就是研究客户最需要的是什么。顾客满意是企业所追求的主要目标,而顾客只有在其需求得到充分理解并获得满足后才会满意和忠诚。 2.依据数据和事实,使管理成为量化的科学。六西格玛管理把“基于事实管理”的理念提到更高的层次,一开始就澄清什么是衡量企业业绩的尺度,然后应用统计数据和分析方法来建立对关键变量的理解,获得优化结果。 3.通过提高顾客满意度和降低资源成本,促使组织的业绩提升。六西格玛管理的目标有两个,一是提高顾客满意度,即通过提高顾客满意度来占领市场,开拓市场,从而提高组织的效益。二是降低资源成本,即通过降低资源成本,尤其是不良质量成本损失COPQ(Cost of Poor Quality),从而增加组织的收入。 4.聚焦于流程改进。在六西格玛管理中,流程是采取改进行动的主要对象,是成功的关键。设计产品和服务,度量业绩,改进效率和顾客满意度,甚至经营企业等,都是流程。 5.有预见的积极管理。有预见的积极管理意味着应当关注那些常被忽略的业务运作,并养成习惯:确定远大的目标并且经常加以检视;确定清晰的工作优先次序;注重预防问题而不是疲于处理已发生的危机

钟鼓楼读后感

读钟鼓楼有感 大一上学期的大学语文老师讲的红楼梦很有意思,进一步了解红楼梦,喜欢上了刘心武,所以读了他的这本钟鼓楼。 很惊讶一天的事他能写成一本书,1982年12月12日的北京钟鼓楼附近的一个四合院里的琐碎小事在他笔下生动的铺展开来,通过这一天不同的人不同的事,展示了那个年代北京人的真实生活,虽然我没有经历过那个时代,可当文章将四合院,大大小小的胡同,和一个个鲜活的面孔展现给我的时候,我居然能深刻的体会和理解,所有的有一切都是那么的熟悉,那么的亲切,难道这就是中华民族血脉的相连? 作者借薛大娘家二儿子的婚事,向我们展现了刚刚改革开放后几十张鲜活的脸孔,形形象象的人尽收于我们的眼底。善良本份却与不能与儿媳好好相处的薛大娘,不迷信却在意儿子结婚的日子是不是双数的日子,怕逢上单数的日子生出不吉利的丧偶效果,相信现代的20世纪也是这样,你可以轻易得荡涤繁缛的迷信习俗,却很难消除存在于人们内心中的原始迷信心理。只为了是内心平静悠闲的薛永全大爷,在解放前当过喇嘛,解放后变成摊贩,后而又变为公私合营和国营商场的售货员。对于别人的喇嘛可以结婚嘲笑他不以为意,在他看来,那是挣钱的职业,在儿子结婚的这一天还去刹海后海边遛弯、打八卦掌呢。17 时髦活力的冯婉珠,和荀磊自由恋爱,不会歧视绣鞋的姑娘,见到荀磊翻译的书因为不正当的理由退稿时,愤愤不平的说要到出版局去告他。多情善感的张秀藻,单相思与荀磊,又不想复杂的让那些琐事影响了自己的事业心。才华横溢的荀磊,生于1960年“大跃进”那个困苦的时期,在父亲的引导下,成了乱哄哄的教室中少数听讲的学生,没有书读,他就读那过了时的台历。以第一名的外语成绩成为某外事部门的培训人员,后送去英国培训,一直保持第一的名词,并把第二甩的远远的。钟情艺术的澹台智珠,在事业与家庭之间与丈夫存在争吵,希望事业更近一步,却不想与丈夫这样每天闹矛盾,在文化大革命开始时,被作为“封资修的黑苗子”冲击,因讲错一句话被打成“反革命”,曾偷偷喝了半瓶“敌敌畏”没死成,经历昏迷、呆滞、麻木、消沉、痛苦、绝望,,,,,后又转变为冷静、任命、无求、开通、企望,,,,,,1977年重新练功,成就如今的小有名气。30 淡泊名利的海西宾,虽然不是海奶奶的亲孙子,却一直很孝顺,积极向上的路喜纯,虽出身于社会的最底层,但他从不放弃自己,被势利眼瞧不上,却被餐馆当红案的何师傅收为私人徒弟,他努力学习,不放过每一次练功机会。在薛家忙了一天之后并没有要一点报酬,而是交到了一群亲近的朋友。敢做敢为的慕樱,轰轰烈烈的嫁给了一位抗美援朝的残废的军人,后来发现那不是爱,毅然离婚,嫁给了葛尊志,当葛尊志因为她失去了大好前途,在家细心收拾,对她关怀备至时,她又毅然离婚,因为她爱上了别人,她说婚外爱情是合理的,如果爱情消失了,再维持婚姻是不道德的,是虚伪的。她的这种观点在当时的确引起了很大的争论。心地善良性格不好而招人讨厌的詹丽颖,不懂的理解别人,固然从未有意伤害别人,说出的话却让人难受,就因为她这种性格,曾被当作“右派”受了20多年的改造,平反后性格却无收敛。,,,,,,,43 对于一个人,刘心武基本上也不给他定调,不象我们长期看到的作品,好人很好,坏人很坏,他总是给他笔下的人物留下了一点余地,让人感觉那些人仿佛就活在我们身边。这些钟鼓楼旁边的北京居民展现了那个年代北京的真实生活。一部作品,一天的生活,写活了一群群北京市民、写活了一个活生生的北京城。 小说中多次提到“历史感”,作者认为普通老百姓的吃、穿、住、行才是构成历史的脉络,每个老百姓都应该具有历史感,历史并不只属于名人伟人,我们的生活并不是没有意义的,我们的喜怒哀乐、生死哭歌都将载入史册。每一个人都不可能是单独地存在着。他必与许许多多的人共存于一个空间之中,这便构成了社会。而在同一个社会中,人们的阶级意识不同,政治方向不同,经济利益不同,人生态度不同,道德品质不同,文化教养不同,性格旨趣不

STL源码剖析总结_第八章配接器

8 配接器 8.1 配接器之概观与分类 1、设计模式中对配接器的定义如下:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes可以一起运作。 2、容器配接器(应用于容器) stack和queue是两个容器配接器,底层默认由deque构成。stack封住了所有的deque对外接口,只开放符合stack原则的几个函数;queue封住了所有的deque 对外接口,只开放符合queue原则的几个函数。 3、迭代器配接器(应用于迭代器) 3.1 insert iterators 可以把一般迭代器的复制操作转变为插入操作。 insert iterators包括back_insert_iterator(专门负责尾端插入),front_insert_iterator (专门负责头端插入)和insert_iterator(可以负责任何位置执行插入)。主要观念是,每个insert iterators内部都维护有一个容器;容器有自己的迭代器,当客户端对insert iterators做赋值操作时,就在insert iterators中转为对该容器的迭代器做插入操作,其他的迭代器功能则被关闭。 3.2 reverse iterators reverse iterators将迭代器的行进方向逆转,使原本应该前进的operator++变成了后退操作,原本后退的operator—操作变成了前进操作。当迭代器被逆转,虽然实体位置不变,但逻辑位置必须改变,主要是为了配合迭代器区间的“前闭后开“习惯。

3.3 IOStream iterators IOStream iterators可以将迭代器绑定到某个iostream对象身上。绑定一个istream object(例如:std::cin),称为istream_iterator,拥有输入功能。绑定到ostream object (例如:std::cout),称为ostream_iteratpr,拥有输出功能。内部维护一个istream member,客户端对这个迭代器做的operator++操作,会被导引调用内部所含的那个istream member的输入操作。绑定一个ostream object,就是在ostream iterator内部维护一个ostream member,客户端对这个迭代器做的operator=操作,会被导引调用内部所含的那个ostream member的输出操作。 3.4 运用实例

《六西格玛管理法》读后感

《六西格玛管理法》读后感 一、初识六西格玛 六西格玛是一个统计学概念,来自正态分布。六西格玛也可以理解为一种合格率标准:达到了99.9997%无缺陷产品或服务水平。然而比起作为一种指标,六西格玛最有利的特色是它建立了一套保证改进活动得到完美表现的必要的基础结构。 书中,我理解到了六西格玛管理的核心理念。第一点:关注客户是最重要的事情。客户的需求是动态变化的,因此我们要实时追踪客户的需求,只有在充分理解并满足客户的需求后,才会让其感到满意和忠诚,同时获得企业所追求的主要目标。第二点:六西格玛管理是基于数据和事实驱动的管理方法,是应用统计数据和分析方法来建立对关键变量的理解和获得优化结果。第三点:关注流程、管理和改善。在六西格玛中流程是采取改进行动的主要对象。设计产品和服务,度量业绩,改进效率和顾客满意度等都是流程,流程在六西格玛中是成功的关键。第四点:有预见的积极管理。积极是指主动的在事情发生之前进行管理,而不是被动的处理那些令人忙乱的危机。第五点,要有变革管理的意识。当进行流程改善时,组织管理也要同步进行,让人员状况与整个变革流程相匹配,才能让整个团队更好地向新的层次进化并取得变革的效果。第六点,追求完美,容忍失误。也就是说六西格玛为企业提供一个近乎完美的努力方向,但是这样做总是有风险的,在推行六西格玛管理的过程中,可能会遇到挫折和失败,企业应以积极的应

对挑战的心态,面对挑战和失败。 二、两个关键词: 2.1 变异 六西格玛的最终目的,我认为可以理解为:“消除变异”。了解变异有助于管理者更全面地知晓业务和流程真正的表现。追求六西格玛绩效的目的是把变异降低或缩减到很小的程度,从而为企业与客户带来巨大价值的改善。 2.2 流程 理解了六西格玛管理的核心理念与目的,接下来便要认识它对于企业战略管理最为核心的改进思路:流程管理。六西格玛管理主要就是要通过流程改进、流程设计/再设计以及全方位的流程管理来形成一套完整的结构管理体系。而在整个实施的过程中,基于基础的PDCA循环,六西格玛管理的过程改善分为DMAIC 五个步骤: D定义(Define)其要点是用数字来直观的表明"缺陷是什么",“在什么时间段内改到什么程度可以接受”。 M测量(Measure)要点是保证全程引用数据的准确性。 A分析(Analyze)经过DM阶段找准问题,通过诸如群策群力、鱼刺图之类的工具寻找可能引起缺陷的原因,然后在实际生产和服务过程中去搜集这些原因相关的各种数据,找到真正影响结果的关键因素。 I改进(Improve)这一阶段存在的主要难点常见的有改进需求和客观条件或者工艺水平之间矛盾,这些矛盾主要依赖设计、工艺和制造人员的专业知识和经

毕设 施工组织设计 任务书

集美大学 毕业设计(论文)任务书工程技术学院土木工程专业1011 班学生杜军斌学号2010100025 一、毕业设计(论文)题目:晋江阳光城翡丽湾高支模施工专项方案 二、毕业设计(论文)工作规定进行日期:2014 年1月10日起至2014年 5 月24日止 三、毕业设计(论文)进行地点:集美大学工程技术学院 四、任务书的内容: 1.熟悉图纸 2.了解工程概况 工程名称:晋江阳光城翡丽湾 建设地点:晋江英塘村,地处社马路与灵石路交叉路口 总建筑面积:1550㎡ 建筑主要结构合理使用年限50年 建筑主体耐火等级:一级 建筑物抗震设防烈度:7度 屋面防水等级:Ⅱ级 结构形式:框架剪力墙结构 基础形式:PHC管桩基础 设计标高:室内±0.0000相当于黄海标高26.8000。 标高说明:本工程施工图所注标高及总平面图尺寸以米为单位,其余以毫米为单位,门窗尺寸均指土建砖口尺寸,建筑楼地面、窗台、吊顶标高均为完成面标高。 3.施工条件 1)施工单位资质情况以及施工能力:国家房屋建筑工程总承包特级资质 2)劳动力:满足工期要求及要求连续施工。 3)施工机械:均可满足要求。 4)水电:建设单位已从城市供水,供电网引至施工现场。

5)生活条件:在工地上设有活动房供外包工人及保卫人员住在工地,还有在工地上搭设临时的食堂供其他人员吃饭,所有生活设施须统一安排。 4.主要设计内容 1 高支模的方案选择 2 高支模的施工计划 3 模板安装工艺流程 4 模板的施工方法 5 模板安装检查验收 6 模板拆除 7 模板的施工安全保证措施 8 高支模安装的劳动力计划 5.进度要求 (1)2013年09月20日~10月31日,毕业设计(论文)前期准备工作; (2)2013年11月01日~11月20日,组织教师命题,修订并印刷《毕业设计(论文)指导手册》; (3)2013年12月03日教研室上报毕业设计(论文)命题; (4)2013年12月06日~12月17日,学院审定毕业设计(论文)命题; (5)2013年11月22日~12月10日,举办毕业设计(论文)专题讲座; (6)2013年12月20日~26日,组织学生选题; (7)2013年12月27日~2013年12月31日审核学生选题情况,确定毕业设计(论文)指导教师; (8)2014年01月10日前,指导教师下达毕业设计(论文)任务书; (9)2014年02月16日~03月15日,毕业设计(论文)实习; (10)2014年02月16日~03月15日,指导学生完成毕业设计(论文)开题报告;(11)2014年03月17日学生上交毕业设计(论文)开题报告、实习日记、实习报告、实习鉴定; (12)2014年03月16日教研室报送毕业实习成绩; (13)2014年03月23日~03月31日,完成毕业设计(论文)粗纲; (14)2014年03月30日~04月12日,中期进度检查; (15)2014年04月13日~04月19日,完成毕业设计(论文)细纲; (16)2014年04月20日~04月26日,完成和筛选文献资料,确定翻译的外文文献,并整理完成不少于2万字的读书笔记;

如何成为一个程序员

如何成为一个程序员:想成为一个游戏程序员需要有以下资料 疯狂代码 https://www.360docs.net/doc/0615569311.html,/ ?: http:/https://www.360docs.net/doc/0615569311.html,/GameDevelopment/Article36086.html 、书籍: 算法和数据结构: 数据结构(C语言版)——严蔚敏、吴伟民 清华出版社 我觉得其配套习题集甚至比原书更有价值每个较难题都值得做下 Introduction to Algorithms第 2版 中文名算法导论 有关算法标准学习教材和工程参考手册在去年CSDN网站WebSite上其翻译版竟然评为年度 2十大技术畅销书同时员杂志上开设了“算法擂台”栏目这些溯源固本举动不由得使人对中国现今浮躁不堪所谓“IT”业又产生了线希望这本厚厚书幸亏打折我才买得起虽然厚达千页但其英文通俗晓畅内容深入浅出可见经典的作往往比般水准书还耐读还能找到MIT视频教程第节课那个老教授嘻皮笑脸后面就是长发助教上课了 C语言名题精选百则 窍门技巧篇——冼镜光 机械工业出版社 作者花费年时间搜集了各种常见C段极具窍门技巧性编程法其内容都是大有来头而且给出了详细参考资料如个普通Fibonacci数就给出了非递归解、快速算法、扩充算法等步步深入直至几无油水可榨对于视速度如生命连个普通浮点数转化为整数都另辟蹊径以减少CPU cycle游戏员怎可不看? 计算机算法基础(第 2版)—— 佘祥宣等 华中科大出版社 我看到几个学校研究生拿它作教材(研究生才开算法太开玩笑了吧)这本书薄是薄了点用作者话来说倒也“精辟

”其实此书是Fundamentals of Computer Algorithms缩写版不过原书出版太久了反正我是没找到 The Art of Computer ProgrammingVolume 1-3 作者Donald E. Knuth是我心目中和冯.诺依曼、Dijkstra、Shannon并列 4位大师这本书作者从读大学本科时开始写直写到博士时十年磨剑足见其下足了功夫可作为计算机技术核心——算法和数据结构终极参考手册创新处也颇多譬如常见Shell排序他在书中提出可用(3i-1)/2间隔这使其稍快于O(n1. 5)当然这套书描述高度数学化为此恐怕般人(我?)最好还得先看本数学预备书Concrete Mathematics(直译为混凝土数学?^-^)再说可惜是这套书才出到第 3卷并没有覆盖全部常见算法内容不过好在对于游戏员来说越常见算法用得越多这也不算是什么要命损失 STL源码剖析—— 侯捷 华中科大出版社 侯捷不用介绍了华人技术作家中旗舰说其有世界级水准也不为过这本书我以为是C和数据结构葵花宝典(欲练此功必先自宫)也就是说不下几层地狱很难看懂它要求预备知识太多了如STL、数据结构、泛型编程、内存管理都要很扎实(为此是不是还要看看有内存管理设计模式的称Small Memory Software这本书呢?)但是旦看懂真会是所向披靡 Data Structures for Game Programmers 每个数据结构例程都是个小游戏还用SDL库实现了个算法演示系统虽然内容失的于浅但起码让人了解了数据结构在游戏中作用 其实游戏并不比其它特殊甚至要求基本功更加扎实所以花时间做些看似和实际应用不甚相干习题对今后工作是大有裨益而且有些应用很广算法如常被人津津乐道[Page]A*算法及其变种牵涉到图检索周游和分枝-限界法恐怕还得读些艰深论文才能充分明白运用如Donald E. KnuthAn analysis of alpha-beta cutoffs其实还有不少此类

建设工程造价管理——读书笔记

建设工程造价管理——读书笔记

第一章 工程造价管理及其基本制度 第一节 工程造价的基本内容 动态投资:静态投资、建设期贷款利息、有关税费、涨价预备费等。 项目总造价是指项目总投资中的固定资产投资总额。 基本建设投资、更新改造投资、房地产开发投资、其他固定投资 第二节 工程造价管理的组织和内容 建设工程全面造价管理包括:全寿命期造价管理、全过程造价管理、全要素造价管理、全方位造价管理。 工程造价管理的基本原则:以设计为重点的全过程造价管理、主动控制与被动控制相结合、技术与经济相结合。 第三章 工程项目管理 第一节 工程项目管理概述 总投资 生产性建设项目总投资 固定资产投资 流动资产投资 非生产性建设项目总投资 固定资产投资

工程项目的组成可分为:单项工程>单位(子单位)工程>分部(子分部)工程>分项工程 工程项目的 分类按建设性质 分 新建项目 扩建项目 改建项目 迁建项目 恢复项目 按投资作用 分 生产性项目 非生产性项 目 按项目规模 分 基本建设项 目 大型 中型 小型 更行改造项 目 限额以上 限额以下 按投资效益 和市场需求 竞争性项目 基础性项目 公益性项目 按投资来源 政府投资项 目 非政府投资 项目

项目建设程序决策阶段 项目建议书 论述建设的必要 性、建设条件的 可行性、获利的 可能性 不是项目的最终 决策 可行性研究报告 论证分析技术上 是否可行和经济 上是否合理 进行决策 建设实施 阶段 工程设计 初步设计 施工图设计 建设准备 征地、水电通信、 监理施工供应商、 施工图、质量监 督和施工许可手 续 施工安装 开工时间:永久 工程第一次破土 开槽 生产准备 建设单位进行 招人、组织准备、 技术准备、物资 准备 竣工验收 验收范围和标准 验收准备 验收程序和组织项目后评 价 效益后评价 过程后评价

深入分析STL标准模板·vector

深入分析STL标准模板——vector ——计算机学院--马晶义 摘要:通过阅读c++的STL标准模板库中vector的源代码,分析STL 中的内部成员、接口、内存管理、封装等方面。Vector 是一种顺序性的容器,按照严格线性存储各种对象。它其实就是一种动态的数组,正如数组,vector有他们存储在存储单元相邻元素,这就意味着他们的元素可以被存取不只有使用迭代器还定期使用指针抵消元素。但是不像普通的数组,存储在向量自动处理,允许它的扩展和简约的需要。 关键字:STL、Vcector、内部成员函数、接口函数、封装 一、vector的声明及内部常用函数 1.vector的声明 vector c; 创建一个空的vector vector c1(c2); 创建一个vector c1,并用c2去初始化c1 vector c(n) ; 创建一个含有n个ElemType类型数据的vector; vector c(n,elem); 创建一个含有n个ElemType类型数据的vector,并全部初始化为elem; c.~vector(); 销毁所有数据,释放资源; 2.vector容器中常用的函数。(c为一个容器对象) c.push_back(elem); 在容器最后位置添加一个元素elem

c.pop_back(); 删除容器最后位置处的元素 c.at(index); 返回指定index位置处的元素 c.begin(); 返回指向容器最开始位置数据的指针 c.end(); 返回指向容器最后一个数据单元的指针+1 c.front(); 返回容器最开始单元数据的引用 c.back(); 返回容器最后一个数据的引用 c.max_size(); 返回容器的最大容量 c.size(); 返回当前容器中实际存放元素的个数 c.capacity(); 同c.size() c.resize(); 重新设置vector的容量 c.reserve(); 同c.resize() c.erase(p); 删除指针p指向位置的数据,返回下指向下一个数据位置的指针(迭代器) c.erase(begin,end) 删除begin,end区间的数据,返回指向下一个数 据位置的指针(迭代器) c.clear(); 清除所有数据 c.rbegin(); 将vector反转后的开始指针返回(其实就是原来的end-1) c.rend(); 将vector反转后的结束指针返回(其实就是原来的begin-1) c.empty(); 判断容器是否为空,若为空返回true,否则返回false

六西格玛读书笔记解读

第一章六西格玛的领导 1.1相关案例研究 1.1.1六西格玛在摩托罗拉 日本公司的管理下,工厂生产的电视机的缺陷率只有原来摩托罗拉管理下的1/20。 具体来说,六西格玛的目标就是产品和顾客服务的缺陷率应低于100万分之3.4。在制造业 中,为了提供统一、一致的最终成品,要求采用“稳健性设计”,使组成成品的各个零件的变 差足够小。摩托罗拉雇员纪录每道工序中出现的缺陷,统计技术是每个雇员所不可缺的。 雇员通过《参与性管理项目PMC》直接为质量改进做贡献。对团队建议所带来的成本节约进 行分配。 培训:高级主管也应进行培训,而不仅仅是员工。在培训方面投数亿美元。 1.1.2六西格玛在通用电气 降低成本,提高品质,缩短交期。 投入培训资金 1.2创造力和六西格玛 有效地利用冗余,通过统计找出差异。多动手实践。 1.2.1学习模型 PDCA(计划-做-检查-实施) PDSA(计划-做-学习-实施) 戴明认为,理性的预测需要理论的支持,并在比较预测与观察结果的基础上,通过对理论进行 系统修改和扩展,形成知识。没有理论,就没有什么可修改的,经验也失去了意义 六西格玛:实现六西格玛,需要尽量减少过程变异、松懈和沉余,而采取方法则要在组织中建 立变异、松懈和冗余。六西格玛需要通过艰苦的努力将过程的变异减至最小,以保证过程能满 足甚至超越顾客的期望和要求。只有在组织给予团队和个人尝试新事物的自由时,才能获得这 些创造性的突破。六西格玛的基本原理是减少可变性。 现代组织有“硬线”“软线”。(硬线:固定资源,软线:浮动资源) 1.3六西格玛的技术组成 六西格玛的培训涉及六西格玛哲学、统计分析、信息系统、应用软件和项目管理。 技术领导(黑带员工)肩负着下列职责: 指导----在工厂中培育出一系列的专家 讲授----对当地职员进行新战略和新工具的正规培训 教练----对当地职员提供一对一的指导和支持 传递----以培训、现场指导、案例教学、现场评点等方式,传递新战略和新工具 发现----为内部和外部的突破性战略和工具寻找应用机会 辨认----通过与其他组织合作、发掘商业机会 影响----说明组织在突破性战略和工具使用上的创新 1.3.1资格 黑带教员的资格:丰富的经验、证实了的教学能力、技术深度 1.4信息系统的要求 六西格玛项目需要用相当复杂的算法对数量巨大的数据进行统计分析。 1.4.1整合六西格玛与信息系统技术 数据仓库、在线分析处理(OLAP)、数据挖掘 1.4.2在线分析处理、数据挖掘与六西格玛 1.5六西格玛的就绪程度评估 1.5.1组织质量文化评估 评估组织文化的两种最常用方法是重点小组和调查问卷。 1.5.2调查和重点小组 通过调查了解现实与目标的差距,从顾客和雇员中获得信息的4种基本策略。 样本调查、案例研究、现场实验、现有数据 1.6变革执行人及其对组织的影响 1.6.1变革的管理 1.6.2角色

out......C语言

C++程序设计之四书五经(下篇) 荣耀/文我在上篇中“盘点”了TCPL和D&E以及入门教程、高效和健壮编程、模板和泛型编程等方面共十几本C++好书。冬去春来,让我们继续C++书籍精彩之旅。 标准库 当我还在研究院工作时,与同院另外两家研究所合作开发过一个大型水利枢纽调度集成项目。我们三家软件系统之间都要相互通信。在调试通讯模块时,细心的客户(一名好学的系统管理员)发现对于同一通信规约的解释代码,我的不超过30行,而对方的则超过了150行且很难看懂。这位系统管理员很纳闷,我说大家编程风格和习惯不一样,我使用了标准库,而他使用了传统C编程风格以及他所习惯的另外一些技术。 别误会!我绝无贬低这位合作伙伴的意思。事实上,我对那些真正有着深厚的C编程功力的程序员常常怀有钦佩之心。毕竟,C++能有今天的成功在很大程度上缘于它深深地植根于C。作为一名C++程序员,倘若不熟悉C++中的C,我往往会认为他的基本功是不扎实的,他的技术底气是不足的。 不过话又说回来,C++是一种多范型(paradigm)编程语言,具体采用哪种编程风格,专业程序员应该知道视具体情况而定。作为一名经常需要在现场做即兴开发的项目负责人,为了短平快地解决当务之急,我习惯尽量采用现有的库(和组件)。效率(以及强健性)久经验证的C++标准库已经摆在那儿了,何乐而不用呢? Nicolai M. Josuttis,《The C++ Standard Library: A Tutorial and Reference》原文版、中文版:《C++标准程序库:自修教程与参考手册》 这是一本百科全书式的C++标准库著作,是一本需要一再查阅的参考大全。它在完备性、细致性以及精确性方面都是无与伦比的。本书详细介绍了每一标准库组件的规格和用法,内

相关文档
最新文档