分類: 3C資訊

  • Windows終端利器Cmder

    Windows終端利器Cmder

    在IT這一行,大部分情況下都是推薦大家使用Linux或者類Unix操作系統去編程,Linux作為一代優秀的操作系統,已經人盡皆知,在IT行業已經成為核心。有條件的大佬都選擇了使用mac編程,最優秀的莫過於終端體驗了,與Linux完全一致的命令行,帶來了許許多多的方便,但是使用Windows的用戶呢?相信大家都使用過cmd終端,它到底好不好呢。相信大家心中已經有了評判。

    一、為什麼要換成cmder

    現在我就要推薦一款Windows下的終端—>cmder
    先來上兩張圖給大家看看

    都不用我說,一眼就能分辨出他倆的區別了,其實他倆最大的區別是cmder完全支持Linux命令行,包括vi,而且可以多開,快捷鍵複製粘貼,分屏等,功能非常強大

    二、下載和安裝

    1.下載

    官網自己下載也可以

    • 在官網下載的時候有兩個版本
      • Mini版本,只有簡單的命令行
      • Full版本,包含git功能(分佈式版本控制系統的git)

    我推薦大家安裝Full版本,這樣就可以不用單獨安裝git了

    2.安裝

    安裝非常簡單,下載完成后,直接解壓到你存放軟件的目錄就好了

    然後雙擊一下cmder.exe就可以先簡單體驗一下了

    三、個性化設置

    這款軟件可以完全替代Windows系統自帶的cmd終端,當然需要一點人性化的設置

    1.配置環境變量

    我就只上圖了,環境變量配置太過簡單了,百度上太多了,都是通用套路,配置完環境變量,就可以直接在Windows+r鍵里運行cmder打開終端了

    上圖中我把git也配置進去了,這樣就不會說git不是內部或者外部命令了

    2.配置右鍵菜單啟動

    右鍵管理員身份運行cmder.exe,然後把下面的命令複製到cmder中執行一次

    // 設置任意地方鼠標右鍵啟動Cmder
    Cmder.exe /REGISTER ALL

    3.進入設置的方法

    右下角的,然後選擇Settings或者直接使用快捷鍵Windows+Alt+p打開設置

    如果不習慣英文,可以將設置改成中文

    下次再次打開設置,又會中文,只有這個設置生效一次,其他的都可以永久生效

    4.設置字體風格等

    設置字體的風格,大小等,圖中紅色位置不要勾選,否則會出現cmder終端字體重疊錯位的問題

    終端界面的字體大小在設置里可以修改,也可以在終端界面滑動鼠標滾輪,或者觸控板雙擊縮放調整字體大小

    5.窗口位置大小記憶

    勾選這兩個設置,只需要設置一次,下次會自動記住上次終端在桌面出現的位置和窗口大小

    6.設置vi模式下ESC鍵最小化窗口的問題

    • 將圖中紅色改成除了總是的其他選項,否則使用vi時會出現無法切換模式的問題
    • 勾選綠色的選項可以解決打開多個終端,任務欄显示多個窗口的問題

    7.解決中文亂碼的問題

    在使用ls命令時,中文亂碼的解決方案,將下面的代碼複製到圖中位置

    set LANG=zh_CN.UTF-8
    set LC_ALL=zh_CN.utf8

    8.強製作為默認終端

    • 圖中綠色設置可以強制將cmder註冊成Windows的默認終端

      設置此選項后,系統啟動后就會生效,且,即使你打開的是cmd,也會被放到cmder的窗口中執行

    • 紅色選項可以解決每次關閉控制台時,彈出確認關閉的彈窗

    9.解決粘貼多行文本時的彈窗

    例如在終端中執行多行SQL語句,總會彈出提示,勾選選項可以解決

    10.將命令提示改成$

    默認的命令提示符是λ,大家都知道Linux是$,這裏提供一下修改的方法,並不是必須的

    1)首先在cmder的安裝目錄下,找到vendor/目錄,然後找到clink.lua文件

    2)右鍵使用sublime打開

    • 沒有sublime或者notepad++打開也可以,還沒有的話,記事本也可以的

    3)打開后可以Ctrl+F查找下面的字段
    local lambda =
    4)將local lambda =""的值替換成$

    5)保存關閉,重啟終端

    11.將Idea的Terminal終端換成cmder

    1)在idea中打開其他設置界面,如圖所示

    在idea中settings是對當前項目生效,Other Settings是對所有項目生效

    2)如圖中修改shell Path的路徑,替換成下面的內容

    注意將cmder安裝目錄換成你的安裝目錄

    //這種方式比較可靠,避免了環境變量失效的問題
    "cmd.exe" /k ""你的cmder安裝目錄\vendor\init.bat""
    
    //或者,這個需要有環境變量
    "cmd.exe" /k ""%環境變量配置的cmder home目錄名稱%\vendor\init.bat""

    3)再次打開Terminal終端就可以使用Linux命令了

    12.將vscode的Terminal終端設置成cmder

    1)打開設置

    2)搜索code save,點擊打開設置json文件

    3)將下面的代碼粘貼到文件中,修改為自己需要的內容

    注意修改cmder的安裝目錄為自己的安裝目錄

    // 設置終端為cmder
    "terminal.integrated.shell.windows": "cmd.exe",
    "terminal.integrated.env.windows": {
        //設置cmder的根目錄
        "CMDER_ROOT": "cmder的根目錄"
    },
    "terminal.integrated.shellArgs.windows": [
        "/k",
        //設置啟動初始化目錄
        "cmder的根目錄\\vendor\\init.bat"
    ],
    
    //下面的設置可以不需要
    //終端顏色配置
    "workbench.colorCustomizations": {
        //可以將鼠標放到下面的色號上根據自己的偏好進行選擇
        "terminal.foreground": "#37FF13",
        "terminal.background": "#2b2424"
    },
    "terminal.integrated.cursorBlinking": true,
    //設置terminal中的行高
    "terminal.integrated.lineHeight": 1.1,
    "terminal.integrated.letterSpacing": 0.1,
    "terminal.integrated.fontSize": 12, //字體大小設置
    "terminal.integrated.fontFamily": "monaco", //字體設置
    "terminal.integrated.shell.linux": "/bin/zsh"

    4)Ctrl+J打開終端,就可以使用了

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    ※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

    ※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

    ※評比南投搬家公司費用收費行情懶人包大公開

  • GitHub 發布了官方 App,還打算冰封你的代碼一千年

    GitHub 發布了官方 App,還打算冰封你的代碼一千年

    11 月 13 日,GitHub Universe 2019 開發者大會上,公布了大量新功能,包括髮布 GitHub 移動版、GitHub Actions 和 Packages 正式版上市、重新設計了通知體驗,以及宣布建設一個數據倉庫存儲所有公共倉庫一千年…

    GitHub App

    官方 App 終於來了,在手機上就可以 Review 代碼、處理 Issues、合併 PR 等常用操作。讓你無論身處何處,都可以靈活地推進工作並與團隊保持聯繫(加班)。

    目前已經發布 iOS beta 版並上線 TestFlight,連黑暗模式都安排上了。

    Android 版還要等段時間推出。

    Actions 和 Packages 正式版

    去年 Universe 大會上發布的 GitHub Actions,以及今年上半年發布的 GitHub Packages 結束了測試期。

    GitHub Actions 是倉庫自帶的自動化構建與部署功能,擁有完整的 CI/CD 解決方案和本機軟件包管理,並且 GitHub Marketplace 上也提供有上千款社區開發的工作流可以使用。

    GitHub Packages 是官方推出的包管理功能,實現將源代碼和包在一個地方集成權限管理和統計,託管在 GitHub 上的軟件包,不僅包括詳細信息和下載統計信息,而且還有它們的全部歷史記錄。

    現在這兩款功能免費向所有公共倉庫開放,並且可以使用 Actions 將新的軟件包版本自動發布到 GitHub Packages,使用 Actions 觸發軟件包安裝,以及以最小的配置安裝託管在 GitHub Packages 或首選記錄註冊表上的軟件包和映像。通過 Actions 使用相同的 GITHUB_TOKEN 進行所有自動化程序包的上載和下載。

    通知功能

    以往在一些熱門開源項目中、或者大型團隊中,各種 Issues 和 PR 的通知郵件會無差別充斥在郵箱中,很難將信號和噪音區分開。

    官方終於推出了通知功能來解決這個問題,設立了通知收件箱,可以對不同信息進行篩選和分類,讓你聚焦到有價值的信息中。

    並且會着重結合官方 App 進行通知推送。

    目前該功能是內測階段,如果想體驗可以下載 GitHub App 獲取測試資格。

    代碼導航

    代碼導航已於今年早些時候在特定存儲庫的有限公測中發布。今天,官方將其提供給 GitHub 上的所有 Ruby,Python 和 Go 存儲庫,並且很快就會有更多的語言。查看任何公共或私有存儲庫上的 “code” 選項卡,以獲取受支持的語言以進行嘗試。

    代碼搜索

    在接下來的幾個月中,官方將引入一種新的代碼搜索體驗,包括區分大小寫,特殊字符,標記化和其他特定於代碼的搜索條件。

    保存你的代碼一千年

    官方發布了一項偉大的計劃:將建設一個名為 GitHub Arctic Code Vault 的數據存儲庫,存儲在北極世界檔案館(AWA)中,這是一個長期的檔案設施,位於北極山永久凍土層深 250 米。

    GitHub 將在 2020 年 2 月 2 日掃描所有活動公共存儲庫的快照,並將這些數據保存在 Arctic Code Vault 中。

    官方博客這樣寫道:

    我們與斯坦福圖書館,Long Now 基金會,Internet 檔案館,軟件遺產基金會,Piql,Microsoft Research 和 Bodleian 圖書館建立了合作夥伴關係,以保護全球的開源代碼。我們將通過跨各種數據格式和位置存儲多個副本來保護這種知識,包括一個旨在保存至少一千年的非常長期的檔案庫,稱為 GitHub Arctic Code Vault。

    本文屬於原創,首發於微信公眾號「面向人生編程」,如需轉載請後台留言。

    關注后回復以下信息獲取更多資源
    回復【資料】獲取 Python / Java 等學習資源
    回復【插件】獲取爬蟲常用的 Chrome 插件
    回復【知乎】獲取最新知乎模擬登錄

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

  • SqlServer設置特定用戶操作特定表(插入、刪除、更新、查詢 的權限設置)

    SqlServer設置特定用戶操作特定表(插入、刪除、更新、查詢 的權限設置)

    目錄

    一、需求場景:

    在和其他廠商對接的時候,經常會將某數據庫的某些表放開增刪改查(CRUD)的權限給對方,此時,就要新建個用戶,授予某數據庫的某些表CRUD的權限;還有的時候只需授權SELECT權限,其他權限不能授予;

    二、操作步驟:

    演示所用數據庫版本:SQL Server Management Studio V17.8.1

    1、登錄SSMS后選擇【安全性】,右鍵點擊【登錄名】,在彈出的右鍵菜單中選擇【新建登錄名】選項;

    2、在【常規】選項卡中,創建登錄名,並設置默認數據庫;

    3、在【用戶映射】選顯卡中,勾選數據庫,並設置【架構】;

    4、對需要設置操作權限的表進行權限設置,【表】–【屬性】;

    數據庫TestDB中已經有兩個表,分別為User和Salary,現在對錶User進行權限設置,將Insert、update、delete、select的權限賦給用戶【zyl】;
    1)、表上右鍵選擇【屬性】,選擇【權限】選項卡:

    2)、點擊【搜索】,在彈出的框中點擊【瀏覽】,選擇需要設置的用戶;

    3)、在上面點擊【確定】后,就可以在【權限】選項卡中看到權限列表,選擇需要的權限點擊確定即可;

    4)、當選中【選擇】和【引用】權限時,還可以設置【列權限】;

    5、使用【zyl】登錄數據庫,就只能看到User表了;

    並且用戶【zyl】只能對錶User進行增刪改查,不能修改表結構;

    三、注意事項

    1、在權限列表中如果選擇了【設置】這項,那麼再設置【列權限】就沒有意義了,因為查詢已經不受限制了;

    如果設置了【列權限】,沒有選擇【設置】權限,那麼select * 就會報錯;

    2、除了對錶設置權限外,還可以對視圖、函數等進行權限設置;

    在數據庫的【安全性】-【用戶】-【zyl】-【屬性】-【安全對象】;

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享

  • 如何提高web應用的吞吐量

    如何提高web應用的吞吐量

    這篇博文所列舉的優化手段是針對比較傳統項目,但是想提高系統的吞吐量現在時髦的技術還是那些前後端未分離, 使用nginx當成靜態資源服務器去代理我們的靜態資源

    是誰限制了Throughput?

    當我們對一個傳統的項目進行壓力測試時,很容器就發現,系統的Throughput被數據庫(mysql)限制的死死的,儘管代碼看起來確實沒毛病,邏輯也沒有錯誤,但是過多的請求都被打向了數據庫,數據庫自個開啟大量的IO操作,這樣大的負載甚至會使Linux系統的整體負載驟然飆升,但是反觀我們的系統的吞吐量,呵呵…

    將目光投向緩存

    既然mysql的抗壓能力限制了我們的系統,那就將數據緩存起來,盡一切可能減少用戶和數據庫之間的直接接觸的次數,這樣我們的系統的吞吐量,同一時間能處理器的請求數量自然會升上去

    市面上的緩存技術很多, 比較火爆的是兩款緩存數據庫 Memcache 和 Redis ,

    Redis 和 Memcahe的區別

    • Redis不僅僅支持key-value鍵值對類型的數據,同時還支持list,set,hash等數據結構
    • redis支持數據的備份,即master-slaver模式的集群備份
    • Redis是支持數據持久化的,它可以將內存中的數據保存在磁盤中,支持RDB和AOF兩種持久化形式

    對Redis進行壓測

    # 挨個測試redis中的命令
    # 每個數據包大小是3字節
    # 100個併發, 發起10萬次請求
    redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000
    
    [root@139 ~]# redis-benchmark -h 127.0.0.1 -p 9997 -c 100 -n 100000
    ====== PING_INLINE ======
      100000 requests completed in 1.04 seconds
      100 parallel clients
      3 bytes payload
      keep alive: 1
    
    98.68% <= 1 milliseconds // 百分之98.68的請求在1毫秒內完成了
    99.98% <= 2 milliseconds 
    100.00% <= 2 milliseconds
    96525.09 requests per second  // 每秒完成的請求數在9萬六左右
    
    
    -d  指定數據包的大小,看下面redis的性能還是很強大的
    -q  簡化輸出的參數
    [root@139 ~]# redis-benchmark -h 127.0.0.1 -p 9997 -q -d 100 -c 100 -n 100000
    PING_INLINE: 98619.32 requests per second
    PING_BULK: 95877.28 requests per second
    SET: 96153.85 requests per second
    GET: 95147.48 requests per second
    INCR: 95238.10 requests per second
    LPUSH: 95328.88 requests per second
    RPUSH: 95877.28 requests per second
    LPOP: 95328.88 requests per second
    RPOP: 97276.27 requests per second
    SADD: 96339.12 requests per second
    HSET: 98231.83 requests per second
    SPOP: 94607.38 requests per second
    LPUSH (needed to benchmark LRANGE): 92165.90 requests per second
    LRANGE_100 (first 100 elements): 97181.73 requests per second
    LRANGE_300 (first 300 elements): 96153.85 requests per second
    LRANGE_500 (first 450 elements): 94428.70 requests per second
    LRANGE_600 (first 600 elements): 95969.28 requests per second
    MSET (10 keys): 98231.83 requests per second
    
    只測試 指定的命令
    -t 跟多個命令參數
    [root@139 ~]# redis-benchmark -p 9997 -t set,get -q -n 100000 -c 100 
    SET: 97276.27 requests per second
    GET: 98135.42 requests per second

    從上面的壓力測試中,可以看到,Redis的性能是絕對實力, 相當強悍,和mysql相比不是一個量級的, 所以結論很明顯,如果我們在用戶和mysql中鍵加一層redis做緩存,系統的吞吐量自然會上去

    於是為了提高系統的抗壓能力,我們將壓力從mysql逐步轉移到redis中

    頁面緩存技術

    在說頁面緩存之前,我們先說一下在一個傳統的項目中,一個請求的生命周期大概是這樣的: 從瀏覽器發出到服務端, 服務端查詢數據庫獲取結果, 再將結果數據傳遞給模板引擎將數據渲染進html頁面

    想提高這個過程的速度,我們可以這樣搞, 頁面緩存, 顧名思義就是將 html 頁面緩存到緩存數據庫中

    示例如下:

    一開始我們會先嘗試從緩存中獲取出已經渲染好的html源碼響應給客戶端, 響應的格式通過@ResponseBody和produces中的屬性進行控制,告訴瀏覽器自己會返回給它html文本

    優點: 將用戶的請求的壓力從mysql轉移到redis, 這點強度對redis單機來說根本不是事

    缺點: 很明顯,將請求擴大到頁面級別,數據一致性難免會受到影響, 這也是使用頁面緩存不得不考慮的一點

    特點1 : 嚴格控制緩存的時間, 一定別忘了添加過期時間…

    特點2 : 原來都是讓thymeleaf自動完成數據的渲染,現在的話,很明顯是我們手動在渲染數據

        @RequestMapping(value = "/to_list",produces = "text/html;charset=UTF-8")
        @ResponseBody
        public String toLogin(Model model, User user, HttpServletResponse response, HttpServletRequest request) {
    
            // 先從redis緩存中獲取數據
            String html = redisService.get(GoodsKey.goodsList, "", String.class);
            if (html != null)
                return html;
    
            // 查詢商品列表
            List<GoodsVo> goodsList = goodsService.getGoodsList();
            model.addAttribute("goodsList", goodsList);
    
            // 使用Thymeleaf模板引擎手動渲染數據
            WebContext springWebContext = new WebContext(request,response,request.getServletContext(),request.getLocale(),model.asMap());
            String goods_list = thymeleafViewResolver.getTemplateEngine().process("goods_list", springWebContext);
    
            // 存入redis
            if (goods_list!=null){
                redisService.set(GoodsKey.goodsList,"",goods_list);
            }
            return goods_list;
        }

    既然都說到這裏了, 就接着說還能怎麼玩吧…

    你看, 上面通過手動控制模板引擎的api竟然得到的已經渲染好的html源代碼了, 什麼叫做已經渲染好的? 說白了就是原來我在前端寫:th ${user},這樣的佔位符,現在已經被thymeleaf替換成了 張三 … (說的夠直接吧)

    拿到了已經渲染好的源代碼,我們就能通過IO操作,將這個文件寫到系統的某個目錄上去,不知道大家有沒有發現,去逛京東淘寶瀏覽某個商品頁面時,就會發現url是類似這樣的 www.jjdd.com/aguydg/ahdioa/1235345.html

    這個後綴123145.html 大概率說明京東使用靜態頁的技術, 這太明智了,面對如此巨大數量的商品信息後綴用数字來表示也不錯,而且速度還快不是?

    怎麼實現這種效果呢?

    就是上面說的,通過IO將這些源碼的數據寫到Linux中的某一個目錄下面, 文件名就是上面URL中的最後的数字, 通過Nginx做靜態資源服務器將這些xxx.html代理起來, 用戶再訪問的話就走這個靜態頁, 同樣不會接觸數據庫, 而且nginx還支持零拷貝,併發數5萬不是事…
    還有,後綴數組最好也別亂寫,直接使用商品id會更好,畢竟是先點擊商品獲取到id,再進入到靜態頁

    對象緩存技術

    緩存java中的對象, 比如將用戶的信息持久化進redis, 每次用戶查詢自己的信息先從redis中查詢,有的話直接返回,沒有的話再去查詢數據庫, 這樣同樣實現了在用戶和數據庫之間多添加出一層緩存,也可以大大的提高系統的吞吐量

    一般會怎麼玩呢?

    用戶的請求在查詢數據庫之前先嘗試從redis中獲取對象信息, redis中不存在的話就去數據庫中查詢, 查詢完結果后將這個結果換存進redis

    // todo 使用redis做緩存,減少和數據庫的接觸次數
    public Label findById(Long labelId) {
    
        // 先嘗試從緩存中查詢當前對象
        Label label = (Label) redisTemplate.opsForValue().get("label_id" + labelId);
    
        if (label==null){
            Optional<Label> byId = labelRepository.findById(labelId);
            if (!byId.isPresent()) {
                // todo 異常
            }
            label = byId.get();
    
            // 將查出的結果存進緩存中
            redisTemplate.opsForValue().set("label_id"+label.getId(),label);
        }
        return label;
    }

    當用戶update數據 ,先更新數據庫,再刪除/更新redis中響應的緩存

    public void update(Long labelId, Label label) {
        label.setId(labelId);
        Label save = labelRepository.save(label);
    
        // todo 數據庫修改成功后, 將緩存刪除
        redisTemplate.delete("label_id"+save.getId());
        }

    當用戶刪除數據,先刪除數據庫中的數據,再刪除redis中的緩存

    public void delete(Long labelId) {
        labelRepository.deleteById(labelId);
    
        // todo 數據庫修改成功后, 將緩存刪除
        redisTemplate.delete("label_id"+labelId);
    }

    模仿Vue實現頁面靜態化

    大家都在說頁面靜態化, 它真的有那麼神奇嗎? 其實也沒有那麼神奇, 說白了吧,傳統的網頁上的數據是通過模板引擎渲染上去的,(比如JSP或者是說thymeleaf這類模板引擎), 做了靜態化的網頁中數據的渲染通過js完成, 而且這個網頁和項目中的 靜態資源比如js,css 這類的文件放在一個目錄下面, 地位和普通的靜態資源相同, 還有個好處就是, 瀏覽器給的福利, 因為瀏覽器對靜態資源是有緩存的, 如果你善於觀察,就會發現有時候重複請求某個網頁,網頁正常显示,但是狀態碼是304… 請求依然會到達服務端,但是服務端會告訴瀏覽器它想訪問的頁面其實沒有變化, 於是瀏覽器就找到本地的緩存使用

    時下國內 最火爆的玩靜態頁面時下最火爆的技術就是 Angular.js 以及 Vue.js , 也確實好用, 前幾個月我寫過有關vue的筆記, 感興趣的同學可以去看看

    在本篇博客中恰恰好沒用到VUE, 但是實現靜態頁的思路和vue是大差不差的, 同樣是通過js代碼實現頁面的靜態化

    • 首先說後端的代碼怎麼寫?

    前後端分離嘛, 自然是json交互,後端通過@ResponseBody控制返回給前端json對象, 而且, 推薦大家也整一個VO對象,用這個VO對象將各式各樣的數據封裝在一起,一次性返回給前端, 這樣看上去,後端確實是簡單,也就是返回一個json對象

    • 前端怎麼寫呢?

    第一件事就是將html文件從template文件夾下move到static文件夾下面, 讓這個html文件和js/css文件稱兄道弟

    然後是給這個xxx.html該名字, 為啥要改名換目錄呢? 因為SpringBoot是約定大於編碼的, 在什麼目錄下面就是什麼文件, 此外Thymeleaf部分默認的配置信息如下

    @ConfigurationProperties(prefix = "spring.thymeleaf")
    public class ThymeleafProperties {
    
        private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;
    
        public static final String DEFAULT_PREFIX = "classpath:/templates/";
    
        public static final String DEFAULT_SUFFIX = ".html";
    

    沒辦法,這些配置信息默認就認為類路徑下的templates中都是xxx.html的文件

    第二件事是將html標籤中引入的類似thymeleaf這中命名空間都去掉,靜態頁不需要

    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>商品列表</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <!-- jquery -->
        <!--<script type="text/javascript" th:src="@{/js/jquery.min.js}"></script>-->
        <script type="text/javascript" th:src="js/jquery.min.js"></script>

    第三件事寫一個ajax,當頁面一加載就觸發向後台發請求,獲取數據, 通過jQuery操作各個節點完成數據的渲染

    三步打完收工, 看上也不是很複雜, 但是我們的頁面就是已然成為了靜態頁面, 從此她會被瀏覽器緩存起來,只要這個頁面不發生變動,瀏覽器就會一直使用自己的緩存,在網絡上的數據傳輸量有多帶勁自己腦補,系統RT絕對飆升幾個數量級

    靜態資源的優化手段

    說一下市面上常見的靜態資源優化技術吧:

    • js/css 的壓縮與優化,減少流量
    • 多個js/css組合在一起,減少連接數量
    • Tengine 技術
    • webPack , 使用vue開發時,它就會將一整套vue的依賴打包一個js一個html文件,豈不是爽歪歪?
    • CDN加速技術, 很多雲服務廠商都有提供,而且價格也不貴,將體型大的靜態資源放在CDN上進行加速也是不錯的選擇
    • 使用Nginx做靜態資源代理,而且Nginx就支持零拷貝,還支持將數據文件壓縮后在網絡上傳輸 ,自身的併發量也很強大,當靜態資源服務器它絕對是不二首選, 相信我,你會愛上它的

    另外當多個用戶併發修改庫存時,竟然將庫存修改成了負數, 本身使用的數據庫引擎是 innodb是存在行級鎖的, 我們只要修改一下我們的sql就行 加條件 and stock_number > 0

    為了防止同一個用戶發送兩次請求,偶爾秒殺到多個商品的情況,我們去miaosha_user表中去建立一個唯一的索引,將userId建立唯一索引,不允許相同的userId出現兩次,從而避免上述的情況

    驗證碼技術

    • 好處

    讓用戶去輸入驗證碼的好處有很多, 除了驗證用戶的身份信息之外, 最明顯的好處就是分散用戶對系統的壓力, 前端如果不添加圖片驗證碼的可能在1s內系統需要承載1萬併發, 但是添加了圖片驗證碼, 就能將這1萬併發分散到10秒以內,甚至更多

    • 整體的思路:

      圖片驗證碼不過是個image, 所以說前端想展示它,肯定需要一個img標籤, 一個比較不好想的地方是啥呢? 就是這個圖片的路徑,src=啥的問題, 我們可以怎麼做呢? 可以直接通過這個往src中寫入後端的生成imge的Controller的路徑, 每次刷新頁面,它就會往這個路徑中發起請求, Controller中去生成一個image, 通過HttpServletResponse的獲取到輸出流, 將生成的圖片用流的發送會瀏覽器,再加上他是img標籤,這不就ok了?

    百度一下如何生成圖片驗證碼一類的技術,確實真的很多,我就不貼代碼了, 感興趣的同學自行百度,代碼一片片的

    • 如何實現點擊圖片完成刷新操作呢?

    因為這種圖片是靜態資源,如果你不禁用緩存,這個圖片就會被緩存下來, 要想每次點擊圖片都實現更換驗證碼的話,參考下面的js實現, 添加時間戳

       function refreshImageCode() {
            $("#verifyCodeImg").attr("src","/path/verifyCode?goodsId="+$("#goodsId").val()+"&timestamp="+new Date());
        }

    接口限流技術

    • 什麼是接口限流?

    舉個例子: 如說我們想限制在一分鐘內單個用戶訪問 A Controller中的a方法的次數不能超過30次, 這其實就是一種接口限流的需求, 可以有效的防止用戶的惡意訪問

    • 如何實現接口限流呢?

    其實這件事結合緩存來實現並非是一件難事,比如我就用上面的例子: 不是想對a方法進行限流嗎? 我們就在a方法中添加下面的邏輯

    偽代碼如下:

    public void a(User user){
        // 校驗user合法性
        // 限流
       Integer count = redis.get(user.getId());
        if(count!=null&&count>15)
          return ; // 到達了指定的闋值,直接返回不允許繼續訪問
        if(count==null){
            redis.set(user.getId(),30,1); // 表示當前用戶訪問了1次, 當前key的有效時間為30s
        }else{
            redis.incr(user.getId());
        }
    }
    • 如何不讓限流的邏輯侵染業務代碼呢

    我們可以使用攔截器技術, 如果我們的重寫了攔截器的preHandler()方法,它就會在執行Controller中的方法前進行回調, 再配合自定義註解技術, 後面簡直就是為所以為…

    示例:

    @Component
    public class AccessIntercepter extends HandlerInterceptorAdapter {
        // 在方法執行之前進行攔截
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            if (handler instanceof HandlerMethod){
                HandlerMethod hd = (HandlerMethod) handler;
                LimitAccess methodAnnotation = hd.getMethodAnnotation(LimitAccess.class);
                if (methodAnnotation==null)
                    return true;
    
                // 解析註解
                int maxCount = methodAnnotation.maxCount();
                boolean needLogin = methodAnnotation.needLogin();
                int second = methodAnnotation.second();
                // todo
            }
            return true;
        }
    }

    結語: 最近又到考試周了,今個周六,下周三考試運籌學… 希望自己能平安度過…

    我是bloger 賜我白日夢, 歡迎點贊支持

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    南投搬家前需注意的眉眉角角,別等搬了再說!

  • SpringBoot之微服務日誌鏈路追蹤

    SpringBoot之微服務日誌鏈路追蹤

    SpringBoot之微服務日誌鏈路追蹤

    簡介

    在微服務里,業務出現問題或者程序出的任何問題,都少不了查看日誌,一般我們使用 ELK 相關的日誌收集工具,服務多的情況下,業務問題也是有些難以排查,只能確定大致時間定位相關日誌。log-trace-spring-boot-starter 解決多個服務調用日誌的問題,它可以將一個完整的調用鏈給整合為一個完整有序的日誌。

    支持組件:

    • zuul 調用
    • feign 調用
    • restTemplate 調用

    日誌輸出格式:

    2019-11-14 14:22:07.796  INFO [log-trace-service-a-demo,ac8ffaaed5f343da,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-7] c.p.l.t.service.a.demo.TestController    : controller test2 執行 ac8ffaaed5f343da
    2019-11-14 14:23:15.569  INFO [log-trace-service-a-demo,04cf5392dc5c4881,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-9] c.p.l.t.service.a.demo.TestController    : controller test2 執行 04cf5392dc5c4881
    2019-11-14 14:24:44.183  INFO [log-trace-service-a-demo,86b5c555ce4f4451,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-1] c.p.l.t.service.a.demo.TestController    : controller test2 執行 86b5c555ce4f4451

    我們可以通過 86b5c555ce4f4451 id 進行查詢鏈路上的所有日誌信息。

    log-trace-service-a-demo 為當前應用。
    log-trace-zuul-demo 為上游應用。

    當然這些參數可以基於業務定製的。

    功能使用

    添加依賴

    ps: 實際version版本請使用最新版
    最新版本:

    <dependency>
      <groupId>com.purgeteam</groupId>
      <artifactId>log-trace-spring-boot-starter</artifactId>
      <version>0.1.0.RELEASE</version>
    </dependency>

    ps: 請基於 SpirngBoot2.1.x 版本使用

    配置應用

    這裏以3個微服務來舉例子。

    1. log-trace-zuul-demo 充當網關功能
    2. log-trace-service-a-demo 充當服務A
    3. log-trace-service-b-demo 充當服務B

    調用鏈路為:

    log-trace-zuul-demo -> log-trace-service-a-demo TestController#test -> log-trace-service-b-demo TestController#test

    訪問網關地址: http://127.0.0.1:8000/a/test

    網關日誌如下:

    2019-11-14 14:27:37.434 DEBUG [33b07a9c5f324375,this] 89996 --- [nio-8000-exec-1] c.p.l.t.s.i.zuul.TracePreZuulFilter      : zuul traceid 33b07a9c5f324375

    網關轉發至服務A

    服務A 日誌如下:

    2019-11-14 14:27:37.476  INFO [log-trace-service-a-demo,33b07a9c5f324375,log-trace-zuul-demo,,] 88948 --- [nio-8081-exec-5] c.p.l.t.service.a.demo.TestController    : controller test2 執行 33b07a9c5f324375

    服務A 調用 服務B

    服務B 日誌如下:

    2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.t.servcie.b.demo.TestController    : header traceId 33b07a9c5f324375
    2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.t.servcie.b.demo.TestController    : controller test 執行 33b07a9c5f324375
    2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.trace.servcie.b.demo.TestService   : test 方法執行 33b07a9c5f324375
    2019-11-14 14:27:37.478  INFO [log-trace-service-b-demo,33b07a9c5f324375,log-trace-service-a-demo,,] 88952 --- [nio-8082-exec-3] c.p.l.trace.servcie.b.demo.TestService   : test1 方法執行 33b07a9c5f324375

    這樣可以在第三方日誌平台按照一個id進行查詢了。

    ELK 通過 33b07a9c5f324375 id 查詢出相關的所有鏈路調用。

    配置輸出格式

    目前支持以上參數:

    X-B3-ParentName 上游服務名稱
    X-B3-TraceId 為一個請求分配的ID號,用來標識一條請求鏈路。

    通過 application.properties 進行配置。

    spring.trace.log.format=X-B3-TraceId,X-B3-ParentName
    
    
    `spring.trace.log.format` 配置參數順序將影響日誌輸出格式。
    
    不配置將按照默認格式輸出。

    日誌輸出如下:

    2019-11-14 14:27:37.434 DEBUG [33b07a9c5f324375,this] 89996 --- [nio-8000-exec-1] c.p.l.t.s.i.zuul.TracePreZuulFilter      : zuul traceid 33b07a9c5f324375

    總結

    目前實現了日誌連貫的功能,後續將支持定製輸出 比如按照登陸人員id進行輸出,方便追蹤用戶行為。
    框架方便後續支持 Dubbo 等。

    示例代碼地址:

    作者GitHub:
    歡迎關注

    qq交流群: 812321371 微信交流群: MercyYao

    微信公眾號:

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 農地轉用的特殊案例──北海道知內町太陽能發電廠(上)

    文:宋瑞文(加州能源特約撰述)

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※帶您來了解什麼是 USB CONNECTOR  ?

    ※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

    ※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

    ※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

    ※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

  • 西班牙東北部化學工廠爆炸 釀1死6傷

    摘錄自2020年1月15日中央社報導

    西班牙東北部發生化學工廠爆炸事故,造成一人喪命,傷及六人。當地媒體引述消防人員的說法表示,爆炸很有可能是化學意外所引起。

    「先鋒報」(La Vanguardia)和「國家報」(ElPais)等媒體在網站上表示,這起在塔拉戈納省(Tarragona)發生的爆炸引發衝擊波,造成一棟建築物坍塌,一人身亡。

    加泰隆尼亞救災服務處發言人證實,附近有建築物倒塌並有一人喪生,但還無法確定大樓倒塌與爆炸或大火有關。

    民防局建議附近民眾待在室內,並預防性緊鎖門窗,但說:「沒有證據顯示(爆炸)產生有毒的煙霾。」

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※為什麼 USB CONNECTOR 是電子產業重要的元件?

    網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

    ※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

    ※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

  • 印尼水患災情慘重 雅加達省長遭民眾控告

    摘錄自2020年1月14日中央社報導

    印尼一名律師今天(14日)表示,在暴雨引發洪水及土石流災情,導致數十人喪命、數千人無家可歸後,雅加達省長阿尼斯(AniesBaswedan)因此被這座大城市的居民控告。

    超過200名水患受災民眾昨天在首都雅加達(Jakarta)地方法院提出集體訴訟,尋求總計約430億印尼盾(約新台幣9000萬元)的賠償金。

    這起訴訟指出,阿尼斯未能替雅加達這座大型城市提供合適的預警系統及有效的緊急救難措施,好讓人民的性命及財務損失降到最低。

    雅加達的法務局沒有立即回應置評請求。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    ※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

    ※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

    ※評比南投搬家公司費用收費行情懶人包大公開

  • 世界經濟論壇下週展開 聚焦永續性 童貝里籲終結化石燃料

    世界經濟論壇下週展開 聚焦永續性 童貝里籲終結化石燃料

    環境資訊中心外電;姜唯 翻譯;林大利 審校;稿源:ENS

    2020年第50屆世界經濟論壇年會將在1月21日於瑞士達沃斯展開,主題是「團結打造永續世界」(Stakeholders for a Cohesive and Sustainable World),呼籲企業提升氣候行動的積極度。會議為期四天,吸引來自世界各地的3,000多名與會者。

    今年的會議將有多位年輕的氣候行動者參與,包括17歲的瑞典環保少女童貝里(Greta Thunberg),盼說服世界各國領導人終結化石燃料經濟。

    2020年第50屆世界經濟論壇年會將在1月21日於瑞士達沃斯展開。照片來源: (CC BY-SA 2.0)

    童貝里等多名行動者1月10日在《衛報》發表評論:「我們要求在今年的論壇上,所有公司、銀行、機構和政府代表立刻停止所有對化石燃料探勘和開採的投資,立刻終止所有化石燃料補貼,並立刻徹底撤資化石燃料,」

    「我們要的不是2050年、2030年或是2021年前完成,我們要立刻做,現在馬上做。」

    根據2019年熱帶雨林行動網(Rainforest Action Network)、銀行追蹤(BankTrack)、原民環境網絡(Indigenous Environmental Network)、國際石油改革聯盟(Oil Change International)、美國山嶽協會(Sierra Club)和地球榮譽組織(Honor the Earth)共同發表,獲全球160多個組織背書的「」報告,自2015年簽署巴黎氣候協定至今,33家主要跨國銀行總共投資了1.9兆美元於化石燃料,而且過去兩年間,每年的融資額都在增加,其中6000億美元流向了100家最積極擴張的化石燃料公司。

    報告顯示,全球主要銀行的商業慣例與政府間氣候變遷專門委員會(IPCC)2018年的全球暖化特別報告形成強烈對比。IPCC的《》描繪出急速淘汰化石燃料的急迫性,並估計到2035年,全球每年對乾淨能源的投資需求為2.4兆美元。

    根據國際貨幣基金組織(IMF)的資料,光是在2017年,全世界就花了5.2兆美元在補貼化石燃料,包括煤炭、石油和天然氣。

    美國明尼蘇達州的礦業工廠排放有毒氣體。圖片來源:Tony Webster(CC BY 2.0)

    世界經濟論壇的主辦單位清楚收到環境行動人士的訊息,並且連續第四年讓會議保持氣候中立。

    論壇發言人艾爾奇(Aylin Elci)說:「我們竭盡所能減少排放,從材料和資源的使用著手,提供更多當地、當季和植物性飲食;運輸方面,該論壇的汽車和巴士車隊今年有90%為油電或電動車。」

    論壇發言人坎恩(Oliver Cann)表示,論壇無法減去的溫室氣體排放,主辦單位透過投資負碳排計畫來抵消。

    自2017年起,世界經濟論壇持續計算年會相關碳排,透過資助全球經過認證的排放抵銷計畫來抵消,包括工作人員和與會者搭機的產生的碳排。坎恩說,除了減少碳排放之外,這些措施還創造了就業機會,改善了生活條件。

    為了抵​​消2020年年會的碳排,論壇決定繼續資助兩個關鍵計畫。一是亞馬遜森林砍伐弧線上的「Jacundá」計畫,保護95,000公頃的原始森林並永續生產橡膠、阿薩伊果和巴西堅果。該計畫由社區主導,並在特種巴西保護區中執行,傳統社區在其中有管理資源的權利。

    巴西亞馬遜的「Jacundá」原始森林。圖片來源:

    第二個計畫是「綠色農場生物燃氣」,利用沼氣池處理產生的甲烷作為能源,殘留物則成為瑞士當地農場的肥料。

    此外,論壇還跟瑞士氣候解決方案供應商「南極」公司合作,資助世界各地多個與堆肥、乾淨爐灶、水力和風力發電相關的碳排抵銷計畫:

    印度「新德里堆肥」計畫每年將德里水果和蔬菜市場的73,000噸固體廢棄物轉成堆肥。

    柬埔寨國家厭氧消化計畫將18,000座農場的廢棄物轉為肥料,也取代了生質爐,自2006年起省下150,000噸的木材。

    在馬利,撒哈拉沙漠覆蓋了一半以上的國土。Katene乾淨爐灶計畫在當地的爐具製造工廠創造了400個工作機會,並種植了2400平方公尺的樹木對抗沙漠化。

    中國四川省麻咪澤自然保護區中,當地社區砍柴生火煮飯的需求威脅周圍的生物多樣性和大熊貓的棲息地。世界自然基金會的節柴灶推廣計畫正在努力解決這個問題。

    永續的水力發電是最有效的發電方式,但建築成本是發展的一大阻礙。 在巴西,Incomex Hydro計畫已經建了三座水力發電廠,生產乾淨能源,每年減少超過83,000噸的二氧化碳,可供應14,000戶住宅電力。

    減少排放仍然是世界經濟論壇2020年年會永續發展工作的重點,是其組織永續發展戰略的一部分,目的是透過抵消無法避免的排放,促進瑞士海內外的永續發展。

    在2020年年會召開之前,原民環境網執行總監高圖斯(Tom Goldtooth)提醒仍在投資化石燃料的銀行:「這些銀行所投資的未來,將損害未來七代以上子子孫孫的福祉。」

    World Economic Forum 2020 Aims for Sustainability DAVOS-KLOSTERS, Switzerland, January 12, 2020 (ENS)

    This year’s annual meeting of the World Economic Forum will call on corporations to raise their ambitions for climate action under the theme Stakeholders for a Cohesive and Sustainable World. The meeting’s 50th edition, opening January 21 and running for four days in Davos-Klosters, will bring together over 3,000 participants from throughout the world.

    Young climate activists, including Swedish climate activist Greta Thunberg, 17, will be attending the World Economic Forum this year in an effort to convince world leaders to end the fossil fuel economy.

    “We demand that at this year’s Forum, participants from all companies, banks, institutions and governments immediately halt all investments in fossil fuel exploration and extraction, immediately end all fossil fuel subsidies and immediately and completely divest from fossil fuels,” wrote Thunberg and other young climate activists in an opinion piece in “The Guardian” newspaper on January 10.

    “We don’t want these things done by 2050, 2030 or even 2021, we want this done now – as in right now,” they wrote.

    Since the 2015 Paris Agreement on climate, 33 major global banks have collectively poured US$1.9 trillion into fossil fuels, according to a March 2019 report, “Banking on Climate Change” by six nonprofit organizations and endorsed by over 160 organizations around the world.

    Released by Rainforest Action Network, BankTrack, Indigenous Environmental Network, Oil Change International, Sierra Club, and Honor the Earth, the report reveals that 33 global banks have provided US$1.9 trillion to fossil fuel companies since the adoption of the Paris climate accord at the end of 2015. The amount of financing has risen in each of the past two years.

    Of this total, $600 billion went to 100 companies that are most aggressively expanding fossil fuels. The report shows that the business practices of the world’s major banks stand in contrast to a 2018 special report on global warming by the Intergovernmental Panel on Climate Change (IPCC). That report, “Global Warming of 1.5 °C,” outlined the critical need for a rapid phase-out of fossil fuels and estimated that the world’s clean energy investment needs are $2.4 trillion per year up to 2035.

    In 2017 alone, the world spent $5.2 trillion subsidizing fossil fuels – coal, oil and gas – according to the International Monetary Fund.

    The organizers of the World Economic Forum have already got the message. For the fourth year in a row, the annual meeting will be climate neutral.

    “We do everything we can to reduce emissions in the first place,” said Forum spokeswoman Aylin Elci. This involves looking at the use of materials and resources, the food served – more local, seasonal and plant-based than ever before – and transportation. The Forum’s fleet of cars and buses is 90 percent hybrid or electric this year.

    All greenhouse gas emissions that the Forum cannot eliminate, organizers offset by investing in plans that reduce emissions levels in the atmosphere, says Forum spokesman Oliver Cann.

    The Forum has been calculating and offsetting all emissions connected with the annual meeting, including staff and participant air travel, by funding certified offsetting projects around the world since 2017. Beyond carbon emission reduction, these initiatives also create jobs and improved living conditions, says Cann.

    To offset the 2020 Annual Meeting, the Forum has decided to continue supporting two key projects. The Jacundá project in the Amazonian Arc of Deforestation known for its disappearing tropical forest protects an area of 95,000 hectares of native forest and sustainably produced rubber, açai and brazil nuts. The project is community-led and implemented on a specific Brazilian category of protected areas in which traditional communities own the right to manage the resources.

    The second project is Biogas for Greener Farms, which uses methane generated by the processing of manure in biogas digesters as energy and the residue as fertilizer for local farms in Switzerland.

    Cann details other offsetting projects supported by the Forum in collaboration with South Pole, a provider of global climate solutions headquartered in Zurich, Switzerland with 17 offices around the world.

    Waste Composters

    Composting New Dehli ensures that solid waste from fruit and vegetable markets in Delhi, India, does not end up in landfills and transforms 73,000 tonnes of it into compost every year.

    In Cambodia, the National Biodigester program not only treats waste then used as fertilizer by over 18,000 farms but also replaces biomass stoves, saving 150,000 tonnes of wood since 2006.

    Clean Cookstoves

    In Mali, Katene Clean Cookstoves created 400 jobs in a local stove manufacturing factory and planted 2,400m2 of trees to counter desertification in a country that is more than half covered by the Sahara Desert.

    Communities gathering firewood in China’s Mamize Nature Reserve in Sichuan province threaten the surrounding biodiversity and the habitat of giant pandas, an issue the WWF Mamize Firewood-Saving Cook Stove Project has been working to address.

    Clean Energy – Hydro and Wind Power

    Sustainable hydro plants are the most efficient way to generate electricity, but their cost can be a barrier to construction. In Brazil, Incomex Hydro has set up three hydro plants, which produce clean energy and reduce over 83,000 tonnes of CO2 a year – the equivalent of electricity for 14,000 houses.

    Reducing emissions remains the first priority of the World Economic Forum’s sustainability efforts for the Annual Meeting 2020, which forms part of its broader institutional sustainability strategy.

    The aim is to use offsetting to neutralize the emissions that cannot be avoided, in a way that fosters sustainable development in Switzerland and abroad.

    In advance of the 2020 annual meeting, Tom Goldtooth, executive director of the Indigenous Environmental Network, has a message for banks that are funding fossil fuel development. “These banks are funding a future that will cost the well-being of the next seven generations of life and beyond.”

    ※ 全文及圖片詳見:

    作者

    如果有一件事是重要的,如果能為孩子實現一個願望,那就是人類與大自然和諧共存。

    於特有生物研究保育中心服務,小鳥和棲地是主要的研究對象。是龜毛的讀者,認為龜毛是探索世界的美德。

    延伸閱讀

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

    網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

  • 馬紹爾深受暖化威脅 前總統籲勿視若無睹

    摘錄自2020年1月16日中央社報導

    台灣的太平洋友邦馬紹爾群島是受氣候變遷威脅最大的國家之一,前總統海妮受訪時不僅表示遺憾有些國家未嚴肅看待氣候議題,還提到執政時曾接受台灣援助促進女權。

    路透社報導,在海拔低的馬紹爾群島,全球暖化造成海平面緩慢升高,連卸任總統海妮(Hilda Heine)都必須在她樸素的家裡處理漫入花園的鹹海水。她說,「情況一年比一年糟」。

    馬紹爾群島由超過30個熱帶珊瑚環礁組成,其中多數環礁的平均海拔僅約兩公尺。海妮受訪時說:「全世界都在談氣候變遷,對我們而言,這是攸關存亡的威脅,我們已經盡力把這項議題搬上國際場域了。」

    過去四年,馬紹爾群島發布八次衛生緊急狀態,包括透過蚊子傳染的登革熱、茲卡病毒、屈公病疫情爆發,海妮認為這都與氣候變遷有關。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

    ※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※帶您來看台北網站建置台北網頁設計,各種案例分享