当前位置: 首页 > news >正文

百度,有道,谷歌翻译API

API翻译

百度,有道,谷歌API翻译(只针对中英相互翻译),其他语言翻译需要对应from,to的code

百度翻译

package fills.tools.translate;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import javax.script.Invocable;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;

public class BaiduTranslateTools {

public static void main(String[] args) throws Exception{

     String en = doBdTranslate("测试一下", "zh", "en");

     String zh = doBdTranslate("test", "en", "zh");

     System.out.println(en);

     System.out.println(zh);

}

private static CloseableHttpClient httpClient = HttpClients.createDefault();

/**

 * 封装百度翻译请求参数

 * @param query

 * @param from  zh 

 * @param to  en

 * @return String

 * @throws Exception

 */

public static String doBdTranslate(String query,String from,String to)throws Exception{

     String url = "https://fanyi.baidu.com/v2transapi";

     Map<String,String> params = new HashMap<String,String>();

     params.put("from",from);

     params.put("to",to);

     params.put("transtype","translang");

     params.put("simple_means_flag","3");

     params.put("sign",runByJs(query,"sig",getBdJs()));

     params.put("token","75f7eb4170c6dba7a1d84c76611205c3");

     params.put("domain","common");

     params.put("query",query);

     return bdGetResult(bdTranslate(url, params));

}

/**

 * 封装百度翻译接口 模拟浏览器请求

 * @param url

 * @param map

 * @return String

 * @throws Exception

 */

private static String bdTranslate(String url,Map<String,String> map) throws Exception{

        try {

         HttpPost request = new HttpPost(url);

request.setEntity(new UrlEncodedFormEntity(map2list(map), "UTF-8"));

        request.setHeader("Cookie","BIDUPSID=518EFD25B0E401331F59B9BDC8388898; BAIDUID=DA7060B673236FB3427E0D66755262B9:FG=1; PSTM=1636594736; __yjs_duid=1_57b3cd04392832a6fbd32d39e48784831636600728790; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDUSS=phdjFZaTJRZ3lPeW1OaHg0WXFyMFgtNWZ6QXNkczh3cEd-Sn5INjg3dG9nc0poRVFBQUFBJCQAAAAAAAAAAAEAAACHLc4ceXNmd3p6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGj1mmFo9ZpheW; H_PS_PSSID=34446_35104_31254_35049_34584_34518_35245_34578_26350_35146; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1637568947; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1637569056; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; delPer=0; PSINO=2; BDRCVFR[Fc9oatPmwxn]=mk3SLVN4HKm; BA_HECTOR=8hag058g0gag8g218f1gpp7gb0r");

        request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0");

        request.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

        request.setHeader("Host","fanyi.baidu.com");

        request.setHeader("Origin","https://fanyi.baidu.com");

        request.setHeader("Referer","https://fanyi.baidu.com/?aldtype=16047");

        request.setHeader("X-Requested-With","XMLHttpRequest");

        CloseableHttpResponse response = httpClient.execute(request);

        HttpEntity entity = response.getEntity();

        String result = EntityUtils.toString(entity, "UTF-8");

        EntityUtils.consume(entity);

        response.getEntity().getContent().close();

        response.close();

        return result;

        } catch (Exception e) {

throw e;

}

}

/**

 * 处理百度翻译结果

 * @param json

 * @return

 */

@SuppressWarnings({ "unchecked", "rawtypes" })

private static String bdGetResult(String json){

     Map<String ,Object> result = JSON.parseObject(json, Map.class);

     Map res  = (Map)result.get("trans_result");

     List<Map> r = (List<Map>)res.get("data");

     if(!r.isEmpty()){

          return (r.get(0).get("dst")+"").replace(",", "");

     }

     return null;

}

/**

 *

 * @param param 一个入参

 * @param method 方法

 * @param jsCode js 代码

 * @return String

 */

public static String runByJs(String param,String method,String jsCode){

     String res = null;

     try {

      ScriptEngine bdToken = new ScriptEngineManager().getEngineByName("js");

          bdToken.eval(jsCode);

          Invocable inv2 = (Invocable) bdToken;

          res =(String)inv2.invokeFunction(method,param);

} catch (Exception e) {

 res = null;

}

     return res;

    }

/**

 * 百度js 签名算法

 * @return String

 */

private static String getBdJs(){

StringBuffer bd = new StringBuffer();

bd.append("var i = '320305.131321201';                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ");

bd.append("function n(r, o) {                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ");

bd.append("    for (var t = 0; t < o.length - 2; t += 3) {                                                                                                                                                                                                                                                                                                                                                                                                                                             ");

bd.append("        var a = o.charAt(t + 2);                                                                                                                                                                                                                                                                                                                                                                                                                                                            ");

bd.append("        a = a >= 'a' ? a.charCodeAt(0) - 87 : Number(a),                                                                                                                                                                                                                                                                                                                                                                                                                                    ");

bd.append("        a = '+' === o.charAt(t + 1) ? r >>> a: r << a,                                                                                                                                                                                                                                                                                                                                                                                                                                      ");

bd.append("        r = '+' === o.charAt(t) ? r + a & 4294967295 : r ^ a                                                                                                                                                                                                                                                                                                                                                                                                                                ");

bd.append("    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ");

bd.append("    return r                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ");

bd.append("}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ");

bd.append("var sig = function e(r) {                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ");

bd.append("    var o = r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);                                                                                                                                                                                                                                                                                                                                                                                                                                     ");

bd.append("    if (null === o) {                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ");

bd.append("        var t = r.length;                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ");

bd.append("        t > 30 && (r = '' + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr( - 10, 10))                                                                                                                                                                                                                                                                                                                                                                                    ");

bd.append("    } else {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ");

bd.append("        for (var e = r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), C = 0, h = e.length, f = []; h > C; C++)'' !== e[C] && f.push.apply(f, a(e[C].split(''))),                                                                                                                                                                                                                                                                                                                                  ");

bd.append("        C !== h - 1 && f.push(o[C]);                                                                                                                                                                                                                                                                                                                                                                                                                                                        ");

bd.append("        var g = f.length;                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ");

bd.append("        g > 30 && (r = f.slice(0, 10).join('') + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join('') + f.slice( - 10).join(''))                                                                                                                                                                                                                                                                                                                                                  ");

bd.append("    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ");

bd.append("    var u = void 0,                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ");

bd.append("    l = '' + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);                                                                                                                                                                                                                                                                                                                                                                                                ");

bd.append("    u = null !== i ? i: (i = window[l] || '') || '';                                                                                                                                                                                                                                                                                                                                                                                                                                        ");

bd.append("    for (var d = u.split('.'), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) {                                                                                                                                                                                                                                                                                                                                                                     ");

bd.append("        var A = r.charCodeAt(v);                                                                                                                                                                                                                                                                                                                                                                                                                                                            ");

bd.append("        128 > A ? S[c++] = A: (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)), S[c++] = A >> 18 | 240, S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224, S[c++] = A >> 6 & 63 | 128), S[c++] = 63 & A | 128)                                                                                                                                  ");

bd.append("    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ");

bd.append("    for (var p = m,                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ");

bd.append("    F = '' + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(97) + ('' + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(54)), D = '' + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(51) + ('' + String.fromCharCode(94) + String.fromCharCode(43) + String.fromCharCode(98)) + ('' + String.fromCharCode(43) + String.fromCharCode(45) + String.fromCharCode(102)), b = 0; b < S.length; b++) p += S[b],        ");

bd.append("    p = n(p, F);                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ");

bd.append("    return p = n(p, D),                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ");

bd.append("    p ^= s,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ");

bd.append("    0 > p && (p = (2147483647 & p) + 2147483648),                                                                                                                                                                                                                                                                                                                                                                                                                                           ");

bd.append("    p %= 1e6,                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ");

bd.append("    p.toString() + '.' + (p ^ m)                                                                                                                                                                                                                                                                                                                                                                                                                                                            ");

bd.append("}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ");

return bd.toString();

}

/**

 * 转换请求参数

 * @param paramsMap

 * @return

 */

private static List<? extends NameValuePair> map2list(Map<String, String> paramsMap) {

        List<NameValuePair> listParams = new ArrayList<NameValuePair>();

        Set<String> keys = paramsMap.keySet();

        for (String key : keys) {

             listParams.add(new BasicNameValuePair(key, paramsMap.get(key)));

        }

        return listParams;

    }

}

运行结果

有道翻译

package fills.tools.translate;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;

import fills.tools.md5.MD5Util;

import fills.tools.util.EncodingCheck;

public class YoudaoTranslateTools {

public static void main(String[] args) throws Exception{

        String en = doYdTranslate("测试一下", "zh", "en");

        String zh = doYdTranslate("test", "en", "zh");

        System.out.println(en);

        System.out.println(zh);

}

private static CloseableHttpClient httpClient = HttpClients.createDefault();

/**

 * 封装有道翻译请求参数

 * @param query

 * @param from  zh 

 * @param to  en

 * @return String

 * @throws Exception

 */

public static String doYdTranslate(String query,String from,String to) throws Exception{

        String newQuery = EncodingCheck.gbkToUtf8(query);

        String url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule";

        Long time = System.currentTimeMillis();

       String slat = time+""+ (long) (Math.random() * 10 + 1);

       //签名算法

        String sign = MD5Util.md5("fanyideskweb" + newQuery + slat + "Y2FYu%TNSbMCxc3t2u^XT");

        Map<String,String> params = new HashMap<String,String>();

        params = new HashMap<String,String>();

        params.put("i", newQuery);

        //params.put("from", "AUTO");

        //params.put("to", "AUTO");

        params.put("from", from);

        params.put("to", to);

        params.put("smartresult", "dict");

        params.put("client", "fanyideskweb");

        params.put("salt", slat);

        params.put("sign", sign);

        params.put("doctype", "json");

        params.put("bv","e2a78ed30c66e16a857c5b6486a1d326");

        params.put("lts",""+time);

        params.put("version", "2.1");

        params.put("keyfrom", "fanyi.web");

        params.put("action", "FY_BY_CLICKBUTTION");

       return ydGetResult(YoudaoTranslateTools.ydTranslate(url, params));

}

/**

 * 封装有道翻译接口

 * @param url

 * @param map

 * @return

 * @throws Exception

 */

private static String ydTranslate(String url,Map<String,String> map) throws Exception{

        try {

         HttpPost request = new HttpPost(url);

request.setEntity(new UrlEncodedFormEntity(map2list(map), "UTF-8"));

        request.setHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");

        request.setHeader("Cookie","OUTFOX_SEARCH_USER_ID_NCOO=2112457812.6057248; OUTFOX_SEARCH_USER_ID=\"1568208620@10.105.137.204\"; YOUDAO_MOBILE_ACCESS_TYPE=1; JSESSIONID=aaaj85MpKF2HUbfaqhs1x; ___rl__test__cookies=1637913084476");

        request.setHeader("Host","fanyi.youdao.com");

        request.setHeader("Origin","https://fanyi.youdao.com");

        request.setHeader("Referer","https://fanyi.youdao.com");

        request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0");

        request.setHeader("X-Requested-With","XMLHttpRequest");

        CloseableHttpResponse response = httpClient.execute(request);

        HttpEntity entity = response.getEntity();

        String result = EntityUtils.toString(entity, "UTF-8");

        EntityUtils.consume(entity);

        response.getEntity().getContent().close();

        response.close();

        return result;

        } catch (Exception e) {

throw e;

}

}

/**

 * 处理有道翻译结果

 * @param json

 * @return

 */

@SuppressWarnings({ "unchecked", "rawtypes" })

private static String ydGetResult(String json){

        Map<String ,Object> result = JSON.parseObject(json, Map.class);

        List<List<Map>> res  = (List<List<Map>>)result.get("translateResult");

        if(!res.isEmpty()){

                return res.get(0).get(0).get("tgt")+"";

        }

        return null;

}

/**

 * 转换请求参数

 * @param paramsMap

 * @return

 */

private static List<? extends NameValuePair> map2list(Map<String, String> paramsMap) {

        List<NameValuePair> listParams = new ArrayList<NameValuePair>();

        Set<String> keys = paramsMap.keySet();

        for (String key : keys) {

             listParams.add(new BasicNameValuePair(key, paramsMap.get(key)));

        }

        return listParams;

    }

    

}

运行结果

谷歌翻译

谷歌翻译需要开启国外代理,网络不通

package fills.tools.translate;

import java.util.List;

import javax.script.Invocable;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import org.apache.http.HttpEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.utils.URIBuilder;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;

public class GoogleTranslateTools {

public static void main(String[] args) throws Exception{

        String en = doGoogleTranslate("测试一下", "zh", "en");

        String zh = doGoogleTranslate("test", "en", "zh");

        System.out.println(en);

        System.out.println(zh);

}

private static CloseableHttpClient httpClient = HttpClients.createDefault();

/**

 * 封装Goole参数信息

 * @param query

 * @param from zh-CN

 * @param to  en

 * @return String

 * @throws Exception

 */

public static String doGoogleTranslate(String query,String from,String to)throws Exception{

        String url = "https://translate.google.com.hk/translate_a/single?";

        String urlParam ="client=t&sl="+from+"&tl="+to+"&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&source=btn&ssel=0&tsel=0&kc=0&tk="+getGgJs(query,getGg())+"&q="+query;

     return ggGetResult(googleTranslate(url+urlParam));

}

/**

 * 封装Goole翻译请求

 * @param url

 * @return String

 * @throws Exception

 */

private static String googleTranslate(String url) throws Exception{

        try {

         URIBuilder uri = new URIBuilder(url);

         HttpGet request = new HttpGet(uri.toString());

request.setHeader("Cookie","NID=511=UKCb40FREknEZtX19ubTXHKnTj2fqh8YZePtu2eWf-ZXdPN_Rs35XiJGF_yjbW2oaSAz4XBJVYOc_2xYAYyQiD3IEoHBJqghUeumnQJdvjn95jqU71b00BtMl2mHwoNiMLYDZgCDBtqU2A5Ql6O3oVMhvGyPrY3CbSsp4kdhzmE; _ga=GA1.3.409789010.1640080107; _gid=GA1.3.27316764.1640080107");

        request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0");

        request.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

        request.setHeader("Origin","https://translate.google.com.hk");

        request.setHeader("Referer","https://translate.google.com.hk/");

        request.setHeader("X-Requested-With","XMLHttpRequest");

        CloseableHttpResponse response = httpClient.execute(request);

        HttpEntity entity = response.getEntity();

        String result = EntityUtils.toString(entity, "UTF-8");

        EntityUtils.consume(entity);

        response.getEntity().getContent().close();

        response.close();

        return result;

        } catch (Exception e) {

throw e;

}

}

/**

 * 处理谷歌翻译结果

 * @param json

 * @return

 */

@SuppressWarnings({"rawtypes", "unused" })

private static String ggGetResult(String json){

        List result = JSON.parseObject(json, List.class);

        if(!result.isEmpty()){

                return ((List)((List)result.get(0)).get(0)).get(0)+"";

        }

        return null;

}

/**

 * 加载js获取签名信息

 * @param query

 * @param js

 * @return

 */

private static String getGgJs(String query,String js){

     String res = null;

     try {

      ScriptEngine bdToken = new ScriptEngineManager().getEngineByName("js");

          bdToken.eval(js);

          Invocable inv2 = (Invocable) bdToken;

          res =(String)inv2.invokeFunction("sig",query);

        } catch (Exception e) {

         res = null;

        }

     return res;

    }

    

   

    /**

     * google 签名 JS

     * @return String

     */

private static String getGg(){

     StringBuffer gg = new StringBuffer();

     gg.append("var sig = function sig(a) {                                                                                                                                                                                                                                                                                                                                          ");

gg.append("    var k = '';                                                                                                                                                                                                                                                                                                                                              ");

gg.append("    var b = 406644;                                                                                                                                                                                                                                                                                                                                          ");

gg.append("    var b1 = 3293161072;                                                                                                                                                                                                                                                                                                                                     ");

gg.append("                                                                                                                                                                                                                                                                                                                                                             ");

gg.append("    var jd = '.';                                                                                                                                                                                                                                                                                                                                            ");

gg.append("    var sb = '+-a^+6';                                                                                                                                                                                                                                                                                                                                       ");

gg.append("    var Zb = '+-3^+b+-f';                                                                                                                                                                                                                                                                                                                                    ");

gg.append("                                                                                                                                                                                                                                                                                                                                                             ");

gg.append("    for (var e = [], f = 0, g = 0; g < a.length; g++) {                                                                                                                                                                                                                                                                                                      ");

gg.append("        var m = a.charCodeAt(g);                                                                                                                                                                                                                                                                                                                             ");

gg.append("        128 > m ? e[f++] = m: (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = m >> 18 | 240, e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, e[f++] = m >> 6 & 63 | 128), e[f++] = m & 63 | 128)     ");

gg.append("    }                                                                                                                                                                                                                                                                                                                                                        ");

gg.append("    a = b;                                                                                                                                                                                                                                                                                                                                                   ");

gg.append("    for (f = 0; f < e.length; f++) a += e[f],                                                                                                                                                                                                                                                                                                                ");

gg.append("    a = RL(a, sb);                                                                                                                                                                                                                                                                                                                                           ");

gg.append("    a = RL(a, Zb);                                                                                                                                                                                                                                                                                                                                           ");

gg.append("    a ^= b1 || 0;                                                                                                                                                                                                                                                                                                                                            ");

gg.append("    0 > a && (a = (a & 2147483647) + 2147483648);                                                                                                                                                                                                                                                                                                            ");

gg.append("    a %= 1E6;                                                                                                                                                                                                                                                                                                                                                ");

gg.append("    return a.toString() + jd + (a ^ b)                                                                                                                                                                                                                                                                                                                       ");

gg.append("};                                                                                                                                                                                                                                                                                                                                                           ");

gg.append("                                                                                                                                                                                                                                                                                                                                                             ");

gg.append("function RL(a, b) {                                                                                                                                                                                                                                                                                                                                          ");

gg.append("    var t = 'a';                                                                                                                                                                                                                                                                                                                                             ");

gg.append("    var Yb = '+';                                                                                                                                                                                                                                                                                                                                            ");

gg.append("    for (var c = 0; c < b.length - 2; c += 3) {                                                                                                                                                                                                                                                                                                              ");

gg.append("        var d = b.charAt(c + 2),                                                                                                                                                                                                                                                                                                                             ");

gg.append("        d = d >= t ? d.charCodeAt(0) - 87 : Number(d),                                                                                                                                                                                                                                                                                                       ");

gg.append("        d = b.charAt(c + 1) == Yb ? a >>> d: a << d;                                                                                                                                                                                                                                                                                                         ");

gg.append("        a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d                                                                                                                                                                                                                                                                                                   ");

gg.append("    }                                                                                                                                                                                                                                                                                                                                                        ");

gg.append("    return a                                                                                                                                                                                                                                                                                                                                                 ");

gg.append("}                                                                                                                                                                                                                                                                                                                                                            ");                       

        return gg.toString();

    }

}

运行结果

相关文章:

百度,有道,谷歌翻译API

API翻译 百度&#xff0c;有道&#xff0c;谷歌API翻译&#xff08;只针对中英相互翻译&#xff09;,其他语言翻译需要对应from&#xff0c;to的code 百度翻译 package fills.tools.translate; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis…...

java-双亲委派机制

Java虚拟机&#xff08;JVM&#xff09;中的类加载器&#xff08;Class Loader&#xff09;负责将类&#xff08;.class文件&#xff09;加载到JVM中&#xff0c;以便Java程序能够使用这些类。在JVM中&#xff0c;类加载器被组织成一种层次结构关系&#xff0c;这种层次结构关系…...

【C++】set的使用

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 &#x1f308;前言&#x1f308;关于set&#x1f525;容量函数emptysize &#x1f525;Modifiersinserteraseclear &#x1f525;Operationsfindcountlower_bound和upper_…...

React 18【实用教程】(2024最新版)

搭建开发环境 含配置&#xff0c;react-developer-tools 和 Redux DevTools 下载安装 https://blog.csdn.net/weixin_41192489/article/details/138523829 JSX 语法 https://blog.csdn.net/weixin_41192489/article/details/138649165 组件 父子组件传值、兄弟组件传值、越层组…...

Perl语言入门学习指南

Perl语言&#xff08;Practical Extraction and Report Language&#xff09;是一种强大的脚本语言&#xff0c;以其灵活性和强大的文本处理能力而闻名。Perl广泛应用于系统管理、Web开发、网络编程和数据处理等领域。本文将带您入门Perl语言&#xff0c;介绍其基本语法、常用功…...

《Java8函数式编程》学习笔记汇总

前言 见证了java8的多层排序&#xff0c;为此想系统学习下java8的用法。 目录 简介Lambda表达式流高级集合类和收集器数据并行化测试、调试和重构设计和架构的原则使用Lambda表达式编写并发程序下一步改怎么办 后记...

C语言之封装,继承,多态

本文参考&#xff1a; c语言面向对象之封装c面向对象之继承Linux源码分析之多态 一、封装 封装的本质就是将数据和方法集中到一个对象中&#xff0c;c或者java使用的是class来实现。c语言中可以使用struct来实现同样的功能。比如下面的程序&#xff1a; struct student {int…...

GO内存分配详解

文章目录 GO内存分配详解一. 物理内存(Physical Memory)和虚拟内存(Virtual Memory)二. 内存分配器三. TCMalloc线程内存(thread memory)页堆(page heap)四. Go内存分配器mspanmcachemcentralmheap五. 对象分配流程六. Go虚拟内存ArenaGO内存分配详解 这篇文章中我将抽丝剥茧,…...

每日Attention学习12——Exterior Contextual-Relation Module

模块出处 [ISBI 22] [link] [code] Duplex Contextual Relation Network for Polyp Segmentation 模块名称 Exterior Contextual-Relation Module (ECRM) 模块作用 内存型特征增强模块 模块结构 模块思想 原文表述&#xff1a;在临床环境中&#xff0c;不同样本之间存在息肉…...

为什么现在电销公司这么难?

现在电销公司普遍底薪就4000&#xff0c;员工要干的工作&#xff1a; 1、自己办卡、现在大部分人对隐私方面比较在意&#xff0c;一般电销公司还都需要自己身份证实名办卡&#xff0c;打几天又封号&#xff0c;有的人甚至被移动拉黑 2、天天打电话&#xff0c;遇见的什么人都…...

每天一个数据分析题(四百四十二)- 标签与指标

数据分析师在工作中常常会涉及两个概念&#xff1a;标签、指标&#xff0c;下面关于标签与指标的描述正确的是&#xff08;&#xff09;&#xff1f; A. 指标通常可以量化&#xff0c;但是标签一般是不可量化的 B. 标签是用来定义、评价和描述特定事物的一种标准或方式 C. 指…...

[论文笔记] pai-megatron-patch Qwen2-72B/7B/1.5B 长文本探路

[论文笔记] Pai-megatron-patch cpu-offload 改到 Qwen2-CSDN博客 Pai-Megatron-Patch (mcore代码) 长文本限制: 开SP之后,72B能开到16K,7B能开到32K。 但是72B开16K,或者7B开32K时,如果训练时训练样本中有长文本的话,则还是会OOM。 code: 相对于原repo加了一些代…...

【SpringCloud】微服务远程调用OpenFeign

工作原理流程图 上代码 common中添加依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency><groupId>org.spri…...

MySQL零散拾遗(四)

聚合函数 聚合函数作用于一组数据&#xff0c;并对一组数据返回一个值。 常见的聚合函数&#xff1a;SUM()、MAX()、MIN()、AVG()、COUNT() 对COUNT()聚合函数的更深一层理解 COUNT函数的作用&#xff1a;计算指定字段在查询结果中出现的个数&#xff08;不包含NULL值&#…...

大语言模型-检索测评指标

1. MRR &#xff08;Mean Reciprocal Rank&#xff09;平均倒数排名&#xff1a; 衡量检索结果排序质量的指标。 计算方式&#xff1a; 对于每个查询&#xff0c;计算被正确检索的文档的最高排名的倒数的平均值&#xff0c;再对所有查询的平均值取均值。 意义&#xff1a; 衡量…...

Zookeeper集群中节点之间数据是如何同步的

1.首先集群启动时&#xff0c;会先进行领导者选举&#xff0c;确定哪个节点是Leader&#xff0c;哪些节点是Follower和Observer 2.然后Leader会和其他节点进行数据同步&#xff0c;采用发送快照和发送Diff日志的方式 3.集群在工作过程中&#xff0c;所有的写请求都会交给Lead…...

HTTPServer改进思路2(mudou库核心思想融入)

mudou网络库思想理解 Reactor与多线程 服务器构建过程中&#xff0c;不仅仅使用一个Reactor&#xff0c;而是使用多个Reactor&#xff0c;每个Reactor执行自己专属的任务&#xff0c;从而提高响应效率。 首先Reactor是一种事件驱动处理模式&#xff0c;其主要通过IO多路复用…...

Kubernetes Secret 详解

Kubernetes Secret 是一种用于存储和管理敏感信息的对象,如密码、OAuth 令牌和 SSH 密钥等。使用 Secret 可以避免将机密数据直接放在 Pod 规约或容器镜像中,从而增加了应用程序的安全性。 Secret 的类型 Kubernetes 支持多种类型的 Secret,包括: ​​Opaque​​:默认的…...

docker笔记4-部署

docker笔记4-部署 一、部署nginx二、部署Tomcat三、部署ESKibana3.1 部署ES3.2 部署kibana 一、部署nginx docker search nginx #搜索nginx的最新版本docker pull nginx #这里可以指定nginx版本&#xff0c;如果不指定&#xff0c;那么就拉取最新版本latestdocker run -d --na…...

有监督学习基础

基本概念 给定输入有为&#xff08;x,y&#xff09;&#xff0c;其中x表示学习特征&#xff0c;y表示输出&#xff0c;m表示输入总数&#xff0c;有监督学习旨在根据输入建立能够预测可能输出的模型&#xff0c;大致可以分为回归和分类两种&#xff0c;代表可能输出是无限的或…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...