原创 XMPP通信中的離線消息

ConnectionConfiguration config = new ConnectionConfiguration("192.168.1.100", 5222); config.setSecurityMode(SecurityM

原创 新型生產者消費者解決方案

問題描述 實現生產者消費者算法,多個線程同時生產數據,多個線程同時消費數據,要求容量空間有上限,消費者和生產者需要相互等待。 解題思路 傳統思路: 利用java的wait和notify實現,如果使用數組,則每次放和取都加鎖,並判斷

原创 利用openfire和smark的即時通信

服務器:openfire 客戶端程序:smark編寫 首先安裝openfire,下載客戶端後直接安裝即可,數據庫可以用openfire自身的,也可以用自己的數據庫,只要按提示設置好參數即可 之後,就可以用smark寫一個客戶端測試與ope

原创 兩個線程,順序打印從1-100的數字,一個線程打印奇數,一個線程打印偶數

需求描述 這裏考察對線程鎖的使用,多線程情況下如何控制各自的執行時間段。 解題思路 我想到的有兩種接替思路,一種是使用標誌位,一種是使用線程鎖。 使用標誌位的思路如下: 兩個線程一個打印偶數,一個打印奇數,兩個線程要交叉執行,所以

原创 八皇后算法解析

算法描述 摘自百度: 八皇后問題是一個以國際象棋爲背景的問題:如何能夠在 8×8 的國際象棋棋盤上放置八個皇后,使得任何一個皇后都無法直接吃掉其他的皇后?爲了達到此目的,任兩個皇后都不能處於同一條橫行、縱行或斜線上。 解題思路

原创 java全局異常捕獲

Thread.setDefaultUncaughtException() 捕獲所有程序爲直接處理的,由虛擬機拋出的異常。 Thread t = new Thread(); t.setUncaughtException() 捕獲該線程中

原创 spring設置多個ViewResolver

ViewResolver用來解析視圖文件,如常用的jsp類型的文件。 <bean id ="jspViewResolver" class= "org.springframework.web.servlet.view.InternalRes

原创 JavaScript回調方法中使用外部變量出現的問題

測試用例 function cprint(str) { console.log(str); } function temp() { for(var i=0; i<3; i++) { $("#bt"+i).

原创 java字符分割

public String[] split(String regex) { return split(regex, 0); } 可以接受普通字符,也可以是正則表達式。 public String[] split(Strin

原创 disruptor的使用和分析

disruptor:3.3.4 jdk:1.8 介紹: disruptor是典型的生產者和消費者模式,disruptor使用RingBuffer存放數據,sequence管理生產和消費的位置(long類型,遞增),生產者要生產數據的時候

原创 java版的生產者消費者模型

package com.qing.java8; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.

原创 android中引入第三方包,編譯通過,但運行的時候報 java.lang.NoClassDefFoundError

原因是,引入的第三方jar包沒有被編譯到dex文件中,在對應的工程目錄下bin\dexedLibs,可以看見被編譯到dex下的所有類包。 解決辦法之一:在libs下新建文件夾,複製第三方包到該文件夾下---->builde path---

原创 jad eclipse插件的安裝問題

在plugin中放入插件後,在eclipse中的設置 在java---jadClipse中設置jad.exe所在路徑以及源碼保存路徑 在General---Editors-----File-Associations中設置 *.class

原创 HttpClient設置請求頭

httpclient:4.5.1 httpcore:4.4.3 public static String USER_AGENT[] = { "Mozilla/5.0 (Windows NT 10.0; WOW64; rv

原创 js中map中元素排序

方法如下: function sort() { var map = {"1":3, "2":5, "3":6, "4":1}; var keys = ["1", "2", "3", "4"]; var result