自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 百度的文心一言 ,没有想像中那么差

经过试用文心一言,再对比 ChatGPT,我认为:文心在中文语料上应该是更丰富些。多语言上目前一定不如 ChatGPT 优秀。虽然这两个模型在某些方面有所重叠,但它们在应对特定语言和领域问题时具有各自的优势。其实最令我意外的是,文心一言并没有发布会时让人感觉的那么差。它不是 chatPPT, 至少目前看不是,它完成了从 0 到 1 的过程 ,虽然有差距,但还是真心地希望国内的企业能够在 AI 的领域做出一些成绩,而不是一味地跟风。我现在理解了😊。

2023-03-18 00:22:46 1078 1

原创 跟着 Guava 学 Java 之缓存

在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求该数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。本文中所提及的缓存主要是指内存缓存,跟硬件没什么关系(比如三级缓存什么的),主要是应用代码层面和内存交互的这部分。本文我们首先介绍了缓存的一些背景知识,了解了缓存的分类,以及内存缓存的一些开源库类,利用一些短小易懂的例子重点介绍了 Guava Cache,包括它的加载、更新、回收、配置、统计等功能。

2022-09-21 22:47:48 2000

原创 10分钟了解7个Java11的新功能

我知道很多公司和个人还在用 Java8,我们不妨梳理下当下的情况目前 Java 最新的 GA(General-Availability) Release 版本是是 最新长期支持版本。根据 Oracle 免费条款JDK 18和JDK 17可在生产环境中免费使用,至少在 2024 年 9 月之前JDK 18到 2022 年 9 月它将被JDK 19取代日子总要过,我们也不可能抱着 Java 8 用一辈子,我们来一起看看 Java 11 的一些新玩意儿。...

2022-08-30 22:17:32 2239

原创 一文弄懂 Spring WebFlux 的来龙去脉

概述本文将通过对 Reactive 以及相关概念的解释引出 Spring-WebFlux,并通过一些示例向读者解释 基于 Spring-WebFlux 如何进行反应式编程实践,同时会讨论相关技术的优缺点及技术原理。什么是 Reactive在计算机编程领域,Reactive 一般指的是 Reactive programming。指的是一种面向数据流并传播事件的异步编程范式(asynchronous programming paradigm)响应式编程最初是为了简化交互式用户界面的创建和实时系统动画的绘

2022-08-29 18:36:50 2432

原创 跟着 Guava 学 Java 之 集合工具类

背景先来回顾一下 JDK 的 Collections , java.util.Collections 提供了一系列静态方法,能更方便地操作各种集合。比如:创建空集合 Collections.emptyList();创建单元素集合 Collections.singletonList("apple");排序 Collections.sort(list);创建不可变集合 Collections.unmodifiableList(mutable);创建线程安全集合 Collections.synchro

2022-08-21 22:05:27 885

原创 还在用 Chrome? Edge 已成为我的主力浏览器

新版的 Edge 浏览器基于 Chromium,这意味着对于 Chrome 的很多功能,Edge 也会如出一辙Edge 浏览器完全兼容 Chrome 的扩展程序,能够直接通过 Chrome 商店来安装扩展Edge 还有大量 Chrome 所不具备的出色功能!可以截整屏的网页 类似这种:这是我截取的全屏图,非常方便朗读网页 已经很像自然语音了搞笑地是,如果你选中文朗读者读英文,可以给你表演个 “中式英语”,简直太像了。当然也可以体验一下原味的美式、英式英语和魔性的印度英语 ,太好玩儿了。.

2022-08-16 15:55:54 678

原创 这么多年 Java 白学了,原来我连个 printf 都不会

格式化输出 System.out.printf("hello world");作为多年的老 javaer , 你看到这儿可能会说,你要给我看这个,咱们的交情就到这儿了。大佬别误会,再看看,咱们还有好东西。printfprintf 准确来讲是 PrintStream 类的 printf 方法一种使用指定的格式字符串和参数将格式化字符串写入输出流的便捷方法。一般我们会把程序运行的一些中间过程或结果输出到控制台(console),利用 printf 方法可以方便地进行文本格式化这

2022-08-15 00:09:09 226

原创 世界上第一台个人电脑是哪台?

背景 个人计算机作为大众市场消费电子设备的历史始于 1970 年代的微型计算机革命。早期的个人计算机——通常称为微型计算机——通常以电子套件的形式出售,数量有限,主要是业余爱好者和技术人员感兴趣的。那么世界上第一台个人计算机 (personal computer , 简称 PC )是哪一台呢?来看看搜索引擎的答案呵呵,这一会儿我就看到三个答案了,到底是哪一台啊 😱另外 奥托是什么鬼?历史 带着上面的问题,我顺着维基百科回顾了一下历史。为了方便找到答案我们挑重点说。既然 PC 作为大众消

2022-08-12 10:00:21 7073 1

原创 跟着 Guava 学 Java 之 新集合类型

Guava 引入了很多 JDK 没有的、但明显有用的新集合类型。这些新类型是为了和 JDK 集合框架共存,而没有往 JDK 集合抽象中硬塞其他概念。作为一般规则,Guava 集合非常精准地遵循了 JDK 接口契约。Multiset我们都知道 Set 是无序不重复的,与之相反的是 List 是有序可重复的。 Multiset 是几个意思?没错 ,Multiset 占据了 List 和 Set 之间的一个灰色地带:允许重复,但是不保证顺序。举个例子,使用 JDK 如果我们想:“统计每个单词出现的次数

2022-08-09 01:31:41 888

原创 聊聊Java的单元测试

单元测试框架Java​ 中,​JUnit ​和 ​TestNG ​是最受欢迎的单元测试框架。JUnitTestNGJUnit首先是大名鼎鼎的 JUnit ,JUnit 已经成为 Java 应用程序单元测试的事实标准。JUnit 是一个开源的 Java 语言的单元测试框架,专门针对 Java 设计,使用最广泛。JUnit 目前最新版本是 5JUnit5 的组成:JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit5 建议

2022-08-02 21:16:03 460

原创 跟着Guava 学Java 之 不可变集合

什么是不可变集合不可变集合,英文叫 immutable,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。为什么要用不可变集合?第一:防御性编程需要我有一个集合,你拿来使用,鬼知道你会不会乱搞,往集合里添加不合适的元素,或者随便删除元素,我不放心,对,就是不信你,我的集合我做主,给你个不可变的吧,这样你就不可能乱搞我的集合了,我就放心了,不担心你的操作给我带来风险 。官方解释:防御,defensive programming,听起来高级不?第二:线程

2022-07-29 22:24:59 272

原创 虚拟人直播-元宇宙离我们有多远?

目标利用 Live Link Face + unrealEngine + quixel bridge 方案,实现虚拟形象的建模和控制。为后面的直播等应用搭建基础流程。安装和配置unrealEngine (虚幻引擎)需要从下面的链接先下载 Epic Games launcher 安装好后,再下载并安装 unrealEnginehttps://www.unrealengine.com/en-US/download我下载的是 Unreal Engine 5.0.3 的版本quixel brid

2022-07-19 13:52:24 868

原创 跟着 Guava 学 Java 之 Optional

使用和避免 null“Google 底层代码库,95%的集合类不接受 null 值作为元素。 相比默默地接受 null,使用快速失败操作拒绝 null 值对开发者更有帮助。”很多 Guava 工具类对 Null 值都采用快速失败操作,此外,Guava 还提供了很多工具类,让你更方便地用特定值替换 Null 值例子我们知道 JDK8 以后 也参考 Guava 加入了 Optional的 API,使用上跟 Guava 的区别不大,例子中我们使用 JDK 的 API 来演示。直接上个实际工作中的案例

2022-07-17 15:47:45 282

原创 emoji 为什么叫 emoji

emoji大家都在用,就是各种表情,可是它为什么叫emoji呢,查了下英文的词典没看出个所以然来,于是查了一下中文维基百科Emoji(日语絵文字/えもじemoji),是使用在网页和聊天中的形意符号,最初是日本在无线通信中所使用的视觉情感符号。表情意指面部表情,图标则是图形标志的意思,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在香港除“表情图标”外,也有称作“绘文字”或“emoji”。在台湾LINE软件中,表情符号又被叫做“表情贴”。...

2022-07-16 14:56:56 1253

原创 AI 从代码中自动生成注释文档

程序员最讨厌的两件事:自己写注释别人不写注释Mintlify 的插件终于可以把我们从痛苦的死循环中解救出来了。Mintlify 利用 AI 技术从代码中自动生成注释文档注意 it's free但谁知道呢,也许过一阵子就像 github 的 Copilot 一样开始收费了也说不定。来个Demo比如我这段简单的二分查找 程序片段:分别看下 Mintlify 为它生成的注释,注意:它可以生成多语言的,有英文的也有中文的上面这些都是自动生成的,从结果看是基于程序进行的翻译,比较罗嗦,

2022-07-05 18:08:26 1221

原创 Make Jar, Not War

大约在 4 年前,关于 java 应用最终打成 jar 包还是 war 包的选择令我比较疑惑。那时候更多的应用是打成 war 包的,即使我们知道可以打成 jar 包,但之前都是打成 war 包,并且好像打成 jar 包并没有什么特别明显的好处。但当时令我困惑的是越来越多的实践正在不怎么说明理由的情况下转而打 jar 包,于是我开始思考......war 包的理由在某大型 OTA 企业内部,应用仍然打成 war 包, PaaS 平台会自动安装并配置好 tomcat,我知道这对于 web server.

2022-07-05 18:07:04 208

原创 分库分表与到底要不要用自增ID?

抛开具体业务需求和场景谈论技术方案,无异于纸上谈兵。没有哪一项技术或解决方案有绝对的好坏、优劣之分。都是相对意义上的区分,否则这些项技术或方案是怎么产生的?一定也是为了解决某类具体场景的问题而产生的,在彼时彼刻都可谓 “先进”技术。 从0到1        在系统新生的时候,预估业务量和数据量都不大。后来,业务越做越好,数据量越来越大,发现单库单表已经不能满足需求了,需要分库分表。你数据库的发展方向大概是这样的: &n

2022-05-28 11:02:43 1033

原创 关于java泛型你应该知道的那些事儿

泛型的设计初衷:是为了减少类型转换错误产生的安全隐患,而不是为了实现任意化。泛型可以应用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法 泛型类在类名后面用尖括号表示泛型public class HelloWorld<T> {    private T t; public T getValue() { return t;    } pub

2022-05-28 11:01:20 550

原创 阿里云面试题分享

突如其来的电话面试事情是这样的,今天吃完晚饭在外面公园遛达了一圈,回到家没一会儿接到了一个电话,说是阿里云的,心中疑惑,不对呀,我刚收到回阿里的拒信(之前投过,被拒了)。聊了一下,虽然不太清楚阿里的流程,但老哥态度特别好,电话面试一下总是没问题的。下面分享下问题一 给你一个 ipv4 的地址,把它转到 Int , 用一个Int变量装。这个题很明显直接装是有可能越界装不下的。int是32位。long倒是可以。我想了一会儿说了一个答案,没对,后来老哥给我解释了一下,然后恍然大明白了,其实是个小技巧。直接上代码吧

2022-05-28 10:59:23 1223

原创 理解 Linux 的处理器负载均值(转)

原文链接:https://www.gracecode.com/posts/2973.html你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:load average: 0.09, 0.05, 0.01很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越大,这也可能是服务器出现某种问题的信号。而

2022-05-28 10:57:54 306

原创 APM 组件选型

监控之 what&why常用监控手段按监控层次分:业务监控、应用监控和基础监控等;按监控日志来源分:基于日志文件监控、基于数据库监控和基于网络监控等;按监控领域分:前端监控、后端监控、全链路监控、业务间监控等;按监控目标分:系统故障监控、业务指标监控、应用性能监控、用户行为监控、安全合规监控等。监控首先要解决的是目标设定,到底要解决什么问题,关注什么指标。我们的定位是APM 即应用性能监控。解决微服务架构下:服务间依赖关系梳理、查询全局依赖关系拓扑调用链跟踪、拓扑、查询服务响应时间监测(最长、最短、

2022-05-28 10:56:10 535

原创 maven相关知识梳理及常见问题

maven 指定依赖版本范围有时我们为了不频繁修改依赖的版本号,会直接指定一个范围,如果你需要一直依赖最新版本就能省些事儿,当然也可以根据你的版本需求进行配置。A square bracket ( [ & ] ) means "closed" (inclusive).A parenthesis ( ( & ) ) means "open" (exclusive).RangeMeaning描述1.0x >= 1.0 * The default Maven meaning for 1.0

2022-05-28 10:54:04 2199

原创 线程池优雅关闭

第一种方法首先看下源码注释:A pool that is no longer referenced in a program ANDhas no remaining threads will be {@code  shutdown} automatically. Ifyou would like to ensure that unreferenced pools are reclaimed evenif users forget to call {@link  #shutdown}, t

2022-05-28 10:52:34 511

原创 分布式事务:从理论到实践(三)

分布式事务:从理论到实践(三)分布式事务:从理论到实践(一)分布式事务:从理论到实践(二)接着前面两篇说,下面我们继续对 Seata 的 TCC 模式进行讨论。TCC原理回顾简单回顾一下TCC的原理 参考 蚂蚁金服的博客[1]正常事务逻辑trycancel 或 confirm允许空回滚1 未正常 try2 执行了空 cancelTCC 服务在未收到 Try 请求的情况下收到 Cancel 请求,这种场景被称为空回滚;空回滚在生产环境经常出现,用户在实现TCC服务时,应允许允许空回滚的执行,即收到空回滚时返

2022-05-28 10:51:00 171

原创 分布式事务:从理论到实践(二)

分布式事务:从理论到实践(二)前文 分布式事务:从理论到实践(一)我们提到了Seata的AT和TCC模式,本文中我们针对这两个模式进行深入分析和开发实践。AT 模式原理回顾根据 官方文档[1] 及提供的 博客[2] 我们先回顾一下AT模式下分布式事务的原理AT 模式的一阶段、二阶段提交和回滚均由 Seata 框架自动生成,用户只需编写“业务 SQL”,便能轻松接入分布式事务,AT 模式是一种对业务无任何侵入的分布式事务解决方案。一阶段:在一阶段,Seata 会拦截“业务 SQL”,首先解析 SQL 语义,找

2022-05-28 10:49:44 377

原创 分布式事务:从理论到实践(一)

分布式事务:从理论到实践(一)从集中式到分布式20世纪60年代大型主机被发明出来,凭借其安全性和稳定性的表现成为主流。但从20世纪80年代以来,计算机系统向网络化和微型化的发展日趋明显,传统的集中式处理模式越来越不能适应人们的需求。集中式最明显的问题就是单点。随着PC机性能的不断提升和网络技术的快速普及,大型主机的市场份额变得越来越小,很多企业开始放弃原来的大型主机,而改用小型机和普通PC服务器来搭建分布式计算机。分布式什么是分布式系统?“分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅

2022-05-28 10:48:32 386

原创 API 网关选型及包含 BFF 的架构设计

API 网关选型及包含 BFF 的架构设计一 背景介绍下图是我从网络上找到的一个微服务架构的简单架构图,如图可见 API Gateway 在其中起到一个承上启下的作用,是关键组件。图片来源于网络在更通用的场景下我们会使用 NGINX 这样的软件做前置,用来处理SLB负载均衡过来的流量,作用是反向代理、集群负载均衡、转发、日志收集等功能。然后再将 NGINX 的请求 proxy 到 API Gateway 做统一网关处理。在上面的这个场景下 API Gateway 可以包含以下功能:安全限流缓存熔断重试负载反

2022-05-27 10:34:14 900

原创 IDEA远程debug实现原理

使用IDEA进行远程debug,这个操作大家没用过也听过它的实现原理为:本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。其中,调试的程序常常被称为debugger, 而被调试的程序称为 debuggee。在 Debug 领域,JDK 有一套规范与体系来支持,即 Java Platform Debugger Architecture,JPDA 体系。在 JPDA 体系中定义了 三个角色,每个角色又对应着不同的技术模块支撑,分别为 JVMTI/JDWP/J

2022-05-27 10:27:58 1567

原创 JVM最多可以创建多少线程?

具体计算公式如下:(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threadsMaxProcessMemory : 进程的最大寻址空间JVMMemory : JVM内存 ReservedOsMemory : 保留的操作系统内存,如Native heap,JNI之类,一般100多M ThreadStackSize : 线程栈的大小,jvm启动时由Xss指定 默认1MMaxProcessMemo

2022-05-27 10:26:50 1080

原创 客户端请求的端口号是什么?

我们知道服务器端是要指定和开放端口号的,比如 web 服务 http 请求的 80,https 的 443 端口,都要开放,否则无法请求成功。我们知道通信是由两端组成的,既然服务器需要指定端口,那么客户端呢?比方说我用 chrome 浏览器请求 www.baidu.com, 我知道对于百度的服务器肯定开放了 80、443 端口,那么浏览器呢,或者说我的电脑本机用于请求的端口是什么呢?带着疑问我用 Wireshark 抓包看了一下可以看到我的浏览器请求 源端口是 62412 ,目标端口是 443。

2022-05-27 10:22:50 3976 1

原创 vim 配置 nginx语法高亮

当你使用 vim 编辑器编辑 nginx 的配置文件时,vim 编辑器是无法自动识别出 nginx 的相关语法的。所以,使用 vim 编辑器编辑 nginx 配置文件时,无法实现”语法高亮”功能,也就是说,默认情况下,使用 vim 编辑 nginx 配置文件时,没有彩色的语法着色。对于使用者来说,这样体验不好,nginx 官方很贴心,在源码包中为我们提供了 vim 针对 nginx 的语法高亮配置文件,我们只要把这些文件拷贝到 vim 的对应目录中即可直接使用,方法很简单如下:# ..

2022-05-27 10:21:50 655

原创 扒一下一直不求甚解的 iptables

基本概念iptables 是什么?在 netfilter 的 官网 找到的如下解释:iptables is the userspace command line program used to configure the Linux 2.4.x and later packet filtering ruleset. It is targeted towards system administrators.Since Network Address Translation is also confi

2022-05-27 10:21:06 384

原创 Chrome 浏览器小恐龙游戏变身超级马利奥

在线也能玩儿很多朋友都玩儿过 chrome 浏览器在断网情况下的小恐龙游戏其实它也可以在有网的情况下玩儿在浏览器的地址栏输入 chrome://dino 并回车就可以了而且它还会自动放大,更适合在浏览器玩儿替换小恐龙为其他角色第一步打开浏览器在地址栏输入 chrome://dino 并回车第二步F12 打开控制台,找到 id 为 offline-resources 的 div 标签,在里面找到 id 为 offline-resources-1x 的 img 标签中的 src。复制出

2022-05-27 10:19:55 29090 1

原创 结合 arthas idea 插件的基本玩法(常用)

背景Arthas 官方的工具还不够足够的简单,需要记住一些命令,特别是一些扩展性特别强的高级语法,比如 ognl 获取 spring context 为所欲为,watch、trace 不够简单,需要构造一些命令工具的信息,因此只需要一个能够简单处理字符串信息的插件即可使用。当在处理线上问题的时候需要最快速、最便捷的命令,因此插件还是有存在的意义和价值的。arthas idea plugin 更简单的使用 arthas 的 IDEA 插件,方便的构建各种 arthas 命令,复制到剪切板 然后到服务器

2022-05-27 10:18:47 7062

原创 配置 arthas 实现远程在线 debug

本地配置arthas 有多种启动方式:java agent 像 skywalking 一样as.sh 利用 arthas 的 shell 启动 或者 java -jar 启动sprintboot starter 集成到应用中启动我们采用最方便的把 arthas 集成到 springboot-starter 的应用中启动加入相关依赖 <dependency> <groupId>com.taobao.arthas</groupI

2022-05-27 10:17:48 3663

原创 还没用Log4j2 ?快来试试

为什么使用 Log4J2?Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback’s architecture.Apache L

2022-05-27 10:16:08 293

原创 SpringBoot + ShardingSphere-JDBC 实现读写分离

引入依赖我本地用的是 springboot 2 的版本,引用的 ShardingSphere-JDBC 的5.0.0-beta 版本 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>5.

2022-05-26 11:42:33 442

原创 ShardingSphere 实现数据加密(脱敏)第二篇

上一篇文章中说道数据加密分两种场景分别是:新上线业务已上线业务这篇我们对已上线业务进行模拟实验。已上线业务改造系统迁移前建表语句和配置文件CREATE TABLE `t_cipher_old` ( `id` bigint(20) NOT NULL, `name` varchar(255) DEFAULT NULL, `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time`

2022-05-26 11:42:03 599

原创 ShardingSphere 实现数据加密(脱敏)第一篇

背景Apache ShardingSphere 通过对用户输入的 SQL 进行解析,并依据用户提供的加密规则对 SQL 进行改写,从而实现对原文数据进行加密,并将原文数据(可选)及密文数据同时存储到底层数据库。 在用户查询数据时,它仅从数据库中取出密文数据,并对其解密,最终将解密后的原始数据返回给用户。 Apache ShardingSphere 自动化 & 透明化了数据加密过程,让用户无需关注数据加密的实现细节,像使用普通数据那样使用加密数据。 此外,无论是已在线业务进行加密改造,还是新上线业务

2022-05-26 11:41:31 901

原创 ShardingSphere 分库分表--第(1)篇

分布式主键问题传统数据库软件开发中,主键自动生成技术是基本需求。而各个数据库对于该需求也提供了相应的支持,比如 MySQL 的自增键,Oracle 的自增序列等。 数据分片后,不同数据节点生成全局唯一主键是非常棘手的问题。同一个逻辑表内的不同实际表之间的自增键由于无法互相感知而产生重复主键。 虽然可通过约束自增主键初始值和步长的方式避免碰撞,但需引入额外的运维规则,使解决方案缺乏完整性和可扩展性。目前有许多第三方解决方案可以完美解决这个问题,如 UUID 等依靠特定算法自生成不重复键,或者通过引入主键生

2022-05-26 11:40:16 1525

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除