当前位置: 澳门新濠3559 > 操作系统 > 正文

【澳门新濠3559】 的创业孵化器 ,如果运行时过

时间:2019-12-21 19:57来源:操作系统
问题描述: 用VB6写了个ActiveXDLL,类名是oManager。以下代码是ExcelVBA调用此DLL的两个过程:有New的时候运行正常,没有New的时候提示对象引用出错。个人认为ObjDLL是全局变量,创建对象实

问题描述:用VB6写了个ActiveXDLL,类名是oManager。以下代码是ExcelVBA调用此DLL的两个过程:有New的时候运行正常,没有New的时候提示对象引用出错。个人认为ObjDLL是全局变量,创建对象实例后也一直没有被释放,为何无New就报错?OptionExplicitPublicObjDLLAsNewoManager_Prj.oManager(就是这个妞^_^)==================================================================================PublicSubIFace_oManager()OnErrorResumeNextSetObjDLL=GetObject(,"oManager_Prj.oManager")IfErrThenErr.Clear:SetObjDLL=CreateObject("oManager_Prj.oManager")IfErrThenMsgBoxErr.DescriptionExitSubEndIfEndIfEndSub==================================================================================PublicSub管理系统()IFace_oManager:ObjDLL.ShowMainFormEndSub提前祝各位新年快乐,步步高升!

Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票。简而言之,Hacker News 允许提交任何可以被理解为“任何满足人们求知欲”的新闻。

上次学习了数据结构的内容,感受是全部是C语言代码,硬看理解起来很慢,半年或一年内的目标是选择一门或两门课程持续性学习,因此开始学习高数的第一章剩下的3节4节,看了一些例题,但题做的还是少,掌握的不够透。

AndroidService组件在GoogleAndroidSDK官网上的定义是这样的:AServiceisanapplicationcomponentrepresentingeitheranapplication'sdesiretoperformalonger-runningoperationwhilenotinteractingwiththeuserortosupplyfunctionalityforotherapplicationstouse.Eachserviceclassmusthaveacorrespondingdeclarationinitspackage'sAndroidManifest.xml.ServicescanbestartedwithContext.startService()andContext.bindService().Notethatservices,likeotherapplicationobjects,runinthemainthreadoftheirhostingprocess.Thismeansthat,ifyourserviceisgoingtodoanyCPUintensive(suchasMP3playback)orblocking(suchasnetworking)operations,itshouldspawnitsownthreadinwhichtodothatwork.MoreinformationonthiscanbefoundinProcessesandThreads.TheIntentServiceclassisavailableasastandardimplementationofServicethathasitsownthreadwhereitschedulesitsworktobedone.在中文中,他的表述是服务。Android赋予了Service比处于不活动状态的活动更高的优先级,这样,在系统请求资源的时候,他们被终止的可能行更小。事实上,如果运行时过早的终止一个已启动的服务,那么只要有足够的资源可用,则运行时就会重新启动它。在极端情况中,服务的终止将会显著的影响用户体验,从而导致软件设计上的UI与UE的互动缺失,在这些情况中,可以把服务的优先级提升到与前台的活动相同的位置。通过使用服务,可以保证应用程序持续的运行,并对事件作出响应,即使他们被主动地使用也是此。Service运行时没有专门的GUI,但是,与活动以及广播接收器一样,他们仍然应该在应用程序进程的主进程执行。下面将为大家简要介绍一下Android中使用Java进线程调用的使用方法。1.创建一个线程[java]viewplaincopy/***@CopyrightbyAlfredZ.Zheng,Cindigo.2011-09.Wuhan.*AninnovativeclubinHuazhongUniv.ofSci.Tech.*Prj.name:org.cindigo.javatestthread1*/classMythreadimplementsRunnable{//Mythread实现了Runnableintcount;StringthrdName;Mythread(Stringname){count=0;thrdName=name;}publicvoidrun(){//线程运行起点System.out.println(thrdName+"startathread.");try{do{Thread.sleep(1000);System.out.println("@At"+thrdName+",resultis"+count);count++;}while(count10);}catch(InterruptExceptionexc){System.out.println(thrdName+"interrupted.");}System.out.println(thrdName+"timingup!");}}classUseThreads{publicstaticvoidmain(Stringargs[]){System.out.println("Startingamainthread...");//创建一个可运行的对象MyThreadmyth=newMyThread("ActivityNo.1");//在该对象上构造一个线程Threadnewth=newThread(myth);newth.start();do{System.out.println("ActivityNo.2");try{Thread.sleep(500);}catch(InterruptExceptionexc){System.out.println("ActivityNo.3");}}while(myth.count!=10);System.out.println("ActivityNo.4");}}2.创建多个线程[java]viewplaincopy/***@CopyrightbyAlfredZ.Zheng,Cindigo.2011-09.Wuhan.*AninnovativeclubinHuazhongUniv.ofSci.Tech.*Prj.name:org.cindigo.javatestthread2*///创建多重线程classMyThreadimplementsRunnable{intcount;Threadthrd;//建立新线程MyThread(Stringname){thrd=newThread(this,name);count=0;thrd.start();//开启线程}//开启新的主线程publicvoidrun(){System.out.println(thrd.getName()+"starting.");try{do{Thread.sleep(500);System.out.println("In"+thrd.getName()+",countis"+count);count++;}while(count10);}catch(InterruptExceptionexc){System.out.println(thrd.getName()+"interrupted.");}System.out.println(thrd.getName()+"timingup!");}}classUseThreadsImpoved{publicstaticvoidmain(Stringarg[]{System.out.println("Mainthreadstarting.");//现在线程在创建时启动Mythreadmyth=newMyThread("MyActivityNo.1");do{System.out.println(".");try{Thread.sleep(1000);}catch(InterruptExceptionexc){System.out.println("MyActivityNo.2");}}while(myth.count!=10);System.out.println("MyActivityNo.2");}}下面为大家讲一下AndroidService组件的创建并初步的使用的方法。首先为大家简要介绍一下Service的生命周期。onBind(Intentintent):是Service实现功能的最重要的方法,调用时会返回一个绑定的接口给Service。onCreate():当Service初次创建时被系统自动调用。onStart(Intentintent,intstartid):当startService()方法启动Service时,这个方法会被自动调用。onDestroy():终止Service时,系统会调用这个方法。1.创建一个Service[java]viewplaincopy/***@Copyright®Cindigo,HUST,Wuhan.*Prj.:org.cindigo.jetaime*/importandroid.app.Service;importandroid.content.Intent;importandroid.os.Binder;importandroid.os.IBinder;importandroid.util.Log;importandroid.widget.Toast;publicclassMyServiceextendsService{privatestaticfinalStringTAG="CONNECTION";privatestaticfinalbooleanJudge=true;publicIBinderonBind(Intentintent){Log.i(TAG,"BindSuccess!");}@OverridepublicvoidonCreate(){Toast.makeText(this,"MyServiceCreated",Toast.LENGTH_SHORT).show();if(Judge)Log.d(TAG,"onCreate");}@OverridepublicvoidonStart(Intentintent,intstartid){Toast.makeText(this,"MyServiceStarted",Toast.LENGTH_SHORT).show();if(Judge)Log.d(TAG,"onStart");}@OverridepublicvoidonDestroy(){Toast.makeText(this,"MyServiceStopped",Toast.LENGTH_SHORT).show();if(Judge)Log.d(TAG,"onDestroy");}}2.启动和停止线程[java]viewplaincopy/***@Copyright®Cindigo,HUST,Wuhan.*Prj.:org.cindigo.jetaime*/importandroid.app.Service;importandroid.content.Intent;//创建一个IntentIntentintent=newIntent();//设置动作属性intent.setAction("logging1...");//启动这个ServicestartService(intent);//终止一个ServicestopService(intent);3.绑定和解绑一个已存在的Service[java]viewplaincopy/***@Copyright®Cindigo,HUST,Wuhan.*Prj.:org.cindigo.jetaime*/importandroid.content.Intent;importandroid.content.ServiceConnection;importandroid.content.SharedPreferences;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.IBinder;importandroid.util.Log;publicvoidBindService(){//绑定服务if(!mIsBound){bindService(newIntent(this,ConnectService.class),mConnection,Context.BIND_AUTO_CREATE);mIsBound=true;}}publicvoidUnbindService(){//解绑服务if(mIsBound){unbindService(mConnection);mIsBound=false;}}privateServiceConnectionmConnection=newServiceConnection(){//服务连接对象publicvoidonServiceConnected(ComponentNameclassName,IBinderservice){mConnectService=((ConnectService.LocalBinder)service).getService();//获得已绑定的服务mConnectService.GetServer(LOGON_HOST,LOGON_PORT);mConnectService.connect();}publicvoidonServiceDisconnected(ComponentNameclassName){mConnectService=null;Log.i("Q","EEE");}}4.应用实例4.1MainActivity.java文件[java]viewplaincopy/***@Copyright®Cindigo,HUST,Wuhan.*Prj.:org.cindigo.jetaime*/importandroid.app.Activity;importandroid.app.Service;importandroid.content.ComponentName;importandroid.content.Intent;importandroid.content.ServiceConnection;importandroid.os.Bundle;importandroid.os.IBinder;importandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.Toast;publicclassMainActivityextendsActivity{//声明ButtonprivateButtonstartBtn,stopBtn,bindBtn,unbindBtn;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//设置当前布局视图setContentView(R.layout.main);//实例化ButtonstartBtn=(Button)findViewById(R.id.startButton01);stopBtn=(Button)findViewById(R.id.stopButton02);bindBtn=(Button)findViewById(R.id.bindButton03);unbindBtn=(Button)findViewById(R.id.unbindButton04);//添加监听器startBtn.setOnClickListener(startListener);stopBtn.setOnClickListener(stopListener);bindBtn.setOnClickListener(bindListener);unbindBtn.setOnClickListener(unBindListener);}//启动Service监听器privateOnClickListenerstartListener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){//创建IntentIntentintent=newIntent();//设置Action属性intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");//启动该ServicestartService(intent);}};//停止Service监听器privateOnClickListenerstopListener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){//创建IntentIntentintent=newIntent();//设置Action属性intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");//启动该ServicestopService(intent);}};//连接对象privateServiceConnectionconn=newServiceConnection(){@OverridepublicvoidonServiceConnected(ComponentNamename,IBinderservice){Log.i("SERVICE","连接成功!");Toast.makeText(MainActivity.this,"连接成功!",Toast.LENGTH_LONG).show();}@OverridepublicvoidonServiceDisconnected(ComponentNamename){Log.i("SERVICE","断开连接!");Toast.makeText(MainActivity.this,"断开连接!",Toast.LENGTH_LONG).show();}};//綁定Service监听器privateOnClickListenerbindListener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){//创建IntentIntentintent=newIntent();//设置Action属性intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");//绑定ServicebindService(intent,conn,Service.BIND_AUTO_CREATE);}};//解除绑定Service监听器privateOnClickListenerunBindListener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){//创建IntentIntentintent=newIntent();//设置Action属性intent.setAction("com.amaker.ch07.app.action.MY_SERVICE");//解除绑定ServiceunbindService(conn);}};}4.2MyService.java文件[java]viewplaincopy/***@Copyright®Cindigo,HUST,Wuhan.*Prj.:org.cindigo.jetaime*/importandroid.app.Service;importandroid.content.Intent;importandroid.os.IBinder;importandroid.util.Log;importandroid.widget.Toast;/***@author郭宏志*测试Service*/publicclassMyServiceextendsService{//可以返回null,通常返回一个有aidl定义的接口publicIBinderonBind(Intentintent){Log.i("SERVICE","onBind.");Toast.makeText(MyService.this,"onBind.",Toast.LENGTH_LONG).show();returnnull;}//Service创建时调用publicvoidonCreate(){Log.i("SERVICE","onCreate.");Toast.makeText(MyService.this,"onCreate.",Toast.LENGTH_LONG).show();}//当客户端调用startService()方法启动Service时,该方法被调用publicvoidonStart(Intentintent,intstartId){Log.i("SERVICE","onStart.");Toast.makeText(MyService.this,"onStart.",Toast.LENGTH_LONG).show();}//当Service不再使用时调用publicvoidonDestroy(){Log.i("SERVICE","onDestroy.");Toast.makeText(MyService.this,"onDestroy.",Toast.LENGTH_LONG).show();}}原文地址:

澳门新濠3559 1

数量积与向量积:
定理 1 :(数量积的运算符)

每个新闻标题前面有一个向上的三角形,如果你觉得这个内容很好,就点击一下,投上一票。根据得票数,系统自动统计出热门文章排行榜。但是,并非得票最多的文章排在第一位,还要考虑时间因素,新文章应该比旧文章更容易得到好的排名。

1)交换律:α · β = β · α;
2)结合律:λ(α · β)=(λa)· β = a ·(λβ),其中 λ 是数量;
3)分配律:(α + β)· γ = α · γ + β · γ 由公式2得
(α + β)· γ = | γ | · Prj r (α + β)= | γ | · Prj r α + | γ | · Prj r β = α · γ + β · γ;

Hacker News 采用公式 (p – 1) / (t + 2)^1.5 做为排行依据(Hacker News使用Paul Graham开发的Arc语言编写,源码可以从arclanguage.org下载),其中P是投票数量,t是发表以来的时间,小时计。后来AMIX.DK 给出公式 Score = (P-1) / (T+2)^G 推广了上面的公式,Hacker News的公式变成了一个特例,其在G=1.5时的应用。历史上Hacker News有用G=1.8。

定理 2 :(向量垂直与数量积的关系)

第一个因素是得票数P

向量 α 与 β 相互垂直的充分必要条件是 α · β = 0 (规定:零向量与任何向量垂直)
证 :必要性 设 α 与 β 相互垂直. 如果 α = 0 或 β = 0,则 | α | = 0 或 | β | = 0,此时必要性成立;如果 α 与 β 都是非零向量,垂直时它们的夹角 φ = φ/2,于是 α · β = | α | · | β | · 0 = 0,必要性也成立。

在其他条件不变的情况下,得票越多,排名越高。从下图可以看到,有三个同时发表的帖子,得票分别为200票、60票和30票(减1后为199、59和29),分别以黄色、紫色和蓝色表示。在任一个时间点上,都是黄色曲线在最上方,蓝色曲线在最下方。

定理3 : (向量积的运算律)

澳门新濠3559 2

1)反交换律: α x β = - (β x α);
2)结合律:λ(α x β)=(λa)x β = a x(λβ),其中 λ 是数量;
3)分配律:γ x(α + β)= α x γ + β x γ

为什么是P-1?网络上的一种解释是,很多文章作者在提交的时候会给自己投上一票。其实更重要的原因是文章发布初期的投票数对排名影响非常的,仅仅是自己给自己投的一票,也占非常大的作用。

定理4:(向量积与向量的平行的关系)

假设P不去减去1,那公式为: p / (t + 2)^1.5

两个向量 α 与 β 相互平行的充分必要条件是:α x β = 0

如果一个作者发布完就给自己投票,那么文章的得分为1/(0+2)^1.5=0.3535 。假设另外一篇文章发布了8小时,那么需要多少的投票呢?x/(8+2)^1.5>0.3535 X>11.17~ 即一天前的帖子要有12票才能超过新提交的文章,这显然不合理。

空间的曲面和曲线:

这个具体减多少还要视网络环境而定,要是换在国内,估计P-100还不够。另外如果你不期望“高投票文章”与“低投票文章差距过大,可以在得票数上加一个小于1的指数,比如(P-1)^0.8。

定义1:(曲面方程)

第二个因素是距离发帖时间T

给定曲面S与三元方程 F(x,y,z) = 0 ,且已知方程的解集非空.若曲面S 与方程有下述关系
1)曲面S上的点都满足方程F(x,y,z) = 0 ,即S上任何点的坐标都是解
2)解都放在S上,即任何解 x,y,z 所对应的点P(x,y,z)都在S上,则称方程F(x,y,z) = 0 为曲面S的方程。
定理:
给定方程F(x,y,z)=0 和 G(x,y,z)= 0,它们的解集非空,分别设为Ωf,Ωg.
1)这两个方程表示同一个曲面的充分必要条件是它们为同解方程,即Ωf = Ωg;
2)如果Ωf ⊂ Ωg,即G(x,y,z) = 0 的解集包含了 F(x,y,z) = 0 的解集,则 F(x,y,z) = 0 表示的曲面是G(x,y,z) = 0表示的曲面的一部分。

在其他条件不变的情况下,越是新发表的帖子,排名越高。或者说,一个帖子的排名,会随着时间不断下降。

定义2:(旋转曲面)

从前一张图可以看到,经过24小时之后,所有帖子的得分基本上都小于1,这意味着它们都将跌到排行榜的末尾,保证了排名前列的都将是较新的内容。

一条平面曲线C绕在它所在平面的一条直线L旋转一周所生成的曲面称为旋转曲面,其中曲线C称为旋转曲面的母线,直线L称为旋转曲面的旋转轴。

如果,用户的第一个投票是在当前,1小时,2小时获得时,这个曲线的变化是什么呢?如下图,曲线斜率从大到小分别是当前、1小时、2小时。可以看到第一个投票的作用不断弱化,其权重不断降低。

定义3:(母线平行与坐标轴的柱面方程)
平行于定直线 L 并沿定曲线C移动的直线j所生成的曲面为柱面,动直线j在移动中的每一个位置为柱面的母线,曲线C称为准线。

澳门新濠3559 3

澳门新濠3559 4

第三个因素是重力因子G

image.png

它的数值大小决定了排名随时间下降的速度。从下图可以看到,三根曲线的其他参数都一样,G的值分别为1.5、1.8和2.0。G值越大,曲线越陡峭,排名下降得越快。

澳门新濠3559 5

澳门新濠3559 6

image.png

为什么G=1.5,首先,G是干嘛的。毫无疑问,G这个数字既非时间,也非评价,其实它的主要目的是控制更新频率。G的值越大,score的衰减速度越快,排行的更新越频繁。所以,确定G值需要观察系统内部投票数在时间上的分布,然后根据需要的更新频次确定G的合理取值。越火爆、用户互动越频繁的社区,为了保证排行的稳定性(不要频繁大量的刷新),G值趋向于比较低。这就是为什么Hacker News从一开始的1.8修改成1.5,过段时间可能就变成1.2了。

澳门新濠3559 7

拓展阅读:基于贝叶斯算法的IMDB排名

image.png

参考文章:

编辑:操作系统 本文来源:【澳门新濠3559】 的创业孵化器 ,如果运行时过

关键词: