守护进程与Go(golang)服务一同使用的守护程序包例子最简单的示例(只需将self安装为守护程序)packagemainimport("fmt""log""github.com/takama/daemon")funcmain(){service,err:=daemon.New("name","description",daemon.SystemDaemon)iferr!=nil{log.Fatal("Error:",err)}status,err:=service.Install()iferr!=nil{log.Fatal(status,"\nError:",err)}fmt.Println(status)}真实的例子//Exampleofadaemonwithechoservicepacka
2023/3/18 1:52:56 26KB go linux golang service
1
操作系统课的实验(银里手算法)#include"malloc.h"  #include"stdio.h"  #include"stdlib.h"  #definealloclensizeof(structallocation)  #definemaxlensizeof(structmax)  #defineavalensizeof(structavailable)  #defineneedlensizeof(structneed)  #definefinilensizeof(structfinish)  #definepathlensizeof(structpath)  structallocation  {  intvalue;  structallocation*next;  };  structmax  {  intvalue;  structmax*next;  };  structavailable/*可用资源数*/  {  intvalue;  structavailable*next;  };  structneed/*需求资源数*/  {  intvalue;  structneed*next;  };  structpath  {  intvalue;  structpath*next;  };  structfinish  {  intstat;  structfinish*next;  };  intmain()  {  introw,colum,status=0,i,j,t,temp,processtest;  structallocation*allochead,*alloc1,*alloc2,*alloctemp;  structmax*maxhead,*maxium1,*maxium2,*maxtemp;  structavailable*avahead,*available1,*available2,*workhead,*work1,*work2,*worktemp,*worktemp1;  structneed*needhead,*need1,*need2,*needtemp;  structfinish*finihead,*finish1,*finish2,*finishtemp;  structpath*pathhead,*path1,*path2;  printf("\n请输入系统资源的种类数:");  scanf("%d",&colum);  printf("请输入现时内存中的进程数:");  scanf("%d",&row);  printf("请输入已分配资源矩阵:\n");  for(i=0;inext=alloc2->next=NULL;  scanf("%d",&allochead->value);  status++;  }  else  {  alloc2=(structallocation*)malloc(alloclen);  scanf("%d,%d",&alloc2->value);  if(status==1)  {  allochead->next=alloc2;  status++;  }  alloc1->next=alloc2;  alloc1=alloc2;  }  }  }  alloc2->next=NULL;  status=0;  printf("请输入最大需求矩阵:\n");  for(i=0;inext=maxium2->next=NULL;  scanf("%d",&maxium1->value);  status++;  }  else  {  maxium2=(structmax*)malloc(maxlen);  scanf("%d,%d",&maxium2->value);  if(status==1)  {  maxhead->next=maxium2;  status++;  }  maxium1->next=maxium2;  maxium1=maxium2;  }  }  }  maxium2->next=NULL;  status=0;  printf("请输入现时系统剩余的资源矩阵:\n");  for(j=0;jnext=available2->next=NULL;  work1->next=work2->next=NULL;  scanf("%d",&available1->value);  work1->value=available1->value;  status++;  }  else  {  available2=(structavailable*)malloc(avalen);  work2=(structavailable*)malloc(avalen);  scanf("%d,%d",&available2->value);  work2->value=available2->value;  if(status==1)  {  avahead->next=available2;  workhead->next=work2;  status++;  }  available1->next=available2;  available1=available2;  work1->next=work2;  work1=work2;  }  }  available2->next=NULL;  work2->next=NULL;  status=0;  alloctemp=allochead;  maxtemp=maxhead;  for(i=0;inext=need2->next=NULL;  need1->value=maxtemp->value-alloctemp->value;  status++;  }  else  {  need2=(structneed*)malloc(needlen);  need2->value=(maxtemp->value)-(alloctemp->value);  if(status==1)  {  needhead->next=need2;  status++;  }  need1->next=need2;  need1=need2;  }  maxtemp=maxtemp->next;  alloctemp=alloctemp->next;  }  need2->next=NULL;  status=0;  for(i=0;inext=finish2->next=NULL;  finish1->stat=0;  status++;  }  else  {  finish2=(structfinish*)malloc(finilen);  finish2->stat=0;  if(status==1)  {  finihead->next=finish2;  status++;  }  finish1->next=finish2;  finish1=finish2;  }  }  finish2->next=NULL;/*Initializationcompleated*/  status=0;  processtest=0;  for(temp=0;tempstat==0)  {  for(j=0;jnext,worktemp=worktemp->next)  if(needtemp->valuevalue)  processtest++;  if(processtest==colum)  {  for(j=0;jvalue+=alloctemp->value;  worktemp1=worktemp1->next;  alloctemp=alloctemp->next;  }  if(status==0)  {  pathhead=path1=path2=(structpath*)malloc(pathlen);  path1->next=path2->next=NULL;  path1->value=i;  status++;  }  else  {  path2=(structpath*)malloc(pathlen);  path2->value=i;  if(status==1)  {  pathhead->next=path2;  status++;  }  path1->next=path2;  path1=path2;  }  finishtemp->stat=1;  }  else  {  for(t=0;tnext;  finishtemp->stat=0;  }  }  else  for(t=0;tnext;  alloctemp=alloctemp->next;  }  processtest=0;  worktemp=workhead;  finishtemp=finishtemp->next;  }  }  path2->next=NULL;  finishtemp=finihead;  for(temp=0;tempstat==0)  {  printf("\n系统处于非安全状态!\n");  exit(0);  }  finishtemp=finishtemp->next;  }  printf("\n系统处于安全状态.\n");  printf("\n安全序列为:\n");  do  {  printf("p%d",pathhead->value);  }  while(pathhead=pathhead->next);  printf("\n");  return0;  }#include"string.h"#include#include#defineM5#defineN3#defineFALSE0#defineTRUE1/*M个进程对N类资源最大资源需求量*/intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*系统可用资源数*/intAVAILABLE[N]={10,5,7};/*M个进程对N类资源最大资源需求量*/intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};/*M个进程已经得到N类资源的资源量*/intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*M个进程还需要N类资源的资源量*/intRequest[N]={0,0,0};voidmain(){inti=0,j=0;charflag='Y';voidshowdata();voidchangdata(int);voidrstordata(int);intchkerr(int);showdata();while(flag=='Y'||flag=='y'){i=-1;while(i=M){printf("请输入需申请资源的进程号(从0到");printf("%d",M-1);printf(",否则重输入!):");scanf("%d",&i);if(i=M)printf("输入的进程号不存在,重新输入!\n");}printf("请输入进程");printf("%d",i);printf("申请的资源数\n");for(j=0;jNEED[i][j]){printf("进程");printf("%d",i);printf("申请的资源数大于进程");printf("%d",i);printf("还需要");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}else{if(Request[j]>AVAILABLE[j]){printf("进程");printf("%d",i);printf("申请的资源数大于系统可用");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}}}if(flag=='Y'||flag=='y'){changdata(i);if(chkerr(i)){rstordata(i);showdata();}elseshowdata();}elseshowdata();printf("\n");printf("是否继续银里手算法演示,按'Y'或'y'键继续,按'N'或'n'键退出演示:");scanf("%c",&flag);}}voidshowdata(){inti,j;printf("系统可用的资源数为:\n");printf("");for(j=0;j");}printf("\n");return0;}
2015/11/20 3:54:43 883KB 算法 银行家
1
状态页基于UptimeRobotAPI的状态页面English|引见这是一个基于UptimeRobotAPI的状态监控页面。
您可以通过修改项目根目录中的config.ts文件来生成自己的状态监视页面。
如果您对我的项目不满意,也可以尝试。
演示版参见。
截屏展开以查看屏幕截图部署方式环境变量您可以传入环境变量而不是配置文件来修改页面样式。
展开以查看表格姓名描述默认类型KEY--UptimeRobotAPI密钥FAVICON页面图标/favicon.ico网址PAGE_TITLE页面标题,在<head>状态页文本PAGE_DESC页面描述,在<head>基于UptimeRobotAPI的状态页面。
文本THEME页面主题样式黑暗的dark或lightSHOW_HEADER_TEXT
2020/4/16 10:07:45 552KB nextjs uptimerobot TypeScript
1
Sensu磁盘检查插件总览此插件提供了用于监视和指标收集的本机磁盘工具,包括:运行情况,使用情况和各种指标。
从该存储库打包的Sensu资产是针对Sensuruby​​运行时环境构建的。
将这些资产用作SensuGo资源(检查,更改程序或处理程序)的一部分时,请确保在资源所需的资产列表中包括相应的Sensuruby​​运行时资产。
当前的Ruby运行时资产可以在的档案bin/check-disk-usage.rbbin/check-fstab-mounts.rbbin/check-smart-status.rbbin/check-smart.rb
2016/7/3 22:51:06 31KB monitoring metrics sensu-plugins disk-usage
1
路线[GET]“/api/[型号称号]”Output{ status:Number, data:Array[Object]}[POST]“/api/[型号称号]”Input{ name:String}Output{ status:Number, data:Object}[PUT]“/api/[型号称号]/[id]”Input{ name:String}Output{ status:Number, data:Object}[删除]“/api/[型号称号]/[id]”Output{ status:Number, d
2016/7/2 21:48:03 31KB JavaScript
1
linux检查linux-inspect实现了各种Linux检查适用程序。
goget-vgithub.com/gyuho/linux-inspect/cmd/linux-inspectUsage:linux-inspect[command]AvailableCommands:dsInspects'/proc/diskstats'nsInspects'/proc/net/dev'psInspects'/proc/$PID/status','top'commandoutputssInspects'/proc/net/tcp,tcp6'
2022/9/6 12:27:33 1.31MB linux socket monitor monitoring
1
grafana-simple-sql-datasource允许查询基于SQL的数据源,例如SQLServer。
用法当前,该插件需要运转代理服务器才能与数据库通信。
安装sqlproxyserver在dist/serverside文件夹中运转npminstall以安装所有依赖项在插件目录上运转npminstall运转服务器端代码dist/serverside/sqlproxyserver.js在您的浏览器http://myserver:port/con=mssql://user:name@server/database您必须获得{"status":"sucess"}响应添加新数据源向Grafana添加新数据源,并将URL设置为:http://myserver:port/con=mssql://user:name@server/database哪里:myserver:port:运转sqlproxyserver的服务器con:指定sql连接字符串SQL数据库当前支持SQL数据库SQL服务器SQLServer连接由mssqp程序包产品
2022/9/2 21:23:59 639KB sql grafana datasource SQLJavaScript
1
postAjaxHandlerajaxHandler=newAjaxHandler("这里填网站","utf-8");//Post的数据Mapmap=newHashMap();map.put("user","admin");map.put("pass","123");//内部实现多线程机制,以回调函数的方式前往ajaxHandler.post(map,newOnAjaxListener(){//访问出错AjaxError.type为错误编号@OverridepublicvoidError(AjaxErrorarg0){ }//开始访问@OverridepublicvoidLoading(){loading.setVisibility(0);loading()text.setText("自动登录中..");}//访问成功@OverridepublicvoidSuccess(finalAjaxDataarg0,Stringarg1,finalbooleanarg2){});//注意:服务器端要求格式{"data":"ffffff","info":"提示","status":"结果,1或0,true或false"}格式错误会前往解析错误
2016/8/25 5:48:09 1.21MB 服务器交互
1
对初学AJAX的同学会有协助的。
----------ajax.js---------------varrequest=false;try{ request=newXMLHttpRequest();}catch(trymicrosoft){ try{ request=newActiveXObject("Msxml2.XMLHTTP"); } catch(othermicrosoft){ try{ request=newActiveXObject("Microsoft.XMLHTTP"); } catch(failed){ request=false; } }}if(!request)alert("ErrorinitializingXMLHttpRequest!");functiongetCustomerInfo(){ document.getElementById("output").innerHTML="Loading..."; document.getElementById("submit").disabled=true; varname=document.getElementById("name").value; vartext=document.getElementById("text").value; varkey=document.getElementById("key").value; varanswer=document.getElementById("answer").value; varpoststr="name="+name+"&text="+text+"&key="+key+"&answer="+answer; varurl="doit.php"; request.open("POST",url,true); request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); request.send(poststr); request.onreadystatechange=updatePage;}functionupdatePage(){if(request.readyState==4)if(request.status==200)document.getElementById("output").innerHTML=request.responseText;elseif(request.status==404)alert("目标地址不存在");elsealert("警告:错误代码"+request.status);}functiongetInfo(){ document.getElementById("output1").innerHTML="Loading..."; varurl="show.php"; vard=newDate().getTime(); request.open("GET",url+"?d="+d.toString(),true); request.onreadystatechange=updatePage1; request.send();}functionupdatePage1(){if(request.readyState==4)if(request.status==200)document.getElementById("output1").innerHTML=request.responseText;elseif(request.status==404)alert("目标地址不存在");elsealert("警告:错误代码"+request.status);}
2017/4/14 22:50:25 79KB ajax
1
问题:我想上传文件时后改名,下载时又将名改回来。
如:我上传一张“我的照片.jpg”上传后改为系统数名“20040302001.jpg”下载时又改回“我的照片.jpg”其中的保存新旧文件名都用数据库(已做)就是下载时的改名做不出来。
代码:代码如下:<%functiondl(f,n)onerrorresumenextSetS=CreateObject(“Adodb.Stream“)S.Mode=3S.Type=1S.OpenS.LoadFromFile(f)ifErr.Number>0thenResponse.Status=“404”els
2017/11/25 13:19:42 24KB AS response 上传文件
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡