strip

JavaScript优化技巧

无人久伴 提交于 2020-12-18 23:19:13
作为开发人员,我们一直在寻找让我们的代码更快更好的方法。但在此之前,编写高性能代码需要做三件事: 了解语言及其工作原理 基于用例进行设计 调试!修复!重复 记住这一点 任何傻瓜都可以编写计算机可以理解的代码,优秀的程序员编写人类可以理解的代码。- 丁·福勒 我们来看看如何使 JavaScript代码运行得更快。 延迟 延迟算法将计算延迟到需要执行时才执行,然后生成结果。 const someFn = () => { doSomeOperation() return () => { doExpensiveOperation() } } const t = someArray.filter((x) => checkSomeCondition(x)).map((x) => someFn(x)) // 现在,如果有需要在执行 t.map((x) => t()) 最快的代码是未执行的代码,所以尽量延迟执行。 JavaScript 使用原型继承,JS 中所有对象都是Object的实例。 MDN说: 尝试访问对象的属性时,不仅会在对象上搜索该属性,还会在对象的原型,原型的原型等上搜索该属性,直到找到匹配属性名或原型链的末端。 对于每个属性,JavaScript引擎都必须遍历整个对象链,直到找到匹配项。 如果使用不当,这会占用大量资源,并影响应用程序的性能。 所以不要这样: const name

老男孩python学习_day003作业

拥有回忆 提交于 2020-12-18 05:07:54
1. 有变量name = "aleX leNb" 完成如下操作: (1)  移除 name 变量对应的值两边的空格,并输出处理结果     name = " aleX leNb "    print(name.strip()) (2) 移除name变量左边的’al’并输出处理结果      name = "aleX leNb"    print(name.lstrip('al')) (3) 移除name变量右面的’Nb’,并输出处理结果      print(name.rstrip('Nb')) (4) 移除name变量开头的‘a’与最后的’b’,并输出处理结果      print(name.strip('ab')) (5) 判断 name 变量是否以 "al" 开头,并输出结果     print(name.startswith('al')) (6) 判断name变量是否以”Nb”结尾,并输出结果     print(name.endswith('Nb')) (7) 将 name 变量对应的值中的 所有的“l” 替换为 “p”,并输出结果    print(name.replace('l','p')) (8) 将name变量对应的值中的第一个’l’替换成’p’,并输出结果      print(name.replace('l','p',1)) (9) 将 name

顺利拿到OPPO公司Android架构师offer,花三分钟看完这篇文章你就懂了!已开源

送分小仙女□ 提交于 2020-12-17 23:12:14
目录 前言 Kotlin协程,现在已经成为了面试甚至是工作中一个非常火的东西。 本人在刚开始了解Kotlin协程的时候,断断续续看了网上不少文章,用长篇大论把Kotlin协程描述的非常玄乎,但是看完后还是依然云里雾里,所以决定来写一篇关于协程的文章,希望能够帮助大家能够更快的上手Kotlin协程 JNI 简介 JNI (Java Native Interface英文缩写),译为Java本地接口。是Java众多开发技术中的一门技术,意在利用本地代码,为Java程序提供更高效、更灵活的拓展。尽管Java一贯以其良好的跨平台性而著称,但真正的跨平台非C/C++莫属,因为当前世上90%的系统都是基于C/C++编写的。同时,Java的跨平台是以牺牲效率换来对多种平台的兼容性,因而JNI就是这种跨平台的主流实现方式之一。 总之,JNI是一门技术,是Java 与C/C++ 沟通的一门技术。首先,来回顾下Android的系统架构图。 我们来简单介绍下每一层的作用。 Linux层 Linux 内核 由于Android 系统是基础Linux 内核构建的,所以Linux是Android系统的基础。事实上,Android 的硬件驱动、进程管理、内存管理、网络管理都是在这一层。 硬件抽象层 硬件抽象层(Hardware Abstraction Layer缩写),硬件抽象层主要为上层提供标准显示界面

zabbix监控多个nginx vhost网站状态码

ぃ、小莉子 提交于 2020-12-17 04:02:56
需求 假设一台服务器运行了N个vhost网站,如何确定在大流量并发时候找到是哪个网站的问题呢? 这似乎是每个运维都会遇到的问题,方法有很多比如:1、看nginx日志大小确定访问量。2、通过前端代理确定访问量。3、通过防火墙,waf等工具确定访问量。4、通过elk日志,splunk日志分析系统等等 这里讲一个nginx的模块利用方法:Nginx Vhost Traffic Status 添加nginx模块 添加nginx模块的方法有很多,比如  https://blog.csdn.net/zyw_java/article/details/80558320 注意生产环境不要覆盖make install 最后安装完大概是这个样子,我们要手动取得里面5xx错误条数,进行监控出图。我来做一块砖,给大家一个思路。其他的功能实现照葫芦画瓢就行。 获取他的JSON格式文件,用python解析并汇报到zabbix里 JSON路径为:http://域名或者ip/status/format/json 为了安全起见建议设置nginx的allow和deny 例如下面: location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; allow 192.168.80.0/28; allow

redis源码之SDS

心不动则不痛 提交于 2020-12-17 00:56:53
#1:SDS介绍 我们在redis中执行命令 set key name 的时候,key和name都是字符串类型,而且字符串(string)在redis中是会经常用到的类型,那redis是如何保存字符串的呢?我们接下来往下看 众所周知,redis是c写的,在c中使用char来保存字符串,并且用\0作为字符串的结尾,但是redis不是这样保存的,redis是使用一种叫SDS的结构来保存字符串的。结构如下(redis3.2以前) struct sdshdr{ int len; int free; char buf[]; } 那么问题来了,redis为什么 会用SDS的结构,而不直接用c语言的字符串,我们来看看他们的区别 ###1:计算字符串长度的区别 对于c来说,计算字符串的长度的方式就是遍历,遇到\0就停止,所以复杂对是O(n),而SDS直接保存了字符串的长度,复杂度是O(1) ###2:保证二进制的安全 因为SDS并不是以\0为结尾的标志,自然就保证了二进制的安全 ###3:内存管理策略(预分配内存和惰性空间释放策略) redis是一个高速的缓存数据库,需要频繁的对字符串进行操作,如果内存分配错误,会导致很严重的后果,就算内存分配没问题,频繁的内存分配也是非常耗费时间的,所以这些都是应该去避免的 #####惰性空间释放策略 在SDS中首先用到了惰性空间释放策略

Python入门之用Python统计代码行

笑着哭i 提交于 2020-12-16 15:29:20
Pycharm每天都要写很多代码,如何统计每天的代码行数呢?作为一个目标十万行的coder,要想想办法! 题目:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。 首先分析一下思路捋一下大象装冰箱的步骤,从一个给定的目录统计该目录下所有的代码行大致需要以下7个步骤: 1. 遍历该目录下所有的文件。 2. 判断文件是否以“.py”结尾。(以python代码为例) 3. 打开.py文件(切忌勿用W+,W+会清空文件内容) 4. 循环读取文件的每一行 5. 判断每一行的内容: (a) 注释: 以#开头。 (b) 注释:以三引号开头结束。 (c) 空行:除空白字符无其他。 (d) 代码行:除空白字符之后还剩下其他字符。 6. 判断是否为文件末尾, 7. 关闭文件, 返回结果. 解题思路捋清楚之后剩下的就是将各模块的代码像搭积木一样搭起来就完事了(示例代码在本文最后): 1: 导入OS,定义 code_lines_count 函数并接收一个 path 形式参数,声明了三个变量分别用于统计代码行,注释行和空行 2: 遍历os.walk获取到的file 对象,然后将文件的后缀名利用splitext函数分割然后使用列表索引 [1] 取得文件后缀名,并判断是否是以“.py”结尾。(此处也可以使用listdir, 但listdir只能取单层目录下的文件,

爬取猫眼电影TOP100

不问归期 提交于 2020-12-16 08:43:48
本文所讲的爬虫项目实战属于基础、入门级别,使用的是Python3.5实现的。 本项目基本目标:在猫眼电影中把top100的电影名,排名,海报,主演,上映时间,评分等爬取下来 爬虫原理和步骤 爬虫,就是从网页中爬取自己所需要的东西,如文字、图片、视频等,这样我们就需要读取网页,然后获取网页源代码,从源代码中用正则表达式进行匹配,把匹配成功的信息存入相关文档中。这就是爬虫的简单原理。 操作步骤 : 1.确定抓取的数据字段(排名,海报,电影名,主演,上映时间,评分) 2.分析页面html标签结构,找到数据所在位置 3.选择实现方法及数据存储位置(存在在mysql 数据库中) 4.代码写入(requests+re+pymysql) 5.代码调试 确定抓取的页面目标URL:http://maoyan.com/board/4 1.导入库/模块 1 import re 2 import requests 3 import pymysql 4 from requests.exceptions import RequestException # 捕获异常 2.请求头域,在网页中查看headers,复制User-Agent内容 请求一个单页内容拿到HTML,定义函数,构建headers,请求成功则代码为200,否则失败重新写入代码 1 def get_one_page(url): 2 try : 3

猫眼电影top100票房爬虫 Request + 正则

天大地大妈咪最大 提交于 2020-12-12 18:39:20
import json import re from multiprocessing.pool import Pool import requests from requests import RequestException def get_one_page(url): try : response =requests. get (url) if response.status_code== 200 : return response.text except RequestException: return None def parse_one_page(html): ''' 对界面进行解析 :param html: : return : ''' pattern=re.compile( ' <dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a .*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(\d+)</i> ' ,re.S)#正则表达式 items = re.findall(pattern,html) for item in items: yield { ' 序号 ' :item

Java数据结构与算法分析 | 稀疏数组

做~自己de王妃 提交于 2020-12-12 10:20:33
GitHub源码分享 项目主页: https://github.com/gozhuyinglong/blog-demos 本文源码: https://github.com/gozhuyinglong/blog-demos/tree/main/java-data-structures 五子棋游戏的存取需求 在介绍稀疏数组前我们先来引入一个需求,下面是一个五子棋的棋盘(15 * 15),玩到中途时想要保存离开,希望下次打开还可以继续玩。我们怎么实现呢? 从对棋盘的观察来看,我们可以使用 int 型的二维数组进行存储,将未落子的地方存储0,白子存储1,黑子存储2,那么我们的数组可能是这样的: 可以看出,使用二维数组是能解决这个需求的。但我们也发现了一个问题,上面存储相同数值的0比较多,这对空间造成了浪费,有没有另外一种存储方式呢?答案是可以使用稀疏数组,下面我们来看稀疏数组是怎么实现的! 稀疏数组(Sparse Array) 当一个数组中大部分元素是0,或者是一个相同的值时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方式是: 记录数组一共有几行几列,以及不同值的数量 把具有不同值元素的行列及其值记录在一个小规模的数组中,从而缩小数据的规模。 那我们把上面二维数组转为稀疏数组存储,看是什么样子的。 第一行(即:0行)比较特殊,row存储总行数,col存储总列数,value存储非零

从零开始学Android!Android学习笔记在互联网上火了,吐血整理

依然范特西╮ 提交于 2020-12-11 02:03:48
程序员与别的专业有所不同,其他专业都是越老越香,而程序员却是一个例外,因为计算机技术更新太快,而且工作强度很大,因此大部分程序员只会写 3 年代码。3 年后要不晋升做项目经理,要么转行,个别研究所除外。 360°全方面性能调优 一、设计思想与代码质量优化 二、程序性能优化 三、开发效率优化 Android框架体系架构 一、高级UI晋升 二、Android组件内核 三、大型项目必备IPC 四、数据持久化 五、Framework内核解析 架构师筑基必备技能 一、深入Java泛型 二、注解深入浅出 三、并发编程 四、数据传输与序列化 五、Java虚拟机原理 六、反射与类加载 七、高效IO NDK模块开发 一、C++与C#数据类型总结 二、C与C++之内存结构与管理 三、C与C++之预处理命令与用typedef命名已有类型 四、C与C++之结构体、共用体 五、C与C++之指针 六、C/C++ 之多线程机制 七、C/C++ 之函数与初始化列表 JNI模块 一、静态注册与动态注册 二、方法签名与Java通信 三、局部引用、全局引用和弱全局引用 设计思想解读开源框架 一、热修复设计 二、插件化框架设计 三、组件化框架设计 四、图片加载框架 五、网络访问框架设计 六、RXJava响应式编程框架设计 七、IOC架构设计 八、Android架构组件Jetpack Flutter进阶学习笔记 一