Redis

NoSQL概述

空扰寡人 提交于 2020-10-17 18:33:02
NoSQL概述 单机MySQL时代 ​ 大数据时代,一般的数据库无法进行分析处理 数据量如果太大,一个机器放不下 数据的索引(B+ Tree),一个机器内存也放不下 访问量(读写混合),一个机器承受不了 Memecache + MySQL+垂直拆分(读写分离) 减轻服务器压力,使用缓存 发展过程:优化数据结构和索引-->文件缓存(IO)-->Memcached 分库分表+水平拆分+MySQL集群 早些年MyISAM:表锁,在高并发下严重影响效率 Innodb:行锁 使用分库分表来解决写的压力! 如今年代 MySQL等关系型数据库不够用!数据量大,变化很大 MySQL有的使用它来存储一些比较大的文件,博客,图片等,数据表很大,效率就低了。 大数据的IO压力下,表几乎没法更大 目前一个基本的互联网项目 为什么要用NoSQL 用户的个人信息,社交网络,地理位置。用户自己产生的数据,日志等等爆发式增长,无法使用关系型数据库进行存储,需要使用NoSQL! 什么是NoSQL NoSQL = Not Only SQL 关系型数据库:表格,行,列 泛指非关系型数据库,随着web2.0到来,传统关系型数据库很难对付web2.0,尤其是超大规模的高并发的社区,暴露出很多难以克服的问题,Redis是当下发展最快的,必须掌握的技术 很多的数据类型个人信息,社交网络,地理位置等不需要一个固定的格式

秋招已经过半,该如何抓住最后机会?给你们总结了495道Java高频面试题!快快收藏

主宰稳场 提交于 2020-10-17 13:58:06
这个时候,大厂已经进入中后阶段,同学们要再接再厉哦! 秋招非常关键,如果不把握住秋招的话,就要等来年的春招,而春招已经是一个年度校园招聘计划的后半截,有时候是补招,这种时候可挑选的岗位数量大不如前,质量也不及秋招,但要求却会比较高,无形中增加了应聘难度。 所以说,无论是找全职,还是找实习,秋招都是拿到dream offer的最佳时机! 轰轰烈烈的“金九银十”秋招季马上落幕, 有人欢喜有人愁,不管你是喜是忧,学习总归是好的。这不 ,小编特地整理了一下秋招面试知识点+答案(JAVA岗),一起分享出来给大家看看~ 注意注意:需要完整版的 知识点+答案 的朋友可以 第一部分 Java相关 1.1 JAVA基础 面向对象和面向过程的区别 Java 语言有哪些特点 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 List 和 Set 的区别 什么是 Java 程序的主类 应用程序和小程序的主类有何不同 Java 应用程序与小程序之间有那些差别 字符型常量和字符串常量的区别 Java 面向对象编程三大特性: 封装 继承 多态 构造器 Constructor 是否可被 override Arrays.sort 实现原理和 Collection 实现原理 重载和重写的区别 String StringBuffer 和 StringBuilder

2020年的Java程序员如何才能做到不接私活也能月薪40k?

流过昼夜 提交于 2020-10-17 13:49:48
接私活 对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后跑滴滴一样,程序员私有时间接点活挣点钱不也很正常么,不过不要在上班时间就行,就跟你上班期间出去跑滴滴一样。 但是我是不建议接私活的,接私活会浪费自己在一大部分的精力, 就算不接私活,利用好工作后的八小时也能比别人强,月薪也绝对不会比那些接私活的少。 把有限的时间花在提升自己的能力上,技术深度,技术广度,或者多阅读书籍,丰富自己,这样有可能比做外包收益大。 回想自己做开发的这八年多,我获得了很多,技术能力、培训、出国、大公司的,还记得刚刚出来第一年那段时间,太多东西不懂的,我都是一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;这样干了一年 第二年的时候我就在想,自己还要这样吗? 当然是否定的,不可能的,一年的经验自己完全可以入行了,是时候该学习怎么进行需求分析,怎么设计数据库,怎么写各类文档,怎么写更好的代码? 所以说:一个人在一家公司呆久了,千万不要模式化,一直待着舒适区,因为当你一旦离开这家公司,找工作的时候就会很容易碰壁,在这里:我建议大家一定要提前计划着去学习 ... 我在这里给那些想达到这个高度甚至想往架构师发展的程序员提供一份进阶路线图

阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo

删除回忆录丶 提交于 2020-10-17 09:54:36
微服务 软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。 什么是微服务架构 微服务架构优势 独立部署,由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。 技术选型灵活微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,当需要对技术栈进行升级时所面临的风险较低,甚至完全重构一个微服务也是可行的。 容错:当某个组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。 扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。 高并发 1、应用缓存 2、HTTP缓存 3、多级缓存 4、池化 5、步并发 6、扩容 7、队列 Dubbo 1、服务集群

基于PHP+Redis令牌桶限流

萝らか妹 提交于 2020-10-17 08:44:01
一 、场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户,他在一个时间段(interval)内,比如 1 分钟,调用服务器接口的次数不能够 大于一个上限(limit),比如说 100 次。如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。 服务接口的流量控制策略:分流、降级、限流等。本文讨论下限流策略,虽然降低了服务接口的访问频率和并发量,却换取服务接口和业务应用系统的高可用。 二、常用的限流算法 1、漏桶算法 漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.示意图如下: 可见这里有两个变量,一个是桶的大小,支持流量突发增多时可以存多少的水(burst),另一个是水桶漏洞的大小(rate)。 因为漏桶的漏出速率是固定的参数,所以,即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使流突发(burst)到端口速率.因此,漏桶算法对于存在突发特性的流量来说缺乏效率. 2、令牌桶算法 令牌桶算法(Token Bucket)和 Leaky Bucket 效果一样但方向相反的算法

面试 .NET 开发,为什么也要考算法?

自古美人都是妖i 提交于 2020-10-17 08:01:28
最近有不少人面试,我发现很多候选人,聊起架构、框架侃侃而谈,但一写代码,就暴露真实水平。说白了,还是基本功不够扎实。 在我看来,所有基本功中,最核心的一定是 数据结构与算法 。也因此,所有大厂面试,都必考算法题。分享我自己学算法的一些感悟吧。 1、算法不是纯粹拼智商的,而是一种技能,是可以通过科学合理的方式训练出来的能力。 2、学算法,刷题蛮干是不行的,需要遵循科学的方法。算法训练是个系统工程,得循序渐进着来,过于急功近利,反而会因做不出题而产生挫败感,带来反作用。 那会儿,我几乎把市面上所有算法教程都撸了一遍。虽说有所收获,但我发现这些资料还是更偏理论,举例也大多脱离真实的软件开发。看的时候各种明白,合上书就忘得精光。 真正让我觉得很受启发的,就是小争哥的 《数据结构与算法之美》 专栏,这门课我之前也推荐过,是我认为市面上最适用于工程师的算法课,常年稳居极客时间订阅量 TOP 1,现在订阅超过 90000 了。 拼团+口令「study2020」立省 ¥45 原价 ¥129,仅限今日 新人专享 ¥19.9 小争哥是前 Google 工程师,不仅实战经验丰富,而且特别会教,是个不可多得的老师。专栏现已全部更新完毕——原计划 45 篇,完结时足足写了 72 篇。我已经刷了两遍,每次看都还有新收获。 整个专栏涵盖 100+ 真实项目场景案例,王争还手绘了不少详解图(共 300 多张)

Redis03-Redis的数据结构之跳表

我们两清 提交于 2020-10-17 07:52:50
前言 上一篇文章我们介绍了字典这个数据结构,这一篇文章我们接着来学习下另外一个数据结构,跳表。那么什么是跳表呢? 跳表的基本概念 跳表是一种有序的数据结构,它通过在每个节点中维持多个指向其他的节点指针,从而达到快速访问队尾的目的。 这么说是不是感觉有点云里雾里呢?那么我们详细解释下这个概念。 想象一下,对于一个单链表,如果我们要查找单链表中的某个结点,我们该怎么做呢?是不是必须要从链头开始向链尾遍历直到找到我们想要找的那个元素。其时间复杂度在O(n)。如下图所示,如果我们需要查找6这个结点,我需要把前面的结点遍历完。 那么我们可以怎么优化这个查找效率呢?优化的思路就是尽量少的去遍历结点个数。该怎么做到这一点呢?这时候我们可以想到索引。增加索引减少需要遍历的结点个数。如下图所示: 其中我们通过索引层结点的 down 指针,下降到原始链表这一层。例如我们需要查找6这个结点,原来我们需要遍历6个结点,现在我们只需要遍历5个节点就可以了。我们不需要从链头对结点一个个的去遍历,只需要从链表的索引层开始查找。单链表越长,索引层越多查询的效率差别越明显。 像这种单链表+索引的结构就是跳表。 跳表的时间复杂度 介绍完了跳表的基本概念,接下来我们来了解下跳表的时间复杂度。我们分别分析下查询,插入以及删除的时间复杂度。 查询的时间复杂度 如上图:我们每两个结点抽出一个结点作为上一级索引的结点

CI框架简单集成.env 文件读写

会有一股神秘感。 提交于 2020-10-17 05:38:54
在 根目录 创建一个.env 文件 .env 的内容 "database"="mb_tv" hostname = "ip" username="root" password="123456" port="39188" dbprefix="t_" redis_host = "localhost" redis_port = "6379" redis_auth = "" 在CI 框架的入口文件index.php 中 加入以下代码 $env_dir = $_SERVER['DOCUMENT_ROOT']."/".".env"; $_ENV = []; if(is_file($env_dir)){ $_ENV = parse_ini_file($env_dir, true); } 在 数据库配置文件 $active_group = 'default'; $query_builder = TRUE; $db['default'] = array( 'dsn' => '', 'hostname' => $_ENV['hostname']?$_ENV['hostname']:"mysql", 'username' => $_ENV['username']?$_ENV['username']:"root", 'password' => $_ENV['password']?$_ENV[

SpringCloud与Dubbo的比较

元气小坏坏 提交于 2020-10-17 01:38:08
Dubbo 一、dubbo简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 现已发展成为Apache的顶级孵化开源项目,详见官网: http://dubbo.apache.org/en-us/ 二、dubbo组织架构图 官网的dubbo组织架构图 详细介绍 1、Registry:服务注册与发现中心,作为服务提供者和消费者注册与发现的中心。 2、Provider:服务提供者,在注册中心注册作为服务提供的一方,发布服务到服务注册中心。 3、Consumer:服务消费者,通过注册中心协调,订阅可用的已注册的服务。 4、Container:服务运行容器,独立的容器类似于tomcat/jboss的作用,作为服务运行的容器。 5、Monitor:dubbo的监控中心,用来显示接口暴露、注册情况,也可以看接口的调用明细,调用时间等。 三、dubbo的优势 单一应用架构,当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM)是关键。 垂直应用架构,当访问量逐渐增大

真香!阿里P8耗时半年著作660页Java高并发与网络编程实战总结

笑着哭i 提交于 2020-10-16 13:19:16
随着软件行业的飞速发展,互联网公司对开发者的技能要求也越来越高。而高并发、网络编程、微服务、海量数据的处理等技能,是每一个开发者进阶时的必学知识。 这份阿里大佬的实战总结笔记由核心技术、应用框架和数据处理三部分组成。 核心技术介绍了与高并发相关的架构设计及多线程、NIO、网络编程等底层技术 应用框架讲解了目前流行的一些高并发及分布式框架技术,如Disruptor Spring Boot、Spring Cloud等,这些技术也是目前在国内外互联网企业中被广泛应用的; 数据处理部分重点介绍了如何优化数据,如何使用关系型数据库、非关系型数据库及大数据领域的MapReduce技术处理海量数据,从而为高并发场景提供一套完善的存储方案。 总览 因为篇幅限制,下面小编会展示目录和详细内容截图,有需要获取完整文档的朋友帮忙点赞后,私信我【文档资料】就可以了(一定要记得关注我,不然没办法回复陌生人私信)。 第1章高并发概述 第2章系统分析与大型互联网架构设计 第3章高并发相关JVM与JDK新特性案例讲解 第4章实战解析多线程并发包 第5章分布式网络编程核心技术—远程调用 第6章NIO案例解析与高性能聊天室实战 第7章高性能NIO框架Netty实例详解 第8章主流RPC框架解析与跨语言调用案例 第9章实战解析高并发框架Disruptor 第10章手把手开发微服务构建框架Spring Boot