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

鍍金池/ 問答/ Java問答
你好胸 回答

先去學(xué)學(xué)json的格式吧,不能用'a'模式一個(gè)一個(gè)寫open('name.json','a'),你追加的方式等于每一行是一個(gè)json,在一起不符合json格式當(dāng)然解析報(bào)錯(cuò)了

import  json
def save_name(name):
    #print("查無此人,請(qǐng)登記。")
    #name = input("\n 請(qǐng)輸入你的名字:") 不要再輸入了,萬一他又輸了一個(gè)已存在的名字,重復(fù)了啊
    with open('name.json','w') as file:
        json.dump(name,file)
    print("你的名字已經(jīng)登記"+str(name[-1]))
    return name[-1]

def find_name(fn):
    try:
        file = open('name.json','r')
    except FileNotFoundError:
       return save_name([fn])
    else:
        name = json.load(file)
        file.close()
        """for i in name:
            if fn == i:
                return fn
            else:  一次不對(duì)就存名字,后面對(duì)了你不就錯(cuò)了
              return save_name()"""
        if fn in name:
            return fn
        else:
            name.append(fn)
            return save_name(name)

def hello_name():
    name = input("\n 請(qǐng)輸入你的名字:")
    print("歡迎你"+str(find_name(name)))
    
hello_name()
不將就 回答
function f(arr) {
  var ret = []

  function fi(result, i) {
    if (i === -1) {
      ret.push(result)
    } else {
      let items = arr[i]
      if (!Array.isArray(items)) {
        items = [items]
      }
      items.forEach(item => {
        fi([item,...result], i - 1)
      });
    }
  }
  fi([], arr.length - 1)
  return ret
}
const arr = [[1,2],3,[4,5,6]];
console.log(f(arr))
不歸路 回答

找到原因了:
是shiro的標(biāo)簽不支持導(dǎo)致的頁面渲染錯(cuò)誤,暫未找到對(duì)應(yīng)的解決辦法

2018年3月18日18:18:51更新:

錯(cuò)誤解決辦法如下:

//相當(dāng)于調(diào)用SecurityUtils.setSecurityManager(securityManager)
@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean(SecurityManager securityManager){
    MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean();
    bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager");
    bean.setArguments(securityManager);
    return bean;
}
離夢(mèng) 回答

1、promotion failure,是在minor gc過程中,survivor的剩余空間不足以容納eden及當(dāng)前在用survivor區(qū)間存活對(duì)象,只能將容納不下的對(duì)象移到年老代(promotion),而此時(shí)年老代滿了無法容納更多對(duì)象,通常伴隨full gc,因而導(dǎo)致的promotion failure。這種情況通常需要增加年輕代大小,盡量讓新生對(duì)象在年輕代的時(shí)候盡量清理掉。
2、concurrent mode failure,主要是由于cms的無法處理浮動(dòng)垃圾(Floating Garbage)引起的。這個(gè)跟cms的機(jī)制有關(guān)。cms的并發(fā)清理階段,用戶線程還在運(yùn)行,因此不斷有新的垃圾產(chǎn)生,而這些垃圾不在這次清理標(biāo)記的范疇里頭,cms無法再本次gc清除掉,這些就是浮動(dòng)垃圾。由于這種機(jī)制,cms年老代回收的閾值不能太高,否則就容易預(yù)留的內(nèi)存空間很可能不夠(因?yàn)楸敬蝕c同時(shí)還有浮動(dòng)垃圾產(chǎn)生),從而導(dǎo)致concurrent mode failure發(fā)生。可以通過-XX:CMSInitiatingOccupancyFraction的值來調(diào)優(yōu)。

執(zhí)念 回答

關(guān)閉自動(dòng)編譯,需要編譯的時(shí)候使用 Command+F9 快捷鍵

初心 回答

channel本來就是非阻塞的,所以獲取到的并不是完全實(shí)時(shí)的數(shù)據(jù),可能會(huì)有延遲,所以兩次發(fā)送的數(shù)據(jù)服務(wù)端一次接收本身就是正常的。

關(guān)鍵的是,你不應(yīng)該以“幀”來分隔數(shù)據(jù),而應(yīng)該自己約定一種分割方法。比如每一個(gè)數(shù)據(jù)都附帶一個(gè)length,或者以若干個(gè)特殊的字節(jié)來作為分隔符,等。

莓森 回答

可以試試使用Spring boot的多環(huán)境切換.在測(cè)試環(huán)境的配置文件加入security.basic.enable=falsemanagement.security.enabled=false關(guān)閉Spring Security的功能.在測(cè)試用例中加入@ActiveProfiles切換成測(cè)試環(huán)境.

傲寒 回答

直接瀏覽器訪問的話,先登錄再調(diào)試其他接口。如果用其他工具的話,在瀏覽器登錄然后把你那個(gè)token帶上就可以了

久舊酒 回答

問題一:

  1. Collectors.toMap() 的方法簽名是:
* @param <T> the type of the input elements
* @param <K> the output type of the key mapping function
* @param <U> the output type of the value mapping function
* @param keyMapper a mapping function to produce keys
* @param valueMapper a mapping function to produce values
* @param mergeFunction a merge function, used to resolve collisions between
*                      values associated with the same key, as supplied
*                      to {@link Map#merge(Object, Object, BiFunction)}
public static <T, K, U>
    Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
                                    Function<? super T, ? extends U> valueMapper,
                                    BinaryOperator<U> mergeFunction)

簡單來說,keyMapper 用來根據(jù) stream 的內(nèi)容生成 HashMap 的鍵,valueMapper 用來根據(jù) stream 的內(nèi)容生成 HashMap 的值,mergeFunction 是用來處理 某兩個(gè)值屬于同一個(gè) key 時(shí)使用哪個(gè)值 的。

  1. PositionContent::getNameJava 8 里用來表示 lambdaeta 轉(zhuǎn)換概念的操作符,這個(gè)你可以去看看 Java 8 函數(shù)式編程 的相關(guān)文章。
  2. Function.identity() 注釋里有講這個(gè)是干嘛的:
Returns a function that always returns its input argument.

返回傳入的參數(shù)

  1. (key1, key2) -> key2 這個(gè)還是 lambda 表達(dá)式,就是剛才那個(gè) mergeFunction,這里的作用是使用新的值覆蓋舊的值。
  2. 總的來說,就是把 List<PositionContent> list 里的每個(gè)元素映射到

一個(gè) keyPositionContent 實(shí)例的 name ,value 為當(dāng)前元素的 HashMap。

問題二:

這個(gè)點(diǎn)在 javascript 里叫 鏈?zhǔn)秸{(diào)用,簡單來說就是一個(gè)類的方法返回當(dāng)前實(shí)例,這樣就可以一直 .func1().func2() 這樣下去;

具體到這里的例子,在 Java 里這個(gè)叫 構(gòu)造器模式,你可以去了解一下。

柚稚 回答

No module named 'apachetest'

這都寫得很清楚啦,沒有apachetest模塊

鐧簞噯 回答

用問答寫文章?!

浪婳 回答

向 map 這樣的高級(jí)遍歷函數(shù),內(nèi)部也是用 for 去循環(huán)的。

艷骨 回答

具體指哪個(gè)為位置的緩存?

奧特蛋 回答

第一步,寫一個(gè)類實(shí)現(xiàn)Principal
例如:

public class WebsocketUserVO implements Principal {
    private  String id;
    public WebsocketUserVO(String id) {
        this.id = id;
    }

    @Override
    public String getName() {
        return id;
    }
}

第二步,在創(chuàng)建連接的時(shí)候,設(shè)置用戶

public class WebsocketUserInterceptor extends ChannelInterceptorAdapter {

    @Autowired
    private WebSocketServ webSocketServ;

    @Autowired
    private SimpUserRegistry userRegistry;

    @SuppressWarnings("rawtypes")
    @Override
    public Message<?> preSend(Message<?> message, MessageChannel channel) {
        StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
        if (StompCommand.CONNECT.equals(accessor.getCommand())) {
            System.out.println("連接success");
            Object raw = message.getHeaders().get(SimpMessageHeaderAccessor.NATIVE_HEADERS);
            if (raw instanceof Map) {
                Object name = ((Map) raw).get("name");
                if (name instanceof LinkedList) {
                    String id = ((LinkedList) name).get(0).toString();
                    //設(shè)置當(dāng)前訪問器的認(rèn)證用戶
                    accessor.setUser(new WebsocketUserVO(id));
                    webSocketServ.pushOnlineUser(id);
                }
            }
        } else if (StompCommand.DISCONNECT.equals(accessor.getCommand())) {
            //點(diǎn)擊斷開連接,這里會(huì)執(zhí)行兩次,第二次執(zhí)行的時(shí)候,message.getHeaders.size()=5,第一次是6。直接關(guān)閉瀏覽器,只會(huì)執(zhí)行一次,size是5。
            System.out.println("斷開連接");
            WebsocketUserVO vo = (WebsocketUserVO) message.getHeaders().get(SimpMessageHeaderAccessor.USER_HEADER);

            //  如果同時(shí)發(fā)生兩個(gè)連接,只有都斷開才能叫做不在線
            if (message.getHeaders().size() == 5&&StringUtils.isBlank(userRegistry.getUser(vo.getName()))) {
                webSocketServ.removeOnlineUser(vo.getName());
            }
        }
        return message;
    }

}

第三步,發(fā)送消息

   messagingTemplate.convertAndSendToUser(userId,url, MVCUtil.success(object));
   這里的userId,就是WebsocketUserVO里面getName返回的值

好難瘦 回答

有很多好東西可以做數(shù)據(jù)庫相關(guān)的操作。

  1. JDBC:寫SQL進(jìn)行查詢
  2. MyBatis:對(duì)象映射
  3. Hibernate:對(duì)象映射

另外,main方法的args是可以傳參數(shù)的。你可以把參數(shù)傳入,然后用最笨的辦法把參數(shù)和SQL用String.format組合起來。
比如通過args傳入的參數(shù)是ABC,代碼可以是如下這樣寫:

String.format("select * from table where name=%s and age=%s and sex=%s", A, B, C)
柚稚 回答

columns里還有個(gè)render函數(shù),可以自定義顯示方式,多看文檔

哎呦喂 回答

代碼重構(gòu)是在源碼級(jí)別的改動(dòng),不會(huì)多出什么依賴,你要是理解了代碼,就放心的重構(gòu)吧,先把原先的代碼備份好,以防萬一 ;)