Redis

开发四年的Java程序员,你遇到过自身瓶颈期吗?又是怎样度过的?

非 Y 不嫁゛ 提交于 2020-08-12 03:12:55
从毕业到现在已经快4年啦,一直在Java的WEB开发行业混迹。我不是牛人,但是自我感觉还算是个合格的程序员,有必要写下自己将近4年来的经历,给自我以提示,给刚入行的朋友提供点参考。 貌似这一点适应的行业最广,但是我可以很肯定的说:当你从事web开发一年后,重新找工作时,才会真实的感受到这句话。 工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西;所有,很多时候感觉,自己用过的东西真多呀!但是真正深入研究的东西却不多。 面试,是跳槽后第一个需要面对的问题;而且不同公司面试的着重点不同;但是却有一个共同点:Java基础是必考的。工作第一年,可能问你String对象创建的理解,常用的框架是什么等等;工作第二年,就问你Java内存分配机制是什么,类是如何加载的等等;第三年,就问你常用的设计模式是什么,你在工作中充当什么角色,怎么独立完成一个模块等等; 可以看出------这是一个典型的程序员的成长过程: 使用Java---->深入理解Java积累经验------>独立设计分析能力------>独当一面的多面手! 因此,必须学习: 列举一些技术 比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计

redisTemplate #分布式锁# 设置过期时间

喜夏-厌秋 提交于 2020-08-12 03:10:41
<!--导入依赖--> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-data-redis </artifactId> </dependency> @Service @Slf4j public class RedisService { @Resource ( name = "stringRedisTemplate" ) ValueOperations<String , String> valOpsStr ; /** * 获取一个redis分布锁 * * @param lockKey 锁住的key * @param lockExpireMils 锁住的时长。如果超时未解锁,视为加锁线程死亡,其他线程可夺取锁 * @return */ public boolean getLock (String lockKey , long lockExpireMils) { return (Boolean) redisTemplate .execute((RedisCallback) connection -> { long nowTime = System. currentTimeMillis () ; Boolean acquire = connection

我的奇葩面试经历:HR竟然主动提价,比预期高5K,我一脸懵逼...

邮差的信 提交于 2020-08-12 03:07:41
# 写在前面 本文是楼主前两个月 N 家公司的面试经历,总结复盘了面试现场,个人认为干货还是不少,在此和大家分享。 ps:至于标题所说的薪资,是面试过程中一个有意思的小插曲,但是确有其事,不是标题党。。。这里先卖个关子,请各位看官往后看!^_^ # 自报家门 先做个自我介绍,楼主坐标帝都,5年经验,跳槽之前在一家传统小公司,年薪21万。 这次面试前前后后大概两个月的时间,面试了大概 6 家公司,命中 4 家,最终去了一家估值 70 亿美金的生鲜电商独角兽,年薪42万,刚好翻倍。 # 面试过程 话不多说,直接进入面试现场! 1、好未来 开始面试第一天上午投递好未来,下午3点面试,一共面试了3轮,问的问题比较多。 第一轮 面试官看了我的简历,首先让我画出eureka的执行流程,这块在之前的准备过程中有深入看过,因此比较流畅的画出来并配合解释说明。 之后问到项目中使用分布式锁解决缓存重建并发的问题,并要求画出实际的执行流程,数据库也问的比较多,像事务的隔离级别,MySQL实现可重复读的原理,索引等。 面试官给出了一个场景,在数据库主从同步的情况下,如果从库同步主库的数据延迟比较高,怎么才能在写到主库后立刻能够读取到数据。 我解释了主从同步的原理,并以此说明主库到从库的复制一定是有延迟的,因此要保证当写到主库的时候立刻能读到数据,要么就直接配置那个接口读数据的话直接走主库

Django框架,Flask框架和Tornado框架各有什么优缺点

余生颓废 提交于 2020-08-12 02:52:55
Django:Python 界最全能的 web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。Django 的项目代表:Instagram,Guardian。 Tornado:天生异步,性能强悍是 Tornado 的名片,然而 Tornado 相比 Django 是较为原始的框架,诸多内容需要自己去处理。当然,随着项目越来越大,框架能够提供的功能占比越来越小,更多的内容需要团队自己去实现,而大项目往往需要性能的保证,这时候 Tornado 就是比较好的选择。Tornado项目代表:知乎。 Flask:微框架的典范,号称 Python 代码写得最好的项目之一。Flask 的灵活性,也是双刃剑:能用好 Flask 的,可以做成 Pinterest,用不好就是灾难(显然对任何框架都是这样)。Flask 虽然是微框架,但是也可以做成规模化的 Flask。加上 Flask 可以自由选择自己的数据库交互组件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等异步特性以后

阿里p7员工为了证明自己确实年入百万,晒出他的工资,网友炸锅了

▼魔方 西西 提交于 2020-08-12 02:44:56
一位自称是94年的阿里P7在职场论坛上发帖说很多人都认为阿里P7百万是假的,自己是刚刚升到P7的员工,就已经年薪百万了,身边的那些老P7都在北京至少有一套房子,同组的甚至还有几个两套房,身价千万以上。可见他的收入证明中写着税前月收入为七万多,一年十三薪,再加上年终奖,确实年薪超过百万。 互联网面试题更新了!随便呈上几道,看看大家能否答出来: redis为什么是key,value的,为什么不是支持SQL的? redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看) redis的持久化开启了RDB和AOF下重启服务是如何加载的?(10个人9个回答错误) redis如果做集群该如何规划?AKF/CAP如何实现和设计? 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户? redis的5种Value类型你用过几种,能举例吗? 100万并发4G数据,10万并发400G数据,如何设计Redis存储方式? 有几道题果真有难度啊... 不要小看一个redis 任何一家公司的招聘信息都包含一段redis的需求。 不要小看一个redis 你能在互联网搜索到的很多文章都讲错了,面试会有很多坑。 不要小看一个redis 搞懂它是你通向分布式、微服务的第一扇大门。 资料领取: 本书既覆盖了命令用法等入门主题,也包含了复制、集群、性能扩展等深入主题

Oracle 又裁员,传 N+6 补偿

谁说胖子不能爱 提交于 2020-08-12 02:30:00
​整理 | 伍杏玲 出品 | 程序人生(ID:coder_life) 近日,某社交平台有甲骨文(Oracle)的员工爆料,正在裁员中,N+6 补偿。 其实从去年开始,Oracle一直在北京裁员: 去年5月7日,甲骨文确认中国区首批裁员900余人,其中超500人来自北京研发中心。而上述N+6的补偿方案也可能是真的,毕竟去年Oracle对离职员工的补偿方案,根据签解约合同的时间,分为不同等级: 5月22号之前签解约合同,是N+6的赔偿,再往后签合同就是N+1。 还有的是对高工资的员工进行了限制,当员工日常工资超过3倍社会平均工资时,将按照 N(3倍社会平均工资)+6员工日常工资,这一方案进行赔偿。 去年此补偿方案出来,立即有传言说有人拿到100万赔偿,网友们纷纷表示“羡慕”: 这家进入数据库巨头公司为何频频传出裁员信号? 早在1989年,Oracle开始进入中国市场,作为第一家进入中国的世界软件巨头。曾经Oracle是高薪高福利的代名词,在中国被称为“西二旗养老院”。被认为是继微软之后,全球收入第二多的软件公司,是很多名校学生心仪的外企公司。 但在云计算时代来临之际,这家传统数据库公司却掉队了。在2008年,亚马逊AWS推出S3云存储和EC2弹性计算服务,赢得广泛关注。可惜Oracle的创始人拉里·埃里森(Larry Ellison)当时没有重视云计算,反而嗤之以鼻:

听说go语言越来越火了?那么请收下这一份go语言书单吧!

僤鯓⒐⒋嵵緔 提交于 2020-08-12 02:26:08
关注公众号【程序员书单】后回复“book”即可领取30+精品免费电子书 ​ Go 是一种简单、小巧、令人愉悦的语言。它也有一些犄角旮旯,但绝大部分是经过精心设计的。它的学习速度令人难以置信,并且规避了其他语言中一些不那么广为人知的特性。 现如今越来越多的互联网公司开始使用go语言,有的初创公司开始使用go语言打造基础架构,而知乎这样的公司也基本上踏上了go语言的路子,或许,未来的互联网公司会越来越多地使用golang,那么,你想学习一下这门未来的语言么,今天就来推荐一份go语言书单吧。 go语言系列书单 ​ Go语言核心编程 Go语言的核心语言特性包括:类型系统、接口、并发。这三部分是Go语言精华、优美、也是重要的特征,本书紧密围绕这三个主题展开。以“类型系统”为例,Go语言中的类型有:简单类型、复合类型、命名类型、未命名类型、静态类型、动态类型、底层类型、接口类型、具体类型以及类型字面量等诸多概念,这些概念在其他Go类图书里面鲜有介绍,本书试图帮助读者梳理清楚这些类型的含义,建立概念,认清类型本质并学会正确使用; 在接口章节,不单介绍了接口概念和用法,还深入分析了接口的机制,使读者对Go语言非侵入式的接口有更深入的理解;在并发编程章节,书中给出了5个并发编程范式,并用图描述并发程序的模型,通俗易懂,这也是本书读特点。 此外本书还拿出一整章内容介绍Go语言编程过程中可能遇到的陷阱

开工并非失业,奉上Spring全家桶+2020大厂面试,成功砍下offer

余生长醉 提交于 2020-08-12 02:20:17
关于疫情: 进入主题之前,开篇先闲谈几句,这次的面试来得意外,主要也是因为疫情的缘故,所以心里上是没有准备的,这次肺炎对我们的学习、工作和生活都造成了非常大的影响,很多学校延期开学,企业也延期返工,实际上在闭关的这段时间里,我们正好可以好好利用这段时间,为自己之后想要做得事情充分做好准备,也希望肺炎赶快过去,我们的生活恢复正常。 由于疫情缘故,与阿里的HR沟通过后,采取的是视频面的方式,总共4轮均是通过视频的方式。视频面相比于现场面给人的感觉还是要稍微轻松一些的,过程没有那么紧张,交流方式也比较自然,没有太大的压迫感,只要技术ok,基本上是没什么问题,以致于这次面试顺利通过。 一面 自我介绍 项目介绍(项目中最大的技术挑战和技术难点) JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些? GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点。 Java容器有哪些?哪些是同步容器,哪些是并发容器? ArrayList和LinkedList的插入和访问的时间复杂度? HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头? 新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法? 1.8还采用了红黑树,讲讲红黑树的特性,为什么大家一定要用红黑树而不是AVL、B树之类的? 新生代分为几个区?使用什么算法进行垃圾回收

linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

你。 提交于 2020-08-12 02:02:30
作者:蓝藻(罗蓝国度) 创建时间:2018.7.3 编辑时间:2020.03.28 前言 本文特点 授之以渔 :了解命令学习方法、用途:不再死记硬背,拒绝漫无目的; 准确无误 :所有命令执行通过(环境为centos7),拒绝复制粘贴; 实用性高 :命令多为实际工作中用到的,实例讲解,拒绝纯理论; 条理清晰 :分类归纳,快速找到想要的命令,拒绝天马行空; 总结性强 :只列常用语法,易错情况强调,拒绝照搬照套。 学前须知 适用人群 :开发、测试、运维等等 文档用途 :linux入门学习、命令备忘录、面试复习 学习途径 :书籍(鸟哥的Linux私房菜)、视频:慕课网等、百度谷歌搜索、qq群等 学习环境 :虚拟机VirtualBox+centos7 学习记录 :多动手,多联想,多记录,特别是遇到问题时 遇到问题 :百度谷歌搜索、系统日志(/var/log/)、qq群 学前理论 linux主要特征 :一切且文件(目录、硬盘等都是文件);硬件都在/dev 目录,如硬盘、U盘为/dev/sd[a-d]; /dev/sr0(/dev/cdrom)是光驱的设备名(df命令查看),为设备文件,代表的是光驱本身,得把这个设备挂载到目录下(一般为/mnt)(文件系统的临时挂载点),才能对设备上的文件进行读写等操作; 不懂的命令 :man 命令(查用法、全称),只记得关键词,可用man -k 关键词;

Redis学习笔记(九) AOF持久化

好久不见. 提交于 2020-08-12 01:08:44
Redis学习笔记(九) AOF持久化 除了RDB持久化功能之外,Redis还提供了AOF持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。 服务器在启动时,可以通过载入和执行AOF文件中保存的命令来还原服务器关闭前的数据库状态。 AOF持久化功能的实现可以分为命令追加append、文件写入、文件同步sync三个步骤。 1、服务器在执行完一个写命令后,会议协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区末尾。 2、Redis的服务器进程是一个时间循环,这个循环中的文件事件负责接收客户端的命令请求,以及回复,而时间事件则负责执行定时运行的函数,所以服务器每次结束一个事件循环之前他都会调用flushAppendOnlyFile函数,考虑(appendfsync配置)是否将aof_buf缓冲区的内容写入和保存到AOF文件中。 appendfsync值:always(每个事件循环都要同步将aof_buf中的内容写入AOF文件)、everysec (每秒)、no(每个事件循环都要写,但是时写入系统缓冲区) AOF数据还原: 1、创建一个不带网络的伪客户端(redis只能在客户端中执行) 2、从APF文件中分析并读出一条写命令3、使用伪客户端执行被读出的写命令4、重复2、3步骤