一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

使用java處理字符串公式運算的方法_MySQL教程

編輯Tag賺U幣

推薦:用MyEclipse配置DataBase Explorer(圖示)
本文介紹了,用MyEclipse配置DataBase Explorer的圖片示例。需要的朋友參考下

  在改進一個關于合同的項目時,有個需求,就是由于合同中非數據項的計算公式會根據年份而進行變更,而之前是將公式硬編碼到系統中的,只要時間一變,系統就沒法使用了,因此要求合同中各個非基礎數據的項都能自定義公式,根據設置的公式來自動生成報表和合同中的數據。

  顯然定義的公式都是以字符串來存儲到數據庫的,可是java中沒有這種執行字符串公式的工具或者類,而且是公式可以嵌套一個中間公式。比如:基礎數據dddd是56,而一個公式是依賴dddd的,eeee=dddd*20,而最終的公式可能是這樣:eeee*-12+13-dddd+24。可知eeee是一個中間公式,所以一個公式的計算需要知道中間公式和基礎數據。

這好像可以使用一個解釋器模式來解決,但是我沒有成功,因為括號的優先級是一個棘手的問題,后來又想到可以使用freemarker類似的模板引擎或者java6之后提供的ScriptEngine 腳本引擎,做了個實驗,腳本引擎可以解決,但是這限制了必須使用java6及以上的版本。最終功夫不負有心人,終于找到了完美解決方案,即后綴表達式。我們平時寫的公式稱作中綴表達式,計算機處理起來比較困難,所以需要先將中綴表達式轉換成計算機處理起來比較容易的后綴表達式。

將中綴表達式轉換為后綴表達式具體算法規則:見后綴表達式


a.若為 '(',入棧;

b.若為 ')',則依次把棧中的的運算符加入后綴表達式中,直到出現'(',從棧中刪除'(' ;

c.若為 除括號外的其他運算符 ,當其優先級高于棧頂運算符時,直接入棧。否則從棧頂開始,依次彈出比當前處理的運算符優先級高和優先級相等的運算符,直到一個比它優先級低的或者遇到了一個左括號為止。

·當掃描的中綴表達式結束時,棧中的的所有運算符出棧; 

我們提出的要求設想是這樣的:

復制代碼 代碼如下:www.zhaotila.cn

public class FormulaTest {
@Test
public void testFormula() {
//基礎數據
Map<String, BigDecimal> values = new HashMap<String, BigDecimal>();
values.put("dddd", BigDecimal.valueOf(56d));

//需要依賴的其他公式
Map<String, String> formulas = new HashMap<String, String>();
formulas.put("eeee", "#{dddd}*20");

//需要計算的公式
String expression = "#{eeee}*-12+13-#{dddd}+24";

BigDecimal result = FormulaParser.parse(expression, formulas, values);
Assert.assertEquals(result, BigDecimal.valueOf(-13459.0));
}
}

以下就是解決問題的步驟:

1、首先將所有中間變量都替換成基礎數據

FormulaParser的finalExpression方法會將所有的中間變量都替換成基礎數據,就是一個遞歸的做法

復制代碼 代碼如下:www.zhaotila.cn

public class FormulaParser {
/**
* 匹配變量占位符的正則表達式
*/
private static Pattern pattern = Pattern.compile("\\#\\{(.+?)\\}");

/**
* 解析公式,并執行公式計算
*
* @param formula
* @param formulas
* @param values
* @return
*/
public static BigDecimal parse(String formula, Map<String, String> formulas, Map<String, BigDecimal> values) {
if (formulas == null)formulas = Collections.emptyMap();
if (values == null)values = Collections.emptyMap();
String expression = finalExpression(formula, formulas, values);
return new Calculator().eval(expression);
}

/**
* 解析公式,并執行公式計算
*
* @param formula
* @param values
* @return
*/
public static BigDecimal parse(String formula, Map<String, BigDecimal> values) {
if (values == null)values = Collections.emptyMap();
return parse(formula, Collections.<String, String> emptyMap(), values);
}

/**
* 解析公式,并執行公式計算
*
* @param formula
* @return
*/
public static BigDecimal parse(String formula) {
return parse(formula, Collections.<String, String> emptyMap(), Collections.<String, BigDecimal> emptyMap());
}

/**
* 將所有中間變量都替換成基礎數據
*
* @param expression
* @param formulas
* @param values
* @return
*/
private static String finalExpression(String expression, Map<String, String> formulas, Map<String, BigDecimal> values) {
Matcher m = pattern.matcher(expression);
if (!m.find())return expression;

m.reset();

StringBuffer buffer = new StringBuffer();
while (m.find()) {
String group = m.group(1);
if (formulas != null && formulas.containsKey(group)) {
String formula = formulas.get(group);
m.appendReplacement(buffer, '(' + formula + ')');
} else if (values != null && values.containsKey(group)) {
BigDecimal value = values.get(group);
m.appendReplacement(buffer,value.toPlainString());
}else{
throw new IllegalArgumentException("expression '"+expression+"' has a illegal variable:"+m.group()+",cause veriable '"+group+"' not being found in formulas or in values.");
}
}
m.appendTail(buffer);
return finalExpression(buffer.toString(), formulas, values);
}
}

2、將中綴表達式轉換為后綴表達式

  Calculator的infix2Suffix將中綴表達式轉換成了后綴表達式

3、計算后綴表達式

  Calculator的evalInfix計算后綴表達式

復制代碼 代碼如下:www.zhaotila.cn

public class Calculator{
private static Log logger = LogFactory.getLog(Calculator.class);

/**
* 左括號
*/
public final static char LEFT_BRACKET = '(';

/**
* 右括號
*/
public final static char RIGHT_BRACKET = ')';

/**
* 中綴表達式中的空格,需要要忽略
*/
public final static char BLANK = ' ';

/**
* 小數點符號
*/
public final static char DECIMAL_POINT = '.';

/**
* 負號
*/
public final static char NEGATIVE_SIGN = '-';

/**
* 正號
*/
public final static char POSITIVE_SIGN = '+';

/**
* 后綴表達式的各段的分隔符
*/
public final static char SEPARATOR = ' ';

/**
* 解析并計算表達式
*
* @param expression
* @return
*/
public BigDecimal eval(String expression) {
String str = infix2Suffix(expression);
logger.info("Infix Expression: " + expression);
logger.info("Suffix Expression: " + str);
if (str == null) {
throw new IllegalArgumentException("Infix Expression is null!");
}
return evalInfix(str);
}

/**
* 對后綴表達式進行計算
*
* @param expression
* @return
*/
private BigDecimal evalInfix(String expression) {
String[] strs = expression.split("\\s+");
Stack<String> stack = new Stack<String>();
for (int i = 0; i < strs.length; i++) {
if (!Operator.isOperator(strs[i])) {
stack.push(strs[i]);
} else {
Operator op = Operator.getInstance(strs[i]);
BigDecimal right =new BigDecimal(stack.pop());
BigDecimal left =new BigDecimal(stack.pop());
BigDecimal result = op.eval(left, right);
stack.push(String.valueOf(result));
}
}
return new BigDecimal(stack.pop());
}

/**
* 將中綴表達式轉換為后綴表達式<br>
* 具體算法規則 81 * 1)計算機實現轉換: 將中綴表達式轉換為后綴表達式的算法思想:
* 開始掃描;
* 數字時,加入后綴表達式;
* 運算符:
* a.若為 '(',入棧;
* b.若為 ')',則依次把棧中的的運算符加入后綴表達式中,直到出現'(',從棧中刪除'(' ;
* c.若為 除括號外的其他運算符 ,當其優先級高于棧頂運算符時,直接入棧。否則從棧頂開始,依次彈出比當前處理的運算符優先級高和優先級相等的運算符,直到一個比它優先級低的或者遇到了一個左括號為止。
* ·當掃描的中綴表達式結束時,棧中的的所有運算符出棧; 
*
* @param expression
* @return
*/
public String infix2Suffix(String expression) {
if (expression == null) return null;

Stack<Character> stack = new Stack<Character>();

char[] chs = expression.toCharArray();
StringBuilder sb = new StringBuilder(chs.length);

boolean appendSeparator = false;
boolean sign = true;
for (int i = 0; i < chs.length; i++) {
char c = chs[i];

// 空白則跳過
if (c == BLANK)continue;

// Next line is used output stack information.
// System.out.printf("%-20s %s%n", stack, sb.toString());

// 添加后綴表達式分隔符
if (appendSeparator) {
sb.append(SEPARATOR);
appendSeparator = false;
}

if (isSign(c) && sign) {
sb.append(c);
} else if (isNumber(c)) {
sign = false;// 數字后面不是正號或負號,而是操作符+-
sb.append(c);
} else if (isLeftBracket(c)) {
stack.push(c);
} else if (isRightBracket(c)) {
sign = false;

// 如果為),則彈出(上面的所有操作符,并添加到后綴表達式中,并彈出(
while (stack.peek() != LEFT_BRACKET) {
sb.append(SEPARATOR).append(stack.pop());
}
stack.pop();
} else {
appendSeparator = true;
if (Operator.isOperator(c)) {
sign = true;

// 若為(則入棧
if (stack.isEmpty() || stack.peek() == LEFT_BRACKET) {
stack.push(c);
continue;
}
int precedence = Operator.getPrority(c);
while (!stack.isEmpty() && Operator.getPrority(stack.peek()) >= precedence) {
sb.append(SEPARATOR).append(stack.pop());
}
stack.push(c);
}
}
}
while (!stack.isEmpty()) {
sb.append(SEPARATOR).append(stack.pop());
}
return sb.toString();
}

/**
* 判斷某個字符是否是正號或者負號
*
* @param c
* @return
*/
private boolean isSign(char c) {
return (c == NEGATIVE_SIGN || c == POSITIVE_SIGN);
}

/**
* 判斷某個字符是否為數字或者小數點
*
* @param c
* @return
*/
private boolean isNumber(char c) {
return ((c >= '0' && c <= '9') || c == DECIMAL_POINT);
}

/**
* 判斷某個字符是否為左括號
*
* @param c
* @return
*/
private boolean isLeftBracket(char c) {
return c == LEFT_BRACKET;
}

/**
* 判斷某個字符是否為右括號
*
* @param c
* @return
*/
private boolean isRightBracket(char c) {
return c == RIGHT_BRACKET;
}

最后把操作符類貼上
復制代碼 代碼如下:www.zhaotila.cn

View Code
public abstract class Operator {
/**
* 運算符
*/
private char operator;

/**
* 運算符的優先級別,數字越大,優先級別越高
*/
private int priority;

private static Map<Character, Operator> operators = new HashMap<Character, Operator>();

private Operator(char operator, int priority) {
setOperator(operator);
setPriority(priority);
register(this);
}

private void register(Operator operator) {
operators.put(operator.getOperator(), operator);
}

/**
* 加法運算
*/
public final static Operator ADITION = new Operator('+', 100) {
public BigDecimal eval(BigDecimal left, BigDecimal right) {
return left.add(right);
}
};

/**
* 減法運算
*/
public final static Operator SUBTRATION = new Operator('-', 100) {
public BigDecimal eval(BigDecimal left, BigDecimal right) {
return left.subtract(right);
}
};

/**
* 乘法運算
*/
public final static Operator MULTIPLICATION = new Operator('*', 200) {
public BigDecimal eval(BigDecimal left, BigDecimal right) {
return left.multiply(right);
}
};

/**
* 除法運算
*/
public final static Operator DIVITION = new Operator('/', 200) {
public BigDecimal eval(BigDecimal left, BigDecimal right) {
return left.divide(right);
}
};

/**
* 冪運算
*/
public final static Operator EXPONENT = new Operator('^', 300) {
public BigDecimal eval(BigDecimal left, BigDecimal right) {
return left.pow(right.intValue());
}
};

public char getOperator() {
return operator;
}

private void setOperator(char operator) {
this.operator = operator;
}

public int getPriority() {
return priority;
}

private void setPriority(int priority) {
this.priority = priority;
}

/**
* 根據某個運算符獲得該運算符的優先級別
*
* @param c
* @return 運算符的優先級別
*/
public static int getPrority(char c) {
Operator op = operators.get(c);
return op != null ? op.getPriority() : 0;
}

/**
* 工具方法,判斷某個字符是否是運算符
*
* @param c
* @return 是運算符返回 true,否則返回 false
*/
public static boolean isOperator(char c) {
return getInstance(c) != null;
}

public static boolean isOperator(String str) {
return str.length() > 1 ? false : isOperator(str.charAt(0));
}

/**
* 根據運算符獲得 Operator 實例
*
* @param c
* @return 從注冊中的 Operator 返回實例,尚未注冊返回 null
*/
public static Operator getInstance(char c) {
return operators.get(c);
}

public static Operator getInstance(String str) {
return str.length() > 1 ? null : getInstance(str.charAt(0));
}

/**
* 根據操作數進行計算
*
* @param left
* 左操作數
* @param right
* 右操作數
* @return 計算結果
*/
public abstract BigDecimal eval(BigDecimal left, BigDecimal right);

分享:Java連接MySql的詳細介紹
本篇文章主要是對Java連接MySql的詳細介紹。需要的朋友參考下

來源:模板無憂//所屬分類:MySQL教程/更新時間:2013-04-27
相關MySQL教程
欧美乱熟臀69xxxxxx| 亚洲精品成av人片天堂无码| 亚洲综合免费观看高清完整版在线| 相泽南亚洲一区二区在线播放| 精品在线视频一区| 亚洲伊人成综合成人网| 日韩成人免费看| 亚洲一区国产精品| 粉嫩av一区二区三区粉嫩| 400部精品国偷自产在线观看| 成人av在线一区二区三区| 一区二区三区不卡在线| 夜色激情一区二区| 污污视频网站在线免费观看| 国产亚洲欧洲高清一区| 欧美性猛交bbbbb精品| 国产精品久久久久77777| 99热这里只有精品5| 日本一区二区三不卡| 久久久精品黄色| 视频在线观看免费高清| 午夜电影久久久| 肉丝美足丝袜一区二区三区四| 亚洲精品一区中文| 无码人妻熟妇av又粗又大| 亚洲视频你懂的| 久久综合久久88| 国产免费高清av| 可以在线看黄的网站| 精品视频一区三区九区| 最近国语视频在线观看免费播放| 久精品国产欧美| 9191精品国产综合久久久久久 | 99久久自偷自偷国产精品不卡| 91在线码无精品| 伊人色在线视频| 欧美高清videos高潮hd| 久久夜色精品国产噜噜av| 在线免费观看黄色小视频| 92福利视频午夜1000合集在线观看| 国产99一区视频免费| 日本福利视频在线观看| 亚洲精品电影网在线观看| 四虎永久在线观看| 在线观看一区二区三区四区| 国产成人亚洲精品| 亚洲电影第三页| 中国精品一区二区| 97av视频在线观看| 91精品国产91久久久久久| 亚洲三级视频在线观看| 色欲av无码一区二区三区| 国产精品私拍pans大尺度在线| 亚洲三级在线观看| 在线播放日韩精品| 亚洲黄色a v| 国产精品第二十页| 欧美在线视频一区二区三区| 野外做受又硬又粗又大视频√| 成人国产精品久久久久久亚洲| 久久夜色精品国产欧美乱| 国产精品视频一| 久久一留热品黄| 中文人妻熟女乱又乱精品| 高潮一区二区三区| 免费久久99精品国产自| 日韩专区在线观看| 亚洲免费在线电影| 亚洲老妇色熟女老太| ass极品国模人体欣赏| 日韩免费三级| 久久精品夜夜夜夜夜久久| 色诱亚洲精品久久久久久| 91在线高清观看| 国产乱色精品成人免费视频| 一区av在线播放| 日本在线xxx| 成人欧美一区二区| 欧美诱惑福利视频| 日韩在线观看av| 伊人久久综合97精品| 欧美国产乱视频| 久久99久久精品国产| 天堂精品一区二区三区| 久久精品人人做人人爽| 久久精品在线视频| 久久久久久久久久国产| 精品无人乱码一区二区三区的优势 | 久久综合久久久| 国产午夜精品一区| 97超级碰碰| 国产精品日韩高清| 成人性生交xxxxx网站| 欧洲永久精品大片ww免费漫画| 亚洲精品一区在线观看香蕉| 精品国产一区二区在线观看| 亚洲欧美日韩久久久久久| 日韩一区二区精品视频| 黄色高清无遮挡| 在线看无码的免费网站| 在线视频一二三区| 成人黄色一区二区| 在线视频 日韩| 欧美自拍偷拍网| 国产av无码专区亚洲av毛网站| 超碰在线国产97| 精品午夜福利视频| 影音先锋黄色网址| 一级片在线观看视频| www.xxx国产| 国产精品影视在线观看| 国产麻豆精品在线观看| 久久综合99re88久久爱| 亚洲综合激情网| 欧美午夜视频在线观看| 激情无码人妻又粗又大| 亚洲熟妇无码一区二区三区| 免费黄色特级片| 99热一区二区| 国产又粗又猛又爽又黄的视频四季| 精品欧美一区二区久久久久| 中文字幕永久在线观看| 紧缚捆绑精品一区二区| 亚洲欧美另类久久久精品| 欧美怡红院视频| 精品国产髙清在线看国产毛片| 日韩一二三在线视频播| 亚洲综合国产精品| 黄页网站大全在线观看| 国产传媒第一页| 国产成人三级在线播放| 国产免费av电影| 成人免费视频国产在线观看| 一区二区三区蜜桃网| 欧美xxxxxxxxx| 欧洲午夜精品久久久| 欧美日韩国产在线观看| 欧美夫妻性生活xx| 黄色三级中文字幕| av最新在线观看| 久久久久在线| 亚洲日穴在线视频| 欧美乱妇高清无乱码| 一区二区三区电影| 美女黄色一级视频| 亚洲综合精品视频| 亚洲综合色噜噜狠狠| 欧美国产日韩一区| 国产91沈先生在线播放| 黄色激情视频在线观看| 国产午夜亚洲精品理论片色戒| 精品对白一区国产伦| 免费在线观看91| 黄色片网站在线播放| 久久久久久久久蜜桃| 最近日韩中文字幕中文| 免费无码不卡视频在线观看| 中文字幕在线网址| 欧美色视频一区| 欧美三级电影在线播放| 久久不卡免费视频| 午夜电影一区二区三区| av在线亚洲男人的天堂| 亚洲免费成人在线| 按摩亚洲人久久| 激情五月宗合网| 97久久久久久久| 一本大道久久精品懂色aⅴ| 亚洲精品永久www嫩草| 香蕉视频国产在线| 日韩一区二区三区国产| xxx国产在线观看| 国产精品久久久久影院亚瑟| 欧美精品一区三区在线观看| 国精品人妻无码一区二区三区喝尿 | 精品一区在线播放| 国产免费福利视频| 亚洲国产成人一区| 99国产精品免费视频| 国产喷白浆一区二区三区| 国产精品一区在线观看| 国产女同91疯狂高潮互磨| 久久视频在线直播| 国产亚洲第一页| 亚洲欧美福利视频| 手机av在线不卡| 亚洲娇小xxxx欧美娇小| 97超碰在线免费观看| 欧美日韩亚洲视频一区| 久青草视频在线播放| 95精品视频在线| 日韩精品欧美一区二区三区| 中文字幕在线播放av| 亚洲区一区二区| 超碰男人的天堂| 午夜欧美视频在线观看| 欧美一级免费播放| 成人午夜av在线| 视频一区免费观看| 91亚洲精华国产精华精华液| 国产欧美在线一区二区| 成人久久18免费网站麻豆| 热re99久久精品国产99热| 国产日产欧美一区二区三区 | 99热这里只有精品4| 中文字幕亚洲无线码在线一区| 中文字幕你懂的| av色综合网| 国产传媒久久文化传媒| 亚洲欧洲国产日韩精品| www久久精品| 成人在线观看你懂的| 久草免费新视频| 97色在线视频| 国产jzjzjz丝袜老师水多| 国产精品电影网站| 亚洲色图另类小说| 亚洲免费精品视频| 亚洲主播在线播放| 亚洲香蕉中文网| 中文字幕精品一区久久久久| 亚洲不卡在线视频| 精品国产日本| 亚洲免费资源在线播放| 四虎1515hh.com| 一本一道久久a久久精品逆3p| 国产精品久久久久久久久毛片 | 亚洲五月六月丁香激情| 精品视频站长推荐| 欧美xxxx做受欧美.88| 日韩影院在线观看| 激情婷婷综合网| 欧美精品一区二区三区四区| 在线观看亚洲一区二区| 久久久久久草| 欧美视频一区二区在线观看| √天堂中文官网8在线| 成人亚洲综合色就1024| 亚洲欧美经典视频| 成人做爰69片免网站| 国产欧美精品一区二区三区-老狼| 99亚偷拍自图区亚洲| 国产精品一区二区入口九绯色| 日韩精品视频免费| 国产一区高清在线| 日韩aaaaa| av成人午夜| 在线观看三级视频欧美| 99视频在线观看免费| 日韩中文字幕在线视频观看| 中文字幕精品网| 国产高清不卡二三区| 日韩精品久久久久久久玫瑰园| 制服.丝袜.亚洲.中文.综合懂| 国内精品久久久久影院优| 91丨porny丨国产| 熟女俱乐部一区二区视频在线| 欧美二区在线播放| 亚洲欧美日韩在线不卡| 日本熟妇毛耸耸xxxxxx| 久久涩涩网站| 亚洲性无码av在线| 久久久久久黄| 免费黄色激情视频| 老司机午夜网站| 精品国产拍在线观看| 久久综合九色综合97婷婷| 成年人网站免费看| 日本精品一区二区三区不卡无字幕| 欧美日韩精品是欧美日韩精品| 天堂8在线视频| 一本色道综合久久欧美日韩精品 | 亚洲 欧美 激情 小说 另类| 午夜天堂在线视频| 国产欧美在线一区二区| 亚洲精品久久久久国产| 久久久国产综合精品女国产盗摄| 精品欧美一区二区久久久久| 欧美日韩dvd| 亚洲最大的成人网| 中文字幕日韩欧美在线| 亚洲图片有声小说| 国产呦精品一区二区三区网站| 精品人妻中文无码av在线| 精品国产无码在线| 国产99久久精品一区二区| 一本大道av伊人久久综合| 国产福利一区二区| 久久视频免费看| 人人爽人人爽av| 日韩 欧美 自拍| 亚洲free性xxxx护士hd| 国产精品888| 成年免费在线观看| 国产又爽又黄无码无遮挡在线观看| 亚洲成人在线视频网站| 国产精品91一区| 久久躁狠狠躁夜夜爽| 精品日本美女福利在线观看| 91女神在线视频| 美日韩一级片在线观看| 中文字幕在线日亚洲9| 欧美激情精品久久| 性色av蜜臀av色欲av| 青青草精品视频在线观看| 老司机午夜免费福利视频| 精品欧美日韩在线| 成人黄色生活片| 欧美日韩成人精品| 欧美mv日韩mv国产网站| 午夜精品福利一区二区三区av| 99久久亚洲一区二区三区青草| 亚洲老妇色熟女老太| 91av久久久| 婷婷综合激情网| 奇米在线7777在线精品| 一级黄色片视频| 无码人妻丰满熟妇精品| 国产一级免费观看| 中文字幕视频二区| 自拍偷拍第八页| 精品人妻少妇嫩草av无码专区| 亚洲综合免费视频| 五月婷婷深深爱| 床上的激情91.| 99精品热视频| 亚洲国产精品嫩草影院| 欧美一级一区二区| 国产亚洲激情在线| www.久久久久| 国产91色在线|亚洲| 99久久久精品视频| 中国女人做爰视频| 日韩精品视频网址| 亚洲综合视频网站| 国产免费一区二区三区四区五区 | 国产精品国产自产拍高清av王其 | 性欧美18—19sex性高清| 色哟哟无码精品一区二区三区| 色偷偷www8888| 免费在线不卡av| 国产精品系列在线播放| 91色乱码一区二区三区| 日本久久电影网| 中文字幕日韩视频| 欧美日韩精品中文字幕一区二区| 欧美二区在线视频| 久久精品色妇熟妇丰满人妻| 国产尤物视频在线观看| 91免费视频网| 日韩经典中文字幕在线观看| 亚洲最大的av网站| 激情五月婷婷基地| 亚洲精品久久久久久久蜜桃| 99re成人在线| 亚洲精品美女久久久久| 成人看片人aa| 欧美午夜精品一区二区| 日韩无码精品一区二区三区| 黄色一级大片在线免费看国产一| 亚洲国产毛片aaaaa无费看| 亚洲国产欧美一区| 视频一区二区在线| 天天看天天摸天天操| 国产91丝袜在线播放0| 亚洲精品之草原avav久久| 蜜桃视频成人| 特一级黄色录像| 国产不卡视频在线观看| 国产亚洲成av人片在线观看桃| 亚洲电影一二三区| 日韩欧美大片在线观看| 中文字幕亚洲电影| 日本电影亚洲天堂| 污免费在线观看| 国产精品系列在线播放| 一区二区三区天堂av| 久久免费视频3| 久久中文字幕一区二区三区| 在线观看成人免费视频| 精品国产一区二区三| 麻豆视频在线免费看| 久久天堂av综合合色蜜桃网| 亚洲人精选亚洲人成在线| 亚洲爆乳无码专区| 日本免费新一区视频| 日韩在线免费观看视频| 亚洲精品中文字幕乱码无线| 日日骚欧美日韩| 亚洲男人天堂久久| 奇米影视亚洲狠狠色| 国产毛片aaa| 欧美精品成人一区二区三区四区| 日韩伦理在线免费观看| 美女视频一区二区三区| 国产精品美乳一区二区免费| 中文字幕在线日亚洲9| 精品国产一区二区三区四区在线观看| 熟妇高潮精品一区二区三区| 色哟哟一区二区三区| 欧美精品一区二区三区免费播放| 91亚洲国产成人精品一区二三| 日韩在线第一区| 国产无遮挡一区二区三区毛片日本| 99亚洲精品视频| 亚洲婷婷综合色高清在线| 久草热视频在线观看| 亚洲一区二区三区视频在线 | 亚洲AV无码乱码国产精品牛牛| 国产91精品最新在线播放|