自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李大有的博客

step by step

  • 博客(16)
  • 收藏
  • 关注

原创 【深入理解Linux内核笔记】第三章 进程

进程通常定义为程序执行的一个实例。一、进程、线程与轻量级进程轻量级进程Linux中常常将进程称为任务或者线程,因此在Linux中其实是没有线程这一概念的,所谓线程其实由进程来模拟实现,即我们说的轻量级进程。(但在Windows中有线程)进程目的:从内核的观点来看,进程的目的是担当分配系统资源(CPU时间、内存)的实体。创建:每一个进程都只有一个父进程,它在创建时几乎与父进程相同,它接收父进程地址空间的一个逻辑拷贝,并从进程创建系统调用的下一条指令开始执行与父进程相同的代码。父子进程各自有独立的数

2020-10-23 10:38:26 267

原创 【深入理解Linux内核笔记】第二章 内存寻址

一、内存地址的表示逻辑地址: 每一个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离。线性地址: 这个地址是一个32位无符号整数,表达的地址可以达到4GB,值的返回从0x00000000到0xffffffff。物理地址: 物理地址由32位或36位无符号整数表示,与从微处理器地址引脚发送到内存总线上的电信号相对应。三者的转换关系: MMU(内存控制单元)通过分段单元(硬件电路)将一个逻辑地址转换成线性地址;接着,通过分页单元(硬件电路)将线性地址转换成物理地址。二、段选

2020-09-17 20:29:04 222

原创 【回调消息解决方案】Java手写一个简单的消息存储队列用以存储需要推送的实时数据

一、问题背景有这种场景:当某一些消息由服务器发送到后台时,往往是在一个回调函数中获取。我们如何从回调函数中获取它并可以由不同的个体创建不同的队列,再将实时获取的消息推送出去呢?二、方案雏形一般来说,我们用一个队列存储取得的回调消息,然后在其他我们需要的地方从这个队列中取出消息,由此可以知道需要这么做:1、这个队列由于经常增减,应该是链表形式的2、这个队列应该只有一个实例,这样才能在其他地方取出消息3、当存在多条消息同时向队列存入的情况时,它应该保持原子性以下代码来自这篇博客:https://b

2020-09-14 11:17:00 522

原创 【JVM】虚拟机类加载过程以及Java的类加载器结构和机制简述

一、类加载过程简述这里只是简单说明,不了解详细过程的读者可以查阅相关资料。一个类型被加载到虚拟机的内存开始到卸载出内存,它的生命周期经历了以下的阶段:加载——验证——准备——解析——初始化——使用——卸载其中,验证、准备、解析三个阶段被统称为“连接”。1、加载在加载阶段,虚拟机需要完成以下的三件事:1)通过一个类的全限定名来获取定义此类的二进制字节流。2)将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构。2)在内存中生成一个代表这个类的java.lang.Class对象,作为

2020-06-13 17:18:44 151

原创 【TCP/IP】基于TCP协议的MQTT协议概述以及简单的Java代码示例

一、MQTTMQTT协议是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的

2020-06-08 17:29:18 2553

原创 【JVM 重要了解】class类文件中方法调用涉及的一些概念(简单名称、描述符、全限定名、方法句柄和方法类型、动态调用方法、符号引用)

一二中的概念如图展示:package com.study.method;public class TestClass { private int x; public int addResult() { return x+1; }}一、简单名称没有类型和参数修饰的方法或字段名称比如整形变量x和方法addResult。二、全限定名一个类的全限定名是将类全名的.全部替换为/例如com/study/method/TestClass三、描述符

2020-05-28 11:30:53 535

原创 【Java 锁】在springboot利用Redis做一个简单的分布式锁(一·概念)

一、概述分布式锁的实现过程中常常需要借助中间件来实现,这里使用redis来做一个简单的实现。在本博客中,我们都使用token的缓存来验证过期时间的设置。注:这里只进行了概念化测试,具体应用在下一篇博客介绍二、生成keytoken一般是一串字符,因此以下使用String类型的缓存方式Redis工具类代码如下: @Autowired private RedisTemplate<String, Object> redisTemplate; /** * 指定缓存

2020-05-18 21:26:37 141

原创 【Java并发】关于之后会涉及到的一些基础概念,以及线程基本操作

1、同步和异步同步:同步方法一旦开始以后,调用者须等到方法调用返回才能进行后续操作异步:异步方法通常会在另一个线程里执行,中途不会阻碍调用者的后续操作2、并发和并行并发:注重多个任务交替执行,而这些任务可能依然都是串行的并行:多个任务是严格的同时执行的3、临界区,阻塞里面是共享资源,即多个线程公共的资源。每一次只能有一个线程访问临界区,其他线程会被挂起,这种情况即称其他线程被阻塞。4、死锁,饥饿,活锁死锁:线程之间互相占用的对方的资源且拒绝释放,造成了线程都无

2020-05-11 20:28:22 111

原创 【JavaScript】JS中的内存管理

一、JS的内存空间JS的内存空间分为栈、堆和池。栈中存放的一般是简单的数据,便于提升查找的效率。而由于大部分对象这样的复杂值,它们的大小会改变,因此会存储在堆中,否则会降低变量的查询效率,此时栈中存放的是指向对象的地址。池一般存储常量值,也会放在栈中。JS中的基础数据类型都会放在栈中。二、JS的垃圾回收1、初始算法:引用计数给对象加上一个引用计数器,如果存在其他...

2020-04-27 18:10:28 259

原创 【Java基础】类文件结构(一)(以及两个虚拟机进程查看的自带小工具)

不管是现在安卓使用的kotlin还是groovy,Scala这些,其实都是运行在Java虚拟机之上的,类似这样的特性被称为语言无关性,而这个特性就是今天主要要说的。语言无关性的基础实现语言无关性的基础是虚拟机和字节码存储格式,Java虚拟机只是与class文件这种特定的二进制文件有着关联。对于Java语言来说,其中的语法、关键字之类的最终都会变成多条字节码指令组合来表示,这里也从侧面说...

2020-04-20 17:34:21 84

原创 【JVM】内存分配与回收概念详解与实例

Java自动内存管理的最根本目标是自动化地解决两个问题:1、自动给对象分配内存2、自动回收分配给对象的内存一、虚拟机中的垃圾收集器判断对象是否存活以及回收的部分算法分析什么时候需要对内存动态分配和内存回收进行监控和调节呢?当我们需要排查各种内存溢出、内存泄漏问题时,以及垃圾收集成为系统达到更高并发量瓶颈的时候。内存分配与回收的讨论主要指Java堆及方法区(这里是保存系统类信...

2020-04-13 15:05:02 276

原创 【JVM】自动内存管理实例测试

一、运行时数据区域如下图,Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。目前只作了了解,还未深入学习。二、HotSpot虚拟机对象的访问定位主流的对象访问方式有句柄访问和直接指针访问,以下是图解:句柄访问的最大好处是对象移动时只会改变句柄中的实例数据指针,而对对象的引用本身不需要修改。直接指针访问的最大好处是速度更快。因为它节...

2020-04-06 17:50:22 99

原创 【JVM】编译openJDK8,以及配置相关工具的过程(以及耗时四天并没有成功的失败经历)

一、编译前准备及编译环境1.1本机环境配置我在编译openJDK8时准备的虚拟机是ubuntu16.04版本,本机上使用的是CLion,配置上Cygwin类Linux环境来阅读openJDK8的源码关于CLion配置Cygwin的详细过程见这篇博文:https://blog.csdn.net/qq_36819130/article/details/78668249作者:ming_514...

2020-03-30 13:35:23 369

原创 【总论+了解】Java发展史

本文中提到的一些技术点会在之后继续更详细地更新Java技术体系组成部分:Java程序设计语言各种硬件平台上的Java虚拟机实现Class文件格式Java类库API来自商业机构和开源社区的第三方Java类库JDK:Java程序设计语言、Java虚拟机、Java类库 支持Java程序开发的最小环境JRE:JavaSE API子集、Java虚拟机 支持Java程序运行的标准环境Jav...

2020-03-23 14:02:45 120

原创 【springboot整合dubbo学习·二】dubbo架构建成后的微服务配置

第一篇-快速建成dubbo项目架构:https://blog.csdn.net/qq_43710345/article/details/104898412一、启动时检查、容错及屏蔽(一)启动时检查-官方文档:http://dubbo.apache.org/en-us/docs/user/demos/preflight-check.html如果出现了互相依赖的情况(两个应用既是对方的提供者也是...

2020-03-23 11:41:16 81

原创 【springboot整合dubbo学习·一】快速建成项目架构

Dubbo是一个典型的RPC框架,主要解决的是分布式系统中服务之间的调用问题,以及远程调用时要像本地调用一样方便。架构主要组成成分一、注册中心在这里注册中心使用zookeeper。在config文件夹中复制一份zoo_sample.cfg文件,并重命名为zoo.cfg,然后就能双击zkServer.cmd启动zookeeper服务。zookeeper要求有一个日志文件夹,然而默认的目录...

2020-03-16 18:39:45 170

空空如也

空空如也

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

TA关注的人

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