Time of Update: 2017-01-13
在多線程編程時,常常需要解決線程同步問題,在上一節講得BlockQueue的take和put方法,是通過阻塞來控制生產者和消費者執行流程,它其實也是在解決線程同步問題。另外線上程同步問題還可以通過很多方式解決比如訊號量,柵欄,閉鎖。今天所說的CountDownLatch就是一種閉鎖同步類,它的作用就像一扇門,在達到結束狀態之前門是關閉的,並且沒有任何線程可以通過這扇門,當達到了結束狀態,門開啟,所有的線程可以通過。並且結束後,不會再關閉。CountDownLatch簡介CountDownLatc
Time of Update: 2017-01-13
網上很多資料在描述Java記憶體模型的時候,都會介紹有一個主存,然後每個背景工作執行緒有自己的工作記憶體。資料在主存中會有一份,在工作記憶體中也有一份。工作記憶體和主存之間會有各種原子操作去進行同步。下圖來源於 這篇Blog但是由於Java版本的不斷演變,記憶體模型也進行了改變。本文只講述Java記憶體模型的一些特性,無論是新的記憶體模型還是舊的記憶體模型,在明白了這些特性以後,看起來也會更加清晰。1.
Time of Update: 2017-01-13
installbrew install thrift例子maven<dependencies> <dependency> <groupId>org.apache.thrift</groupId>
Time of Update: 2017-01-13
定時任務代碼:public class ChatHistoryTimerListener implements ServletContextListener { String chatUrl="http://a1.easemob.com/***/********/chatmessages"; private ChatHistoryService chService; private Timer timer=null; private
Time of Update: 2017-01-13
資料list:list.add(bcHistory);批量插入: 代碼如下複製代碼 try { jt.batchUpdate( "insert into b_chat_history (id,from_phone,from_user,to_phone,to_user,type,msg,url,thumb,length,timestamp) value (?,?,?,?,?,?,?,?,?,?,?
Time of Update: 2017-01-13
最近在開發中使用到java對接一個體溫檢測裝置,業務是用過掃描二維碼確認身份,然後檢測體溫,最後提交到伺服器,過程中使用到了十六進位字串和整數、字串、漢字等之間的互相轉換。socket接收代碼: 代碼如下複製代碼 InputStream input = null; public void run() { System.out.println("111111111
Time of Update: 2017-01-13
在Excel中的日期格式,比如2009-12-24將其轉化為數字格式時變成了40171,在用java處理的時候,讀取的也將是40171。如果使用POI處理Excel中的日期類型的儲存格時,如果僅僅是判斷它是否為日期類型的話,最終會以NUMERIC類型來處理。正確的處理方法是先判斷儲存格的類型是否則NUMERIC類型,然後再判斷儲存格是否為日期格式,如果是的話,建立一個日期格式,再將儲存格的內容以這個日期格式顯示出來。如果儲存格不是日期格式,那麼則直接得到NUMERIC的值就行了。具體代碼如下:主
Time of Update: 2017-01-13
近年來,二維碼的使用越來越風生水起,筆者最近手頭也遇到了一個需要使用二維碼掃碼登入網站的活,所以研究了一下這一套機制,並用代碼實現了整個流程,接下來就和大家聊聊二維碼登入及的那些事兒。二維碼原理二維碼是微信搞起來的,當年微信掃碼二維碼登入網頁微信的時候,感覺很神奇,然而,我們瞭解了它的原理,也就沒那麼神奇了。二維碼實際上就是通過黑白的點陣包含了一個url請求資訊。端上掃碼,請求url,做對應的操作。一般性掃碼操作的原理微信登入、支付寶掃碼支付都是這個原理:1.
Time of Update: 2017-01-13
注意這裡產生的是檔案不是檔案目錄傳檔案具體路徑就行了。。剛剛傻×了。 File file=new File(fileAllName);FileWriter fw=new FileWriter(file);在Java的 FileWriter 方法時 系統拋出了異常java.io.FileNotFoundException: D:\xxx\yyy (拒絕訪問。)at java.io.FileOutputStream.open(Native Method)at
Time of Update: 2017-01-13
在實際項目中給定一檔案夾,得到這個檔案夾下所有的檔案這樣的需求並不是很多,更多的是尋找或是刪除某一具體的檔案import java.io.File;import java.util.ArrayList;public class FileTest { private static ArrayList<String> filelist = new ArrayList<String>(); public static void
Time of Update: 2017-01-13
java ftp 上傳一個檔案目錄package yq1012;import java.io.File; import java.io.FileInputStream; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class test {
Time of Update: 2017-01-13
0X00 抽象類別 & 介面簡介抽象類別abstract 抽象修飾符——抽象就是為了讓子類整合的,並不能直接實現一個對象抽象類別中所有抽象方法都要在子類中實現擁有抽象方法的類必須聲明為抽象類別抽象類別可以有非抽象的方法介面interface 介面修飾符——介面是為了讓類實現的變數預設是public static final並且不能改變方法預設是public abstract並且不能改變介面不實現方法0X01
Time of Update: 2017-01-13
最近我們這邊需要做一個自動產生二維碼並且還要將二維碼嵌入現有的背景模板中,一直又沒寫過這些方面的東西,突然寫還真是有點迷糊,特別是對於java圖片API並不很熟悉,所以參考了很多網友的分享,很快做出來了,現在分享一下 代碼如下複製代碼 BufferedImage image= bim;//二維碼BufferedImage bg= ImageIO.read(路徑);//擷取北京圖片Graphics2D g=bg.createGraphics();int width=image.
Time of Update: 2017-01-13
在Java虛擬機器規範的描述中,除了程式計數器外,虛擬機器記憶體的其他幾個運行時地區都有發生OutOfMemoryError(下面都叫OOM)異常的肯能,下面就通過一些執行個體來驗證異常發生的情境。 在下面舉的例子中,在注釋中會設定一些虛擬機器的參數,在”VM Args”後邊,如果你是用控制台命令來執行的程式,直接把這些參數放到Java命令之後就行,如果用的開發工具,Eclipse
Time of Update: 2017-01-13
在Java社區有一股使用輕量級容器來協助組裝不同項目的組件、整合到一個有凝聚力的應用程式的熱潮。這些底層容器有一種普遍的模式去展示他們如何裝配組件,他們提出一個概念,名為“控制反轉”(Inversion of Control)。接下來我們深入挖掘下這個模式在“依賴注入”(Dependency
Time of Update: 2017-01-13
對象轉換String類型的三種方法一、採用Object.toString()toString方法是java.lang.Object對象的一個public方法。在java中任何對象都會繼承Object對象,所以一般來說任何對象都可以調用toString這個方法。這是採用該種方法時,常衍生類別會覆蓋Object裡的toString()方法。但是在使用該方法時要注意,必須保證Object不是null值,否則將拋出NullPointerException異常。二、採用(String)Object&nbs
Time of Update: 2017-01-13
instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的執行個體,返回boolean類型的資料。舉個例子:String s = "I AM an Object!";boolean isObject = s instanceof
Time of Update: 2017-01-13
例子一 代碼如下複製代碼 package com.hongyuan.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;public class HttpClient
Time of Update: 2017-01-13
應對 Java 項目, 我們大概有以下幾個自動化構建工具:Ant -- XML 化跨平台批處理, 設定檔 build.xml, 執行的是 targetMaven -- 開始標準化目錄布局, 基於項目物件模型, 設定檔 pom.xml, 執行的是 phase/goalGradle -- 使用 Maven 預設布局, Groove 語言鑄就, 配置是 groovy 文法的 build.gradle 檔案, 執行的是 taskBuildr -- 預設也是 Maven 目錄布局,
Time of Update: 2017-01-13
有如下的log4j.properties配置log4j.rootLogger=ERROR,STDOUTlog4j.appender.STDOUT=org.apache.log4j.ConsoleAppenderlog4j.appender.STDOUT.layout=org.apache.log4j.PatternLayoutlog4j.appender.STDOUT.layout.ConversionPattern=%d %-5p [%t] (%F:%L) -