爱看书的阿东

赐他一块白色石头,石头上写着新名

#周报

进步

  • Apach Curator 文章第二篇【进度
  • 阅读文章和笔记记录:【个人成长】你的技术成长战略是什么?【进度
  • 【笔记】笔记分类的思考:来自Obsidian社区(临时笔记归档)【进度
    • 零碎笔记记录
  • 《手写Mybatis》第一章脱稿自己实现相关代码【进度
    • 基础完成,发现书中部分代码运行有误。
  • 《手写Mybatis》第二章阅读和实战【进度
  • 《手写Mybatis》第三章阅读和实战【进度
  • 《手写Mybatis》第四章阅读和实战【进度
  • 整理星球收藏的优质资料和主题,归档到自己的笔记【进度
  • 过去的部分笔记同步到各个平台【进度
  • 个人博客标签和分类重新整理【进度
  • 星球笔记第一篇【进度
  • Postgresql 源码安装方式如何实现开机自启笔记归档 【进度
阅读全文 »

引言

今天早上閑逛YTB的時候,偶然發現推送的一個討論坐姿的視頻,看完之後才知道,原來自己很多日常認爲“對”的事情都是錯的。

特意搞成繁體可以在閲讀上增加一點障礙,讓記憶更深刻一點點。

阅读全文 »

引言

AccessController.doPrivileged 这个方法调用通常存在于JDK的一些源码中,但是查阅相关资料介绍大差不差,比较难理解,这里简单整理资料做一个笔记,待日后有更深层次实践和理解之后回顾。

当然更多情况这个方法的作用大概率会被遗忘,不过根据英文单词一知半解也无伤大雅。

什么是特权访问?

Privileged单词,个人联想到有关Java的安全管理的知识点,于是上网做了个科普。

在Java中执行应用程序分为本地执行远程执行。本地代码调用执行是访问安全的,因为它受限于机器的JVM,同样它也可以获取JVM并且可以访问一切本地资源。而远程代码则不同,它基于沙箱机制,只能访问限定在JVM特定的运行范围中的资源。

与其说是“授权”,不如说是在JVM中进行一些敏感操作的时候,实际上还需要一层“黑盒”来加限制。Java的安全管理基本上可以理解为JVM的防火墙,运行一些“可接受”的操作,但是禁止“越权”访问。

阅读全文 »

【Spring】Spring 事务机制的个人总结

一、引言

​ Spring的事务机制虽然已经有非常多的资料介绍了,但是实际使用的时候还是常常栽坑里,相信这是大部分程序员的目前或者曾经的使用感受,所以这篇文章将会做一个完整的总结,用理论结合实际的代码实战的方式来弄懂Spring事务的机制到底应该如何使用以及内部是如何进行设计的。

​ 在介绍正文之前,希望这篇教程不单单是能让读者避开Spring事务的陷阱,更多的是希望能够从Spring的事务设计上锻炼自己的架构思维,如果你一开始完全不懂,可以像我一样进行一比一复刻用在自己的开源工具或者项目上,不要管为什么这么设计,只管模仿再去思考,多想想自己用起来有什么便利性,然后再反推思考。

​ 另外如果你完全不懂JDBC或者数据库的话,这篇文章可能就不太适合你看了,笔者也并不想浪费读者时间,可以看看下面这本老外写的JDBC入门文档,粗略翻了一下发现还是挺适合新手的,顺带磨练下英语阅读水平(实在不行还有谷歌娘兜底不是):

《jdbc》(简单粗暴的名字)

链接:https://pan.baidu.com/s/1COVisy9DyJR5uj9hsB4WoQ
提取码:x5tz
–来自百度网盘超级会员V7的分享

如果觉得文章写得不错,欢迎点赞收藏支持一波。

阅读全文 »

引言

本部分整合聊天系统有关的章节,内容主要是介绍关键功能的实现逻辑和部分代码实现为主,建议读者先看看作者的博客项目,切换到不同的分支看看各个细节功能如何实现。这里仅仅记录一些个人学习过程的重点部分。

思维导图

https://www.mubu.com/doc/1dunN_7Luzl

《跟闪电侠学Netty》 - 聊天系统实现.png

项目代码

作者的仓库代码地址:https://github.com/lightningMan/flash-netty

阅读全文 »

原文

Whats the difference between SoftReference and WeakReference in Java?

From Understanding Weak References, by Ethan Nicholas:

引言

在学习JVM的过程中大概率会看到类似 SoftReferenceWeakReference的字样,本部分挑选了Stack Flow 上的高赞回答进行整理。

Understanding Weak References

Understanding Weak References

虽然是一篇2006年的博客,但是写的非常好,并且至今也依然有不小的价值,这里简单翻译和提取一下这篇文章的内容。

前面一大段说明写这篇文章的缘由是面试的时候发现很多面试者甚至不知道这个东西,相比之下自己不仅聊了作用和一些细节反差很大。

Now, Im not suggesting you need to be a weak reference expert to qualify as a decent Java engineer. But I humbly submit that you should at least know what they are – otherwise how will you know when you should be using them? Since they seem to be a little-known feature, here is a brief overview of what weak references are, how to use them, and when to use them.

现在,我并不是说你需要成为一个薄弱的参考资料专家,才有资格成为一个体面的Java工程师。但我谦虚地认为,你至少应该知道它们是什么 – 否则你怎么会知道什么时候应该使用它们?由于它们似乎是一个鲜为人知的特性,这里简要介绍一下什么是弱引用,如何使用它们,以及何时使用它们。

阅读全文 »

简介

基于慕课网站上的一个一元钱课程《2小时搞定多线程》的 个人笔记。

线程的起源

我们先来看看网络中关于线程起源的说明,理解线程的来龙去脉对于掌握多线程有一定帮助。

此部分内容整理自下面两篇网络博客:

  • # 线程是什么
  • # 线程的起源

线程的起源与计算机的发展息息相关。早期的计算机系统是单指令模式,资源利用效率低下。当批处理模式即计算机的多指令模式出现后,计算机资源利用率得到有效提升,但这种模式又经常导致 CPU 陷入等待状态,无法得到充分利用,于是进程出现了。

当用户对计算机发出一系列操作指令时,每个进程会将不同的操作储存起来,随时进行切换。但是进程的指令执行效率仍然不够快,无法在同一时刻执行多个任务。为了解决这一问题,技术人员又发明了线程。

有了线程以后,每个操作指令对应的任务都能够被划分为多个子任务,由每一个单独的线程负责,而不同的线程可以同时运行,这样计算机的运行效率便得到进一步提升。

我们可以把上面的几段内容做一个概括:

  1. 单指令模式(类似计算器)。
  2. 多指令模式(批处理)。
  3. 批处理存在CPU等待情况,进程诞生。
  4. 进程指令运行效率不满足需求,为了处理多任务线程诞生。
阅读全文 »