PIXNET Logo登入

互聯網 - 大數據

跳到主文

本部落格為互聯網熱門頭條訊息管理中心

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 09 週四 201720:17
  • 你所不了解的float(濫用float的怪異現象)


文章出處
float設計初衷就是為了實現文字環繞效果
原本頁面流布局顯示如上圖所示,運用了float屬性后就顯示為如下圖所示,這就是浮動的設計初衷
 
float的一些特性:包裹性、破壞性。
包裹的特性其實主要有三個表現:收縮、堅挺、隔絕。
float破壞性主要表現在使父容器塌陷(浮動使得父容器塌陷是標準而非bug,否則如果不讓父窗口塌陷怎么實現文字環境效果)
浮動的破壞性只是單純的為了實現文字環繞效果
BFC(block format context)塊級格式化上下文
如何解決浮動造成的父容器塌陷?
也就是說有兩種方法來解決,那么這兩種方法實現的差異在哪?
clear方式的具體實現?
但是上述方法會有如下圖所示不足
BFC/hasLayout具體實現方式?
兼容各瀏覽器清除浮動的通用方式
.clearfix:after{content:'';display:block;height:0;overflow:hidden;clear:both;}
.clearfix
{*zoom:1;}

其實還有更好的方式
 .clearfix:after
{
content
: '';
display
: table;
clear
: both;
}
.clearfix
{
*zoom
: 1;
}

 
濫用浮動
其實.clearfix的樣式只應用在包含浮動子元素的父級元素上。
如果放到不包含浮動子元素的父級元素上那就是濫用。如果亂用hasLayout往往會讓IE6/IE7做出出格的事情,因為浮動會觸發hasLayout,所以濫用浮動會發生很多怪異現象。
 
打句廣告:在html中一般會用nbsp;來表示空格,事實上nbsp原來是如下圖所示的意思
運用浮動的一些特性
用demo先來說說第2個特性吧,html代碼如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>浮動與display:block化</title>
<style>
.ovh
{
overflow
: hidden;
}
.red
{
color
: #cd0000;
}
[hidden]
{
display
: none;
}
</style>
</head>
<body>
<p id="first">這是一個沒有設置<code>float</code>屬性的按鈕:</p>
<p class="ovh"><input type="button" id="btnShow" value="點擊我顯示display屬性值"></p>
<p hidden="">此時,按鈕的display屬性值是:<span id="result" class="red"></span></p>
<p>點擊下面的按鈕讓上面的按鈕添加<code>float: left</code>的聲明:</p>
<p><input type="button" id="btnAdd" value="上面的按鈕添加float:left"></p>
<script>
var btnShow = document.getElementById("btnShow"),
btnAdd
= document.getElementById("btnAdd"),
result
= document.getElementById("result"),
first
= document.getElementById("first");
if (btnShow && btnAdd && result) {
btnShow.onclick
= function () {
// 獲得該按鈕的display值
var display = this.currentStyle ? this.currentStyle.display : window.getComputedStyle(this, null).display;
// 顯示結果
result.innerHTML = display;
result.parentNode.removeAttribute(
"hidden");
// repain fix IE7/IE8 bug
document.body.className = "any";
};
// 設置浮動按鈕的點擊事件
btnAdd.onclick = function () {
btnShow.style[
"cssFloat" in this.style ? "cssFloat" : "styleFloat"] = "left";
// 文字描述的變化
this.value = "上面的按鈕已經設置了float:left";
btnShow.value
= "再次點擊我確認display屬性值";
first.innerHTML
= first.innerHTML.replace("沒有", '<del>沒有</del>');
// 結果隱藏
result.parentNode.setAttribute("hidden", "");
// 按鈕禁用
this.setAttribute("disabled", "");
};
}
</script>
</body>
</html>


View Code
從上述代碼運行效果圖可知原先為display:inline-block的元素由于增加了float:left則變成display:block
再說說浮動去空格吧
示例代碼如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>浮動去空格</title>
<style>
button
{
margin
: 0;
}
p
{
clear
: both;
}
</style>
</head>
<body>
<button>按鈕1</button>
<button>按鈕2</button>
<button>按鈕3</button>
<button>按鈕4</button>
<p><input type="button" id="trigger" value="點擊按鈕浮動"></p>
<script>
var trigger = document.getElementById("trigger"),
buttons
= document.getElementsByTagName("button");
var length = buttons.length;
if (trigger && length > 0) {
trigger.onclick
= function () {
for (var index = 0; index < length; index += 1) {
buttons[index].style[
"cssFloat" in trigger.style ? "cssFloat" : "styleFloat"] = "left";
}
};
}
</script>
</body>
</html>


View Code
運行效果圖如下
原先按鈕之間是有空格的,點擊下面增加浮動按鈕后,原先按鈕就沒有任何空格了,事實上并非空格去掉了,只是空格移動父容器所有浮動元素最后
浮動與布局
最簡單的應用莫過于
浮動與單側固定布局
有兩種方法
1、左邊元素使用width+float,右邊元素使用padding-left或者margin-left
2、左邊元素使用width+float,右邊元素也使用width+float不過這次是用right值
如下所示
 .left_img
{
width
: 56px;
float
: left;
}
/* 下面這個是固定布局寫法 */
.right_text_fixed
{
width
: 484px;
float
: right;
}
/* 下面這個是流體布局寫法 */
.right_text_flow
{
margin-left
: 76px;
}

 
浮動與智能自適應的流體布局
核心代碼如下所示:
 .left_img
{
float
: left;
margin-right
: 20px;
}
/* 下面這個是固定布局寫法 */
.right_text
{
display
: table-cell;
*display
: inline-block;
width
: 2000px;
*width
: auto;
}

 
讓IE7飆淚的浮動問題
一個一個來說(我說的是在IE7及以下瀏覽器)
包含clear的浮動元素包裹不正確
html代碼如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>含clear的浮動元素包裹不正確的bug</title>
<style type="text/css">
html, body
{
background
: #fff;
color
: #000;
}
div
{
padding
: 5px;
margin
: 5px;
background-color
: #eee;
border
: 1px solid #bbb;
clear
: left;
color
: black;
float
: left;
}
</style>
</head>
<body>
<div>
這個
&lt;div&gt; 包含 float: left 和 clear: left. 與我們通常理解的表現一致,寬度就是文字內容的寬度。
</div>
<div>
這個同樣是一個
&lt;div&gt;, 左浮動,同時含有 clear: left 的 &lt;div&gt;. 因為這一段的文字內容很長,所以,按照我們通常的理解,這個 &lt;div&gt; 占據的長度應該有整個 body 這么長。但是,在 Internet Explorer 7 下,事與愿違。 這個具有左浮動,同時含有 clear: left 的 &lt;div&gt; 僅僅占據了部分body的內容區域寬度。---- 我是占位置的文字,我是占位置的文字,我是占位置的文字,我是占位置的文字,我是占位置的文字,我是占位置的文字,我是占位置的文字……
</div>
<div>
這是第3個具有float: left 和 clear: left 的
&lt;div&gt; . 改變你瀏覽器的寬度。
</div>
</body>
</html>


View Code
實現效果圖如下:
當我們改變窗口大小時,效果圖如下
浮動元素倒數2個莫名垂直間距bug
html代碼

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>浮動元素倒數2個莫名垂直間距bug(超過3浮動元素)</title>
<style type="text/css">
html, body
{
background
: #fff;
color
: #333;
}
div
{
width
: 100px;
}
p
{
margin-right
: 1px;
}
span
{
border
: 1px solid #aaa;
float
: left;
width
: 120px;
padding
: 5px;
}
</style>
</head>
<body>
<div>
<p>
<span>A</span>
<span>B</span>
<span>C</span>
<span>D</span>
</p>
</div>
</body>
</html>


View Code
也就是說當超過3個浮動元素時,浮動元素倒數第2個元素則會在ie7及以下瀏覽器出現垂直間距問題,顯示如下圖所示
浮動元素倒數2個浮動最后一個字符重復bug
html代碼如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>浮動元素倒數2個浮動最后一個字符重復bug</title>
<style type="text/css">
html, body
{
background
: #fff;
color
: #333;
}
div
{
width
: 100px;
}
p
{
margin-right
: 1px;
}
span
{
float
: left;
width
: 120px;
}
</style>
</head>
<body>
<div>
<p>
<span>A</span>
<span>B</span>
<span>C</span>
</p>
</div>
</body>
</html>


View Code
在ie7及以及顯示效果圖卻出現如下所示讓人哭笑不得的場景(居然多了一個C)
浮動元素與文本不在同一行的問題
html代碼如下所示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>浮動與同一行的差異</title>
<style type="text/css">
html, body
{
background
: #fff;
color
: #333;
}
div
{
background-color
: #eee;
border
: 1px solid #bbb;
padding
: 5px;
}
span
{
float
: right;
}
</style>
</head>
<body>
<div>
左側標題
<span>右浮動</span>
</div>
</body>
</html>


View Code
出現如下所示效果圖(是不是會很無語)
如何使用float不出現上述所述怪異現象
不用使用浮動去做一些堆磚頭的布局,使用流體布局相關的方法就可以避免怪異問題,總之就是不要濫用浮動
文章是看幕課網張鑫旭的視頻進行的筆記總結  在此貼出視頻的地址http://www.imooc.com/learn/121   
在此還推薦一下王朋福博客css系列  寫的也挺不錯的
(繼續閱讀...)
文章標籤

AutoPoster 發表在 痞客邦 留言(0) 人氣(3)

  • 個人分類:生活學習
▲top
  • 3月 09 週四 201720:17
  • 看《css知多少》的一些總結

文章出處
問題
1、有些瀏覽器不完全支持css3,現在可以用哪個工具去檢測瀏覽器是否支持,以及支持哪些項?
modernizr:檢測瀏覽器對HTML5和CSS3特性(至于modernizr的介紹,可以看我另外一篇博文HTML5系列四(特征檢測、Modernizr.js的相關介紹))
2、常用的html標簽,它們的display屬性一般默認為block和inline。有哪些常用標簽的display不是block和inline,這些標簽顯示的時候和block/inline有何區別?
 具體display屬性值有如下:
inline可以理解為是流,這是沒有大小和形狀的,它的寬度取決于父容器的寬度。針對inline的標簽,你設置寬度和高度是無效的。
如何把inline元素轉換為塊級元素
  • 對inline元素設置display:block

  • 對inline元素設置float

  • 對inline元素設置position:absolute/fixed

  • 簡單一點的說,一般的文字、圖片它們是inline的,div是block的,而一般的一般的button、input是inline-block的。
    所以說inline-block的特點可以總結為:外部看來是“流”,但是自身確實一個“塊”。
     
    3、一個表格的第一行顯示紅色背景,最后一行顯示藍色背景,中間行使用灰色/白色間隔的背景,如何寫?
    利用結構化偽類,就會如下這樣寫
    這里插一句,如果要在各個菜單之間加下劃線,如下圖所示效果
    一般人都會用
     ul li
    {
    border-bottom
    : 1px solid #ccc;
    }
    ul li:last-child
    {
    border-bottom
    : 0px;
    }

    但是事實上還有一種更加方便的方式(如果你對結構化偽類很了解的話)
     ul li + li
    {
    border-top
    : 1px solid #ccc;
    }

    這里補充說明一下如下兩個結構化偽類:
  • 選擇某一個元素緊挨著的兄弟節點,例如 li + li{…}

  • 選擇某一個元素的所有同胞節點,例如 span ~ a{…}

  • 4、偽元素 ::before、::after 是否用過?都是在哪些地方用的?
    清除浮動、為一個div增加一個“三角”
    事實上很多圖標一般都很小(它本身就應該是很小的),但是我需要在這個小圖標上增加事件綁定,那在手機端就更加糟糕了,用戶根本點擊不到,那怎么辦,就可以利用before after可以來增加容器的大小
    這里還提一句就是css中屬性content只會在before after里面起作用,在其它屬性中都沒有效果。所以有時候不要給自己的代碼寫一些無用的屬性,增加瀏覽器的解析時間。
    5、css——層疊樣式表,其中的“層疊”該如何理解?
    這個沒有什么好說的,事實上看到很多博文上都是說ID代表100,class代表10,Element代表1,我表示對這種解釋不太贊同,如果想真正了解的話可以去看一下《CSS權威指南》,也可以去看一下CSS--結構和層疊
    6、盒子模型的width其實是指內容的寬度,不包括padding、border、margin。其實這樣對我們做css布局是很不利的,有什么方法可以讓width是全部的寬度?
    box-sizing
    ....
    其它還有挺多問題,我一一總結
    學習css的思路
    瀏覽器是怎么工作的?
    瀏覽器加載了html之后只為一件東西——dom樹,瀏覽器把html變為dom樹結構,就完成了對html的結構化。
    瀏覽器將載入的html變為dom樹,但是此時沒有任何顯示樣式。所以顯示的樣式,都是css定義的,瀏覽器只會通過css來渲染視圖樣式
    至于后來對視圖的渲染,p是block、br換行,那是整合了css之后的事情。而瀏覽器整合css又是另一個路線,和解析html是分開的。
    html的解析是一條線,css的解析是一條線,兩者會在某一點結合,形成最終的視圖。
    如果我們以CSS為重點看,從上圖中我們可以總結出學習CSS的三個突破點。
  • 瀏覽器如何加載和解析CSS——CSS的5個來源;

  • CSS和html如何結合起來——選擇器;

  • CSS能控制那些顯示方式——盒子模式、浮動、定位、背景、字體等;

  • 事實上如果我們從如上三個方面來了解css的話,思路就豁然開朗了。利用原文博主的一句話就是說借助別人的力量來提高自己,站在巨人的肩膀上才能看得更遠。
    css樣式來源

     
    我之前一直到《css權威指南》里面說的用戶代理樣式一詞很不了解,看了博主的文章后才明白,在一些瀏覽器是可以自定義字號和字體的(用戶在這里設置了字體和字號之后,它們會覆蓋掉瀏覽器默認的樣式)。
     
     
    布局相關
    display:table具有包裹性,除了display:table之外,float及position:absolute也都具有包裹性,什么叫包裹性,簡單一點的說就是寬度會根據內容而定,包裹的特性其實主要有三個表現:收縮、堅挺、隔絕。
    在沒有css3的column-count之前,大家都習慣用display:table-cell來實現多列布局,但是眾所周知table-cell IE6、7不兼容。
    縱向margin是會重疊
    用div畫下三角
     div
    {
    border
    : 10px solid;
    border-color
    : #333 transparent transparent transparent;
    }

     div設置了float之后,其寬度會自動調整為包裹住內容寬度,而不是撐滿整個父容器。
    被設置了float的元素會脫離文檔流。
    “清空格”這一特性的根本原因是由于float會導致節點脫離文檔流結構。它都不屬于文檔流結構了,那么它身邊的什么換行、空格就都和它沒關系的,它就盡量的往一邊去靠攏,能靠多近就靠多近,這就是清空格的本質。事實上這些空格并沒有真正消失,只是位于float元素的后面罷了。 
    清除浮動的方法
  • 為父元素添加overflow:hidden

  • 浮動父元素

  • clear:both

  • 兼容各瀏覽器的clear both方法

  •  .clearfix:after
    {
    content
    : '';
    display
    : table;
    clear
    : both;
    }
    .clearfix
    {
    *zoom
    : 1;
    }

     看王朋福的css知多少系列的總結
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(1)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:17
    • 文章目錄


    文章出處
    chrome
    利用chorme調試手機網頁
    Chrome控制臺 JS調試的一些小技巧
    chrome使用技巧(看了定不讓你失望)
    我所了解的chrome
    你可能不知道console強大
    CSS3精典
    css3新增屬性API
    CSS收集的常用代碼(與打印相關)
    CSS3動畫(性能篇)
    css編寫規范
    CSS讀書筆記系列
    看《css知多少》的一些總結
    你所不了解的float(濫用float的怪異現象)
    CSS3系列四(Media Queries移動設備樣式)
    CSS3系列一(概述、選擇器、使用選擇器插入內容)
    說說css3布局
    CSS--字體
    CSS--結構和層疊
    CSS--值和單位
    CSS--選擇器
    CSS3實踐
    自制的類似EasyUI的JQuery Button插件
    利用css3選擇器及css3邊框做出的特效(1)
    整理CSS引發的相關理論的梳理
    用css3實現各種圖標效果(1)
    css3實現手機效果的“切換標簽”
    HTML5精典
    HTML5 history
    我所了解的meta
    移動端遇到的問題
    Html5讀書筆記系列
    HTML5系列四(特征檢測、Modernizr.js的相關介紹)
    HTML5系列四(WebWorker、地理定位)
    HTML5系列三(多媒體播放、本地存儲、本地數據庫、離線應用)
    HTML5系列二(標簽元素、FileReader、拖放)
    HTML5系列一(屬性概述)
    HTML5系列五(Canvas詳述)
    JavaScript讀書筆記
    高性能JavaScript筆記三(編程實踐)
    高性能JavaScript筆記二(算法和流程控制、快速響應用戶界面、Ajax)
    高性能JavaScript筆記一(加載和執行、數據訪問、DOM編程)
    javascript表單驗證
    零散的JavaScript公用方法
    DOM參考手冊及事件參考手冊
    Ajax 簡述
    精通javascript(看書筆記)
    JavaScript中this的一些怪異現象
    用面對對象方式定tab標簽
    web前端開發修煉之道--編寫高質量代碼
    global--命名空間的使用(一些零散的js方法)
    公共事件處理函數js庫
    JavaScript精典
    總結的JS數據類型判定(非常全面)
    JS方法集
    JS中的"=="轉換規則
    我所了解的JavaScript糟粕和雞肋
    初識JSLint及建議JS編碼風格
    看了湯姆大叔的“你真懂JavaScript嗎?”的一些感慨
    對JavaScript優化及規范的一些感想
    JS生成隨機數的各種函數
    LABjs(類似于LazyLoad,但它更加方便管理依賴關系)
    JS性能方面--內存管理及ECMAScript5 Object的新屬性方法
    js常用函數、書寫可讀性的js、js變量聲明...
    高性能JavaScript(您值得一看)
    總結jQuery選擇器
    JavaScript雜談(順便也當知識積累)
    我總結的js性能優化的小知識
    我總結的js方面你可能不是特別清楚的小知識
    javascript 未來新方法的介紹
    Web Worker
    區別 Jquery對象和Dom對象
    收集的一些jQuery (我平常用的少的,但確實挺有效果的)
    ECMAScript嚴格模式簡介
    js實現身份證號碼驗證
    javascript變量、作用域和內存問題......
    javascript 代碼可讀性
    你真的已經搞懂JavaScript了嗎?
    js中常常容易忘記的基本概念
    JavaScript實踐
    ECMAScript嚴格模式簡介
    js實現身份證號碼驗證
    javascript變量、作用域和內存問題......
    javascript 代碼可讀性
    你真的已經搞懂JavaScript了嗎?
    js中常常容易忘記的基本概念
    Navigation&Resource
    ECMAScript嚴格模式簡介
    js實現身份證號碼驗證
    javascript變量、作用域和內存問題......
    javascript 代碼可讀性
    你真的已經搞懂JavaScript了嗎?
    js中常常容易忘記的基本概念
    Other
    Node實踐之二
    Node實踐之一
    MongoDB系列二
    MongoDB系列一(索引及C#如何操作MongoDB)
    VS快捷鍵大全(總結了一些記憶的口訣)
    總結的一些網站利于搜索引擎優化的小常識及SEO優化
    .net 運用YUI相關的dll壓縮js (按照自己的規則,想想都覺得強大和有趣)
    書后感
     
    《暗時間》讀后感
    格拉西安《智慧書》中最有價值的23條法則
    遇見幸福的自己
    漢朝那些事兒
    經典語句,看看讓心靈寧靜
    《此生未完成》讀后感
    成熟法則
    面試的時候應該想的問題
    年輕人少走彎路的十大忠告
    數據結構
    大話數據結構之四(串)
    大話數據結構之三(棧和隊列)
    大話數據結構之二(線性表)
    大話數據結構之一(緒論、算法)
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(2)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:17
    • 《老媽語錄》 讀后感


    文章出處
    人生智慧篇
  • 一個人要想活得有尊嚴,就得要有實力

  • 我們只是路過這個世界:活在當下,重在過程,忠于自己,活出意義

  • 能使自己幸福的,唯有自己:生命、幸福、快樂都在自己手中,不在別人手中

  • 人生不只是贏在起點上,更是贏在轉折點上

  • 人要不發瘋,這輩子難成功:人生至少要瘋狂一次,無論是為了一個人,一段情、一段旅途,或一個夢想

  • 好的性格就是好的命運:性格決定命運

  • 生活中要以情動人,勿以情傷人

  • 人生需要“全能冠軍”,不需要“單項冠軍”:學業、事業、婚姻、家庭

  • 人生是缺少的是什么?是時間、是經驗、是學問,更是一種比較純凈的心情。人生最多余的是什么?是惡性競爭,是私利計較,是鼠目寸光,是浪費寶貴光陰,是強人所難,是蠻不講理

  • 人生沒有彩排,每一天都是現場直播

  • 每個人的人生大戲,千金難買,珍惜每一個“生命鏡頭”

  • 磨難是一筆財富

  • 積極的人看到的世界是一片陽光,消極的人看到的世界是一片黑暗

  • 積極追求,百分之一的希望也可能會成為現實,消極等待,百分之九十九的把握也會泡湯

  • 眼睛不要光看外界,還要看內心

  • 每個人都是自己的心靈主宰

  • 任何的限制都是從自己的內心開始的

  • 只有一條路不能選擇,那就是放棄的路,只有一條路不能拒絕,那就是成長的路

  • 愛自己、相信自己、拯救自己

  • 自信往往能還來成功,自卑往往會導致失敗

  • 人生最清晰的腳印,往往印在最泥濘的路上

  • 在成功的道路上,不怕千萬人阻擋,只怕自己投降

  • 短時間內不怕苦,是有智慧的努力

  • 痛苦和快樂往往是自己內心狀態的體現,而不一定是世界的本來面目

  • 沉住氣,辦好事,別著急,慢慢來

  • 眼看快要撐不住了,讓我們選擇堅強

  • 勝利者不一定是跑得最快的人,而是最有毅力的人

  • 受不了委屈就成不了大器

  • 天寬、地寬不如心寬

  • 心若計較,處處都是怨言,心若放寬,時時都是春天

  • 心量大小決定了人生苦樂

  • 擁有夢想只是一種智力,實現夢想才是一種能力

  • 一個人最大的破產就是絕望,最大的資產就是希望

  • 迷惑是清醒的開始,不怕迷惑:堅持行動,不斷反思,就能破除迷茫

  • 方向比努力更重要,戰略比細節更重要

  • 最成功的人往往也是失敗次數最多的人,因為他們是那些嘗試次數最多的人

  • 最可悲的人,是一輩子沒有敢于嘗試過的人:發現優勢,大膽嘗試,活出真我

  • 做人厚道,讓人認可,做事專業,讓人尊重

  • 一個人的價值取決于所在的位置

  • 后悔是一種耗費精神的情緒,后悔是比損失更大的損失,比錯誤更大的錯誤,所以不要后悔

  • 最好的節約是珍惜時間,最大的浪費是虛度年華

  • 再丑,也要做真實的自己:與其在別人的生活里面跑龍套,不如精彩的做自己

  • 真正了解自己,是一個人活明白的第一步

  • 很少有人天生懶惰,懶惰的深層原因,很可能是一個人沒有方向,沒有被徹底點燃,沒有被徹底激活

  • 痛苦并不可怕,可怕的是麻木:真正無情的人,才沒有痛苦

  • 找到志向,精彩一生;沒有志向,平庸一生

  • 成功的標志是是否能過上自己想要的生活

  •  
    為人處世篇
  • 真心、真情、真話都非常難得,值得我們每一個人珍惜

  • 不怕真壞人,就怕假好人

  • 發現天性,順應天性,是有智慧的象征

  • 尊敬是相互的,不尊敬也是相互的

  • 人生如戲,對很多事不必太在意,透過現象看本質,而非表象

  • 在沒有經過事情考驗之前,不要輕易判斷一個人

  • 不要拿別人的缺點和錯誤來折磨自己:如果一個人想不開,總是拿別人的缺點和錯誤折磨自己,導致的結果就是缺點和犯錯誤的一方沒有感覺,沒有犯錯誤的自己卻被折磨的痛苦不堪

  • 脾氣、嘴巴不好,心地再好也不能算是好人:應多動善的心思,多說正面積極的語言、控制自己的壞脾氣,這樣才算是一個真正有修養的人

  • 人際交往三原則:不批評、不指責、不抱怨:人與人之間的溝通,多鼓勵對方,多往“對方的水桶里加水”,多采取寬容的態度,溝通效果往往更好。“先肯定、再批評最后回到鼓勵”

  • 一個人幸福與否,擁有高質量的人際關系是一個決定性因素

  • 內在美好了,外在美會自然而然流淌出來

  • 人與人之間的交往,常常是一種價值交換,當自己沒有價值的時候,一個人單純祈求別人的合作或幫助是很困難的。在這個世界上,本質上能夠拯救自己的,唯有自己,找準自己的人生方向,不斷增加自己的含金量,這才是一個人生活幸福的可靠保證

  • 人不會因為知道而改變,而是因為觸動而改變

  • 很多時候,人們尊重的不是人,而是背景:失意時也不要妄自菲薄,因為人生的起起落落是正常現象,不必太在意

  • 一個人最大的自私就是無私

  • 真話不全說,假話不講:一個人真話不全說,也是一種成熟的標志和象征

  • 口為禍福之門:感謝別人的話多說,傷害別人的話少說,刺痛別人的話盡量不說:話到嘴邊留半截,想清楚以后再說

  • 人品好的人語言優美,人品差的人語言惡俗

  • 人與人之間的交往,在有理智的時候,雙方都能把握分寸,相敬如賓,控制自己的情緒和語言表達方式,不要氣急之下口不擇言,是每一個成年人的必修課

  • 人生的樂趣莫過于微笑著生活

  • 微笑不需成本,但能創造財富。微笑不需花錢,但能產生力量,微笑不需費用,但能倍增快樂

  • 生命的最高境界是在逆境中學會微笑

  • 多聽少說是成熟的重要標志

  • 我們說的越多,彼此的距離卻越遠,矛盾也越多,有效的溝通,是為了解決問題。溝通的一個重要原因是站在對方的角度上考慮問題,如果說的話都是對方不感興趣的內容,那么說的越多,效果越差

  • 多去贊美別人吧

  • 把脾氣拿出來,那叫本能,把脾氣壓下去,那叫本事

  • 內心強大,才能道歉,但必須更強大,才能原諒

  • 寬容,是對不該原諒的事和人持原諒態度,寬容是一種美德,寬容是價格力量的體現

  • 每拔一顆釘子,都留下一個洞,每發一次脾氣,都給親人留下一個洞

  •  
    婚姻家庭篇
  • 美麗讓男人停下,智慧讓男人留下:男人注重的還是女人的內在和性格

  • 女人注重的還是男人的內在和實力

  • 愛并不是找一個完美的人而是學會用“完美的眼光”欣賞一個“并不完美”的人

  • 教育學習篇
  • 學到很多東西的訣竅,就是一下子不要學很多:飯一口口吃,知識一點點學,貴在堅持

  • 睡下時不想想不天中學會了什么東西,他就沒有前進:反思是心靈的咀嚼,不反思,就難有進步,養成每日反思,每日總結的好習慣,日積月累,就會有大的進步和提升

  • 知識是心靈的化妝品

  • 年輕時別怕冒險,即使失敗也,也有足夠多的時間來扭轉

  • 表揚喚醒潛能,打擊壓制潛能:人人喜歡被賞識,如有可能,多去賞識別人

  • 思維改變心態,心態改變行動,行動改變習慣,習慣改變性格,性格改變命運

  • 一個有信念者所開發出的力量,大于九十九個只有興趣者

  •  
    事業奮斗篇
  • 跟對人,做對事:找到與自己真正有緣的人,做對自己有意義、有價值的事

  • 十年寒窗下無人問,一舉成名天下知:在成功的道路上,要耐得住寂寞

  • 方向正確后,頑強的毅力往往能決定成敗

  • 事業是一個人生命的支撐點

  • 人生有兩大幸運,一是做自己喜歡做的事,二是和自己喜歡的人在一起。實現這兩個愿望,一半靠運氣,一半靠努力。運氣再好的人,自己不努力,好運也會漸漸走遠;運氣再不好的人,只要夠努力,總有一天會打動幸運女神:最終決定自己命運的還是自己

  • 一個人有了理想,就等于有了靈魂

  • 作為一個有夢想的人,我們應該在無人理睬時,堅定執著,在萬人羨慕時,心如止水,這才是人生的至高境界

  • 世上沒有絕望的處境,只有對處境絕望的人

  • 關關難過,關關過:很多時候,看似沒有希望了,但我們只要再堅持一下,事業就有可能峰回路轉,前途一片光明:韌性是成功的重要條件

  • 人活著,就是要撐得住,堅強的往前走,就一定能走出困境,邁向成功

  • 只要精神不滑坡,辦法總比問題多

  • 遇到挫折時能平和面對、積極想辦法。遇到勝利時,也不要被喜悅沖昏了頭腦,得意忘形。總之,遇到事情不回避,不膽怯,“兵來將擋,水來土掩”,這是有智慧的人生態度

  • 一個人只有靜下心來,不斷反省,剔除外在環境浸染的私心雜念,才能將自己的心性變得澄明(清靜才能有為)

  • 貴人相助,是因為你值得相助:貴人認可你,才會幫助你,所以真正的貴人就是自己

  • 搞定人,幾乎就能搞定一切

  • 一個人,管好別人的前提是管好自己

  • 成就大業的人,能在小處忍受恥辱。建樹大功的人,能在小處諒解他人:做大事者要懂得在小處忍讓

  • 相信自己、懂得激勵自己,是成功人生的重要法寶:有成就的人大都堅定、努力、不怕困難、敢于懷疑、不迷信權威、自信力較強;自我激勵可以調整情緒落差,有效的抵抗情緒落差,有效的抵抗挫折,自我激勵可以使們的自暴自棄的“心理峽谷”,做命運的主人

  • 沒有深厚的人生感悟,是做不出大事來的:一個人能達到的高度,往往與人生沉淀和感悟成正比

  •  
    健康幸福篇
  • 擁有智慧,運用智慧,就可以延緩衰老

  • 健康的身體是一個人最大的財富

  • 運動鍛煉身體、樂觀滋潤靈魂

  • 愁苦時多聽聽音樂,可以解憂

  • 心結是疾病的源頭,樂觀是長壽的保證

  • 生氣等于自殺,生氣太多,是一個沒有智慧的象征

  • 一個人懂得精神層面的修煉,是養生的高級境界

  • 要想身體好,男人多吃,女人多睡

  • 人類的劣根性之一就是擁有時不知道珍惜,失去時悔之晚矣,在身體健康時,懂得珍惜,懂得保養,在身體得病時,積極心態,勇敢面對

  • 生病后才知道健康的可貴,平時多注意保養,盡量少生病

  • 一個樂于助人的人,內心一定是富足的、快樂的

  • 積極的心態是健康的保證(心態浮躁,愛抱怨、思想消極)一個人要想不得病,關鍵是自己要能調整好自己,自己就是最好的醫生

  • 自己和諧,百病不侵;自己混亂,百病來襲

  • 對每天的生活,都要懷一顆感恩之心,感受生命中的點點滴滴

  • 在生活中修行,在做人中養生

  • 情緒是生命的指揮棒,精神崩潰會導致身體崩潰:幸福的人第一件事就是努力克服消極情緒

  • 真正有過人生閱歷之后,發現讓自己快樂才是真格的:只有我們自己內心的平靜、充實與安寧,才會給我們帶來持久、真實、穩定的快樂,而一個人內心的平靜快樂就是最值得我們珍惜的寶貴財富

  • 快樂的兩個基本原因是:第一,不要糾纏于小事;第二,任何事都是小事

  • 只有心靈上的寧靜和諧,才是真實永恒的幸福

  • 學會幸福是一種能力,學會品味小事是一種境界

  • 人生,有時候需要一點“阿Q精神”,讓我們學會放大幸福

  • 孝敬父母篇
    成功的時候誰都是朋友,但只有母親--她是失敗時的伴侶
    讀書篇
  • 讀一本好書,就是和許多高尚的人談話

  • 真正美麗的女人,來自于內心的修煉

  • 生活不是一種宿命,而是一種選擇

  • 越是豐滿的穗,越往下低頭:很多時候,低調是奢華的象征,高調反而是無知的表現

  • 一切的成就與財富,都始于一個意念

  • 物質可以變精神,精神可以變物質;一個人要懂得發揮主觀能動性,將意念與物質相互轉化

  • 讓自己輕松快樂的源頭,在于你看待事物的角度

  • 思想不但能創造價值,思想也能改變世界

  • (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(3)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:17
    • 用控制臺命令拉取git最新倉庫代碼


    文章出處
    C#利用Diagnostics  拉取最新代碼  示例代碼
     
     static void DiagnosticTest()
    {
    Process p;
    ProcessStartInfo psi;
    psi
    = new ProcessStartInfo("sh.exe");
    psi.Arguments
    += "--login -i";
    psi.UseShellExecute
    = false;
    psi.RedirectStandardOutput
    = true; //允許重定向標準輸出
    psi.RedirectStandardInput = true; //接受來自調用程序的輸入信息

    psi.RedirectStandardError
    = true;
    psi.WindowStyle
    = ProcessWindowStyle.Hidden;
    p
    = Process.Start(psi);
    p.StandardInput.WriteLine(
    "cd D://");
    p.StandardInput.WriteLine(
    "cd D:/git/Component/");
    p.OutputDataReceived
    += new DataReceivedEventHandler(OnDataReceived);
    p.BeginOutputReadLine();
    p.BeginErrorReadLine();
    //p.StandardInput.WriteLine("git fetch --all");
    //p.StandardInput.WriteLine("git reset --hard origin/master");
    p.StandardInput.WriteLine("git pull");
    p.Close();
    }
    private static void OnDataReceived(object Sender, DataReceivedEventArgs e)
    {
    if (e.Data == "Already up-to-date.")
    {
    Console.WriteLine(
    "已拉取最新的Component代碼");
    }
    }

    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(0)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:17
    • 《暗時間》讀后感


    文章出處
    什么是暗時間
    什么是暗時間?你走路、買菜、洗臉洗手、坐公車、逛街、出游、吃飯、睡覺,所有這些時間都可以稱為“暗時間”。我理解暗時間就是把自己平時在不知不覺中度過的,看不到它流逝的時光充分利用起來的時間。這些時間在作者的眼里是可以拿來思考問題,反芻和消化平時看和讀的東西。這段時間看起來微不足道,但日積月累將會產生龐大的效應,所以說善于利用思維時間的人,可以無形中比別人多出很多時間,從而實際意義上能比別人多活很多年。
    每個人的生命就像沙漏,里面裝的沙子總量大致相當,不同的是,有的沙漏頸部較細,有的沙漏頸部較粗。頸部較細的沙漏能夠抓住每一粒時間之沙,即使沙子總量一樣,也能擁有更長的生命。
    忽然就聯想起韓國總統李明博的一句話“我的十二年等于別人的二十四年”,人生就是一個慢慢積累的過程,只不過有些人一天積累的多些,有些人積累的少些,有時候你可能會忽略一天積累的差距,但是即使這個差距很少,但是日積月累就會相差很大(這個道理有點像你覺得2很小,但是如果2的n次方那就...),
    學會持之以恒的去做一件事情
    在一個你感興趣的領域堅持不懈地專注下去,只需要選擇一個不算太不靠譜的方向,然后專心致志地鉆下去,最后必然能成為高手或絕頂高手。
    習慣的力量會遠遠大于我們的想象,所以努力培養自己好的習慣。事實上習慣養成只需要21天,所以不要為自己無法改正壞的習慣找任何借口
    常思已過
    我們經常聽說“心理年齡”這個詞,思考得多的人,往往心理年齡更大。有人用10年才能領悟一個道理,因為他們是被動領悟——只有在現實撞到他臉上的時候才感到疼,疼完了之后還是不記得時時提醒自己,結果很快時過境遷拋之腦后,等到第二次遇到同一個坑的時候早忘了曾經跌過跟頭了,像這樣的效率,除非天天摔坑里,否則遺忘的效率總是大過吃虧長的記性。善于利用思維時間的人則能夠在重要的事情上時時主動提醒自己,將臨時的記憶變成硬編碼的行為習慣。 每個人的手表都走得一樣快,但每個人的生命卻不是。衡量一個人生活了多少年,應該用思維時間來計算。舉一個極端的例子,如果一個人從生下來開始就呆在一個為他特殊建造的無菌保護室里,沒有社會交往,沒有知識獲取,度過了18年,你會不會認為他成年了? 認為時間對每個人是均等的是一個錯覺,認為別人有一天,我也有一天,其實根本不是這樣。如果你正在學習一門專業,你使用自己所投入的天數來衡量,很容易會產生一種錯覺,認為投入了不少時間,然而其實,“投入時間”這個說法本身就是荒唐的,實際投入的是時間和效率的乘積。你可以“投入”很多時間在一件事情上面,卻發現毫無進展,因為你沒有整天把你要做的事情,要學習的東西常駐在你的大腦中,時刻給予它最高的優先級。你走路的時候吃飯的時候,做夢的時候心心念念想的就是這件事情,你的CPU總是分配給它,這個時候你的思維時間就被利用到了極致,你投入的時間就真正等于了實際流逝的時間,因為你的CPU是滿載的。
    如果你有做總結的習慣,你在度過一段時間之后總結自己在某某領域投入了多少時間,建議千萬不要粗略地去計算有多少天下班后拿起書來翻看過,因為這樣你也許會發現書倒是常翻,但領悟卻不見得多深,表面上花的時間不少,收益卻不見得那么大。因為看書并記住書中的東西只是記憶,并沒有涉及推理,只有靠推理才能深入理解一個事物,看到別人看不到的地方,這部分推理的過程就是你的思維時間,也是人一生中占據一個顯著比例的“暗時間”,你走路、買菜、洗臉洗手、坐公車、逛街、出游、吃飯、睡覺,所有這些時間都可以成為“暗時間”,你可以充分利用這些時間進行思考,反芻和消化平時看和讀的東西,讓你的認識能夠脫離照本宣科的層面。這段時間看起來微不足道,但日積月累將會產生龐大的效應。
    專心致志的做一件事情
    程序員們都知道,任務切換需要耗費許多額外的花銷,通俗地來講,首先需要保存當前上下文以便下次能夠順利切換回來,然后要加載目標任務的上下文。如果一個系統不停地在多個任務之間來回倒騰,就會耗費大量的時間在上下文切換上,無形中浪費很多的時間。 相比之下,如果只做一件任務,就不會有此損失。
    這就是為什么專注的人比不專注的人時間利用效率高得多的原因。任務切換的暗時間看似非常不明顯,甚至很多人認為“多任務”是件很好的事情(有時候的確是),但日積月累起來就會發現,消耗在切換上的時間越來越多。
    另外,大腦開始一件任務的時候必須要有一定時間來“熱身”,這個時間因人而異,并且可以通過練習來改變。舉個例子,寫程序寫得正high,忽然被叫去開了一通會,寫到一半的代碼擱在那兒。等你開完會回來你需要多久能夠重新進入狀態?又或者,你正在調試程序,你已經花了二十分鐘的時間把與這個bug可能相關的代碼前前后后都理解了一遍,心中構建了一個大致的地圖,就在這時,呃,你又被叫去開了個會(:D),開完會回來,可想而知,得花上一些時間來回想一下剛剛弄清的東西了。
    鍛煉自己迅速進入狀態的能力
    能夠迅速進入專注狀態,以及能夠長期保持專注狀態,是高效學習的兩個最重要習慣。
    迅速進入狀態的能力是可以鍛煉的,根據我個人的經驗,至少可以縮短到3-5分鐘。但要想完全進入狀態,卻是很難在這么短的時間實現的。
    所謂完全進入狀態,舉個例子:你看了3個小時的書,或者調試了半個小時的程序之后,往往滿腦子都是相關的東西,所有這些知識都處在活躍狀態,換言之你大腦中所有相關的記憶神經網絡都被激活了,要達到這樣一種忘記時間流逝的“沉浸”狀態(心理學上叫做“流體驗”),不是三兩分鐘的事情。而一旦這種狀態被破壞,無形間效率就會大打折扣。
    這也是為什么我總是傾向于創造大塊的時間來閱讀重要的東西,因為這樣有利于“沉浸”進去,使得新知識可以和大腦中與其相關的各種既有的知識充分融合,關聯起來,后者對于深刻的記憶非常有幫助。 要充分利用暗時間,不僅要能夠迅速進入狀態,另一個很重要的習慣就是能夠保持狀態多久(思維體力)。
    學會抗干擾
    只有具備超強的抗干擾能力,才能有效地利用起前面提到的種種暗時間。抗干擾能力也是可以練習出來的。
    經常利用各種碎片時間閱讀和思考,對迅速集中注意力和保持注意力都非常有幫助。
    想想自己是否是這樣浪費時間的?
    浪費時間的根源在于
  • 躲避困難(遇到困難就想躲避,現在的領導讓我深深體會到了如果你要躲避困難那么你現在的地位就會很快被別人取代,老板雇傭你是來解決問題的而不是讓你來逃避問題的)

  • 拒絕學習(做it行業,特別是前端,如果你一個月不學習新的東西就會被out出局)

  • 混淆工具和問題(計算機原本是旨在提高人們工作效率的工具,卻最終成為大多數人消磨時間、浪費時間的根源,想辦法不停地提醒自己不要忘了用電腦的最終目的是什么?難道是為了看電影?)

  • 書寫是為了更好的思考
    “我經常在走路和睡前總結所學過的內容,思考遺留的問題,一段時間的閱讀和思考之后,一個總體的知識框架就會逐漸浮現在腦海中。然后我會將它書寫下來,然而,我往往非常驚訝地發現,當我書寫的時候,新的內容仍然源源不斷的冒出來,就像我的鍵盤自己也會思考一樣。”這是原文中的一句話,讓我印象深刻。
  • 書寫的好處有以下幾點:

  • 書寫是對思維的備忘

  • 書寫是對思維的緩存

  • 書寫是與自己的對話

  • 書寫是與別人的交流

  • 有時候,語言自己也會思考

  • 什么才是你的不可替代性與核心競爭力
    個人的核心競爭力是他獨特的個性、知識、經驗的組合。
    IT行業擁擠著上百萬聰明人,彼此之間真正的不同在哪里?不在于你學的是什么技術,學得多深,IQ多少,而在于你身上有別人沒有的獨特的個性、背景、知識和經驗的組合。如果這種組合,1,絕無僅有;2,在實踐中有價值,3,具有可持續發展性,那你就具備核心競爭力。因此,當設計自己的發展路線時,應當最大限度地加強和發揮自己獨特的組合,而不是尋求單項的超越。而構建自己獨特組合的方式,主要是通過實踐,其次是要有意識地構造。
    以下的知識技能組合是具有相當程度的不可替代性的:
  •  專業領域技能:成為一個專業領域的專家,你的專業技能越強,在這個領域的不可替代性就越高。這個自是不用多說的。

  •  跨領域的技能:解決問題的能力,創新思維,判斷與決策能力,Critical-Thinking,表達溝通能力,Open Mind 等等。

  •  學習能力:嚴格來說學習能力也屬于跨領域的技能,但由于實在太重要,并且跨任何領域,所以獨立出來。如何培養學習能力,到目前為止我所知道的最有效的辦法就是持續學習和思考新知識。

  •  性格要素:嚴格來說這也屬于跨領域技能,理由同上。一些我相信很重要的性格要素包括:專注、持之以恒、自省(意識到自己的問題所在的能力,這是改進自身的大前提)、好奇心、自信、謙卑(自信和謙卑是不悖的,前者是相信別人能夠做到的自己也能夠做到,后者是不要總認為自己確信正確的就一定是正確的,Keep an open mind)等等。

  • 為什么我們常說很多時候一定要親身經歷了之后才能明白
    1、切身體驗:親身經歷一個負性事件帶來的情緒記憶要比看著或聽說別人遭受一個同樣的事件所感受到的強烈得多,形成的負性條件反射也遠遠更持久。我們一定程度上的確能夠感同身受,但心理學實驗同樣也表明,自己是無法從強度上真正感同身受別人的痛苦的
    2、別人口中的故事。別人口中的故事也許只是事情的一個方面,難免受到他們自己觀念的影響而產生偏見,我們每個人都帶著有色眼鏡看待這個世界,客觀且全面的描述一個事情極少有人能做到。別人的故事也許只是他們的想法,你自己親身經歷同樣的事情也許完全又是另一種想法了。
    3、為什么。別人在告訴你一個道理的時候往往只能告訴你怎么(how)做,而難以說清為什么(why)要這么做,遑論“為什么一定(have to)要這么做”了(因為他們自己也不一定能說清)。在沒有聽到邏輯嚴密、無法辯駁的證據之前,你很難說服自己A選項優于B選項,直到最終自己在某一條路上撞了南墻才肯死心。
    4、世界是復雜的。更何況,很多時候人們根本無法確切地向你保證A選項一定優于B選項:比如,好好學習并不一定會有好的前程;不好好學習也并不一定以后就一塌糊涂
    5、未來是不確定的。人類天生有一種尋求確定性的需要,以及控制周遭的小世界的需求。我們總是希望聽到“你只要這樣這樣,以后就一定能夠那樣那樣”這類令人窩心的話。然而與我們的控制錯覺相反,這個世界有太多因素是不確定的,除了自己的因素比較可控之外,外界的機遇因素幾乎完全不是能夠控制或預測的。我們最多只能做好頭腦準備,盡量不錯失機遇。也正因此,你幾乎永遠也聽不到足夠有說服力的證據來告訴你“你只要…,就一定能夠…”,因為成功并不是僅取決于個人因素的。個人因素往往只是成功的一個既非充分又非必要的條件,所謂謀事在人,成事在天;但無需悲觀,因為毫無疑問,改善個人因素的確能夠大大增加成功的幾率。
    6、別人的道理,自己的事情。我們常常說類似“你說的沒錯,但是并不適用于我這里的情況”這樣的話,自己的事情和別人的事情往往總是有著這樣或那樣的微小或巨大的差異,如果我們先入為主地不想聽取別人的意見,就很容易自己說服(欺騙)自己說“情況不一樣,所以道理不適用”(而實際上到底哪些情況不一樣,為什么道理不適用,是不是真的不適用,我們根本就不去深究了)。另外,朋友給出的道理或故事總是跟他當初經歷的情境細節有著千絲萬縷的聯系,你記下了朋友的道理和故事,同時也就將這個道理和他當時經歷的情境線索給掛鉤起來了,于是當類似的情境發生的時候,你的記憶系統就能夠根據情境線索提取出朋友當時說給你聽的那些道理(《找尋逝去的自我》);然而,這種記憶提取機制同時也有他的弱點,那就是當你經歷的情境跟朋友當初經歷的情境相似性不足(盡管抽象到本質上可能是一回事)的話,你就不會想起他曾經說的那些道理。這就是很多時候我們發現自己道理是聽了一堆,結果自己生活中卻不會用的原因。而所謂的能夠“活學活用”,就是那些善于抓住知識本質,觸類旁通,將道理外推到表面不相似但本質一樣的問題領域之中的人。
    除了多多反省觀察自己之外,在面對問題的時候多抽象其本質也是一個有力的辦法,正是表面不相似性阻礙了知識的遷移運用,我們常說有些人善于看到事物的本質,這樣的人往往就是那些聰明人,因為他們更能夠舉一反三,將一個地方領悟的道理推廣到另一個看上去很不一樣的地方。
    7、認知失調與自我辯護。如果我們在聽到別人的道理之前已經有了一個心理上的傾向,那么即便別人給出一個有一定說服力的理由,根據認知失調理論,我們也會竭力為自己辯護;又由于世界是復雜的,所以我們幾乎總是能夠找到辯護的借口
    8、失敗即成功。有時候,我們的確需要在撞南墻的過程中總結出經驗教訓(特別是對于尚未有人走過的路),并到達成功的彼岸。從信息收集者的角度來說,世界上沒有成功或失敗,失敗的事情中揭露出來的信息一點也不比成功事件中的信息少,或許往往還能得到更多的東西。
    9、 情緒對照。經歷了失敗之后,我們在做“正確”的事情的時候便會覺得更理直氣壯。如果沒有經歷失敗后的糟糕記憶,我們就算理性地認識到目前的做法是更合適的,也很難從情緒上強烈地感受到這么做的“正確感”。
    10、天性。我們有很多根植在大腦中的進化選擇出來的天性,在判斷與決策時這些天性的優先級總是最高的。所以即便有時候別人說服我們應該往長遠考慮一些,他自己就曾經吃過只看眼前的虧,然而你的內心一個聲音仍然在高叫著“管他呢!”。因此,我們常常需要用理性的聲音去說服內心的原始人。幸運的是,我們可以,前提是我們必須首先了解自身。
    11、習慣。我們常說,“說起來容易,做起來難”。習慣的力量遠遠大于我們的想象,很多時候我們都會有這樣的體會:聽到一番很有道理的話,但沒過幾天,發現自己又變回原來的老樣子了。甚至于自己在一次困境中領悟出了一些很重要的道理,決定在下次遇到類似情況的時候不再犯以前犯的錯誤,然而,當真正遇到下一次情況的時候發現自己無意識地又犯了同樣的錯誤,誰說人不會兩次踏入同一條河流? 也許,對付我們強大的習慣的最佳辦法是將自己認為正確的(不管是自己經過困難或失敗而領悟的,還是看到書上或聽到別人說的)寫下來,并常常拿出來翻看。事實上,我的經驗是,在寫下來的時候我們的大腦會進入到理性分析模塊,進一步檢驗和推理那些道理,我們越是對一個道理審視的詳細、深入、全面,大腦中留下的印象深刻,從記憶加工的角度來說,這叫深度加工,帶來的結果就是該記憶與更多的提取線索相關聯,于是便能夠在更多的場景下被喚起(而不是被以往的習慣直接覆蓋)。
     
     
    親身經歷了就一定明白了嗎?
    1、很傻很天真的條件反射。條件反射是一個太傻太天真的系統——我們碰了一鼻子灰之后往往就會選擇放棄自己的做法。然而其實撞了南墻并不就一定意味著做法不對,可能只是時運不濟。沒有得到好的結果并不代表你的過程就錯了。同樣,結果正確也并不代表方法就一定正確。客觀的做法是:看重過程,而不是看重單次的結果——因為再好的過程也可能會偶爾失利,但從長遠來統計,好的過程總體上必然導致更好的結果。
    2、認知偏差。我們有著各種各樣系統的認知偏見:我們經常對事物作出錯誤的解釋和歸因(即便自己是親歷者),有時甚至反而是“當局者迷,旁觀者清”。
    3、情緒系統。我們之所以強烈地依賴于需要親身體驗一個負性事件來學習,是因為我們平常的決策與判斷強烈地依賴于情緒系統的輸出,如果一個事情“感覺上沒錯”,我們無論有多好的理由也很難說服自己不去做它,如果一個事情“感覺上不對”,則無論有多好的理由也很難說服自己去做它。這種對情緒系統的強烈依賴使得理性的證據在強烈的情緒面前顯得孱弱。事實上,我們的直覺的確有不少時候是很靈的,但也有不少時候是失靈的,正確的做法不是一概而論地聽取直覺的意見或者一概而論地不聽取,而是將它當成一個啟發式的判斷,然后利用自己的理性大腦對其進行進一步的客觀的、邏輯的檢驗(Critical Thinking)。我們是一定程度上能夠駕馭情緒系統的,情緒系統畢竟只是我們的進化工具箱中的決策系統之一,而不是全部。另外始終別忘了情緒系統只是一個比較粗糙的判斷決策系統,并且它很多時候是為了適應遠古社會而非現代社會的。
    不需要經歷也能明白(理性的力量)
    我們對于事物的思考深度常常是不夠的,在淺層次的思考了之后,如果我們的情緒系統或者直覺已經給出了傾向,那么很少有人會繼續深入地思考,而開始轉向著手行動。這種匆忙的態度往往是失敗的起源,在碰壁了之后,我們被動地“讓事實告訴了我們”某方案是行不通的,讓事實替代我們進行了思考和推理,我們從失敗當中獲得了信息,知道了為什么之前的方法是不恰當的,這就是一些時候我們認為要親身經歷才能明白的原因。然而,這并不意味著任何時候我們都只能“做了之后才發現…”。
    人類最強大的能力就是社會學習—— 普通人從自己的錯誤中學習,聰明人從別人的錯誤中學習。
    人類最強大的另一個能力則是歸納和推理
    我們可以仔細地,理性地思考、權衡各個選擇的利弊,而不僅僅滿足于情緒上的判斷。 假設我們面臨兩個選擇,A和B,我們可以結合別人的經歷,利用自己的推理能力,去分別推斷A或B選項帶來的各種各樣可能的利弊,對于其中不確定的因素我們或者可以進一步從別人那里收集更多的信息來使得判斷更靠譜,或者可以對風險的上下界進行一些估計,總之,我們盡量去讓我們大腦中假想的角色去經歷失敗——我們通過推理發現某條路行不通,就避免了現實中去碰一鼻子灰。 我們在大腦中走得越遠,在現實中就走得越穩。我們在大腦中失敗的次數越多,在現實中失敗的次數就越少。 直到實在沒法在事先知道答案(你所面臨的問題是任何前人都沒有探索過的),才必須親自探險,那個時候,我們就不再是在重復別人走過的老路,而是探索者,創新者,因為我們站在了別人的肩膀上。
    寫在最后
    最重要的能力之一就是能否從別人的錯誤中學習,往往是這類人能夠迅速走在別人的前面,在別人跌倒的地方跳過去。
    這是一個信息社會,所有人的經驗教訓,所有人的知識以前所未有的速度,以互聯網為媒介傳播開來,不管我們關注什么主題,總能迅速找到一堆書,論壇,網頁,然而能否從中獲取知識,避免做別人做過的俯臥撐,就看你有沒有一雙能夠辨識的眼睛,和善于思考的心智(見《如何清晰地思考》(這是我接下來準備要寫的一篇讀后感))
    又因為一本好書而耽誤自己睡覺的時間,想對自己說,好好愛自己,跟著自己內心的想法走,堅持自己想學的,相信終有收獲
    http://wenku.baidu.com/view/0a1949d0b9f3f90f76c61b1a.html
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(3)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:16
    • 我所了解的JavaScript糟粕和雞肋

    文章出處
    糟粕
    全局變量
    眾所周知,全局變量在很小的程序中可能會帶來方便,但隨著程序變得越來大,全局變量將難以處理,全局變量將降低程序的可靠性。
    在js中有3種方式定義全局變量
    脫離任何函數安排一個var語句   //var foo=value;
    直接添加一個屬性到全局對象上  //window.foo=value;
    直接使用未經聲明的變更(其實這叫隱匿全局變量)    //foo=value;  
     
    作用域
     眾所周知,在JavaScript中沒有塊級作用域,而且在JavaScript有提升變量聲明的功能,所以最好的方式是在每個函數的開頭部分聲明所有變量。
    自動插入分號
     JavaScript會試圖通過自動插入分號來修正有缺損的程序。
     return
    {
    status:
    true
    };

    上面的代碼大家自然的會想到會返回一個包含status成員元素的對象。但是由于JavaScript自動插入讓它變成了一個返回undefined。
    所以把{放在上一行的尾部而不是下一行的頭部可避免上述問題
    保留字
     當保留字被用作對象字面量的鍵值時,它們必須被引號括起來。它們不能被用在點表示法中,所以有時必須使用括號表示法。

    最好不要用保留字做標識符  JavaScript保留字如下圖片所列

    Unicode
     在阮一峰的一篇博文Unicode與JavaScript詳解 中特別清楚說明了JavaScript的編碼。
    簡述一點的說就是JavaScript的字符是16位的,所以在編碼方面很多字符表示出來都是很有困難的。
    typeof
     typeof null返回的卻是object
     typeof /a/ 有一些會返回為object而其它的卻返回function
    parseInt
     將一個字符串轉換為整數,但是在遇到非數字時停止解析。
     如果該字符串第一個字符是0,那么該字符串將會被基于八進制而不是十進制來求值。(但關鍵是在ie8以下的瀏覽器卻還是當成十進制來求值)
     建議使用parseInt時最好提供基數參數,即使轉換的是十進制。
    +
     +主要用于加法運算或字符串連接。但是只要其中一個運行符為字符串,則返回字符串
     所以在你打算用+做加法運算時,請確保兩個運算數都是整數。
    浮點數
     在JavaScript中,0.1+0.2卻不等于0.3
    浮點數中的整數運算是精確的,所以小數表現出來的錯誤可以通過指定精度來避免。
    NAN
     typeof不能辨別數字和NAN,并且事實證明NAN不等同于它自己
     function isNumber(value) {
    return typeof value === 'number' && isFinite(value);
    }

    偽數組
     在JavaScript是沒有真正的數組的!在其它編程語言中,數組都是按照數字進行索引的,但是JavaScript中事實上并沒有數組,數組和對象事實上并沒有多大的區別,JavaScript提供了一種類數組特性的對象,它把數組下標轉換為字符串,用其作為屬性,屬性的檢查和更新的方式與對象一模一樣,除了有一個可以用整數作為屬性名的特性外。 
     //判斷是否為數組
    function isArray(value) {
    return value &&
    typeof value === 'object' &&
    typeof value.length === 'number' &&
    typeof value.splice === 'function' &&
    !(value.propertyIsEnumerable('length'));
    };

     
    假值
     在JavaScript中擁有一大堆假值,如下圖所示。undefined和NAN并不是常量,它們是全局變量,而且你可以改變它們的值。

    hasOwnProperty
     大家都知道,hasOwnProperty方法被用途一個過濾器去避開for in語句,因為它只是一個方法,所以在任何對象中,它可能會被一個不同的函數甚至一個非函數的值所替換。
     var another = {};
    var name;
    another.hasOwnProperty
    = null; //這里修改了hasOwnProperty方法為一個非函數值
    for (name in another) {
    if (another.hasOwnProperty(name)) {
    console.log(another[name]);
    //這里使用hasOwnProperty結果就報錯 TypeError: object is not a function
    }
    }

    雞肋
    ==
     永遠只使用===和!==。因為==默認會進行類型轉換,規則十分難記。至于規則詳情見我的另一篇文章 JS == 的轉換規則     
    with
     大家都知道with改變作用域,在有些情況下是相當方便的,但帶來的性能問題卻是相當沉重的。建議最好不要使用with
    eval
    eval帶來的問題總結如下: 
  • 使得代碼更加難以閱讀

  • 性能顯著降低

  • 不利于JSLint工具檢測問題

  • 降低了應用的安全性

  • 類似于eval的還有1)Function構造器2)在setTimeout或setInterval函數中傳遞字符串參數
    像這樣的都盡量避免
    continue語句
     這條命令的作用是返回到循環的頭部,但是循環本來就會返回到頭部。所以通過適當的構造,完全可以避免使用這條命令,使得效率得到改善。通過重構移除continue語句性能方面能得到顯著改善
    switch貫穿
     大家都知道在js的switch語句中在一個case條件可以貫穿到另一個case中,雖然這種特性是在某些場景下是非常有用的,但是它們也是非常危險的。
    缺少塊的語句
     建議即使只有一條語句,在if、while、do或for中還是用花括號把它們括起來
    ++   --
     當用++和--時,代碼往往變得過于緊密和隱晦,所以作為一條原則建議不要使用它們
    表面上可以讓代碼變得很緊湊,但是實際上會讓代碼看上去更復雜和更晦澀。因此為了代碼的整潔性和易讀性,不用為好。
    位操作符
     JavaScript沒有整數類型,只有雙精度的浮點數,因此位操作符將它們的數字運算先轉換成整數,接著執行運算然后再轉換回去,所以在JavaScript中,位操作符運算效率并不高,所以建議少使用它。
     
    備注:
  • JavaScript中是沒有整型概念的,但利用好位操作符可以輕松處理,同時獲得效率上的提升。

  • |0和~~是很好的一個例子,使用這兩者可以將浮點轉成整型且效率方面要比同類的parseInt,Math.round 要快。在處理像素及動畫位移等效果的時候會很有用。

  •  
    function語句
     在Javascript中定義一個函數,有兩種寫法:
     
     function foo() { }//第一種
     var foo = function () { }//第二種

     
    兩種寫法完全等價。但是在解析的時候,前一種寫法會被解析器自動提升到代碼的頭部,因此違背了函數應該先定義后使用的要求,所以建議定義函數時,全部采用后一種寫法。
     
     
    類型的包裝對象
    JavaScript有一套類型的包裝對象。不要使用new Boolean、new Number或new String            也就是說不要像下面這樣
     
     new String("Hello World");
      
    new Number(2000);
      
    new Boolean(false);

     
     
     
    此外也請避免使用new Object和new Array,可使用{}和[]來代替
    new
    使用new時應謹慎,避免因為它而造成this的污染全局對象。
    在JavaScript中類是這樣定義
     
      var Cat = function (name) {
        
    this.name = name;
        
    this.saying = 'meow' ;
      }

     
    生成對象如下代碼所示
      var myCat = new Cat('mimi');

    這種利用函數生成類、利用new生成對象的語法,其實非常奇怪,一點都不符合直覺。而且,使用的時候,很容易忘記加上new,就會變成執行函數,然后莫名其妙多出幾個全局變量。所以,建議不要這樣創建對象,而采用一種變通方法。
    Douglas Crockford給出了一個函數:
      Object.beget = function (o) {
        
    var F = function (o) {};
        F.prototype
    = o ;
        
    return new F;
      };

    創建對象時就利用這個函數,對原型對象進行操作:
      var Cat = {
        name:
    '',
        saying:
    'meow'
      };
      
    var myCat = Object.beget(Cat);

     
     
    void
    在JavaScript中,void是一個運算符,它接受一個運算數并返回undefined。這個命令沒什么用,而且很令人困惑,建議避免使用。
     
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(4)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:16
    • MongoDB系列一(索引及C#如何操作MongoDB)


    文章出處
    索引總概況
    db.test.ensureIndex({"username":1})//創建索引
    db.test.ensureIndex({"username":1, "age":-1})//創建復合索引 數字1表示username鍵的索引按升序存儲,-1表示age鍵的索引按照降序方式存儲。
    //
    該索引被創建后,基于username和age的查詢將會用到該索引,或者是基于username的查詢也會用到該索引,但是只是基于age的查詢將不會用到該復合索引。因此可以說,如果想用到復合索引,必須在查詢條件中包含復合索引中的前N個索引列。然而如果查詢條件中的鍵值順序和復合索引中的創建順序不一致的話,MongoDB可以智能的幫助我們調整該順序,以便使復合索引可以為查詢所用。
    db.test.ensureIndex({"userid":1},{"unique":true})//創建唯一索引
    db.test.ensureIndex({"userid":1,"age":1},{"unique":true}) // 我們同樣可以創建復合唯一索引,即保證復合鍵值唯一即可
    db.test.ensureIndex({"username":1},{"background":true})//如果在為已有數據的文檔創建索引時,可以執行下面的命令,以使MongoDB在后臺創建索引,這樣的創建時就不會阻塞其他操作。但是相比而言,以阻塞方式創建索引,會使整個創建過程效率更高,但是在創建時MongoDB將無法接收其他的操作。
    db.test.ensureIndex({"userid":1},{"unique":true,"dropDups":true})
    //創建唯一索引,并消除重復數據。

    db.test.getIndexes()//查看索引
    db.system.indexes.find()// system.indexes集合中包含了每個索引的詳細信息,因此可以通過下面的命令查詢已經存在的索引

    db.test.dropIndex({"username":1})//刪除索引

     
    Explain方法簡介
    explain是非常有用的工具,會幫助你獲得查詢方面諸多有用的信息。只要對游標調用該方法,就可以得到查詢細節。explain會返回一個文檔,而不是游標本身。explain會返回查詢使用的索引情況,耗時和掃描文檔數的統計信息。
    db.test.find().explain()
    {
    "cursor" : "BasicCursor",
    "nscanned" : 1,
    "nscannedObjects" : 1,
    "n" : 1,
    "millis" : 0,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {
    }
    }

  •  "cursor":"BasicCursor"表示沒有使用索引,查找采用的是“表掃描”,也就是順序查找。 ”BtreeCursor"采用B樹的結構來存放索引

  •   "nscanned":1 表示查詢了多少個文檔。

  •   "n":1 表示返回的文檔數量。

  •   "millis":0 表示整個查詢的耗時。

  • 這里特別說明一下哦,不要認為你把里面的數據都刪除掉了索引也隨之沒有了,索引自從你建立之后就一直存在在那兒,除非你手工刪除,如果你確定是不需要的索引,請務必使用dropIndex方法將它手工刪除。
    C#中使用MongoDB DLL驅動
     MongoDB.Driver.dll:顧名思義,驅動程序
     MongoDB.Bson.dll:序列化、Json相關
    下載地址 http://files.cnblogs.com/files/liyunhua/MongoDBDll.zip

    c#操作MongoDB簡單代碼介紹
    模型層代碼如下:
     /// <summary>
    /// 用戶主要資料
    /// </summary>
    public class UserInfo
    {
    public string UserId { get; set; }
    public string UserName { get; set; }
    public string PassWord { get; set; }
    public Detail Detail { get; set; }
    }
    /// <summary>
    /// 用戶詳細資料
    /// </summary>
    public class Detail
    {
    public string Address { get; set; }
    public int Age { get; set; }
    public string Email { get; set; }
    }

    UserBLL邏輯層中主要代碼如下:
     public string connectionString = "mongodb://localhost";//連接字符串
    public string databaseName = "myDatabase";//數據庫名
    private Mongo mongo;
    private MongoDatabase mongoDatabase;
    //注意這里泛型類型為“UserInfo”
    private MongoCollection<UserInfo> mongoCollection;
    public UserBLL()
    {
    mongo
    = GetMongo();
    mongoDatabase
    = mongo.GetDatabase(databaseName) as MongoDatabase;//獲得數據庫
    mongoCollection = mongoDatabase.GetCollection<UserInfo>() as MongoCollection<UserInfo>;//獲得數據庫中集合
    mongo.Connect();//在構造函數中進行數據庫連接
    }
    ~UserBLL()
    {
    mongo.Disconnect();
    //在析構函數中進行關閉連接
    }
    /// <summary>
    /// 配置Mongo,將類UserInfo映射到集合
    /// </summary>
    private Mongo GetMongo()
    {
    var config = new MongoConfigurationBuilder();
    //進行映射
    config.Mapping(mapping =>
    {
    mapping.DefaultProfile(profile
    =>
    {
    profile.SubClassesAre(t
    => t.IsSubclassOf(typeof(UserInfo)));
    });
    mapping.Map
    <UserInfo>();
    });
    config.ConnectionString(connectionString);
    return new Mongo(config.BuildConfiguration());
    }

    插入、選擇、刪除數據方法如下(寫在UserBLL中)
     /// <summary>
    /// 查詢詳細資料地址為湖北的用戶信息
    /// </summary>
    public List<UserInfo> Select()
    {
    return mongoCollection.Linq().Where(x => x.Detail.Address == "湖北").ToList();
    }
    /// <summary>
    /// 刪除全部用戶信息
    /// </summary>
    public void DeleteAll()
    {
    mongoCollection.Remove(x
    => true);
    }
    /// <summary>
    /// 插入一些數據
    /// </summary>
    public void InsertSomeData()
    {
    UserInfo userInfo1
    = new UserInfo()
    {
    UserId
    = "1001",
    UserName
    = "張三",
    PassWord
    = "123456"
    };
    mongoCollection.Save(userInfo1);
    UserInfo userInfo2
    = new UserInfo()
    {
    UserId
    = "1002",
    UserName
    = "李四",
    PassWord
    = "123456",
    Detail
    = new Detail()
    {
    Address
    = "湖北",
    Age
    = 20,
    Email
    = "lisi@163.com"
    }
    };
    mongoCollection.Save(userInfo2);
    UserInfo userInfo3
    = new UserInfo()
    {
    UserId
    = "1003",
    UserName
    = "王五",
    PassWord
    = "123456",
    Detail
    = new Detail()
    {
    Address
    = "廣東",
    Age
    = 20,
    Email
    = "wangwu@163.com"
    }
    };
    mongoCollection.Save(userInfo3);
    UserInfo userInfo4
    = new UserInfo()
    {
    UserId
    = "1004",
    UserName
    = "趙六",
    PassWord
    = "123456",
    Detail
    = new Detail()
    {
    Address
    = "湖北"
    }
    };
    mongoCollection.Save(userInfo4);
    }


    當然上述的查詢和刪除的方法寫成如下所示也是可以的
        /// <summary>
    /// 刪除全部用戶信息
    /// </summary>
    public void DeleteAll()
    {
    mongoCollection.Remove(
    new Document { });
    }
        
    /// <summary>
    /// 插入一些數據
    /// </summary>
    public void InsertSomeData()
    {
    Document userInfo1
    = new Document();
    userInfo1[
    "UserId"] = "1001";
    userInfo1[
    "UserName"] = "張三";
    userInfo1[
    "PassWord"] = "123456";
    mongoCollection.Save(userInfo1);
    Document userInfo2
    = new Document();
    userInfo2[
    "UserId"] = "1002";
    userInfo2[
    "UserName"] = "李四";
    userInfo2[
    "PassWord"] = "123456";
    //子文檔
    var userInfo2Detail = new Document();
    userInfo2Detail[
    "Address"] = "湖北";
    userInfo2Detail[
    "Age"] = 20;
    userInfo2Detail[
    "Email"] = "lisi@163.com";
    userInfo2[
    "Detail"] = userInfo2Detail;
    mongoCollection.Save(userInfo2);
    Document userInfo3
    = new Document();
    userInfo3[
    "UserId"] = "1003";
    userInfo3[
    "UserName"] = "王五";
    userInfo3[
    "PassWord"] = "123456";
    var userInfo3Detail = new Document();
    userInfo3Detail[
    "Address"] = "廣東";
    userInfo3Detail[
    "Age"] = 20;
    userInfo3Detail[
    "Email"] = "wangwu@163.com";
    userInfo3[
    "Detail"] = userInfo3Detail;
    mongoCollection.Save(userInfo3);
    Document userInfo4
    = new Document();
    userInfo4[
    "UserId"] = "1004";
    userInfo4[
    "UserName"] = "趙六";
    userInfo4[
    "PassWord"] = "123456";
    var userInfo4Detail = new Document();
    userInfo4Detail[
    "Address"] = "湖北";
    userInfo4[
    "Detail"] = userInfo4Detail;
    mongoCollection.Save(userInfo4);
    }

    在控制臺main函數中的代碼如下所示:
     UserBLL userBll = new UserBLL();
    userBll.InsertSomeData();
    var users = userBll.Select();
    foreach (var user in users)
    {
    Console.WriteLine(user.UserName
    + "是湖北人");
    };
    userBll.DeleteAll();
    Console.ReadKey();

    運行的效果如圖所示:
    附加話外問題
    今天同學問我一個問題,在我看來我覺得太簡單不過了,都懶得理會他,結果拿到手上來一試居然沒解決。不知道有誰看到我這篇文章的高手能給我一點建議!
    言歸正傳,我同學需要限制文本框只能輸入中文,測試代碼如下所示:
    <input type="text" onchange="value = value.replace(/[^\u4E00-\u9FA5]/g, '') " />

    結果就是在所有瀏覽器里面都可以,唯獨谷歌不行,在谷歌中運行的效果就是只能輸入第一次中文,后面的中文就全部輸入不進去了,搞了老半天,在群里面也問過好些高手,都沒有給我一個最終方案。
    最后我只能經一位高手的指引建議我同學采用http://www.mathachew.com/sandbox/jquery-autotab/
    但是后來我同學覺得如果采用插件的方式的話,第一不知道是否可行,第二改動太大。我后來也忙,最后不了了之了。
    不知道在座的各位是否能夠幫忙解決一下。(心里這個好奇呀)
     
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(629)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:16
    • JS中的==轉換規則


    文章出處
     
    number類型與string類型比較,string會轉換為number類型
     '' == '0' //false
    0 == ''//true;
    0 == '0'//true
    ' \t\r\n '==0//true

     
    null和undefined類型比較始終相等
    null == undefined //true

     
    布爾類型與其它任何類型進行比較,布爾類型將會轉換為number類型
     false == 'false'//false
    false == '0'//true
    false == null//false
    null == undefined //true

     
    number類型或string類型與object類型進行比較,number或者string類型都會轉換為object類型
     var a = 0, b = {}; 
    a
    == b//false

     
    請始終使用===和!===
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(0)

    • 個人分類:生活學習
    ▲top
    • 3月 09 週四 201720:16
    • css3新增屬性API

    文章出處
    寫在前面:由于CSS5標準還未完全訂下來,所以各種內核的瀏覽器都有自己的標準,為了不使屬性混淆,所以各家在各自標準前加了一個前綴。
  • -moz-  主要是firefox火狐

  • -webikt-主要是chrome谷歌和Safari

  • -o-主要是用于蘋果機上的瀏覽器如Opera

  • 下面主要從顏色、文本、選擇器等方面來總結一下CSS3新增的屬性
    顏色
    css1和css2只能通過以下三種方式來表示顏色
  • 顏色名稱 

  •     eg:color:red
  • HEX方式

  •     (語法:#RRGGBB或#RGB   各點的取值范圍為00-FF)
  • RGB方式

  •     (語法:RGB(R,G,B)  各點的取值范圍為0~255或者0%~200%)
    css3針對上述模式不能表示透明,增加了如下表示方法
    RGBA模式
    語法:RGBA(R,G,B,A)     R紅色 G綠色 B藍色 A透明
    各點取值跟RGB類似   A的取值為0~1之間
    eg:rgba(255,0,0,0.5)表示半透明紅色
    HSL模式(色輪模式)
    語法:HSL(H,S,L)    H色調  S飽合度  L亮度
    H取值為0~360之間  其中0或者360表示紅色  120表示綠色 240表示藍色
    S和L取值都是0%到100%之間
    HSLA模式
    語法及各點取值跟HSL模式一下,唯一不同在于后面的A表示透明度
    eg:hsl(360,50%,50%,0.5) 紅色
     
    其次在css3中可以使用color:transparent和使用濾鏡filter:alpha(opacity=50)    (不過濾鏡僅僅限于IE)
    文本
    css1和css2當中常用的文本屬性有

    css3當中常用的文本屬性有

    下面分別來介紹一個css3文本屬性
    text-overflow屬性
    作用:設定內容溢出狀態下的文本處理方式。
    取值:
    clip: 默認值
      當對象內文本溢出時不顯示省略標記(...),而是將  溢出的部分裁切掉。
     ellipsis:
       當對象內文本溢出時顯示省略標記(...)。 
    注意:該屬性需要和over-flow:hidden屬性(超出處理)還有white-space:nowrap(禁止換行)配合使用,否則無法看到效果
    text-align屬性
    作用:設定文本對齊方式
    取值:
      left :默認值 內容左對齊。
      center:內容居中對齊。
      right: 內容右對齊。
      justify: 內容兩端對齊。寫本文檔時僅Firefox能看到正確效果
      start: 內容對齊開始邊界。(CSS3)
      end: 內容對齊結束邊界。(CSS3)
    text-transform屬性
    作用:設定文本的大小寫等形式的轉換
    取值:
      none:  默認值 無轉換
      capitalize:   將每個單詞的第一個字母轉換成大寫
      uppercase:  轉換成大寫
      lowercase:  轉換成小寫
        full-width:  將左右字符設為全角形式(CSS3)不支持
        full-size-kana:將所有小假名字符轉換為普通假名(CSS3)不支持         例如:土耳其語。
    text-decoration屬性
    作用:設定文本修飾線。
    取值:
    [ text-decoration-color]:不支持
      指定文本裝飾的顏色。
    [ text-decoration-line ]:不支持
       指定文本修飾線條的種類。相當于CSS1時的text-decoration屬性
    [ text-decoration-style ]:不支持
      指定文本裝飾的樣式。
     blink: 指定文字的裝飾是閃爍。  僅opera和firefox
    例如:text-decoration : overline   CSS1實例
    text-decoration : #F00 double overline   CSS3實例
    text-decoration-line屬性
    作用:設定文本修飾線的位置。
    取值:
    none:默認值
      指定文字無裝飾
    underline:
      指定文字的裝飾是下劃線
    overline:
      指定文字的裝飾是上劃線
    line-through:
      指定文字的裝飾是貫穿線
    text-decoration-color屬性
    作用:設定文本修飾線的顏色
    取值:指定顏色。
    text-decoration-style屬性
    作用:設定文本修飾線的樣式。
    取值:
  • solid:默認值   實線

  • double:雙線

  • dotted:點狀線條

  • dashed:  虛線

  • wavy:  波浪線

  • text-shadow屬性
    作用:設定文本的陰影效果
    取值:
    none:默認值  無陰影  
  • <length>第1個長度值用來設置對象的陰影水平偏移值。可以為負值

  • <length>第2個長度值用來設置對象的陰影垂直偏移值。可以為負值

  • <length> 如果提供了第3個長度值則用來設置對象的陰影模糊值。不允許負值 0:不模糊,10px:模糊程度10像素

  •  <color> 設置對象的陰影的顏色。

  •  
    text-fill-color屬性
    作用:文本填充顏色,指定文字填充部分的顏色
    取值: 顏色
    備注:使用該屬性需要使用瀏覽器似有前綴
    text-stroke屬性
    作用:文本邊框顏色,指定文字描邊部分的顏色
    取值:
  • [ text-stroke-width ]: 

  •     設置或檢索對象中的文字的描邊厚度
  • [ text-stroke-color ]:   

  •     設置或檢索對象中的文字的描邊顏色
    備注:使用該屬性需要使用瀏覽器似有前綴
    text-stroke-width屬性
    作用:指定文字描邊部分的寬度,text-stroke的派生屬性
    取值:長度
    備注:使用該屬性需要使用瀏覽器似有前綴
    text-stroke-color屬性
    作用:指定文字描邊部分的顏色,text-stroke的派生屬性
    取值:顏色
    備注:使用該屬性需要使用瀏覽器似有前綴
    tab-size屬性
    作用:設定一個tab縮進鍵,在頁面中的顯示長度。
    取值: 默認值:8  (長度或者整數值)
    解釋一下:整數值 : z-index:1  此處的1就是整數值,不需要單位,類似倍數。
         長度: margin:10px 此處的10px是長度值。
    注意:該屬性只在<pre>標簽之內(預格式化狀態)顯示才會有效。因為瀏覽器會自動忽略空白字符。

         opera和火狐瀏覽器需要使用瀏覽器私有前綴。

    word-wrap屬性
    作用:溢出文本(特指類英文文字)的處理方式。
    取值:
  • normal: 默認值 

  •     允許內容頂開或溢出指定的容器邊界。
  • break-word: 內容將在邊界內換行。

  •     如果需要,單詞內部允許斷行。
    選擇器
    元素選擇器
    關系選擇器
    偽類選擇器
    屬性選擇器
    偽對象選擇器
     css1和css2
    css1&css2元素選擇器

    css1&css2關系選擇器

    css1&css2偽類選擇器

    css1&css2屬性選擇器

    css1&css2偽對象選擇器

    css3關系選擇器

    css3偽類選擇器

    css3屬性選擇器

    css3偽對象選擇器

     
    (繼續閱讀...)
    文章標籤

    AutoPoster 發表在 痞客邦 留言(0) 人氣(2)

    • 個人分類:生活學習
    ▲top
    «1...282930230»

    pop-under

    參觀人氣

    • 本日人氣:
    • 累積人氣:

    線上人數

    Marquee

    最新文章

    • 文章列表
    • jvm系列(四):jvm調優-命令大全(jps jstat jmap jhat jstack jinfo)
    • spring boot(一):入門篇
    • jvm系列(一):java類的加載機制
    • jvm系列(三):java GC算法 垃圾收集器
    • spring boot 實戰:我們的第一款開源軟件
    • jvm系列(六):jvm調優-從eclipse開始
    • 混合應用技術選型
    • jvm系列(二):JVM內存結構
    • spring boot(五):spring data jpa的使用

    熱門文章

    • (1,764)jQuery之前端國際化jQuery.i18n.properties
    • (630)技術筆記:Indy控件發送郵件
    • (516)linux下安裝sqlite3
    • (501)學習筆記: Delphi之線程類TThread
    • (242)VC單選按鈕控件(Radio Button)用法(轉)
    • (104)單條件和多條件查詢
    • (51)淺談config文件的使用
    • (28)windows下cvsnt的配置(全)
    • (26)Tomcat shutdown執行后無法退出進程問題排查及解決
    • (22)基于 Asp.Net的 Comet 技術解析

    文章分類

    • 生活學習 (2,296)
    • 未分類文章 (1)

    最新留言

    • [20/04/24] 我是女生想約炮 有男生願意給我溫暖的嗎?我賴是woyou58 於文章「(1)從底層設計,探討插件式GIS框架的...」留言:
      我叫黎兒女生最近內心掙扎著要不要約炮我的line:woy...

    文章搜尋

    文章精選

    誰來我家

    Live Traffic Feed