對於新入門的開發者,如何安裝Ruby,RubyGems和Rails的運行環境可能會是個問題。下面學步園小編來講解下如何快速正確的安裝Ruby,Rails運行環境?
如何快速正確的安裝Ruby,Rails運行環境
系統需求
首先確定操作系統環境,不建議在Windows上面搞,所以你需要用:
MacOSX
任意Linux發行版本(Ubuntu,CentOS,Redhat,ArchLinux...)
以下代碼區域,帶有$打頭的表示需要在控制台(終端)下面執行(不包括$符號)
...
閱讀全文
大家都知道重載是指在同一個類中,定義了有相同名稱但是有不同參數類型的方法時,到底調用那一個方法會根據參數類型來選擇。下面學步園小編來講解下JAVA重載(overload)和覆蓋(override)有哪些陷阱?
JAVA重載(overload)和覆蓋(override)有哪些陷阱
classParentClass{
}
classChildClassextendsParentClass{
}
publicclassTest{
publicvoidtestOverLoad(ParentClasscls){
System.out.println...
閱讀全文
java項目中經常需要用到到當前日期的前若干天、後若干天、前幾小時、後幾小時的時間.在開發中經常會使用到一些日期方面的操作。下面學步園小編來講解下Java中獲取指定日為星期幾及其他日期怎麼操作?
Java中獲取指定日為星期幾及其他日期怎麼操作
取得指定日期是星期幾可以採用下面兩種方式取得日期是星期幾:
a、使用Calendar類
[java]
//根據日期取得星期幾
publicstaticStringgetWeek(Datedate){...
閱讀全文
在非ajax頁面中,只要在page上設置MaintainScrollPositionOnPostback="true"即可進行記憶滾動條位置. 但是在ajax中,這個功能卻不能正確工作了,那麼我們應當如何讓div自動維護滾動條位置呢?下面學步園小編來講解下如何讓div自動維護滾動條位置?
如何讓div自動維護滾動條位置
首先在頁面上增加asp:panel控制項,然後在aspx.cs後台加入以下方法:
[c#]
protectedvoidDoMaintainScrollPositionForAjax(UpdatePane...
閱讀全文
c++的代碼包含頭文件和實現文件兩部分,頭文件一般是提供給別人(也叫客戶)使用的,但是一旦頭文件發生改變,不管多小的變化,所有引用他的文件就必須重新編譯,編譯就要花時間。下面學步園小編來講解下怎樣減少C++代碼編譯時間?
怎樣減少C++代碼編譯時間
言歸正傳,怎樣介紹編譯時間呢,我知道的就3個辦法:
刪除不必要的#include,替代辦法使用前向聲明(forwarddeclared)
刪除不必要的一大堆私有成員變數,...
閱讀全文
歸併排序
歸併排序(MERGE-SORT)是利用歸併的思想實現的排序方法,該演算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞歸求解,而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。
基本思想
可以看到這種結構很像一棵完全二叉樹,本文的歸併排序我們採用遞歸去實現(也可採用迭代的方式去實現)。分階段可以理解為就是遞歸拆分子序列的過程。
合...
閱讀全文
類鎖和對象鎖,synchronized修飾static方法與非static方法的區別
當synchronized修飾一個static方法時,多線程下,獲取的是類鎖(即Class本身,注意:不是實例),作用範圍是整個靜態方法,作用的對象是這個類的所有對象。
當synchronized修飾一個非static方法時,多線程下,獲取的是對象鎖(即類的實例對象),作用範圍是整個方法,作用對象是調用該方法的對象。
結論: 類鎖和對象鎖,一個是類的Class對象的鎖,一個...
閱讀全文
synchronized 加到 static 方法前面是給class 加鎖,即類鎖;而synchronized 加到非靜態方法前面是給對象上鎖。這兩者的區別我用代碼來演示下:
對象鎖和類鎖是不同的鎖,所以多個線程同時執行這2個不同鎖的方法時,是非同步的。
在Task2 中定義三個方法 doLongTimeTaskA和doLongTimeTaskB是類鎖,而doLongTimeTaskC是對象鎖。
public class Task2 {
public synchronized static void doLongTimeTaskA() {
...
閱讀全文
通過分析Synchronized和Static Synchronized這兩個用法的分析,我們可以理解java中鎖的概念。一個是實例鎖(鎖在某一個實例對象上,如果該類是單例,那麼該鎖也具有全局鎖的概念),一個是全局鎖(該鎖針對的是類,無論實例多少個對象,那麼線程都共享該鎖)。實例鎖對應的就是synchronized關鍵字,而類鎖(全局鎖)對應的就是static synchronized(或者是鎖在該類的class或者classloader對象上)。下面的文章做了很好的總結:
...
閱讀全文
為什麼需要倒排索引
倒排索引,也是索引。
索引,初衷都是為了快速檢索到你要的數據。
每種資料庫都有自己要解決的問題(或者說擅長的領域),對應的就有自己的數據結構,而不同的使用場景和數據結構,需要用不同的索引,才能起到最大化加快查詢的目的。
對 Mysql 來說,是 B+ 樹,對 Elasticsearch/Lucene 來說,是倒排索引。
Elasticsearch 是建立在全文搜索引擎庫 Lucene 基礎上的搜索引擎,它隱藏了 ...
閱讀全文