memcached

每天进步一点点:“JVM性能调优解析”,分享JVM进阶面试题77问!

空扰寡人 提交于 2020-08-10 17:31:53
前言 Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统。 Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”。 Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Java技术使同一种应用可以运行在不同的平台上。Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库。 分享详细解析77道Java面试时常问的JVM题,希望对各位有所帮助,另外我针对当前互联网面试总结一些资料给大家,文末有领取方式(诚意满满) 由于文章篇幅问题,我这里就不一一解析了,需要获取全部答案解析的可以 关注公众号【风平浪静如码】获取文档! 1、java中会存在内存泄漏吗,请简单描述。 2、64 位 JVM 中,int 的长度是多数? 3、Serial 与 Parallel GC 之间的不同之处? 4、32 位和 64 位的 JVM,int 类型变量的长度是多数? 5、Java 中 WeakReference 与

【Canal】互联网背景下有哪些数据同步需求和解决方案?看完我知道了!!

℡╲_俬逩灬. 提交于 2020-08-10 02:25:34
写在前面 在当今互联网行业,尤其是现在分布式、微服务开发环境下,为了提高搜索效率,以及搜索的精准度,会大量使用Redis、Memcached等NoSQL数据库,也会使用大量的Solr、Elasticsearch等全文检索服务。那么,这个时候,就会有一个问题需要我们来思考和解决:那就是数据同步的问题!如何将实时变化的数据库中的数据同步到Redis/Memcached或者Solr/Elasticsearch中呢? 互联网背景下的数据同步需求 在当今互联网行业,尤其是现在分布式、微服务开发环境下,为了提高搜索效率,以及搜索的精准度,会大量使用Redis、Memcached等NoSQL数据库,也会使用大量的Solr、Elasticsearch等全文检索服务。那么,这个时候,就会有一个问题需要我们来思考和解决:那就是数据同步的问题!如何将实时变化的数据库中的数据同步到Redis/Memcached或者Solr/Elasticsearch中呢? 例如,我们在分布式环境下向数据库中不断的写入数据,而我们读数据可能需要从Redis、Memcached或者Elasticsearch、Solr等服务中读取。那么,数据库与各个服务中数据的实时同步问题,成为了我们亟待解决的问题。 试想,由于业务需要,我们引入了Redis、Memcached或者Elasticsearch、Solr等服务

PHP的Memcache操作方法分解 

我们两清 提交于 2020-08-09 23:23:56
五、PHP的Memcache操作方法分解 Memcache::add用法 复制代码代码如下: bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] ) 说明: 如果$key不存在的时候,使用这个函数来存储$var的值。功能相同的函数是memcache_add()。 参数: $key :将要存储的键值。 $var :存储的值,字符型和整型会按原值保存,其他类型自动序列化以后保存。 $flag:是否用MEMCACHE_COMPRESSED来压缩存储的值,true表示压缩,false表示不压缩。 $expire:存储值的过期时间,如果为0表示不会过期,你可以用unix时间戳或者描述来表示从现在开始的时间,但是你在使用秒数表示的时候,不要超过2592000秒 (表示30天)。 返回值: 如果成功则返回 TRUE,失败则返回 FALSE。如果$key值已经存在,则会返回FALSE。 其他情况下Memcache::add()的用法类似于Memcache::set()。 例子: 复制代码代码如下: <?php $memcache_obj = memcache_connect(”localhost”, 11211); memcache_add($memcache_obj, 'var_key',

高级 Java 必须突破的 10 个知识点!

十年热恋 提交于 2020-08-09 14:01:20
工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级Java攻城狮需要突破哪些知识点呢? 1、Java基础技术体系、JVM内存分配、垃圾回收、类装载机制、性能优化、反射机制、多线程、网络编程、常用数据结构和相关算法。 2、对面向对象的软件开发思想有清晰的认识、熟悉掌握常用的设计模式。 3、熟练掌握目前流行开源框架(spring/springmvc/ibatis),并且对其核心思想、实现原理有一定认知。 4、熟悉Oracle、MySQL等数据库开发与设计以及缓存系统Redis或 Memcached的设计和研发。 5、熟悉底层中间件、分布式技术(包括缓存、消息系统、热部署)、消息中间件:ActiveMQ、RabbitMQ、工作流中间件:JBPM。 6、精通shell编程,熟练应用awk、sed、grep、strace、tcudump、gdb等常用命令。 7、有大型分布式、高并发、高负载(大数据量)、高可用性系统设计开发经验。 8、对配置管理和敏捷研发模式有所了解(svn,git)。 9、熟悉常见的一些解决方案及其原理:单点登录、分布式缓存、SOA、全文检索、消息中间件,负载均衡、连接池、流计算等。 10、能大概知道市面上主流技术的特点及业务瓶颈。 好了,看完大概知道自己哪里不足

Redis 的基础数据类型

自闭症网瘾萝莉.ら 提交于 2020-08-08 15:42:25
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 正文如下 那你能说一下他们的特性,还有分别的使用场景么? 行吧,那我先从String说起。 String: 这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。 但是真实的开发环境中,很多仔可能会把很多比较复杂的结构也统一转成String去存储使用,比如有的仔他就喜欢把对象或者List转换为JSONString进行存储,拿出来再反序列话啥的。 我在这里就不讨论这样做的对错了,但是我还是希望大家能在最合适的场景使用最合适的数据结构,对象找不到最合适的但是类型可以选最合适的嘛,之后别人接手你的代码一看这么规范,诶这小伙子有点东西呀,看到你啥都是用的String,垃圾! 好了这些都是题外话了,道理还是希望大家记在心里,习惯成自然嘛,小习惯成就你。 String的实际应用场景比较广泛的有: 缓存功能:String字符串是最常用的数据类型,不仅仅是Redis,各个语言都是最基本类型,因此,利用Redis作为缓存,配合其它数据库作为存储层,利用Redis支持高并发的特点,可以大大加快系统的读写速度、以及降低后端数据库的压力。 计数器:许多系统都会使用Redis作为系统的实时计数器,可以快速实现计数和查询的功能。而且最终的数据结果可以按照特定的时间落地到数据库或者其它存储介质当中进行永久保存。 共享用户Session

Redis 和 Memcached 有什么区别?

爷,独闯天下 提交于 2020-08-08 03:59:31
面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个 单线程工作模型 ,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道? 还有可能面试官会问问你 redis 和 memcached 的区别,但是 memcached 是早些年各大互联网公司常用的缓存方案,但是现在近几年基本都是 redis,没什么公司用 memcached 了。 面试题剖析 redis 和 memcached 有啥区别? redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有 更多的数据结构 ,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。 redis 原生支持集群模式 在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。 性能对比 由于 redis 只使用 单核 ,而 memcached 可以使用 多核 ,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中

为什么Uber微服务架构使用多租户

此生再无相见时 提交于 2020-08-07 13:01:53
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Uber服务的高性能主要依赖于在当前平台上快速以及稳定的开发新特性能力,和对应服务使用什么技术栈无关。Uber平台最根本的能力是基于微服务架构,这是一种常用的结构化风格,也就是由各种互操作的服务组成的应用。 微服务架构可以提供很好的伸缩性,同时也能够支持稳定的部署和模块化。在Uber,不同的工程师团队都是基于互操作的服务来工作,所以确保我们的技术栈既要能够安全的发布新的变动,也要能够基于模块化方式可靠的使用架构的已有部分,这点非常重要。总而言之,这些功能能够提高开发者的开发速度以及快速的发布周转(turnaround)次数,另外还可以给我们提供基于独立调度(schedules)构建的灵活性,同时依然可以满足服务级别协议(SLAs)。 在一个微服务架构中允许多系统共存是利用微服务稳定性以及模块化最有效的方式之一,这种方式一般被称为多租户(multi-tenancy)。租户可以是测试,金丝雀发布,影子系统(shadow systems),甚至服务层或者产品线,使用租户能够保证代码的隔离性并且能够基于流量租户做路由决策。对于传输中的数据(data-in-flight)(例如,消息队列中的请求或者消息)以及静态数据(data-at-rest)(例如,存储或者持久化缓存)

Celery浅谈

半腔热情 提交于 2020-08-06 11:39:26
一、Celery 核心模块 1. Brokers brokers 中文意思为中间人,在这里就是指 任务队列本身 ,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker,Brokers 就是生产者和消费者存放/拿取产品的地方(队列)。Celery 扮演生产者和消费者的角色。 常见的 brokers 有 rabbitmq、redis、Zookeeper 等。推荐用Redis或RabbitMQ实现队列服务。 2. Workers 就是 Celery 中的 工作者 ,执行任务的单元,类似与生产/消费模型中的消费者。它实时监控消息队列,如果有任务就从队列中取出任务并执行它。 3. Backend / Result Stores 用于存储任务的执行结果 。队列中的任务运行完后的结果或者状态需要被任务发送者知道,那么就需要一个地方储存这些结果,就是 Result Stores 了。 常见的 backend 有 redis、Memcached 甚至常用的数据库都可以。 4. Tasks 就是 想在队列中进行的任务 ,有异步任务和定时任务。一般由用户、触发器或其他操作将任务入队,然后交由 workers 进行处理。 5. Beat 定时任务调度器 ,根据配置定时将任务发送给Brokers。 二、Celery 基本使用 1.创建一个celery application

学习要走心,跳槽需慎重,1000道BATJava面试题你都会吗?等你来挑战 ​

一曲冷凌霜 提交于 2020-08-06 09:43:30
面试题 不会做的不要着急!!! MyBatis 面试题 什么是 Mybatis? Mybaits 的优点: MyBatis 框架的缺点: MyBatis 框架适用场合: MyBatis 与 Hibernate 有哪些不同? #{}和${}的区别是什么? 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 模糊查询 like 语句该怎么写? 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? Mybatis 是如何进行分页的?分页插件的原理是什么? Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? 如何执行批量插入? 如何获取自动生成的(主)键值? 在 mapper 中如何传递多个参数? Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql? Xml 映射文件中,除了常见的 select|insert|updae|delete标签之外,还有哪些标签? 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里? 一对一、一对多的关联查询 ? MyBatis 实现一对一有几种方式?具体怎么操作的? MyBatis 实现一对多有几种方式,怎么操作的? Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?

MySQL调优 优化需要考虑哪些方面

牧云@^-^@ 提交于 2020-08-06 09:00:25
MySQL调优 优化需要考虑哪些方面 优化目标与方向定位 总体目标:使得响应时间更快,吞吐量更大。 (throughout --- 吞吐量:单位时间内处理事务的数量) 如何找到需要优化的地方 使用反馈。比如做出一些操作后导致效率降低 分析日志。 监控服务器资源。系统,内存,I/O 监控数据库运行状况 可优化维度 设计优化 选择适合的DBMS 对表恰当的设计 尽量遵循第三范式。减少冗余的同时减少增删改时出错的可能。 适当地"反范式",以空间换时间,提高多表联查的效率。 选择恰当的字段类型。尽量选择数据类型,尽量选择字符长度小的字符类型。 查询优化 对SQL查询进行 逻辑优化 --- 就是使用恰当的SQL语句让查询速度更快 比如“小表驱动大表”的EXISTS和IN 比如子查询优化,简化查询条件等等 对SQL查询进行 物理优化 --- 就是通过索引或表链接的方式进行优化,本质上是对Server层优化器和执行器进行“人工辅助”,人为地减轻优化器和执行器的压力。 索引 为表设计精简且高效的索引 --- 索引不是越多越好,索引需要占据存储空间,过多的索引也会提高优化器选择索引的难度。比如字段内数据重复度高时不建立索引,如性别 若在where中对索引字段进行了表达式计算,会造成该字段索引失效。 设计联合索引时选择恰当的顺序 --- 最左前缀原则 表连接 单表:全表扫描或局部扫描 两表:合并连接