面试

面试官给我挖坑:rm删除文件之后,空间就被释放了吗?

混江龙づ霸主 提交于 2021-02-07 22:44:20
在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意。 产生一个指定大小的随机内容文件 我们先看一下当前各个挂载目录的空间大小: $ df -h /dev/sda11 454M 280M 147M 66% /boot 我这里挑选了其中一个结果展示(你可以选择任一挂载目录),接下来准备在 /boot 下生成一个文件。 首先我们产生一个50M大小的文件: $ dd if=/dev/urandom of=/boot/test.txt bs=50M count=1 至此,我们产生了一个50M大小的文件,再看boot下: $ df -h /dev/sda11 454M 312M 115M 74% /boot 这里你不用关心到底多了多少,你只需要关注,/boot下的文件增多了。 测试程序: #include<stdio.h> #include<unistd.h> int main(void) { FILE *fp = NULL; fp = fopen("/boot/test.txt", "rw+"); if(NULL == fp) { perror("open file failed"); return -1; } while(1) { //do nothing sleep(1); } fclose(fp); return 0; }

前端面试题整理---JS基础

穿精又带淫゛_ 提交于 2021-02-07 21:39:56
为了督促自己学习,整理了一下前端的面试题 JavaScript: JavaScript 中如何监测一个变量是String类型? typeof(obj)==="string"; typeof obj ==="string"; obj.constructor ===string    JS中清除字符串空格的方法 方法一:使用正则匹配 // 去除所有的空格 var str1 = strings.replace(/\s*/g,""); // 去掉两头的空格 var str2 = strings.replace(/(^\s*|\s*$)/g,""); //去掉左边空格 var str3 = strings.replace(/^\s*/,""); // 去掉右边空格 var str4 = strings.replace(/\s*$/,""); 实例 var strings = " this is an apple "; // 去除所有的空格 var str1 = strings.replace(/\s*/g,""); console.log(str1); // 去掉两头的空格 var str2 = strings.replace(/(^\s*|\s*$)/g,""); console.log(str2); //去掉左边空格 var str3 = strings.replace(/^\s*/,"

rm删除文件之后,空间就被释放了吗?

走远了吗. 提交于 2021-02-07 21:23:28
点击上方 “ Java大数据修炼之道 ”, 选择“置顶或者星标” 你想要的优质技术好文第一时间送达! 来源 | 编程珠玑 在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意。 产生一个指定大小的随机内容文件 我们先看一下当前各个挂载目录的空间大小: $ df -h /dev/sda11 454M 280M 147M 66% /boot 我这里挑选了其中一个结果展示(你可以选择任一挂载目录),接下来准备在/boot下生成一个文件。 首先我们产生一个50M大小的文件: $ dd if=/dev/urandom of=/boot/test.txt bs=50M count=1 至此,我们产生了一个50M大小的文件,再看boot下: $ df -h /dev/sda11 454M 312M 115M 74% /boot 这里你不用关心到底多了多少,你只需要关注,/boot下的文件增多了。 测试程序: # include<stdio.h> # include<unistd.h> int main ( void ) { FILE *fp = NULL ; fp = fopen( "/boot/test.txt" , "rw+" ); if ( NULL == fp) { perror( "open file failed" ); return

你的Webpack优化了吗?

有些话、适合烂在心里 提交于 2021-02-07 17:51:15
(给 前端食堂 加星标,吃好每一顿) 引言 webpack 的打包优化一直是个老生常谈的话题,常规的无非就分块、拆包、压缩等。 本文以我自己的经验向大家分享如何通过一些分析工具、插件以及 webpack 新版本中的一些新特性来显著提升 webpack 的打包速度和改善包体积,学会分析打包的瓶颈以及问题所在。 本文演示代码,仓库地址:https://github.com/Jack-cool/webpack4(欢迎star啊 ) 速度分析 🏂 webpack 有时候打包很慢,而我们在项目中可能用了很多的 plugin 和 loader ,想知道到底是哪个环节慢,下面这个插件可以计算 plugin 和 loader 的耗时。 yarn add -D speed-measure-webpack-plugin 配置也很简单,把 webpack 配置对象包裹起来即可: const SpeedMeasurePlugin = require ( "speed-measure-webpack-plugin" ); const smp = new SpeedMeasurePlugin(); const webpackConfig = smp.wrap({ plugins : [ new MyPlugin(), new MyOtherPlugin() ] }); 来看下在项目中引入 speed

PHP会话控制详解

久未见 提交于 2021-02-07 12:34:05
会话控制 因为 HTTP 是无状态的协议,没有办法记录多个事务请求间的状态。即访问一个页面请求后再请求另一个页面时无法判断两次请求来自同一下用户。 会话原理 在PHP中实现会话的原理是为用户分配一个唯一的加密ID,并保存在用户客户端,并在整个会话时间周期内有效。 一般情况下使用cookie来进行保存,但也可以通过url传递。 用户通过携带会话ID到服务器获取内容。 COOKIE cookie是客户端存储数据的手段,并在请求服务器时自动携带cookie数据。 设置 PHP中使用 setcookie() 函数用户客户端cookie数据。 setcookie ( string $name [, string $value = "" [, int $expires = 0 [, string $path = "" [, string $domain = "" [, bool $secure = FALSE [, bool $httponly = FALSE ]]]]]] ) : bool 参数说明如下: 参数说明nameCookie的名称valuecookie的价值。该值存储在客户端计算机上; 不要存储敏感信息expiresCookie过期的时间。这是一个Unix时间戳,可以使用 time() 函数加上希望它到期之前的秒数来设置它。 path 服务器上可以使用cookie的路径。如果设置为

你所不知道的Java十种经典排序算法

痞子三分冷 提交于 2021-02-07 12:15:02
算法分类 比较排序:在排序的最终结果里,元素之间的次序依赖于他们之间的比较,每个数必须和其他数进行比较,才能确定自己的位置。 优势:适用于一切需要排序的情况。不在乎数据的分布,适用于各种规模的数据 冒泡排序、快速排序、插入排序、希尔排序 、堆排序、选择排序、归并排序。 在冒泡排序之类的排序中,问题规模为n,又因为需要比较n次,所以平均时间复杂度为O(n²)。在归并排序、快速排序之类的排序中,问题规模通过分治法消减为logN次,所以平均时间复杂度为O(nlogn)。 非比较排序:只要确定每个元素之前的已有的元素个数即可,所有一次遍历即可解决。时间复杂度为O(n)。 计数排序、基数排序、桶排序。 非比较排序的时间复杂度低,但是需要占用空间来确定唯一的位置。 递归factorial 方法内部调用方法本身 ⚠️递归的层级太深容易造成栈内存溢出stackOverFlowError 冒泡排序 一次比较相邻的两个元素,如果第一个比第二个大就交换它们两个。 从第一对到结尾的最后一对,重复比较。 重复前面两个步骤(每次都能找到一轮中的最大值)。 算法分析: 最佳情况:T(n) = O(n) 最差情况:T(n) = O(n²) 平均情况:T(n) = O(n²) public static int [ ] bubbleSort ( int [ ] array ) { if ( array .

Python 字符串与列表去重

亡梦爱人 提交于 2021-02-06 17:28:45
最近面试中出现频率比较高的字符串和列表的去重 pstr = 'abcadcf' # 字符串去重 # 1、使用集合 --没有保持原来的顺序 print(set(pstr)) # 2、使用字典 -- 没有保持原来的顺序 print({}.fromkeys(pstr).keys()) # 3、使用循环遍历法 -- 代码不够简洁,不高端 a = [] for i in range(len(pstr)): if pstr[i] not in a: a.append(pstr[i]) print(a) # 列表去重 plist = [1,0,3,7,5,7] # 1、使用set方法 print(list(set(plist))) # 2、使用字典 print(list({}.fromkeys(plist).keys())) # 3、循环遍历法 plist1 = [] for i in plist: if i not in plist1: plist1.append(i) print(plist1) # 4、按照索引再次排序 b = list(set(plist)) b.sort(key=plist.index) print('sds:',b) 来源: oschina 链接: https://my.oschina.net/u/4349250/blog/3485716

B 站上有哪些很好的学习资源?

落花浮王杯 提交于 2021-02-06 15:47:20
https://juejin.im/post/5e3bbe8b518825490966cc18 哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy : 综合音视频剪辑教程、编程入门教程、平面设计教程、office使用教程,甚至还有硬件电路教学的万金油up主!涵盖面丰富的难以置信。 Doyoudo : 主要教平面设计和视频剪辑,但也涉及到了编程、音乐制作等领域。内容通俗易懂,非常适合新手入门。 程序员向 九章算法 : 专注于程序员的求职的up主,内容涵盖了算法教学、大数据、人工智能、全栈开发、简历修改和面试技巧等等。还有跨专业转码、成功上岸的大佬们的经验分享。对要求职的程序员和想转码的同学非常有用! Python学习者 : 从Python语言的基础入门讲到进阶,包括了开发者环境搭建的教程和比较实用的爬虫教程。 程序员文明 : 主要内容都是Java教学,而且内容都是比较有趣和实用的栗子,比方说实现爱心表白墙、登陆弹幕、开发电商秒杀模块、人工智能项目等等。

【每日算法/刷穿 LeetCode】1423. 可获得的最大点数(中等)

半世苍凉 提交于 2021-02-06 14:36:55
点击 这里 可以查看更多算法面试相关内容~ 题目描述 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 nums 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数数组 nums 和整数 k,请你返回可以获得的最大点数。 示例 1: 输入:nums = [1,2,3,4,5,6,1], k = 3 输出:12 解释:第一次行动,不管拿哪张牌,你的点数总是 1 。 但是,先拿最右边的卡牌将会最大化你的可获得点数。 最优策略是拿右边的三张牌,最终点数为 1 + 6 + 5 = 12 。 示例 2: 输入:nums = [2,2,2], k = 2 输出:4 解释:无论你拿起哪两张卡牌,可获得的点数总是 4 。 示例 3: 输入:nums = [9,7,7,9,7,7,9], k = 7 输出:55 解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。 示例 4: 输入:nums = [1,1000,1], k = 1 输出:1 解释:你无法拿到中间那张卡牌,所以可以获得的最大点数为 1 。 示例 5: 输入:nums = [1,79,80,1,1,1,200,1], k = 3 输出:202 提示: 1 <= nums.length <= 10^5 1 <= nums

2021年跳槽该如何准备?c/c++ linux服务器开发岗

你说的曾经没有我的故事 提交于 2021-02-06 12:56:38
灵魂三问: 2020年你涨薪了吗? 2020年你的技术提升了吗? 对于2020年的自己是否满意? “金三银四”即将到来,作为一年的跳槽季,这是找工作换工作的最佳时机,对于不满现状的朋友考虑在这个时间跳槽,但是看看招聘网站,要求玄的要死。面试几轮之后更是没有深没有浅。经过一段时间的接触之后,内心十分着急,又不知道怎么办,就是没有一个具体可执行的计划。这样下去导致最坏的结果可能是今年的跳槽可能变成了换坑,跳槽是职业生涯有续线性的增长,无论收入还是title或者平台,换坑是从这个坑跳到另外一个坑,从而进入一个恶性循环,给长期职业发展带来很不利的影响,个人能力的成长长期维持在同一水平线上下浮动。 计划的意思是了解当下市场招聘环境的变化,并且根据对自己技术势力的综合评估对当前的市场行情的预估之后,分析技术差距罗列的一个学习列表,具体细节的实施,学习效果的验证,要花费多长时间来完成他,每天要投入多少精力学习等等,根据不同的情况来自己把握。 首先给大家分享一份对标腾讯T8(原2.3)职级的技术栈,供大家查漏补缺 c/c++ linux服务器开发学习地址: c/c++ linux服务器高级架构师 一、精进基石 1、数据结构与算法 2、设计模式23种(没有全部列举) 3、工程管理 视频学习地址: 设计模式很难吗?看mark老师如何吊打设计模式 红黑树,在Linux内核的那些故事 二、高性能网络设计