后台运行

关于这几天使用IOS的ASYNCSOCKET完成无限后台的过程

北城以北 提交于 2019-12-25 16:17:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>   这几天用了下ASyncSocket完成前后台即时通讯,当时有想过用消息推送的技术实现的,可是后来想到消息推送的不可靠性还是算了。于是使用了tcp/ip实现后台主动发送数据给前台的功能。 最开始设计后台的时候,我有考虑到数据量比较大的问题,所以数据大的时候我会使用分包和组包的功能去实现。TCP/IP在传输数据的时候,一般不会大于1500字节,所以我每512字节分了 一个包。然后当一次性数据包接收太多的时候,就出现了粘包的问题。因为我在数据传输的时候使用的是json,每一个分包都是由{}括起来的,所以我就想着在包头上加上一段基本不会重复 的分割字符串,然后服务器接收到分包的时候每次都根据这个字符串分割一下,第一次分割的时候第一行绝对是空字符串 例如:@Hinagiku{“Name”=“桂雏菊”}, 我分割出来结果是: “”,“桂雏菊”,所以说第一行我就可以直接跳过,每次取分包的时候从第二行开始取。然后后台根据包的ID号,序号进行组包。如果当前分包在5分钟内没有接收完毕,就代表当前分包接收失败 了,要求客户端或服务器重新发送。粘包问题解决完毕之后,我开始实现心跳包功能,当时想的是,每隔1分钟发一次心跳包,服务器放一个线程。每隔几秒钟判断一次,当前的所有TCP连接的 最后一次访问时间是多少号

linux命令后台运行技巧整理(3)

◇◆丶佛笑我妖孽 提交于 2019-12-16 18:51:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 所有内容搜集于网络,部分做了简单翻译 一、使用screen执行命令 通过 nohup 和 & 符号在后台执行命令后,即使你退出登录,这个命令也会一直执行。但是,你无法重新连接到这个会话,要想重新连接到这个会话,你可以使用 screen 命令,在 上一篇 中已介绍。 Linux的screen命令提供了分离和重新连接一个会话的功能。当你重新连接这个会话的时候,你的终端和你分离的时候一模一样。 详情请参考这篇文章 Screen Command Examples: Get Control of Linux / Unix Terminal 二、使用at将一个命令作为批处理执行 使用 at 命令,你可以让一个命令在指定的日期和时间运行,例如要在明天上午10点在后台执行备份脚本,执行下面的命令: $ at -f backup.sh 10 am tomorrow 详情请参考这篇文章 Understand at, atq, atrm, batch Commands using 9 Examples 在批处理模式下执行某些任务需要启用一些选项。下面的文章会给出详细解释: How To Capture Unix Top Command Output to a File in Readable Format Unix bc

linux命令后台运行技巧整理(1)

亡梦爱人 提交于 2019-12-16 18:50:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 所有内容搜集于网络,部分做了简单翻译 Linux提供了 fg 和 bg 命令,让你轻松调度正在运行的任务。 假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl+Z ,挂起这个程序,然后可以看到系统提示: [1]+ Stopped /root/bin/rsync.sh 然后我们可以把程序调度到后台执行:(bg后面的数字为作业号) #bg 1[1]+ /root/bin/rsync.sh & 用 jobs 命令查看正在运行的任务: #jobs[1]+ Running /root/bin/rsync.sh & 如果想把它调回到前台运行,可以用: #fg 1/root/bin/rsync.sh 这样,你在控制台上就只能等待这个任务完成了。 小结: & 将指令丢到后台中去执行 ctrl+z 將前台任务丟到后台中暂停 jobs 查看后台的工作状态 fg %jobnumber 将后台的任务拿到前台来处理 bg %jobnumber 将任务放到后台中去处理 来源: oschina 链接: https://my.oschina.net/u/2324376/blog/400016

linux命令后台运行技巧整理(2)

ぐ巨炮叔叔 提交于 2019-12-16 18:48:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 所有内容搜集于网络,部分做了简单翻译 一、& 在Linux中,当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用 & 命令把作业放到后台执行。实际上,这样是将命令放入到一个作业队列中了: $ ./test.sh & [1] 17208 $ jobs -l [1]+ 17208 Running ./test.sh & **在后台运行作业时要当心:**需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中: command >out.file 2>&1 & 在上面的例子中, 2>&1 表示所有的标准输出和错误输出都将被重定向到一个叫做 out.file 的文件中。当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。 例:查找名为 httpd.conf 的文件,并把所有标准输出和错误输出重定向到 find.dt 的文件中: # find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 & [2] 7832 成功提交该命令之后