自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wbo

wbo

  • 博客(63)
  • 资源 (8)
  • 收藏
  • 关注

原创 GDB调试指南

gcc在链接C++代码时没有自动链接C++标准库,因此链接失败。可以添加。

2024-01-13 16:24:15 850

原创 iptables教程

netfilter/iptables(简称iptables)是与2.4.x和2.6.x系列版本Linux内核集成的IP信息包过滤系统。

2023-08-30 23:06:59 574

原创 zookeeper选举流程源码分析

在一个节点成为leader节点后,首先会将epoch的值+1,同时将事务序号设置成0。给其他节点发送投票消息的时候,也会给自己发送,其他节点是通过网络发送,给自己是直接放到接收投票信息的队列。这行代码会调用具体执行选举的类执行具体的选举操作,并返回对应的投票信息,并设置成当前的投票信息。+1,表示当前是启动后的第几轮选取,这个参数是保存在内存中的,也就是每次启动都会从0开始。OBSERVING: 当前节点是观察者状态,这种状态的节点不参与选举的投票。方法,就是用来根据当前节点不同的状态,进行不同的处理。

2023-08-23 22:26:14 1026

原创 Linux查看二进制文件

、、、可以使用16进制、10进制、8进制、码的形式查看文件。使用,可以查看的各种参数。 and 参数后面可以跟后缀KiB(=1024)、MiB(=10241024),依此类推GiB、TiB、PiB、EiB、ZiB和YiB(“iB”是可选的,例如“K”具有与“KiB”含义相同),或后缀KB(=1000)、MB(=10001000),依此类推,用于GB、TB、PB、EB、ZB和YB。比如需要8进制显示文件前1024个字节,就可以使用下面的命令。显示区域分为两部分,左边一列是文件的偏移位置,右边的是文件内容的

2023-07-23 17:26:26 3292

原创 awk教程

awk

2023-07-21 20:46:23 111

原创 redi缓存使用

紧接着,应用就会把请求发送给数据库,从数据库中读取数据。命令给每个数据设置过期时间时,给这些数据的过期时间增加一个较小的随机数(例如,随机增加 1~3 分钟),这样一来,不同数据的过期时间有所差别,但差别又不会太大,既避免了大量数据同时过期,同时也保证了这些数据基本在相近的时间失效,仍然能满足业务需求。如果是新增数据,数据会直接写到数据库中,不用对缓存做任何操作,此时,缓存中本身就没有新增数据,而数据库中是最新值,这种情况符合我们刚刚所说的一致性的第 2 种情况,所以,此时,缓存和数据库的数据是一致的。

2023-05-08 19:35:43 755 3

原创 Linux中Buffer和Cache的区别

free命令中会有一项buff/cache通过man free可以看到这里的关于buff/cache的介绍buff/cache包含两部分buffers:内核缓存区用到的内存,对应中Buffers的值cache:内核页缓存和Slab用到的内存,对应中Cached与之和。执行man proc可以看到关于的说明。Buffers是对原始磁盘块的临时缓存,通常不会特别大(20M左右)。Cached是从磁盘读取文件的页缓存是Slab的一部分。Slab包括两部分,其中的可回收部分,用记录,而不可回收的部分,用。

2023-03-31 21:55:51 661

原创 Linux C代码获取线程ID

保证仅在进程中是唯一的。在连接已终止的线程或已分离的线程已终止后,可以重用线程。返回的线程ID是一个有内核分配的数字,类似进程。得到的线程ID是不同通过系统命令查看的,比如。只保证在进程中是唯一的,不同的进程中的。,它是由线程库实现来负责分配和维护,Linux C代码获取线程ID。具体通过上面的代码就可以的到线程。命令,这些看到的线程ID都是通过。调用这个函数返回的线程id,与。的结果不是同一个东西)。封装系统调用,需要使用。

2023-02-26 11:29:17 1763

原创 K8S环境安装

k8s环境安装

2023-01-27 22:01:13 416

原创 slf4j常用配置文件读取

日志现在一般都是使用slf4j作为接口、底层实现一般是用log4j2或者logback。我们先看下log4j2是如何读取配置文件的。如果使用gradle的话。上面的代码就会导入slf4j及log4j2的相关依赖。主要是在创建完后,会调用它的start–>,在这里面读取配置文件,转化成对象。调用的堆栈如下图:具体会读取配置文件1、读取环境变量指定的路径。2、读取环境变量指定的路径。3、继续在下面的代码中查找配置文件通过、、、在上面就会依次去拼接配置文件路径,在类路径上去查找配置文件。

2022-12-25 19:29:39 1833

原创 java认证与证书

目前主要有JKS和PEM两种编码格式文件。如何在这两种密钥库文件中进行库文件交换呢?可以通过格式的证书文件在两种格式的密钥库中进行库文件导出/导入等。通常使用编码格式作为数字证书文件存储格式。自签名证书,即证书申请者为自己的证书签名。数字证书的颁发流程简述过程如下:1、客户端请求服务器的流程如下:客户端请求服务器将按如下步骤进行:2、服务器端完成客户端请求处理后,需经过以下几个步骤完成响应:KeyTool是Java中的数字证书管理工具,用于数字证书的申请、导入、导出和撤销等证书管理操作。官方文档https:

2022-12-04 22:06:09 3164

原创 spring cron表达式源码分析

在springboot中,我们一般是通过如下的做法添加一个定时任务上面的中的参数就是cron表达式了。这里主要是对cron表达式的源码进行分析,其他内容不再展开了。这能看到会创建一个对象,这个对象它主要就是用来包装解析后的cron表达式,获取任务下次执行的时间。在构造方法中会调用到将我们传入的cron字符串解析成为对象。主要有一个next方法,它会根据当前cron表达式解析出来的对象,以及传入的时间,返回一个时间值,也就是下次任务执行的时间。

2022-10-01 15:50:41 604

原创 spring boot 分布式session实现

主要是通过包装将session相关的方法进行代理。具体是的实现就是通过过滤器将对象进行包装,当调用session相关的方法时,代理到的实现类。我们先看看。是一个接口,主要用来管理session。各种分布式session处理方案都需要实现这个接口来实现具体的处理。是一个过滤器,它的构造方法会接收一个的实现类,并且在它的filter方法中会对、进行包装,当后续调用到session相关的方法时,最终都会调用到方法。继承了是一个抽象类,需要子类来实现方法来实现。这个抽象类主要用来控制每个filter只执行一次。..

2022-08-27 16:27:26 648

原创 Mysql笔记2

MySQL

2022-07-31 23:01:57 198

原创 maven知识总结

maven中repository、mirror、dependencyManagement属性介绍

2022-06-12 11:14:57 269

原创 hive安装

文章目录1、修改jdk版本为jdk82、修改hadoop配置3、安装hive4、初始化元数据5、创建hive的存储目录6、启动hive7、客户端连接本次操作是在安装完hadoop的基础上进行的,安装hadoop请参看上篇博客hadoop集群搭建_wbo112的博客-CSDN博客。hive会使用到mysql,所以需要提前安装好mysql服务。可以参看这篇博客mysql解压版安装_wbo112的博客-CSDN博客。本次所有操作也都是基于hadoop用户执行。jdk8以上会报类加载器的报错,需要用jdk

2022-05-12 23:22:07 702

原创 hadoop集群搭建

几年前搞过一段时间hadoop,现在又要开始搞了,发现环境都不会搭建了。写个博客记录下搭建过程。文章目录1、创建虚拟机及规划2、设置各主机之间免密登录1、在每台主机hosts文件中添加IP与主机名的映射关系2、设置互信(每台主机都执行)3、安装JDK和hadoop1、上传软件包2、安装Java,设置环境变量3、配置文件修改4、将上述内容分别拷贝至hadoop2、hadoop34、启动服务1、执行初始化命令2、启动hadoop集群3、启动yarn。4、启动历史服务器.各个服务组件逐一启动/停止1、创建.

2022-05-08 20:49:55 618

原创 redis补充

redis补充这篇文档是redis入门笔记的补充1.info命令用来显示服务的信息。info命令可以跟下面的选项:server: 关于 Redis 服务器的一些信息clients: 客户端连接部分memory: 内存消耗相关信息persistence: RDB和AOF相关信息stats: 一些统计replication: 主/副本复制信息cpu: CPU消耗统计commandstats: Redis 命令统计delatencystats: Redis 命令延迟百分位分布统计

2022-04-05 22:17:16 1023

原创 git常用命令总结

git本地仓库操作创建本地仓库git init就会将当前目录变成一个git仓库,同时当前目录也会有个.git的目录。默认用master作为本地分支的名字,可以通过git branch -m <name>命令修改当前分支的名字。当前执行git branch是查看不到当前的master分支的,那是因为当前我们还没有执行git commit操作。git add a.txt就可以将a.txt添加到暂存区。git commit -m [日志]将暂存区的所有文件提交到本地库。git com

2022-03-27 23:04:32 658

原创 redis入门笔记

尚硅谷redis笔记技术的分类:解决功能性的问题:Java,Jsp,RDBMS,Tomcat,HTML,Linux,JDBC,SVN解决扩展性的问题:Struts,Spring,SpringMVC,Hibernate,Mybatis解决性能的问题:NoSQL,Java线程,Hadoop,Nginx,MQ,ElasticSearchredis安装下载redis安装包,解压后,进入目录,依次执行make、make install就可以进行安装。默认安装后文件位置/usr/loca.

2022-03-13 19:57:16 2286 2

原创 常用锁原理的介绍(上)

本文是学习《多处理器编程的艺术》的笔记。下面主要介绍了一些常用的锁的原理,这些只是一些理论,离我们实际使用还是有一些差距的。不过这种理论也往往是相对比较好容易理解了掌握的,只有了解了这些理论,可以加深我们对锁原理知识的理解。有能力的同学更可能根据这些理论定制开发符合自己场景的高性能的锁。本篇文章并没有具体讲到ava中锁的实现。但是通过本篇文章,相信大家对Java中锁的实现也会有更深入的理解。因为Java中Lock的底层实现AbstractQueuedSynchronizer的原型在这里就会讲到。同.

2022-02-20 23:06:11 664

原创 vim快捷键

1.命令模式下的操作:光标的移动h(左) j(下) k(上) l(右)行首: 0行尾: $文件开始位置: gg文件末尾: G行跳转: nG(n – 自然数)删除操作删除光标后边的字符: x删除光标前边的字符: X删除单词: dw (光标移动到单词的开始位置, 否只能删除一部分)删除光标到行首的字符串: d0删除光标到行尾的字符串: d$删除光标当前行: dd删除多行: ndd (n – 自然数)撤销操作撤销: u反撤销:

2022-02-18 22:00:05 359

原创 springboot自动扫描添加的BeanDefinition源码解析

1.springboot启动过程中,首先会收集需要加载的bean的定义,作为BeanDefinition对象,添加到BeanFactory中去。由于BeanFactory中只有getBean之类获取bean对象的方法,所以将将BeanDefinition添加到BeanFactory中,是通过BeanDefinitionRegistry接口的void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws

2022-02-15 10:38:29 671

原创 mysql笔记

文章目录MySQL体系结构存储引擎特点InnoDB底层文件MyISAM底层文件索引慢查询日志profile详情explain执行计划EXPLAIN 执行计划各字段含义:索引使用最左前缀法则范围查询索引列运算字符串不加引号模糊查询or连接的条件数据分布影响SQL提示覆盖索引前缀索引单列索引与联合索引索引设计原则SQL优化插入数据insert优化大批量插入数据主键优化数据组织方式order by优化group by优化limit优化count优化update优化视图介绍创建查询修改删除视图的检查选项视图的更新作

2022-02-13 23:32:02 756

原创 shell基础知识查缺补漏

shell基础笔记最近在看《Linux程序设计(第4版)》,其中有一个章节主要讲了shell脚本方面的,内容不细,但是利用较短的篇幅讲的也不少了。对我们自己来说也是一个查缺补漏的过程,所以就写下这篇读书笔记,方便自己随时翻看。本文的主要内容是来自《Linux程序设计(第4版)》,另外一小部分内容来自《Linux Shell脚本攻略(第3版)》。本篇文章,内容是比较粗,很多内容也都没有写,比如重要的awk,sed之内的命令本篇文章压根就没有提及到。如果这篇文章能让大家对自己掌握的shell有一个查缺补漏

2022-01-14 21:24:48 610

原创 Java8中的时间处理

Java8中的时间处理Java8提供了全新的时间处理框架,这里就可以完全丢弃之前的Date、Calendar了。具体的API的使用都是比较简单的。这里就不展开介绍了。这里主要介绍下一些主要的类LocalDateTime我们一般常用的就是这个了,用这个来表示日期时间。如LocalDateTime.now()就可以基于当前默认时区得到当前的日期时间。由于全球有好多时区,同一个日期时间,在不同的时区,反映到时间轴上是不同的。LocalDateTime类型的日期时间是没包含时区,所以它不能对应到时间轴

2022-01-07 21:21:11 1659 2

原创 Log4j漏洞分析

Log4j漏洞源码分析这几天Log4j的问题消息满天飞,今天我们就一起来看看从源码角度看看这个漏洞是如何产生的。大家都知道这次问题主要是由于Log4j中提供的jndi的功能。具体涉及到的入口类是log4j-core-xxx.jar中的org.apache.logging.log4j.core.lookup.StrSubstitutor这个类。原因是Log4j提供了Lookups的能力(关于Lookups可以点这里去看官方文档的介绍),简单来说就是变量替换的能力。在Log4j将要输出的日

2021-12-14 23:37:27 21939 3

原创 编译openjdk

编译openjdk1. 下载openjdk源码openjdk的官网是OpenJDK (java.net)在网站左侧就能看到它的源码位置的链接从图上可以看到,它的源码在两个位置有托管,Mercurial、GitHub这两个网站都有。我们点击GitHub,进去到它GitHub的位置。上图第一个就是openjdk的仓库地址了 。​ 选择HTTPS,复制地址。下一步,登录码云(没账号的可以先创建一个),在边上有个+的图标,点开就可以看到二级菜单有个从GitHub/GitLab导入仓库。上面

2021-11-27 21:44:10 7177 2

原创 Docker入门

文章目录1. Docker简介2. Docker架构3. Docker的安装3.1 Linux安装3.1.1 下面以CentOS为例,主要下面几步:3.2 Mac和Windows安装4. Docker操作4.1 下载镜像4.2 启动容器4.3 其他常用命令4.4 推送远程仓库1. Docker简介Docker的目标“Build, Ship and Run Any App,Anywhere”。通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(

2021-11-24 22:47:56 3759

原创 Springboot 加载配置文件源码分析

Springboot 加载配置文件源码分析本文的分析是基于springboot 2.2.0.RELEASE。本篇文章的相关源码位置:https://github.com/wbo112/blogdemo/tree/main/springbootdemo/springboot-profilesspringboot加载配置文件如application.yml是通过org.springframework.boot.context.config.ConfigFileApplicationListener这个

2021-11-21 14:25:45 811

原创 ThreadPoolExecutor源码

ThreadPoolExecutor是线程池的框架。虽然好多大佬都分析过了,为了加深理解,今天我也来分析一下ThreadPoolExecutor的源码ThreadPoolExecutor这个类上面的英文注释已经很详细了,一看就能明白。这部分就直接把对应的英文翻译成中文。下面这一段中文就全部是类上面的英文的翻译一个 ExecutorService 使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。线程池解决两个不同的问题:由于减少了每个任务的调用开销,它们通常在

2021-11-13 14:32:05 1038

原创 springboot 事务执行全流程分析

springboot 事务执行全流程分析文章目录springboot 事务执行全流程分析1. 事务方法执行前的准备工作2. 业务代码的调用3. 事务方法执行后处理4. 业务代码在事务和非事务中的区别5. 总结在上篇文章springboot 事务创建流程源码分析中主要讲了springboot事务创建的过程,本次我们来看看事务具体执行的过程。这里关于几个名称提前先达成一致:com.springboot.transaction.service.impl.UserServiceImpl这个类我们称它

2021-10-24 12:10:00 588

原创 springboot事务的传播行为和隔离级别

springboot事务的传播行为和隔离级别在springboot中事务的传播行为和隔离级别都是在TransactionDefinition这个接口中定义的传播行为定义了7种,分别用0-6来表示int PROPAGATION_REQUIRED = 0;//如果当前上下文中的已经存在一个事务,就使用当前的事务;如果当前没有事务就创建一个新的事务int PROPAGATION_SUPPORTS = 1;//如果当前上下文中的已经存在一个事务,就使用当前的事务;如果当前没有事务也不会开启一个新事务,以

2021-10-19 23:53:33 1116

原创 802.11无线网络标准

802.11无线网络标准的链路特性一直以来对802.11各种标准比较模糊,今天看到《计算机网络-自顶向下》第七版中有个图很通俗易懂的对它们做了描述。

2021-09-29 21:39:16 132

原创 springboot 事务创建流程源码分析

springboot 事务创建流程源码分析文章目录springboot 事务创建流程源码分析1. 自动加载配置2. InfrastructureAdvisorAutoProxyCreator类3.BeanFactoryTransactionAttributeSourceAdvisor类4.判断bean对象是否需要进行事务增强处理5.生成对应代理类6. 最终生成的代理类class反编译springboot中事务是相对重要的一个部分。也是aop的一个使用场景。我们今天就来一起从源码的角度分析下,事务的整个创

2021-09-18 11:33:31 628

原创 java agent简介

java agent简介主要就是两种,一种的方法是premain,一种是agentmain。这两种的区别是:premain是在jvm启动的时候类加载到虚拟机之前执行的agentmain是可以在jvm启动后类已经加载到jvm中了,才去转换类。这种方式会转换会有一些限制,比如不能增加或移除字段。具体的做法,两者的实际做法是差不多的:premain定义个静态方法public static void premain(String args, Instrumentation inst),

2021-09-05 22:21:49 1604

原创 ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别

ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,可以作为线程池来使用,同时实现了ScheduledExecutorService接口,来执行一些周期性的任务。ScheduledExecutorService一般常用的方法主要就4个 public ScheduledFuture<?> sc

2021-08-29 22:13:19 602

原创 《深入理解java虚拟机》第3版笔记12

《深入理解java虚拟机》第3版笔记第12章 Java内存模型与线程主内存与工作内存Java内存模型规定了所有的变量都存储在主内存(Main Memory)中。每条线程 还有自己的工作内存(Working Memory),线程的工作内存中保 存了被该线程使用的变量的主内存副本,线程对变量的所有操作(读取、赋值等)都必须在工作内 存中进行,而不能直接读写主内存中的数据。不同的线程之间也无法直接访问对方工作内存中的变 量,线程间变量值的传递均需要通过主内存来完成。内存间交互操作Java

2021-08-28 22:58:48 114

原创 《深入理解java虚拟机》第3版笔记3

《深入理解java虚拟机》第3版笔记第3章 垃圾收集器与内存分配策略可达性分析算法在Java技术体系里面,固定可作为GC Roots的对象包括以下几种:在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的 参数、局部变量、临时变量等。在方法区中类静态属性引用的对象,譬如Java类的引用类型静态变量。在方法区中常量引用的对象,譬如字符串常量池(String Table)里的引用。在本地方法栈中JNI(即通常所说的Native方法)引用的对象

2021-08-28 22:55:05 140

原创 java JNI介绍

java JNI介绍文章目录java JNI介绍1、 Java调用C++代码2、C++代码调用java代码JNI是Java Native Interface的全称。oracle文档中是这样描述的The JNI is a native programming interface. It allows Java code that runs inside a Java Virtual Machine (VM) to interoperate with applications and libraries

2021-08-22 12:24:07 335

jdk-11.0.10_linux-x64_bin.zip

racle官方下载,不改名字上传不了。加了个空文件一起压缩成了zip,解压后jdk-11.0.10_linux-x64_bin.tar.gz就是oracle官方下载的

2021-03-21

jdk-16_linux-x64_bin.zip

oracle官方下载,不改名字上传不了。加了个空文件一起压缩成了zip,解压后jdk-16_linux-x64_bin.tar.gz就是oracle官方下载的

2021-03-21

jdk-11.0.10_windows-x64_bin.zip

jdk-11.0.10_windows-x64_bin.zip

2021-03-21

jdk-16_windows-x64_bin.zip

oracle官方下载

2021-03-21

jdk-8u281-windows-x64.zip

jdk-8u281-windows-x64

2021-03-21

Myeclipse操作图解

来自传智博客的,很详细的Myeclipse操作图解

2013-06-02

韩顺平2011最细servlet笔记2

韩顺平老师讲的Servlet笔记。分为两部分上传,这是第二部分。

2012-06-16

韩顺平2011最细servlet笔记1

最近看了韩顺平老师讲的servlet。觉的比较好。就在网上找了笔记。和大家分享下。这个笔记分为两部分,这是第一部分

2012-06-16

空空如也

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

TA关注的人

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