| 订阅 | 在线投稿
分享
 
 
 

C语言实现MATLAB6.5中M文件的方法

2008-06-01 02:06:32 编辑來源:互联网 国际版 评论
 
 
本文为【C语言实现MATLAB6.5中M文件的方法】的汉字拼音对照版显示拼音
  zhaiyaobenwenzhechongmiaoshuleyunyongMATLABminglingjiangMwenjianfanyiweiCyuyanchengxubingxiugaiweikezhijietiaoyongdeCyuyanhanshudefangfa使shiyonggaifangfasuoxuyaozhuchongdefangfajuxianxingheMATLABbanbenchayideyingxiangyunyonggaifangfajiangnenggou使shiCyuyannengzhijie使shiyongMATLABdangzhongyijingwanchengdeshuxuejisuangongnengdadakuochongleCyuyandeshuxuejisuangongnenghekaifaxiaolv

  yaohaiciMATLABMwenjianCyuyanjiekou

  zhongsuozhouzhiMATLABshiyigegongnengqiangdadeshuxueruanjianshanchangyuyongjuzhenyunsuanwanchenggezhongshuxuegongnengdanshiqichengxuxuyaozaiMATLABhuanjingxiajieshizhixingxiaolvbugaojiarunengjiangtaqiangdadehanshukuyongyuCyuyanliyongClaibianyizhixingMATLABjiangnengfahuigengdadezuoyongsuoyiMATLABcong5.0kaishiyijingtigongleyuwaibuC/C++chengxudeyingyongchengxujiekouweiliyongCyuyantiaoyongMATLABdehanshutigonglekenengdanshiMATLABdejiekoufazhanhenkuaidaoMATLAB 6.5yijingtigongleduiVC 7.0dezhichitongshiduiCdejiekouxiangduiyu5.Xbanbenyouleyidingdegaibian

  zaiMATLABdangzhongwomenliyongMwenjianlaishixianhanshumeiyigeMwenjianshixianyigedandudegongnengzheyidianheCyuyandangzhongdehanshushixianghuduiyingdesuoyijiaruwomennengjiangMATLABzhongdeMwenjianzhuanhuaweiCyuyanxiadeyigedangehanshujiunengshixianMATLABzhongxiangyingdegongneng

  shixianfangfa

  zhenggeguochengkefenweisangezhuyaobufenyongMATLABjiangMwenjianfanyiweiCyuyanwenjiancongshengchengdeCyuyanwenjiantiquchuyouyongyujubianxieshujuzhuanhuanchengxushixianshenshugeshizhuanhuanzhenggeguochengzuizhongjiangbaMwenjianfanyichengCyuyandangzhongdeyigejuyouxiangtonggongnengdehanshugongqitadechengxutiaoyong

  benwenyongyigezuijiandandeMwenjianlaishili

  wenjianmingmessay.m

  function c=messay()

  a=3.4;

  b=5.6;

  c=sqrt(a)+sqrt(b);

  gaimwenjianshixianlejisuan
C语言实现MATLAB6.5中M文件的方法


  1jiangMwenjianbianyiweiCyuyanwenjian

  weilejiangMwenjianfanyiweiCyuyanwenjianxuyaojinxingyidingdeshezhizhelijiashebianxieCyuyandehuanjingweiVC6.0zaiMATLABminglingtishifuxiashurumex -setuphembuild -setupminglingzaixiangyingxuanxiangzhongxuanzeMicrosoft Visual C/C++jike

  zaiMATLABminglingxingzhong使shiyongmccminglingjiangmessay.mfanyiweiCdaima

  mcc -m messay.m

  qizhongdeshenshu-mdaibiaomccminglingjiangbamwenjianfanyichengCyuyandedaima

  fanyiminglingjiangzaimessay.msuozaidewenjianjiaxiashengchengsangeCyuyanwenjianmessay.hmessay.chemessay_main.cqizhongmessay_main.ctigonglemain()hanshumessay.htigonglezhenggechengxudehanshushengmingmessay.cbaohanleMATLABshengchengdegongnenghanshuzhesangewenjiandangzhongmessay.czhongbaohanlewomensuoxuyaodeshuxuehanshu

  2tiquyouyongyuju

  tongguofenxifaxianyoumccshengchengdedaimaneibushenshuchuansongfangshiyouMATLABlianjiekuguidingnanyigaidongyincixuyaotiquyouyongdedaimabinggenggaishengchengdaimadeshenshuchuandifangshitongshicongshengchengdaimadezhushizhongkeyikanchuzhenzhengwenhanMwenjiangongnengshixiandedaimaduandouzaiMmessay()hanshudangzhonggaihanshumingdemorengouzaofangshiweiqianzhuiMjiashangMwenjiandewenjianmingerqitadeshengchenghanshujinshixianshenshuchuandihebiaozhunhuajiekoufuwudegongneng

  suoyitiqudaimadejutifangfashiliyongmessay.cdangzhongshengchengdestatic mxArray * Mmessay(int nargout_)hanshuduigaihanshujinxingxiugaierqitadeshengchenghanshudoukeyihuluebuyongyuanshengchengdeMmessay()daimaruxia

  static mxArray * Mmessay(int nargout_) {

  mexLocalFunctionTable save_local_function_table = mclSetCurrentLocalFunctionTable(&_local_function_table_messay);

  mxArray * c = NULL;

  mxArray * b = NULL;

  mxArray * a = NULL;

  mlfAssign(&a, _mxarray0_);

  mlfAssign(&b, _mxarray1_);

  mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, "a")), mlfSqrt(mclVv(b, "b"))));

  mclValidateOutput(c, 1, nargout_, "c", "messay");

  mxDestroyArray(a);

  mxDestroyArray(b);

  mclSetCurrentLocalFunctionTable(save_local_function_table_);

  return c;

  }

  zaishengchengdaimadangzhongmclSetCurrentLocalFunctionTablehemclSetCurrentLocalFunctionTablehanshuweilianggewaibuhanshujiangshenshuchuangeiwaibuyuqixiangguandebufendouduiCchengxu使shiyongshuxuehanshumeiyouyingxiangzuizhongshijiyouyongbingzhixingyunsuandezhiyouyiju

  mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, "a")), mlfSqrt(mclVv(b, "b"))));

  shijishangyouMATLABfanyideCyujuzhongdabufendeheshijijisuanyouguandeyujuhezishengchengdehanshudouyimlfkaitousuoyixunzhaoyouyongyujudejiandanfangfajiushizhijiexunzhaomlfweiqianzhuidedaima

  3shenshugeshizhuanhuan

  yingdangzhichuMATLABsuoyoudejisuandoushijiyuyizhongmingweimxArraydeshujujiegouzhishangdesuoyoudefudianshuxianglianghuozheshijuzhenzaiMATLABdangzhongdoushitongguomxArrayjiegoulaijinxingcunchuhechuandidedangranMATLABsuotigongdesuoyoushuxuehanshuyedoushijiyuzheyangyizhongshujujiegoujinxingyunsuandesuoyiyao使shiyongMATLABdeshengchengdaimajiubixujiangCyuyandangzhongchangyongdefudianshuhezhengshuzhuanhuanweimxArrayjiegou

  

  

  benlizhongliyongMATLABhanshumxArray *mlfScalar(double v)hehanshudouble *mxGetPR(mxArray *)laishixianshenshugeshizhuanhuanhanshumlfScalar()jiangdoublexingbianliangcunruyigexinjiandemxArrayjiegouzhongbingfanhuizhizhenerhanshumxGetPr()jiangmxArrayjiegoubaocundeshishudeshibuquchuzhiyuqitashenshuzhuanhuanfangfakeshenkanshenkaowenxian3zhongdexiangguanbufen

  zuizhongkeyibianxiezheyangyigeliyongleMATLABshuxuehanshubingshixian
C语言实现MATLAB6.5中M文件的方法
jisuandehanshu

  double Mmessay(double ina, double inb) {

  mxArray *a,*b,*c; //sangeyongyuMATLABshuxuehanshujisuandeshenshu

  double *outc; //jisuanjieguobianliang

  a=mlfScalar((double)ina); //liyongmlfScalar()jinxingleixingzhuanhuan

  b=mlfScalar((double)inb);

  mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, "a")), mlfSqrt(mclVv(b, "b"))));

  outc=mxGetPr(c); //chuodejieguodeshibujijieguo

  mxDestroyArray(a); //shifangkongjian

  mxDestroyArray(b);

  mxDestroyArray(c);

  return *outc;

  }

  daocizhenggefanyiguochengwanchengdanshihuanbunengzhijietiaoyongzaizhegehanshudangzhongyunyongdaoleMATLABdeshuxuekuhanshumlfSqrt()mlcPlus()heshujuzhuanhuanhanshumlfScalar()mxGetPr()youyuzhexiehanshushiguhuazailianjiekudangzhongdeweilelianjiezhixingbixujiarujigekuwenjianhejigejingtailianjiekulibwenjiansuoxuyaodekuwenjianweimccminglingshengchengdemessay.cwenjiandangzhongsuojiarudekuwenjianyibanweilibmatlb.herxuyaojiarudejingtailianjiekuwenjianruxia

  libmat.liblibmatlb.liblibmex.liblibmx.lib

  jiarumeiyouyishangwenjiankeyiyongVCdelibminglingjiangMATLABxiangyingdedefwenjianzhuanhuaweilibwenjianzhuanhuageshiweilib /def:filename.def /machine:ix86 /out:filename.libQQread.com tuichuWindows2003jiaocheng win2003anzhuangjieshao win2003wangluoyouhua win2003使shiyongjiqiao win2003xitongguzhang fuwuqipeizhi zhuanjiadayi

  gengduodeqingkanhttp://www.qqread.com/windows/2003/index.Html

  fangfadejuxian

  使shiyongbenwensuoyongdefangfakeyijiangMwenjianfanyiweiCyuyandehanshudanshiyaoshoudaolianggeyinsudezhiyue

  1gongnengdeshixianshoudaoMATLAB Chanshukudexianzhi

  zhezhongfanyidejizhishiyouMATLABtigongdemccminglingnengzhijiefanyidehanshuyejinjuxianyuMATLAByuanyoudehanshuyinweizhexiehanshuyijingbeiMATLAB6.5bianyihaoyibanyimlfweiqianzhuicunyudongtailianjiekudangzhongbingkebeiCyuyanzhijietiaoyongzhexiehanshuzaishenkaowenxian4zhongkeyichadaoerchaochulezhegefanweidehanshubingzaiMwenjiandangzhongbeiqiantao使shiyongzaiyongmccjinxingfanyideshihoumccjiangzaihanshumingqianjiashangqianzhuimlfbingjinyibufanyigaihanshu

  danshizhezhongfanyishoudaoMATLABshenshuchuandidexianzhierbunengzhijietiaoyongzaibianyishihuichuxianzhaobudaoxiangyingdewaibuhanshudecuowujiejuebanfashishoudongjiangsuoyoubeifanyidehanshujinxingshenshuchuandifangshidetiaozhengjiaruMwenjiandangzhongbaohandehanshubeiqiantaofanyidecengshuhenshenzheyangdegongzuoliangshijudaerqiebukejieshoude

  tongshihenduogongjuxiangdangzhongdingyidehanshuyeshibuneng使shiyongzhezhongfangfajinxingfanyideMATLABdegongjuxianggengxinsuduhenkuaierxiangyingdeMATLAB Cdehanshukuyouyidingzhihoudaozhihenduozuixindegongjuxiangdangzhongdehanshushibunengbeifanyide

  2fanyibenshencunzaidexianzhi

  yinweizhezhongfanyishizunshouCyuyanyaoqiudeyinerduiyuneicunfenpeiyaoqiuheCyuyanbutongdehanshuheyixieguanyutuxingxianshileixingdehanshubaokuodaliangdeGUIxiangguanhanshuyebunengbeizhengquedefanyilirumash.mhestep.mzhelianggejiaochangyongdeMATLABhanshuyouyushangshudexianzhijiubunengyongbenfangfajinxingfanyi

  duiyushangshudewentikeyiliyongzaiCchengxudangzhongyunyongMATLAByinqingdefangfadongtaitiaoyongMATLABdekuhanshujibenshangkeyijiejueshangshusuoyoudehanshubunengbeizhengquefanyihetuxingxianshidewentidanshiyunyongMATLAByinqingdefangfaxuyaoliyongActiveXdezidonghuafuwuqizaiyunxingdeshihouchengxuhuizaihoutaizhixingyigeMATLABde线xianchengerbunengwanquantuoliMATLABdehuanjingyejiuyiweizhezaichunCdehuanjingxiashibunengyunyongdebixuyaoxiananzhuangMATLABbingnenggouzaiyunxingshizhichiduo线xianchenggongzuojutidefangfakeyishenyueshenkaowenxian3

  MATLAB 5.XheMATLAB 6.5dequbie

  duiyubenfangfayouyixiajidianqubiexuyaozhuchong

  (1)chengxudangzhongsuoxudekuwenjianyou5.Xbanbendematrix.hmcc.hmatlab.hgaiweimex.hlibmatlb.hlibmatlbm.hdengkuwenjian

  (2)chengxusuoxuyaojiarudejingtailianjiekuwenjianyou5.Xxuyaodelibmmfile.liblibmatlb.liblibmcc.liblibmx.libgaiweilibmat.liblibmatlb.liblibmex.liblibmx.libsigewenjian

  (3)APIhanshugaidonghenduosuiranshuxuehanshukujimlfqianzhuidehanshushaoyougaidongdanshiguanyubianliangjianlineicunzhiliheshujuleixingzhuanhuandehanshufashenggaibianjihenduoyuanmccqianzhuidehanshugaiweiyongmxweiqianzhuidehanshudaiti使shidehenduo5.XfanyideCchengxudaimabunengzai6.5xiangyingdekuxiayunxingtongguo

  (4)6.5banbenzhongzhijiezengjialezaiVChuanjingxiaduiMwenjiandezhichizaizhixingmbuild -setupdepeizhiminglinghouMATLABzaiVCzhongtigongleMATLAB Project WizardkezaiVChuanjingxiazhijiejianliMATLABdegongchenglaifanyiMwenjiandanshizhezhongfanyifangfazaipengdaoweidingyihanshuqiantaoshijiangcuowudebahanshumingfanyiweibianliangmingermccminglingjiangjinyibufanyineibuqiantaodehanshu原文
 
 
摘要:本文着重描述了运用MATLAB命令将M文件翻译为C语言程序,并修改为可直接调用的C语言函数的方法,使用该方法所需要注重的方法局限性和MATLAB版本差异的影响。运用该方法将能够使C语言能直接使用MATLAB当中已经完成的数学计算功能,大大扩充了C语言的数学计算功能和开发效率。   要害词:MATLAB;M文件;C语言接口   众所周知,MATLAB是一个功能强大的数学软件,擅长于用矩阵运算完成各种数学功能。但是其程序需要在MATLAB环境下解释执行,效率不高。假如能将它强大的函数库用于C语言,利用C来编译执行,MATLAB将能发挥更大的作用。所以,MATLAB从5.0开始已经提供了与外部C/C++程序的应用程序接口,为利用C语言调用MATLAB的函数提供了可能。但是MATLAB的接口发展很快,到MATLAB 6.5已经提供了对VC 7.0的支持,同时对C的接口相对于5.X版本有了一定的改变。   在MATLAB当中,我们利用M文件来实现函数,每一个M文件实现一个单独的功能,这一点和C语言当中的函数是相互对应的。所以,假如我们能将MATLAB中的M文件转化为C语言下的一个单个函数,就能实现MATLAB中相应的功能。   实现方法   整个过程可分为三个主要部分,用MATLAB将M文件翻译为C语言文件,从生成的C语言文件提取出有用语句,编写数据转换程序实现参数格式转换。整个过程最终将把M文件翻译成C语言当中的一个具有相同功能的函数,供其它的程序调用。   本文用一个最简单的M文件来示例:   文件名:messay.m function c=messay() a=3.4; b=5.6; c=sqrt(a)+sqrt(b);   该m文件实现了计算[url=http://www.wangchao.net.cn/bbs/hydetail_1785378.html][img]http://image.wangchao.net.cn/it/1323423675903.gif[/img][/url]   1、将M文件编译为C语言文件   为了将M文件翻译为C语言文件,需要进行一定的设置,这里假设编写C语言的环境为VC6.0,在MATLAB命令提示符下输入mex -setup和mbuild -setup命令,在相应选项中选择Microsoft Visual C/C++即可。   在MATLAB命令行中使用mcc命令将messay.m翻译为C代码。 mcc -m messay.m   其中的参数-m代表mcc命令将把m文件翻译成C语言的代码。   翻译命令将在messay.m所在的文件夹下生成三个C语言文件:messay.h,messay.c和messay_main.c。其中messay_main.c提供了main()函数;messay.h提供了整个程序的函数声明;messay.c包含了MATLAB生成的功能函数。这三个文件当中,messay.c中包含了我们所需要的数学函数。   2、提取有用语句   通过分析,发现由mcc生成的代码内部参数传送方式由MATLAB链接库规定,难以改动,因此需要提取有用的代码,并更改生成代码的参数传递方式。同时从生成代码的注释中可以看出,真正蕴含M文件功能实现的代码段都在Mmessay()函数当中(该函数名的默认构造方式为前缀M加上M文件的文件名),而其它的生成函数仅实现参数传递和标准化接口服务的功能。   所以提取代码的具体方法是利用messay.c当中生成的static mxArray * Mmessay(int nargout_)函数,对该函数进行修改,而其他的生成函数都可以忽略不用。原生成的Mmessay()代码如下: static mxArray * Mmessay(int nargout_) {  mexLocalFunctionTable save_local_function_table = mclSetCurrentLocalFunctionTable(&_local_function_table_messay);  mxArray * c = NULL;  mxArray * b = NULL;  mxArray * a = NULL;  mlfAssign(&a, _mxarray0_);  mlfAssign(&b, _mxarray1_);  mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, "a")), mlfSqrt(mclVv(b, "b"))));  mclValidateOutput(c, 1, nargout_, "c", "messay");  mxDestroyArray(a);  mxDestroyArray(b);  mclSetCurrentLocalFunctionTable(save_local_function_table_);  return c; }   在生成代码当中,mclSetCurrentLocalFunctionTable和mclSetCurrentLocalFunctionTable函数为两个外部函数,将参数传给外部,与其相关的部分都对C程序使用数学函数没有影响。最终实际有用并执行运算的只有一句: mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, "a")), mlfSqrt(mclVv(b, "b"))));   实际上,由MATLAB翻译的C语句中,大部分的和实际计算有关的语句和自生成的函数都以mlf开头,所以寻找有用语句的简单方法就是直接寻找mlf为前缀的代码。   3、参数格式转换   应当指出,MATLAB所有的计算都是基于一种名为mxArray的数据结构之上的,所有的浮点数、向量或者是矩阵在MATLAB当中都是通过mxArray结构来进行存储和传递的。当然,MATLAB所提供的所有数学函数也都是基于这样一种数据结构进行运算的。所以,要使用MATLAB的生成代码,就必须将C语言当中常用的浮点数和整数转换为mxArray结构。   本例中利用MATLAB函数mxArray *mlfScalar(double v)和函数double *mxGetPR(mxArray *)来实现参数格式转换。函数mlfScalar()将double型变量存入一个新建的mxArray结构中,并返回指针,而函数mxGetPr()将mxArray结构保存的实数的实部取出。至于其它参数转换方法可参看参考文献3中的相关部分。   最终可以编写这样一个利用了MATLAB数学函数并实现[url=http://www.wangchao.net.cn/bbs/hydetail_1785378.html][img]http://image.wangchao.net.cn/it/1323423675932.gif[/img][/url]计算的函数: double Mmessay(double ina, double inb) {  mxArray *a,*b,*c; //三个用于MATLAB数学函数计算的参数  double *outc; //计算结果变量  a=mlfScalar((double)ina); //利用mlfScalar()进行类型转换  b=mlfScalar((double)inb);  mlfAssign(&c, mclPlus(mlfSqrt(mclVv(a, "a")), mlfSqrt(mclVv(b, "b"))));  outc=mxGetPr(c); //c获得结果的实部,即结果  mxDestroyArray(a); //释放空间  mxDestroyArray(b);  mxDestroyArray(c);  return *outc; }   到此,整个翻译过程完成,但是还不能直接调用。在这个函数当中运用到了MATLAB的数学库函数mlfSqrt()、mlcPlus()和数据转换函数mlfScalar()、mxGetPr()。由于这些函数是固化在链接库当中的,为了连接执行,必须加入几个库文件和几个静态链接库lib文件。所需要的库文件为mcc命令生成的messay.c文件当中所加入的库文件,一般为libmatlb.h,而需要加入的静态链接库文件如下: libmat.lib,libmatlb.lib,libmex.lib,libmx.lib   假如没有以上文件,可以用VC的lib命令将MATLAB相应的def文件转化为lib文件,转化格式为lib /def:filename.def /machine:ix86 /out:filename.lib。QQread.com 推出Windows2003教程 win2003安装介绍 win2003网络优化 win2003使用技巧 win2003系统故障 服务器配置 专家答疑 更多的请看:http://www.qqread.com/windows/2003/index.Html   方法的局限   使用本文所用的方法可以将M文件翻译为C语言的函数,但是要受到两个因素的制约。   1、功能的实现受到MATLAB C函数库的限制   这种翻译的机制是由MATLAB提供的,mcc命令能直接翻译的函数也仅局限于MATLAB原有的函数。因为这些函数已经被MATLAB6.5编译好,一般以mlf为前缀,存于动态链接库当中并可被C语言直接调用。这些函数在参考文献4中可以查到。而超出了这个范围的函数,并在M文件当中被嵌套使用,在用mcc进行翻译的时候,mcc将在函数名前加上前缀mlf,并进一步翻译该函数。   但是,这种翻译受到MATLAB参数传递的限制,而不能直接调用,在编译时会出现找不到相应的外部函数的错误。解决办法是手动将所有被翻译的函数进行参数传递方式的调整。假如M文件当中包含的函数被嵌套翻译的层数很深,这样的工作量是巨大而且不可接受的。 同时很多工具箱当中定义的函数也是不能使用这种方法进行翻译的。MATLAB的工具箱更新速度很快,而相应的MATLAB C的函数库有一定滞后,导致很多最新的工具箱当中的函数是不能被翻译的。   2、翻译本身存在的限制   因为这种翻译是遵守C语言要求的,因而对于内存分配要求和C语言不同的函数和一些关于图形显示类型的函数(包括大量的GUI相关函数)也不能被正确的翻译。例如mash.m和step.m这两个较常用的MATLAB函数,由于上述的限制,就不能用本方法进行翻译。   对于上述的问题,可以利用在C程序当中运用MATLAB引擎的方法动态调用MATLAB的库函数,基本上可以解决上述所有的函数不能被正确翻译和图形显示的问题。但是,运用MATLAB引擎的方法需要利用ActiveX的自动化服务器,在运行的时候程序会在后台执行一个MATLAB的线程而不能完全脱离MATLAB的环境,也就意味着在纯C的环境下是不能运用的,必须要先安装MATLAB并能够在运行时支持多线程工作。具体的方法可以参阅参考文献3。   MATLAB 5.X和MATLAB 6.5的区别   对于本方法有以下几点区别需要注重:   (1)程序当中所需的库文件由5.X版本的matrix.h、mcc.h、matlab.h改为mex.h、libmatlb.h、libmatlbm.h等库文件。   (2)程序所需要加入的静态链接库文件由5.X需要的libmmfile.lib、libmatlb.lib、libmcc.lib、libmx.lib改为libmat.lib、libmatlb.lib、libmex.lib、libmx.lib四个文件。   (3)API函数改动很多,虽然数学函数库即mlf前缀的函数少有改动,但是关于变量建立,内存治理和数据类型转换的函数发生改变,即很多原mcc前缀的函数改为用mx为前缀的函数代替,使得很多5.X翻译的C程序代码不能在6.5相应的库下运行通过。   (4)6.5版本中直接增加了在VC环境下对M文件的支持。在执行mbuild -setup的配置命令后,MATLAB在VC中提供了MATLAB Project Wizard,可在VC环境下直接建立MATLAB的工程来翻译M文件。但是这种翻译方法在碰到未定义函数嵌套时将错误的把函数名翻译为变量名,而mcc命令将进一步翻译内部嵌套的函数。
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
单纯美女 迷人女孩
校园甜美少女
忍辱负重
大学校园
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有