• 借助Redis锁,完美解决高并发秒杀问题

    来源:cnblogs.com/zumengjie/p/12187669.html场景:一家网上商城做商品限量秒杀。 1 单机环境下的锁 将商品的数量存到Redis中。每个用户抢购前都需要到Redis中查询商品数量(代替mysql数据库。不考虑事务),如果商品数量大于0,则证明商品有库存。然后我们在进行库存扣...

    Java知识 2021-09-18 4 0

  • 最初是觉得我们打工人,在历史的浪潮中,我们都被推着上岸。电子产品和移动互联网,把我们的生活节奏大大提速了,所以很多人都忘记了生活和工作中的关系。

    所以在深圳这个城市的各个街道上,都能看到忙忙碌碌的年轻人的身影,为着未来而奔波,驻足观望生活美好的风景都会成了奢侈,继而很多人忘记了生活和工作的关系。

    我之前辩证过生活跟工作的关系,工作只为更好的生活,但工作并不是生活的全部。

    然而我们这些被时代推赶的人,有多少能够明白这样的道理?


    最近跟一个朋友聊天时,他说到了一句话:如果一份工作,钱没赚到,身体也垮了,还没时间陪伴到家里人和孩子的成长,那么我们工作的目的仅仅是为了一口饭吗?

    这个朋友最后回了老家,虽然工作不一定如意,但对于生活的质量的提高,我知道这是他内心追求的东西。

    我在读书时代就嘲笑着那些以健康为代价,拼命工作,最后拿钱买健康的人,会恍然大悟生命中最重要的是什么。

    然而当时满嘴的不屑和嘲笑,在我被历史的浪潮推着往前走时,再回头看,发现我也已经成为了以前嘲笑的一员了。

    原来,我们真的最终都会变成自己讨厌的样子。

    唠叨了一些题外话,生活要继续,工作也要继续,希望大家能够在工作中更好的生活。

    复盘能力

    股市中的高手都有复盘的习惯,在复盘中对当天的市场全貌进行静态观察,发现白天动态趋势下无法发现的问题,总结得失。

    我们常见的复盘,更多的是见于公司出现事故/问题后的回顾和总结。比如常见的运维层面的故障恢复的复盘核心步骤:

    这是对运维对每次故障的总结,目的是为了我们后续不会再犯同样的错误,或者是出现类似的错误时,我们能更好的应对。


    或许很多人都还没认识到复盘的威力,我们再看一下身边常见的案例。

    容易犯错是人类与生俱来的弱点,但我们可以培养自己的复盘能力,不断地在尝试和失败中学习,总结属于自己的经验,在后续的路上不会再重复犯错,这个所带来的结果不亚于学习新的东西。


    通过简单的案例,我们能看出,复盘最直接的目的,是对我们所发生的结果进行审视和总结。

    然而,在真正的生活以及工作中,复盘并不仅仅只是简单的总结。

    举个例子,早上到公司,我们制定了进行的任务是完成A,B,C三件事,到下班了,我们发现只完成了A和B,那么我们是如何复盘今天的任务执行如何改进呢?

    1. 既定目标是否合理

    既定目标的合理性是非常重要的,比如我们理想中是做完 ABC 三件事,但是事实上会有偏差,所以我们要做的就是调整目标,一旦经常处于自我感觉任务完不成,事情没做好,是很容易导致自我怀疑以及负面情绪,这种情绪是相当有害的。

    2. 在执行过程中的策略改进

    比如说在执行 B 的时候,被其他事情影响花费了额外的时间,那么我们就要审视我们的时间和任务安排了。

    我们的时间有个非常重要的四象限划分法

    程序员有未来吗?

    程序员有未来吗?

    来源:www.cnblogs.com/lex-wu/p/14610110.html最初是觉得我们打工人,在历史的浪潮中,我们都被推着上岸。电子产品和移动互联网,把我们的生活节奏大大提速了,所以很多人都忘记了生活和工作中的关系。所以在深圳这个城市的各个街道上,都能看到忙忙碌碌的年轻人的身影,为着未来而奔波,驻...

    Java知识 2021-09-18 1 0
  • 为什么不管大厂小厂,面试总是死磕HashMap?

    比如:说一说 HashMap 的内部数据结构。这就是典型的 HashMap 面试题。根据题目要求我们可以知道:该题是一个数据结构问题,可以从 HashMap 的底层数据结构进行分析,建议从多个不同 jdk 版本进行分析。分析片面 没有深入要想回答得好,你需要涉及到多个知识点,比如数据结构、多线程安...

    Java知识 2021-09-18 4 0
  • 又一个巨头决定彻底放弃Docker,全面拥抱K8S!

    容器内抓包定位网络问题容器进程主动退出、只能运行一个参数JVM 参数在容器中突然失效了解云原生的前世今生以及面试必备技术概念;深入掌握 K8S、Istio、Serverless 核心组件剖析;手把手带你从 0 搭建 K8S 集群;系统性提升云原生架构设计能力。高开和架构师都在研究的云原生技术你需要真正掌握它...

    Java知识 2021-09-17 12 0

  • 推荐下自己做的 Spring Boot 的实战项目:

    https://github.com/YunaiV/ruoyi-vue-pro

    2. AbstractRoutingDataSource

    基于特定的查找key路由到特定的数据源。它内部维护了一组目标数据源,并且做了路由key与目标数据源之间的映射,提供基于key查找数据源的方法。

    Spring Boot + MyBatis + MySQL 实现读写分离!

    Spring Boot + MyBatis + MySQL 实现读写分离!

    来源:cnblogs.com/cjsblog/p/9712457.html 1. 引言 读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就...

    Java知识 2021-09-17 13 0

  • 从手动编码到自动化,从重复工作到创新,开发人员工具随着技术的发展而不断发展。阿里巴巴集团和阿里巴巴云已通过开源发布和基于云的实施向公众提供其技术。通过在各种业务场景中的多年开发积累了这些技术。本文介绍了一些阿里巴巴开发人员工具,希望它们可以帮助您的开发过程更加高效和优雅。

    阿里巴巴常用的12个后端开发工具

    阿里巴巴常用的12个后端开发工具

    来源:www.jianshu.com/p/4d1a4606ef61从手动编码到自动化,从重复工作到创新,开发人员工具随着技术的发展而不断发展。阿里巴巴集团和阿里巴巴云已通过开源发布和基于云的实施向公众提供其技术。通过在各种业务场景中的多年开发积累了这些技术。本文介绍了一些阿里巴巴开发人员工具,希望它们可以帮...

    Java知识 2021-09-17 11 0
  • 图片

    那么,为什么会有这样的要求呢?背后的思考是什么呢?

    其实,我在之前的CodeReview中,看到过以下这样的低级错误:

    if(bigDecimal == bigDecimal1){

        // 两个数相等

    }

    这种错误,相信聪明的读者一眼就可以看出问题,因为BigDecimal是对象,所以不能用 ==来判断两个数字的值是否相等。

    以上这种问题,在有一定的经验之后,还是可以避免的,但是聪明的读者,看一下以下这行代码,你觉得他有问题吗:

    if(bigDecimal.equals(bigDecimal1)){

        // 两个数相等

    }

    可以明确的告诉大家,以上这种写法,可能得到的结果和你预想的不一样!

    先来做个实验,运行以下代码:

    BigDecimal bigDecimal = new BigDecimal(1);

    BigDecimal bigDecimal1 = new BigDecimal(1);

    System.out.println(bigDecimal.equals(bigDecimal1));


    BigDecimal bigDecimal2 = new BigDecimal(1);

    BigDecimal bigDecimal3 = new BigDecimal(1.0);

    System.out.println(bigDecimal2.equals(bigDecimal3));


    BigDecimal bigDecimal4 = new BigDecimal("1");

    BigDecimal bigDecimal5 = new BigDecimal("1.0");

    System.out.println(bigDecimal4.equals(bigDecimal5));

    以上代码,输出结果为:

    true

    true

    false

    BigDecimal的equals原理

    通过以上代码示例,我们发现,在使用BigDecimal的equals方法对1和1.0进行比较的时候,有的时候是true(当使用int、double定义BigDecimal时),有的时候是false(当使用String定义BigDecimal时)。

    那么,为什么会出现这样的情况呢,我们先来看下BigDecimal的equals方法。

    在BigDecimal的JavaDoc中其实已经解释了其中原因:

    Compares this  BigDecimal with the specified Object for equality.  Unlike compareTo, this method considers two BigDecimal objects equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by  this method)

    大概意思就是,equals方法和compareTo并不一样,equals方法会比较两部分内容,分别是值(value)和标度(scale)

    对应的代码如下:

    为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

    为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

    BigDecimal,相信对于很多人来说都不陌生,很多人都知道他的用法,这是一种java.math包中提供的一种可以用来进行精确运算的类型。很多人都知道,在进行金额表示、金额计算等场景,不能使用double、float等类型,而是要使用对精度支持的更好的BigDecimal。所以,很多支付、电商、金融等业务...

    Java知识 2021-09-16 15 0
  • 建议大家,隔三岔五的,就出去面试一下

    前阵子某大厂曝出要求员工每月工作 380 小时,这是什么概念?全年无休,每天工作 13 个小时。看到这个消息,我挺震惊的。...

    Java知识 2021-09-16 16 0
  • NoOptimization

    如果没有优化,读取磁盘数据,再通过网卡传输的场景性能比较差:

    4 次 copy:

    4 次上下文切换:

    我们不免发出抱怨:

    推荐下自己做的 Spring Boot 的实战项目:

    https://github.com/YunaiV/ruoyi-vue-pro

    2. DMA 参与下的数据四次拷贝

    DMA 技术很容易理解,本质上,DMA 技术就是我们在主板上放一块独立的芯片。在进行内存和 I/O 设备的数据传输的时候,我们不再通过 CPU 来控制数据传输,而直接通过 DMA 控制器(DMA Controller,简称 DMAC)。这块芯片,我们可以认为它其实就是一个协处理器(Co-Processor)。

    DMAC 的价值在如下情况中尤其明显:当我们要传输的数据特别大、速度特别快,或者传输的数据特别小、速度特别慢的时候。

    比如说,我们用千兆网卡或者硬盘传输大量数据的时候,如果都用 CPU 来搬运的话,肯定忙不过来,所以可以选择 DMAC。而当数据传输很慢的时候,DMAC 可以等数据到齐了,再发送信号,给到 CPU 去处理,而不是让 CPU 在那里忙等待。

    注意 :这里面的“协”字。DMAC 是在“协助”CPU,完成对应的数据传输工作。在 DMAC 控制数据传输的过程中,DMAC 还是被 CPU 控制,只是数据的拷贝行为不再由 CPU 来完成。

    原本,计算机所有组件之间的数据拷贝(流动)必须经过 CPU。以磁盘读写为例,如下图所示:

    深入理解零拷贝技术

    深入理解零拷贝技术

    来源:spongecaptain.cool/SimpleClearFileIO/2.%20DMA%20%E4%B8%8E%E9%9B%B6%E6%8B%B7%E8%B4%9D%E6%8A%80%E6%9C%AF.html注意事项 :除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page c...

    Java知识 2021-09-16 17 0

  • 前言


    我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。

    该系统具备的功能:

    推荐下自己做的 Spring Boot 的实战项目:

    https://github.com/YunaiV/ruoyi-vue-pro

    阶段一、单机构建网站

    网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据,如mysql、sqlserver、oracle,然后通过JDBC进行数据库的连接和操作。

    把以上的所有软件都装载同一台机器上,应用跑起来了,也算是一个小系统了。此时系统结果如下:

    互联网大厂的架构演变过程,想做架构师必看!

    互联网大厂的架构演变过程,想做架构师必看!

    来源:cnblogs.com/xiaoMzjm/p/5223799.html 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能:推荐下自己做的 Spring Boot 的实战项目:https://github.com/YunaiV/ruoyi-vue...

    Java知识 2021-09-15 21 0
1 2 3 4 5 6 7 8 9 10 ››
识海教程

识海教程

每天学习技术知识,每天进步多一点点。

  • 192558阅读数
  • 4评论数

关于识海

网站将会逐步收集越来越多的技术文章,当然将来也会开启投稿功能,各位朋友们有好的文章可以分享给大家