Go语言中的defer,panic,recover 与错误处理 在其他编程语言中,如Java,宕机往往以异常的形式存在。底层抛出异常,上层逻辑通过try...catch...fanally机制捕获异常并处理,没有被捕获到的严重异常会导致程序崩溃,捕获的异常可以被处理,让代码可以继续执行。
Java知识回顾 (18)Java 8、9、11的新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。更多的新特性可以参阅官网: 排序的示例Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。接下来我们会详细介绍 Java 9 的新特性。更多的新特性可以参阅官网。
服务治理怎么做:降级、熔断、全链路压测 依赖服务故障:当某个依赖服务不可用时,通过服务降级可以提供替代方案或者简化的功能,以确保系统核心功能的正常运作。系统负载过高:在高峰期或者流量激增的情况下,为了防止系统崩溃,可以暂时关闭或降低某些非关键服务的质量。网络问题:在网络延迟或不稳定的情况下,降低某些服务的请求频率或数据量,以减轻系统负担。服务网格:如 Istio、Linkerd,可以细粒度地控制服务间的流量,实现灰度发布。:通过逐步发布新版本,团队可以在小范围内验证新功能的有效性,降低全量发布带来的风险。数据降级:降低数据返回的粒度或数量。
Selenium自动化测试之环境搭建(python语言) 我们在使用Selenium做自动化之前一项很重要的工作就是确定python、Selenium、浏览器器的版本,如果任何一项不兼容,则会出现很多问题。好久没有写Selenium web自动化相关的内容了,Chrome浏览器和Selenium版本已经更新了好几版,今天按照最新的版本做一个记录。我使用的是Chrome浏览器,最新版本是:123.0.6312.106(正式版本) (64 位),可以查看到ChromeDriver最新的版本所支持的selenium版本。根据使用的电脑系统选择合适的python版本。
深入理解Mysql索引底层原理(看这一篇文章就够了) Mysql 作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是 Mysql 数据的存储形式以及索引的设计,决定了 Mysql 整体的数据检索性能。
排序算法之插入排序算法介绍 每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。即边插入边排序, 保证子序列中随时都是排好序的。就像玩扑克牌抓牌的时候。
排序算法之选择排序介绍 选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
一文读懂『归并排序』算法(Merge Sort) 归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用 分治法(Divide and Conquer) 的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
排序算法之快速排序算法介绍 快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程:(1) 从数列中挑出一个基准值。(2) 将所有比基准值小的摆放在基准前面,所有比基准值大的摆在基准的后面(相同的数可以到任一边);在这个分区退出之后,该基准就处于数列的中间位置。
算法空间复杂度计算 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括程序代码所占用的空间,输入数据所占用的空间和辅助变量所占用的空间这三个方面。
时间复杂度中的log(n)底数是多少? 排序算法中有一个叫做“归并排序”或者“合并排序”的算法,它用到的就是分而治之的思想,而它的时间复杂度就是N*logN,此算法采用的是二分法,所以可以认为对应的对数函数底数为2,也有可能是三分法,底数为3,以此类推。其实这里的底数对于研究程序运行效率不重要,写代码时要考虑的是数据规模n对程序运行效率的影响,常数部分则忽略,同样的,如果不同时间复杂度的倍数关系为常数,那也可以近似认为两者为同一量级的时间复杂度。a,b取值是如何确定的呢?也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的。
彻底理解Java并发:乐观锁、悲观锁和CAS 锁的一种宏观分类方式是悲观锁和乐观锁。悲观锁与乐观锁并不是特指某个锁(Java 中没有哪个 Lock 实现类就叫 PessimisticLock 或 OptimisticLock),而是在并发情况下的两种不同策略。
推荐一个屏幕上鼠标高亮显示的小工具 Cursor Highlighter 是一款鼠标光标高亮工具,它能够全程高亮显示鼠标指针、左键点击、右键点击,并且还能自定义颜色、形状。此款软件有三种模式:基本功能是在鼠标光标周围创造一个彩色的“光环”;也可以设置为自定义的图标跟随鼠标光标,或者作为一个“光标焦点”,除了光标周围的一个区域外,屏幕变暗。
推荐几个屏幕实时显示键盘操作的小工具 能够在屏幕上实时显示键盘操作,对于录制操作教程视频需求的人来说,可以达到事半功倍的效果,尤其对于比较大型的软件,如Photoshop,After effect等,有非常复杂多样的快捷键,(小型软件也有,如我之前介绍过的含有鼠标截图软件 IrfanView和ShareX等),这些快捷键对于提升我们工作效率非常有必要。在录制教学视频中,如果跟随教学者操作按键能够实时显示出来,就会大大加大教学效率和学习者学习效率,对于那些可能有听力障碍的学习者来说更甚。至此,这个软件设置完成。屏幕实时显示键盘操作软件汇总表。
Python之海象运算符 在 Python 3.8 及更高版本中,引入了一种新的语法特性,称为"海象运算符"(Walrus Operator),它使用:=符号。这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。使用海象运算符可以在一些情况下简化代码,尤其是在需要在表达式中使用赋值结果的情况下。这对于简化循环条件或表达式中的重复计算很有用。