精华内容
下载资源
问答
  • 程序如何一直保持运行的?

    千次阅读 2021-02-12 18:51:47
    问这个问题不知道大家会不会觉得提问者是个傻子(还请各位大佬轻喷 = =)......}运行这段代码的时候,程序开始运行--->控制台输出1--->程序结束,这段代码在运行完成之后就自动停止了,也就是说我可以...

    问这个问题不知道大家会不会觉得提问者是个傻子(还请各位大佬轻喷 = =)...但是这个问题确实是困扰着我!

    问题的起因是这样的,先看下面这段代码

    public static void main(String[] args) {

    System.out.println(1);

    }

    运行这段代码的时候,程序开始运行--->控制台输出1--->程序结束,这段代码在运行完成之后就自动停止了,也就是说我可以理解为程序有开始、有结束。那么如何让程序不自动结束呢?(Java)我了解到的方法有 while true 死循环,或者 wait()

    public static void main(String[] args) {

    System.out.println(1);

    while (true) {}

    }

    public static void main(String[] args) {

    Object object = new Object();

    System.out.println(1);

    synchronized (object) {

    try {

    object.wait();

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }

    这两种方法都不会主动停止,但是感觉是不是有点太丑了?比如tomcat或者nginx等web容器不太可能写这种比较“无脑”的代码,不可能监听端口的时候是一遍一遍的“无脑”循环监听吧?,所以我就很疑惑,它们是怎么一直在后台运行的?当然,他们的具体实现肯定很复杂,我并不是想知道他们的具体实现(因为太菜估计也实现不了(ーー゛)),而是想了解一下这种想法,在这里请教一下各位大佬,这是怎么个思想或者我要从哪个方面去入手才可能了解这个问题?

    展开全文
  • 我想知道,如何方法在后台运行.即.程序启动时会启动此方法并继续执行其语句,直到程序关闭.对于前者假设我有一个方法“gravity()”,它在程序运行时不断递减某个值.现在我尝试使用以下程序,其中我试图在没有按下按键...

    我想知道,如何让方法在后台运行.即.程序启动时会启动此方法并继续执行其语句,直到程序关闭.

    对于前者假设我有一个方法“gravity()”,它在程序运行时不断递减某个值.

    现在我尝试使用以下程序,其中我试图在没有按下按键的情况下向下拉公爵(重力).但是没有发生.

    import java.awt.*;

    import java.awt.event.*;

    import java.awt.image.BufferedImage;

    import java.io.IOException;

    import java.net.*;

    import java.util.HashMap;

    import java.util.Map;

    import javax.imageio.ImageIO;

    import javax.swing.*;

    public class MoveIcon extends JPanel {

    private static final long serialVersionUID = 1L;

    private static final String IMAGE_PATH = "http://duke.kenai.com/misc/Bullfight.jpg";

    private static final String IMAGE_PATH_PLAYER = "http://duke.kenai.com/iconSized/duke4.gif";

    public static final int STEP = 3;

    private static final int TIMER_DELAY = STEP * 8;

    private BufferedImage bkgrndImage = null;

    private BufferedImage playerImage = null;

    private Map directionMap = new HashMap();

    private int playerX = 0;

    private int playerY = 0;

    enum Direction {

    UP(KeyEvent.VK_UP, 0, -1), DOWN(KeyEvent.VK_DOWN, 0, 1),

    LEFT(KeyEvent.VK_LEFT, -1, 0), RIGHT(KeyEvent.VK_RIGHT, 1, 0);

    private int keyCode;

    private int xDirection;

    private int yDirection;

    private Direction(int keyCode, int xDirection, int yDirection) {

    this.keyCode = keyCode;

    this.xDirection = xDirection;

    this.yDirection = yDirection;

    }

    public int getKeyCode() {

    return keyCode;

    }

    public int getXDirection() {

    return xDirection;

    }

    public int getYDirection() {

    return yDirection;

    }

    }

    public MoveIcon() {

    try {

    URL bkgrdImageURL = new URL(IMAGE_PATH);

    URL playerImageURL = new URL(IMAGE_PATH_PLAYER);

    bkgrndImage = ImageIO.read(bkgrdImageURL);

    playerImage = ImageIO.read(playerImageURL);

    setPreferredSize(new Dimension(bkgrndImage.getWidth(), bkgrndImage.getHeight()));

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    for (Direction direction : Direction.values()) {

    directionMap.put(direction, false);

    }

    setKeyBindings();

    Timer timer = new Timer(TIMER_DELAY, new TimerListener());

    timer.start();

    }

    private void setKeyBindings() {

    InputMap inMap = getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);

    ActionMap actMap = getActionMap();

    for (final Direction direction : Direction.values()) {

    KeyStroke pressed = KeyStroke.getKeyStroke(direction.getKeyCode(), 0, false);

    KeyStroke released = KeyStroke.getKeyStroke(direction.getKeyCode(), 0, true);

    inMap.put(pressed, direction.toString() + "pressed");

    inMap.put(released, direction.toString() + "released");

    actMap.put(direction.toString() + "pressed", new AbstractAction() {

    private static final long serialVersionUID = 1L;

    @Override

    public void actionPerformed(ActionEvent e) {

    directionMap.put(direction, true);

    }

    });

    actMap.put(direction.toString() + "released", new AbstractAction() {

    private static final long serialVersionUID = 1L;

    @Override

    public void actionPerformed(ActionEvent e) {

    directionMap.put(direction, false);

    }

    });

    }

    }

    @Override

    protected void paintComponent(Graphics g) {

    super.paintComponent(g);

    if (bkgrndImage != null) {

    g.drawImage(bkgrndImage, 0, 0, null);

    }

    if (playerImage != null) {

    g.drawImage(playerImage, playerX, playerY, null);

    }

    }

    private class TimerListener implements ActionListener {

    @Override

    public void actionPerformed(ActionEvent e) {

    boolean moved = false;

    for (Direction direction : Direction.values()) {

    if (directionMap.get(direction)) {

    playerX += STEP * direction.getXDirection();

    playerY += STEP * direction.getYDirection();

    moved = true;

    }

    }

    if (moved) {

    int x = playerX - 2 * STEP;

    int y = playerY - 2 * STEP;

    int w = playerImage.getWidth() + 4 * STEP;

    int h = playerImage.getHeight() + 4 * STEP;

    MoveIcon.this.repaint(x, y, w, h); // !! repaint just the player

    }

    }

    }

    private static void createAndShowUI() {

    JFrame frame = new JFrame("MoveIcon");

    frame.getContentPane().add(new MoveIcon());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.pack();

    frame.setLocationRelativeTo(null);

    frame.setVisible(true);

    }

    public static void main(String[] args) {

    java.awt.EventQueue.invokeLater(new Runnable() {

    @Override

    public void run() {

    createAndShowUI();

    }

    });

    }

    }

    谢谢.

    展开全文
  • 然而在开发Android程序时,有时候在程序运行的时候,不能系统休眠,否则有一些运行会停止,因此我们需要设置禁止休眠。Android中设置禁止休眠有两种方式:1.在View中设置FLAG_KEEP_SCREEN_ON。实现上可以在代码中...

    在正常情况下,Android系统会让程序和服务进入休眠状态以节约电量使用。然而在开发Android程序时,有时候在程序运行的时候,不能让系统休眠,否则有一些运行会停止,因此我们需要设置禁止休眠。

    Android中设置禁止休眠有两种方式:

    1.

    在View中设置FLAG_KEEP_SCREEN_ON。

    实现上可以在代码中设置,也可以在XML文件中设置。

    代码如下所示:

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    或者配置文件对该View设置:

    android:layout_height="fill_parent"

    android:keepScreenOn="true" android:orientation="vertical"

    xmlns:android="http://schemas.android.com/apk/res/android">

    这样可以保持当前View所在的Activity一直在活动状态运行,而且屏幕是高亮的。非常耗电!!

    2.通过PowerManager来精细控制。

    首先在Manifest.xml文件里面用user-permission声明

    android:name="android.permission.WAKE_LOCK"/>

    android:name="android.permission.DEVICE_POWER"

    />

    之后通过PowerManager服务来获取电量控制锁:

    private void

    acquireWakeLock()

    { if (wakeLock == null)

    { PowerManager

    pm = (PowerManager)

    getSystemService(Context.POWER_SERVICE); wakeLock =

    pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,

    this.getClass().getCanonicalName()); wakeLock.acquire(); } }

    关键代码在newWakeLock的第一个参数,可以有:

    *PARTIAL_WAKE_LOCK参数和其他不同,如果选择了这个参数,那即时用户按了关机键,CPU仍保持运行;而其他参数在用户按了关机键之后,CPU即停止运行,如果不按关机键,系统在过一段时间休眠后,CPU仍保持运行。

    在程序退出时,必须释放WakeLock:

    private void releaseWakeLock()

    { if (wakeLock != null

    && wakeLock.isHeld())

    { wakeLock.release(); wakeLock =

    null; }

    }

    这两个方法分别在OnCreate/OnDestroy或者OnResume/OnPause中调用。

    展开全文
  • 如何服务器保持运行程序背景安装tmux创建名称为test的回话退出会话并保持会话在后台列出有哪些会话进入名称train的会话杀掉会话 背景 自己买了云服务器,因莫名中毒,感染挖坑程序。突发灵感,为啥自己不试着折腾...

    背景

    自己买了云服务器,连接服务器搭建好环境后运行程序,软件是运行着的,可当我断开连接,程序就停了,而且再次登录的时候,又是新的终端。很疑惑,后来才知道,Linux和Windows Server的云服务器是有区别的,貌似不能后台执行。

    于是问朋友,给出了tmux软件可以解决这个问题。

    安装tmux

    根据不同系统选择安装命令

    sudo yum -y install tmux //Centos或RHEL
    sudo apt-get -y install tmux //ubuntu
    

    创建名称为test的回话

    安装好后就可以测试了,这里创建了一个test的会话

    tmux new -s test
    

    在这里插入图片描述
    然后在终端底部会发现不一样,
    [test] 0 – 这是 tmux 服务器创建的第一个会话。编号从 0 开始。tmux 服务器会跟踪所有的会话确认其是否存活。

    当前目录是 ~ (家目录)。进入自己想要进的路径,运行相应的程序就可以了,接下来的就简单了。

    退出会话并保持会话在后台

    按ctrl+b松手再按d
    

    刚刚相当于进入新的终端,现在这样就退出来了。

    列出有哪些会话

    那么怎么知道查看哪些会话在运行呢,使用如下命令

    tmux ls
    

    在这里插入图片描述

    进入名称train的会话

    tmux attach -t test
    

    杀掉会话

    tmux kill-session -t test
    

    通过tmux就可以让程序一直在服务器端保持运行了,就算断开也没事。

    展开全文
  • 需求:之前一直是使用 java -jar xxxxx.jar 这样运行比较方便,坏处 : 关闭终端后,这个进程就随之关闭了。 解决办法: nohup 命令, nohup 的意思是即使登出也不会终止该进程。 nohup java -jar xxx.jar & 注...
  • 如何让程序在后台运行?这是后台开发面试常问的一道题,那么守护进程到底是什么?又该如何实现?守护进程守护进程通常生存期长,很多是在系统启动时启动,系统退出时才关闭。它们的特点通常没有控制终端,后台运行。...
  • 将工程部署到云端之后,使用ssh连接服务器输入命令启动Python程序后断开ssh后工程也就关了,针对上述情况我们需要对其进行设置,使用特殊指令运行程序,首先进入工程路径使用...之后断开连接后一直保持运行。 ...
  • 服务器上运行 Python3 程序: nohup python3 xxx.py 查看 Python3 程序进程: ps -ef | grep python3 第二列为 pid 号。 杀死这个进程: kill -9 12345 # 这里假设pid号为12345,-9是属于命令部分
  • 怎么python程序一直执行 不退出

    千次阅读 2021-03-05 16:38:17
    /usr/bin/env python3 ,告诉shell这个文件是Python源代码,bash调用python3来解释这段代码 2. from bottle import get,post,run,request,template ,从bottle框架导入了我用到的方法、对象 下边几句是定义了2个...
  • 最近在服务器弄了个自动签到的python脚本,需要一直运行,但是发现ssh远程连接关闭后,程序也自动的退出了。用下面命令救可以让程序自动在后台运行,远程连接关闭后也继续运行。 nohup python -u main.py > log....
  • 背景:将一个应用服务放在服务器上,提供接口给其他人调用,... 在ssh shell中运行脚本,比如我运行一个批量下载脚本:python mainserver.py2. 按下ctrl-z中断脚本运行,此时系统提示:^Z[1]+ Stopped python3 main...
  • 一直在寻找一种方法来始终保持应用程序活着,但没有找到任何东西.有人可以告诉我什么是最好的方法,以便我的应用程序在后台时不会关闭,或者,除非这样,如果它关闭,它重新启动?我从这开始就我头疼:S编辑这是我的...
  • 好记性不如烂笔头 ——东西太多,脑子永远不够用问题用 C 语言写个程序运行时,cpu占用率一直保持50%解决方案一看题目好眼熟!《编程之美》!然而已经记不清楚了,果然东西需要经常用经常积累,废话不多说重来一遍...
  • 昨晚想到一个问题,服务端程序是如何能在服务器里常驻运行并监听请求的?...又如何能够一直保持运行并监听http请求并响应的?遂看了一些资料和其他人的解释。回想一下,自从我们学了servlet之后,就再也没有写过m...
  • 描述单片机C语言的主程序,通常要用一个while(1)语句来程序进入一个无限循环,目的是为了让程序一直保持在我们需要运行的情况下。 虽然这种做法毋庸置疑,在网上还是有不少朋友有疑问,如果程序不加while(1)会...
  • 首先说下循环的需求场景,假如你想计算1-10的所有数字的和,该怎么用程序计算?1+2+3+4+5+...+10来计算?好,可以,“+”号运算符用的不错,那么,我要算1-100的和呢?不要告诉我你要手敲到100?(笑哭的表情),这时...
  • 很多时候我们需要docker run一直在后台运行着,比如ubuntu:latest,然后exec做点事情;该怎么办呢? 很简单也很复杂。遇到像helloworld这样的image是完全没有办法的,人家用C编译的程序直接调用syscall显示hello...
  • 微信小程序运行机制解析

    千次阅读 2021-03-09 23:20:37
    而微信小程序就更像是运行在微信这个特定环境下的 Hybrid 技术。 接下来从四个方面聊一聊小程序运行机制,看一看,小程序相比Hybrid又有哪些创新点。 相信做过微信小程序开发的小伙伴都知道,微信有一个自己开发的...
  • 您应该使用ExecutorService并提交等待读取服务输出的任务.package demo;import java.util.concurrent.Executors;import java.util.concurrent.ExecutorService;public class TaskDemo {public static void main...
  • iOS 为了设备尽量省电,减少不必要的开销,保持系统流畅,因而对后台机制采用墓碑式的“假后台”。除了系统官方极少数程序可以真后台,一般开发者开发出来的应用程序后台受到以下限制:1.用户按Home之后,App转入...
  • 通过ssh远程服务器,断开时会杀死运行的进程 解决办法 nohup nohup python -u test.py > log.out 2>&1 &...test.py是需要运行的脚本,log.out可以获取这个脚本的运行输出一直存储下来。
  • 微信小程序运行机制和更新机制

    千次阅读 2020-12-29 21:55:10
    程序运行平台 逻辑层运行环境 视图层运行环境 iOS JavaScriptCore 由 WKWebView 来渲染 Android V8 由自研 XWeb 引擎基于 Mobile Chrome 内核来渲染的 开发工具 NW.js Chromium Webview 来渲染 PC ...
  • 防止IDE或者terminal关闭后,接口暂停 nohup python run.py >/dev/null 2>&1 &
  • 欢迎大家关注笔者,你的关注是我持续更博的最大动力原创文章,转载告知,盗版必究1 为什么需要后台运行程序,场景分析你是否遇到:在用ssh或其他远程连接工具连接服务器,在终端中运行一些程序,然后程序执行期间...
  • I have java app which supports multiple workflows. Workflow is chosen using arguments passed to it from command line. In one of the workflow app needs to run for infinite time. I am achieving the same...
  • 展开全部1,保证主线程阻塞,即在执行main方法里添加阻塞代码。2,比如32313133353236313431303231363533e58685e5aeb931333339666635Java做服务器时,接收soket信息,ServerSocketserverSocket=newServerSocket...
  • nohup 命令 &> nohup.txt 这是我在云服务器上后台启用spring-boot程序的时候用的命令 关闭项目: ps -ef |grep 项目jar包名 得到进程号 kill -9 进程号 关闭
  • 在服务器上搭载Django网站,在后台保持运行,记录日志log 总结本人在服务器搭载Django动态网页的过程,内容包括: 允许其他机器访问网站 网站在后台运行 记录网站log 利用多线程提高访问速度 欢迎大家留言交流!...
  • 它退出的原因是因为shell脚本首先作为PID 1运行,当它完成时,PID 1消失,而docker仅在PID 1运行运行 .您可以使用主管来执行所有操作,如果使用“-n”标志运行,则告知不要守护进程,因此它将作为第一个进程保留:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 260,771
精华内容 104,308
关键字:

怎么让程序一直保持运行