target

Python(线程进程2)

纵饮孤独 提交于 2020-02-28 07:13:22
新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的:   1. 在UNIX中该系统调用是:fork,fork会创建一个与父进程一模一样的副本,二者有相同的存储映像、同样的环境字符串和同样的打开文件(在shell解释器进程中,执行一个命令就会创建一个子进程)   2. 在windows中该系统调用是:CreateProcess,CreateProcess既处理进程的创建,也负责把正确的程序装入新进程。 关于创建的子进程,UNIX和windows   1.相同的是:进程创建后,父进程和子进程有各自不同的地址空间(多道技术要求物理层面实现进程之间内存的隔离),任何一个进程的在其地址空间中的修改都不会影响到另外一个进程。   2.不同的是:在UNIX中,子进程的初始地址空间是父进程的一个副本,提示:子进程和父进程是可以有只读的共享内存区的。但是对于windows系统来说,从一开始父进程与子进程的地址空间就是不同的。 二 threading模块 ''' 进程包括多个线程,线程之间切换的开销远小于进程之间切换的开销 线程一定是寄托于进程而存在的 进程:最小的资源管理单元 线程:最小的执行单元 python锁的机制,一个进程一把锁,一个进程一个时间只能取出一个线程,所以无法实现真正的进程中的线程并行 I/O密集型任务 计算密集型任务 ''' 2.1 线程对象的创建 2

leetcode之两数之和

不问归期 提交于 2020-02-28 06:02:51
废弃很久的博客,终于从灰尘中捡起来了。摸鱼近一年,最终研果真没希望考上了。还是老老实实挨社会的毒打吧。leetcode刷题好平台,先用它来熟悉很久未上手的算法吧! 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 题解 求和是二元的,两个循环刚好对应二元未知。直接暴力? 当然不可能,只用一个循环找数num,另一个数用target - num表示。 每遍历一个数,就把数num和数num的索引号ind放入一个字典dic中。 每次遍历时,都看看字典dic中是否有target-num这个数,如果有,那么就找到了x + y = target这个公式了。 class Solution : def twoSum ( self , nums : List [ int ] , target : int ) - > List [ int ] : dic = { } for ind , num in enumerate ( nums ) : tmp = target -

Leetcode 搜索二维矩阵 II

让人想犯罪 __ 提交于 2020-02-28 05:52:08
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5 ,返回 true 。 给定 target = 20 ,返回 false 。 思路:先二分target在哪一行,然后在对行进行二分找在哪一列 1 boolean searchMatrix(int[][] matrix, int target) { 2 if(matrix.length==0||matrix[0].length==0) 3 { 4 return false; 5 } 6 7 int l=0,r=matrix.length-1; 8 int mid=0; 9 while(l<=r) 10 { 11 mid=(l+r)/2; 12 if(target==matrix[mid][0]) 13 return true; 14 else if(target>matrix[mid][0]) 15 l=mid+1; 16 else r=mid-1

systemd关机流程 以及 自定义systemd关机脚本和服务

爱⌒轻易说出口 提交于 2020-02-28 04:45:34
systemd关机流程 在使用systemd的linux系统中,reboot,shutdown,halt等命令是指向systemctl的软链接,执行reboot相当于执行 systemctl reboot,systemctl reboot 会切换到 reboot.target. 下面使用systemd进行系统关闭/重启的依赖关系图: (conflicts with (conflicts with all system all file system services) mounts, swaps, | cryptsetup | devices, ...) | | v v shutdown.target umount.target | | \_______ ______/ \ / v (various low-level services) | v final.target | _____________________________________/ \_________________________________ / | | \ | | | | v v v v systemd-reboot.service systemd-poweroff.service systemd-halt.service systemd-kexec.service | | | | v v v v

【leetcode算法-搜索插入位置】

久未见 提交于 2020-02-28 02:27:46
1、题目要求 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 2、解体思路 暴力破解-循环遍历,判断数据的大小,用时 //暴力破解法 static int searchInsert(int[] nums, int target){ for (int i=0;i<nums.length;i++){ int vi = nums[i]; if (i<nums.length-1){ int n = i+1; int vi1 = nums[n]; if (vi > target){ System.out.println(0); return 0; } if (vi == target){ System.out.println(i); return i; } if (vi<target && target<vi1){ System.out.println(n); return n; } }else { if (vi<target) { System.out

js事件委托

流过昼夜 提交于 2020-02-28 02:18:32
​     今天呢,咱们来说说事件委托,有的相关资料叫事件代理. ​     首先呢,先来讲讲事件委托的起源:由于事件处理程序可以为web应用提供交互能力,因此很多开发人员会不分青红皂白的向页面中添加大量的处理程序.在js中,添加到页面的事件处理程序数量直接关系到页面的整体运维性能.导致这一问题的原因是多方面的.首先:     1 函数都是对象,都会占用内存,内存中对象越多,性能越差     2 事先指定所有的事件处理程序而导致dom访问次数,会延迟整个页面的交互的就绪事件. 所以:对事件处理程序过多问题的解决方案就是事件委托. 举个栗子 <ul id = 'ul1'> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> ... <li>100</li> </ul>     如果咱们页面上有100个li标签,如果要实现点击li变成红色,我们虽然可以用for循环,给每个li添加事件,那这样就为它们添加了100个事件处理程序,若在一个复杂的web程序中,都使用这种方式,那结果就是数不清的添加事件处理.那么这里是极其浪费资源的.所以这里可以得到一个结论: ​     事件委托,最重要的功能就是 提高程序运行效率. ​     既然出来了事件委托,那咱们讲讲事件委托的原理.先来个概念:事件流. ​ 事件流分为 ​ 1.事件捕获 ​

js运动

孤者浪人 提交于 2020-02-28 02:18:09
一.为什么要学习运动框架 ​ 在我们进行web页面开发的过程中,如何与用户进行友好、有趣的交互,是我们必须考虑的问题。 比如:导航条中滑动的动画特效、点击加入购物车按钮通过抛物线加入右侧购物车的动画特效,当然还有一些网页游戏的开发:微信打飞机、打砖块等。 那么我们要实现这些好玩又有趣的动画,就需要我们对动画的基础【运动】炉火纯青. 二.js运动原理 ​ 运动原理,其实从实际上来说,就是页面上的元素,在dom页上动起来,要想让元素动起来,那有哪些方式呢,比如我们通过改变元素自身的offsetLeft和offsetTop属性,以及,自身的宽高,上下左右的边距和透明度等等.动画的原理就是把不同的画面,通过一定的速度运转,串起来,形成动画,js动画也一样,不同状态的DOM,用定时器控制,就能得到动画效果. ​ 方法: ​ 1.运动的物体使用绝对定位 ​ 2.通过改变定位物体的属性(left、right、top、bottom)值来使物体移动。例如 ​ 向右或左移动可以使用offsetLeft (速度为负值可以控制向左移动)来控制左右移动。 ​ 步骤: ​ 1、开始运动前,先清除已有定时器 (因为:是连续点击按钮,物体会运动越 ​ 来越快,造成运动混乱) ​ 2、开启定时器,计算速度 ​ 3、把运动和停止隔开(if/else),判断停止条件,执行运动 ​ ​ ​ 我这里直接用的是ES6的语法

面试题04:二维数组中的查找

☆樱花仙子☆ 提交于 2020-02-27 23:00:12
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路 通过每一行从左到右都是递增的,每一列从上到下也是递增的,可以去通过比较数字大小,来删除某一列或者某一个行。 将二维数组想象成矩阵。从数组的右上角数字 m 开始。 如果 m == target,那么说明数组中含有该整数,直接返回 true。 如果不相等,那么继续比较。 如果 m > target 成立,那么根据题意,m 所在那一列的所有数字都是比 target 大的,那么可以去除该列,然后继续取右上角的数字为 m。 如果 m < target 成立,那么根据题意,m 所在哪一行的所有数字都是比 target 小的,那么可以去除该行,然后继续取右上角的数字为 m。 去反复判断,直至所有的数字都不等于 target,那么返回 false。 代码 public class Solution { public boolean Find(int target, int [][] array) { if (array == null || array.length <= 0 || array[0].length <= 0) { return false; } // 获取行数 int

两数之和(力扣)- 穷举

强颜欢笑 提交于 2020-02-27 21:19:29
两数之和 一、题目 原题目如下: [乐扣-两数之和]( https://leetcode-cn.com/problems/two-sum/) 1、题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 2、示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 3、代码函数部分 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { }; 二、题解 (这个方法大概就是最先想到,最不用动脑子的方法吧) 1、思路 穷举出所有的数对,同一个数字不可以用两遍,也就是一个数对,不可以是相同的一个数字,将数对的值加起来,与目标值比较。若相同就返回数对所在数组的下标,若不相同,就继续。若找不到就返回为空 2、代码实现 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int i,j; for(i=0;i<nums.size()

2.二维数组中的查找

耗尽温柔 提交于 2020-02-27 18:29:25
题目: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 我的解法: 暴力的两次循环: class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { for(int i = 0; i < matrix.size(); ++ i) { for(int j = 0; j < matrix[i].size(); ++ j) { if(matrix[i][j] == target) return true; } } return false; } }; 时间复杂度 为O(M*N) 非最优解。 空间复杂度为O(1) 解法摘录: 1. 本题解利用矩阵特点引入标志数,并通过标志数性质降低算法时间复杂度。 标志数引入: 此类矩阵中左下角和右上角元素有特殊性,称为标志数。 左下角元素: 为所在列最大元素