當前位置:首頁 » 編程語言 » java後台代碼

java後台代碼

發布時間: 2025-08-11 18:36:13

java後台如何一直運行一個後台

1,保證主線程阻塞,即在執行main方法里添加阻塞代碼。

2,比如Java做伺服器時,接收soket信息,

	
ServerSocketserverSocket=newServerSocket(10086);//1024-65535的某個埠
//2、調用accept()方法開始監聽,等待客戶端的連接
while(true){}
Socketsocket=serverSocket.accept();
//3、獲取輸入流,並讀取客戶端信息
InputStreamis=socket.getInputStream();
InputStreamReaderisr=newInputStreamReader(is);
BufferedReaderbr=newBufferedReader(isr);
Stringinfo=null;
while((info=br.readLine())!=null){
System.out.println("我是伺服器,客戶端說:"+info);
}
}

3,添加阻塞代碼:

	Semaphoresemaphore=newSemaphore(0);
try{
semaphore.acquire();
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

這段代碼是不佔cpu的。它會讓出cpu的執行權。

Ⅱ jpush推送java後台怎麼調用

原創作品,可以轉載,但是請標注出處地址http://www.cnblogs.com/V1haoge/p/6439313.html

Java後台實現極光推送有兩種方式,一種是使用極光推送官方提供的推送請求API:https://api.jpush.cn/v3/push,另一種則是使用官方提供的第三方Java SDK,這里先進行第一種方式推送的實現代碼:

importorg.apache.http.HttpResponse;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.entity.StringEntity;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.util.EntityUtils;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importcom.alibaba.fastjson.JSONArray;
importnet.sf.json.JSONObject;
importsun.misc.BASE64Encoder;
/**
*java後台極光推送方式一:使用HttpAPI
*此種方式需要自定義http請求發送客戶端:HttpClient
*/
@SuppressWarnings({"deprecation","restriction"})
publicclassJiguangPush{
privatestaticfinalLoggerlog=LoggerFactory.getLogger(JiguangPush.class);
privateStringmasterSecret="xxxxxxxxxxxxxxxxxxxx";
privateStringappKey="xxxxxxxxxxxxxxxxxxx";
privateStringpushUrl="https://api.jpush.cn/v3/push";
privatebooleanapns_proction=true;
privateinttime_to_live=86400;
privatestaticfinalStringALERT="推送信息";
/**
*極光推送
*/
publicvoidjiguangPush(){
Stringalias="123456";//聲明別名
try{
Stringresult=push(pushUrl,alias,ALERT,appKey,masterSecret,apns_proction,time_to_live);
JSONObjectresData=JSONObject.fromObject(result);
if(resData.containsKey("error")){
log.info("針對別名為"+alias+"的信息推送失敗!");
JSONObjecterror=JSONObject.fromObject(resData.get("error"));
log.info("錯誤信息為:"+error.get("message").toString());
}
log.info("針對別名為"+alias+"的信息推送成功!");
}catch(Exceptione){
log.error("針對別名為"+alias+"的信息推送失敗!",e);
}
}

/**
*組裝極光推送專用json串
*@paramalias
*@paramalert
*@returnjson
*/
(Stringalias,Stringalert,booleanapns_proction,inttime_to_live){
JSONObjectjson=newJSONObject();
JSONArrayplatform=newJSONArray();//平台
platform.add("android");
platform.add("ios");

JSONObjectaudience=newJSONObject();//推送目標
JSONArrayalias1=newJSONArray();
alias1.add(alias);
audience.put("alias",alias1);

JSONObjectnotification=newJSONObject();//通知內容
JSONObjectandroid=newJSONObject();//android通知內容
android.put("alert",alert);
android.put("builder_id",1);
JSONObjectandroid_extras=newJSONObject();//android額外參數
android_extras.put("type","infomation");
android.put("extras",android_extras);

JSONObjectios=newJSONObject();//ios通知內容
ios.put("alert",alert);
ios.put("sound","default");
ios.put("badge","+1");
JSONObjectios_extras=newJSONObject();//ios額外參數
ios_extras.put("type","infomation");
ios.put("extras",ios_extras);
notification.put("android",android);
notification.put("ios",ios);

JSONObjectoptions=newJSONObject();//設置參數
options.put("time_to_live",Integer.valueOf(time_to_live));
options.put("apns_proction",apns_proction);

json.put("platform",platform);
json.put("audience",audience);
json.put("notification",notification);
json.put("options",options);
returnjson;

}

/**
*推送方法-調用極光API
*@paramreqUrl
*@paramalias
*@paramalert
*@returnresult
*/
publicstaticStringpush(StringreqUrl,Stringalias,Stringalert,StringappKey,StringmasterSecret,booleanapns_proction,inttime_to_live){
Stringbase64_auth_string=encryptBASE64(appKey+":"+masterSecret);
Stringauthorization="Basic"+base64_auth_string;
returnsendPostRequest(reqUrl,generateJson(alias,alert,apns_proction,time_to_live).toString(),"UTF-8",authorization);
}

/**
*發送Post請求(json格式)
*@paramreqURL
*@paramdata
*@paramencodeCharset
*@paramauthorization
*@returnresult
*/
@SuppressWarnings({"resource"})
(StringreqURL,Stringdata,StringencodeCharset,Stringauthorization){
HttpPosthttpPost=newHttpPost(reqURL);
HttpClientclient=newDefaultHttpClient();
HttpResponseresponse=null;
Stringresult="";
try{
StringEntityentity=newStringEntity(data,encodeCharset);
entity.setContentType("application/json");
httpPost.setEntity(entity);
httpPost.setHeader("Authorization",authorization.trim());
response=client.execute(httpPost);
result=EntityUtils.toString(response.getEntity(),encodeCharset);
}catch(Exceptione){
log.error("請求通信["+reqURL+"]時偶遇異常,堆棧軌跡如下",e);
}finally{
client.getConnectionManager().shutdown();
}
returnresult;
}
/**
*BASE64加密工具
*/
(Stringstr){
byte[]key=str.getBytes();
BASE64Encoderbase64Encoder=newBASE64Encoder();
Stringstrs=base64Encoder.encodeBuffer(key);
returnstrs;
}
}

以上代碼中使用的是第一種方式實現推送,下面介紹第二種方式:使用java SDK

importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importcn.jiguang.common.ClientConfig;
importcn.jiguang.common.resp.APIConnectionException;
importcn.jiguang.common.resp.APIRequestException;
importcn.jpush.api.JPushClient;
importcn.jpush.api.push.PushResult;
importcn.jpush.api.push.model.Options;
importcn.jpush.api.push.model.Platform;
importcn.jpush.api.push.model.PushPayload;
importcn.jpush.api.push.model.audience.Audience;
importcn.jpush.api.push.model.notification.AndroidNotification;
importcn.jpush.api.push.model.notification.IosNotification;
importcn.jpush.api.push.model.notification.Notification;
/**
*java後台極光推送方式二:使用JavaSDK
*/
@SuppressWarnings({"deprecation","restriction"})
publicclassJiguangPush{
privatestaticfinalLoggerlog=LoggerFactory.getLogger(JiguangPush.class);
="xxxxxxxxxxxxxxxxx";
privatestaticStringappKey="xxxxxxxxxxxxxxxx";
privatestaticfinalStringALERT="推送信息";
/**
*極光推送
*/
publicvoidjiguangPush(){
Stringalias="123456";//聲明別名
log.info("對別名"+alias+"的用戶推送信息");
PushResultresult=push(String.valueOf(alias),ALERT);
if(result!=null&&result.isResultOK()){
log.info("針對別名"+alias+"的信息推送成功!");
}else{
log.info("針對別名"+alias+"的信息推送失敗!");
}
}

/**
*生成極光推送對象PushPayload(採用javaSDK)
*@paramalias
*@paramalert
*@returnPushPayload
*/
_android_ios_alias_alert(Stringalias,Stringalert){
returnPushPayload.newBuilder()
.setPlatform(Platform.android_ios())
.setAudience(Audience.alias(alias))
.setNotification(Notification.newBuilder()
.addPlatformNotification(AndroidNotification.newBuilder()
.addExtra("type","infomation")
.setAlert(alert)
.build())
.addPlatformNotification(IosNotification.newBuilder()
.addExtra("type","infomation")
.setAlert(alert)
.build())
.build())
.setOptions(Options.newBuilder()
.setApnsProction(false)//true-推送生產環境false-推送開發環境(測試使用參數)
.setTimeToLive(90)//消息在JPush伺服器的失效時間(測試使用參數)
.build())
.build();
}
/**
*極光推送方法(採用javaSDK)
*@paramalias
*@paramalert
*@returnPushResult
*/
publicstaticPushResultpush(Stringalias,Stringalert){
ClientConfigclientConfig=ClientConfig.getInstance();
JPushClientjpushClient=newJPushClient(masterSecret,appKey,null,clientConfig);
PushPayloadpayload=buildPushObject_android_ios_alias_alert(alias,alert);
try{
returnjpushClient.sendPush(payload);
}catch(APIConnectionExceptione){
log.error("Connectionerror.Shouldretrylater.",e);
returnnull;
}catch(APIRequestExceptione){
log.error("ErrorresponsefromJPushserver.Shouldreviewandfixit.",e);
log.info("HTTPStatus:"+e.getStatus());
log.info("ErrorCode:"+e.getErrorCode());
log.info("ErrorMessage:"+e.getErrorMessage());
log.info("MsgID:"+e.getMsgId());
returnnull;
}
}
}

可以看出使用Java SDK實現推送的方式很簡單,代碼量也少,理解起來也不難,官方提供的SDK中講很多內容都實現了,我們只是需要配置一下信息,然後發起推送即可。需要注意的是使用第二種方式,需要導入極光官網提供的jar包。

直接在maven中的pom文件中加入:

<dependency>
<groupId>cn.jpush.api</groupId>
<artifactId>jpush-client</artifactId>
<version>3.2.15</version>
</dependency>

注意:在這里極有可能會出現jar包沖突:具體哪個包我也忘記了,好像是個日誌包,你找到後刪除即可。

原本我們項目中也是採用第二種方式實現的,但是最後在提交代碼時發現一個問題,那就是雖然我們只是帶入了官網提供的那三個jar包,但是最後一統計,竟然無緣無故增多了80+個jar包,如此多的jar包提交過於臃腫,而且不現實,所以才臨時改變方案,採用第一種方式進行編碼。

代碼中採用的是別名方式進行推送,需要在在手機APP端進行別名設置,最好就是在用戶登錄之後就設置好,這樣只要用戶登錄一次,它的綁定別名就可以保存到極光伺服器,而我們推送時,指定這個別名,就能將信息推送到對應用戶的手機上。

其實我們發起推送請求,只是將信息發送到了極光伺服器之上,這個信息有一個保存時限,默認一天,只要用戶登錄手機APP,極光伺服器就會將信息自動推送到對應別名的手機上,由此可見,信息並非由我們後天直接推送到手機,而是通過極光伺服器這個中轉站,而這正式極光的工作。

注意:這里告知一個技巧,這個別名設置的時候,其實直接將用戶ID設置為別名即可,既方便,又安全,不用再去想辦法生成一個唯一的串來進行標識,甚至需要在後台資料庫中用戶表中新增欄位。

Ⅲ 怎麼查看一個springboot項目的源代碼在哪

要查看基於Spring Boot的Java項目的代碼,您需要進行以下步驟:

  • 查看項目結構:您可以在部署項目的位置找到項目文件夾。打開項目文件夾並查看項目結構。您可以找到源代碼文件夾(通常是「src」文件夾),該文件夾中包含Java源代碼辯慶文件。您也可以找到配置文件,資源文件和其他相關文件。

  • 查看源代碼:在源代碼文件夾中,您可以找到Java文件,這些文件包含應用程序的代碼邏輯。您可以使用任何文本編輯器或IDE(集成開發環境)打開這些文件。IDE(如Eclipse、IntelliJ IDEA)通常提供更好的開發環境和代碼閱讀功能。

  • 尋找關鍵詞:如果您不知道源代碼的特定位置,請嘗試在項目中搜索關鍵詞或特定函數。您可以使用文本編攜慶握輯器或IDE的搜索功能來搜索關鍵詞。

  • 調試代碼:如果您想深入了解代碼差胡的實際執行過程,可以使用IDE的調試工具。在調試模式下,您可以單步執行代碼,並查看變數值和執行結果。

  • 總之,查看基於Spring Boot的Java項目代碼需要一定的編程知識和經驗。如果您不熟悉Java編程語言或Spring框架,建議您先學習這些知識,然後再嘗試查看項目代碼。

Ⅳ ...怎麼查看導入的一個java項目的後台各功能源代碼在哪

要查看導入的一個Java項目的後台各功能源代碼位置,可以按照以下步驟進行:

  1. 確認項目的MVC結構

    • 大多數Java Web項目採用MVC架構。在這種架構中,Controller層負責處理HTTP請求。
  2. 找到Controller包

    • 在IDE中,項目的源代碼通常按包組織。Controller層的代碼一般位於名為controller或類似名稱的包中。
  3. 使用瀏覽器開發者控制台

    • 打開你的Web應用程序,並使用瀏覽器的開發者控制台。
    • 在「網路」標簽頁中,觀察發出的HTTP請求。注意請求的URL路徑。
  4. 在IDE中搜索請求路徑

    • 回到IDE,右鍵點擊項目根目錄,選擇「Find in Path」。
    • 輸入從瀏覽器開發者控制台中獲取的請求路徑。例如,如果請求路徑是/getinfo,則只輸入getinfo進行搜索。
    • 這應該會幫助你定位到處理該請求的Controller介面源代碼。
  5. 使用Restful Toolkit插件

    • 如果直接搜索路徑沒有結果,可以考慮在IDE中安裝Restful Toolkit插件。
    • 安裝並重啟IDE後,使用插件提供的快捷鍵來搜索RESTful介面。這可能會提供更直接的介面定位方式。

總結: 首先確認項目的MVC結構,並找到Controller包。 使用瀏覽器開發者控制台找到具體的請求路徑。 在IDE中使用「Find in Path」功能搜索請求路徑,定位到Controller源代碼。 如果需要,可以安裝並使用Restful Toolkit插件來輔助搜索。

熱點內容
百度雲種子伺服器異常 發布:2025-08-11 20:43:19 瀏覽:194
三星忘記備用密碼怎麼辦 發布:2025-08-11 20:19:57 瀏覽:841
假4軸編程 發布:2025-08-11 20:12:39 瀏覽:873
文件夾後退 發布:2025-08-11 20:00:38 瀏覽:904
安卓手機怎麼禁用所有軟體 發布:2025-08-11 19:50:33 瀏覽:787
思科怎樣搭建ftp伺服器 發布:2025-08-11 19:50:25 瀏覽:616
dvd光碟加密怎麼復制 發布:2025-08-11 19:49:14 瀏覽:527
伺服器端ip和埠號是固定的嗎 發布:2025-08-11 19:47:36 瀏覽:15
安卓系統書哪個好用 發布:2025-08-11 19:47:00 瀏覽:330
遠程主機允許匿名ftp登錄 發布:2025-08-11 19:00:45 瀏覽:210