亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c_shm_merge.cpp

?? HP共享內存實現,只要將sql語句配置好,裝載共享內存即可
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
		}
	}
}
*/

//查找,找到,返回值,否則,返回NULL,二分法查找8個值
SHM_MERGE_LIST_ITEM* c_shm_merge_addition::find( const int begin_pos, const void * item_value ) 
{
	return NULL;
}


//添加值,首先在空余的空間添加,如沒有空余的空間,則申請8個空間做為空余的空間,再添加
int c_shm_merge_addition::append( const int main_pos, const void* p_item, const void* p_fee )
{
	//if( main_pos % MAX_LIST_COUNT != 0 )
	//	cout<<"error"<<main_pos<<endl;
	int j, last_pos, get_comp_pos;
	
	int last_main_pos = main_pos;
	int begin_pos, end_pos, middle_pos, insert_pos;
	long tmp_value1 = 0;

//將位置壓入
	m_pos.clear();
	m_pos.push_back(last_main_pos);
	while( p_merge_list_item[last_main_pos].next_pos != -1 )
	{
		m_pos.push_back(p_merge_list_item[last_main_pos].next_pos);
		last_main_pos = p_merge_list_item[last_main_pos].next_pos;
	}

//從第一個節點開始比較
	for( int i = 0; i < m_pos.size(); i++ )
	{
		int t =  p_merge_list_item[ m_pos[i] ].acctFee[ p_merge_list_item[ m_pos[i] ].ele_count -1 ].key - *(int*)p_item ;
		if(  t == 0 )
		{
			memcpy( &tmp_value1, &(p_merge_list_item[ m_pos[i] ].acctFee[ p_merge_list_item[ m_pos[i] ].ele_count -1 ].fee), sizeof(long) );
			tmp_value1 += *((long*)p_fee);
			memcpy(&(p_merge_list_item[ m_pos[i] ].acctFee[ p_merge_list_item[ m_pos[i] ].ele_count -1 ].fee), &tmp_value1, sizeof(long) );
			//p_merge_list_item[ m_pos[i] ].acctFee[ p_merge_list_item[ m_pos[i] ].ele_count -1 ].fee += *(long*)p_fee;
			return 0;
		}
		else if( t > 0 )
		{
			break;
		}
	}

//找到插入塊 i
	if( i == m_pos.size()  )  //最后一塊
	{
		if(  p_merge_list_item[ m_pos[i-1] ].ele_count < MAX_LIST_COUNT )
		//直接插入到最后
		{
			memcpy(&(p_merge_list_item[ m_pos[i-1] ].acctFee[ p_merge_list_item[ m_pos[i-1] ].ele_count ].fee), p_fee, sizeof(long) );
			memcpy(&(p_merge_list_item[ m_pos[i-1] ].acctFee[ p_merge_list_item[ m_pos[i-1] ].ele_count ].key), p_item, sizeof(int) );
			p_merge_list_item[ m_pos[i-1] ].ele_count++;
			return 0;
		}
		else  //申請一個塊, 并將該元素放入
		{
			m_p_shm_merge->append_mutex.enterMutex();
			if( p_merge_info->record_count >= m_p_shm_merge->max_addition_count )
			{
				cout<<"超出附加塊內存限制!"<<endl;
				m_p_shm_merge->append_mutex.leaveMutex();
				exit(1);
			}
			last_pos = p_merge_info->record_count;
			p_merge_info->record_count ++;
			m_p_shm_merge->append_mutex.leaveMutex();

			p_merge_list_item[ m_pos[i-1] ].next_pos = last_pos;

			memcpy(&(p_merge_list_item[last_pos].acctFee[0].key), p_item, sizeof(int) );
			memcpy(&(p_merge_list_item[last_pos].acctFee[0].fee), p_fee, sizeof(long) );
			p_merge_list_item[last_pos].ele_count = 1;
			p_merge_list_item[last_pos].next_pos= -1;

			return 0;
		}

	}
	else  //對應的塊號為m_pos[i], 在該塊中插入數據, 而且所有塊是滿 
	{
//在i中尋找插入位置
		begin_pos = 0;
		end_pos = p_merge_list_item[m_pos[i]].ele_count-2;


		while( begin_pos <= end_pos )
		{
			middle_pos = begin_pos + (end_pos-begin_pos)/2;
			int comp_value = p_merge_list_item[m_pos[i]].acctFee[middle_pos].key - *((int*)p_item);
			if( comp_value == 0 )
			{
				//直接加
				memcpy( &tmp_value1, &(p_merge_list_item[m_pos[i]].acctFee[middle_pos].fee), sizeof(long) );
				tmp_value1 += *((long*)p_fee);
				memcpy(&(p_merge_list_item[m_pos[i]].acctFee[middle_pos].fee), &tmp_value1, sizeof(long) );
				return 0;
			}
			else if( comp_value > 0 )
			{
				end_pos = middle_pos - 1;
			}
			else
			{
				begin_pos = middle_pos + 1;
			}
		}

//printf("begin_pos:%d, %d\n",begin_pos, p_merge_list_item[ m_pos[m_pos.size()-1] ].ele_count);

		if( p_merge_list_item[ m_pos[m_pos.size()-1] ].ele_count == MAX_LIST_COUNT ) //最后一個塊滿
		{
			m_p_shm_merge->append_mutex.enterMutex();
			last_pos = p_merge_info->record_count;
			p_merge_info->record_count ++;
			
			if( p_merge_info->record_count >= m_p_shm_merge->max_addition_count )
			{
				cout<<"超出附加塊內存限制!"<<endl;
				m_p_shm_merge->append_mutex.leaveMutex();
				exit(1);
			}

			m_p_shm_merge->append_mutex.leaveMutex();
			p_merge_list_item[ m_pos[m_pos.size()-1] ].next_pos = last_pos;

			p_merge_list_item[ last_pos].ele_count = 0;
			p_merge_list_item[ last_pos].next_pos = -1;
			m_pos.push_back( last_pos );
		}

		if( m_pos.size() - 1 == i )
		{
			p_merge_list_item[ m_pos[i] ].ele_count++;
			memmove( &p_merge_list_item[ m_pos[i] ].acctFee[begin_pos+1], &p_merge_list_item[m_pos[i]].acctFee[begin_pos], ( p_merge_list_item[ m_pos[i] ].ele_count - begin_pos-1 )*sizeof(ACCT_ITEM_FEE) );

	//在begin_pos中插入新的元素
			memcpy(&(p_merge_list_item[m_pos[i]].acctFee[begin_pos].key), p_item, sizeof(int) );
			memcpy(&(p_merge_list_item[m_pos[i]].acctFee[begin_pos].fee), p_fee, sizeof(long) );
			return 0;
		}

//移動數據
//最后一個塊內的數據全部偏移一位
		if( p_merge_list_item[ m_pos[m_pos.size() - 1]].ele_count != 0 )
		{
			memmove( &p_merge_list_item[ m_pos[m_pos.size() -1] ].acctFee[1], &p_merge_list_item[ m_pos[m_pos.size() - 1] ].acctFee[0], p_merge_list_item[ m_pos[m_pos.size() - 1]].ele_count*sizeof(ACCT_ITEM_FEE) );
		}
		p_merge_list_item[ m_pos[m_pos.size() - 1]].ele_count++;


		for( j = m_pos.size() -2 ; j > i ; j-- )
		{
			//塊間偏移
			memcpy( &p_merge_list_item[ m_pos[j+1] ].acctFee[0],  &p_merge_list_item[ m_pos[j] ].acctFee[MAX_LIST_COUNT-1], sizeof(ACCT_ITEM_FEE) );
			//塊內移動
			memmove( &p_merge_list_item[ m_pos[j] ].acctFee[1], &p_merge_list_item[m_pos[j]].acctFee[0], (MAX_LIST_COUNT-1)*sizeof(ACCT_ITEM_FEE) );
		}

//插入位置為begin_pos
		memcpy( &p_merge_list_item[ m_pos[i+1] ].acctFee[0],  &p_merge_list_item[ m_pos[i] ].acctFee[MAX_LIST_COUNT-1], sizeof(ACCT_ITEM_FEE) );
		//塊內移動
		memmove( &p_merge_list_item[ m_pos[i] ].acctFee[begin_pos+1], &p_merge_list_item[m_pos[i]].acctFee[begin_pos], ( MAX_LIST_COUNT-begin_pos-1 )*sizeof(ACCT_ITEM_FEE) );

//在begin_pos中插入新的元素
		memcpy(&(p_merge_list_item[m_pos[i]].acctFee[begin_pos].key), p_item, sizeof(int) );
		memcpy(&(p_merge_list_item[m_pos[i]].acctFee[begin_pos].fee), p_fee, sizeof(long) );
	}

	return 0;
}

/*
//添加值,首先在空余的空間添加,如沒有空余的空間,則申請8個空間做為空余的空間,再添加
int c_shm_merge_addition::append( const int main_pos, const void* p_item, const void* p_fee )
{
	if( main_pos % MAX_LIST_COUNT != 0 )
		cout<<"error"<<main_pos<<endl;
	//cout<<"test :"<<main_pos+MAX_LIST_COUNT-1<<"|"<<p_merge_list_item[main_pos+MAX_LIST_COUNT-1].next_pos<<"|"<<endl;
	SHM_MERGE_LIST_ITEM* p_find;
	SHM_MERGE_LIST_ITEM shm_find;
	shm_find.key = *(int*)p_item ;
	int i, j, last_pos, get_comp_pos;
	
	int last_main_pos = main_pos;
	while(1)
	{
		p_find = (SHM_MERGE_LIST_ITEM*)bsearch(&shm_find, &p_merge_list_item[last_main_pos], p_merge_list_item[last_main_pos].ele_count, sizeof(SHM_MERGE_LIST_ITEM), listItemComp);
		if( p_find != NULL )
		{
			//找到了。
			//cout<<"find:"<<*(int*)p_item<<endl;
			p_find->fee +=  *((int*)p_fee);
			return 0;
		}
		else
		{
			//沒找到
			//cout<<"not find:"<<*(int*)p_item<<endl;
			if( p_merge_list_item[last_main_pos].ele_count == MAX_LIST_COUNT )
			{
				get_comp_pos = getPos( last_main_pos+MAX_LIST_COUNT-1 );
				if( get_comp_pos ==  -1 )
				{
					//新開空間并插入
					m_p_shm_merge->append_mutex.enterMutex();
					last_pos = p_merge_info->record_count;
					p_merge_info->record_count += MAX_LIST_COUNT;
					m_p_shm_merge->append_mutex.leaveMutex();

					p_merge_list_item[last_main_pos+MAX_LIST_COUNT-1].next_pos = last_pos;

					//memcpy(p_merge_list_item[last_pos].key, (char*)p_item,MAX_ITEM_LENGTH);
					p_merge_list_item[last_pos].key = *(int*)p_item;
					p_merge_list_item[last_pos].fee = *((int*)p_fee);
					p_merge_list_item[last_pos].ele_count = 1;
					for( i = 0; i < MAX_LIST_COUNT; i ++ )
					{
						p_merge_list_item[last_pos+i].next_pos= -1;
					}

					return 0;	
				}
				else
				{
					//找下一個小節
					last_main_pos = get_comp_pos;
				}
			}
			else
			{
				//新增一個節點
				last_pos = last_main_pos + p_merge_list_item[last_main_pos].ele_count - 1 ;
				p_merge_list_item[last_pos].next_pos = last_pos+1;

				for( i = 0 ; i < p_merge_list_item[last_main_pos].ele_count ; i ++ )
				{					
					if( listItemComp( &shm_find, &(p_merge_list_item[last_main_pos+i]) ) < 0 )
					{
						//插入
						for( j = p_merge_list_item[last_main_pos].ele_count ; j > i ; j -- )
						{
							//memcpy( p_merge_list_item[last_main_pos+j].key, p_merge_list_item[last_main_pos+j-1].key, MAX_ITEM_LENGTH );
							p_merge_list_item[last_main_pos+j].key = p_merge_list_item[last_main_pos+j-1].key;
							p_merge_list_item[last_main_pos+j].fee = p_merge_list_item[last_main_pos+j-1].fee;
						}
						break;
					}
				}
				//memcpy( p_merge_list_item[last_main_pos+i].key, p_item, MAX_ITEM_LENGTH);
				p_merge_list_item[last_main_pos+i].key = *((int*)p_item) ;
				p_merge_list_item[last_main_pos+i].fee = *((int*)p_fee);
				p_merge_list_item[last_main_pos].ele_count ++;
				return 0;
			}
		}
	}
	return 0;
}
*/

SHM_MERGE_LIST* c_shm_merge_item::binfind( const int begin_pos, const int end_pos, const SHM_MERGE_LIST* item ) 
{
	return NULL;
}

//查找,找到,返回值,否則,返回NULL
SHM_MERGE_LIST* c_shm_merge_item::find( const void * p_main )
{
	SHM_MERGE_LIST shm_find;
	memcpy( shm_find.main, (char*)p_main, m_p_shm_merge->main_key_size );
	//strcpy( shm_find.main, (char*) p_main);
	//memcpy( shm_find.main, (char*)p_main, MAX_MAIN_LENGTH);
	//for(int j=0; j<g_main_key.size(); j++ )
	//{
	//	memcpy(&(shm_find.main[g_main_key[j].pos]), &(((char*)p_main)[g_main_key[j].pos]), g_main_key[j].size );
	//}

	if ( p_current != NULL ) 
	{
		if( itemComp( p_current, &shm_find ) == 0 )
			return p_current;
		//if( strcmp( p_current->main, (char*)p_main  ) == 0 )
		//	return p_current;
	}

	SHM_MERGE_LIST* p = NULL;

	if( p_merge_info->record_count > 0 )
	{
		p = (SHM_MERGE_LIST*)bsearch(&shm_find, p_merge_list, p_merge_info->record_count, sizeof(SHM_MERGE_LIST), itemComp);
	}
	
	if( p == NULL )
	{
		p_merge_info->unsort_find_count ++;
		for( int i = 0 ; i < p_merge_info->add_record_count ; i ++ )
		{
			//if( strcmp( p_add_merge_list[i].main, (char*) p_main) == 0 )
			if( itemComp( &p_add_merge_list[i], &shm_find )  == 0 )
			{
				p = &p_add_merge_list[i];				
				break;
			}
		}
	}	

	p_current = p;
	return p;
}

//添加值,首先在附加區添加,如果附加區的數量大于10000,則把附加區的數據添加到主區中,并排序
int c_shm_merge_item::append( const void* p_main, const void* p_item, const void* p_fee )
{	
	//在無序區添加
	//append_main_mutex是鎖記錄數
	//append_main_mutex.enterMutex();
	//append_mutex是鎖附加區的記錄數
	m_p_shm_merge->append_mutex.enterMutex();

	int main_pos = m_p_shm_merge_addition->p_merge_info->record_count;
	m_p_shm_merge_addition->p_merge_info->record_count ++;
	int pos = p_merge_info->add_record_count;
	p_merge_info->add_record_count ++; 

	m_p_shm_merge->append_mutex.leaveMutex();
	//append_main_mutex.leaveMutex();

	//strcpy(p_add_merge_list[pos].main, (char*) p_main );
	
	memcpy( p_add_merge_list[pos].main, (char*)p_main, m_p_shm_merge->main_key_size );
	p_add_merge_list[pos].item_pos = main_pos;
	p_current = & (p_add_merge_list[pos]);

	memcpy(&(m_p_shm_merge_addition->p_merge_list_item[main_pos].acctFee[0].key),p_item, sizeof(int) );
	memcpy(&(m_p_shm_merge_addition->p_merge_list_item[main_pos].acctFee[0].fee), p_fee, sizeof(long) );
	m_p_shm_merge_addition->p_merge_list_item[main_pos].ele_count = 1;
	m_p_shm_merge_addition->p_merge_list_item[main_pos].next_pos = -1;

	//排序無序區
	//if( p_merge_info->add_record_count - p_merge_info->sort_count > 10 )
	//{
	//	qsort(p_add_merge_list, p_merge_info->add_record_count, sizeof(SHM_MERGE_LIST), itemComp );
	//	p_merge_info->sort_count = p_merge_info->add_record_count;
	//}


	if ( p_merge_info->add_record_count >= MAX_ITEM_ADD_COUNT )
	{
		qSort();
	}
	return 0;
}

//更新值
int c_shm_merge_item::update( const int main_pos, const void* p_item, const void* p_fee ) 
{
	return m_p_shm_merge_addition->append(main_pos, p_item, p_fee);
}

//排序
int c_shm_merge_item::qSort() 
{
	if( p_merge_info->add_record_count < 10 )
	{
		p_merge_info->unsort_find_count = 0;
		return 0;
	}

	//把無序區的數據拷貝到有序區
	memcpy( &p_merge_list[p_merge_info->record_count], &p_add_merge_list[0], (p_merge_info->add_record_count)*sizeof(SHM_MERGE_LIST) );
	
	p_merge_info->record_count += p_merge_info->add_record_count; 
	p_merge_info->add_record_count = 0;
	p_merge_info->unsort_find_count = 0;
	
	//排序
	qsort(p_merge_list, p_merge_info->record_count, sizeof(SHM_MERGE_LIST), itemComp );
	return 0;
}

//添加數據,外部調用
int c_shm_merge_item::addRecord( const void* p_main, const void* p_item, const void* p_fee )
{
	//cout<<"addrecord:"<<(char*)p_main<<"|"<<(char*)p_item<<"|"<<(char*)p_fee<<endl;

	if( p_merge_info->unsort_find_count >= MAX_UNSORT_FINDED_COUNT )
	{
		qSort();		
	}

	//在小塊中查找
	SHM_MERGE_LIST* p_find_main = find( p_main );
	if( p_find_main != NULL )
	{
		//找到號碼
		//return update( p_find_main->item_pos, p_item, p_fee );
		return m_p_shm_merge_addition->append(p_find_main->item_pos, p_item, p_fee);
	}
	else
	{
		//未找到號碼,在本塊中新增一個數據
		return append( p_main, p_item, p_fee );
	}
	
}

/////2006-01-18
//在共享內存塊中根據serv_id與counting_type_id查找到數據
////20060415 增加傳入counting_type_id為-1時,找出指定的serv_id的所有數據。
SHM_MERGE_LIST* c_shm_merge_item::findServID( const int serv_id, const int counting_type_id )
{
	SHM_MERGE_LIST shm_find;
	memset( serv_buff, 0, 30 );
	sprintf(&serv_buff[0] ,"%10d", serv_id );
	sprintf(&serv_buff[10

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人在线网站| 日韩精品乱码av一区二区| 日韩三级精品电影久久久| 日本精品一级二级| 91农村精品一区二区在线| 成人一区二区三区中文字幕| 国产精一区二区三区| 国产剧情av麻豆香蕉精品| 国产一本一道久久香蕉| 成人午夜在线免费| 91片黄在线观看| 欧美日韩亚洲丝袜制服| 日韩美女一区二区三区| 久久久久青草大香线综合精品| 亚洲欧美激情视频在线观看一区二区三区 | 国产91丝袜在线播放九色| 国产精品传媒视频| 欧美电视剧免费观看| 韩国在线一区二区| 国产成人午夜99999| av电影在线观看一区| 在线免费不卡电影| 欧美一卡二卡三卡| 国产视频一区二区三区在线观看| 99久久国产免费看| 91网站在线播放| 欧美日韩精品一区二区三区蜜桃 | 成人久久视频在线观看| 国产乱色国产精品免费视频| 成人毛片视频在线观看| 欧美亚洲综合在线| 欧美精品一区二区蜜臀亚洲| 国产精品你懂的在线欣赏| 午夜国产不卡在线观看视频| 国产suv精品一区二区883| 欧美视频中文一区二区三区在线观看| 国产精品一二三四五| 色综合天天综合色综合av | 亚洲va韩国va欧美va| 久久99久久久欧美国产| 波多野结衣91| 精品99一区二区| 一区二区在线观看视频| 日本中文在线一区| a美女胸又www黄视频久久| 欧美一区二区视频在线观看2020| 在线观看视频一区| 国产三级精品三级| 日本在线不卡视频一二三区| 97久久超碰国产精品电影| 欧美精品久久99久久在免费线 | 五月综合激情婷婷六月色窝| 国产麻豆精品久久一二三| 欧美日韩色一区| 国产偷国产偷精品高清尤物| 青娱乐精品在线视频| 在线观看www91| 日韩一区在线看| 成人精品一区二区三区四区 | 亚洲va欧美va天堂v国产综合| 国产精品久久久久久户外露出 | 激情综合色播激情啊| 欧美伊人精品成人久久综合97| 色偷偷久久一区二区三区| 精品福利一二区| 青草国产精品久久久久久| 欧美三级日韩三级| 亚洲综合色噜噜狠狠| 99国产麻豆精品| 亚洲人吸女人奶水| 99久久综合精品| 中文字幕在线视频一区| 懂色av中文字幕一区二区三区| 99re8在线精品视频免费播放| caoporen国产精品视频| 中文在线一区二区 | 日韩美女主播在线视频一区二区三区| 欧美一区二区在线免费播放| 亚洲午夜免费视频| 欧美亚洲国产一区二区三区| 亚洲免费在线观看| 91国偷自产一区二区三区观看 | 波多野结衣在线aⅴ中文字幕不卡| 在线免费亚洲电影| 亚洲欧美国产毛片在线| 91国内精品野花午夜精品| 亚洲精品视频一区| 精品视频999| 久久不见久久见免费视频1| 欧美不卡一区二区三区四区| 国产毛片精品一区| 国产精品久久久久三级| 欧美艳星brazzers| 视频在线在亚洲| 日韩精品一区二区三区视频 | 国产精品日产欧美久久久久| 国产精品夜夜嗨| 中文字幕日韩一区二区| 欧美亚洲一区三区| 精品中文字幕一区二区小辣椒| 91色在线porny| 人妖欧美一区二区| 中文无字幕一区二区三区| 99精品视频在线免费观看| 日韩和欧美的一区| 欧美国产日韩在线观看| 欧美日韩专区在线| 国产一区啦啦啦在线观看| 最近中文字幕一区二区三区| 欧美一级片在线| www.成人网.com| 久久国产生活片100| 亚洲欧美精品午睡沙发| 精品国产成人在线影院| 91视视频在线观看入口直接观看www | 国产人伦精品一区二区| 91免费观看在线| 美国三级日本三级久久99| 国产欧美日本一区视频| 欧美日韩高清一区二区三区| 日韩国产精品久久久久久亚洲| 国产精品日产欧美久久久久| 亚洲二区在线视频| 久久久久综合网| 91行情网站电视在线观看高清版| 国产欧美精品一区二区三区四区| 日韩福利视频导航| 国产精品久久久久久久久久免费看 | 欧美国产一区二区在线观看| 欧美日韩日日夜夜| 91欧美激情一区二区三区成人| 国产精品久久久久影院亚瑟| 91精品婷婷国产综合久久性色| 亚洲综合激情另类小说区| 精品国产欧美一区二区| 欧美日韩另类国产亚洲欧美一级| 五月婷婷色综合| 国产精品毛片a∨一区二区三区| 国产精品亚洲а∨天堂免在线| 国产一区二区精品久久| 日韩成人免费电影| 亚洲少妇30p| 中文字幕 久热精品 视频在线 | 国产乱码精品一品二品| 奇米777欧美一区二区| 一区二区三区美女| 国产精品女同一区二区三区| 中文字幕第一区二区| 国产视频在线观看一区二区三区| 99国内精品久久| 99久久久无码国产精品| 99久久国产综合精品色伊| 国产成人精品亚洲777人妖| 国产精品888| 国产精品一区在线观看乱码| 韩国精品在线观看| 国产精品自拍av| 成人午夜激情在线| aaa欧美大片| 欧美色网一区二区| 制服视频三区第一页精品| 日韩一级免费一区| 2020国产精品| 国产精品乱码一区二三区小蝌蚪| 欧美日韩色一区| 911精品国产一区二区在线| 7777精品伊人久久久大香线蕉的 | 国产专区综合网| 国产一区欧美二区| 成人av在线一区二区三区| 丁香激情综合国产| 91成人看片片| 7777精品伊人久久久大香线蕉最新版 | 久久久99久久| 国产片一区二区三区| 亚洲精品高清在线观看| 免费精品视频在线| 国产999精品久久久久久绿帽| 日韩av中文字幕一区二区| 日产精品久久久久久久性色| 国产一区二区三区在线看麻豆| 亚洲一区二区三区国产| 日本aⅴ亚洲精品中文乱码| 国产美女视频一区| 欧美亚洲自拍偷拍| 久久久久久日产精品| 亚洲视频在线观看三级| 亚洲一区二区三区四区不卡| 久久99热狠狠色一区二区| av动漫一区二区| 欧美一级片免费看| 亚洲视频一区二区在线| 秋霞电影网一区二区| 91视频一区二区三区| 精品粉嫩超白一线天av| 亚洲人吸女人奶水| 国产精品一区二区三区网站| 欧美性受xxxx黑人xyx性爽| 久久久久久久久久看片| 午夜精品久久久久久久99水蜜桃|