借力134号文件
利用Node.js如何实现文件循环覆写
前言
这次编写Node.js项目的时候用到了日志模块,其中碰到了一个小问题。
这是一个定时执行可配置自动化任务的项目,所以输出信息会不断增加,也就意味着日志文件会随时间不断增大。如果对日志文件大小不加以控制,那么服务器的磁盘迟早会被撑满。所以限制文件大小是有必要的。
最理想的控制方式就是当文件大小超过限制时,清除最先记录的数据。类似一个FIFO的队列。# 删除前面的数据 - 1 xxx ...... 100 abc # 文件末尾追加数据 + 101 xxxx
log4js的file rolling
一提到记录日志很多Node.js开发者肯定会找到log4js,先来看看log4js是怎么处理这个问题的。
log4js分为很多appenders(可以理解为记录日志的媒介),file rolling功能可以通过函数来进行配置。
file rolling功能有两种方式:日期和文件大小。
要控制文件大小,当然选择后者。
为了测试这个功能是否满足我们要求,写一段循环代码来写日志。const log4js = require('log4js') // 配置log4js log4js.configure({ appenders: { everything: { type: 'file', filename: 'a.log', maxLogSize: 1000, backups: 0 }, }, categories: { default: { appenders: ['everything'], level: 'debug' } } }); const log = log4js.getLogger(); for (let i = 0; i < 41; i++) { const str = i.toString().padStart(6, '000000'); log.debug(str); }
执行之后生成两个文件a.log和a.log.1。
其中a.log.1有20行数据,实际大小1kb,a.log只有1行数据。
虽然确实控制了文件大小,但是会带来两个问题:额外产生一个备份文件,总占用磁盘空间会超过文件限制。 日志文件内容的大小是变动的,查询日志的时候很可能需要联合备份文件进行查询(比如上面的情况日志文件只有1行数据)。
推测log4js的实现逻辑可能是下面这样:检查日志文件是否达到限制大小,如果达到则删除备份文件,否则继续写入日志文件。 重命名日志文件为备份文件。
这显然不能完全满足需求。
字符串替换?
如果要在内存中完成循环覆写操作就比较简单了,使用字符串或Buffer的即可完成。添加字符串/Buffer长度,如果超过大小则截取。 写入并覆盖日志文件。
但是有一个很大的问题:占用内存。
比如限制文件大小为1GB,有10个日志文件同时写入,那么至少占用10GB内存空间!
内存可是比磁盘空间更宝贵的,如此明显的性能问题,显然也不是最优解决方式。
file roll
按照需求可以把实现步骤拆成两步:追加最新的数据到文件末尾。(Node.js的fs模块有相应函数) 删除文件开头超出限制部分。(Node.js没有响应函数)
这两步不分先后顺序,但是Node.js没有提供API来删除文件开头部分,只提供了修改文件指定位置的函数。
既然无法删除文件开头部分内容,那么我们就换个思路,只保留文件末尾部分内容(不超出大小限制)。
什么?这不是一个意思么?
略有区别~
删除是在原有文件上进行的操作,而保留内容可以借助临时文件来进行操作。
所以思路变成:创建一个临时文件,临时文件的内容来自于日志文件。 往临时文件中增加数据。 将临时文件中符合文件大小限制的内容,从后往前(采取偏移量的形式)进行读取并复制到日志文件进行覆盖。 为了不占用额外的磁盘空间,写操作完成后删除临时文件。
这样就不会出现像log4js一样日志文件内容不全的现象,也不会保留额外的临时文件。但是对IO的操作会增加~
对于写操作可以采取tail命令来实现,最终实现代码如下:private write(name: string, buf?: Buffer | string) { // append buf to tmp file const tmpName = name.replace(/(.*\/)(.*$)/, '$1_\.$2\.tmp'); if (!existsSync(tmpName)) { copyFileSync(name, tmpName); } buf && appendFileSync(tmpName, buf); // if busy, wait if (this.stream && this.stream.readable) { this.needUpdateLogFile[name] = true; } else { try { execSync(`tail -c ${limit} ${tmpName} > ${name}`); try { if (this.needUpdateLogFile[name]) { this.needUpdateLogFile[name] = false; this.write(name); } else { existsSync(tmpName) && unlinkSync(tmpName); } } catch (e) { console.error(e); } } catch (e) { console.error(e); } } }
总结
完成这个功能有两点感悟:量变引起质变。当数据量变大时,很多简单的处理方式就不可以用了,比如写文件,如果直接使用writeFile会占用大量内存甚至有可能内存都不够用。所以要通过合适的方式进行拆分,拆分过程中又会碰到各种问题,比如本文中截取文件内容的要求。 学会借力。君子性非异也善假于物也~当无法在单个点完成操作的时候可以借助外部条件来实现,比如在本文中使用临时文件来保存数据内容。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。您可能感兴趣的文章:我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环Node.js事件循环(Event Loop)和线程池详解深入理解Node.js 事件循环和回调函数Node.JS循环删除非空文件夹及子目录下的所有文件小结Node.js中非阻塞IO和事件循环深入浅析Node.js 事件循环Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件实例分析JS与Node.js中的事件循环Node.js 事件循环详解及实例深入浅析Node.js 事件循环、定时器和process.nextTick()
如何注册公司借力挣钱
一、有限责任公司注册的条件
1、股东符合法定人数(2人以上)
2、股东出资达到法定资本最低限额(根据行业的不同有所不同,一般三档:10万,30万,50万)
3、股东共同制定的公司章程
4、有公司名称,建立符合有限责任公司要求的组织机构
5、有固定的生产经营场所和必要的生产经营条件。有了这个基础,你就可以按照下面的程序办理登记了。
二、有限责任公司注册需要的材料
1、申请报告
2、全体股东指定代表或者共同委托代理人的证明(委托书)以及被委托人的工作证或身份证复印件
3、企业名称预先核准通知书
4、股东的法人资格证明(企业法人需加盖发证机关印章)或者自然人身份证明
5、公司董事长签署的企业法人设立登记申请书
6、股东会决议(全体股东盖章、签名);7、董事会决议(全体董事签名)
8、监事会决议(全体监事签名)
9、公司章程(全体股东盖章),集团有限公司还需提交集团章程(集团成员企业盖章)
10、载明公司董事、监事、经理的姓名、住所的文件以及有关委派、选举或者聘用的证明,其中包括:
(1)任命书(国有独资),(2)委派书(委派单位盖章),(3)公司法定代表人、董事、监事、经理任职证明,(4)法定代表人的暂住证复印件(指外省市身份证)
11、具有法定资格的验资机构出具的验资证明或国有资产管理部门出具的《国有资产产权登记表》
12、公司住所证明,租赁房屋需提交租赁协议书,协议期限必须一年以上(附产权证复印件)
13、集团有限公司需提交成员企业加入集团决议书
14、法律、行政法规规定必须报经审批的项目,国家有关部门的批准文件
15、国务院授权部门或者盛自治区、直辖市人民政府的批准文件
16、相关的其他材料。
三、有限责任公司注册的流程
核名称——开验资户——存注册资金——验资——交工商设立资料——拿营业执照——刻章——办组织机构代码证——办税务登记证——开基本户(纳税户)
如何借力我省经济社会大发展和党委政府高度重视消防工作的重大历史机遇,聚焦三项建设,着力加快部队建设
一年来,全市各级各部门认真贯彻落实中央“四个全面”战略布局和省委、省政府决策部署,按照市委、市政府要求,紧紧围绕改革工作的重点领域、关键环节,聚焦制约经济发展的突出障碍、影响群众利益和社会稳定的突出问题,频频发力、密集出招,不断纵深推进改革工作,一场深刻的变革在牧野大地孕育迸发。时至岁末,《深化改革进行时》专栏特推出系列文章,盘点今年我市改革亮点、看点,邀您共同关注改革新篇章。
改革创新是当代中国最鲜明的时代特征。2015年,我市高度重视改革、全力推进改革,市委全面深化改革领导小组第三次、第四次、第五次会议相继召开,改革部署力度加大、改革文件密集出台,全面深化改革呈加快推进之势。
在今年我市的发展图册中,“深化改革”这个关键词,跃然纸上、夺人眼目。在“三期叠加”的当下,稳增长、保态势是事关全局的首要任务。为实现经济回升向好的目标,必须要穿透思想雾霾、摆脱路径依赖,以改革的方式破除发展藩篱,牢牢把握住新常态下“新风口”的机遇,点燃全面深化改革这个强劲的“新引擎”,确保我市经济发展换挡不减速。
推动行政队伍健康“瘦身”:优化政府机构设置
加快政府职能转变,深化行政机构改革势在必行,这项“深水区”改革任务,已经触及重大利益调整。面对考验,新乡敢于做政府机关的“自我革命”,不断优化行政机构设置、规范行政权力运行,加速建立健全权责统一、分工合理、决策科学、执行顺畅、监督有力的行政管理体制,全面建设法治政府、创新政府、廉洁政府和服务型政府。
推进市县政府机构改革,加快政府职能转变。我市基本完成本年度市县政府机构改革任务,在全省18个省辖市中位列第三。实施市级政府机构改革,按照省委、省政府批复市级政府设置32个工作部门的要求,重点对社会管理和公共服务领域职能相近的部门进行整合,实行综合设置,市级政府工作部门调整、整合机构8个。同时,梳理、分类3年~5年内的改革任务,对涉及市政府职能转变的52项重大任务进行细化,明确责任单位和完成时限。大力推进县级政府机构改革,县(市)、区新组建政府机构的职能划转、领导配备、机构整合等工作全部到位,政府工作部门“三定”规定制定及修订、食品药品等部门体制改革、金融监管和党委巡察机构设置等工作已基本完成。
深化事业单位分类改革,构建高效运行格局。对市扶贫办等3家承担行政职能的单位进行理顺调整,避免机构“政事不分”。10月底全面完成交通运输执法体制改革任务,将分散在交通运输管理、公路管理、农村公路管理、道路运输管理、路政管理等部门的行政处罚、行政强制、监督检查等职能予以整合,整合后的职能统一交由市、县(市)新组建的交通运输执法机构承担,从体制机制上解决职能交叉、多头执法等问题。
畅通市场壮大“经脉”:深入推进简政放权
简政放权是全面深化改革的一件“开门大事”,能否真正为市场松绑、为企业添力,要看政府是否能真正“割肉”,放手让市场在资源配置中起决定性作用。对此,新乡交出了一份全新的答卷。
继续清理市级行政审批事项。近年来,市级审批项目已由412项减少到142项。今年在此基础上,我市结合权力清单和责任清单制度工作,对市级保留项目再次进行集中清理,全面取消、调整市级保留的14项非行政许可审批,梳理后保留市级行政审批项目135项。
规范审批前置条件和中介服务。积极开展审批前置条件清理,对审批项目所需材料的合法性、合理性进行审查,并逐项列明。对市级保留行政审批项目中涉及的各类报告、评审、证明等中介服务事项和收费进行规范,审核清理属于政府定价或指导价的中介服务收费,降低标准4项,规范2项,取消1项。
大力推动商事制度改革。落实注册资本认缴登记制、企业信息公示制度、简化住所(经营场所)登记手续,允许“一址多证”和“一证多址”,稳步推进“先照后证”,全面实施“三证合一、一照一码”……这些商事制度改革“组合拳”效果明显,让创业主体从“小众”走向“大众”,民间投资创业热情爆发,新注册市场主体数量迅速增加。今年,全市新登记各类市场主体3万余户,同比增长21.02%,平均每个工作日新登记138户,全市实有各类市场主体突破15万户,市场主体实有注册资本总额1926.8亿元。
政府职能不断转变,项目审批少了,办理手续简便了,不但服务质量没有减少,反而进一步加强。推行行政审批服务标准化建设,力促行政审批事项进驻市行政服务中心集中办公,项目进驻率达95.8%。进一步压缩审批时限,推行“一审一核”制、建设项目并联审批制度,行政审批项目办理时限比法定时限平均压缩14个工作日。年检制改年报告制,一改以往繁琐程序,只需登录网络平台上报信息,大量减少企业运营成本。
加大经济“血液”给养:做好财税投融资体制改革
发展离不开资金的支持,充分借力资金“杠杆”,地方经济发展可以事半功倍。新乡把握这一关键,用好政府财政资源、引导社会资本合作,不断加快深化财税体制和投融资体制改革的步伐,助力经济发展。
建立健全现代财政制度。率先在全省开展中期财政规划编制工作,合理有效配置政府资源、增强财政风险的可控能力;完善政府预算体系,打通原有的四本预算“屏障”,建立全口径预算,进一步加大政府统筹调控能力;加强财政专项资金管理,积极推进专项资金清理整合,稳步推进建立政府部门专项资金管理目录清单;坚持“无预算不支出”“先预算后支出”,严控一般性支出和项目申报,财政优先保障涉及发展的重点项目和涉及群众切身利益的民生工程;盘活闲置、沉淀财政资金,共清理存量资金和结余结转资金10多亿元,助力稳增长、调结构。
推广运用政府与社会资本合作模式(PPP)项目。纳入省财政厅PPP意向库项目43个总投资401亿元,涉及交通、市政基础设施建设、供水、供暖、污水处理、环境综合整治等领域,进一步拓宽我市政府资金来源渠道,撬动更多社会资本参与经济社会发展。
推进市级涉企资金基金化改革。逐步打破财政资金分配使用的旧模式,进行市场化操作,发挥政府资金的放大效应,有效推动我市经济转型升级、持续健康发展。目前,首期规模1亿元的深创投创业投资基金(新乡红土创新资本创业投资有限公司)已挂牌,首期10亿元的城镇化基金已完成注册并开始谋划包装项目,“新三板”股权投资基金正在对基金设立方案进行评估、论证,科技创新风险投资基金(863种子基金)正在洽谈合作协议,先进装备制造业基金正在公开选择基金管理人……
强力推动“新三板”挂牌。与全国中小企业股转系统签订战略合作协议,为我市企业登陆“新三板”奠定坚实基础;以政策支持方式加大“新三板”挂牌推进力度,制定“新三板”挂牌工作3年行动计划,计划用3年时间挂牌60家;加大财政奖励力度,市财政对成功在“新三板”挂牌的企业给予财政资金奖励100万元;积极召开重点企业挂牌协调会,协调解决企业在申请挂牌过程中需要政府协助解决的困难和问题;开展巡回培训活动14场,参加培训的规模以上企业1291家,在我市掀起了一股热议“新三板”的浪潮。截至目前,我市“新三板”挂牌企业达到12家,融资3.08亿元,挂牌后备企业达到94家,“新三板”挂牌工作梯次格局已经形成。
打出乡村发展“重拳”:探索农村改革新路
农村改革是全面深化改革的重要内容,而这一轮的农村改革涉及的利益关系更加复杂、目标更加多元、影响因素更加多样、任务也更加艰巨。新乡作为全国农村改革试验区,承担着先行先试重任,绝不能缺位落后、没有作为。
积极开展试点试验。推进农村综合产权交易中心建设,今年5月,在市公共资源交易管理中心加挂市农村综合产权交易中心牌子,建立了“一委一办一中心”的组织框架,同时争取2016年建立县、乡农村综合产权交易平台。开展城乡一体化综合改革试点,切实破解改革碎片化问题,确定了1个县(获嘉县)、7个乡、13个社区作为综合改革试点,统筹推进各项农村改革。
稳步推进土地确权工作。我市作为整市推进试点市,今年要完成608万亩土地承包经营权确权任务,涉及113个乡(镇、办事处、3002个村、93万户)农户。目前,土地承包经营权的权属调查工作已基本结束,工作进展顺利。8月底,全省农村土地承包经营权确权登记颁证工作推进会议在新乡召开,我市作了典型发言,经验做法也受到上级领导的充分肯定。
土地流转助力新型农业经营主体发展。有序规范推动土地流转,全市土地流转面积达到202.9万亩,新增12.99万亩,其中流转入农业企业、农民合作社、种植大户、家庭农场等规模经营主体71.9万亩。我市已建立示范家庭农场名录,今年有8家家庭农场被评为省级示范农场,市级示范家庭农场29家。积极开展农民合作社示范社认定,新认定市级示范社105家,累计达到486家。有一大批农业品牌项目亮相全国农洽会、农交会,10余个特色产品荣获大会金奖、优质奖等称号。
开启转型升级“智慧”:鼎力支撑科技创新
科技创新驱动已成发展战略,谁能走好科技创新这步“先手棋”,谁就能占领先机、赢得优势。科技优势是我市发展的三大优势之一,科技兴市是我市发展的三大战略之一,新乡立足于构建中原城市群科技创新中心、打造国家区域创新驱动型经济发展新高地,把增强自主创新能力作为调整经济结构、转变经济发展方式的重要任务,出台《关于加快建设具有区域影响力的科技创新中心的意见》等“1+4”文件,不断提高科技创新对经济增长的贡献度,让科技创新在经济社会发展中的引领支撑作用进一步发挥。
强化财政科技计划管理。我市结合实际,打破条块分割、统筹科技资源,研究构建总体布局合理、功能定位清晰的科技计划(专项)体系,切实提升财政资金使用效益,注重发挥科研人员的积极性和创造性,增强科技对经济社会发展的支撑引领作用,着力解决项目安排分散重复、管理不够科学透明、资金使用效益亟待提高等突出问题,收到良好实效。2015年,划拨市级财政项目资金3000万元,“粳稻新科稻21”品种荣获第二十二届中国杨凌农业高新科技成果博览会后稷奖;7个项目被认定为河南省重大科技专项,占全省总数的10.45%,排名全省第二;华兰生物等4家企业被认定为瞪羚企业,数量位居全省第二;16个项目获河南省科学技术进步奖、年专利申请量首次突破4000件……
建立协同创新工作机制。借鉴深圳南山等地先进经验,积极谋划开展科技协同创新创业工作,努力探索一条具有新乡本地特色的科技协同创新创业发展道路。市科技协同创新创业工作领导小组牵头,汇聚河南师大等6所驻新高校,中国电科第二十二所、中科院农灌所等4个重点科研院所,华兰、科隆等9家我市主要行业龙头企业,组建“新乡市科技协同创新创业联盟”,集聚政府、企业、高校、科研院所等资源要素,推进多主体联合科技协同创新创业活动。
启动科技创新公共服务平台建设。充分整合科技资源,有效构建科技基础设施和公共服务体系,进一步提高我市自主创新能力,推动创新型城市建设。为更好地服务企业,推行首席科技服务官制度,强化领导主动服务意识,经常性地深入基层开展调研,促进服务方式根本转变。
改革是大势所趋、人心所向,经济发展呼唤着全面深化改革。通过一份份文件、一个个数字,一次次探索,我们聆听时代发展脉动,感受我市改革的坚定步伐。展望未来,我们有理由期待,新乡经济在改革的助力下,行稳致远。
传统媒体如何打好新媒体硬战?BRTN借力蓝汛云
《2013中国视听新媒体发展报告》显示,北京地区电视机开机率从三年前的70%下降至30%;而今年最火爆的美剧《纸牌屋》,在第二季上线当天首集点击率逼近300万次,上线四天,点击率逾900万。在互联网快速发展的冲击下,电视行业不得不开始思变转型。
新媒体时代,播出渠道和内容不再是电视媒体的专属优势,用户对内容、终端的多元化选择改变了广电产业原有的游戏规则。传统电视产业由一个个电视台组成,观众想看某个节目,就必须在某个固定的时间点、固定的频道,忍受冗长的广告,然后才能享受一点点剧情带来的惬意。而在电脑、手机等移动终端上,视频没有“台”,碎片化的节目让用户的观看更加灵活。
面对挑战,北京电视台将网络电视台(以下简称BRTN)作为战略重心,于2012年初开始与蓝汛ChinaCache达成战略合作,借力蓝汛ChinaCache领先的云+CDN整体解决方案,大踏步迈入新媒体阶段。
北京电视台通过与蓝汛ChinaCache的合作,成功打造了网络视听的全媒体平台,最大程度地贴近用户在新媒体时代对数字化、网络化、交互性、多媒体、个性化的需求。蓝汛ChinaCache的云+CDN整体解决方案一举攻破了北京电视台网站功能单一、运营成本高、网站扩展能力不足的三大问题,满足了新媒体时期节目录制、播出、存储和推广、发布等需求,以出色的时效性和易用性实现了快节奏的节目制作和发布。面对用户直播、点播、互动等多种多样的需求,蓝汛ChinaCache在低运营成本的前提下为BRTN实现了稳定可靠的服务和高效率的管理。而作为重要的媒体窗口,BRTN还需要随时应对重大的突发事件,保证在重要时期的正常运营,即使遇到春晚等重大活动或MH370等突发事件,也不影响用户在高峰时段的正常访问。
BRTN采用了蓝汛ChinaCache的广电新媒体解决方案,通过分布式云计算取代传统的部署和开发模式,结合遍布全国的CDN节点,对视频资源客户端加载进行缓存加速;通过块存储,让大容量文件在高速稳定的链路上传输,即使在大并发的情况下用户访问也能流畅自如。蓝汛ChinaCache特别为BRTN划分了独立资源池,让其在灵活部署、节约成本的同时保障核心业务数据的安全,并最大程度地提高终端用户的网络体验,确保北京电视台在新媒体时代的成功转型。
蓝汛ChinaCache创始人、董事长兼CEO王松表示:“面对新媒体冲击,BRTN选择了主动变革,在与蓝汛ChinaCache战略合作后,有效节省了运营成本,减少了资源投入,并缩短了业务部署时间,保证了多终端用户的优质体验。蓝汛ChinaCache,通过提供性能优良、能力强大服务优质的内容感知云计算服务,致力帮助传统企业加速变革,应对挑战。”
蓝汛ChinaCache,早在2009年即开始筹划云服务,2010年成为国内首批云服务提供商,其云主机和块存储服务更是荣获国内首批可信云服务认证。蓝汛ChinaCache将自身优质的CDN资源与云服务整合在一起,为客户提供包括云主机、块存储、CDN外部延展、数据分析、安全防务等一揽子混合云服务解决方案。
我想学陈氏太极拳,有没有录像资料或者视频文件..发过来一些.谢谢啦
陈氏太极拳技法
技击,是太极拳的灵魂。传统的陈式太极拳也不例外。虽然太极拳的内涵极其丰富,有他独特的养生价值;但其精髓仍然在于它那刚柔相济的技击功能。太极拳,如果抽掉了它的技击含义,则失去了它的真。所以不讲技击的太极拳套路,不是完整的套路;不讲实战用法的太极拳传人,不是合格的传人。有些练拳或传拳数十年,而不清楚其技击含义,眼神不知所向,力点不知所在,那么他的拳永远难以打出太极拳应有的气势和神韵。同时,根据现实生活的需要,唯有那些养生价值和护身价值兼备的拳种,才是人们最欢迎的。所以,继承、研究和掌握太极拳的技击法,是有一定现实意义的。
第一式 金刚捣碓
总述:此式取“金刚捣碓”之名,形容拳势之雄壮有力。金刚,系传说中诸神中力气最大者。最后,掌拳合击似捣碓之势。此式人称“母式”。因为太极拳棚捋挤按采捩肘靠诸法,顺势借力、造势借力、避实击虚、声东击西、化打结合、引而后发、螺旋进化、整体运动等等陈式太极拳固有的战略战术特征,几乎都体现在此式之中。因此,陈家沟有云:“太极拳会不会,就看金刚大捣碓。”
此式总的技击含义是:接应左前方之敌,敌以右拳(或掌)向我击来,我提双腕从敌右臂外侧接应。先棚后捋,敌挤靠,我再走大捋;敌退,我则顺势反拿、踢、撩发之。来则顺势捋;去,则顺势发。此式称之为:“愿来就来,愿去就去;来则欢迎,去则欢送”。体现太极拳化打结合之妙。
第二式 懒扎衣
总述:此式名懒扎衣,取其定式外型,撩掖战袍备战之姿。又含大将临敌从容不迫之态。其技击含义,先是对付左前方之敌,再迎击右侧之敌。对左侧之敌用棚、拿、捩击之法;对右侧之敌,则取上引下进(击)之法,右引左进(击)之法,以及下扣上翻(摔)之法,上下左右化打结合,使来敌攻防皆难。
第三式 六封四闭
总述:接上式,仍系以对付右侧之敌为主。引而后发,再引(捋)再发。全式体现边引化边发放,先引化再发放,两者互为其根。化中含发,发中有化,化打相济。
敌人从我右侧,双手抓我右臂施推按之劲,欲将我按瘪推出或推倒。我即乘势右臂下沉划弧随身左传,向左前下引进,使来力落空。引进时,我还可以以右手反拿敌右腕,使之上身前倾。在引进时,可以同时进右肩发靠劲,此谓“边引边靠”,“左引右靠”之法。
第四式 单鞭
总述:此式系先对付右前方之敌,接着再应战左前方之敌。但以左臂肘手之引化与发劲为主。与懒扎衣后半部动作相反相同(方位相反,劲力相同)。此式与懒扎衣一式又谓左右对称之式。称为两仪式。
第五式 第二金刚捣碓
总述:此式分两节,后节与第一金刚捣碓技击含义相同。前节动作很重要。这两个动作虽然是一引一发,但它却充分体现了太极拳在技击术上的三大特征:一是“欲左先右,欲右先左”的声东击西的原则。二是体现出引中可发、发中含引、引发互根的独特技巧。三是体现发放劲之前,必须有一个下塌外碾的下弧劲。这种发劲技巧非常重要,读者在练推手、散打中可以细心体会,切切不可忽视。
第六式 白鹤亮翅
总述:此与懒扎衣动作相似,前四个动作基本相同。动作五、六与懒扎衣不同之处在于懒扎衣系横向捩,此式系斜向捩。最后都是走松沉下塌外碾之劲。
第七式 斜行拗步
总述:第一个斜行用法练习很重要。其重要性体现在动作一、二的用法和动作四、五的拗步下采上击之法。某些派生的太极拳只继承了其拗步搂膝之动作,却忽略了前者,非常可惜。读者要注意。
第八式 初收
总述:此式充分体现太极拳顺势借力、造势借力之巧用。开始设敌人双手抓(或推)我胸部,我略右转,是从胸部让敌人左手落空;略向左传,是让敌人右手落空,同时,我迅速用双手下沉里合上翻外开而棚开敌人双手,并乘势进击敌之胸部、头部,然后再顺势反拿敌双手肘臂,向上托发。如敌人避我上托之势而下沉,我又顺其下沉之势,变按,按其臂、按其肩、按其头,随机应变。同时,下边提膝击其裆腹部,如他低头,上下合击,使敌失败。
第九式 前趟拗步
总述:此式为敌退我进、沾连粘随劲的练习式。接上式,如当敌被下按处于被势时,他突然变招,以右拳掌向我腹部、裆部进击。我于是变右下捋之法。同时,继续提左膝击其肋部、腹部,敌不得势欲退,我紧紧跟随,他撤步,我插裆,他再撤,我再进。上肢紧紧相粘连,随其退而进,体现穷追猛击之势,而且手、肘、肩、胸、腰、胯、膝、脚,节节进逼出击。
第十式 第二斜行
总述: 此式与第一斜行相同,但与上式连接的两个过渡动作不可忽视。这是一种“欲左先右,欲右先左;左引右击,右引左击”的练习方法。
第十一式 再收(同前)
第十二式 第二前趟拗步(同前)
第十三式 掩手肱拳
总述: 此式在陈式太极拳中是技击含义较丰富、用处较大、出现较多的一个拳式。一路拳中四个,二路拳中六个。所以要特别重视此式的运用方法。有的派生太极拳中的搬拦锤、撇身锤,其实都包含在此式之中。设敌人上右步以双掌向我胸前击来,或抓推我双臂,意欲把我击伤或推出,我即乘势身略左转,双手外开,先把敌人双手合力捩开。再向右转里合,右脚收,提膝,调整方位,变左脚向左前方插敌裆或套在敌右腿外,双手里合上翻,再合劲下击,用捩采劲击敌胸部,如敌抓我双臂,我曲肘可以双手臂绞截敌臂肘。双手上翻时,左掌由左外侧向敌身右侧头部横击,或圈截采封闭敌右肘手,使其劲断失控。右拳上翻可以击敌左侧太阳穴,或双手合击其头部。
第十四式 十字手
总述:此式一开一合一转体三个劲,包含有棚、捩、肘、拿、靠、摔等多种技击法。
第十五式 第三金刚捣碓
总述: 此式与前两个金刚捣碓之区别,在于动作一、二。这两个动作体现太极劲中,“仰之则弥高,俯之则弥深”,以腰为支点的上托下采杠杆劲。可做两个单式练习,前者可以练习左下右上双肘发劲,或左下右上双掌发捩劲。后者,可以练习一手上托对方肘,一手下采对方手肘的分捩劲,如近身可练摔法。
第十六式 庇身锤(含背折靠)
总述:庇身锤又称披身锤,为“击前打后”之法。全式用法包含两种含义:一是对付身后搂抱我的敌人,旧称“神仙大脱衣”。二是对付从正面进攻的敌人。
第十七式 青龙出水
总述:此式顾名思义,可以知道主要是锻炼如龙似蛇的腰劲。共走三个劲,圈、撩、横,都是靠腰的旋转力,一引一进、一化一打、左撩右击,交替发放左右手(臂、肘)连环进击之法。以腰为主宰,丹田带动,发劲松活弹抖。并且体现每做一个动作都为下一个动作做好准备,两个动作交替之间而且都有一个合劲,体现蓄而后发之势。
第十八式 三换掌
总述:此式主要是对付右前方之敌。类似六封四闭,区别在于双手向左棚捋敌人左臂时,下边加右腿向左前方横扫,上下配合使敌人失重,然后再提膝插裆。合肘推发敌人。然后走小身法,运用采拿和横捩、横直交错之劲,双手(肘)连环击打敌人之法。主要走手肘劲,同时也必须以腰腿劲相配合。特别注意的是,双手变换之中有一个拿法和一个采肘劲,这是一般人容易忽略的地方。
第十九式 肘底看锤
总述:此式又称“叶底藏花”。利用两臂开合劲,在左右绞化之中,趁势以右拳击打敌胸肋部或左肘与右拳合击敌右臂反关节。即身先左转,再右转,再向前转左右合击。此式虽然只一个动作,但手法可以分为三段运用:
第一段:接三换掌,当我左掌击打敌人面部或胸部时,敌以左手抓我左腕,以右手管我左肘。我乘敌劲未发之前,左手先向左下沉,右掌击其左肘、左肩、左颈以及头部。或我右手插其左腋下,走捩劲。
第二段:如敌左臂失势,扬起右手向我进击,我趁势右手再拿其右手,走下采劲,以左肘与右手合击其右臂反关节。
第三段:敌不得势若后撤,或上棚我左臂,我即趁势略向左转,左手托其左臂肘,以右拳击其右肋部或右腋下。
第二十式 倒卷肱
总述:此式系以退为进,退中有进,步退手击。对方来势凶猛,我先退让,以泻其劲,以观其变。避其锋芒,觅其空隙,乘虚进击。
第二十一式 白鹤亮翅
总述:此式用法与前白鹤亮翅一式相同。但要注意收腿时,重心右移一下,右手要向右外加一个向上、向外的棚劲,然后再走下采劲(走下弧),重心左移,收右腿。此时,收腿的技击含义包括扣击对方插入我裆的腿,或提我右膝击对方下盘。同时,右手走一个开合劲,含有先棚后引进、再回击的用意。
第二十二式 斜行拗步
与前同。
第二十三式 闪通背
总述:闪通背一式,一般人只知道最后动作是一种摔法,但不清楚它还包括诸如磨盘肘、横捩肘、下采肘等多种肘法,摔掌、拍掌、穿掌、撩掌、劈掌等多种掌法,以及前扫、后扫等若干扫腿法。
第二十四式 掩手肱拳
此式与前掩手肱拳之差别,仅在一个连接动作。接上式,我向背后翻转摔倒前面的敌人之后,另一敌人上右步出右拳击我胸部,或用右脚向我下部进击,我则下沉,双手顺缠、里勾腕,向两侧采捩来力(敌人的拳或脚),使其来力落空。然后,我猛然腾空跃起,以上提左掌右拳合击其头部,或双手腕交叉(绞合)进击其胸部。或以左掌为掩护,用右拳从左腕臂之下偷击其胸部。此谓“化下击上”之法。跳跃时,还可以提右膝撞击其裆部,调整步法出左脚蹬踩其下盘,均可灵活运用。
PHP获取youku视频真实flv文件地址的方法
本文实例讲述了PHP获取youku视频真实flv文件地址的方法。分享给大家供大家参考。具体分析如下:
有一站长要我帮助它做一个可以自动测试出youku视频网站的flv真实地址,下面我整理了一下午解决了此问题非常的不错,大家可参考一下.
这个是借力打力,只是抓去朋友网的内容,不过相当好用,代码如下:
复制代码 代码如下:<?php
$videourl='http://v.youku.com/v_show/id_XMjA5MjQ0OTQ0.html';
function get_content($url ,$data){
if(is_array($data)){
$data = http_build_query($data, '', '&');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
return $result;
}
$str = get_content('http://share.pengyou.com/json.php?mod=usershare&act=geturlinfo',array('url'=>$videourl));
$str=json_decode($str);
var_dump($str);
?>
这个测试出来的只是swf文件并不是我们要的flv文件了,后来参考一站长的写法进行了改进,核心代码如下:
复制代码 代码如下:<?php
function fetch_youku_flv($url){
preg_match("#id_(.*?).html#",$url,$out);
$id=$out[1];
$content=get_curl_contents('http://v.youku.com/player/getPlayList/VideoIDS/'.$id);
$data=json_decode($content);
foreach($data->data[0]->streamfileids AS $k=>$v){
$sid=getSid();
$fileid=getfileid($v,$data->data[0]->seed);
$one=($data->data[0]->segs->$k);
if($k == 'flv' || $k == 'mp4') return "http://f.youku.com/player/getFlvPath/sid/{$sid}_00/st/{$k}/fileid/{$fileid}?K={$one[0]->k}";
continue;
}
}
function get_curl_contents($url, $second = 5){
if(!function_exists('curl_init')) die('php.ini未开启php_curl.dll');
$c = curl_init();
curl_setopt($c,CURLOPT_URL,$url);
$UserAgent=$_SERVER['HTTP_USER_AGENT'];
curl_setopt($c,CURLOPT_USERAGENT,$UserAgent);
curl_setopt($c,CURLOPT_HEADER,0);
curl_setopt($c,CURLOPT_TIMEOUT,$second);
curl_setopt($c,CURLOPT_RETURNTRANSFER, true);
$cnt = curl_exec($c);
$cnt=mb_check_encoding($cnt,'utf-8')?iconv('gbk','utf-8//IGNORE',$cnt):$cnt; //字符编码转换
curl_close($c);
return $cnt;
}
function getSid() {
$sid = time().(rand(0,9000)+10000);
return $sid;
}
function getkey($key1,$key2){
$a = hexdec($key1);
$b = $a ^ 0xA55AA5A5;
$b = dechex($b);
return $key2.$b;
}
function getfileid($fileId,$seed) {
$mixed = getMixString($seed);
$ids = explode("*",$fileId);
unset($ids[count($ids)-1]);
$realId = "";
for ($i=0;$i < count($ids);++$i) {
$idx = $ids[$i];
$realId .= substr($mixed,$idx,1);
}
return $realId;
}
function getMixString($seed) {
$mixed = "";
$source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/:._-1234567890";
$len = strlen($source);
for($i=0;$i< $len;++$i){
$seed = ($seed * 211 + 30031) % 65536;
$index = ($seed / 65536 * strlen($source));
$c = substr($source,$index,1);
$mixed .= $c;
$source = str_replace($c, "",$source);
}
return $mixed;
}
?>
调用方法,代码如下:
复制代码 代码如下:$url='http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html';
echo fetch_youku_flv($url);
访问:
复制代码 代码如下:http://xiaomizhou.net/demo/flv.php?url=http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html
输出的结果是:
复制代码 代码如下:http://f.youku.com/player/getFlvPath/sid/138035737110468_00/st/flv/fileid/03000201004F97EF4A2E350467A09DB266E872-5522-225F-DC45-40B4E1F9BE49?K=c2a4327df2bb5a65261d40ea
这个是可以直接下载的.
希望本文所述对大家的php程序设计有所帮助。