webp

牛逼!Redis 的字符串是这样实现的…

主宰稳场 提交于 2020-10-02 22:00:33
作者:小小木的博客 www.cnblogs.com/wyc1994666/p/10669212.html 之前本人在找工作面试时在Redis相关问题上可栽了跟头。 在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现 分布式锁 ,简单 发布订阅 等等都准备了,当时不知天高地厚以为十拿九稳了,可是万万没想到我终究还是在Redis的被问的第一个问题上翻船了~~ 面试官 : 看你简历上写了熟悉常用数据结构,都有哪些说说 本人 : 常用有5种,string,list,set,zset,hash(内心很得意) 面试官 : 那你说说都用过哪些数据结构_ 本人 : 用的最多的是string,通常会把json字符串存进去_ 面试官 : 那你知道Redis内部是怎么实现它的string的么?_ 本人 : 呃~,我了解Redis是用C语言写的,至于具体实现就不清楚了~ 到此一面卒~~~ 有相同经历的朋友么? 回去后恶补了一下Redis有关原理性的知识点,恰好最近在最总结面试经历于是有了今天这篇文章。 本篇会讲以下内容: Redis字符串的实现 Redis字符串的性能优势 Redis字符串的实现 Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能,可以看出Redis为了高性能也是煞费苦心

Docker 的前世今生

有些话、适合烂在心里 提交于 2020-08-20 08:35:54
虚拟化       要解释清楚 Docker,首先要解释清楚容器(Container)的概念 。要解释容器的话,就需要从操作系统说起。操作系统太底层,细说的话一两本书都说不清楚。这里就一句话来总结一下:操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序,并且为软件运行提供通用服务的系统软件。   随着硬件的性能提升,软件种类的丰富,有两种情况变得很常见: 硬件性能过剩——很多计算机的硬件配置,往往会有大量时间处于硬件资源闲置的状态。例如一般家用电脑,已经是四核、六核的配置了,除了3A游戏、视频制作、3D渲染、高性能计算等特殊应用外,通常有 90% 以上时间 CPU 是闲置的; 软件冲突——因为业务需要,两个或者多个软件之间冲突,或者需要同一个软件的不同版本。例如早几年做 Web 前端的,要测试网页在不同版本的 IE 上是否能正常显示,然而 Windows 只能装一个版本的 IE。      为了解决软件冲突,只能配置多台计算机,或者很麻烦的在同一台电脑上安装多个操作系统。显然这两个方案都有其缺点:多台计算机成本太高,多操作系统的安装、切换都很麻烦。在硬件性能过剩的时候, 硬件虚拟化 的普及就很自然而然的提出来了。   所谓硬件虚拟化,就是某个特殊的软件,仿真出一台或者多台计算机的各种硬件,用户可以在这一台虚拟机上安装、运行操作系统

面试篇之数据结构与算法概述

非 Y 不嫁゛ 提交于 2020-08-19 16:48:38
01.数据结构与算法概述 本节内容概要 数据结构及算法概念以及用途 数据结构分类 算法的5大特征 算法的时间复杂度与空间复杂度 1.1、概念 1). 数据结构是一门研究数据组织方式的学科,可以帮助我们写出高效优雅的代码。选择适当的数据结构可以提高程序的执行效率(时间复杂度)和存储效率(空间复杂度) 2). 算法是用来操作数据的一种方法,解决某个问题的计算方法、步骤。 数据结构是为算法服务的,算法要作用在特定的数据结构之上 程序=数据结构+算法 weixin sousuo guanzhu "SpringForAll社区" ,学习更多!!! 1.2、数据结构分类 1).线性结构: 简单的前后关系: 数组、链表、队列和栈 2).树结构:普通树、二叉树 3).图结构: 和非线性结构 线性结构:一对一的关系 1) 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 2) 线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 3) 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息 4) 线性结构常见的有:数组、链表、队列和栈 树结构:一对多的关系 普通树、二叉树 图:适合存储多对多的关系 1.3、 算法的五大特征 有穷性

【详细】豆瓣小程序--从0-1实现自己的导航栏控件

孤者浪人 提交于 2020-08-19 04:31:40
导航栏是app,小程序中非常常见的一个需求,作为常见的需求,如何高效地完成该需求的实现,就异常关键。那么我们如何从0到1实现自己的导航栏控件呢,请看本文。 导航栏实际效果 1. 没有点击时候,导航栏显示放大镜图标 2. 点击导航栏,显示搜索两个字 3. 可以输入关键词,进行搜索导航 由于在一个小程序里面,导航栏功能出现很多,因此我计划将其做成一个控件,以便多次复用,减少代码重复冗余。这就涉及到了components组件的知识点 那么这个功能的整体架构和应用可以分为两部分,控件的布局,应用调用页面的布局 searchbar空间布局 首先是wxml,这里我定义了search-navigator这个控件对象,isnaviagator这个判断是否导航的参数,url则是跳转到对应的导航页面。 <view class="searchbar"> <navigator wx:if="{{isnavigator}}" url='/pages/search/search' class='search-navigator'></navigator> </view> 其次是js文件,定义isnavigatior参数 // components/searchbar/searchbar.js Component({ /** * 组件的属性列表 */ properties: { isnavigator: {

小白如何学习Python网络爬虫?

拥有回忆 提交于 2020-08-18 06:27:32
人生苦短,我用Python Python网络爬虫上手很快,能够尽早入门,可是想精通确实是需求些时间,需求达到爬虫工程师的级别更是需求煞费苦心了,接下来共享的学习道路是针对小白或许学习Python网络爬虫不久的同伴们。 学习网络爬虫能够分三步走,如果你是大神,请直接绕走,蟹蟹~~ 第一步,刚触摸Python网络爬虫的时分肯定是先过一遍Python最基本的常识,比如说:变量、字符串、列表、字典、元组、操控句子、语法等,把根底打牢,这样在做案例的时分不会觉得模糊。根底常识能够参阅廖雪峰的教程,很根底,也非常易懂,关于新手能够很快接纳。此外,你还需求了解一些网络恳求的基本原理、网页结构(如HTML、XML)等。 第二步,看视频或许找一本专业的网络爬虫书本(如用Python写网络爬虫),跟着他人的爬虫代码学,跟着他人的代码敲,弄懂每一行代码,留意务必要着手亲身实践,这样才会学的更快,懂的更多。许多时分我们好大喜功,觉得自己这个会,然后不愿意着手,其实真实比及我们着手的时分便漏洞百出了,最好每天都坚持敲代码,找点感觉。开发东西主张选Python3,由于到2020年Python2就中止保护了,日后Python3肯定是干流。IDE能够选择pycharm、sublime或jupyter等,小编引荐运用pychram,由于它非常友爱,有些相似java中的eclipse,非常智能。浏览器方面,学会运用

修改docker镜像的映射端口

孤人 提交于 2020-08-18 00:18:09
修改镜像配置文件,重启docker,配置文件在 /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json 其中的hash_of_the_container是docker镜像的hash值,可以通过 docker ps 镜像id 查看 其中有一项是PortBindings,例如上面这个例子中,5432/tcp对应的是容器内部的5432端口,HostPort对应的是主机的端口,修改相应端口就可以了,然后重启docker服务: systemctl restart docker 最后start docker镜像 来源: oschina 链接: https://my.oschina.net/codeccb/blog/4503288

不就一个上传图片功能吗,为什么要搞得那么复杂?

▼魔方 西西 提交于 2020-08-17 21:32:38
说到上传图片,大家肯定都特别熟悉,不管是从用例设计角度,还是安全性角度来看,都会对上传图片设计出覆盖率超全的有效用例。 那么问题来了,去哪里去找那些“稀奇古怪”的图片,比如大小、文件类型、分辨率等等,下面为大家推荐一款小工具 Musule ,源代码和安装步骤都有哦。 一、优点 简单易上手 开源免费 详细使用文档 提高测试效率 二、功能 批量重命名图片 批量下载图片 修改图片大小 生成不同格式图片 图片打水印 三、工具地址 https://github.com/Musule/image-test-tools 四、安装 1、Nodejs 如果你电脑还未安装配置nodejs环境,请参考: https://www.runoob.com/nodejs/nodejs-install-setup.html 说明:如果你电脑已安装配置nodejs环境,可跳过此步骤! 2、安装 npm install 说明:安装所需要依赖库,仅首次使用执行一次 如果你电脑安装比较慢,命令行执行输入 npm config set registry http://registry.npm.taobao.org/ 五、使用 1、批量重命名图片 1.1、被重名的图片,已放在image文件夹中 image-test-tools/Rename/image 如下图所示: 1.2、命令行输入 ① 使用默认 node Rename

@Lazy 注解

五迷三道 提交于 2020-08-17 20:15:09
Spring IoC (ApplicationContext) 容器一般都会在启动的时候实例化所有单实例 bean 。如果我们想要 Spring 在启动的时候延迟加载 bean,即在调用某个 bean 的时候再去初始化,那么就可以使用 @Lazy 注解。 @Lazy 的属性 value 取值有 true 和 false 两个 默认值为 true true 表示使用 延迟加载, false 表示不使用,false 纯属多余,如果不使用,不标注该注解就可以了。 Person 类 public class Person { private String name ; private Integer age ; public Person ( ) { } public Person ( String name , Integer age ) { System . out . println ( " 对象被创建了............." ) ; this . name = name ; this . age = age ; } // 省略 getter setter 和 toString 方法 } 配置类 不标注 @Lazy 注解 public class LazyConfig { @Bean public Person person ( ) { return new Person (

教你一招另辟蹊径抓取美团火锅数据

淺唱寂寞╮ 提交于 2020-08-17 16:56:18
最近有个小伙伴在群里问美团数据怎么获取,而且她只要火锅数据,她在上海,只要求抓上海美团火锅的数据,而且要求也不高,只要100条,想做个简单的分析,相关的字段如下图所示。 乍一看,这个问题还真的是蛮难的,毕竟美团也不是那么好抓,什么验证码,模拟登陆等一大堆拂面而来,吓得小伙伴都倒地了。 通过F12查看,抓包,分析URL,找规律,等等操作。 不过白慌,今天小编给大家介绍一个小技巧,另辟蹊径去搞定美团的数据,这里需要用到抓包工具Fiddler。讲道理,之前我开始接触网络爬虫的时候也没有听过这个东东,后来就慢慢知道了,而且它真的蛮实用的,建议大家都能学会用它。这个工具专门用于抓包,而且其安装包也非常小,如下图所示。 接下来,我们开始进行抓取信息。 1、在Fiddler的左侧找到meituan网站的链接,如下图所示。链接的左边返回的response(响应)的文件类型,可以看到是JSON文件,尔后双击这一行链接。 2、此时在右侧会显示下图的界面,点击黄色区域内的那串英文“Responsebody is encoded. Click to decode.”意思是response是加密的,点击此处进行解码,对返回的网页进行解码。 3、此时会弹出下图所示的界面,在WebView中可以看到返回的数据,与网页中的内容对应一致。 4、不过美团网限制一页最多显示32条火锅信息,如下图所示。 5