Day8-微信小程序實戰-交友小程序-首頁用戶列表渲染及多賬號調試及其點贊功能的實現

在這之前已經把編輯個人的所有信息的功能已經完成了

之後先對首頁的列表搞動態的,之前都是寫死的靜態

1、之前都是把好友寫死的,現在就在js裏面定義一個數組,用循環來動態的綁定

在onReady中定義,取真實的數據給定義的列表數組list  

通過調用  db.collection(‘users’).get()  這裏沒有加其他的限制,得到的就是所有的數據了,拿到全部的數據之後就會觸發then方法了

用then返回的res中有一個data的列表集合,有一個注意的點就是,這樣子讀取是吧數據庫中的數據的全部字段,但是我們需要用的只是

用戶的頭像和點贊數、用戶昵稱,其他的數據其實是不需要的

可以加一個field方法,可以要求返回的字段是哪些的

 

可以看到是只有一個用戶,我們為了模擬的話,就可以多賬號進行調試,

 

 1、創立多賬號

    ①首先這個多賬號的一定要是測試號,所以先進入微信的管理後台 https://mp.weixin.qq.com/

    ②進入 【成員管理】添加項目成員

    ③回到微信開發者工具中-》工具-》多賬號調試-》可以通過添加虛擬測試號來進行測試的,不用真實的微信號都可以

 

之後就是對點贊的功能進行設計了(就可以在index.wxml中給點贊的小心上加一個點擊事件即可了

(小細節在小程序中規定,在客戶端中讀取用戶列表的時候,一般不會把整個數據庫的用戶都讀取出來的,是有一個限制的

一般都是把前二十條數據給讀取出來的,如果數據一多的話,一般都是進行分頁處理了–一般都是用數據庫中的collection.skip和collection.limit,這兩個東西一起配合的話就可以做下拉加載的功能了)

由於這個點贊是要對找到用戶的id地址的,所以在wxml中給點贊這個圖標加上一個id自定義屬性的掛載

 

data-id="{{ item._id}}"

這個東西的用處就是,在點擊這個心心的時候就可以拿到這個自定義的屬性id了  

通過把handleLinks(ev)函數中把ev打印出來發現,這個自定義屬性id 的位置在

 ev.target.dataset.id

console.log就是用來測試的,如果沒效果的話,一般都是直接在點擊事件後面通過promise 的then把res打印出來看看情況是怎麼樣的

***有時候這些點擊事件無法觸發的話,就可以在檢查一下樣式,可能這個區域在前端显示是在這裏,但是實際上是在其他的地方,

 

 

 也就是布局引起的問題了

 

 

 

 可以看到這裏就是碰到的是點贊的這個圖標,但是這個樣式是在左上角進行了渲染的

這個時候為了演示把,就把自定義屬性,和點擊事件放在點贊圖標還有點贊數包含的這個text裏面了

<text bindtap="handleLinks" data-id="{{ item._id}}" >
          <!-- 點贊圖標 -->
              <text class="iconfont icondianzan"
              ></text>
          <!-- 點贊數 -->
              <text>{{ item.links }}</text>
          </text>

改完之後,再點擊心心或者是數量,就可以正常的進行點贊了

  但是發現只有給自己點贊的時候才可以改變點贊的數量,而改其他人點贊的時候就改不了

比如:

 

 

 這就是一個權限的問題了也就是只能改自己的數據(點贊數)改不了別人的數據l

 

 

因為在小程序端中,由於用戶可以直接對數據庫進行操作,所以會有一定的風險,所以就通過這個訪問權限來進行了限制

那?

怎麼修改別人的數據呢?—這個操作就要在服務端來進行操作了!  也就是在雲函數中去完成一個雲函數的操作了

 

下面就是講解 如何在 服務端來對数字字段來進行更改!

 

二、點贊功能實現與update雲函數

 由於要在服務端來做的話,就可以把這一塊的部分代碼刪掉了

  handleLinks(ev){
    let id = ev.target.dataset.id;
    db.collection('users').doc(id).update({
      data : {
        links : 5
      }
    }).then((res)=>{
      console.log(res)
    }); 
  }

需要新創一個雲函數(新建一個node.js雲函數

 

這些默認的結構都是可以刪掉的了

 

 之後就是參考 微信開放文檔 雲開發-》SDK文檔->數據庫-》collection->update-》示例代碼demo

其中:這個就是指定了數據庫的環境

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

然後就是在服務端拿到數據庫db

const db = cloud.database()

然後可以在示例代碼中看到async這個異步的操作

直接複製 try catch

try {
    return await db.collection('todos').where({
      done: false
    })
    .update({
      data: {
        progress: _.inc(10)
      },
    })
  } catch(e) {
    console.error(e)
  }

return就是返回一個異步的數據,而catch就是返回錯誤信息

主要修改的就是 db.collecion()中要反問那個數據庫表單,這裏不能寫死為users,因為可能其他的地方也是要用到更新的這個功能的

所以最好就是把update這個雲函數寫成一個通用的方式

其中雲函數入口函數 

exports.main = async (event, context) => {  這個裡面的event就是前端傳參過來的對象了 就訪問 event.colletion,然後不用where而是用doc 再把event的doc也傳進來,這 ***小知識點:ES6的擴展運算符 。。。 (三個點)

更新成功了之後,就可以返回結果到前台了

這個就是update雲函數中js文件的代碼(傳進去的doc實際上是用戶的_id

 // 雲函數入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
// 雲函數入口函數
exports.main = async (event, context) => {
  try {
    return await db.collection(event.collection).doc(event.doc)
      .update({
        data: {
         ...event.data 
        },
      })
  } catch (e) {
    console.error(e)
  }
}

View Code

把雲函數寫好之後,這個時候雲函數還是在本地,要把這個雲函數傳到雲開發平台上

 

上傳了之後一定要去雲平台-》雲函數中去檢查一下

 

之後就可以調用這個雲函數了

再回到index.js 點贊的方法 handleLinkes方法中進行設置即可;

 

 如果雲函數沒問題,可能是雲函數裏面定義的env出了問題,就可以寫死了,傳入自己的那個環境,就不用默認的那個環境了

【注意】修改了雲函數記得要重新上傳到雲平台才行

 

 

 

 (因為在服務端是不會受到數據庫權限的限制的)

後面要優化的就是(上面的點贊是寫死給多少links的,並且不能點完之後立馬更新

可以把數據庫的links讀出來,+1之後再寫入,但是這樣的話就多了一個數據庫的操縱了  ,但是數據庫本身就提供了累加或者累減等運算的操作的

(這樣的話就只需要一次的數據庫讀取即可了)

在開放文檔 db.command裏面就有很多的方法

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.inc.html

示例代碼
將一個 todo 的進度自增 10:

const _ = db.command
db.collection('todos').doc('todo-id').update({
  data: {
    progress: _.inc(10)
  }
})

為了在服務端不把運算給寫死了,一般都是把運算直接通過前端來傳入的

由於前端不認識下劃線這種操作,因為前端要先解析,之後再把東西傳到服務端的,所以就可以在前端給服務端傳一個字符串的話

然後再在服務端解析即可

 data : "{links : _.inc(1)}"

在前端把這個字符串傳入到服務端中,之後就可以在服務端那邊對這個字符串進行解析了

所以在update雲函數中 就要對event.data這個傳過來的數據進行判斷,判斷它的類型,是普通的還是字符串類型的,如果是字符串類型的話就要進行解析

用js裏面的eval方法,它是把字符串轉成 js 語句的

 if(typeof event.data == 'string'){
      event.data =  eval('(' + event.data + ')')
    }

即可了(點一下心心就可以讓點贊數+1)

後面有空的話,可以繼續進行優化,也就是對一次的點贊數進行限制,或者是點一下加+1,再點一下就是取消了就-1了

後面就是要把點贊了之後,實時的把點贊數進行更新

 

可以看到給服務端那邊上傳之後,對數據庫進行了更新之後,then返回的結果res,中有一個是updated==1,就可以進行if判斷了

再用for循環對列表中的每一個元素判斷,是不是現在被點擊點贊的這個id

let updated = res.result.stats.updated;
    if(updated){
      // 先用擴展運算符 克隆一份數組
      let cloneListData = [...this.data.listData];
      for(let i = 0;i < cloneListData.length ; i++){
        if( cloneListData[i]._id == id){ 
          cloneListData[i].links++;
        }
      }
      this.setData({
        listData : cloneListData
      });
    }

點贊數增加 就是通過_inc 但是在服務端中的update函數中是用全局的,不能寫死,所以運算的規則就通過前端傳過去

為了以後其他的頁面也有更新功能的話做準備了

 

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

Tesla Q1營收倍增,Model 3排定7月量產

美國電動車廠特斯拉(Tesla)公佈首季獲利不如預期,但好消息是眾所矚目的Model 3平價電動車,有望如期量產。

特斯拉當季營收27億美元,為去年同期營收11.5億美元的兩倍多,亦優於分析師預估的26.2億美元。(路透社)

儘管如此,特斯拉當季每股虧1.33美元,遠超過分析師預估每股虧0.81美元。特斯拉去年同期每股虧1.45美元。

特斯拉說Model 3開發進度順利,將可在今年7月導入量產。不過從虧損超出預期可知,這應該是特斯拉燒錢換來的成果。

另外,特斯拉執行長Elon Musk還憂心客戶對定價只有35,000美元的Model 3期待太高,而忘了Model 3是平價車種,性能與續航力均不能與售價70,000美元的Model S相提並論。

特斯拉首季共交車25,051部,較去年同期成長64%、較去年第四季成長13%,上半年47,000-50,000部的交車目標也有望達陣。

(本文內容由授權使用。圖片出處:Tesla)  

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

德國將蓋鋰電池廠制衡Tesla,鋰電池成本望下滑

特斯拉(Tesla)懷著超級工廠大夢,準備在電池領域一統江湖,歐洲強國也不甘示弱,德國總理梅克爾(Angela Merkel)參加德國戴姆勒汽車(Daimler)斥資5 億歐元興建的鋰電池工廠的動土典禮,這項歐洲大陸的超級電池工廠計畫,將挑戰Tesla 在綠色電力領域的領導地位。

彭博報導,德國電池工廠位於柏林南部130 公里處,突顯主要汽車製造商和電力公司進入儲能的行動,這項技術對推動下一代綠色車輛,以及在需要時儲存風力與太陽能電力上至關重要。報導認為,隨著汽車製造商與電力公司同步發展,電池成本可能會迅速下滑。

彭博分析師認為,電池成本下降與能源密度增加,預計2030 年就可以看到電動車比燃料汽車更便宜的情況。根據彭博新能源財經(BNEF)數據,全球電池製造產能將在2021 年翻倍,達到2.78 億度,現在約1.03 億度,屆時歐洲市場佔比將從現在的2.5% 提高一倍。

瑞典、匈牙利和波蘭計劃中的大型工廠,以及戴姆勒在德國的電池組裝廠,預計會為福斯與雷諾等汽車製造商提供需求,屆時鋰離子電池成本將降低43%,使電動汽車成為主流。

對於公用事業而言,便宜的電池可以降低儲存單元的成本,儲存單元可將變動型再生能源如風能與太陽能的電力傳送至電網。義大利國家電力公司Enel SpA 將電池與風力發電場配套使用,電網管理人員對電力輸出的預測準度因此提高30%。

1990 年代初期消費類電子產品如電腦和手機使用的鋰離子電池,已經跨界應用於運輸和電力行業,但礙於成本,鋰電池在電網和汽車上的應用才剛剛開始,電池的興起對於電動汽車的消費者來說最為明顯,大多數主要汽車製造商將充電式電動車訂為未來10 年的中期計劃。

目前電池業務仍由亞洲電子製造商所主導。根據BNEF,韓國LG 和三星SDI 是頂級供應商,亞洲有望繼續保持領先地位,中國另有8 個工廠正在興建。

汽車製造商採取行動確保電池供應源,戴姆勒的工廠將是歐洲最大的工廠,供應旗下汽車與梅賽德斯賓士,並與屋頂太陽能安裝商Vivint Solar 合資生產家庭能源儲存系統。

2017 年1 月Tesla 的工廠完成三分之一,完工後每年產能可達35 千兆瓦,足以支持每年生產50 萬輛電動車,這將使Tesla 成為繼LG 化學之後的第2 大供應商,特斯拉也在計畫興建更多超級工廠。

戴姆勒的投資規模較小,且尚未披露產能目標。福斯正在與電池廠商討論投資項目,並計劃在德國興建原型組裝廠以開發自己的技術。位於斯德哥爾摩的創業公司NorthVolt AB 宣布計劃在2023 年在瑞典設立一家40 億歐元的電池廠。鋰電池產量大增可望降低所有應用的電池成本,讓家庭和電網的儲存更加實惠。

未來10 年電動汽車價格可望能與汽油或柴油車競爭,由於電池組是充電電動車中最昂貴的部分,佔總成本的三分之一,預計到2021 年,鋰離子電池將便宜43%,從目前的每千瓦273 美元降至156 美元。

鋰電池普及是可以預見的事,但問題是儲存對消費者或大型公用事業而言是否有利可圖仍然是一個懸而未決的問題。即使如此,電動汽車廠商也正在尋找未來,根據BNEF,2030 年前充電式電動車可能佔新車銷售的五分之一,即2,100 萬台。梅克爾訪問戴姆勒工廠展現了德國政府計劃2030 年讓600 萬輛電動汽車上路的決心。

(合作媒體:。圖片出處:Tesla)

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

崁仔頂垃圾飄惡臭 按件開罰1200元

摘錄自2019年11月14日中國時報基隆報導

基隆崁仔頂魚市為北台灣最大魚市,近來魚貨拍賣後,堆積如山的保麗龍盒與垃圾散發惡臭,讓附近民眾苦不堪言,環保局決定祭出鐵腕措施,16日起將在魚市及商圈展開不定期夜間稽查取締,按箱開罰,亂丟一箱就直接開罰1200元。

基隆市環保局長賴煥紘表示,為期1周的柔性勸導階段即將結束,周六起將針對違規攤商依《廢棄物清理法》隨意丟棄保麗龍,將按「箱」開罰。另外在最容易遭人任意棄置垃圾及保麗龍箱地點設置宣導看板,並鼓勵民眾檢舉通報,同時稽查人員將在魚市及商圈展開強力夜間稽查,經錄影、照相存證舉發者依法處1200元罰鍰,「若抓到10盒,就開罰10張」,視違規情節加重處分。

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

【其他文章推薦】

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

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

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

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

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

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

垃圾回收相關算法

這裏介紹的垃圾回收相關算法,主要解決的問題:

判斷哪些內存是垃圾(需要回收的)?

常用的兩種算法:

  • 引用計數
  • 可達性分析(GC Root)

首先介紹算法前,得定義:

如何判斷一個對象的死亡?

我們一般這樣定義:當一個對象不再被任何存活的對象繼續引用的時候,這個對象就死亡了。

引用計數

引用計數算法,是給每一個對象添加一個計數器,當有對象引用它的時候,計數器+1,當有對象取消對它的引用時,計數就會-1。

當計數器的值為 0 時,即說明沒有對象引用它,也就是這個對象死亡了。

這種算法很簡單,但是有個重大缺陷,那就是無法解決循環引用的問題。

什麼是循環引用問題呢?

比如對象A 引用 對象B,對象B 引用 對象A,那麼 對象A 和 對象B 的計數器都為1。但是如果後續的運行環境再也用不到對象A 和 對象B,那麼就造成了內存泄漏。

上圖就是循環引用的例子。對象引用 Obj1 和 Obj2 在棧中,然後分別指向在堆中的具體實例。然後兩個相互實例中的成員互相引用。那麼對於堆中的對象而言,就有2個引用。一個是來自Obj1,一個來自堆對象的另一方。

如果,現在將 Obj1 指向 nu l l,那麼就如下圖:

這個時候,引用已經不可用了,但是堆中的對象仍然相互引用,他們的計數器不為0,所以無法死亡。

但是,Java 沒有使用這種算法,而是使用了我們後面說的可達性算法,所以接下來的演示,GC 會將這種情況的內存給其清理。

package GC;

public class ReferenceCountGC {
    public Object instance = null;

    private static final int _1MB = 1024 * 1024;
    // 每個對象中包含2M的成員,方便觀察
    private byte[] bigSize = new byte[2 * _1MB];
    public static void main(String[] args) {
        ReferenceCountGC objA = new ReferenceCountGC();
        ReferenceCountGC objB = new ReferenceCountGC();
        objA.instance = objB.instance;
        objB.instance = objA.instance;

        //取消對對象的引用
        objA = null;
        objB = null;
      // 是否進行垃圾回收
        System.gc();
    }
}

這段代碼實現的就是上面圖片所描述的情況。

首先,我們將 System.gc() 註釋掉,也就是我們在默認情況下,不去觸發垃圾回收。並在運行的時候,添加參數 -XX:+PrintGCDetails。我們觀察輸出結果

可以看到,這個時候,佔用的空間為8M左右。

如果我們取消註釋,也就是主動去調用垃圾回收器,那麼運行結果為:

佔用空間為2M左右。

可以看出來,Java 的垃圾回收,並非採用我們上面介紹的引用計數方式。

可達性分析

可達性算法,還有一系列的別名:根搜索算法,追蹤性垃圾收集,GC Root。

之後,看到原理,其實這些別名都是描述原理的。

首先,我們選取一些對象,這些對象是存活的,也被稱為 GC Roots,然後根據這些對象的引用關係,凡是直接或者間接跟 GC Roots 相關聯的對象,都是存活的。就像圖中的連通性判斷一樣。

這個算法的想法不難。難的是,如何確定 GC Roots。

我們考慮,我們什麼時候需要用到對象?(我們需要對象的時候,肯定需要這個對象是存活的)

  • 棧中保存着,我們當前或者之後需要運行的方法及相關參數,所以,棧上所引用的堆中對象肯定是存活的。
  • 類中的一些屬性,比如,靜態屬性,因為它不依賴於具體的類
  • 一些常用的對象,以免清理后,又要重複加載,比如常用的異常對象,基本數據類型對應的 Class 對象。

除此之外,還有很多零零碎碎的。

在堆結構周圍的一些結構,其中引用的對象可以作為GC Roots

具體 GC Roots 可以概括為:

  • 虛擬機棧上(確切的說,是棧幀上的本地變量表)所引用的對象

  • 本地方法棧引用的對象

  • 方法區中的靜態屬性,常量引用

  • Java 虛擬機的內部引用,常用數據類型的 Class 對象,常駐的異常對象,系統類加載器

  • 所有被同步鎖持有的對象

除此之外,還有一些臨時的 GC Roots 可以加入進來。這裏涉及到新生代老年代。

比如老年代中的對象一般都存活時間比較久,也就是大概率是活着的對象,也可臨時作為 GC Roots。

可達性算法的一些細節

前面說了可達性算法,我們根據 GC Roots 來進行標記對象的死活。

但是,被判定為不可達的對象,並不立刻死亡。它仍然有次機會進行自救。

這個自救的機會,是需要重寫 finalize()進行自救。

也就是可達性算法的邏輯大致是這樣的:

  • 第一次進行標記,凡是不可達 GC Roots 的對象,都暫時判定為死亡,只是暫時
  • 檢查暫時被判定為死亡對象,檢查是否有重寫 finalize()方法,如果有,則觸發,對象可以在裏面完成自救。

如果沒有自救成功 或者 沒有重寫 finalize()方法,則宣告這個對象的死亡。

除此之外,這個對象中的 finalize()方法,只能被調用一次,一生只有一次自救機會。

這個方法,官方並不推薦,所以不必細究。

接下來,演示下上面的兩次標記過程以及自救過程。

(個人認為,《深入理解 Java 虛擬機》中的此章節代碼,略有點不夠完善,故略微改動)

package GC;

import javax.swing.tree.VariableHeightLayoutCache;

public class FinalizeEscapeGC {
    public static FinalizeEscapeGC SAVE_HOOK = null;

    private byte[] bigSize = new byte[5*1024*1024];

    public void isAlive(){
        System.out.println("Yes, i am alive");
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        System.out.println("Finalize method executed");
        FinalizeEscapeGC.SAVE_HOOK = this;
    }

    public static void main(String[] args) throws InterruptedException {
        SAVE_HOOK = new FinalizeEscapeGC();
        SAVE_HOOK = null;
        System.gc();
        Thread.sleep(500);
        if(SAVE_HOOK != null){
            SAVE_HOOK.isAlive();
            System.gc();
        }else {
            System.out.println("Dead");
            System.gc();
        }
    }
}

在這個程序中,我們給這個類,添加名為 bigSize 的屬性,其佔用 4M 大小的空間。

大致分析下代碼邏輯:

  • 創建了一個對象,其中有成員佔用 4M 的空間
  • 取消對這個對象的引用
  • 調用垃圾回收(第一次標記)
  • 調用 finalize 方法進行自救
  • 之後再次調用垃圾回收(第二次標記)

所以演示的時候,分為兩種情況:

  • FinalizeEscapeGC.SAVE_HOOK = this; 未註釋,完成自救

運行時,參數仍然設置為 +XX:PrintGCDetails,可以看到輸出結果:

第一次調用垃圾回收,仍然佔用 5M,說明此時即便失去引用,但是仍然未被清理。

在 finalize()中完成自救后,第二次調用垃圾回收的時候,仍然佔用 5M 的內存大小。說明自救成功。

  • FinalizeEscapeGC.SAVE_HOOK = this; 註釋,無法完成自救

第一次垃圾回收,佔用 5M,保留了對象。無法完成自救,然後第二次被清理掉。

所以我發現以下錶述也許更為確切:

  • 當對象重寫了 finalize()方法的時候,第一次垃圾回收的時候,如果為不可達對象,對其進行暫緩,並不清理。
  • 當對象沒有重寫 finalize()方法的時候,且為不可達對象的時候,直接判定死亡。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

通用計畫到2017年電氣化汽車年產達50萬輛

通用汽車公司日前表示,將大力發展電氣化車輛,計畫到2017年每年產量達到50萬輛。

通用計畫通過各種技術,包括插電式汽車、和混合動力車來實現全球電氣化車輛目標。到2017年,每年在全球範圍內生產500,000輛採用電氣化技術的車輛。該數字將略超過2011年通用全球銷量的5%(2011年通用汽車全球銷量902萬輛)。

通用在過去幾個月中一直在努力完善並確定其先進技術戰略,其中就包括電氣化戰略,插電式技術將在未來發揮更大的作用。通用汽車公司的工程師們正在研發沃藍達和凱迪拉克ELR的下一代動力驅動技術,在不遠的將來,“系統”價值和效率將大幅提高。

預計2012年通用汽車電氣化車輛全球銷量超過50,000輛,涵蓋雪佛蘭沃藍達插電式混合動力車,以及採用eAssist微混動力系統的別克君越)、別克君威和雪佛蘭邁銳寶。帶有eAssist系統的2014款雪佛蘭Impala將在明年上市。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

數學-高精度

1.Integer Inquiry

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1047

解法:一道求大數之和,我們利用java里的BigInteger就可以輕鬆的解決,不過需要注意下格式的問題,每輸出一個就要空一行,最後一個不用

代碼:

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
    public static void main(String[] arg)
    {
        Scanner in=new Scanner(System.in);
        int t;
        while(in.hasNext())
        {
            t=in.nextInt();
            while(t-->0)
            {
                BigInteger b=new BigInteger("0");
                while(in.hasNextBigInteger())
                {
                    BigInteger c=new BigInteger("0");
                    c=in.nextBigInteger();
                    if(!c.equals(BigInteger.ZERO))
                    {
                        b=b.add(c);
                    }
                    else
                    {
                        System.out.println(b);
                        if(t!=0)
                            System.out.println();
                        break;
                    }
                }
            }
        }
    }
}

 

2.Exponentiation

 題目:https://vjudge.net/problem/POJ-1001/origin

解法:這道是一個浮點數的次冪求解,通過java里的BigDecimal的pow方法,即可完成對應的求解。

對於輸出有特殊要求,小數點后捨去無意義的0,用到stripTrailingZeros()方法去除所有尾部的0,然後再用toPlainString()將BigDecimal轉化為String

之後,在比對轉化的字符串的第一個字符是否為“0”,如果為0,則去掉它只保留小數點之後的數,利用substring(1),截取字符串

代碼:

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    public static void main(String[] arg)
    {
        Scanner in=new Scanner(System.in);
        while(in.hasNext())
        {
            BigDecimal a=in.nextBigDecimal();
            int k=in.nextInt();
            a=a.pow(k);
            String str=a.stripTrailingZeros().toPlainString();
            if(str.charAt(0)=='0')
                System.out.println(str.substring(1));
            else
                System.out.println(str);
        }
    }
}

 

3.How many Fibs?

題目:https://vjudge.net/problem/POJ-2413/origin

思路:這是一道求在一定的範圍內,包含的斐波那契數的個數。由於範圍是10的100次方,因此我們設置大整數數組的長度為10000,足以包括。

代碼:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    static BigInteger a[]=new BigInteger[10000];
    public static void main(String[] arg)
    {
        Scanner in=new Scanner(System.in);
        for(int i=0;i<10000;i++)
            a[i]=BigInteger.ZERO;
        a[0]=BigInteger.valueOf(1);
        a[1]=BigInteger.valueOf(2);
        for(int i=2;i<10000;i++)
            a[i]=a[i].add(a[i-1].add(a[i-2]));
        BigInteger b,c;
        while(true)
        {
            b=in.nextBigInteger();
            c=in.nextBigInteger();
            if(b.equals(BigInteger.ZERO)&&c.equals(BigInteger.ZERO))
                break;
            int res=0;
            for(int i=0;i<10000;i++)
            {
                if((a[i].compareTo(b)==1||a[i].compareTo(b)==0)&&(a[i].compareTo(c)==-1||a[i].compareTo(c)==0))
                    res++;
                if(a[i].compareTo(c)==1)
                    break;
            }
            System.out.println(res);
        }
    }
}

 

4.Segment

 題目:http://acm.hdu.edu.cn/showproblem.php?pid=5666

解法:這是一道求在一個三角形區域內的整數點的個數,不包含在線上的點。通過遞推分析,找規律後知道,個數為:(q-1)*(q-2)/2%p

由於q很大,所以我們需要用到大整數來進行求解。

代碼:

import java.math.BigInteger;
import java.util.Scanner;

public class Main{
    public static void main(String[] arg)
    {
        Scanner in=new Scanner(System.in);
        int T=in.nextInt();
        while(T-->0)
        {
            BigInteger q=in.nextBigInteger();
            BigInteger p=in.nextBigInteger();
            BigInteger f=q.subtract(BigInteger.valueOf(2));
            BigInteger res=q.subtract(BigInteger.ONE).multiply(f).divide(BigInteger.valueOf(2));
            res=res.mod(p);
            System.out.println(res);
        }
    }
}

 

5.Problem B

題目:https://vjudge.net/problem/HDU-5686/origin

解法:這應該是百度的某道題,模擬幾組數據后發現竟然是一個斐波那契數列,因此就很簡單了,N<=200的因此普通的longlong滿足不了,我們需要使用BigInteger

代碼:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] arg)
    {
        Scanner in=new Scanner(System.in);
        BigInteger a[]=new BigInteger[10000];
        for(int i=0;i<10000;i++)
            a[i]=BigInteger.ZERO;
        a[0]=BigInteger.valueOf(1);
        a[1]=BigInteger.valueOf(1);
        for(int i=2;i<10000;i++)
            a[i]=a[i].add(a[i-1].add(a[i-2]));
        while(in.hasNext())
        {
            int k=in.nextInt();
            if(k>=1&&k<=200)
                System.out.println(a[k]);
        }
    }
}

 

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

通用再次投資電動巴士生產企業Proterra

于2010年成立的通用汽車公司的投資機構風投(GM Ventures)近期再次投資位於南卡羅來納州Greenville的電動快充巴士公司Proterra。

Proterra透露稱通用風投和其他六家公司此次共向Proterra投資兩千三百萬美元。而通用風投尚未作出任何投資資訊的公開。其他六家分別為Hennessey資本管理(Hennessey Capital Management LLC ),NMT資本(NMT Capital),Kleiner Perkins Caufield & Byers(KPCB),Mitsui & Co.全球投資(Mitsui & Co. Global Investment Inc.,),88綠色風投(88 Green Ventures),遠景山脊夥伴(Vision Ridge Partners)。

此前在2011年,通用風投由KPCB代理向Proterra投資了六百萬美元,那次融資Proterra一共得到了三千萬。

通用風投公司主要投資的對像是汽車相關技術的新公司,包括:電池或電機等環保車技術;車輛互聯設備如聲音識別、個人設備連接;高級輕量化材料;無人駕駛採用的設備例如感測器、處理器和記憶體;有助於提高生產效率和產量的製造技術。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

通用電氣綠色汽車車隊計畫將持續至2015年

通用電氣日前公佈了購入2000台福特C-Max Energi的計畫,這是通用電氣組建30000台綠色汽車車隊計畫的一部分。

通用電氣發言人葛列格(Greg McCullough)稱,該公司目前有2000台投入運營,另已簽訂包括C-Max Energi在內的3000台電動車及天然氣皮卡訂單。2013年年初,通用電氣將投入5000輛新燃料車,並繼續引入更多電動車和天然氣汽車。

同時,通用電氣方面表示,引入電動車和天然氣汽車的長期規劃有助於進一步提升公司車隊的環保性和經濟性。正如葛列格所說,“我們計畫採用多元化的新燃料技術滿足車隊及客戶車隊需求。”

對於電動車的性能,葛列格指出,“它們表現不錯。我的同事都很喜歡駕駛電動車的感覺,我們還在員工家中安裝了通用電氣的WattStation充電站,以實現電動車充電效率的最大化。”

值得一提的是,兩年多前,通用電氣也曾宣稱將購入12000台沃藍達,但此次引入C-Max Energi並非意味著沃藍達購置計畫的擱淺。據悉,綠色汽車車隊計畫將持續至2015年。

目前,通用電氣已經宣佈購入的計畫只有沃藍達和C-Max Energi兩款車,共14000台。雖然雪佛蘭方面並不會擔心這場交易落空,由於沃藍達購入速度緩慢,很難實現雪佛蘭2012年美國45000輛的銷售目標。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

現代ix35氫電池車12月韓國生產

2012廣州車展上,北京現代展臺上展出了一款名聲在外的現代ix35,該車預計將於今年12月在韓國蔚山工廠開始生產,預計到2015年ix35氫動力版的保有量將達到1000輛。

現代稱,這款車和所有氫動力汽車一樣,水蒸氣是唯一的排放尾氣,其最高功率73kw,最高時速151km/h,百公里加速12.5秒。其驅動過程為:將電量儲存到24kwh鋰電池組,然後用電機驅動車輛,續航里程達到587公里。

現代方面還表示,與老款的燃料電池車不同的是,它不需要額外準備壓縮空氣,只需消耗普通大氣即可,因此效率提升了五成。同時由於沒有空壓機的緣故,座艙的噪音也大大降低。除了沒有汽油尾氣和發動機噪音,氫動力版ix35和普通汽油ix35完全一樣。

由於氫燃料電池價格昂貴,氫動力汽車依然處於測試階段,以上汽為例,他們開發的氫燃料電池轎車僅成本就需要150萬元人民幣,距離投放市場還有相當長的一段路要走。不過,許多專家學者都認為,這種動力形式將成為汽車發展的未來趨勢。

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案