- 博客(69)
- 资源 (16)
- 收藏
- 关注
原创 汇编系列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
翻译 Rust模块系统的清晰解释
本文通过三个例子来讲解Rust的模块系统与文件系统之间没有隐式映射关系,让Rust学习者能够清晰地理解Rust模块系统。
2022-11-06 20:09:35
682
原创 C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?
通过C语言的Socket编程,分析C语言的结构体指针强制转换的用法。
2022-10-08 19:55:35
2783
原创 Spring框架新手快速上手系列:(二)体验一把自己配置低级容器
Spring框架快速上手系列二:手动配置低级容器,感受Spring框架内部的工作原理,开启源码研究之路。
2022-08-24 19:38:11
560
原创 Elasticsearch常用的相关操作汇总
本文总结了Elasticsearch常用的一些命令,涉及更新mapping、根据查询更新、创建脚本、根据脚本过滤等。
2022-07-06 19:00:01
739
原创 聊一聊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
原创 一次线上频繁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>...
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
原创 微信小程序获取二维码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关注的人
RSS订阅