http://jsgears.com/thread-63-1-1.html
Web 前端程式設計 -- javascript 類別物件設計
https://www.youtube.com/watch?v=5rtN9Mg2WhM
▼
2018年12月30日 星期日
2018年12月27日 星期四
SignalR
https://mva.microsoft.com/zh-tw/training-courses/-real-time-web-asp-net-signalr--11197?l=LKjML5GBB_804984382
https://www.youtube.com/watch?v=bL39JH11S4o&index=2&list=PL_c9BZzLwBRKJugyyAdhBoAPRs1DdaS7n
http://www.bamn.cn/course/lesson/136?p=1
https://www.youtube.com/watch?v=bL39JH11S4o&index=2&list=PL_c9BZzLwBRKJugyyAdhBoAPRs1DdaS7n
http://www.bamn.cn/course/lesson/136?p=1
2018年12月20日 星期四
2018年12月5日 星期三
oracle修改密碼
- Webconfig 查找資料庫
<add name="ConnectionString" connectionString="Data Source=192.168.1.80:1521/apm7;Persist Security Info=True;User ID=apmusr;Password=apmusr1;Unicode=True;Max pool size=120000;" providerName="System.Data.OracleClient"/>
- 進入命令提示字元
- set ORACLE_SID=apm7
- sqlplus /nolog
- connect / as sysdba
- alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;
先確認Ap server用哪個DB帳號連資料庫
然後連結資料庫:
sqlplus /nolog
SQL>connect / as sysdba
改密碼:
SQL>alter user 使用者 identified by 密碼;
解鎖密碼:
SQL>alter user 使用者 account unlock;
讓密碼永久有效:
SQL> alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;
2018年12月4日 星期二
C# winform 關閉Form應用程式 及 將winform窗口最小化到任務欄托盤中
將winform窗口最小化到任務欄托盤中
https://tw.saowen.com/a/e2dc7754fb3198947c94b69b7c17762d4f54a892b392087389b533101f76ecea
C# winform 關閉Form應用程式
https://blog.xuite.net/jen999999/blog/124906926-C%23+winform+%E9%97%9C%E9%96%89Form%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F
https://tw.saowen.com/a/e2dc7754fb3198947c94b69b7c17762d4f54a892b392087389b533101f76ecea
C# winform 關閉Form應用程式
https://blog.xuite.net/jen999999/blog/124906926-C%23+winform+%E9%97%9C%E9%96%89Form%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F
[.Net]高畫質縮圖(Winform)
http://dada78114.pixnet.net/blog/post/176950714-%5B.net%5D%E9%AB%98%E7%95%AB%E8%B3%AA%E7%B8%AE%E5%9C%96%28winform%29
winform字體模糊解決
http://mahaljsp.asuscomm.com/index.php/2017/06/10/win10_font_blurry/
https://dotblogs.com.tw/alexwang/2016/09/21/234628
解決傳統的Windows Forms在高解析度(High DPI)設定下,所引發的文字模糊問題
http://slashlook.com/archive2016/20160113.html
https://dotblogs.com.tw/alexwang/2016/09/21/234628
解決傳統的Windows Forms在高解析度(High DPI)設定下,所引發的文字模糊問題
http://slashlook.com/archive2016/20160113.html
2018年11月29日 星期四
C# 多個Form間切換
https://cyfangnotepad.blogspot.com/2013/02/cnet-ab.html
http://oblivious9.pixnet.net/blog/post/192683977-c%23-%E5%A4%9A%E5%80%8Bform%E9%96%93%E5%88%87%E6%8F%9B
http://www.blueshop.com.tw/board/FUM20050124192253INM/BRD20091119183410594.html
http://oblivious9.pixnet.net/blog/post/192683977-c%23-%E5%A4%9A%E5%80%8Bform%E9%96%93%E5%88%87%E6%8F%9B
http://www.blueshop.com.tw/board/FUM20050124192253INM/BRD20091119183410594.html
2018年11月28日 星期三
2018年11月22日 星期四
.NET Reactor
https://www.youtube.com/watch?v=gIWk4wK2Fz0
https://www.youtube.com/watch?v=BzN9ZKLMInU
https://www.youtube.com/watch?v=BzN9ZKLMInU
2018年11月16日 星期五
How to create google line chart with database data in ASP.NET
How to create google line chart with database data in ASP.NET
2018年11月15日 星期四
2018年11月13日 星期二
2018年11月8日 星期四
2018年11月1日 星期四
檔案系統
http://vito-note.blogspot.com/2012/01/blog-post_7.html
http://jjnnykimo.pixnet.net/blog/post/26817575-%E6%AA%94%E6%A1%88%E8%88%87%E8%B3%87%E6%96%99%E5%A4%BE%E6%93%8D%E4%BD%9C---system.io
http://jjnnykimo.pixnet.net/blog/post/26817575-%E6%AA%94%E6%A1%88%E8%88%87%E8%B3%87%E6%96%99%E5%A4%BE%E6%93%8D%E4%BD%9C---system.io
2018年10月31日 星期三
Code Review 小重點
https://www.puritys.me/docs-blog/article-433-Code-Review-%E5%B0%8F%E9%87%8D%E9%BB%9E.html
插入與資料表資料行順序不同的資料
USE
[weberp]
GO
SET
IDENTITY_INSERT dbo.bas_unit
ON;
GO
INSERT
INTO dbo.bas_unit
(rowid
, mno
, mname)
VALUES (15 , 'H','時')
SET
IDENTITY_INSERT dbo.bas_unit
OFF;
GO
SELECT
* FROM dbo.bas_unit
SQL複製資料到新資料表
http://whitecat2.pixnet.net/blog/post/61624657-%5b%E7%A8%8B%E5%BC%8F%E7%AD%86%E8%A8%98%5dmssql---%E8%A4%87%E8%A3%BD%E8%B3%87%E6%96%99%E5%88%B0%E6%96%B0%E8%B3%87%E6%96%99%E8%A1%A8%282%E7%A8%AE%E5%B8%B8%E7%94%A8
sql語法取最後5筆並倒排序
select* from (SELECT top 5 [rowid]
,CONVERT(nvarchar(8), [mdate],114)as mtime
,[mno]
,[tno]
,[mdate]
,[sno]
,[uno]
,[lno]
FROM [webtest].[dbo].[temp_data] order by [mdate] desc) as t order by [mdate] asc
,CONVERT(nvarchar(8), [mdate],114)as mtime
,[mno]
,[tno]
,[mdate]
,[sno]
,[uno]
,[lno]
FROM [webtest].[dbo].[temp_data] order by [mdate] desc) as t order by [mdate] asc
2018年10月30日 星期二
2018年10月28日 星期日
數位簽章
https://ithelp.ithome.com.tw/articles/10188465
[C#.NET] 字串及檔案,利用 RSA 演算法加解密
https://dotblogs.com.tw/yc421206/archive/2012/06/25/73041.aspx
第七章 數位簽章與數位憑證
http://www.tsnien.idv.tw/Security_WebBook/%E7%AC%AC%E4%B8%83%E7%AB%A0%20%E6%95%B8%E4%BD%8D%E7%B0%BD%E7%AB%A0%E8%88%87%E6%95%B8%E4%BD%8D%E6%86%91%E8%AD%89.html
第七章 數位簽章與數位憑證
http://www.tsnien.idv.tw/Security_WebBook/%E7%AC%AC%E4%B8%83%E7%AB%A0%20%E6%95%B8%E4%BD%8D%E7%B0%BD%E7%AB%A0%E8%88%87%E6%95%B8%E4%BD%8D%E6%86%91%E8%AD%89.html
2018年10月25日 星期四
WebService服務的三種途徑Endpoint Disco WSDL 有什麼不同
WebService服務的三種途徑Endpoint Disco WSDL 有什麼不同
UDDI, DISCO, 以及WSDL 相應的都是什麼的?
下面這真是一圖道破天機
UDDI可以看做是世界上公開Web Service的黃頁,對各種各樣的Web Sercice進行分類和描述,使用disco文件可以去訪問一台服務器裡有哪些Web Service可用。
為什麼要使用UDDI 呢?在很久很久以前,在Google 都還沒有問世的時候,還記得是怎麼上網的嗎?那時, 新浪,搜狐是你上網必去的,為什麼?因為即便連上了網,都不知到該到哪裡去,而那個時候新浪和搜狐等門戶網站把站點做了分類和登記,以便於用戶找到需要的網站。老美那個時候同樣,使用的是雅虎。那個時候的雅虎就相當於現在的Google. 時過境遷,如今Google 成了最大的老大,成了全球的網站門戶,是Web 領域的UDDI.
在網絡上還有許許多多我們看不到的Web Services,比如天氣預報Service ,比如股票信息Service. 你在開發的時候當然知道你自己的Web Service. 可是當你發布了一個Web Service 並且想讓全世界的人都知道你有一個Web Service ,你該怎麼辦好?google 是不會收錄你的Web Service 的,這個時候你就需要去UDDI 註冊你的Web Service. 這樣別人訪問UDDI以及其下的分類的時候就有可能發現你的Web Service . 只是UDDI 仍舊有缺陷。
補充知識:
什麼是WebService?
Web Services是一種基於組件的軟件平台,是面向服務的Internet應用。Web Services是應用於Internet的,而不是限於局域網或試驗環境。這要求提出的Web Services框架必須適用於現有的Internet軟件和硬件環境,即服務的提供者所提供的服務必須具有跨平台、跨語言的特性。其次,Web Services所提供的服務不僅是向人,更需服務於其它應用系統。現有的Web網站也可以認為是面向服務的,但這種服務僅僅可以提供給人使用(只有人類才可以讀懂瀏覽器下載的頁面) 。而新一代的Web Services所提供的服務應能被機器所讀懂,例如其它應用程序及移動設備中的軟件系統。這樣,我們可以看出,Web Services的發展方向實際上是構造一個在現有Internet技術上的分佈計算系統。
Web Services框架的核心技術包括SOAP ,WSDL和UDDI ,它們都是以標準的XML文檔的形式表的。
什麼是SOAP?
SOAP是Web services的通信協議。SOAP是一種簡單的、輕量級的基於XML的機制,用於在網絡應用程序之間進行結構化數據交換。SOAP包括三部分:一個定義描述消息內容的框架的信封,一組表示應用程序定義的數據類型實例的編碼規則,以及表示遠程過程調用和響應的約定。
什麼是WSDL?
WSDL表示WEB服務說明語言。WSDL文件是一個XML文檔,用於說明一組SOAP消息以及如何交換這些消息。
什麼是UDDI?
UDDI(統一描述發現和集成)提供一種發布和查找服務描述的方法。UDDI數據實體提供對定義業務和服務信息的支持。WSDL中定義的服務描述信息是UDDI註冊中心信息的補充。
Endpoint: http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx
web服務的URI地址,你訪問之後,就會出現web服務的相關類描述、方法列表以及方法描述。
Disco: http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?disco
通過這個可以找到該web服務。即利用了web服務發現機制中的一種發現機制disco。
WSDL: http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
該web服務的描述性語言。即Web Services Description Language。用來描述你的web服務定義的方法和屬性、binding協議部分、port端口以及服務URI。
IIS HTTP 強制轉 HTTPS 簡易做法
https://blog.darkthread.net/blog/http-to-https-with-iis/
透過 web.config 加入:
<system.webServer>
<httpErrors>
<error statusCode="403" subStatusCode="4" path="https://www.my-site.com.tw/" responseMode="Redirect" />
</httpErrors>
</system.webServer>
透過 web.config 加入:
<system.webServer>
<httpErrors>
<error statusCode="403" subStatusCode="4" path="https://www.my-site.com.tw/" responseMode="Redirect" />
</httpErrors>
</system.webServer>
2018年10月24日 星期三
UpdatePanel的重要屬性:Triggers
https://ithelp.ithome.com.tw/articles/10157125
介紹一下幾個UpdatePanel的重要屬性:
[*]Triggers:設定有哪些控制項(可以是Panel內部或外部)哪些事件會觸發UpdatePanel更新
[*]ChildrenAsTriggers: 用來設定在UpdatePanel的子控制項(就是被包在裡面的)被觸發時是否都會觸發Panel的更新
[*]UpdateMode: Always(預設)與 Conditional,Always是不管有沒有Tiggers都將更新Panel,Conditional則是要看Triggers與ChildrenAsTriggers的條件
[*]ChildrenAsTriggers: 用來設定在UpdatePanel的子控制項(就是被包在裡面的)被觸發時是否都會觸發Panel的更新
[*]UpdateMode: Always(預設)與 Conditional,Always是不管有沒有Tiggers都將更新Panel,Conditional則是要看Triggers與ChildrenAsTriggers的條件
2018年10月22日 星期一
elasticsearch+kinda demo網站
https://demo.elastic.co/app/kibana#/dashboard/ae0a73c0-ef67-11e7-9763-0fe78ad9c250?_g=(refreshInterval:(display:'1%20hour',pause:!t,section:3,value:3600000),time:(from:now-9y%2Fy,mode:relative,to:now-11s))&_a=(description:'Various%20Metrics%20from%20https:%2F%2Fdiscuss.elastic.co',filters:!(),fullScreenMode:!f,options:(darkTheme:!f,hidePanelTitles:!f,useMargins:!t),panels:!((gridData:(h:10,i:'1',w:8,x:12,y:0),id:'85679ec0-ef67-11e7-9763-0fe78ad9c250',panelIndex:'1',type:visualization,version:'6.3.1'),(gridData:(h:15,i:'2',w:24,x:0,y:25),id:'0b82b9d0-eba4-11e7-892e-05617465a089',panelIndex:'2',type:visualization,version:'6.3.1'),(gridData:(h:10,i:'3',w:28,x:20,y:0),id:cef126b0-ef67-11e7-9763-0fe78ad9c250,panelIndex:'3',type:visualization,version:'6.3.1'),(gridData:(h:10,i:'4',w:12,x:0,y:0),id:'40295fa0-ef68-11e7-9763-0fe78ad9c250',panelIndex:'4',type:visualization,version:'6.3.1'),(gridData:(h:15,i:'5',w:20,x:0,y:10),id:d7f53540-ef6b-11e7-9763-0fe78ad9c250,panelIndex:'5',type:visualization,version:'6.3.1'),(gridData:(h:15,i:'6',w:28,x:20,y:10),id:'00026380-ef78-11e7-9763-0fe78ad9c250',panelIndex:'6',type:visualization,version:'6.3.1'),(gridData:(h:15,i:'7',w:24,x:24,y:25),id:'05644310-ef92-11e7-9763-0fe78ad9c250',panelIndex:'7',type:visualization,version:'6.3.1')),query:(language:lucene,query:''),timeRestore:!t,title:'Discourse%20Metrics',viewMode:view)
2018年10月21日 星期日
[C#] 寫一個隱藏其它程序的小程式
https://notes.andywu.tw/2018/c-sharp-%E5%AF%AB%E4%B8%80%E5%80%8B%E9%9A%B1%E8%97%8F%E5%85%B6%E5%AE%83%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%B0%8F%E7%A8%8B%E5%BC%8F/
2018年10月20日 星期六
2018年10月18日 星期四
[C#] Regular Expression 正則表達式
http://larry850806.github.io/2016/06/23/regex/
http://www.mydreamlib.com/user/dream/dyv/121/
https://zh-tw.coursera.org/lecture/sheng-c-biancheng/zheng-ze-biao-da-shi-m0unK
http://cs0.wikidot.com/regularexpression
https://dotblogs.com.tw/dragoncancer/2015/12/03/153024
http://www.mydreamlib.com/user/dream/dyv/121/
https://zh-tw.coursera.org/lecture/sheng-c-biancheng/zheng-ze-biao-da-shi-m0unK
http://cs0.wikidot.com/regularexpression
https://dotblogs.com.tw/dragoncancer/2015/12/03/153024
2018年10月15日 星期一
C#如何剖析JSON
[入門] JSON.NET 入門= jarray 很重要
https://dotblogs.com.tw/johnny/2014/05/04/intro-to-jsonnet
https://jsoneditoronline.org/
==========================================================
//JSON字串
string Json = textBox2.Text;
//轉成物件
ArrayList arrayList = new ArrayList();
arrayList = JsonConvert.DeserializeObject<ArrayList>(Json);
textBox3.Text = arrayList[0].ToString();
textBox4.Text = arrayList[1].GetType().Name;//型態為JArray
JArray output1 = (JArray)arrayList[1];
JArray output2 = (JArray)output1[0];
textBox5.Text = (string)output2[0];
JArray output3= (JArray)output2[1];
textBox6.Text = (string)output3[0];
============================================================
https://ithelp.ithome.com.tw/questions/10189022
https://dotblogs.com.tw/stanley14/2016/03/11/190123
https://jsoneditoronline.org/
https://dotblogs.com.tw/johnny/2014/05/04/intro-to-jsonnet
https://jsoneditoronline.org/
==========================================================
//JSON字串
string Json = textBox2.Text;
//轉成物件
ArrayList arrayList = new ArrayList();
arrayList = JsonConvert.DeserializeObject<ArrayList>(Json);
textBox3.Text = arrayList[0].ToString();
textBox4.Text = arrayList[1].GetType().Name;//型態為JArray
JArray output1 = (JArray)arrayList[1];
JArray output2 = (JArray)output1[0];
textBox5.Text = (string)output2[0];
JArray output3= (JArray)output2[1];
textBox6.Text = (string)output3[0];
============================================================
https://ithelp.ithome.com.tw/questions/10189022
https://dotblogs.com.tw/stanley14/2016/03/11/190123
https://jsoneditoronline.org/
2018年10月12日 星期五
ASP.NET中PostBack、及Get和Post的用法
[ASP.NET]上課第一天 -- PostBack的範例與入門解說
https://www.youtube.com/watch?v=xk-oGKl8aFE
ASP.NET WebForm - 頁面、容器、Request中尋找控制項
https://dotblogs.com.tw/kevin_date/2017/08/30/104641
ASP.NET中Get和Post的用法 Request、QueryString、Request.Form、Request.Params的区别
http://www.cnblogs.com/haichuan3000/articles/2329440.html
https://www.youtube.com/watch?v=xk-oGKl8aFE
ASP.NET WebForm - 頁面、容器、Request中尋找控制項
https://dotblogs.com.tw/kevin_date/2017/08/30/104641
ASP.NET中Get和Post的用法 Request、QueryString、Request.Form、Request.Params的区别
http://www.cnblogs.com/haichuan3000/articles/2329440.html
【ASP.NET】Form傳遞方式
https://dotblogs.com.tw/coca/2011/03/11/21793
ASP.NET 頁面之間傳值的幾種方式
https://hk.saowen.com/a/b5fa7d6b55bdf1e93aa05f787cdd27325ce4d353dc6fe4228f8e8a71d0821492C#實現的Windows剪貼板監視器功能實例
https://www.jb51.net/article/90881.htm
https://www.itread01.com/articles/1476429330.html
https://blog.csdn.net/MoreWindows/article/details/17655429
https://dotblogs.com.tw/abbee/2010/09/27/17922
https://www.itread01.com/articles/1476429330.html
https://blog.csdn.net/MoreWindows/article/details/17655429
https://dotblogs.com.tw/abbee/2010/09/27/17922
連結串列(Linked List)
http://emn178.pixnet.net/blog/post/93557502-%E9%80%A3%E7%B5%90%E4%B8%B2%E5%88%97%28linked-list%29
2018年10月11日 星期四
比較 keydown, keypress, keyup 的差異
https://medium.com/@yitailin/%E6%AF%94%E8%BC%83-keydown-keypress-keyup-%E7%9A%84%E5%B7%AE%E7%95%B0-4e873ba17e81
2018年10月8日 星期一
[C#] 更精簡的 string.Format 表示法:內插字串
https://dotblogs.com.tw/lazycodestyle/2016/06/24/005827
C# 6.0的新表示方法有幾點要注意的地方:
- 以「錢字號 ($)」開頭
- 將原先的號碼直接用變數取代
- 變數後方還是可以格式化呈現方式,如:小數點位數,時間格式化字串
2018年10月7日 星期日
2018年10月6日 星期六
TEXTBOX物件FOR迴圈運用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
List<TextBox> tb = new List<TextBox>();
TextBox tb0 = TextBox1;
TextBox tb1 = TextBox2;
TextBox tb2 = TextBox3;
TextBox tb3 = TextBox4;
tb.Add(tb0);
tb.Add(tb1);
tb.Add(tb2);
tb.Add(tb3);
for (int i = 0; i < 4; i++)
{
Literal1.Text += tb[i].Text+"<br />";
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
List<TextBox> tb = new List<TextBox>();
TextBox tb0 = TextBox1;
TextBox tb1 = TextBox2;
TextBox tb2 = TextBox3;
TextBox tb3 = TextBox4;
tb.Add(tb0);
tb.Add(tb1);
tb.Add(tb2);
tb.Add(tb3);
for (int i = 0; i < 4; i++)
{
Literal1.Text += tb[i].Text+"<br />";
}
}
}
2018年10月2日 星期二
在寫 ASP.NET 的時候要謹慎使用靜態(static)欄位
https://blog.miniasp.com/post/2008/07/29/Careful-using-static-field-in-ASPNET.aspx
https://www.bbsmax.com/A/lk5aBayod1/
因為靜態欄位,容易造成多執行緒死結
https://www.bbsmax.com/A/lk5aBayod1/
因為靜態欄位,容易造成多執行緒死結
2018年9月27日 星期四
SQL Server中全文檢索搜尋與Like的差異分析
SQL Server中全文檢索搜尋與Like的差異分析
在SQL Server中,Like關鍵字可以實現模糊查詢,即確定特定字串是否與制定模式相匹配。
這裡的模式可以指包含常規字元和萬用字元。在模式匹配過程中,常規字元必須與字串中
指定的字元完全符合。不過通過使用萬用字元可以改變這個規則,如使用?等萬用字元可以
與字串的任意部分相匹配。故Like關鍵字可以在資料庫中實現模糊查詢。
這裡的模式可以指包含常規字元和萬用字元。在模式匹配過程中,常規字元必須與字串中
指定的字元完全符合。不過通過使用萬用字元可以改變這個規則,如使用?等萬用字元可以
與字串的任意部分相匹配。故Like關鍵字可以在資料庫中實現模糊查詢。
另外資料庫庫管理員也可以利用全文檢索搜尋功能對SQL Server資料表進行查詢。
在可以對給定的標進行全文查詢之前,資料庫管理元必須對這個資料表建立全文索引。
全文索引也可以實現類似Like的模糊查詢功能。如在一張人才簡歷表中查找符合特定字串的
資訊等等。雖然說Like關鍵字與全文檢索搜尋在功能上大同小異,但是在實現細節上有比較
大的差異。作為資料庫管理員需要瞭解這個差異,並選擇合適的實現模式。
在可以對給定的標進行全文查詢之前,資料庫管理元必須對這個資料表建立全文索引。
全文索引也可以實現類似Like的模糊查詢功能。如在一張人才簡歷表中查找符合特定字串的
資訊等等。雖然說Like關鍵字與全文檢索搜尋在功能上大同小異,但是在實現細節上有比較
大的差異。作為資料庫管理員需要瞭解這個差異,並選擇合適的實現模式。
- 查詢效率上的差異。
通常情況下,Like關鍵字的查詢效率還是比較快的。特別是對於結構化的資料,
Like的查詢效率、靈活性方面是值得稱道的。但是對於一些非機構化的文本資料,
如果通過Like關鍵字來進行模糊查詢的話,則其執行效率並不是很理想。
特別是對於全文查詢來說,其速度要慢得多。而且隨著記錄數量的增多,類似的差異更明顯。
如在一張表中,有三百萬行左右的文本資料,此時如果利用Like關鍵字來查找相關的內容,
則可能需要幾分鐘的時間才能夠返回正確的結果。相反,對於同樣的資料通過採用全文檢索
搜尋功能的話,則可能只需要1分鐘不到甚至更多的時間及可以返回結果。
故當文本資料的行數比較多時,如在一萬行以上,則此時資料庫管理員若採用
全文檢索搜尋功能的話,則可以比較明顯的改善資料庫的查詢效率。
Like的查詢效率、靈活性方面是值得稱道的。但是對於一些非機構化的文本資料,
如果通過Like關鍵字來進行模糊查詢的話,則其執行效率並不是很理想。
特別是對於全文查詢來說,其速度要慢得多。而且隨著記錄數量的增多,類似的差異更明顯。
如在一張表中,有三百萬行左右的文本資料,此時如果利用Like關鍵字來查找相關的內容,
則可能需要幾分鐘的時間才能夠返回正確的結果。相反,對於同樣的資料通過採用全文檢索
搜尋功能的話,則可能只需要1分鐘不到甚至更多的時間及可以返回結果。
故當文本資料的行數比較多時,如在一萬行以上,則此時資料庫管理員若採用
全文檢索搜尋功能的話,則可以比較明顯的改善資料庫的查詢效率。
- 對空白字元的敏感性。
在資料庫中如果採用Like關鍵字進行模糊查詢,則在這個關鍵字後面的所有字元都有意義。
如現在使用者使用like 「abcd 」(帶有兩個空格)查詢時,則後面的空白字元對於Like關鍵字
也是敏感的。也就是說,如果使用者利用上面這條語句進行查詢時,則被查詢的內容必須
也是「abcd 」(帶有兩個空格)這種類型的資料才會被返回。如果被查詢的內容是「abcd 」
(不帶空格或者帶有一個空格)則資料庫系統會認為這與查詢準則不相符合,
故不會返回相關的記錄。故Like關鍵字對於空格是比較敏感的。為此在使用Like關鍵字時候
需要特別注意這個問題。如果使用者或者程式開發人員不能夠確定abcd後面到底是否有空格
,則可以通過萬用字元拉實現。即可以利用」%abcd%」為條件陳述式。如此的話,
無論abcd前面或者後面是否有空格,則都會被查詢出來。但是全文檢索搜尋的話,
通常情況下系統會把空格忽略掉。即在全文檢索搜尋功能中,系統會先對查詢準則語句
進行優化。如果發現空格的話,則往往會實現把空格過濾掉。故全文檢索搜尋的話,
對於空格等特殊字元往往是不敏感的。
如現在使用者使用like 「abcd 」(帶有兩個空格)查詢時,則後面的空白字元對於Like關鍵字
也是敏感的。也就是說,如果使用者利用上面這條語句進行查詢時,則被查詢的內容必須
也是「abcd 」(帶有兩個空格)這種類型的資料才會被返回。如果被查詢的內容是「abcd 」
(不帶空格或者帶有一個空格)則資料庫系統會認為這與查詢準則不相符合,
故不會返回相關的記錄。故Like關鍵字對於空格是比較敏感的。為此在使用Like關鍵字時候
需要特別注意這個問題。如果使用者或者程式開發人員不能夠確定abcd後面到底是否有空格
,則可以通過萬用字元拉實現。即可以利用」%abcd%」為條件陳述式。如此的話,
無論abcd前面或者後面是否有空格,則都會被查詢出來。但是全文檢索搜尋的話,
通常情況下系統會把空格忽略掉。即在全文檢索搜尋功能中,系統會先對查詢準則語句
進行優化。如果發現空格的話,則往往會實現把空格過濾掉。故全文檢索搜尋的話,
對於空格等特殊字元往往是不敏感的。
- 對於一些特殊字元的處理要求。
由於資料類型不同,其資料存儲方式也不同。為此某些特殊的資料類型可能無法通過
Like關鍵字來實現模糊查詢。如對於辦好char和Varchar資料的模式的字串比較可能無法
通過Like關鍵字來實現。也就是說,Like關鍵字後面帶的條件陳述式僅對字元模式有效,
不能夠使用Like條件陳述式來查詢格式化的二進位資料等等。為此如果資料庫管理元要
採用Like關鍵字,則其必須瞭解每種資料類型的存儲方式以及導致Like關鍵字比較失敗的原因。
知己知彼,百戰百勝。只有如此資料庫管理員才能夠避免因為在不恰當的地方採用了Like關鍵
字而造成查詢的錯誤。不過值得高興的是,Like關鍵字支援ASCII模式匹配與Unicode模式匹配。
如果Like關鍵字的所有參數都為ASCII字元資料類型,則Like關鍵字會自動採用ASCII模式匹配。
如果其中任何一個參數為Unicode資料類型,則系統會把所有的參數都轉換為Unicode資料類型,
並執行Unicode模式匹配。另外需要注意的是,如果Like關鍵字加上Unicode的資料類型則
後面條件陳述式的空格是有效的,即比較時會考慮到後面出現的空格。
但是如果資料類型不是Unicode的,則對後面的空格不敏感。即比較時,
是否存在空格對於最後的結果不會有影響。
Like關鍵字來實現模糊查詢。如對於辦好char和Varchar資料的模式的字串比較可能無法
通過Like關鍵字來實現。也就是說,Like關鍵字後面帶的條件陳述式僅對字元模式有效,
不能夠使用Like條件陳述式來查詢格式化的二進位資料等等。為此如果資料庫管理元要
採用Like關鍵字,則其必須瞭解每種資料類型的存儲方式以及導致Like關鍵字比較失敗的原因。
知己知彼,百戰百勝。只有如此資料庫管理員才能夠避免因為在不恰當的地方採用了Like關鍵
字而造成查詢的錯誤。不過值得高興的是,Like關鍵字支援ASCII模式匹配與Unicode模式匹配。
如果Like關鍵字的所有參數都為ASCII字元資料類型,則Like關鍵字會自動採用ASCII模式匹配。
如果其中任何一個參數為Unicode資料類型,則系統會把所有的參數都轉換為Unicode資料類型,
並執行Unicode模式匹配。另外需要注意的是,如果Like關鍵字加上Unicode的資料類型則
後面條件陳述式的空格是有效的,即比較時會考慮到後面出現的空格。
但是如果資料類型不是Unicode的,則對後面的空格不敏感。即比較時,
是否存在空格對於最後的結果不會有影響。
但是如果資料庫管理員才用全文檢索搜尋的話,往往沒有這方面的顧慮。
因為全文檢索搜尋不僅支援傳統的字元模式,而且還支援其他的資料模式。
另外通過全文檢索搜尋,還可以用來查詢格式化的二進位資料。為此如果在資料表中,
資料模式不統一或者需要對二進位資料進行查詢的話,則必這建議資料庫管理員需要
採用全文檢索搜尋,而不是採用Like關鍵字。
因為全文檢索搜尋不僅支援傳統的字元模式,而且還支援其他的資料模式。
另外通過全文檢索搜尋,還可以用來查詢格式化的二進位資料。為此如果在資料表中,
資料模式不統一或者需要對二進位資料進行查詢的話,則必這建議資料庫管理員需要
採用全文檢索搜尋,而不是採用Like關鍵字。
- 逸出字元對查詢的影響。
如現在在資料表中有百分制的數值。如某個序號為10的產品的不合格率為10%。
此時使用者可能需要找出這個合格率為10%的內容,並進行後續的操作。
但是10%其中的%是一個比較特殊的字元,它是資料庫中的萬用字元。如果利用Like 」10%」
進行查詢的話,則資料庫會把10與10%的內容都查找出來。顯然這不符合我們的需要。
為了避免這種萬用字元等特殊字元給Like查詢帶來的不利影響,則需要通過Escape子句來
搜索包含一個或者多個特殊萬用字元的字串。如上面的例子中,要把%當作一般字元而
不是萬用字元,就必須提供Escape關鍵字和轉義符號。如果Like模式中的轉義符後面沒有字元,
則該模式無效並且 LIKE 返回False。如果轉義符後面的字元不是萬用字元,
則將放棄轉義符並將該轉義符後面的字元作為該模式中的常規字元處理。
不過在全文檢索搜尋中就不會受到這個逸出字元的影響。
此時使用者可能需要找出這個合格率為10%的內容,並進行後續的操作。
但是10%其中的%是一個比較特殊的字元,它是資料庫中的萬用字元。如果利用Like 」10%」
進行查詢的話,則資料庫會把10與10%的內容都查找出來。顯然這不符合我們的需要。
為了避免這種萬用字元等特殊字元給Like查詢帶來的不利影響,則需要通過Escape子句來
搜索包含一個或者多個特殊萬用字元的字串。如上面的例子中,要把%當作一般字元而
不是萬用字元,就必須提供Escape關鍵字和轉義符號。如果Like模式中的轉義符後面沒有字元,
則該模式無效並且 LIKE 返回False。如果轉義符後面的字元不是萬用字元,
則將放棄轉義符並將該轉義符後面的字元作為該模式中的常規字元處理。
不過在全文檢索搜尋中就不會受到這個逸出字元的影響。
如現在在資料庫中有abcd、ab、abef、ab*等行。現在資料庫管理員希望能夠查找出
以ab字元開頭的行,即實現首碼搜索。此時資料庫管理員就可以通過’ 「top*」’
這個條件陳述式來完成。此時系統就會返回所有與星號之前制定的文本相匹配的文本。
如果此時資料庫管理員只想查找ab*的記錄,則就可以使用’ top*’(不包含雙引號)條件陳述式
來完成查詢需求。即如果未在文本和星號前後加上雙引號的話,則全文檢索搜尋將不把星號
當作萬用字元。這就比使用逸出字元要簡單的多。
以ab字元開頭的行,即實現首碼搜索。此時資料庫管理員就可以通過’ 「top*」’
這個條件陳述式來完成。此時系統就會返回所有與星號之前制定的文本相匹配的文本。
如果此時資料庫管理員只想查找ab*的記錄,則就可以使用’ top*’(不包含雙引號)條件陳述式
來完成查詢需求。即如果未在文本和星號前後加上雙引號的話,則全文檢索搜尋將不把星號
當作萬用字元。這就比使用逸出字元要簡單的多。
- 具體應用的差異。
由於全文檢索搜尋與Like關鍵字在功能與性能上的一些差異,故他們在應用領域上也有所差別。
SQL Server資料庫在設計的時候,也是讓他們各自負責一塊領域。如相比Like掛泥漿案子而言,
全文瑣碎可能根據下面這些內容來實現特定的查詢。如可以根據一個或則多個特定的詞和短語
來進行查詢;可以通過特定詞的變形來進行查詢;如可以與另一個詞或短語鄰近的詞或者短語;
如可以對特定詞的同義字形式來進行查詢;如可以通過加權值的詞或者短語來實現查詢等等。
正是因為全文檢索搜尋這些特異功能,決定了全文檢索搜尋在一些特定的場合中特別有用。
SQL Server資料庫在設計的時候,也是讓他們各自負責一塊領域。如相比Like掛泥漿案子而言,
全文瑣碎可能根據下面這些內容來實現特定的查詢。如可以根據一個或則多個特定的詞和短語
來進行查詢;可以通過特定詞的變形來進行查詢;如可以與另一個詞或短語鄰近的詞或者短語;
如可以對特定詞的同義字形式來進行查詢;如可以通過加權值的詞或者短語來實現查詢等等。
正是因為全文檢索搜尋這些特異功能,決定了全文檢索搜尋在一些特定的場合中特別有用。
據考試大瞭解,全文檢索搜尋在如下幾個應用領域有比較突出的表現。一是在電子商務網站上,
使用者可以通過全文檢索搜尋功能在網站主頁上根據產品規格或者名字來實現模糊查詢。
二是在一些人才網站上,可以通過學歷、工作經驗、技術特長等條件在後臺資料庫中查找
需要的人才資訊等等。不管是什麼樣的商業應用場景,全文檢索搜尋的基本管理工作和
開發工作是相同的。不過,在給定的商業應用場景中,可以對全文索引和查詢進行優化
以使其滿足業務目標。例如,對於電子商務來說,最大限度地提高性能可能比對結果
進行排序、檢索的準確性(實際上有多少個現有匹配項是由全文查詢返回的)或支援多種語言
更重要。對於律師事務所來說,首先需要考慮的可能是返回所有可能存在的匹配項。
到目前為止,筆者參與過電子商務專案、律師案例庫等幾個專案中都採用了全文檢索搜尋功能,
都取得了比較不錯的效果。
使用者可以通過全文檢索搜尋功能在網站主頁上根據產品規格或者名字來實現模糊查詢。
二是在一些人才網站上,可以通過學歷、工作經驗、技術特長等條件在後臺資料庫中查找
需要的人才資訊等等。不管是什麼樣的商業應用場景,全文檢索搜尋的基本管理工作和
開發工作是相同的。不過,在給定的商業應用場景中,可以對全文索引和查詢進行優化
以使其滿足業務目標。例如,對於電子商務來說,最大限度地提高性能可能比對結果
進行排序、檢索的準確性(實際上有多少個現有匹配項是由全文查詢返回的)或支援多種語言
更重要。對於律師事務所來說,首先需要考慮的可能是返回所有可能存在的匹配項。
到目前為止,筆者參與過電子商務專案、律師案例庫等幾個專案中都採用了全文檢索搜尋功能,
都取得了比較不錯的效果。
總的來說,在一些簡單查詢中,使用Like關鍵字來實現模糊查詢可能會取得比較好的效果。
但是在一些比較複雜的查詢應用中,特別是需要在大文本中查詢相關的內容,
則最好通過全文檢索搜尋來實現查詢。此時後者無論在性能上、還是在準確度上都會有
比較出色的表現。
但是在一些比較複雜的查詢應用中,特別是需要在大文本中查詢相關的內容,
則最好通過全文檢索搜尋來實現查詢。此時後者無論在性能上、還是在準確度上都會有
比較出色的表現。
2018年9月25日 星期二
[ASP.NET] 使用 Google Analytics 並整合Google Analytics 流量分析資料於網站中顯示
[ASP.NET] 使用 Google Analytics 並整合Google Analytics 流量分析資料於網站中顯示
https://dotblogs.com.tw/joysdw12/archive/2012/05/31/72507.aspx
https://dotblogs.com.tw/joysdw12/archive/2012/05/31/72507.aspx
2018年9月21日 星期五
一日遊
1. 早午餐
阜杭豆漿
100台北市中正區忠孝東路一段108號
2.下午茶
瑞格行動咖啡館
203基隆市中山區湖海路一段
基隆遊記【外木山】《瑞格行動咖啡館》 濱海公路上邊看海景邊喝下午茶 適合坐上一整個下午放空
3. 晚餐
後山海景咖啡
基隆市中山區中山二路65巷105號
4.晚餐
基隆深溪路甕仔雞
201基隆市信義區深溪路3-5號
2018年9月12日 星期三
.NET程式碼執行效率優化
https://tw.saowen.com/a/064d3cac68389409e6b829408e3bbe90029a9d9e168d3e93c97bc139e964cf68
餐廳吃飯
https://www.sogo.com.tw/tp2/foodinfo/18020615504778?
泰酷餐廳
https://www.walkerland.com.tw/article/view/172803
莫凡彼咖啡館-信義區ATT 4 FUN
https://twpang.com.tw/blog/post/203580520
左轉有書x慕哲咖啡
100台北市中正區紹興北街3號
02 3322 1096
怡客咖啡 忠杭店
100台北市中正區杭州南路一段8-2號
02 2322 3766
百八魚場 忠孝店
100台北市中正區忠孝東路一段152號
02 2341 4888
北平上園樓(山西餐廳)
100台北市中正區林森南路4號
02 2393 3331
- えん日本料理
- 晶湯匙
泰酷餐廳
https://www.walkerland.com.tw/article/view/172803
莫凡彼咖啡館-信義區ATT 4 FUN
https://twpang.com.tw/blog/post/203580520
左轉有書x慕哲咖啡
100台北市中正區紹興北街3號
02 3322 1096
怡客咖啡 忠杭店
100台北市中正區杭州南路一段8-2號
02 2322 3766
百八魚場 忠孝店
100台北市中正區忠孝東路一段152號
02 2341 4888
北平上園樓(山西餐廳)
100台北市中正區林森南路4號
02 2393 3331