自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码农无双的博客

每天进步一点点!

  • 博客(69)
  • 资源 (16)
  • 收藏
  • 关注

原创 通过Clojure中的集合与序列谈谈抽象的重要

通过JVM之上的语言Clojure讲解一下什么是抽象,以及抽象的好处。

2024-04-14 21:35:12 944 2

原创 深入理解Java中的转义字符

深入分析了一下Java字符串和正则表达式中的反斜杠和转义字符的用法

2023-10-28 19:10:42 2082 2

原创 汇编系列03-不借助操作系统输出Hello World

通过将汇编程序作为主引导扇区的内容,从而绕过操作系统,在屏幕上打印Hello, world。有助于理解计算机的工作方式。

2023-03-05 21:20:25 959

原创 汇编系列02-借助操作系统输出Hello World

通过汇编在x86-64 CPU上的Linux操作系统的系统调用来实现输出hello world这个小例子,详细剖析syscall指令和系统调用是怎么利用寄存器传递参数的。

2023-03-04 19:36:27 2239

原创 汇编系列01-汇编语言简介

汇编语言简介

2023-03-04 15:50:02 1380

翻译 Rust模块系统的清晰解释

本文通过三个例子来讲解Rust的模块系统与文件系统之间没有隐式映射关系,让Rust学习者能够清晰地理解Rust模块系统。

2022-11-06 20:09:35 682

原创 Rust for循环语法糖背后的API

通过Rust for循环语法糖背后的API来理解所有权转移、借用、可变借用问题。

2022-11-05 19:13:42 1331

翻译 JUnit4和JUnit5的主要区别

本文介绍了JUnit4和JUnit5的主要区别,用于快速了解JUnit5。

2022-10-25 21:05:47 7237

翻译 什么是C和C++标准库?

本文将介绍在编写C/C++应用程序的领域中,标准库的作用以及它是如何在各个操作系统中实现的。

2022-10-09 20:15:27 738

原创 C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?

通过C语言的Socket编程,分析C语言的结构体指针强制转换的用法。

2022-10-08 19:55:35 2783

原创 Maven生命周期与插件

本文详细介绍maven生命周期和插件及插件目标的关系,为maven插件开发铺平道路。

2022-08-30 18:42:58 999

原创 Spring框架新手快速上手系列:(二)体验一把自己配置低级容器

Spring框架快速上手系列二:手动配置低级容器,感受Spring框架内部的工作原理,开启源码研究之路。

2022-08-24 19:38:11 560

原创 Spring框架新手快速上手系列:(一)鸟瞰Spring框架

Spring框架新手快速上手系列,第一篇,鸟瞰Spring框架工作流程

2022-08-23 19:28:39 609

原创 Gradle新手指南

本文通过探索Groovy脚本的语法来更好地理解Gradle项目中的build.gradle文件

2022-08-21 14:28:23 545

原创 guava缓存使用不当导致的FullGC

java使用guava cache不当,导致的fullgc研究

2022-08-20 20:30:06 4030 4

原创 Rust函数中的范型生命周期参数是什么意思?

本文尝试说明rust的函数生命周期参数的含义到底是什么意思

2022-08-11 12:49:23 305

原创 rust中的静态分发和动态分发

rust中的静态分发和动态分发

2022-07-18 22:41:24 2298

原创 Rust中的dyn关键字

rust的dyn关键字简介与使用demo。

2022-07-11 19:35:29 4271

原创 Elasticsearch常用的相关操作汇总

本文总结了Elasticsearch常用的一些命令,涉及更新mapping、根据查询更新、创建脚本、根据脚本过滤等。

2022-07-06 19:00:01 739

原创 Rust统计文件中单词出现的次数

rust统计文件中单词出现的次数

2022-07-02 22:19:06 691

原创 聊一聊Java中的线程中断

Java中的线程在运行的时候,有办法强制让它中断运行么?在JDK的Thread类中有stop和destroy方法,但是已经被标记为过时的,stop方法之所以不推荐使用是因为它是不安全的,比如它会让线程释放它持有的锁,这样可能会导致它保护的资源处于不一致的状态,destroy方法则直接抛出NoSuchMethodError异常。正确的、优雅的中断线程的方式应该是给线程发出中断信号(即调用线程实例的interrupt方法,用余春龙大佬的话来说,interrupt这个词很容易让人产生误解,从字面含义看好像是线程

2022-05-04 16:17:03 2178

翻译 为什么Java的wait和notify必须要在synchronized代码块中调用?

让我们看一个例子,如果我们不在synchronized代码块中调用wait()方法会发生什么问题。假设我们要自己实现一个阻塞队列(当然JDK中已经有了BlockingQueue,这儿只是为了说明问题)。没有同步(synchronization)的代码可能像下面这样:class BlockingQueue { Queue<String> buffer = new LinkedList<String>(); public void give(String

2022-05-04 12:30:59 1414 1

原创 IDEA中debug Elasticsearch源码之环境搭建

在IDEA中debug Elasticsearch的环境搭建过程

2022-04-06 19:39:46 2926

原创 一次线上频繁FullGC的排查

背景一日,线上的某个服务的某个节点突然告警,频繁地FullGC,这个服务已经有半个月没有进行过发布和容器重启了。处理步骤首先将告警的容器隔离,从网关上摘掉这个节点,让流量不再进入到这个节点。通过jmap将节点的内存快照dump下来。通过jprofiler分析hprof文件。分析原因有很多工具可以方便地分析hprof文件,如MAT、JProfiler。我们通过JProfiler分析,在JProfiler的启动中心打开单个快照。选择下载到本地的hprof文件,等待一会解析,然后直奔“最大

2022-03-12 13:29:53 4321

原创 MongoDB分组取每组中一条数据

需求背景有一个mongo collection,里面存放了运送货物的司机位置信息,字段主要有_id: mongodb默认的主键字段orderId:订单idpositionTime:位置上报时的时间戳lon:经度信息lat:纬度信息现在需要支持根据一批订单id,查询它们最新位置的经纬度。需求分析根据需求背景,可以知道,查询的条件是按照订单id作为分组,每个分组内按照positionTime降序排序,然后将分组内的第一条记录的所有字段返回即可。在NoSQL Booster中查询的语句:db

2021-05-29 08:43:06 5773 1

翻译 ContextLoaderListener vs DispatcherServlet

在基于XML的Spring MVC配置中,在web.xml中你需要有ContextLoaderListener和DispatcherServlet的声明。下面让我们来理解一下它们在框架中的作用和不同。根上下文和子上下文首先,我们需要知道下面这两个知识:Spring在同一时刻可以有多个上下文(contexts)。其中一个是根上下文(Root Context),其它的是子上下文(Child Context)。所有的子上下文可以访问根上下文中定义的bean,但是反过来则不行,即根上下文是不能访问子上下文

2020-12-31 13:15:45 505

原创 非科班程序员迅速理解TCP连接的本质

首先,网络是基于IP的。IP协议给网络中的每个节点分配了一个地址,并且允许你从某个节点发送少量数据到另一个节点,但是这并没有什么太大价值,因为我们没法确认数据是否真的到达对方节点了,并且是否按照正确的顺序到达了。如果我们想要一套抽象的机制来传输任意数量的数据,并且保证它们顺序到达对方节点,我们需要在IP协议上方增加一个协议,用于处理传输中的顺序和保证到达,这正是TCP协议的目标。和TCP并列的,是另一个传输层协议——UDP,UDP协议不做任何检查,不保证数据一定到达,不保证顺序。UDP仅仅是在原始IP数

2020-07-27 17:52:54 674

原创 Spring中的Aware接口的本质

       Spring Aware接口允许你“卷入”(hook into)Spring框架的内部工作。通过Spring Awawre接口,你可以访问Spring上下文或者Spring的Bean生命周期事件。       你的Spring bean可能需要...

2019-12-12 09:54:26 449

原创 查看java对象占用内存大小

引入maven依赖: <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version&gt...

2019-10-31 21:44:22 4530 1

原创 IDEA中suppress warnings

有时候java类名没有遵循驼峰命名,其实也不是没有遵守,而是IDEA认为你没有遵守,或者它识别不出来我们定义的类名中的单词,然后就会有个波浪线提示你:Typo: In word …SpellChecker Inspection helps locate typos and misspelling in your code, comment and literals, and fix them ...

2019-08-06 11:00:46 3168

原创 如何在IDEA中给源码中不存在的默认构造器打断点?

       一个类源码中没有声明构造器,那么它会有一个默认构造器。那么问题来了,如果我想debug一下,看看这个默认构造器都在哪儿被调用了,要在默认构造器上打个断点(breakpoint)怎么办?按照IDEA官网上的说明:If you want to set a breakpoint in the default class...

2019-08-01 13:51:51 825

原创 微信小程序消息推送功能开发(java实现)

先好好把官方文档看一看,链接https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html#option-url主要用到的maven依赖: <dependency> <groupId>org.projectlo...

2019-07-30 20:48:59 3950 2

原创 maven项目查看依赖树

通过在项目跟路径下执行mvn dependency:tree查看项目的完整依赖树,例如:pilafs-MacBook-Pro:content-admin pilaf$ mvn dependency:tree[INFO] Scanning for projects...[INFO] [INFO] ------------------< com.**:content-admin >...

2019-07-22 14:48:11 27038

原创 IDEA快捷键总结

1.快速将一个变量用System.out.println()输出变量名称后输入.sout回车补全

2019-07-07 17:45:52 221

原创 微信小程序获取二维码scene报错40129

java后端向微信服务端https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN获取二维码的时候,由于自定义的scene中包含了"=",在用Gson将请求体转成json的时候,"="被转义了,然后获取二维码报错:{“errcode”:40129,“errmsg”:“invalid scene hint: [o...

2019-06-04 20:23:44 7513 2

翻译 Spring Boot、Spring MVC、Spring对比

Spring Boot、Spring MVC、Spring中都有spring这个单词,让我们来看看你应该在哪儿、何时使用这些工具。在本文,你将鸟瞰Spring、Spring MVC和Spring Boot,了解它们都处理哪些问题,它们最佳应用场景。你将认识到最重要的一点是,它们不是在同一个领域内竞争,它们都在各自的领域很出色地处理问题。1.Spring框架处理的核心问题是什么?好好想想,Sp...

2019-05-20 21:07:02 519

原创 类静态字段初始化错误导致的ExceptionInInitializerError和NoClassDefFoundError

JDK中对ExceptionInInitializerError的描述是:在静态初始化程序中发生了意料之外的异常的信号。在一个静态初始化程序求值的时候,或者静态字段初始化的时候发生了异常,就会抛出一个ExceptionInInitializerError异常。JDK中对NoClassDefFoundError的描述是:JVM(Java虚拟机)或者类装载器(ClassLoader)实例...

2019-05-20 13:56:03 2474 1

翻译 理解JUnit的Runner架构

       几星期前,我开始创建一个小型的JUnit Runner(Oleaster),它允许你在JUnit中用Jasmine的方式写单元测试用例。从中我学习到写单元测试用例其实很简单。在这篇博客中,我将向你展示JUnit Runners内部是怎么工作的,还有你可以如何自定义Runner来更改JUnit的测试用例执行过程。什...

2019-05-17 13:58:08 6381

翻译 高效的java异常(Effective Java Exceptions)

摘要Java开发人员可以做出的最重要的架构决策之一是如何使用Java异常模型。Java异常一直是社区争论的主题。 有些人认为Java语言中的checked(受检)异常是一个失败的实验。 本文认为,错误不在于Java模型,而在于Java库设计者未能认知到方法失败的两个基本原因。 本文提倡一种思考异常情形性质的方法,并描述有助于您设计的设计模式。 最后,本文讨论了异常处理作为面向切面编程模型中的横切...

2019-05-13 20:58:34 835

原创 AOP的应用场景(异常处理、安全检查和缓存)

本文内容摘自于王福强的《Spring揭秘》(由于已经绝版,出版社按需出版,购买链接)第11章,这是我见过的最好的一本讲解Spring背后原理、设计思想的书籍,虽然讲解的Spring版本有点老,但是基本上不影响Spring的学习。一.异常处理       或许你已经在使用AOP的方式进行异常处理,但是可能不知道这实际上对应着一...

2019-05-04 18:25:52 1488

空空如也

空空如也

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

TA关注的人

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