前言首先问大家一个问题,我们开发好 Java 代码是如何运行的?我们写了这么多年的代码,对于代码运行的流程是否清楚呢?是不是在 ide 中点一下 Run 启动就完事了,我们写的代码直接就跑起来了,其实在背后编译器和虚拟机默默的在帮我们承受了这一切。Java 程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码2、字节码由 Java 虚拟机解释运行。因为 Java 程序既要编译同
微信公众号:javafirst
注:以下源码基于jdk1.7.0_11
上一篇分析了HashMap的源码,相信大家对HashMap都有了更深入的理解。本文将介绍Map集合的另一个常用类,Hashtable。
Hashtable出来的比HashMap早,HashMap 1.2才有,而Hashtable在1.0就已经出现了。HashMap和Hashtable实现原理基本一样,都是通过哈希表实现。而且
转载
2021-08-18 13:35:29
175阅读
1. RedisTemplate 默认配置下底层实现使用jedis(spring-boot 1.x)或者lettuce(spring-boot 2.x)操作redis的spring-boot 1.5.7spring-data-redis 1.8.7配置文件# redis
spring.redis.host=172.168.32.145
spring.redis.password=
spring.r
1、什么是JavaScript?1.1、概念JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。诞生于1995年,当时的主要目的是验证表单的数据是否合法。JavaScript本来应该叫LiveScript,但是在发布前夕,想搭上当时超热的java顺风车,临时把名字改为了JavaScript。(也就是说js
前言最近在研究micropython的源码编译过程,简单记录下关于qstr部分内容,本篇文章基于micropython1.18版本源码,1.19版本及之后可能会略有差异。标识符与相应对象的联系Micropython中有很多标识符,例如lcd.py中出现的标识符有:import、lcd、init、print、“hello”。这些标识符最终都需要与某个对象或操作联系起来。那么这种联系是如何建立的呢?那
io包的说明和定位提供基础的io原语接口. 因为是基于底层操作实现的,所以,如果没有特别说明,都不应该认为是并行安全.接口或结构体的关系第一部分是io包的核心部分,包括四个接口: Reader/Writer/Closer/Seeker,分别对应io的读写关闭和偏移.第一部分的扩展部分,是基于核心4接口的组合: ReadWriter/ReadCloser/WriterCloser/ReadWrite
文章目录一、简介二、工程引入配置三、加锁操作四、原理分析五、方案优缺点 一、简介 现在项目一般都是使用分布式集群部署,对后台业务数据的某些操作需要考虑加锁的问题,而jdk的synchronize加锁机制已经不适合做集群部署的操作,因为synchronize关键字只是针对于单体部署的单台虚拟机有用。考虑到现在系统使用redis做缓存比较高效,此处推荐使用redis下的分布式锁redisson进行加
1. NIOEventLoop 源码
EventLoopGroup bossGroup = new NioEventLoopGroup(1); 这里会创建一个group, 同时group 内部包含1个EventLoop 事件循环器
1. 类图继承关系
1. AbstractScheduledEventExecutor 表示该接口接收定时任务,可以处理定时任务。
2. EventLoop 接口
转载
2021-08-07 19:40:10
382阅读
文章目录ObjectgetClass()hashCode()java关键字 nativetoString()String家族Attention!!!BooleanByteDoubleInteger集合SetInteger集合Set ObjectObject 类属于 java.lang 包,此包下的所有类在使用时无需手动导入,系统会在程序编译期间自动导入。Object 类是所有类的基类,当一个类没
Redis源码阅读——SDS参考Redis设计与实现 以及网上博客阅读Redis源码。SDS相关知识点见读书笔记。创建和销毁为了能够对sds进行相关API的测试,因此把sds模块单独提出来。阅读Redis的Makefile发现,编译sds模块需要的源文件包括sds.c, sds.h zmalloc.ctest-sds: sds.c sds.h
$(REDIS_CC) sds.c z
我们使用git clone将源码克隆下来,编译一下,就可以阅读源码了。
编写一个单元测试,测试可重入锁的加锁逻辑:
1. java2s http://www.java2s.com/ 这个网站非常好,分成三大类,分别是Example、Products、 Articles,每个大类下又分别设许多小类,还有搜索功能,这样查找起来非常方便。。比如,如果要学习SWT/JFace,只要把Example下的SWT JFace Eclipse 研究一下也就可以了。另
为什么写这这篇文章一直有读者问我 javac 源码怎么调试,自己也在写 JVM 掘金小册的过程中阅读了大量的 javac 的源码,网上这方面的文章也比较少,那就来写一篇 javac 源码调试的文章吧,作为 javac 系列文章的开篇。javac 源码调试的过程是比较简单的,它本身就是一个用 Java 语言写的,对我们理解内部逻辑比较友好。环境搭建过程环境备注:Intellij、JDK81、第一步下
在java的集合中,List接口继承Collection接口,AbstractList类实现了List接口,在AbstractList中的内部类Itr实现了Iterator接口ArrayList实现List接口并继承AbstractList类,结构图如下:(图片出自网络)Iterator接口源码:public interface Iterator<E> {
boolean ha
bilibili视频讲解:https://space.bilibili.com/431392724 用户名:平凡的久月最近想读读Python源码,任何东西学习方法基本都是一样的,先从总体框架进行了解,再从自己侧重的方面逐步深入。1. Python总体架构左边是Python提供的大量的模块、库以及用户自定义的模块。比如在执行import os时,这个os就是Python内建的模块,当然用户还可以通过
简介Java NIO(New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。不同的IO模型比较如下图所示。从图中可以看出,阻塞的IO模型在资源没有被满足的时候,读取线程是呈阻塞态的,而非阻塞的IO模型就像轻量级锁那样,通过反复询问的方式来获取资源。架构NIO主要有三大核心部分:Channe
前言平常在使用SpringBoot的过程中,经常会使用到@EnableXXX的注解,而随之一起的还有一个@Import注解,这次就专门来看@Import的源码正文先摘抄一部分它的英文注释吧:/**
* // 导入一个或多个组件类,代表性的就是Configuration类型的类
* Indicates one or more component classes</em&