在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/ Java問答
情已空 回答

jackson 字段動態(tài)過濾

https://github.com/bohnman/squiggly-filter-jackson
https://github.com/narusas/SpringMvcJacksonFilter
https://github.com/shihyuho/jackson-dynamic-filter

  1. 使用AOP;自己定義注解,然后在返回的時候加上需要過濾的字段.

這是我的工具類 
https://github.com/yujunhao8831/spring-boot-start-current/blob/master/aidijing-common/src/main/java/com/aidijing/common/util/JsonUtils.java
  1. 實現(xiàn) ResponseBodyAdvice<T> 接口,如果這樣,那么就需要使用統(tǒng)一的返回值類型,把之前的返回值包裝起來.
    這樣在Spring Response 寫出去之前,你可以對這些數(shù)據(jù)進行處理,還是使用jackson的過濾特性.
    我之前就是這樣做的, https://github.com/yujunhao88... 你可以參考下

  2. 返回之前就立馬進行過濾.
    我之后準(zhǔn)備采用這個, https://github.com/yujunhao88...
    你可以參考下,不過這不是最終的,還在完善中

涼汐 回答

因為復(fù)制的時候要保留當(dāng)前項目的包結(jié)構(gòu),例如你把一個包com.google.xxx,復(fù)制到自己的項目com.abc.example里,復(fù)制過來的包應(yīng)該是com.abc.example.xxx,而不可能是com.abc.example.com.google.xxx,而當(dāng)前項目的包沒有那么多前綴的話,那就只保留xxx的名字了,當(dāng)然你可以自己把當(dāng)前項目的包名改成com.google,直接在包文件夾上右擊refactor->rename就可以了

近義詞 回答

Service調(diào)用其他ORM層怎么了,要不分層還有什么意義,直接去掉Service不行了

尐飯團 回答

看了下頁面主機是Nginx,方便的話改下配置,用反向代理的方式會比前端折騰跨域省事的多。

遲月 回答

定義一個struct

type Param struct {
    UserId int  `json:"userid"`
    Username string `json:"username,omitempty"`
    Userpass string `json:"userpass,omitempty"`
}

var v Param
json.Unmarshal(c.Ctx.Input.RequestBody, &v)
舊酒館 回答

你把change方法里的str = "test ok";換成this.str = "test ok";感受一下?

孤客 回答
另一個頁面中用$.cookie('token')取,但是一直是undefined。

基本上,就是一個過期的cookie。
打開開發(fā)者工具,選擇Application,選中你要讀取的cookie,查看Expires。

憶往昔 回答

一般是2,作為一個第三方支付,是需要避免被跨域腳本攻擊的,如果你使用的第三方服務(wù)是區(qū)分測試環(huán)境和生產(chǎn)環(huán)境的(一般都是很老的系統(tǒng)),localhost有時候會被當(dāng)成調(diào)試用,并且這類型的服務(wù)都是不允許前端跳轉(zhuǎn)的。

現(xiàn)在一般的支付系統(tǒng)都不再區(qū)分測試和生產(chǎn)環(huán)境,開發(fā)調(diào)試也必須在生產(chǎn)環(huán)境中獲得完整授權(quán),比如localhost也需要在你自己的后臺進行授權(quán)。

笑忘初 回答

控制臺有報錯的,這個api沒有設(shè)置允許跨域,可以后端轉(zhuǎn)發(fā)
建議你了解下js跨域相關(guān)的知識

$.get('https://way.jd.com/jisuapi/newSearch?keyword=taobao&appkey=68b4fd6acabbe498b29fdc67d3f23203',function(response){console.log(response);});

圖片描述

筱饞貓 回答

建議使用Path類操作文件,涉及文件監(jiān)聽事件、文件權(quán)限等高級特性
下面是隨便在博客上找的,東西比較雜,還需要你自己看API

package filespaths;
import org.junit.Test;
import java.io.*;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
/**
 * @Author kingboy
 * @Date 2017/4/13 11:05
 * @Description Path is used to Path Sample
 * @email kingboyworld@163.com
 */
public class PathTest {
  private static String separator = File.separator;
  /**
   * 構(gòu)建Path
   */
  @Test
  public void constructon(){
    //1.Paths
    Path path = Paths.get("/Users/kingboy/Desktop/");
    Path path1 = Paths.get(URI.create("/Users/kingboy/Desktop/"));
    //2.FileSystems
    Path path2 = FileSystems.getDefault().getPath("/Users/kingboy/Desktop/");
    //3.File
    Path path3 = new File("/Users/kingboy/Desktop/").toPath();
  }
  /**
   * 創(chuàng)建一個空文件/文件夾
   * @throws IOException
   */
  @Test
  public void create() throws IOException {
    //文件夾
    Path path = Paths.get("/Users/kingboy/Desktop/hello");
    if(!Files.exists(path)){
      Files.createDirectory(path);
      //創(chuàng)建多個目錄
      //Files.createDirectories(path);
    }
    //文件
    Path path1 = Paths.get("/Users/kingboy/Desktop/helloFile");
    if(Files.exists(path1)){
      Files.createFile(path1);
    }
  }
  /**
   * 文件屬性
   */
  @Test
  public void getFileProperties() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/text.txt");
    System.out.println(Files.getLastModifiedTime(path));//最后修改時間
    System.out.println(Files.getOwner(path));//擁有者
    System.out.println(Files.getPosixFilePermissions(path));//權(quán)限
    System.out.println(Files.size(path));//文件大小
  }
  /**
   * 讀取一個文本文件
   */
  @Test
  public void readText() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/text.txt");
    //通過bufferedReader讀取
    BufferedReader bufferedReader = Files.newBufferedReader(path, StandardCharsets.UTF_8);//文件編碼
    StringBuilder sb = new StringBuilder();
    String tempString = null;
    while ((tempString = bufferedReader.readLine())!=null){
      sb = sb.append(tempString);
    }
    System.out.println(sb);
    //通過Files方法readAllLines
    List<String> strings = Files.readAllLines(path);
    strings.forEach(s -> System.out.print(s));
    //輸出結(jié)果
    //adsfasdfasdfadsfasdfgsdfsdffsdfsdf
    //adsfasdfasdfadsfasdfgsdfsdffsdfsdf
  }
  /**
   * 拿到文件輸入流
   * @throws IOException
   */
  @Test
  public void getInputStream() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/text.txt");
    InputStream inputStream = Files.newInputStream(path);
  }
  /**
   * 文件寫操作
   */
  @Test
  public void writeFile() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/writeFile");
    BufferedWriter bufferedWriter = Files.newBufferedWriter(path);
    String str = "write file test";
    bufferedWriter.write(str);
    bufferedWriter.flush();
    bufferedWriter.close();
  }
  /**
   * 遍歷一個文件夾
   */
  @Test
  public void traverseDirectory() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/");
    Stream<Path> list = Files.list(path);
    list.forEach(p -> {
      System.out.println(p.getFileName());
    });
  }
  /**
   * 遍歷文件樹
   */
  @Test
  public void traverseTree() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/");
    Stream<Path> walk = Files.walk(path);
    walk.forEach(path1 -> {
//      System.out.println(path1.getRoot());//根目錄
      System.out.println(path1.getFileName());//文件名
//      System.out.println(path1.getParent());//上級目錄
//      System.out.println(path1.getFileSystem());//文件系統(tǒng)
    });
    //還有種方式Files.walkFileTree()
  }
  /**
   * 文件復(fù)制
   */
  @Test
  public void copyFile() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/text.txt");
    Path path2 = Paths.get("/Users/kingboy/Desktop/hello.txt");
    Files.copy(path,path2);
  }
  /**
   * 讀取權(quán)限見上面示例,設(shè)置權(quán)限
   */
  @Test
  public void writePermission() throws IOException {
    Path path = Paths.get("/Users/kingboy/Desktop/text.txt");
    Set<PosixFilePermission> permissionSet = new HashSet<>();
    permissionSet.add(PosixFilePermission.GROUP_WRITE);
    permissionSet.add(PosixFilePermission.OWNER_EXECUTE);
    Files.setPosixFilePermissions(path,permissionSet);
  }
  //還有很多其他操作Api,自己查看方法名,很容易就能分辨出功能。
 }
抱緊我 回答
背景
目前項目中會使用了Iaas中的vm,所有操作都是通過ssh連上去的。pm表示要不要寫個agent在里面用,現(xiàn)在每次操作都ssh一下都很惡心。

談?wù)勎艺J(rèn)為使用ssh的好處:
代碼集中在一處,不需要分發(fā)
不需要維護agent這么一個進程的生命周期,以及檢測它的心跳
缺點:

不支持異步
我想問的問題
ssh的開銷大嗎?在我看來似乎和寫一個基于web server 的agent差不多
大家一般是如何選型的?為什么這么選?

這個東西以前做過類似的,也有過反思,甚至設(shè)計的原型和你說的一模一樣。

例如,我為什么要用基于web server的agent呢,我干嘛不用tcp長連接到服務(wù)端,這樣執(zhí)行的結(jié)果可以流式傳輸?shù)秸{(diào)用方,他那邊顯示起來比較平滑,不用每個命令執(zhí)行完等結(jié)果。
但是我這樣搞的話,中控端流量和日志存儲就成了問題了啊。
如果我的業(yè)務(wù)都在云上,如果不同機房網(wǎng)絡(luò)不互通的話,我又要蛋疼地搞點兼容的事情……
例如,agent的生命周期,為什么我要檢測她的心跳呢?機器上萬臺的話,任何可能的事情都會發(fā)生啊,修復(fù)起來太蛋疼了。但是我不處理的話……所以后面我會考慮用ssh來修復(fù)agent啊。

我假設(shè)你所有的機器都是linux,發(fā)行版為同一種。

SSH:

  1. 依賴于ssh的速度,一旦網(wǎng)絡(luò)抖動,ssh操作便會失敗。(低概率/風(fēng)險)
  2. 依賴于key,如果你安全策略不夠嚴(yán)謹(jǐn),或者管理比不嚴(yán)格的話,那么必然會造成root key的泛濫。(安全風(fēng)險高)
  3. 開源技術(shù)很成熟,你很容易就能用幾行python包裝出一個比較完善的腳本,或者寫出一個ansible的配置。(用起來簡單)

AGENT:

  1. 依賴于中控端。如果你不打算搞個中控端,那和ssh沒本質(zhì)區(qū)別。
  2. 其實和SSH一樣,依賴于網(wǎng)絡(luò),一旦抖動也會出問題。
  3. ?;?。如果你的公司稍微大點的話,會有各種亂七八糟的原因能讓你的agent不起作用,甚至被kill。雖然處理起來沒啥問題,但是這個活總得有人來干。(低風(fēng)險)
  4. 維護。(成本中等)
  5. agent其實可以不用中間代碼,因為一方面工作量比較大,一方面教育成本和學(xué)習(xí)成本也比較高。只是向agent下發(fā)shell腳本、python腳本等也可以完成相同的功能,沒問題的。

大公司有各種審計、安全方面的需求,會把這種事情統(tǒng)一到某個地方,搞個中控端,所有的批量操作必須通過中控端。模式也不一樣,有些用agent,有些用ssh,只有中控端才是必須要有的。

再說的直白點,
你是個小公司,小于30臺機器或者小于50臺機器的話,不建議考慮agent模式。
沒那個需求,投入的成本大而收效低。
基于各種第三方框架包裝一個就好了嘛,嫌麻煩就ansible用起。

祉小皓 回答

可以使用org.apache.poi庫,具體的細節(jié)還是自己查文檔,畢竟我也沒實操過

氕氘氚 回答

UI不美觀,你可以把input隱藏,用js觸發(fā),頁面上用其他元素做樣式,應(yīng)該可以

抱緊我 回答

2make 是用來編譯的,它從Makefile中讀取指令,然后編譯。

3make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。

同樣的程序,mac未拋出異常,正常執(zhí)行3分鐘收到數(shù)據(jù)
https://docs.python.org/2.7/l...
看看你客戶端的timeout默認(rèn)是None么,可能版本不同
python 2.7.10

墨小白 回答

api中,你不應(yīng)該暴露key和加密方法到客戶端,你應(yīng)該采用https + 用戶token的方式訪問你后端接口

久愛她 回答

一種在工作中實踐過的可行解決方案:

  1. 后端記錄狀態(tài)(比如可以持久化到數(shù)據(jù)庫,有個字段叫status),status表明執(zhí)行到的階段,比如B事務(wù)完成后,將此字段置為B,C事務(wù)完成后,將此字段置為C
  2. 前端每隔一段時間發(fā)請求輪訓(xùn)后端(根據(jù)時效性要求決定此輪詢間隔,之前做個一個競拍系統(tǒng),前端輪詢間隔為3秒),后端返回數(shù)據(jù)庫中的狀態(tài)字段,即status,前端就能知道目前執(zhí)行到哪個階段了

如果覺得這種方案不太優(yōu)雅,可以考慮websocket