Spring源码分析

Spring源码分析

Spring 是我们工作中最常用的框架,Spring使我们开发变得简单,工作几年只停留在使用 Spring 层面上,很多特性以及实现原理还知道,这次通过学习 Spring 源码加深自己对它的理解,同样学习优秀的框架可以学到很多设计理念。

Read more
Hexo如何使用PlantUML画图

Hexo如何使用PlantUML画图

我的博客是用Hexo搭建的,有时候需要画图,画图的工具很多,但是有时候我们需要对图片进行改动,然后需要重新引入到Markdown中,很不方便。

希望可以随意改动图片,而且不需要重新插入图片,开源的工具PlantUML ,轻松从简单的文字说明创建UML图,平时用vscode写文档,可以安装PlantUML插件,然后写完可以同步到博客上,也可以安装插件来实现。

Read more
比特币原理

比特币原理

比特币是一种数字货币,是一种分散的系统,它将交易记录在称为区块链的分布式账本中。 比特币矿工运行复杂的计算机设备来解决复杂的谜题,以确认称为区块的交易组;成功后,这些区块将被添加到区块链记录中,矿工将获得少量比特币的奖励。 比特币市场的其他参与者可以通过加密货币交易所或点对点买卖代币。

Read more
Smart Contract Course

Smart Contract Course

Welcome to the course

⌨️ (00:00:00) Lesson 0: Welcome To Blockchain

Best Practices

  • Follow the repository: While going through the course be 100% certain to follow along with the github repository. If you run into in an issue check the chronological-updates in the repo.
  • Be Active in the community: Ask questions and engage with other developers going through the course in the discussions tab, be sure to go and say hello or gm! This space is different from the other industries, you don’t have to be secretive; communicate, network and learn with others :)
  • Learn at your own pace: It doesn’t matter if it takes you a day, a week, a month or even a year. Progress >>> Perfection
  • Take Breaks: You will exhaust your mind and recall less if you go all out and watch the entire course in one sitting.
    Suggested Strategy every 25 minutes take a 5 min break, and every 2 hours take a longer 30 min break
  • Refer to Documentation: Things are constantly being updated, so whenever Patrick opens up some documentation, open it your end and maybe even have the code sample next to you.
Read more
ThreadLocal原理分析和拓展

ThreadLocal原理分析和拓展

多线程访问同一个共享变量由于线程的执行顺序和变量的可见性原因会导致并发问题,我们一般会有两种解决思路:

  • 一是对访问的变量进行加锁处理
  • 二是每个线程都访问本线程的变量

本次我们重点分析Java中通过ThreadLocal实现的本地变量

Read more
深入理解高速缓存工作原理

深入理解高速缓存工作原理

为什么需要高速缓存

早期 CPU 相比现在的 CPU 比较简单,没有 Cache 的计算机系统的简化模型,CPU在执行时需要的指令和数据通过内存总线和系统总线由内存传送到寄存器,再由寄存器送入ALU)。

Read more
Attack Lab

Attack Lab

介绍

主要分为两种不同类型的攻击:

  • Buffer overflow attacks
  • ROP attacks
Read more
Bomb Lab

Bomb Lab

介绍

邪恶博士在我们的班级机器上植入了许多“二进制炸弹”。二进制炸弹是一个由一系列阶段组成的程序。每个阶段都要求你在 stdin 上输入入特定的字符串。如果你输入正确的字符串,则该阶段将被消除,炸弹将进入下一个阶段。否则,炸弹通过打印“ BOOM !!!”而爆炸。然后终止。当每个阶段都已消除时,炸弹便已消除。

Read more
汇编入门

汇编入门

从 C 语言到机器码

先从一个非常简单的程序来看编译过程中发生了那些步骤。

#include <stdio.h>

int main() {
printf("hello world\n");
return 0;
}

我们在 Unix 系统上终端上使用 GCC 进行编译:

> gcc -o hello hello.c
Read more
浮点数在计算机中的表示

浮点数在计算机中的表示

前言

相信大家在编程过程中都有使用过浮点数,但是浮点数总是给我带来预期不一样的结果,下面展示了在 C 语言中的精度问题,发现使用浮点数总是会带来精度缺失。在学习和工作当中总能听到不能使用浮点数来表示金钱,会有精度缺失。

Read more