Summer fashion styles in Southern California are all about sun
miranda lambert weight loss Benz Fashion Week announces show schedule for the Fall
christina aguilera weight lossItalian Olympics 2012 team swathed in Armani
Summer fashion styles in Southern California are all about sun
miranda lambert weight loss Benz Fashion Week announces show schedule for the Fall
1:先封装一个微信支付类weixin.php
<?php /** * * 微信api基础类 * */ class Weixin{ public $app_id=''; public $app_secret=''; public $partnerid = ''; public $paySignKey = ''; public $partnerKey =''; public function __construct() { $this->app_id = "XXXXXXXX"; $this->app_secret = "XXXXXXXX"; $this->partnerid = "XXXXXXXX"; $this->paySignKey = "XXXXXXXX"; $this->partnerKey = "XXXXXXXX"; } public function open($api_url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $ret = curl_exec($ch); $error = curl_error($ch); if($error){ return false; } $json = json_decode($ret, TRUE); return $json; } public function post($api_url,$data){ $context = array('http' => array('method' => "POST", 'header' => "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) \r\n Accept: */*", 'content' => $data)); $stream_context = stream_context_create($context); $ret = @file_get_contents($api_url, FALSE, $stream_context); return json_decode($ret, true); } /** * 获取access token * @return array */ public function access_token($cache=true){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->app_id&secret=$this->app_secret"; $access_token = ''; $cachefile = "./token.txt"; if ( file_exists($cachefile) && $cache ){ $access_token = file_get_contents($cachefile); return $access_token; } try{ $ret = $this->open($url); @unlink($cachefile); file_put_contents($cachefile,$ret['access_token'],FILE_APPEND ); return $ret['access_token']; }catch(Exception $e){ return ''; } } /** * 除去数组中的空值和签名参数 * @param $para 签名参数组 * return 去掉空值与签名参数后的新签名参数组 */ public function parafilter($para) { $para_filter = array(); foreach ($para as $key => $val ) { if($key == "sign_method" || $key == "sign" ||$val == "")continue; else $para_filter[$key] = $para[$key]; } return $para_filter; } /** * 对数组排序 * @param $para 排序前的数组 * return 排序后的数组 */ public function argsort($para) { ksort($para); reset($para); return $para; } /** * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 * @param $para 需要拼接的数组 * return 拼接完成以后的字符串 */ public function createlinkstring($para) { $arg = ""; foreach ($para as $key => $val ) { $arg.=strtolower($key)."=".$val."&"; } //去掉最后一个&字符 $arg = substr($arg,0,count($arg)-2); //如果存在转义字符,那么去掉转义 if(get_magic_quotes_gpc()){$arg = stripslashes($arg);} return $arg; } /** * 创建app_signature * @return string */ public function create_app_signature( $arr ){ $para = $this->parafilter($arr); $para = $this->argsort($para); $signValue = sha1($this->createlinkstring($para)); return $signValue; } /** * 创建sign * @return string */ public function create_sign( $arr ){ $para = $this->parafilter($arr); $para = $this->argsort($para); $signValue = $this->createlinkstring($para); $signValue = $signValue."&key=".$this->partnerKey; $signValue = strtoupper(md5($signValue)); return $signValue; } /** * 获取用户基本信息 * @return array */ public function user_info($openid){ $ret = $this->open("https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token()."&openid=$openid&lang=zh_CN"); if ( in_array($ret['errcode'],array(40001,40002,42001)) ){ $this->access_token(false); return $this->user_info($openid); } return $ret; } /** * 标记客户的投诉处理状态 * @return bool */ public function payfeedback_update($openid,$feedbackid){ $url = "https://api.weixin.qq.com/payfeedback/update?access_token=".$this->access_token()."&openid=".$openid."&feedbackid=".$feedbackid; $ret = $this->open($url); if ( in_array($ret['errcode'],array(40001,40002,42001)) ){ $this->access_token(false); return $this->payfeedback_update($openid,$feedbackid); } return $ret; } /** * 发货通知 * * openid 购买用户的 OpenId,这个已经放在最终支付结果通知的 PostData 里了 * transid 交易单号 * out_trade_no 第三方订单号 * deliver_timestamp 发货时间戳 * deliver_status 发货状态 1:成功 0:失败 * deliver_msg 发货状态信息 * */ public function delivernotify($openid,$transid,$out_trade_no,$deliver_status=1,$deliver_msg='ok'){ $post = array(); $post['appid'] = $this->app_id; $post['appkey'] = $this->paySignKey; $post['openid'] = $openid; $post['transid'] = $transid; $post['out_trade_no'] = $out_trade_no; $post['deliver_timestamp'] = time(); $post['deliver_status'] = $deliver_status; $post['deliver_msg'] = $deliver_msg; $post['app_signature'] = $this->create_app_signature($post); $post['sign_method'] = "SHA1"; $data = json_encode($post); $url = 'https://api.weixin.qq.com/pay/delivernotify?access_token=' . $this->access_token(); $ret = $this->post($url,$data); if ( in_array($ret['errcode'],array(40001,40002,42001)) ){ $this->access_token(false); return $this->delivernotify($openid,$transid,$out_trade_no,$deliver_status,$deliver_msg); } return $ret; } /** * 订单查询 * @return array */ public function order_query($out_trade_no){ $post = array(); $post['appid'] = $this->app_id; $sign = $this->create_sign(array('out_trade_no' => $out_trade_no , 'partner' => $this->partnerid )); $post['package'] = "out_trade_no=$out_trade_no&partner=".$this->partnerid."&sign=$sign"; $post['timestamp'] = time(); $post['app_signature'] = $this->create_app_signature(array('appid' => $this->app_id , 'appkey' => $this->paySignKey , 'package' => $post['package'] , 'timestamp' => $post['timestamp'] )); $post['sign_method'] = "SHA1"; $data = json_encode($post); $url = 'https://api.weixin.qq.com/pay/orderquery?access_token=' . $this->access_token(); $ret = $this->post($url,$data); if ( in_array($ret['errcode'],array(40001,40002,42001)) ){ $this->access_token(false); return $this->order_query($out_trade_no); } return $ret; } /** * 构建支付请求数组 * @return array */ public function bulidForm($parameter){ $parameter['package'] = $this->buildPackage($parameter); // 生成订单package $paySignArray = array('appid' => $this->app_id, 'appkey' => $this->paySignKey ,'noncestr' => $parameter['noncestr'], 'package' => $parameter['package'], 'timestamp' => $parameter['timestamp']); $parameter['paysign'] = $this->create_app_signature($paySignArray); return $parameter; } /** * 构建支付请求包 * @return string */ public function buildPackage($parameter){ $filter = array('bank_type', 'body', 'attach', 'partner', 'out_trade_no', 'total_fee', 'fee_type', 'notify_url','spbill_create_ip', 'time_start', 'time_expire', 'transport_fee', 'product_fee', 'goods_tag', 'input_charset'); $base = array( 'bank_type' => 'WX', 'fee_type' => '1', 'input_charset' => 'UTF-8', 'partner' => $this->partnerid ); $parameter = array_merge($parameter, $base); $array = array(); foreach ($parameter as $k => $v) { if (in_array($k, $filter)) { $array[$k] = $v; } } ksort($array); $signPars = ''; reset($array); foreach ($array as $k => $v) { $signPars .= strtolower($k) . "=" . $v . "&"; } $sign = strtoupper(md5($signPars . 'key=' . $this->partnerKey)); $signPars = ''; reset($array); foreach ($array as $k => $v) { $signPars .= strtolower($k) . "=" . urlencode($v) . "&"; } return $signPars . 'sign=' . $sign; } /** * 从xml中获取数组 * @return array */ public function getXmlArray() { $postStr = @file_get_contents('php://input'); if ($postStr) { $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); if (! is_object($postObj)) { return false; } $array = json_decode(json_encode($postObj), true); // xml对象转数组 return array_change_key_case($array, CASE_LOWER); // 所有键小写 } else { return false; } } /** * 验证服务器通知 * @param array $data * @return array */ public function verifyNotify($post,$sign) { $para = $this->parafilter($post); $para = $this->argsort($para); $signValue = $this->createlinkstring($para); $signValue = $signValue."&key=".$this->partnerKey; $signValue = strtoupper(md5($signValue)); if ( $sign == $signValue ){ return true; }else{ return false; } } /** * 是否支持微信支付 * @return bool */ public function is_show_pay($agent) { $ag1 = strstr($agent,"MicroMessenger"); $ag2 = explode("/",$ag1); $ver = floatval($ag2[1]); if ( $ver < 5.0 || empty($aid) ){ return false; }else{ return true; } } }
2:支付实例pay.php
<?php include 'weixin.php'; $weixin = new Weixin(); $data = array( 'timestamp' => time(), // 位时间戳 'noncestr' => md5(uniqid(time(),true)), // 随机字符串 'body' => 'test', // 商品描述 'out_trade_no' => time().rand(111111,999999), // 本站订单号 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], // 微信用户IP 'total_fee' => 1, // 支付金额 单位:分 ); $data += $weixin->bulidForm($data); $data['appId'] = $weixin->app_id; $data['partnerid'] = $weixin->partnerid; $data['partnerKey'] = $weixin->partnerKey; $data['paySignKey'] = $weixin->paySignKey; $data['successUrl'] = 'http://www.xxx.com/successurl'; ?> <!DOCTYPE html> <html> <head> <title>支付测试</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <meta id="viewport" name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1; user-scalable=no;" /> <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script> <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js"></script> <script Language="javascript"> //以下是package组包过程: var oldPackageString;//记住package,方便最后进行整体签名时取用 function getPackage() { var banktype = "WX"; var body = '<?= $data['body'] ?>';//商品名称信息,这里由测试网页填入。 var fee_type = "1";//费用类型,这里1为默认的人民币 var input_charset = "UTF-8";//字符集,这里将统一使用GBK var notify_url = "http://www.xxx.com/notify.php";//支付成功后将通知该地址 var out_trade_no = "<?= $data['out_trade_no'] ?>";//订单号,商户需要保证该字段对于本商户的唯一性 var partner = "<?= $data['partnerid'] ?>";//测试商户号 var spbill_create_ip = "<?= $data['spbill_create_ip'] ?>";//用户浏览器的ip,这个需要在前端获取。这里使用127.0.0.1测试值 var total_fee = "<?= $data['total_fee'] ?>";//总金额。 var partnerKey = "<?= $data['partnerKey'] ?>";//这个值和以上其他值不一样是:签名需要它,而最后组成的传输字符串不能含有它。这个key是需要商户好好保存的。 //首先第一步:对原串进行签名,注意这里不要对任何字段进行编码。这里是将参数按照key=value进行字典排序后组成下面的字符串,在这个字符串最后拼接上key=XXXX。由于这里的字段固定,因此只需要按照这个顺序进行排序即可。 var signString = "bank_type="+banktype+"&body="+body+"&fee_type="+fee_type+"&input_charset="+input_charset+"¬ify_url="+notify_url+"&out_trade_no="+out_trade_no+"&partner="+partner+"&spbill_create_ip="+spbill_create_ip+"&total_fee="+total_fee+"&key="+partnerKey; var md5SignValue = ("" + CryptoJS.MD5(signString)).toUpperCase(); //然后第二步,对每个参数进行url转码,如果您的程序是用js,那么需要使用encodeURIComponent函数进行编码。 banktype = encodeURIComponent(banktype); body=encodeURIComponent(body); fee_type=encodeURIComponent(fee_type); input_charset = encodeURIComponent(input_charset); notify_url = encodeURIComponent(notify_url); out_trade_no = encodeURIComponent(out_trade_no); partner = encodeURIComponent(partner); spbill_create_ip = encodeURIComponent(spbill_create_ip); total_fee = encodeURIComponent(total_fee); //然后进行最后一步,这里按照key=value除了sign外进行字典序排序后组成下列的字符串,最后再串接sign=value var completeString = "bank_type="+banktype+"&body="+body+"&fee_type="+fee_type+"&input_charset="+input_charset+"¬ify_url="+notify_url+"&out_trade_no="+out_trade_no+"&partner="+partner+"&spbill_create_ip="+spbill_create_ip+"&total_fee="+total_fee; completeString = completeString + "&sign="+md5SignValue; oldPackageString = completeString;//记住package,方便最后进行整体签名时取用 return completeString; } function getSign() { var app_id = '<?= $data['appId'] ?>'; var app_key = '<?= $data['paySignKey'] ?>'; var nonce_str = '<?= $data['noncestr'] ?>'; var package_string = oldPackageString; var time_stamp = '<?= $data['timestamp'] ?>'; //第一步,对所有需要传入的参数加上appkey作一次key=value字典序的排序 var keyvaluestring = "appid="+app_id+"&appkey="+app_key+"&noncestr="+nonce_str+"&package="+package_string+"×tamp="+time_stamp; sign = CryptoJS.SHA1(keyvaluestring).toString(); return sign; } // 当微信内置浏览器完成内部初始化后会触发WeixinJSBridgeReady事件。 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge.invoke('getBrandWCPayRequest',{ "appId" : '<?= $data['appId'] ?>', "timeStamp" : '<?=$data['timestamp'] ?>', //时间戳 "nonceStr" : '<?= $data['timestamp'] ?>', //随机串 "package" : getPackage(),//扩展包 "signType" : 'SHA1', //微信签名方式: "paySign" : getSign() //微信签名 },function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ) { window.location.href = '<?= $data['successUrl'] ?>'; }else{ window.location.href = 'http://www.xxx.com'; } }); }, false) </script> </head> <body> </body> </html>
3:通知回调notify.php
<?php include 'weixin.php'; $weixin = new Weixin(); $xml = $this->weixin->getXmlArray(); $openid = $xml['openid']; $out_trade_no = $_GET['out_trade_no']; $trade_no = $_GET['transaction_id']; $trade_status = $_GET['trade_state']; $isweixin = $weixin->verifyNotify($_GET,$_GET['sign']); if ( $isweixin ){ if( $trade_status == 0 ) { //支付成功 $delivernotify = $weixin->delivernotify($openid,$trade_no,$out_trade_no); //发货 //业务处理 echo "success"; }else{ echo "fail"; } }else{ echo "不是微信回调"; }
以上是基本的支付回流,另外维权数据获取和维权订单更新。参照上面直接调用类中的相应方法即可。
如在过程中遇到问题,随时交流.qq:124960772
with models showing off your work on the catwalk
weight loss tips A Bit Of History About Military Camouflage Clothing
job list within the layout assistant
snooki weight loss Wholesale Fashion Clothing And Latest Industry Trends This Year
废话少说,直接贴代码
<?php /* &cht=qr 这是说图表类型为qr也就是二维码 &chs=200×200 这是说生成图片尺寸为200×200,是宽x高 &choe=UTF-8 这是说内容的编码格式为UTF-8,此值默认为UTF-8 &chld=L|4 L代表默认纠错水平; 4代表二维码边界空白大小,可自行调节 &chl=XXXX 这是QR内容,也就是解码后看到的信息。包含中文时请使用UTF-8编码汉字,否则将出现问题 */ $url = urlencode("http://www.baidu.com"); $imgdata="http://chart.apis.google.com/chart?chs=400x400&cht=qr&chld=L|0&chl=".$url; echo "<img src='$imgdata'>";
详细文档见:https://developers.google.com/chart/infographics/docs/qr_codes
This tip on men fashion will certainly save a lot of money
gay porn Timberland boots for autumn and winter become popular
陈锋:在佛法和企业之间游移
整个下午,我都在和陈锋辩论,他是有过深刻思考和体验的,而我追问但姿态,也毫不客气,一步步把他逼到无话可说。到后来,我们就停下来了。没有输赢,只有交流。
民族文化情结
苏小和:今天想向您请教的最大的主题,就是佛教与现代企业之间的关系。马克思韦伯讲基督教与商业的关系。我们也有儒学、儒家与商业的关系。佛教与商业的关系,很少有人做研究,请陈总给我们讲讲。
陈峰:首先,我得更正一下,我从来没讲佛教与企业管理的关系,第二,我也没有资格,本身就没有弄懂,也没有到悟道的境界。我讲的是中国文化。
中国文化凝聚了人类最优秀的思想精华,经过两千多年甚至更长时间,到今天演变为三大传承——儒释道三家。研究中国文化就不得不研究佛法——不是佛教——佛法和中国文化的相互融合。三大家在认识世界、认识生命自身和在世间为众生做事上已经融为一体。他们说我学佛,实际我是学中国文化。儒家思想、佛法思想、道家思想,这三种构成中国文化的核心内容,我都在采求。
今天,物质文明和科技文明带来人类的精神极度匮乏,人类需要重新找回自己的精神价值。在这种情况下,人类必须重新建立新的商业文明。在人类建构新的价值观和世界观、人生观的过程中,中国文化具有极大的价值,它是造福于人类的重要思想。它将再一次重塑中国的光辉形象。作为中国人,有幸能在历史长河中找到自己民族的根,找到民族将来自立于世界民族的精神境界。
人类现在面临着自然、社会和生命本身的巨大的烦恼。人类在穷凶极恶地开发地球资源,已经受到大自然的报复。一百多年来,咱们被几种思潮所左右,一个是达尔文生物进化论,物竞天择,充满竞争。达尔文只讲了竞争。竞争与和谐的共存才是一个完整的。人类光用了竞争,感到非常疲倦、非常烦恼。第二,凯恩斯经济理论,消费刺激生产,高消费、超前消费、负债消费,总有一天走不下去。人类必须走环境保护型,环境友好型、资源节约型道路。要正确对待人类与自然的关系,人类与社会的关系。
今天的社会动荡不堪,国家与国家、民族与民族、宗教与宗教的矛盾就是不同文化的冲突。只有中国文化中的“和而不同”——相互交融、相互尊敬和相互理解,共同发展——是今天和谐人类社会的重要理念,人类社会的国家矛盾、宗教矛盾需要和而不同,和谐共存。
在我看,今天人类的智慧跟我们祖先比,远远赶不上。我们应该从人类的优秀文化当中,学习这些智慧,重新审视人类走到今天出现的问题,使人类回到一个正确的轨道上。
我认为今天真正有知识、有智慧、称得上中国知识分子的人,应该把心放下来,在中国文化和人类的文化当中剔除糟粕,吸取人类一切的优秀文化,来打造自己的民族文化精神。今天是一个重塑人类优秀文化的时代,中国人肩负着历史的责任。
包容精神
苏小和:有一种说法,陈总是海航是精神教父,海航日常的企业管理、战略是王总在做。
陈峰:我们的王健董事长是很有智慧的人,对海航发展发挥了极为的作用,没有他就没有海航的今天。不仅是他,还有其他的同事,我们的高层管理干部,海航的发展是一个集体的作用,海航的成功是一个集体的成功。海航的战略是集体在不同时期而创造的,每个人都在发挥他自己的作用,海航的舞台使每个人的长处发挥得淋漓尽致。我们的文化使一切有智慧、有能力的人能够导演出很多,演出很多可歌可泣的一些壮丽的篇章来。
苏小和:如果您没有丰富的文化背景和佛法的背景,在海航这样的一个公司,会不会有这么平稳的公司治理结构?您没有跟王总之间构成一种非常险恶的那种公司政治文化,与您的个性、您的文化趣味有关系吗?
陈峰:应该归同于中国文化力量,使我在不断地改造自身,不断追求修身齐家治国平天下,加上王总和其他干部员工对我的包容,大家在海航事业发展中共同进步,才构成和谐文化。
王总也好,其他董事局成员也好,其他干部也好,他们干的事我都干不了,他们本事都比我大。我站在一个欣赏的眼光,看到他们的本事比我大,我由衷地高兴。当遇到问题的时候,我担待,舜帝讲:朕躬有罪,无以万方!万方有罪,罪在朕躬。有成绩了,大家的,有问题了,是我一把手的责任。你要按照这个政治道德来做事,天下无事。你以欣赏别人好、别人做的比你好,而向人学习的态度,那你这个事业就会做好。
海航员工同仁共勉十条里面,第一句话叫团体和睦为兴盛,兴盛的事业不是你董事长的本事多大,而是和睦,主要领导者要修炼自身,要有包容的态度。包容就要修炼自己,克服自己,把自己的我放下,给大家创造一个空间。使别人活得好,替他高兴,事业才能兴旺。这是修养问题。
海航二十年,第二代人产生了,几个三十几岁、四十几岁进入董事局成员,当了总裁CEO,他们干得比我还好,我真心相信他们,支持他们,放手让他们去,最多给点指导。如果搞坏了,那他的命。你改不了人家的命,你只能改造自己。
英雄在于征服世界,圣贤在于征服自己。我向圣贤学习,以一个征服自己的心态,以美好的眼光和光明的心态看待别人。你用什么样的心境看世界,这个世界就是什么境界。你看别人佛,你就是佛,你看别人是好人,你就是好人。你老看别人是坏人,你首先你心就有问题。我的存在价值就是给别人带来利益,此外没我,我是一个念头。以无常的心态看这个世界,把心境放在智慧的境界。古人讲以德养身,以诚养心,以人养天下万物,以道养天下万世,留给人们真正有智慧的文化,人类才能不断地找到自己生存之道。
佛法思想
苏小和:谈谈您跟南怀瑾先生这些年的一些交往。
陈峰:南怀瑾先生是我进入中国文化的导师、引路人。
在我看来,南怀瑾先生是三教法主,百家门师,他是中国文化几百年来的一个集大成者。他把几家融为一体,把难懂的中国文化用通俗的语言讲出来,叫深者不觉其浅,浅者不觉其深,可谓当代的摩罗石。
我在南怀瑾先生那得到了很多启发,读他的书能够认识中国文化。在读他著作过程中,我有幸逐步能够读佛经和中国儒家文化的一些原文。如1500多年以前玄奘法师翻译的著作原文,中国老子的《道德经》。
我还得益于一些禅宗包括秘宗大师的指点,也有接触藏传佛教萨迦派的一些高僧。通过他们认识了佛法,认识了佛法修行这种非常重要的宝贵智慧。但我不是他们的佛教弟子,我是研究中国文化。
在我看来,佛法根本不是宗教。它似宗教非宗教,它是一个生命科学和认知科学。《唯识论》是今天一切哲学的鼻祖,这种哲学的概念超过哲学。他讲人的心是由八部分组成,这种深奥的认知科学和生命科学,是人类的宝藏。简单把佛法说成一种宗教,一种迷信,不是科学的态度。
苏小和:释迦牟尼曾经说,我不是神,而且佛教或者佛法是无神论的信仰或者是宗教。
陈峰:当时他出世就是破掉无神论,他讲求平等,破掉迷信,他是一个大改革家。
苏小和:以您的企业,您的人生阅历,您觉得佛法有没有一个终极答案?我们知道普世价值或者终极价值,在这个问题上您有思考吗?
陈峰:要了解佛法真正价值是你自心对生命的认知,因为一切为心所造。真正悟道,能够深明宇宙本体,你就会得到解脱。它的解脱不是有形的解脱,叫“是法住法位,世间相常住”。按佛法的解释,所有有形世界全是虚妄的,全都是业力所为,包括山河大地。这种情况下,一切有形的东西均是“成、住、坏、空”,什么东西没有,不生不死的,就是它的神石如来藏。这神石由业力所为,创造了如梦幻的各种世间景象。当你自己真正把世间景象修干净了、清静了,就没有轮回和涅磐的区别。这是一个很了不得的事。本来这个世界就没有来没有走,走的都是你的心,都是你内心的觉知。如果内心觉知,你不会发现这世界存在。所以心的觉知从对心的认识到心的解脱,就是修行的过程和终结。
苏小和:您提到人的生命、人的心,有一个很简单的或者是很深刻的问题,人从哪儿来呢?
陈峰:佛法里解释,一念无明,一念无明以后就产生了业力,产生了念头,产生了男女,产生了性欲,产生了十二姻缘,等等等等。这是一个完整的科学。人的生命中分为六道,上三道天道、阿修罗道、人道,下三道畜生道、饿鬼道、地狱道。业力不同,果报就不同。只有人道可以有苦乐兼伴,可能解脱这个道。畜生道愚钝没法修,地狱道、饿鬼道太苦,天道太好,也没法修。人生最大价值是能够借人身,在世间实现人的修养,达到生的解脱。这个是一个完整的理论和实践的科学,一分努力一分收获,跟次第一样,是一个完整的体系。
要学这个,得有福报。有四句话来讲,叫人身难得,中土难生,名师难遇,佛法难闻。
人身难得。如大海盲龟,大海有一个乌龟是瞎子,在大海里游来游去,一百年游到上头,找一个木头,木头有一个洞钻过去,才能成人,在六道转来转去,能转到人身是很难得的事。
中土难生。生在没有佛入世,没有文化的地,那你白生了。
名师难遇,你学半天,没有法途,没人教你,也不行。
佛法难闻,没资粮更不行,就是碰到你面上,讲你,你也不听,你没这福报。
人身难得今已得,中土难生今已生,名师难遇名师遇,佛法难闻今已闻。这个需要有自己的资粮福报。
所以人生能够把自己有限的生命,做有利于提高自己人生境界的事,能够让自己造福于社会,造福于他人,能够使其生命放出光,放出热;因为你的存在能够给天下社会众生,哪怕有缘的朋友带来点好处,这就是你的价值。
这是一个非常重要的理念,我不喝酒、不抽烟、不吃肉,不吃鱼,生活极简单。人类想要的太多,真正用的没那么多。人生只要有智慧地认识人生,使自己人生时间非常有效地利用,就是最大的智慧和最大的价值。
苏小和:您讲佛法的时候,提到它是一个科学,一个系统。亚里士多德有一个学科叫形而上学,有形而上学,一定有形而下。人从哪里来、到哪里去,对生命的死,您觉得佛法能够提供一个清晰的答案吗?
陈峰:能。答案不仅清晰,而且完整。在你的生活、人生当中步步体现。你修一个层次就是一个体现。比如,在社会对任何事情,以他人的快乐为自己的一切出发点,这就是普世道。修炼中,你会发现你很健康。另外对世间的事一切都明白,叫预知未来。股票下跌的时候,你提前把它卖了,跌到最低股,你知道明天要上来,你就介入了,这种智慧可以说是超智慧。觉知能用在人生的点点滴滴当中。
很多人理上明白,没有实修境界。佛法里讲念止则吸止,念和呼吸是连着的,念头没有,呼吸一定没有。息遍全身,当念头没有,呼吸是全身,还在呼吸。这大健康,天地相往来的境界就到了,你自己可以知道。每一步都有一步的境界,没有实修不知道而已。现在很多人是口头禅,口头禅到生死关头一点用没有。必须要实修,有实修就有方法。
苏小和:这样的解释,这个系统有没有放大人的可能性,或者说放大人的力量,过高的估计人的力量?
陈峰:不存在过高,心的力量很大,大的跟虚空皆为一致的时候,大的不得了。这个世界全是人心造的。大家都造一件事就共业了。今天人类社会发展的问题是人类共业所致,不简单是某一个人的错误。所以我认为教化人心行善,全体人民都善念善行的时候,这个社会一定很美好。每一个人只把自己的事管好,这个世界一定会很好。
苏小和:公司这么大,一定有所谓的公司政治。在体制和非体制、公司人员之间,在传统文化和你的个人趣味之间,您觉得累吗?
陈峰:累是念头。你发现这个念头是空着的话,一切都无所谓了。化烦恼为菩提。所谓累就是烦恼,天下事无时无刻不有烦恼,关键是能不能管住对待烦恼的心,如果你以放下的态度,一个看空的态度,这烦恼自然就无所谓了。所谓烦恼就是执着,世界事没有不变的,念头随时在变。如果你能看透这个,烦恼来了一下就没了,烟消云散。
忏悔实际是一种对自身的反思,任何宗教、任何文化,都有对自身的反省。一个人生来有很多缺点,业力带来的很多毛病。只有反思,不断地修正自己的行为和错误,使自己变得纯粹、变得真诚、变得向善,变得更加有爱心。世间那些阴暗的想法自己化掉,这是一个心灵净化的过程。叫忏悔也好,叫反思也好,叫改造自身也好,叫不断提升自己也好,都是心灵的启迪和活动。这是需要的,如果人没有反思自己的话,这个人不可教,没法进步,这个社会也不可能进步。所以我倡导人们好好反思。
苏小和:著名的修佛者李叔同有一幅书法叫悲欣交集。我看到这四个字,有一种悲伤在,您怎么看?
陈峰:在菩萨看我们这个世界是挺悲哀的,人生苦太多。你我都在火宅里边,不觉其危险,不觉其苦。李法师悟道,临走的时候悲辛交集,自有他自己的大悲之心和解脱以后的看待众生的悲勉之心。我们凡夫境界是看不懂,悲心没到那儿。释迦牟尼佛告诉地藏菩萨,地狱不进誓不成佛,多大的牺牲精神。众生连改一点习惯都很难,活在习惯里,众生太顽劣,理解不了真正圣人们和大菩萨的境界。我们以他为榜样,熏习自己的慈悲之心,使自己的人生改变,获得一个有意义的人生,使自己的生命境界经过多世的累积,发出它的自性光芒来。
苏小和:乔布斯对中国的禅宗有兴趣,他的苹果发展不错。索罗斯是一个犹太人,传统意义上的基督徒,您对中国文化有整体性了解。在这样的比较当中,您最认可哪一种?
陈峰:我认为理到极处都一样,圣人的境界,此心此景完全一致,只是表达形式不同。西方人太自私,所以要给它平等、博爱,西方人文化没那么厚重,信上帝就行了,至心一处,一个境界就行了。人类的文明都是一个地出来的。
苏小和:就是所谓大道至简。您是不是把我们这个具体的人抬得有点高了?康德说过一句话,他是两个东西,一个是头上的星空,一个是心里的道德律。
陈峰:我问你,什么是人?人由两部分组成,有形的和无形的,心理的和生理的,两者相互影响。按佛法观点,人投胎的时候叫神石,也叫灵魂。精子、卵子相接的瞬间,跟它有缘的那个神石在虚拟当中进来,三样东西构成了生命体。这神石就带着过去的业力、所有的好与坏、一生运程,每7天发育一次,10个月怀胎结束,从妈妈肚子里出来。挖掉嘴里的胎毒,哇的一声吸进人间第一口气,叫尝阳气。母体里婴儿是不呼吸的,他靠脐带连着,在羊水里泡着,靠液曝气推动。推动这个生命种子进来,这叫种子气,这个气更来自于宇宙轻生不灭的动力。人吸进了一口气,一见气迅速长大。人到死的时候,这口气吐完。人就活在这个鼻息之间。人死的时候,呼吸先没有。佛法里呼吸叫风大。风大一没有,温度就没有了,温度叫火大,火没有了的时候,水也没有了。接着肉和骨头腐烂,欢虚空,四大分离,没有了。神石在七七49天,最后离开。神石在虚空当中,有一个中阴身,中阴身只有无形没有人身,7天生死一次,7天当中去投胎。人就复而往之。当你知道生命的构成以后,你就会知道他的一来一往。
有的小孩儿,父母没那个习惯,他有那习惯;双胞胎一样的生活环境,有不同的习惯。这是业力的习性。
苏小和:陈峰是谁?
陈峰:我,本人名陈峰,本来就这么一个东西,任命给这个名,我这个名不存在的。
苏小和:陈峰从哪里来?
陈峰:从虚空业力而来,本来就是如梦如幻。
苏小和:虚空从哪儿来?
陈峰:虚空本来就是一个没有边际的一个宇宙本体来的,这个宇宙本体的动力产生了云眼无明。
苏小和:宇宙本体的东西从哪儿来?
陈峰:不知道。
苏小和:是神秘主义吗?
陈峰:不是,现实主义。本身就大的那种能量,虚空当中所有能量全在这里。
苏小和:陈峰到哪儿去?
陈峰:看我自己的修行造化。如果修行造化好,说不定下一次自己能够挣个果位,挣个一二三四,不过来世一定会来的,来什么形,根据众生的需要和我自身的发愿。
苏小和:索罗斯致力于整个人类文明的民主、法制、宪政和市场的开放,比尔盖茨夫妇做慈善基金,治理全球范围的人类疾病。您在这方面的追求是什么?
陈峰:我不像他们那么具体,无论他做什么,发心正确,有智慧都是值得尊敬的。我就是借我有生的机缘,实现自己存在,为社会众生做点事,在社会生活中提升自己的修养,足已。我没那么大的抱负。我觉得自己如履薄冰,在自己的岗位上,能够维持到现在就不错。我做梦都没想到企业做这么大。我发现王董事长,一些年轻人都是很了不起的人物,海航就是创造了一个无数优秀人物的舞台,造福于天下的众生,除此之外没有任何意义。
佛眼看中国
苏小和:佛教或者佛法是外来的,跟中国文化完整地整合在一起,成为中国文化的传统的一部分。中国文化、儒家文化在某种意义上是开放的,是包容的,现代企业制度也是一个外来事物,结合您的人生经历,您认为这之间有没有一种逻辑上的同构性?
陈峰:有。两三千历史中,中国曾经有近一千年引领世界,到乾隆年间成为世界最富、最强大的帝国,GDP占了全世界的四分之一。从乾隆以后开始衰落,一百多年历史,到今天再次复兴。我认为今天中国能够再一次复兴,有四个原因。
一是它的国土面积,明代以后构成中国多民族、多文化的辽阔疆土,构成了东西南北这种发展的腹地和梯次。欧洲国家都是一个小小的单元,大则不过几千万,小则不过几百万,它的结构无法形成完整的力量。
二是人口众多。人口在没过基本温饱以前是包袱。过了基本温饱,两个效应出来了。一个是消费,中国人成了拉动全球消费的重要力量。二个是人口素质提高,中国人才走向全世界,为世界做出很大贡献。
三是数千年不中断的历史,给国家和民族带来了巨大的政治文化。在中国社会政治结构的发展中,这种文化历史、这种智慧帮助这个民族找到正确的发展道路。
四是文化。中国文化之所以悠久,带来这么多智慧,是因为它的包容。中国文化最大的力量是包容,吸取人类一切优秀文化成果,不断地更新自己。
我归纳中国文化三个基本特点:其一,天人合一,回答了人与自然的关系,正确的处理人与自然的关系,这对解决今天人与环境的问题,具有重大的指导思想。第二,和而不同,包容不同的人与社会、不同民族的这种智慧。第三,追求生命智力的境界,从哪儿来到哪儿去,中国的佛家思想、道家思想都回答了,方法都告诉你了,只要照着做一定有效果。
中国文化将重振它的历史的辉煌,中国梦,指日可待。
苏小和:您怎么解释工业革命以后中国的衰落?佛教与中国文化是一个开放的,自由的,包容的,为什么到了工业革命之后中国人忽然间开始封闭了?
陈峰:按释迦牟尼佛的观点,成、住、坏、空,到顶级就一定衰落。人的天性在那儿。好日子多了,人们骄傲自满,奢侈,忘记了自我,衰落是一定的。中国文化里边富不过三代,一千多年领先,到了极处,必然衰落。成、住、坏、空是铁的规律,有形世界一定如此。所有世界全处在变化之中,由坏到好,由好到坏。
外国侵略实际介于自身的腐败,好日子过了,大家都是不求进取,人家进步了,你就麻烦了。北宋,中国科技很牛,后来没进步。外国人勤奋,运程也有,造船舰炮力,再加上掠夺殖民地实现了富强和积累。但是,欧美国家的历史,到殖民地时期,靠船舰炮力,这种发展是血泪的历史,一百多年欧美国家是霸道制。
中国文化的骨子里不是这种文化,没有侵略性。中国文化是王道,是自身发展,有好的文化教化大家,以自身的繁荣吸引周边国家人民,给他们带来利益,是用利益和文化吸引人家,不是强迫人家。
原文链接:http://suxiaohe.baijia.baidu.com/article/4456
Design the overall layout of the magazine
snooki weight loss An Overview of Butyl Glycol Petrochemical Solvent
Leggings Jeans Jeggings
weight loss tips Lady Gaga Launching Clothing Collection for Very Little Monsters
有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行
goroutine
goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便
goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就是一个普通的函数。
go hello(a, b, c)
通过关键字go就启动了一个goroutine。我们来看一个例子
package main import ( "fmt" "runtime" ) func say(s string) { for i := 0; i < 5; i++ { runtime.Gosched() fmt.Println(s) } } func main() { go say("world") //开一个新的Goroutines执行 say("hello") //当前Goroutines执行 }
channels
goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。那么goroutine之间如何进行数据的通信呢,Go提供了一个很好的通信机制channel。channel可以与Unix shell 中的双向管道做类比:可以通过它发送或者接收值。这些值只能是特定的类型:channel类型。定义一个channel时,也需要定义发送到channel的值的类型。注意,必须使用make 创建channel:
ci := make(chan int) cs := make(chan string)
channel通过操作符<-来接收和发送数据
ch <- v // 发送v到channel ch. v := <-ch // 从ch中接收数据,并赋值给v
我们把这些应用到我们的例子中来:
package main import "fmt" func sum(a []int, c chan int) { total := 0 for _, v := range a { total += v } c <- total // send total to c } func main() { a := []int{7, 2, 8, -9, 4, 0} c := make(chan int) go sum(a[:len(a)/2], c) go sum(a[len(a)/2:], c) x, y := <-c, <-c // receive from c fmt.Println(x, y, x + y) }
默认情况下,channel接收和发送数据都是阻塞的,除非另一端已经准备好,这样就使得Goroutines同步变的更加的简单,而不需要显式的lock。所谓阻塞,也就是如果读取(value := <-ch)它将会被阻塞,直到有数据接收。其次,任何发送(ch<-5)将会被阻塞,直到数据被读出。无缓冲channel是在多个goroutine之间同步很棒的工具。
Buffered Channels
上面我们介绍了默认的非缓存类型的channel,不过Go也允许指定channel的缓冲大小,很简单,就是channel可以存储多少元素。ch:= make(chan bool, 4),创建了可以存储4个元素的bool 型channel。在这个channel 中,前4个元素可以无阻塞的写入。当写入第5个元素时,代码将会阻塞,直到其他goroutine从channel 中读取一些元素,腾出空间。
ch := make(chan type, value)
value == 0 ! 无缓冲(阻塞)
value > 0 ! 缓冲(非阻塞,直到value 个元素)
我们看一下下面这个例子,你可以在自己本机测试一下,修改相应的value值
package main import "fmt" func main() { c := make(chan int, 2)//修改2为1就报错,修改2为3可以正常运行 c <- 1 c <- 2 fmt.Println(<-c) fmt.Println(<-c) }
Range和Close
上面这个例子中,我们需要读取两次c,这样不是很方便,Go考虑到了这一点,所以也可以通过range,像操作slice或者map一样操作缓存类型的channel,请看下面的例子
package main import ( "fmt" ) func fibonacci(n int, c chan int) { x, y := 1, 1 for i := 0; i < n; i++ { c <- x x, y = y, x + y } close(c) } func main() { c := make(chan int, 10) go fibonacci(cap(c), c) for i := range c { fmt.Println(i) } }
Select
我们上面介绍的都是只有一个channel的情况,那么如果存在多个channel的时候,我们该如何操作呢,Go里面提供了一个关键字select,通过select可以监听channel上的数据流动。
select默认是阻塞的,只有当监听的channel中有发送或接收可以进行时才会运行,当多个channel都准备好的时候,select是随机的选择一个执行的。
package main import "fmt" func fibonacci(c, quit chan int) { x, y := 1, 1 for { select { case c <- x: x, y = y, x + y case <-quit: fmt.Println("quit") return } } } func main() { c := make(chan int) quit := make(chan int) go func() { for i := 0; i < 10; i++ { fmt.Println(<-c) } quit <- 0 }() fibonacci(c, quit) }
在select里面还有default语法,select其实就是类似switch的功能,default就是当监听的channel都没有准备好的时候,默认执行的(select不再阻塞等待channel)。
select { case i := <-c: // use i default: // 当c阻塞的时候执行这里 }
超时
有时候会出现goroutine阻塞的情况,那么我们如何避免整个程序进入阻塞的情况呢?我们可以利用select来设置超时,通过如下的方式实现:
func main() { c := make(chan int) o := make(chan bool) go func() { for { select { case v := <- c: println(v) case <- time.After(5 * time.Second): println("timeout") o <- true break } } }() <- o }
并发程序考虑要复杂的多,这里只是简单定一些。
how to appear preppy
how to lose weight fast Pedicure Treatment for Dried Cracked Heels
流程控制
if
Go里面if条件判断语句中不需要括号,如下代码所示
if x > 10 { fmt.Println("x is greater than 10") } else { fmt.Println("x is less than 10") }
switch
多分支判断
switch sExpr { case expr1: some instructions case expr2: some other instructions case expr3: some other instructions default: other code }
goto
Go有goto语句——请明智地使用它。用goto跳转到必须在当前函数内定义的标签。例如假设这样一个循环:
func myFunc() { i := 0 Here: //这行的第一个词,以冒号结束作为标签 println(i) i++ goto Here //跳转到Here去 }
for
Go里面最强大的一个控制逻辑就是for,它即可以用来循环读取数据,又可以当作while来控制逻辑,还能迭代操作。它的语法如下
package main import "fmt" func main(){ sum := 0; for index:=0; index < 10 ; index++ { sum += index } fmt.Println("sum is equal to ", sum) }
函数
函数是Go里面的核心设计,它通过关键字func来声明,它的格式如下:
func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) {
//这里是处理逻辑代码
//返回多个值
return value1, value2
}
package main import "fmt" //返回 A+B 和 A*B func SumAndProduct(A, B int) (int, int) { return A+B, A*B } func main() { x := 3 y := 4 xPLUSy, xTIMESy := SumAndProduct(x, y) fmt.Printf("%d + %d = %d\n", x, y, xPLUSy) fmt.Printf("%d * %d = %d\n", x, y, xTIMESy) }
纪念一下情人节和元宵节,不顺的一整天。
WTSL data by YCharts
snooki weight loss Hot Fashion Trend of Feather Hair Extensions Do It Yourself Guide
Array
就是数组,和C语言一样的,它的定义方式如下
var arr [n]type
在[n]type中,n表示数组的长度,type表示存储元素的类型。对数组的操作和其它语言类似,都是通过[]来进行读取或赋值:
var arr [10]int // 声明了一个int类型的数组 arr[0] = 42 // 数组下标是从0开始的 arr[1] = 13 // 赋值操作 fmt.Printf("The first element is %d\n", arr[0]) // 获取数据,返回42 fmt.Printf("The last element is %d\n", arr[9]) //返回未赋值的最后一个元素,默认返回0
Slice
在很多应用场景中,数组并不能满足我们的需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice
slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度。
// 声明一个含有10个元素元素类型为byte的数组 var ar = [10]byte {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} // 声明两个含有byte的slice var a, b []byte // a指向数组的第3个元素开始,并到第五个元素结束, a = ar[2:5] //现在a含有的元素: ar[2]、ar[3]和ar[4] // b是数组ar的另一个slice b = ar[3:5] // b的元素是:ar[3]和ar[4]
Map
map也就是Python中字典的概念,它的格式为map[keyType]valueType
// 声明一个key是字符串,值为int的字典,这种方式的声明需要在使用之前使用make初始化 var numbers map[string] int // 另一种map的声明方式 numbers := make(map[string]int) numbers["one"] = 1 //赋值 numbers["ten"] = 10 //赋值 numbers["three"] = 3
好了,到此结束。
employment opportunities around textiles taste
weight loss tips weird myths you have been told about makeup
变量
使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面
//定义一个名称为“variableName”,类型为"type"的变量 var variableName type //定义三个类型都是“type”的三个变量 var vname1, vname2, vname3 type //初始化“variableName”的变量为“value”值,类型是“type” var variableName type = value /* 定义三个类型都是"type"的三个变量,并且它们分别初始化相应的值 vname1为v1,vname2为v2,vname3为v3 */ var vname1, vname2, vname3 type= v1, v2, v3
说明:Go对于已声明但未使用的变量会在编译阶段报错
常量
const constantName = value //如果需要,也可以明确指定常量的类型: const Pi float32 = 3.1415926
内置基础类型
1:布尔
在Go中,布尔值的类型为bool,值是true或false,默认为false
//示例代码 var isActive bool // 全局变量声明 var enabled, disabled = true, false // 忽略类型的声明 func test() { var available bool // 一般声明 valid := false // 简短声明 available = true // 赋值操作 }
2:数值类型
整数类型有无符号和带符号两种。Go同时支持int和uint。Go里面常用的有如下类型:int8, int16, int32, int64和uint8, uint16, uint32, uint64
需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错.
var a int8 var b int32 c:=a + b
浮点数的类型有float32和float64两种(没有float类型),默认是float64。
3:字符串
Go中的字符串都是采用UTF-8字符集编码。字符串是用一对双引号(”")或反引号(` `)括起来定义,它的类型是string
在Go中字符串是不可变的,例如下面的代码编译时会报
var s string = "hello" s[0] = 'c'
但如果真的想要修改怎么办呢?下面的代码可以实现:
s := "hello" c := []byte(s) // 将字符串 s 转换为 []byte 类型 c[0] = 'c' s2 := string(c) // 再转换回 string 类型 fmt.Printf("%s\n", s2)
Go中可以使用+操作符来连接两个字符串:
s := "hello," m := " world" a := s + m fmt.Printf("%s\n", a)
如果要声明一个多行的字符串怎么办?可以通过`来声明:
m := `hello world`
` 括起的字符串为Raw字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出
错误类型
Go内置有一个error类型,专门用来处理错误信息,Go的package里面还专门有一个包errors来处理错误
err := errors.New("emit macho dwarf: elf header corrupted") if err != nil { fmt.Print(err) }
简单类型就先说到这儿吧,下一节说复杂的.
5 ways to decide on your own type
gay porn Should You Take A Blue Diamond Engagement Ring