Linux中更改当前进程运行身份

在上一篇文章中,我们讲了如何在linux上用python写一个守护进程。主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程。细心观察的可能会发现,这个守护进程的运行身份是执行这个程序的用户,如果把这个守护程序加入到系统的服务项,那么这个守护程序的执行身份应该是root。
…阅读更多>>

用Python给Linux编写守护进程

守护进程(daemon)是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程调用fork,然后使其父进程立即终止,使得这个子进程能在init下运行。–维基百科

…阅读更多>>

深复制和浅复制

在面向对象的编程中,经常会遇到对象的克隆,如果不理解深复制和浅复制(深拷贝和浅拷贝)的概念,你的代码就可能出现一些问题。

我们知道,对象是由一系列key,value的元素组成,不同的编程语言中,key,value的数据类型划分不太一样,有些语言所有数据都是对象,如python,有些则有其它的划分。但是基于数据或者对象的存储方式,基本可以把数据类型划分为值类型和引用类型。一般值类型的数据是存储在栈内存中,引用类型的数据是存放在堆内存中,如下图:
…阅读更多>>

HTTP代理和HTTPS代理的区别

一些浏览器在设置代理的时候,有多个选项,包括HTTP代理,HTTPS代理,FTP代理,SOCKS代理等。它们之间有什么区别呢?为了寻找它们之间的区别,我专门做了个实验,用nginx搭建了HTTP和HTTPS代理服务器,并在chrome上设置不同的代理浏览网站。
…阅读更多>>

一个window.history.go(-1)||window.close()产生的问题

一个项目的需求:前台的留言表单中基于用户的输入,有两种不同情况的提交方式,一种是当前页面,另外一种是弹出另外一个页面,通过JS控制表单的target属性即可实现。为了保证良好的客户体验,通过当前页面跳转提交成功后,会返回上一页,通过弹出方式提交的结果会在展示之后关闭。于是我想到了最简单的方式,在目标页面加上了”<script>window.history.go(-1)||window.close()</script>”这一段代码,经过简单测试,发现效果良好,功能上完全能够满足要求。
…阅读更多>>

事件捕获和事件冒泡的区别

事件是javascript的客户端编程中很常见,常见的事件有click,mouseover,mouseenter,keyup,focus等只要接触到事件,相信事件冒泡和事件捕获这两个概念都或多或少的听说过,那么它们到底有什么区别呢?先看一下事件冒泡:

当事件在某一DOM元素被触发时,例如用户在客户名字节点上点击鼠标,事件将跟随着该节点继承自的各个父节点冒泡穿过整个的DOM节点层次,直到它遇到依附有该事件类型处理器的节点,此时,该事件是onclick。

事件冒泡

事件冒泡

在上一篇文章《HTML中动态生成内容的事件绑定问题》中,我们讲到了事件冒泡这个问题,简单来说,就是子元素绑定的事件,会逐级冒泡到父元素,当它的一个或多个父元素上绑定有相同事件时,相应的事件处理函数会被触发。
…阅读更多>>