分類: 3C資訊

  • 本田新電動概念車量產版預計2013年日本發佈

    本田新電動概念車量產版預計2013年日本發佈

    近日,一款精緻可愛的小車出現在人們的視線,外觀看上去跟smart fortwo以及雷諾Twizy很相像,它就是於去年東京車展亮相的本田純電動小車概念車Micro Commuter的量產版,預計這款車的原型車將於2013年日本發佈,這款純電動小車正是符合了日本政府提倡環保的要求。

    這款精緻的小車車身長、寬、高分別是2.5/1.25/1.45米,車內前排座位只設計了駕駛者座位,後排座位只能坐兩個小孩,後排座位對於成年人可是很牽強。車內傳統的儀錶板以及操控都是由嵌入式平板電腦來實現。

    動力方面,其搭載了一款後置以及一個容量15KW的鋰電池,最大續航里程僅59km/h,看來這款小車的實用價值還有待實踐,極速也只有80km/h,看來這款小車的推出只適合在城市間短距離行駛。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

    FB行銷專家,教你從零開始的技巧

  • 深圳已成全球新能源汽車應用規模最大的城市

    目前深圳公交行業已累計投入運營的2350輛,開通新能源公交線路136條,各類新能源汽車累計行駛里程達1.9億公里,初步形成了新能源公交服務網路。成為全球新能源汽車應用規模最大的城市。

    深圳市交委日前介紹,2009年6月,深圳巴士集團率先使用混合動力公車輛,開創了使用新能源車輛進行公交營運的先河。至今,巴士集團已有超千輛新能源車輛在營運,深圳市成為世界最大的新能源車輛的營運城市。

    今年9月22日世界無車日當天,深圳首條純電動大巴線路226路全線投入運營,成為深圳純電動大巴從中等規模分散運營到較大規模集中運營的轉捩點。由於純電動大巴具有無噪音、無污染的特點,因而受到了市民的高度稱讚和熱捧。

    據瞭解,目前,深圳公交行業已累計投入運營的新能源汽車2350輛,其中插電式混合動力大巴1751輛,混合動力雙層大巴20輛,純電動大巴253輛,純電動中巴26輛,純電動計程車300輛。現已開通新能源公交線路136條,各類新能源汽車累計行駛里程達1.9億公里,初步形成了新能源公交服務網路。

    據悉,深圳交通運輸部門將逐步加大新能源汽車在公交行業的推廣應用。2012年,計畫推廣純電動公交大巴1000輛,純電動計程車500輛。力爭至2015年,推廣新能源公交大巴7000輛,純電動計程車3000輛,新能源公交大巴約占全市公車輛總數的50%,使深圳成為全球新能源公車投放最多、運行效果最好、管理最規範的示範城市。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※超省錢租車方案

    ※教你寫出一流的銷售文案?

    網頁設計最專業,超強功能平台可客製化

  • 中國高新汽車國際峰會

     

    展會名稱:

    中國高新汽車國際峰會與Automechanika Shanghai

    展館地址:

    中國‧上海,浦東嘉里大酒店

    展會日期:

    2012年12月11-13日

    主辦單位:

    法蘭克福展覽有限公司

    網址:

    會議演講主題:

     

    演講主題範圍包括商業模式,技術創新,基礎設施,服務和生態系統等相關的題目:   ‧ 汽車行業可持續發展的新興商業模式和生態系統合作 ‧ 提高能源效率的混合動力,清潔燃料和電動汽車解決方案 ‧ 個人移動服務的創新設計,技術,市場和服務 ‧ 商用車輛和運輸業的綠色商業模式和經營策略 ‧ 連網車輛和遠程信息處理技術,服務和應用所產生的新收益源 ‧ 充電技術,基礎設施和不斷發展的商業模式 ‧ 先進的電池技術和管理系統,以提高經濟負擔能力 ‧ 替代低碳燃料,能源效率和減少廢氣排放 ‧ 最高性能和效率的動力/傳動系統和電子控制系統 ‧ 先進的材料和製造工藝,以提高生產力和降低成本 ‧ 綠色汽車市場的發展,包括以消費者為導向的策略,售後市場的增長和經銷商的機會 ‧ 未來發展和國際化的投資及融資策略

    演講者及參會者

    峰會的來賓將有來自C級管理,戰略規劃等有影響力的高層決策者,產品創新與服務高管,專業技術人員和工程師:   ‧ 客運和商用車原始設備製造商 ‧ 主要供應商和零部件製造商 ‧ 戰略投資者 ‧ 專業技術人員和工程師 ‧ 車隊管理人員和經營者 ‧ 公用事業和能源服務公司 ‧ 替代燃料供應商 ‧ 先進的傳動系統和電池系統開發商 ‧ 服務提供商 ‧ 政府管理部門和市政領導 ‧ 具有影響力的行業研究機構  

     

    連絡資訊

    連絡人:葉家欣小姐

    電話:(852) 2230 9202

    電子郵件:keiann.yip@hongkong.messefrankfurt.com

    官方網站:www.nextgenautosummit-china.com

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

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

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

  • 微軟將為豐田提供新能源汽車車載終端系統

    2011年豐田與微軟簽署合作協定,微軟為豐田提供車載遠距離通信方面的技術支援,及的車載控制與娛樂終端。該系統將基於Windows Azure作業系統開發,通過利用微軟的資訊服務平臺,將通過將車輛變成資訊終端以提升他們的價值,並提高車輛和交通的安全性。並在170個國家提供該服務。

    豐田汽車北美技術總監紮克。希克斯(Zack Hicks)表示,下一樣重要的互聯網設備是汽車,豐田與微軟合作開發智慧車載系統。但蘋果近期不會大規模投入該領域,蘋果一直在與汽車廠商合作,將其技術應用到汽車上。6月份,蘋果公佈了一款名為Siri Eyes Free的新產品,它實際上是針對汽車的Siri.它能讓司機用語音命令執行一系列操作,例如打電話、播放音樂、發短信、導航等。蘋果稱,搭載這一系統的車型將於2013年夏季面世。

    微軟多年來也為汽車廠商提供了類似技術。福特汽車的Sync智慧娛樂系統和豐田汽車的Entune導航系統都採用了微軟的技術。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

    FB行銷專家,教你從零開始的技巧

  • 程序員不能一直停留在愛學習的階段

    今天在人人都是產品經理的上,看到一篇文章 《一個創業程序員的35歲人生總結(下)》 。其實也道出了我曾經作為技術人員,各種失敗的嘗試。

     

    下面是一種的一段引用,我非常認可

    先說技術,技術是我死磕時間最長的技能。最早在大學選擇FLASH,完全是出於愛好,當時別說我,全世界估計也沒幾個人能預測到僅僅兩年後,FLASH程序員就會隨着網頁遊戲的興起,成為當時最搶手的程序員種類之一。後來畢業了,選工作的時候,更多是學習的心態,創業什麼的,甚至工資,都無所謂,只要能提升技術就行。後來技術到一定程度了,就希望能幫助項目和公司更好地實現大家想要的產品,最終實現大家共同的夢想。

    在類似我經歷的公司中,有兩個問題,會同時困擾大部分程序員和老闆。第一個問題就是“學習”!

    程序員,尤其是前端程序員,天生有一種極強的學習慾望。前端這門技術,半年不學習可能就要落後,一年不學習估計就有被淘汰的風險了。程序員愛學習,不停提升自己的專業技能,這本來是好事。

    但是對於很多創業公司,卻成為不能承受之重。因為很多程序員,會極端地掉入學習的漩渦中,簡直跟掉入錢眼兒里的老闆有得一拼,眼中除了學習啥也容不下,比如曾經的我。更要命的是,有些程序員,自己的人生規劃和學習方向,還跟公司的業務方向不太一致。

    我是06年畢業,畢業就進入了一所當時還不錯的互聯網公司,公司名稱就不說了,反正對這家公司也沒有啥好感,雖然現在很多人都想進去修福報。

      在這家公司裏面,認識了幾個比較好的朋友,算是一個非常大的收穫。更關鍵的是,我們都是一群比較有想法的人,喜歡用技術去做各種各樣的嘗試。   在2006年的時候,我們第一次嘗試做一個網址收藏夾。當時的想法很簡單,我們可以把自己的喜歡的網站地址收藏起來,並且可以隨時隨地的分享到網站裏面,實現起來算是比較簡答。但是對標了一個競品,名字忘記了,好像叫做 ”好網角“。當時三個人,一個負責產品,兩個搞技術。按照道理說,用wordpress之類的網站很快的。結果當時我們兩個做技術的,被公司的環境給洗腦了,覺得一定要用牛逼的技術做出來的東西才有價值。等基礎架構搭建完成之後,我們就不想寫業務代碼了,覺得好無趣,結果不了了之。   在2007年,由於當時我們都是單身,有一天吃飯,想到了是不是可以做一個妹子網站,上面都是妹子。作為單身者,尤其是程序員,完全可以去上面找妹子約會。結果還是卡在了產品設計,因為沒有願意做產品,都想着做技術。由於公司的引導,內部開始架構化轉型,從此開始了架構文化,我這個時候對技術的更加執着。   在2008年和2009年這兩年之間,加班比較多。正好趕緊上公司晉陞P,就比較老實了,沒有太多的想法。   在2010年,微博出來,比較火爆的時候。發現一個蠻有趣的現象,就是微博必須註冊才能看內容,屏蔽了百度的搜索。當時我們知道做垃圾站可以賺錢,就是利用百度seo的流量。就開始搞。這一次吸取了教訓,快速用wordpress搭建了一個網站,然後也不不用爬蟲,直接人工編輯的方式,每天人肉搬運微博最熱門的內容。後來就搬運百度top的內容,反正就是什麼熱門放什麼。這個時候就已經開始在考慮,能不能把今天最熱門的資訊信息找出來,做成一個類似今日熱門的諮詢網站。我們的方法很原始,就是爬蟲去top.baidu.com,微博熱門資訊排行的內容。運營半年的時候,有一天一個帖子爆了,當時獨立IP直接突破5W。不過也因為這個,被新聞辦公廳警告了。後面連續幾次違規,省新聞辦公廳以沒有新聞出版牌照,把網站關停了。不過這個網站看來,還算是比較成功的。至少運營了大半年,也開始讓我思考運營的價值,時間的價值。   2011-2013年,在網站被關停之後,我就意識到內容的價值,開始持續輸出技術文章。曾經的blog鏈接: https://www.cnblogs.com/aigongsi/ ,一共100多篇文章,大概500W閱讀。 不過在輸出內容上,也犯了一個同樣的錯誤,就是覺得應該寫能突出技術能力的內容。當時身邊的技術人都挺瞧不起阮一峰的,覺得他的內容太基礎,沒有啥技術含量。在我輸出內容的時候,純粹就是愛好,沒有考慮目標受眾和持續的運營,更沒有想過IP的問題。這個時候如果有產品經理思維,可能就會明白,阮一峰的目標受眾非常廣,並且商業變現價值是非常高。而所謂技術架構類文章,受眾就小了很多,商業的價值更在於合作,而非變現上。   2015年開始創業,就慢慢開始轉向產品、營銷,運營,算是徹底轉型了。   我現在身邊的技術圈的朋友都是我的同事,都在創業,但是和他們交流起來,他們談論最多的還是怎麼實現功能,用什麼樣的方案,能夠支撐多少用戶量。很少談論到我們的用戶是誰,他們有什麼樣的需求,我們的產品怎麼解決這個需求。更不會考慮我們的產品適合在什麼樣的推廣方式,是內容營銷,還是渠道合作,或者說sem。    
    為什麼不能一直停留在愛學習的階段 其實程序員應該是最愛學習的一個群體。包括很多知識付費,都在輸出各種知識,主要面向的對象都是各種專業技能的。 對於初學者,學習能力肯定是重要的能力。你必須具備基本的知識、技能、經驗。如果你是科研工作者,持續的學習研究是晉陞的必要條件。   商業或者創業,本質上是要拿結果的,反映在經營公司上就是“利潤”,反映在產品上,就是用戶數的增長。技術人員肯定有太多的理由拒絕這些結果,比如曾經我覺得做這些沒有技術挑戰;這些臟活累活對我的職業生涯發展不好;我不喜歡這樣的用戶,他們太low了。   反映在職場上,你也要拿結果。我第一家公司之前一直強調以結果為導向。如果你要晉陞,和領導關係是不是要處理,向上管理是不是要學會。晉陞的話,要準備PPT,基本的PPT技能和演講是不是要學會。如果說邀功是晉陞的必要條件,那就怎麼學者做自我營銷,在公司裏面做自己的IP,讓自己更多的曝光,這樣晉陞的幾率是不是更高一些。我過去這些基本上全部都沒有做到,以至於在職場很難混下去。   如果你以拿結果的思維去看一些事情,技術的牛逼與否僅僅是其中的一個環節。很多時候,我們說自己愛學習,其實是給自己找了一個不去拿結果的借口。因為拿結果太難了,並且很多時候都會面臨失敗。當我們害怕失敗的時候,就會找一個理由拒絕行動,並且這個理由會讓加強我們的某些特質,那麼“愛學習”這個就是非常好一個理由。某些知識付費上癮者,內心是在逃避。   本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

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

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

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

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

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

    ※教你寫出一流的銷售文案?

  • C#數據結構與算法系列(十):逆波蘭計算器——逆波蘭表達式(後綴表達式)

    C#數據結構與算法系列(十):逆波蘭計算器——逆波蘭表達式(後綴表達式)

    1.介紹

    後綴表達式又稱逆波蘭表達式,與前綴表達式相似,只是運算符位於操作數之後

    2.舉例說明

    (3+4)*5-6對應的後綴表達式就是3 4 +5 * 6 –

    3.示例

    輸入一個逆波蘭表達式(後綴表達式),使用棧(Stack),計算其結果

    思路分析:

    從左至右掃描表達式,遇到数字時,將数字壓入堆棧,遇到運算符時,彈出棧頂的兩個數,用運算符對它們做相應的計算(次頂元素 和 棧頂元素),並將結果入棧;

    重複上述過程直到表達式最右端,最後運算得出的值即為表達式的結果例如: (3+4)×5-6 對應的後綴表達式就是 3 4 + 5 × 6 – , 

    針對後綴表達式求值步驟如下:

    從左至右掃描,將3和4壓入堆棧;
    遇到+運算符,因此彈出4和3(4為棧頂元素,3為次頂元素),計算出3+4的值,得7,再將7入棧;
    將5入棧;
    接下來是×運算符,因此彈出5和7,計算出7×5=35,將35入棧;
    將6入棧;
    最後是-運算符,計算出35-6的值,即29,由此得出最終結果

    代碼實現:

    using System;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    
    namespace DataStructure
    {
        public class PolandNotation
        {
            public static void Test()
            {
                try
                {
                    //定義逆波蘭表達式
                    string suffixExpression = "3 4 + 5 * 6 -";
    
                    //將suffixExpression轉換成鏈表的方式
                    var list = GetListString(suffixExpression);
    
                    //輸出結果
                    var result = Calculate(list);
    
                    Console.WriteLine($"{suffixExpression}的結果是{result}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
               
            }
            /// <summary>
            /// 獲取集合
            /// </summary>
            /// <param name="suffixExpression"></param>
            /// <returns></returns>
            public static List<string> GetListString(string suffixExpression)
            {
                //首先實例化List
                List<string> list = new List<string>();
    
                //將字符串通過空格切換成數組
                string[] split=suffixExpression.Split(" ");
    
                //循環添加
                foreach (var item in split)
                {
                    list.Add(item);
                }
    
                return list;
            }
    
            /// <summary>
            /// 計算
            /// </summary>
            /// <param name="list"></param>
            /// <returns></returns>
            public static int Calculate(List<string> list)
            {
                //創建棧
                Stack<string> stack = new Stack<string>();
    
                //循環遍歷
                list.ForEach(item =>
                {
                    //正則表達式判斷是否是数字,匹配的是多位數
                    if (Regex.IsMatch(item,"\\d+"))
                    {
                        //如果是数字直接入棧
                        stack.Push(item);
                    }
                    //如果是操作符
                    else
                    {
                        //出棧兩個数字,並運算,再入棧
                        int num1 =int.Parse(stack.Pop());
    
                        int num2 = int.Parse(stack.Pop());
    
                        int result = 0;
    
                        if(item.Equals("+"))
                        {
                            result = num2 + num1;
                        }
                        else if(item.Equals("*"))
                        {
                            result = num2 * num1;
                        }
                        else if(item.Equals("/"))
                        {
                            result = num2 / num1;
                        }
                        else if (item.Equals("-"))
                        {
                            result = num2 - num1;
                        }
                        else
                        {
                            throw new Exception("無法識別符號");
                        }
    
                        stack.Push(""+result);
                    }
                });
    
                //最後把stack中數據返回
                return int.Parse(stack.Pop());
            }
        }
    }

    結果圖:

     

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

    【其他文章推薦】

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

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※台北網頁設計公司全省服務真心推薦

    ※想知道最厲害的網頁設計公司"嚨底家"!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※推薦評價好的iphone維修中心

  • Kubernetes學習筆記(九):StatefulSet–部署有狀態的多副本應用

    StatefulSet如何提供穩定的網絡標識和狀態

    ReplicaSet中的Pod都是無狀態,可隨意替代的。又因為ReplicaSet中的Pod是根據模板生成的多副本,無法對每個副本都指定單獨的PVC。

    來看一下StatefulSet如何解決的。

    提供穩定的網絡標識

    StatefulSet創建Pod都有一個從零開始的順序索引,這會體現在Pod的名稱和主機名上,同樣也會體現在Pod對應的固定存儲上。所以這些名字是可預先知道的,不同於ReplicaSet的隨機生成名字。

    因為他們的名字都是固定的,而且彼此狀態都不同,通常會操作他們其中的一個。如此情況,一般都會創建一個與之對應的headless Service,通過這個Service,每個Pod將擁有獨立的DNS記錄。

    擴容一個StatefulSet會使用下一個順序索引創建一個新的Pod,縮容會刪除索引值最高的。並且縮容任何時候只會操作一個Pod。

    如何提供穩定的存儲

    StatefulSet可以擁有一個或多個PVC模板,這些PVC會在創建Pod前創建出來,綁定到一個Pod實例上。

    擴容的時候會創建一個Pod以及若干個PVC,刪除的時候只會刪除Pod。StatefulSet縮容時不會刪除PVC,擴容時會重新掛上。

    使用StatefulSet

    定義三個PV

    定義pv-(a|b|c)

    # stateful-pv-list.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-a
    spec:
      capacity:
        storage: 1Mi
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      hostPath:
        path: /tmp/pva
    ---
    apiVersion: v1
    kind: PersistentVolume
    # 以下忽略
    

    headless的Service

    # stateful-service-headless.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: rwfile
    spec:
      clusterIP: None
      selector:
        app: rwfile
      ports:
      - port: 80
    

    定義StatefulSet

    先創建兩個Pod副本。使用volumeClaimTemplates定義了PVC模板。

    # stateful.yaml
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: rwfile
    spec:
      replicas: 2
      serviceName: rwfile
      selector:
        matchLabels:
         app: rwfile
      template:
        metadata:
          labels:
            app: rwfile
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/orzi/rwfile
            name: rwfile
            ports:
            - containerPort: 8000
            volumeMounts:
            - name: data
              mountPath: /tmp/data
      volumeClaimTemplates:
      - metadata:
          name: data
        spec:
          resources:
            requests:
              storage: 1Mi
          accessModes:
          - ReadWriteOnce
    

    創建三個PV,一個headless的Service,一個StatefulSet

    -> [root@kube0.vm] [~] k create -f stateful-pv-list.yaml
    persistentvolume/pv-a created
    persistentvolume/pv-b created
    persistentvolume/pv-c created
    
    -> [root@kube0.vm] [~] k create -f stateful-service-headless.yaml
    service/rwfile created
    
    -> [root@kube0.vm] [~] k create -f stateful.yaml
    statefulset.apps/rwfile created
    

    查看

    -> [root@kube0.vm] [~] k get all -o wide
    NAME                    READY   STATUS      RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
    pod/rwfile-0            1/1     Running     0          12s   10.244.1.52   kube1.vm   <none>           <none>
    pod/rwfile-1            1/1     Running     0          8s    10.244.2.56   kube2.vm   <none>           <none>
    
    NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE   SELECTOR
    service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   81s   <none>
    service/rwfile       ClusterIP   None         <none>        80/TCP    23s   app=rwfile
    
    NAME                      READY   AGE   CONTAINERS   IMAGES
    statefulset.apps/rwfile   2/2     12s   rwfile       registry.cn-hangzhou.aliyuncs.com/orzi/rwfile
    

    查看PV和PVC,可以看到已經有兩個PVC綁定了PV

    -> [root@kube0.vm] [~] k get pv,pvc -o wide
    NAME                    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                   STORAGECLASS   REASON   AGE     VOLUMEMODE
    persistentvolume/pv-a   1Mi        RWO            Recycle          Bound       default/data-rwfile-0                           7m20s   Filesystem
    persistentvolume/pv-b   1Mi        RWO            Recycle          Bound       default/data-rwfile-1                           7m20s   Filesystem
    persistentvolume/pv-c   1Mi        RWO            Recycle          Available                                                   7m20s   Filesystem
    
    NAME                                  STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE     VOLUMEMODE
    persistentvolumeclaim/data-rwfile-0   Bound    pv-a     1Mi        RWO                           6m55s   Filesystem
    persistentvolumeclaim/data-rwfile-1   Bound    pv-b     1Mi        RWO                           6m51s   Filesystem
    

    請求Pod

    啟動代理

    -> [root@kube0.vm] [~] k proxy
    Starting to serve on 127.0.0.1:8001
    

    發送請求

    -> [root@kube0.vm] [~] curl http://localhost:8001/api/v1/namespaces/default/pods/rwfile-0/proxy/ -d "a=123"
    data stored in : rwfile-0
    
    -> [root@kube0.vm] [~] curl http://localhost:8001/api/v1/namespaces/default/pods/rwfile-0/proxy/
    a=123
    

    刪除測試

    刪除rwfile-0,然後查看,從時間上看確實是被刪除重建的。

    -> [root@kube0.vm] [~] k delete po rwfile-0
    pod "rwfile-0" deleted
    
    -> [root@kube0.vm] [~] k get po
    NAME                READY   STATUS      RESTARTS   AGE
    rwfile-0            1/1     Running     0          7s
    rwfile-1            1/1     Running     0          19m
    

    看一下之前存儲的數據還在不在

    -> [root@kube0.vm] [~] curl http://localhost:8001/api/v1/namespaces/default/pods/rwfile-0/proxy/
    a=123
    

    還是在的,此次測試實際上也證明了StatefulSet提供了穩定的網絡標識和存儲。

    發現StatefulSet的夥伴節點

    使用DNS解析headless的Service的FQDN。
    例子以後再寫吧。。

    如何處理節點失效

    除非確定節點無法運行或者不會在訪問,否則不要強制刪除有狀態的Pod

    k delete pod rwfile-0 --force --grace-period 0
    

    小結

    • StatefulSet創建Pod都有一個從零開始的順序索引
    • 通常會創建一個與StatefulSet對應的headless Service。
    • 擴容一個StatefulSet會使用下一個順序索引創建一個新的Pod,縮容會刪除索引值最高的。
    • 新建StatefulSet需要指定headless ServiceName和volumeClaimTemplates。
    • 使用DNS發現StatefulSet的夥伴節點
    • 強制刪除:k delete pod rwfile-0 --force --grace-period 0

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
    【其他文章推薦】

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

    台北網頁設計公司這麼多該如何選擇?

    ※智慧手機時代的來臨,RWD網頁設計為架站首選

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

    ※幫你省時又省力,新北清潔一流服務好口碑

    ※回頭車貨運收費標準

  • 挖洞入門_union型SQL注入

    挖洞入門_union型SQL注入

    簡介:在漏洞盒子挖洞已經有一段時間了,雖說還不是大佬,但技術也有所進步,安全行業就是這樣,只有自己動手去做,才能將理論的知識變為個人的經驗。本篇文章打算分享一下我在挖union型SQL注入漏洞過程中的一些個人理解,如有不足也請大佬不吝指教。

    0x00:什麼是SQL注入

    SQL注入,相信大多數人一開始接觸安全,聽說的第一種漏洞類型就會是SQL注入,眾所周知,其本質就是將用戶輸入的數據當成了SQL語句來執行

    開發過網站的朋友應該都清楚,大多數的小型企業或個人的站點大都採用了LAMP結構,即Linux + Apache + MySQL + PHP,當然還有一些其它常見的技術如下錶:

    操作系統 Web服務器 數據庫 編程語言
    Linux Apache MySQL PHP
    Windows Server Nginx Oracle JSP
    Tomcat SQL Server ASP
    Python

    總的來說,絕大多數網站都採用了動態Web開發技術,而動態Web開發離不開數據庫,如果沒有處理好這兩者之間的關係,那麼SQL注入就會隨之而來了。

    舉例來說,當我們想要通過參數id來獲取相對應的新聞時,整個過程簡單來說就是用戶通過URL請求新聞–>後台通過用戶請求去數據庫查詢相對應的新聞–>將查詢到的新聞回傳給用戶。在第二步查詢相對應的新聞時,後台會執行SQL語句來查詢,就像SELECT * FROM news WHERE id=''id的值是用戶來控制的,當id=1時,就會返回id=1的新聞,id=2時返回id=2的新聞,以此類推,就可以動態的控制web界面了。

    這時,當用戶輸入的id值不正確時,後台就無法獲取相對應的新聞,前端就會沒有數據显示,可當用戶輸入的數據為1'; DROP TABLE news-- a時,恐怖的事情就發生了,數據庫中的news表被刪除了,這就說明這個參數存在SQL注入

    回到剛才用戶輸入的數據,拼接到後台查詢數據時,整個SQL語句就變成了SELECT * FROM news WHERE id='1'; DROP TABLE news-- a',分析這條語句可知,用戶輸入的單引號閉合了id的值分號閉合了SELECT語句,然後又新建了一條DROP語句刪除了表news,最後的— a註釋掉了id值后的那個單引號,SQL注入就這麼產生了。

    當一個站點存在SQL注入時用戶的輸入就可以傳入數據庫執行,理論上這樣可以獲得數據庫的全部數據,也就是常說的脫庫了。獲得數據的方法也多種多樣,可以通過頁面直接返回想要查詢的數據,也可以通過sleep延時函數猜測數據,都不行的話我們還可以使用DNS解析日誌來獲得數據。其中,最簡單的一種方法就是union型的SQL注入了。

    union型SQL注入只是SQL注入的其中一種,也是最簡單的一種,對於這種漏洞的防範也特別簡單,可這種漏洞在互聯網中仍不計其數…這也可見全國乃至全球對於網絡安全知識普及的不足,接下來,我會從三個方面來講講這種漏洞,分別是為什麼會產生怎麼利用以及怎麼防範

    0x01:為什麼會產生union型SQL注入

    union型SQL注入,看名字就能知道,使用這種方法可以直接在頁面中返回我們要查詢的數據,方法也很簡單,即使用UNION聯合查詢即可。

    但使用UNION聯合查詢時還要滿足一個條件,那就是我們構造的SELECT語句的字段數要和當前表的字段數相同才能聯合查詢,即首先我們要確定當前表的字段數。order by x是數據庫中的一個排序語句,order by 1即通過第一個字段進行排序。這時我們就可以構造SELECT * FROM news WHERE id='1' order by x-- a'來猜測當前表的字段數,x值遞增,當頁面返回數據異常時,即無當前字段時,用當前的x值減一即可得到當前表的字段數了。

    知道了當前表的字段數,就可以進行UNION聯合查詢了。但聯合查詢時,頁面只會显示查詢到數據的第一條,也就是UNION前的SELECT語句的結果,想要显示我們自己聯合查詢的結果時,還必須使前一條語句失效,這裏我們構造and 1=2使前一句SELECT語句失效。回到剛才的案例,假設當前表的字段數為3,我們就可以構造SELECT * FROM news WHERE id='1' and 1=2 UNION SELECT 1,2,3-- a'來查詢當前頁面的顯錯點了,通過下圖的案例可知,當前的顯錯點為第一字段第三字段

    這個顯錯點又是什麼意思呢?比如當前表中共有三個字段,一個是標題(title)、一個是時間(time)、一個是內容(data),而我們前端不需要显示時間,只需要展示標題和內容即可。那麼從數據庫獲得的數據中,也只有標題字段和內容字段會展示在頁面上,這兩個點就是顯錯點

    通過這裏的顯錯點,用戶就可以獲得數據庫中的所有數據了。當用戶輸入的數據為1' and 1=2 UNION SELECT 1,2,database()-- a時,即SQL語句為SELECT * FROM news WHERE id='1' and 1=2 UNION SELECT 1,2,database()-- a'時,就可以直接得到數據庫的庫名

    0x02:怎麼利用union型SQL注入

    1.判斷是否存在注入

    構造and 1=1/and 1=2查看頁面是否有異常,若有異常,即有可能存在注入,另外還可通過該語句判斷該站點是否有WAF,若有WAF的話會有攔截警告,當然,WAF也是可以繞過的。。。

    2.查詢當前表的字段數

    構造order by x,當頁面返回異常時,利用x減一即可得到當前表的字段數

    3.查詢顯錯點

    構造and 1=2 union select 1,2,3,若頁面显示了我們構造的1,2,3,則對應的字段即為顯錯點

    4.查詢數據庫庫名

    構造and 1=2 union select 1,2,database(),即可在顯錯點显示當前數據庫庫名

    一般挖漏洞的話到此步驟就可以提交了,切記千萬不可非法獲得數據,挖洞有風險,同志需謹慎!

    5.查詢數據庫中的表名

    構造and 1=2 union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1,即可在顯錯點显示當前庫中的表名,因為顯錯點一次只能显示一條數據,這時可以通過limit語句選擇不同的表名進行查看。

    6.查詢選擇表中的字段名

    構造and 1=2 union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name='XXX' limit 0,1,即可在顯錯點显示字段名,這裏也是通過limit語句選擇不同的字段名進行查看。

    7.查詢數據庫中的數據

    構造and 1=2 union select 1,2,XXX from XXX limit 0,1,即可獲得數據庫中的數據了。

    0x03:怎麼防範union型SQL注入

    針對union型SQL注入,我們可以對用戶輸入的數據進行一次篩查,設置黑名單,攔截注入常用的一些關鍵詞,比如andorder byunionselectfrom等。

    除了設置黑名單外,還有一種比較靠譜的方法,即使用預編譯語句,而不是動態的生成SQL語句,這樣可以有效的避免用戶輸入的數據連接到數據庫執行,就是實現起來比較複雜,需要設置大量的預編譯語句。

    另外還有一種目前最靠譜的方法,實現起來還簡單,就是上硬件防火牆。。。就是有點小貴。

    0x04:互聯網中的一些案例

    依據網絡安全法,本文旨在分享個人學習經驗,內容禁止用於違法犯罪行為!

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

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

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

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

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

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • RocketMQ(1)—架構原理及環境搭建

    RocketMQ(1)—架構原理及環境搭建

    一、架構簡述

    RocketMQ阿里開源的一個分佈式消息傳遞和流媒體平台,具有低延遲,高性能和可靠性, 萬億級容量和靈活的可伸縮性。跟其它中間件相比,RocketMQ的特點是JAVA實現,在發生宕機和其它故障時消息丟失率更低

    它由四個部分組成:nameserver,broker,生產者和消費者。它們中的每一個都可以水平擴展,而沒有單個故障點。  

    Nameserver:提供輕量級的服務發現和路由。生產者和消費者通過nameserver獲取broker信息。它幾乎是無狀態的,nameserver結點之間沒有任何的數據同步,broker註冊信息時會註冊到每一個nameserver結點上面,所以每個nameserver節點都記錄了完整broker信息,提供相應的讀寫服務,並支持快速的存儲擴展。

    Broker:通過提供輕量級的topic和queue機制來存儲消息。與nameserver中的每個節點建立長連接,定時註冊topic等信息到nameserver上面。broker一般都是主從模式,因為消息是真實存儲消息的地方,避免一個結點掛了,導致這個節點數據全部丟失。

    Producer:與nameserver集群中的一個結點建立長連接,定期的拉取broker 的topic路由信息,再將消息發送到對應broker的topic上面

    Consumer:與nameserver集群中的一個結點建立長連接,定期的拉取broker 的topic路由信息,再去消費對應broker的topic信息

     

     

    二、環境搭建

     1.官網下載:http://rocketmq.apache.org/release_notes/release-notes-4.7.0/

    2.解壓 unzip rocketmq-all-4.7.0-bin-release.zip

    3.修改啟動參數配置。默認的jvm參數內存設置特別大,如果自己機器不行的話需要手動改下bin目錄下的啟動參數文件:runbroker.sh 和runserver.sh文件 我的虛擬機內存分配不大,改成256m 256m 128m

       這是默認的

     

     

    4.啟動nameserver: nohup sh mqnamesrv ‐n 192.168.0.67:9876 &   (將日誌輸出當前目錄的nohub.out文件,方便查看啟動日誌,ip是當前機器的ip)

     

     

     

     5.啟動broker:nohup sh mqbroker ‐n 192.168.0.67:9876 autoCreateTopicEnable=true &  (autoCreateTopicEnable=true 自動創建topic,如果不設置true的話,生產者發送消息的時候如果沒有topic就會發送失敗,需要提前把topic創建好,設置true會在發送時自動創建topic,192.168.0.67:9876 是name server)

    也可以使用配置文件啟動broker:nohup sh mqbroker ‐n 192.168.0.67:9876 ‐c conf/broker.conf &

    簡單看下默認的配置文件中的一些參數:

    #集群名字
    brokerClusterName = DefaultCluster
    #broker名字,集群中主從都要用這個名字,才會組成一個集群
    brokerName = broker-a
    #id為0的是master  非0的slava
    brokerId = 0
    #消息處理時間,凌晨4點
    deleteWhen = 04
    #消息保存時間默認48小時,48小時之後的凌晨4點就會清理
    fileReservedTime = 48
    #集群主從之間數據同步方式 
    #異步只需要發到master成功就返回客戶端段成功,性能高,但是如果master掛了 slave還未同步就會丟失消息。根據自身業務場景選擇合適方式
    brokerRole = ASYNC_MASTER
    #消息刷盤機制,和主從數據同步類似,同步就是說需要寫進磁盤了才返回成功。異步就是寫進內存了就返回成功,後面再去落盤。
    flushDiskType = ASYNC_FLUSH
    #自動創建topic
    autoCreateTopicEnable=true

    使用配置文件啟動:nohup sh bin/mqbroker ‐n 192.168.0.67:9876 -c conf/broker.conf &

    broker 192.168.0.67:10911關聯的nameserver是192.168.0.67:9876

     

     

    至此一個單機的rocketMQ的環境就搭建好了   正常退出: sh mqshutdown broker  和  sh mqshutdown namesrv

     

    測試下消息發送,使用rocketMQ提供的測試腳本:

    export NAMESRV_ADDR=192.168.0.67:9876

    生產者腳本

    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 消費者腳本

    sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer 發送消息:  

     

     消費消息:

     

    三、控制台搭建

    1.下載rocketMQ的擴展包,master分支:https://github.com/apache/rocketmq-external 

     2.啟動rocketmq-console-ng模塊

     

     3.修改此模塊配置:

      3.1 maven依賴rocketMQ版本改成自己部署版本對應的,我部署的MQ是最新的4.7.0版本

     

     

      3.2 配置文件中配置namserver地址和控制台數據存放地址

     

     正常來說改完這兩個地方就可以直接啟動控制台的這個springboot程序了。

    但是因為我用的MQ是最新的4.7版本,控制台對應的還沒有更新到最新的。編譯都有會報錯的地方

    1.DefaultMQPullConsumer這個類已經不推薦使用了,並且4.7.0中有兩個類似的構造器,原來代碼直接傳了一個null,第二個參數無法識別是哪個構造器的。修改下把第二參數強轉String或者RPCHook

     

     

    2.MQAdminExt這個接口中加了新方法,但是控制台中MQAdminExtImpl還沒有實現對應的方法。這個問題在github上幾天前已經有人提了Issues了,我這裡是自己添加一下默認實現然後服務就可以正常啟動了,還不確定後續後面有什麼影響沒有,至少可以啟動了

     

     

     

     

    之前使用測試腳本發送的消息 以及topic都可以在控制台看到了

     

     

     

     

     

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

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

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

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

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

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計最專業,超強功能平台可客製化

  • 接口中的默認方法與靜態方法

    在Java8之前的版本中,接口中只能聲明常量和抽象方法,接口的實現類中必須實現接口中所有的抽象方法。而在Java8中,接口中可以聲明默認方法靜態方法。

    接口中的默認方法

    Java 8中允許接口中包含具有具體實現的方法,該方法稱為“默認方法”,默認方法使用“ default ”關鍵字修飾 。

    示例:

    public interface MyInterface {
        default String getMsg(String srcMsg){
            return "======"+srcMsg;
        }
    }

    接口中的默認方法,有一個“類優先”原則:

    若一個接口中定義了一個默認方法,而另外一個父類或接口中又定義了同一個同名的方法時:

    • 選擇父類中的方法。如果一個父類提供了具體的實現,那麼接口中具有相同名稱的參數的默認方法會被忽略。
    • 接口衝突。如果一個父接口提供一個默認方法,而另一個接口中也提供了一個具有相同名稱和參數列表的方法(不管方法是否是默認方法),那麼必須覆蓋該方法來解決衝突。

    示例1:

    public interface MyInterface1 {
        default String getMsg(String srcMsg){
            return "===我是MyInterface1111111==="+srcMsg;
        }
    }
    ///////////////////////////////////////////////////////
    public class MyClass1 {
        public String getMsg(String srcMsg){
            return "===我是MyClass11111==="+srcMsg;
        }
    }
    ///////////////////////////////////////////////////////
    public class MySubClass1 extends MyClass1 implements MyInterface1 {
    }
    
    ///////////////////////////////////////////////////////
    public class InterfaceTest {
    
        public static void main(String[] args) {
            MySubClass1 ms1 = new MySubClass1();
    
            String srcMsg = "Java 牛逼!!";
            //MySubClass1 類繼承了 MyClass1 類,實現了MyInterface1 接口,根據類優先原則,調用同名方法時,會忽略掉接口 MyInterface1 中的默認方法。
            System.out.println(ms1.getMsg(srcMsg));//輸出結果:===我是MyClass11111===Java 牛逼!!
    
        }
    }

    示例2:

    public interface MyInterface2 {
        default String getMsg(String srcMsg){
            return "===我是MyInterface2222222==="+srcMsg;
        }
    }
    ////////////////////////////////////////////////////////////////
    public class MySubClass2 implements MyInterface1,MyInterface2 {
        @Override
        public String getMsg(String srcMsg) {
            //同時實現了 MyInterface1,MyInterface2  接口,根據 類優先 原則,兩個父接口中都提供了相同的方法,那麼子類中就必須重寫這個方法來解決衝突。
            return MyInterface1.super.getMsg(srcMsg);
            //return MyInterface2.super.getMsg(srcMsg);
            //return "------"+srcMsg;
        }
    }
    ////////////////////////////////////////////////////////////////
    public class InterfaceTest {
    
        public static void main(String[] args) {
            MySubClass2 ms2 = new MySubClass2();
    
            //MySubClass2 重新實現了兩個父接口中都存在的相同名稱的方法。
            System.out.println(ms2.getMsg(srcMsg));//輸出結果:===我是MyInterface1111111===Java 牛逼!!
        }
    }

     

    接口中的靜態方法

    在Java8中,接口中允許添加 靜態方法,使用方式:“接口名.方法名”

    示例:

    public interface MyInterface3 {
        static String getMsg(String msg){
            return "我是接口中的靜態方法:"+msg;
        }
    
        static void main(String[] args) {
            System.out.println(MyInterface3.getMsg("Java牛逼!!"));
        }
    }

     

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

    【其他文章推薦】

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

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

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

    南投搬家公司費用需注意的眉眉角角,別等搬了再說!

    新北清潔公司,居家、辦公、裝潢細清專業服務

    ※教你寫出一流的銷售文案?