環境資訊中心綜合外電;姜唯 編譯;林大利 審校
本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能
※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享
※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選
※台灣海運大陸貨務運送流程
※兩岸物流進出口一站式服務
摘錄自2018年10月4日中央社報導
路透社報導,緬甸當局4日銷毀查獲的數以百計象牙、穿山甲鱗片和其他動物部位,總重量超過1.4公噸,黑市價格達到130萬美元(約新台幣4000萬元),作為政府打擊非法走私野生生物的一環。
緬甸位於全球非法野生生物交易的心臟地帶,大部分走私品銷往中國。緬甸、寮國和泰國的交界地區,就是惡名昭彰的「金三角」(Golden Triangle)。
保育團體「拯救大象」(Save the Elephants)本週提出的報告指出,中國近來推出的象牙交易禁令,幾乎無法阻止緬甸與中國邊界城鎮勐拉(Mong La)的交易「大量成長」。過去3年來,勐拉鎮出售新的象牙產品增加60%。
本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!
※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!
※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!
※大陸寄台灣空運注意事項
※大陸海運台灣交貨時間多久?
※避免吃悶虧無故遭抬價!台中搬家公司免費估價,有契約讓您安心有保障!
兩種運動檢測算法的介紹:
幀差法:
幀差法是目前運動目標檢測中最常用的算法。幀差法依據的原則是:當視頻中存在移動物體的時候,相鄰幀(或相鄰三幀)之間在灰度上會有差別,求取兩幀圖像灰度差的絕對值,則靜止的物體在差值圖像上表現出來全是0,而移動物體特別是移動物體的輪廓處由於存在灰度變化為非0,當絕對值超過一定閾值時,即可判斷為運動目標,從而實現目標的檢測功能。
二維頻域運動目標檢測:
通過對動態圖像的行列分解, 將三維頻域內的運動檢測問題轉化到兩組二維頻域內進行, 從而降低了濾波器設計的難度。給出了一種提取主運動能量的自適應濾波算法, 通過剔除背景和噪聲的頻率成分, 有效地檢測出運動目標。
複雜度分析:
針對幀差法進行分析,代碼複雜度主要集中在absdiff與findContours部分,其中absdiff的迭代次數為2*500*500=50000次,時間為88.46ms(取兩百幀計算平均的時間)
針對二維頻域運動目標檢測算法,這裡有兩個代碼版本:
針對py-new-fuliye.py,代碼的複雜度主要集中在兩個部分:傅里恭弘=叶 恭弘變換以及遍歷,在py-new-fuliye.py中,共使用了兩次傅里恭弘=叶 恭弘變換與兩次遍歷,遍歷的迭代次數次數為2*50*30=300次,時間為:54.175ms
針對pepoplefft.py(改進版)進行分析,使用了兩次傅里恭弘=叶 恭弘變換(一次正一次逆),進行了一次嵌套遍歷,遍歷次數為:50*10=500次,時間為: ms
針對pepoplefft.py進行優化調參:
搜尋噪點:
要找到噪點,就要知道經傅里恭弘=叶 恭弘高通濾波變換后,剩餘的邊緣部分在數組中的表現規律,採用numpy繪圖表示出來:
經過閾值去噪后,效果如圖:
在隨後的視頻測試中發現其面對複雜環境表現仍不理想,此時考慮選擇繪製多個矩形來框選標記多個候選目標,暫時不考慮使用其他的濾波進行去噪,原因為1、會佔用原本就不多的處理時間,2、不認為在經過高通濾波后還未被濾掉的噪點會被其他濾波函數濾掉,目標被濾掉的可能性反而更大。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※為什麼 USB CONNECTOR 是電子產業重要的元件?
※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!
※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光
※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!
※專營大陸快遞台灣服務
※台灣快遞大陸的貨運公司有哪些呢?
以前寫過一篇《》的文章,文章的地址是:https://www.cnblogs.com/tosser/p/9022187.html,我當時使用 OCX 來實現,可是 OCX 只支持 IE 瀏覽器,後來在往上找了一個 Chrome 的擴展,也解決了該問題。不過,總覺得無論使用 OCX 還是使用 Chrome 的擴展,都是瀏覽器相關的,並不通用。後來,使用 Socket 寫了一個簡單的 DEMO,用來模擬 HTTP 服務器,然後使用 Ajax 進行通信,問題解決了。也不再是瀏覽器相關了。
Web 頁面獲取 MAC 地址的設計思路
Web 頁面獲取 MAC 地址的設計思路是比較簡單的,只需要在本地模擬一個 HTTP 服務器,然後讓 Web 頁面通過 Ajax 來請求 HTTP 服務器,HTTP 服務器直接返回本機的 MAC 地址就可以了。
具體流程如下圖:
流程圖非常的清楚,主要就是 HostServer 和 Ajax 的通信,這樣就可以得到 MAC 地址,然後通過 DOM 操作,即可把 MAC 地址寫入到 input 框中。這樣,就可以和用戶名、密碼一起提交給服務器進行驗證了。
除了獲取 MAC 地址還能幹啥
之前做過一個物流提貨的項目,涉及到一些硬件設備,包括:小票打印機、刷卡器(身份證、銀聯卡)、進幣器、密碼数字鍵盤等。這些設備、電腦主機和显示器在一個類似 ATM 機那樣的機櫃中(其實就是 ATM 機的設備,本身這套東西就是銀行提供的)。
操作這些硬件的接口廠家提供了一個 OCX,而整個項目是 B/S 架構的。那麼,在客戶端想要操作這些硬件,就要調用 OCX,而 OCX 只能在 IE 瀏覽器下使用(Chrome、FireFox 是不支持 OCX 的)。眾所周知,IE 對 Web 並不友好,但是如何又能在不使用 IE 的情況下,又去調用 OCX 來完成操作硬件的功能呢?那麼就是我們上面的方法了。
簡單的描述一下,就不貼圖了。
在終端上放一個 HostServer 用來接受頁面中 Ajax 的請求,並根據請求去調用 OCX 中相應的功能,把 OCX 的返回信息,再以 Json 的格式返回給 Ajax 即可。
這樣,把 瀏覽器 和 OCX 文件進行了分離,中間加入了一個 HostServer,頁面 和 OCX 的通信通過了 HostServer,那麼以後如果接口是 DLL 文件,也可以通過 HostServer 來進行完成,當然,還可以完成更多的功能。
總結
其實整個獲取 MAC 地址的功能,對於登錄頁面而言是一個服務端,它在本地是一個可執行的程序,那麼它和普通的 EXE 文件是沒有區別的,那麼它能完成的功能其實遠遠不是獲取一個 MAC 地址的功能,對於上面的例子來說,把服務的提供者和使用者進行了分離,而且針對於本機的擴展也十分的方便了。當然,如果你願意的話,可以讓 HostServer 充當客戶端直接和後端的服務器進行通信而不通過瀏覽器,這樣是不是還能做一些讓用戶沒有感知的事情?
我的微信公眾號:“碼農UP2U”
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能
※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享
※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選
※台灣海運大陸貨務運送流程
※兩岸物流進出口一站式服務
邏輯備份用於備份數據庫的結構(CREAET DATABASE、CREATE TABLE)和數據(INSERT),這種備份類型適合數據量小、跨SQL服務器、需要修改數據等場景。如mysqldump命令就是產生一個邏輯備份工具,使用mysqldump輸出的文件包含CREATE TABLE和INSERT語句,能夠直接重建表內容和表結構。
使用邏輯備份有以下優勢和劣勢:
- 可移植性高,SQL語句可直接適用於其他SQL服務器;
- 在數據恢復之前可增加、修改數據;
- 數據恢復粒度小可以是服務器、數據庫、表級別;
- 使用文本格式,可讀性高;
- 備份時需要訪問mysql服務器,影響其他客戶端;
- 需要將數據轉換成邏輯格式(SQL,CSV);
- 如果命令運行在客戶端,mysql服務器還需要將數據發送給客戶端;
- 因為輸出格式為文本文件,佔用空間較大;
物理備份是包括存儲數據庫內容的目錄和文件的副本,這種類型的備份適用於需要在出現問題時快速恢復的大型重要數據庫。
- 完整的Mysql文件和目錄備份,只需要複製文件不需要轉換,速度比邏輯備份更快;
- 除了備份數據,還能備份配置文件和日誌文件;
- 不需要運行Mysql服務器就可以完成備份;
- 備份工具簡單使用cp、scp、tar命令即可完成備份;
- 可移植性不高,恢複數據只適用於相同或類似的機器上;
- 為了保持數據庫文件的一致性,需要停機備份;
- 恢復粒度不能按表或用戶恢復;
在線備份需要mysql服務器處理運行狀態,以便備份工具從mysql服務器中獲取數據。離線備份表示mysql服務器處理停止狀態。兩種備份形式也可以稱為“熱備份”和“冷備份“。
- 備份不需要停機,對其他客戶端影響較小其他連接能夠正常訪問mysql服務器(依賴操作類型,如讀操作);
- 備份需要加鎖,以免在備份期間對數據做出修改;
- 備份期間服務器不可用;
- 備份過程更簡單,不會受到客戶端的干擾;
mysqldump屬於邏輯備份命令,使用mysqldump備份的優勢是它非常方便和靈活,可以直接編輯輸出文件或者使用導入到其他的SQL服務器中去,但是它不能用作備份大量數據的快速解決方案,對於大數據量,即使備份花費的時候可以接受,但是恢複數據也可能會非常緩慢,因為執執行SQL語句會涉及磁盤I/O進行插入,創建索引等。mysqldump的使用方式非常簡單:
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
使用mysqldump備份時要注意:數據庫的一致狀態,在執行mysqldump命令時要保證數據不會再發生變更,保持數據的一致性有二種方法:
REPEATABLE READ使用REPEATABLE READ事務隔離級別執行mysqldump命令(使用事務保持數據庫的一致狀態):
mysqldump --master-data=2 \
--flush-logs \
--single-transaction \
--all-databases > /backup/`date +%F-%H`-mysql-all.sql
備份參數說明:
- –master-data: 將二進制日誌文件的名稱和位置備份
- –flush-logs: 開始備份之前刷新mysql服務器日誌文件
- –single-transaction:開始備份之前設置事務隔離級別為REPEATABLE READ然後發送一個START TRANSACTION命令。
- –all-databases:備份所有數據庫
為了保證複製文件的完整性,備份原始文件最好是停止mysql服務器,複製原始文件備份由以下步驟完成:
- 停止mysql服務器
$ mysqladmin shutdown- 使用合適的工具複製原始數據文件
$ tar cf /tmp/dbbackup.tar ./data- 備份完成后,運行mysql服務器
$ mysqld_safe
使用mysqldump和tar備份或多或少都會對業務產生影響,使用mysqldump備份需要對數據加鎖,加鎖就意味着其他客戶端操作受到限制。使用tar命令需要停止服務器直接導致數據庫服務器不可用,有沒有辦法能解決這兩種問題呢?答案是有的,就是使用主從備份模式。
在單機的基礎上增加一台Slave機器對Master機器的數據進行同步:
開始備份時對Slave進行備份,這樣即使Slave停機或對數據加鎖也不會影響業務的正常使用,如果公司有條件或業務非常重要可以選擇這種方案來備份數據。
歡迎關注微信公眾號《架構文摘》,高質量技術文章第一時間推送。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※為什麼 USB CONNECTOR 是電子產業重要的元件?
※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!
※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光
※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!
※專營大陸快遞台灣服務
※台灣快遞大陸的貨運公司有哪些呢?
最近對我們的服務進行了改造,原本內部服務在內部可以匿名調用,現在增加了限制,通過 identity server 來管理 api 和 client,網關和需要訪問api的客戶端或api服務相互調用通過 client_credencial 的方式來調用,這樣一來我們可以清晰知道哪些 api 服務會被哪些 api/client 所調用,而且安全性來說更好。
為了保持後端服務的代碼更好的兼容性,希望能夠實現相同的代碼通過在 Startup 里不同的配置實現不同的 Authorization 邏輯,原來我們的服務的 Authorize 都是以 Authorize("policyName") 的形式來寫的,這樣一來我們只需要修改這個 Policy 的授權配置就可以了。對於 AllowAnonymous 就希望可以通過一種類似的方式來實現,通過自定義一個 Policy 來實現自己的邏輯
將 action 上的 AllowAnonymous 替換為 Authorize("policyName"),在沒有設置 Authorize 的 controller 上增加 Authorize("policyName")
public class AllowAnonymousPolicyTransformer : IApplicationModelConvention
{
private readonly string _policyName;
public AllowAnonymousPolicyTransformer() : this("anonymous")
{
}
public AllowAnonymousPolicyTransformer(string policyName) => _policyName = policyName;
public void Apply(ApplicationModel application)
{
foreach (var controllerModel in application.Controllers)
{
if (controllerModel.Filters.Any(_ => _.GetType() == typeof(AuthorizeFilter)))
{
foreach (var actionModel in controllerModel.Actions)
{
if (actionModel.Filters.Any(_ => _.GetType() == typeof(AllowAnonymousFilter)))
{
var allowAnonymousFilter = actionModel.Filters.First(_ => _.GetType() == typeof(AllowAnonymousFilter));
actionModel.Filters.Remove(allowAnonymousFilter);
actionModel.Filters.Add(new AuthorizeFilter(_policyName));
}
}
}
else
{
if (controllerModel.Filters.Any(_ => _.GetType() == typeof(AllowAnonymousFilter)))
{
var allowAnonymousFilter = controllerModel.Filters.First(_ => _.GetType() == typeof(AllowAnonymousFilter));
controllerModel.Filters.Remove(allowAnonymousFilter);
}
controllerModel.Filters.Add(new AuthorizeFilter(_policyName));
}
}
}
}
public static class MvcBuilderExtensions
{
public static IMvcBuilder AddAnonymousPolicyTransformer(this IMvcBuilder builder)
{
builder.Services.Configure<MvcOptions>(options =>
{
options.Conventions.Insert(0, new AllowAnonymousPolicyTransformer());
});
return builder;
}
public static IMvcBuilder AddAnonymousPolicyTransformer(this IMvcBuilder builder, string policyName)
{
builder.Services.Configure<MvcOptions>(options =>
{
options.Conventions.Insert(0, new AllowAnonymousPolicyTransformer(policyName));
});
return builder;
}
}
controller 中的代碼:
[Route("api/[controller]")]
public class ValuesController : Controller
{
private readonly ILogger _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
var msg = $"IsAuthenticated: {User.Identity.IsAuthenticated} ,UserName: {User.Identity.Name}";
_logger.LogInformation(msg);
return new string[] { msg };
}
// GET api/values/5
[Authorize]
[HttpGet("{id:int}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// ...
}
Startup 中 ConfigureServices 配置:
var anonymousPolicyName = "anonymous";
services.AddAuthorization(options =>
{
options.AddPolicy(anonymousPolicyName, builder => builder.RequireAssertion(context => context.User.Identity.IsAuthenticated));
options.DefaultPolicy = new AuthorizationPolicyBuilder(HeaderAuthenticationDefaults.AuthenticationSchema)
.RequireAuthenticatedUser()
.RequireAssertion(context => context.User.GetUserId<int>() > 0)
.Build();
});
services.AddMvc(options =>
{
options.Conventions.Add(new ApiControllerVersionConvention());
})
.AddAnonymousPolicyTransformer(anonymousPolicyName)
;
訪問原來的匿名接口
userId 為0訪問原來的匿名接口
userId 大於0訪問原來的匿名接口
userId 為0訪問需要登錄的接口
userId 大於0訪問需要登錄的接口
注:按照上面的做法已經可以做到自定義 policy 代替 AllowAnonymous 的行為,但是原來返回的401,現在可能返回到就是 403 了
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能
※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享
※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選
※台灣海運大陸貨務運送流程
※兩岸物流進出口一站式服務
EntityFramework Core有許多新的特性,其中一個重要特性便是批量操作。
批量操作意味着不需要為每次Insert/Update/Delete操作發送單獨的命令,而是在一次SQL請求中發送批量組合指令。
批處理是期待已久的功能,社區多次提出要求。現在EFCore支持開箱即用確實很棒,可以提高應用程序的性能和速度。
下面以常見的批量插入為例,使用SQL Server Profiler 觀察實際產生並執行的SQL語句。
還有一種關注EFCore產生的sql語句的方式,添加Nlog支持,關注Microsoft.EntityFrameworkCore.Database.Command 日誌
<logger name=”Microsoft.EntityFrameworkCore.Database.Command” minlevel=”Debug” writeTo=”sql” />
定義插入模型Category, 插入4個實體,這裏為什麼強調4,請留意下文。
public class Category { public int Id { get; set; } public int CategoryID { get; set; } public string CategoryName { get; set; } } /*EFCore 查看模型屬性,有Id使用id作為主鍵, 沒有Id,搜索public "{TableName}Id"作為主鍵,默認為int形主鍵設置標記列自增; */ info: Microsoft.EntityFrameworkCore.Database.Command[20100] Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30'] CREATE TABLE [Categories] ( [Id] int NOT NULL IDENTITY, [CategoryID] int NOT NULL, [CategoryName] nvarchar(max) NULL, CONSTRAINT [PK_Categories] PRIMARY KEY ([Id]) );
using (var db = new BloggingContext())
{
db.Categories.Add(new Category() { CategoryID = 1, CategoryName = “Clothing” });
db.Categories.Add(new Category() { CategoryID = 2, CategoryName = “Footwear” });
db.Categories.Add(new Category() { CategoryID = 3, CategoryName = “Accessories” });
db.Categories.Add(new Category() { CategoryID = 4, CategoryName = “Accessories” });
db.SaveChanges();
}
當執行SaveChanges(), 日誌显示:
info: Microsoft.EntityFrameworkCore.Database.Command[20100] Executing DbCommand [Parameters=[@p0='1', @p1='Clothing' (Size = 4000), @p2='2', @p3='Footwear' (Size = 4000), @p4='3', @p5='Accessories' (Size = 4000), @p6='4', @p7='Accessories' (Size = 4000)], CommandType='Text', CommandTimeout='30'] SET NOCOUNT ON; DECLARE @inserted0 TABLE ([Id] int, [_Position] [int]); MERGE [Categories] USING ( VALUES (@p0, @p1, 0), (@p2, @p3, 1), (@p4, @p5, 2), (@p6, @p7, 3)) AS i ([CategoryID], [CategoryName], _Position) ON 1=0 WHEN NOT MATCHED THEN INSERT ([CategoryID], [CategoryName]) VALUES (i.[CategoryID], i.[CategoryName]) OUTPUT INSERTED.[Id], i._Position INTO @inserted0; SELECT [t].[Id] FROM [Categories] t INNER JOIN @inserted0 i ON ([t].[Id] = [i].[Id]) ORDER BY [i].[_Position];
從SQL Profiler追溯到的SQL:
exec sp_executesql N’SET NOCOUNT ON;
DECLARE @inserted0 TABLE ([Id] int, [_Position] [int]);
MERGE [Categories] USING (
VALUES (@p0, @p1, 0),
(@p2, @p3, 1),
(@p4, @p5, 2),
(@p6, @p7, 3)) AS i ([CategoryID], [CategoryName], _Position) ON 1=0
WHEN NOT MATCHED THEN
INSERT ([CategoryID], [CategoryName])
VALUES (i.[CategoryID], i.[CategoryName])
OUTPUT INSERTED.[Id], i._Position
INTO @inserted0;
SELECT [t].[Id] FROM [Categories] t
INNER JOIN @inserted0 i ON ([t].[Id] = [i].[Id])
ORDER BY [i].[_Position];
‘,N’@p0 int,@p1 nvarchar(4000),@p2 int,@p3 nvarchar(4000),@p4 int,@p5 nvarchar(4000),@p6 int,@p7 nvarchar(4000)’,@p0=1,@p1=N’Clothing’,@p2=2,@p3=N’Footwear’,@p4=3,@p5=N’Accessories’,@p6=4,@p7=N’Accessories’
如你所見,批量插入沒有產生4個獨立的語句,而是被組合為一個傳參存儲過程腳本(用列值作為參數);如果使用EF6執行相同的代碼,則在SQL Server Profiler中將看到4個獨立的插入語句 。
① 就性能和速度而言,EFCore批量插入更具優勢。 ② 若數據庫是針對雲部署,EF6運行這些查詢,還將產生額外的流量成本。
經過驗證:EFCore批量更新、批量刪除功能,EFCore均發出了使用sp_executesql存儲過程+批量參數構建的SQL腳本。
起關鍵作用的 sp_executesql存儲過程: 可以多次執行的語句或批處理 (可帶參)
-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse sp_executesql [ @stmt = ] statement [ { , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' } { , [ @param1 = ] 'value1' [ ,...n ] } ]
注意官方限制:
The amount of data that can be passed by using this method is limited by the number of parameters allowed. SQL Server procedures can have, at most, 2100 parameters. Server-side logic is required to assemble these individual values into a table variable or a temporary table for processing. // SQL存儲過程最多可使用2100個參數
SqlServer sp_executesql存儲過程最多支持2100個批量操作形成的列值參數,所以遇到很大數量的批量操作,EFCore SqlProvider會幫我們將批量操作分塊傳輸,
實際上EFCore 對於少於4個的批量命令,不會使用sp_executesql 存儲過程,我這邊自己根據官方驗證確實如此:
估摸着EFCore使用sp_executesql 也是有點耗資源的,對於小批量(小於4條的批量操作)依舊是產生單條sql。
// 同時EFCore開放了【配置關係型數據庫批量操作大小】
protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder) { string sConnString = @"Server=localhost;Database=EFSampleDB;Trusted_Connection=true;"; optionbuilder.UseSqlServer(sConnString , b => b.MaxBatchSize(1)); // 批量操作的SQL語句數量,也可設定為1禁用批量插入 }
① EFCore 相比EF6,已經支持批量操作,能有效提高應用程序的性能
② EFCore的批量操作能力,由對應的DataBaseProvider支撐(Provider實現過程跟背後的存儲載體密切相關)
– 對於小批量操作(當前EFCore默認MinBatchSize為4》),EFCore不會啟用sp_executesql
- 大批量關注存儲過程sp_executesql ,存儲過程的列值參數最多2100 個,這個關鍵因素決定了在大批量操作的時候 依舊會被分塊傳輸。
③ 另外一個批量操作的方法,這裏也點一下:構造Rawsql【EFCore支持Rawsql】。
sqlite不支持存儲過程,為完成批量插入提高性能,可採用此方案。
var insertStr = new StringBuilder(); insertStr.AppendLine("insert into ProfileUsageCounters (profileid,datetime,quota,usage,natureusage) values"); var txt = insertStr.AppendLine(string.Join(',', usgaeEntities.ToList().Select(x => { return $"({x.ProfileId},{x.DateTime},{x.Quota},{x.Usage},{x.NatureUsage})"; }).ToArray())); await _context.Database.ExecuteSqlCommandAsync(txt.ToString());
+
+
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!
※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!
※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!
※大陸寄台灣空運注意事項
※大陸海運台灣交貨時間多久?
據路透社報導,韓國現代汽車公司高級副總裁Manfred Fitzgerald稱,公司計畫為旗下捷恩斯品牌增添一款豪華純電動車,擴充該豪華品牌的產品線。
Fitzgerald在釜山車展期間向路透社記者表示,由於捷恩斯對現代來講起著推進作用,而且很顯然,電動車必須佔據著重要地位,因此我們確定將推出豪華純電動車。然而,該副總裁並未透露新車推出時間等詳細資訊。
Fitzgerald認為純電動車將是汽車行業的“未來車型。”2015年11月,現代汽車宣佈將原先的高檔子品牌Genesis設立為獨立的全球豪華品牌,此後為了樹立捷恩斯的形象,該公司先後從賓利挖來後者的設計總監呂克•東克沃爾克(Luc Donckerwolke)、外飾設計師Sangyup Lee和前蘭博基尼設計總監Manfred Fitzgerald。
捷恩斯也被現代賦以眾望,被期望增加消費者對高檔車的需求,並借助更高的價位提升不斷減少的利潤。
呂克•東克沃爾克加盟現代後任職現代設計中心高級副總裁,其表示“捷恩斯現在最主要的目標是提高與其他品牌的辨識度,不與後者有設計上的重合。”
現代在一份聲明中表示,計畫在2017年上半年推出捷恩斯G80中大型車的柴油版。在釜山車展上亮相的汽油版G80是該品牌下的第二款車型,將於7月在韓國上市。捷恩斯旗下第一款車型為G90。
Fitzgerald稱,電動車將為捷恩斯這個新品牌增添更多的推進系統,將説明該品牌在豪華車市場獲得成功。
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※為什麼 USB CONNECTOR 是電子產業重要的元件?
※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!
※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光
※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!
※專營大陸快遞台灣服務
※台灣快遞大陸的貨運公司有哪些呢?
![]() |
做為全球電動車市佔率最高的國家,挪威政府對於推行採用電動車不遺餘力。外媒報導,挪威打算進一步修法,目標是在2025年時達成全面禁售汽油車。
挪威目前有24%的汽車屬電動車,去年登記在案的電動車超過五萬輛,且首都奧斯陸是全球電動車密度最高的城市。據外媒《獨立報》、《Dagens Naeringsliv》等媒體報導,挪威朝野四大黨的國會議員已達成立法共識,計畫在2025年前全面禁售或者大量減產汽油車;若計畫順利,挪威將成為全球第一個全面改用電動車的國家。
但由於挪威高度依賴石油產業,此決議是否成行、若成行後會對國家產業帶來何種衝擊,仍在評估當中。
對於這項提案,特斯拉(Tesla)執行長Elon Musk在推特上表示:「這國家太讚了!」若挪威正式通過這項法案,將在國際間產生示範效果,再次推高電動車的接受度。
Just heard that Norway will ban new sales of fuel cars in 2025. What an amazingly awesome country. You guys rock!!
— Elon Musk (@elonmusk)
(首頁圖片來源:)
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能
※評比前十大台北網頁設計、台北網站設計公司知名案例作品心得分享
※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選
※台灣海運大陸貨務運送流程
※兩岸物流進出口一站式服務
![]() |
日本市調機構富士經濟(Fuji Keizai)15日公布了油電混和車(HV)/插電式油電混和車(PHEV)/電動車(EV)等次世代車種的市場動向調查報告,現行次世代車種以HV需求最大,預估截至2025年左右為止,HV仍將為次世代車種的主流產品,不過因HV僅部分日系車廠專注研發,故預估今後其需求增幅恐將趨緩。
另一方面,PHEV、EV在2025年以後的需求增幅將加快,預估2030年左右時,HV、PHEV、EV將呈現幾乎相互抗衡的局面,2035年在北美、歐洲、中國需求加持下,PHEV、EV市場將進一步擴大,超越HV。
富士經濟指出,2015年特斯拉(Tesla)「Model S」在北美、歐洲、中國市場需求強勁,加上中國車廠在獲得政府豐厚補助政策加持下、於中國國內的銷售走揚,帶動EV全球市場規模大幅增加至34萬台(其中歐洲10萬台、中國15萬台)。
富士經濟指出,全球EV市場當前將持續呈現緩和增長,不過預估自2020年左右起,EV需求將呈現急速擴大,預估2035年全球EV市場規模將達567萬台、將較2015年飆增近16倍(成長1,567%);其中,中國市場規模預估達203萬台(為2015年的13.5倍)、歐洲預估為149萬台(2015年的14.9倍)。
富士經濟並預估,2035年全球PHEV市場規模將達665萬台、將較2015年(21萬台)飆增近31倍(成長3,066%),其中歐洲市場規模預估達217萬台(為2015年的24.1倍)、北美市場為182萬台(2015年的36.4倍)。
2035年全球HV市場規模預估為468萬台、將較2015年(159萬台)成長近2倍(成長194%);其中日本市場規模預估達200萬台(2015年的2.3倍)、北美為135萬台(2015年的3.5倍)。
CNBC報導,著有「Clean Disruption of Energy and Transportation」(暫譯:能源和運輸業的綠化革命)一書的創業家Tony Seba 14日在野村證券舉辦的投資論壇上表示,電動車的運輸效能不斷改善,售價更是快速下降,預估以汽柴油做為動力的內燃式引擎(Internal combustion engine)很快就會失去競爭優勢。
Seba預估,到了2020年,美國一台電動車的售價大約會下降至3萬美元,相較之下,目前一台內燃式引擎新車平均售價還多達33,000美元。不僅如此,到了2022年,一台低階電動車的售價甚至有機會下殺到22,000美元。
日經新聞1月12日報導,日本汽車業龍頭豐田汽車社長豐田章男接受日經/金融時報聯訪時表示,「今後100年將是環保車的時代」,他說,「汽車產業過去1個世紀來,主要以汽油引擎為主流,不過下一個100年,燃料電池車(FCV)、插電式油電混合車(PHEV)等各種環保車需求將增長」。
(本文內容由授權使用;首圖來源: CC BY 2.0)
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!
※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!
※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!
※大陸寄台灣空運注意事項
※大陸海運台灣交貨時間多久?