
每日一个知识点
文章平均质量分 81
沁禹
掌握编程前沿,从这里启航。希望你能在这里学到真东西,成为更牛的开发者!感谢支持,一起进步!
展开
-
【Java IO 源码详解】: InputStream
本文主要从JDK 11 源码角度分析InputStream。原创 2024-01-29 15:43:10 · 1288 阅读 · 0 评论 -
【PostgreSQL & OpenGauss 】数据库查询表锁,释放表锁
在数据库中,表锁是用于控制对表的并发访问的一种机制。不同的数据库系统(如 PostgreSQL 和 OpenGauss)可能具有不同的表锁管理机制。下面分别介绍如何在 PostgreSQL 和 OpenGauss 中查询和释放表锁。原创 2024-01-26 16:01:44 · 2377 阅读 · 0 评论 -
【Git 强制推送到远程仓库,且覆盖远程代码库】
现在,你已经成功将本地分支强制推送到了远程仓库,并覆盖了原始的远程代码库内容。命令来强制推送本地分支到远程仓库,且覆盖远程代码库。强制推送会覆盖远程仓库上的任何更改,因此务必小心使用。建议在执行强制推送之前,先确认没有需要保存的工作。首先确保当前所在目录为本地 Git 仓库。命令来获取最新的远程更改。原创 2023-12-31 20:40:31 · 3907 阅读 · 0 评论 -
结构型 - 装饰(Decorator)
装饰者模式(decorator pattern): 动态地将责任附加到对象上, 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案。原创 2024-01-22 11:37:26 · 433 阅读 · 0 评论 -
【Java IO】设计模式 (装饰者模式)
Java I/O 使用了装饰者模式来实现。装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其原创 2024-01-22 11:26:12 · 747 阅读 · 0 评论 -
【Java IO分类】从传输方式和数据操作上理解 Java IO分类
Java 使用双字节编码 UTF-16be,这不是指 Java 只支持这一种编码方式,而是说 char 这种类型使用 UTF-16be 进行编码。char 类型占 16 位,也就是两个字节,Java 使用这种双字节编码是为了让一个中文或者一个英文都能使用一个 char 来存储。UTF-16be 中的 be 指的是 Big Endian,也就是大端。相应地也有 UTF-16le,le 指的是 Little Endian,也就是小端。简而言之,字节是给计算机看的,字符才是给人看的。原创 2024-01-15 16:34:39 · 1019 阅读 · 1 评论 -
揭秘HTTP协议:深入了解互联网通信的核心!
HTTP 协议是用于客户端和服务端之间的通信,除此之外还有 TCP/IP 协议族在内的众多协议,请求文本资源的一方,我们称之为客户端(client),接收请求并提供相应的一方称为服务端(Server)每个TCP 连接智能发送一个请求,发送数据完毕后,连接就关闭了,HTTP 是一种不保存状态,无状态协议,协议对于发送过来的请求或是响应都不做持久化处理。有时候,客户端和服务端身份是可以互换的,单就一条通信线路来讲,可以确定的是,由HTTP协议就可以区分谁是客户端谁是服务端。消息主体是响应消息的承载数据。原创 2024-01-12 21:57:31 · 998 阅读 · 0 评论 -
终极Linux命令宝典:从入门到精通,一网打尽!
vmstat报告有关进程,内存,页面调度,块IO,陷阱,磁盘和cpu活动的信息。free显示系统中可用和可用的物理内存和交换内存的总量,以及内核使用的缓冲区和高速缓存。top程序提供正在运行的系统的动态实时视图。它可以显示系统摘要信息以及Linux内核当前正在管理的进程或线程的列表。所显示的系统摘要信息的类型以及为进程显示的信息的类型,顺序和大小都是用户可配置的,并且可以使配置在重新启动后保持不变。该程序为流程操作提供了一个有限的交互式界面,并为个人配置提供了更为广泛的界面-涵盖了其操作的各个方面。原创 2024-01-12 21:43:38 · 1013 阅读 · 0 评论 -
揭秘大厂Linux面试通关秘诀:锁定这5大核心问题,offer不请自来!
如果是单核Cpu的话,负载达到1就代表 CPU 已经达到了满负荷的状态,超过1后,后面的进行就要排队等待处理了,如果是多核多CPU的话,假设现在的服务器是2个CPU 每个 CPU 有2个线程,那么总负载不超过4都没有问题。假设那么公司厕所有1个坑位,有一个占了一个坑位,这时负载就是1,如果还有一个人在排队,那么负载就是2了,如果1小时内,A上厕所花了10分钟,B上厕所花了20分钟,剩下30分钟厕所都没人用,那么这1个小时利用率就是50%两种可能,他没带纸,或者一些奇怪的事情发生了。命令,打包并且压缩。原创 2024-01-11 23:27:54 · 829 阅读 · 0 评论 -
【HashMap】结构和底层原理
HashMap 是我们非常常用到数据结构,由数组和链表构成的数据结构,数组里面每个地方都存了 key-value 这样的实例,在Java7叫 Entry 在 Java8 中叫 Node原创 2024-01-11 11:00:52 · 953 阅读 · 0 评论 -
【详解】Java集合框架
一般的队列都是 FIFO(先进先出)但是又个例外,PriorityQueue 也叫 heap,并不是按照进去的时间顺序,而是按照规定的优先级出去,这个的算法就有点复杂了。: 这个是一个 HashSet + LinkedList 的结构,特点就是既拥有了 O(1) 的时间复杂度,又能够保留插入的顺序。,那如果已经达到了它最大的容量且不会扩容的,就会抛异常;: 采用 Hashmap 的 key 来储存元素,主要特点是无序的,基本操作都是 O(1) 的时间复杂度,很快。如果一个资深面试官问你,什么情况下选用。原创 2024-01-10 19:07:57 · 1229 阅读 · 0 评论 -
互斥、自旋、读写锁的应用场景
开发过程中,最常见的就是互斥锁的了,互斥锁加锁失败时,会用「线程切换」来应对,当加锁失败的线程再次加锁成功后的这一过程,会有两次线程上下文切换的成本,性能损耗比较大。如果我们明确知道被锁住的代码的执行时间很短,那我们应该选择开销比较小的自旋锁,因为自旋锁加锁失败时,并不会主动产生线程切换,而是一直忙等待,直到获取到锁,那么如果被锁住的代码执行时间很短,那这个忙等待的时间相对应也很短。如果能区分读操作和写操作的场景,那读写锁就更合适了,它允许多个读线程可以同时持有读锁,提高了读的并发性。原创 2024-01-09 21:41:49 · 1150 阅读 · 0 评论 -
技术总监写的十个方法,让我精通了lambda表达式
前公司的技术总监写了工具类,对Java Stream 进行二次封装,使用起来非常爽,全公司都在用。我自己照着写了一遍,改了名字,分享给大家。一共整理了10个工具方法,可以满足 Collection、List、Set、Map 之间各种类型转化。例如ListSetListSet(v)->{}Collection。原创 2024-01-08 20:02:28 · 1039 阅读 · 0 评论 -
SpringBoot项目如何防止反编译?
此方案比对上面的方案来说,就简单了许多。在单模块中此方案还算简单,但是现在项目一般都是多模块,一个模块依赖多个公共模块。那么使用此方案就比较麻烦,配置复杂,文档难懂,各模块之间的调用在是否混淆时极其容易出错。只需要在启动类的pom.xml文件中加如下插件即可,需要注意的是,改插件时要放到spring-boot-maven-plugin插件后面,否则不起作用。将此生成好的机器码,放到maven插件中的code里面即可。这样,打包好的项目只能在生成机器码的机器运行,其他机器则启动不了项目。原创 2024-01-08 17:27:07 · 1924 阅读 · 0 评论 -
Springboot支付宝沙箱支付(完整详细步骤)
两种方式进行配置。这里我采取的是默认方式: 开发者如需使用系统默认密钥/证书,可在开发信息中选择系统默认密钥。注意:使用API在线调试工具调试OpenAPI必须使用系统默认密钥。原创 2024-01-06 19:45:12 · 1839 阅读 · 2 评论 -
isEmpty 和 isBlank 的用法区别,居然一半的人答不上来.....
也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们一起来探索org.apache.commons.lang3.StringUtils;这个工具类.原创 2024-01-05 18:56:06 · 971 阅读 · 0 评论 -
还在用 System.currentTimeMillis() 统计代码耗时?太 Low 啦
有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录工具原创 2024-01-05 18:00:48 · 519 阅读 · 0 评论