自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (7)
  • 收藏
  • 关注

原创 Kubernetes(K8s)浅谈

Kubernetes是一款容器编排工具,“容器编排”指的是一种基于容器技术的分布式架构方案,了解过docker可能对“容器”一词并不陌生,但“编排”又是何意?为什么需要容器编排?Kubernetes又有什么特殊之处?带着这些问题进入本文吧。

2021-11-26 08:20:02 1087

原创 打包docker镜像推送到远程服务器并部署到k8s

前提条件:1、docker服务器已开启远程访问,参考 《远程docker服务器携带证书连接》。2、服务器上已经搭建好k8s集群,本文是k8s单点集群用于测试。在之前的文章中我们已经通过idea的docker插件测试了远程docker服务器已经能够正常访问,虽然利用这个docker插件也可以完成docker镜像的打包及推送,但本文我们将换一种方式,使用maven的docker-maven-plugin插件完成docker镜像的打包,以及推送到远程docker服务器。1、Dockerfile.

2021-11-02 20:28:38 24088 19

原创 远程docker服务器携带证书连接

一切的前提条件是远程服务器已经安装好了docker,并且docker已经在服务器上正常运行,接下来完成idea携带证书远程连接docker的步骤。1、用脚本给docker进行tls加密下面是从 加密脚本 大佬处得来的加密脚本,接下来用这个脚本完成加密证书文件的生成。在/root目录下创建加密脚本:vi create_verify.sh。 注意脚本中“x.x.x.x”处填入自己服务器的公网ip。#!/bin/bashmk...

2021-11-02 20:28:24 929 1

原创 Redis分布式锁原理(二)——Redisson分布式锁源码浅析

前面分析了用redis实现一个分布式锁需要注意的问题,并用redis手写了一个简易的分布式锁,但在实际开发中更多的是使用已经封装好的框架——Redisson,它是在redis基础之上封装的一款强大的分布式锁框架,它是多种锁的集合,包括可重入锁、公平锁、信号量等,当我们在分布式场景下不能使用本地锁时,只需要去Redisson调对应的锁即可。本篇就以可重入锁为例来浅析Redisson是如何实现分布式锁的。首先来用Redisson优化上一章中结尾处的代码,如下: ...

2021-08-09 20:08:51 881 2

原创 Redis分布式锁原理(一)——redis分布式锁需要注意的问题

1、什么场景会用到分布式锁(用本地锁举例,分布式场景在并发情况下存在的问题)2、redis为什么可以实现分布式锁3、假设一分布式场景,运用redis分布式锁并剖析各种坑结合视频157、158

2021-08-09 08:39:59 2198 1

原创 MySQL是如何实现读已提交和可重复读的——MVCC原理

先来看一下MySQL的事务隔离级别: 隔离级别 脏读 不可重复读 幻读 读未提交 有 有 有 读已提交 无 有 有 可重复读 无 无 有 串行化

2021-05-22 12:26:13 5347 4

原创 Kafka + ELK实现日志采集

Kafka是一个高吞吐量的分布式发布订阅消息系统,它的应用场景很多,如日志采集、消息系统、运营指标等。在日志采集的场景中,我们项目的重要服务可能会通过集群进行部署,每个服务有它自己的日志记录产生,这些日志都是散落在它们自己的服务器上,这种日志记录不集中的形式给我们分析日志的时候带来了很大的不便,因此我们需要通过日志采集将这些散落在各个服务器上的日志记录集中起来,便于我们在解决问题时进行日志分析和查看。本文以Spring Boot + Kafka + ELK的方式实现日志采集,在此之前先简单介绍一下..

2021-02-01 09:06:23 2312

原创 Kafka生产者源码解析(三)——Sender

1、Sender线程何时被创建的2、Sender什么时候被唤醒3、Run方法做了什么

2021-01-22 21:17:17 669 1

原创 Kafka生产者源码解析(二)——RecordAccumulator

在上一篇中介绍了KafkaProducer的构造方法及send核心方法,其中在send方法中涉及到将消息追加入RecordAccumulator消息累加器的过程,本篇重点将围绕RecordAccumulator来分析这一过程。对于Spring-Kafka生产者源码将分成三个部分进行分析:KafkaProducer分析、RecordAccumulator分析、Sender分析。本篇是第二部分RecordAccumulator分析。RecordAccumulator可以理解为主线程与Sender线..

2021-01-22 21:00:07 756

原创 Kafka生产者源码解析(一)——KafkaProducer

版本:Spring-Kafka2.3.3一、源码探析入口 //发送消息,回调结果 ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send(topic, obj);

2021-01-22 20:55:06 1110

原创 ThreadPoolTaskScheduler实现定时任务的动态管理(启停、增加、删除、周期修改)

之前接触过基于SchedulingConfigurer接口的定时任务,发现其在动态管理方面并不是很方便。本文的内容是利用ThreadPoolTaskScheduler手写调度中心,实现定时任务的动态管理,但它也有一个缺点就是不支持分布式任务调度。其实Java中实现定时任务的方式很多,现在的Quartz和xxl-job框架在定时任务方面其实已经做的非常优秀了,甚至支持分布式。但秉持学习要有一个过程的理念,所以还是通过一个简单的实践来学习一下ThreadPoolTaskScheduler的使用。一..

2020-12-30 10:55:24 2254 3

原创 Redis 的持久化机制和AOF文件重写原理

Redis与其他的key-value缓存相比有一个很大的不同点,redis支持数据的持久化,通过将内存中的数据持久化到磁盘中,下次重启直接加载继续使用,这避免了系统断电宕机导致数据丢失。Redis的持久化方式有两种:RDB和AOF。一、RDB机制RDB持久化方式是指在一定时间间隔内将内存中的数据以快照的形式写入到二进制文件中,文件名为dump.rdb,这是redis默认的持久化方式。“快照”就好比给数据进行拍照,只记录了某一时刻内存中的数据。redis提供了三种方式来触发RDB机制:sav..

2020-12-09 22:42:06 471 1

原创 Spring Boot运行流程浅析

前面我们对SpringApplication对象的构造流程进行了浅析,SpringApplication对象构造完成后会调用其run方法进行Spring Boot的启动和运行,本文开始重点分析Spring Boot是如何通过run方法完成整个项目的启动和运行的。一、run方法总览首先回顾一下本文要剖析的run方法是在哪里出现的(并非启动类中的run方法):在Spring Boot构造流程浅析中我们跟进启动类中的run方法后发现SpringApplication.run(xxx.class)主要..

2020-11-25 22:22:54 1074 2

原创 Spring Boot构造流程浅析

什么是Spring Boot的构造流程?即run方法的初始化类SpringApplication的实例化过程。我们都知道Spring Boot项目的启动非常简单,只需要运行入口类的main方法即可,如下:@SpringBootApplicationpublic class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.cl.

2020-11-11 23:30:42 1063 2

原创 Synchronized的实现原理以及优化

在多线程学习阶段,我们经常会使用synchronized来解决线程间的同步问题,很少关注过它的实现原理,但在并发编程的学习中,我们需要对synchronized的实现原理以及优化有更多的了解。一、利用sychronized实现同步的三种方式对于普通同步方法,锁是当前实例对象this。 对于静态同步方法,锁是当前类的Class对象。 对于同步方法块,锁是Synchonized括号里配置的对象。二、synchronized实现原理先来看下面一段代码:public class Sync.

2020-11-09 23:51:30 369

原创 ReentrantLock中lock()和unlock()源码分析

并发内容中少不了ReentrantLock,它是面试中的高频考点。为了让自己理解ReentrantLock的工作原理,总结网上各大优秀博主笔记后写此文章,以便日后在此基础上不断学习。ReentrantLock是可重入锁,主要基于CAS+AQS队列来实现,所以在此之前需要对CAS和AQS有基本的了解。ReentrantLock支持公平锁和非公平锁两种实现方式,我们下面主要利用非公平锁来分析lock()和unlock()执行过程,在最后会对公平锁和非公平锁两者不同的地方做个简单的比较。先来看下Ree.

2020-10-31 16:09:05 234

原创 Spring Boot整合Shiro实现用户身份认证和权限认证

至于Shiro的概念和功能就不再过多赘述,这些在网上都能查到。我们直接进入整合Shiro的正题。一、项目结构二、数据库表准备准备五张表:用户表(user_tb)、角色表(role_tb)、权限表(permissions_tb)、用户角色表(user_role)、角色权限表(role_permissions)。我们往表中添加三个用户信息,两个用户角色admin和user,两种权限read和edit。其中第一个用户分配admin角色,分配read、edit权限。第二个用户分配user.

2020-08-15 14:28:31 1185

原创 Spring Boot自动配置原理浅析

一、什么是Spring Boot的自动配置?Spring Boot的最大的特点就是简化了各种xml配置内容,还记得曾经使用SSM框架时我们在spring-mybatis.xml配置了多少内容吗?数据源、连接池、会话工厂、事务管理···,而现在Spring Boot告诉你这些都不需要了,一切交给它的自动配置吧!所以现在能大概明白什么是Spring Boot的自动配置了吗?简单来说就是用注解来对一些常规的配置做默认配置,简化xml配置内容,使你的项目能够快速运行。是否对Spring Boot自动配置

2020-08-15 11:05:48 15293 11

原创 String、StringBuffer、StringBuilder详解

一、String、StringBuffer、StringBuilder的区别String是字符串常量(不可变),final修饰,不可被继承,线程安全。 StringBuffer是字符串变量(可变),final修饰,不可被继承,线程安全。 StringBuilder是字符串变量(可变),final修饰,不可被继承,非线程安全。字符串追加速度的比较:StringBuilder>StringBuffer>String二、源码public final class String imp

2020-07-26 11:39:13 514

原创 Spring Boot+Mybatis+thymeleaf整合

一、数据库表准备创建一个"demo"数据库,并在其中创建一张user表。我们接下来将整合项目并取出数据库user表中所有数据。/*Navicat MySQL Data TransferSource Server : dongSource Server Version : 50642Source Host : localhost:3306Source Database : demoTarget Server Type : MYSQ

2020-06-10 15:58:26 591

原创 Java多线程详解

一、程序、进程、线程程序(program):是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程,有它自身的生命周期。 线程(thread):进程可进一步细化为线程,是一个程序内部的一条执行路径。一个进程可以包含多个线程。二、并行和并发的概念并行:是指同一时刻多个任务...

2020-04-22 18:42:26 679 1

原创 Java集合容器详解

一、Java集合框架概述Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的 关联数组。Java 集合可分为 Collection 和 Map 两种体系。1、Collection接口:单列数据,定义了存取一组对象的方法的集合。List:元素有序、可重复的集合。 Set:元素无序、不可重复的集合。2、Map接口:双列数据,保存具有映射关系“key-val...

2020-04-22 18:42:09 295

原创 Spring Boot框架搭建

目录一、SpringBoot概述二、SpringBoot的优点三、SpringBoot框架搭建一、SpringBoot概述Spring Boot 是 Spring 框架的一个新的子项目,用于创建 Spring 4.0 项目。它可以自动配置 Spring 的各种组件,并不依赖代码生成和 XML 配置文件。Spring Boot 也提供了对于常见场景的推荐组件配置。Sprin...

2020-03-28 20:06:44 959

原创 SSM框架整合(IDEA版+Maven)

目录一、Maven创建Web工程二、数据库准备三、配置pom.xml文件,添加Maven依赖四、配置jdbc.properties五、配置log4j.properties六、配置web.xml七、配置spring-mybatis.xml八、配置spring-mvc.xml九、配置generatorConfig.xml十、逆向生成Model实体以及映射文件...

2020-03-22 19:22:01 771 1

原创 JavaEE框架学习笔记——SpringMVC篇

一、SpringMVC的注解开发 配置DispatchServlet-Servlet.xml <!-- 1.配置注解扫描位置 --> <context:component-scanbase-package="com.gyf.backoffice.web.controller"/> <!-- 2. 配置处理器映...

2020-03-22 19:21:23 425

原创 SpringMVC框架搭建

一、SpringMVC简介Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。Spring MVC主要由DispatcherServlet...

2020-03-22 19:20:33 171

原创 JavaEE框架学习笔记——Mybatis篇

一、MyBatis的Dao编写【mapper代理方式实现】Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可。Mybatis会自动的为mapper接口生成动态代理实现类。不过要实现mapper代理的开发方式,需要遵循一些开发规范。开发规范 1、mapper接口的全限定名要和mapper映射文件的namespace的值相同。 2...

2020-03-22 19:19:53 284

原创 MyBatis框架搭建

一、导包 二、添加log4j.propertiesMybatis使用的日志包是log4j的,所以需要添加log4j.properties。在src下创建log4j.properties如下。# Global logging configurationlog4j.rootLogger=DEBUG, stdout# C...

2020-03-22 19:18:33 149

原创 JavaEE框架学习笔记——Spring篇

1、IoC控制反转的概念Inverse of Control反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理,简单说,就是创建对象控制权被反转到了Spring框架。...

2020-03-22 19:15:16 345

原创 Spring框架搭建

目录一、Spring介绍二、Spring优点三、Spring的核心jar包四、Spring框架搭建一、Spring介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。二、Spring优点 方便解耦,简化开发:Spring就是一个大工厂,专门负责生成Bean,可以将所有对象创建和依赖关系维护由Spring管理。 AOP编程...

2020-03-22 19:12:26 276

原创 解决SSM项目下静态资源(img、js、css)无法引用的问题

先看一下资源目录结构建立一个与WEB-INF同级别的resources文件,里面存放css、js、img资源文件。1、web.xml配置在web.xml中找到以下配置项<servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应s...

2019-05-02 16:32:55 3954 3

原创 JavaWeb学习笔记11——MVC新闻网站开发

目录一、项目结构描述二、截图三、关键代码四、总结一、项目结构描述GoPage.java,这是项目的入口,它的最终目的是打开一个页面,新闻首页或者管理员登陆后的后台管理页面。它的任务是获取所有新闻并存入链表,并将新闻链表存入session,方便其他页面获取。获取flag参数,如果获取到了flag=“showlist”,则说明是管理员登录,将新闻数据送入后台管理页面,否则是...

2019-04-27 19:49:48 1650 2

原创 JavaWeb学习笔记10——利用Filter避免未经登录进入主页

目录一、上一节遗留问题及解决方法二、关键代码三、结果一、上一节遗留问题及解决方法在上一节中我们已经完成了两个页面,即登录页面和博客主页,但我们发现,在浏览器中直接用博客主页的url也能直接进入登陆后的页面,这并不是我们想要的结果。因此本节重点解决这一问题。解决方法也很简单,利用Filter就可解决这一问题,在LoginServlet中如果我们验证通过了用户的登录,那我们可以...

2019-04-24 09:22:18 409 1

原创 JavaWeb学习笔记9——使用过滤器解决乱码

目录一、过滤器概述二、利用过滤器解决乱码问题三、截图四、总结一、过滤器概述Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改。Filter提出了滤镜链的概念,一个FilterChain包含多个Filter。客户端请求request在到达Servlet之前会经过所有Filter,而服务器响应response在从Servlet抵...

2019-04-17 19:33:05 261

原创 JavaWeb学习笔记8——用Session统计在线人数

目录一、什么是Session?二、代码三、截图四、总结一、什么是Session?Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session是保存在服务器上的。客户端浏览器访问服务器时,服务器把客户信息以某种形式记录在服务器上,这就是Session.。当客户端浏览器再次访问时只需要从Session中查找该客户额度状态就行了。二、代...

2019-04-15 17:42:53 1802

原创 JavaWeb学习笔记2——servlet和jsp间的数据传递

一、jsp传值给servlet利用超链接的方式,如:href='XXXServlet?id=xxx'。 form表单提交,当点击submit时,action="XXXServlet" method="get/post" 利用AJAX,url=“XXXServlet”。此方法可以从servlet中获得返回结果,根据返回的结果达到改变局部页面的效果。以上三种方式在servlet中的取值方...

2019-04-02 09:32:07 493

原创 web项目部署在云服务器上并绑定域名访问

目录一、购买服务器二、购买域名三、服务器环境搭建四、将web项目部署在云服务器上一、购买服务器第一步我们需要购买一个属于自己的服务器,网上有很多服务器可供我们选择,百度云,阿里云,腾讯云等等,第一次购买都会非常便宜,如果是学生的话还可以用学生证进行优惠购买,我是用学生证购买的百度云服务器,链接:启航校园计划服务器的系统我选择的是:Windows Server / ...

2019-03-01 18:59:13 9296 7

原创 实验证明SQL SERVER中的NULL值是否占用存储空间。

本学期有一门数据库管理的课程,老师最近在教学平台上发布了一道作业——SQL SERVER中的NULL值是否占用存储空间?该作业要求学生用实验证明自己的结论。现在把整个实验证明过程记录如下。 目录一、过程二、分析一、过程1.首先创建一个数据库为Test_hedong,并在该数据库下创建两个表,一个表为fixed_hedong,其中包括三个字段,允许为NULL值的字段为定长...

2018-12-13 17:40:03 3101 1

原创 JavaWeb学习笔记7——JDBC连接MySql进行增删改查并分页显示

数据库的增、删、改、查是非常重要的操作,只要程序是关于数据库的操作,无论程序大小,归根结底都是这4种操作的使用。连接MySql数据库的过程:1、注册驱动DriverManager.registerDriver(new com.mysql.jdbc.Driver());2、获取数据库连接Connection conn=DriverManager.getConnectio...

2018-11-18 10:01:54 1084 1

原创 JavaWeb学习笔记6——事务实例:转账

数据库是具有事务性的,这是数据库与其他存储方式的区别之一。那么什么是事务性呢?简单来说一个事务内会执行多个操作,这些操作要么全部执行成功,要么全部执行失败。就比如说转账:A向B转账200元是一个事务,但他包含两个操作,一个是A减少200元,另一个是B增加200元,这两个操作必须都操作成功才能说这个事务执行成功,否则事务执行失败。事务会有两个结果,提交(Commit)与回滚(Rollback...

2018-11-10 21:22:19 856

ShiroDemo.zip

SpringBoot整合Shiro案例,实现用户登录认证、权限认证功能。代码中包含详细注释。适合初学Shiro者。

2020-08-17

PhotoEdit.rar

一个简易的图片编辑器,上传一张图片,用鼠标划定区域,可生成圆形旋转图片。并可对上传的图片进行取反、灰度化、锐化、马赛克、雾化、浮雕等处理。最后可对处理结果进行保存。

2019-06-06

简易画板MyPPT可实现简易图形绘制

一个简易画板,可画矩形、椭圆、三角形、自由曲线、多边形、立方体。可调整线框颜色和填充颜色。可调整线框粗细和线框类型。

2019-06-06

MyMusicBox(c#音乐播放器)

由c#编写的音乐播放器,包含常用功能,比如歌词滚动显示,歌曲列表展示,上一首、下一首。单曲播放、循环播放、顺序播放,有进度条可调整播放进度等等

2018-10-12

IPSeeker.jar 用于ip查询

IPSeeker\.classpath IPSeeker\.project IPSeeker\bin\com\lumaqq\IPEntry.class IPSeeker\bin\com\lumaqq\IPSeeker$IPLocation.class IPSeeker\bin\com\lumaqq\IPSeeker.class IPSeeker\bin\com\lumaqq\test\Test.class IPSeeker\bin\com\lumaqq\test IPSeeker\bin\com\lumaqq\Utils.class IPSeeker\bin\com\lumaqq IPSeeker\bin\com IPSeeker\bin IPSeeker\src\com\lumaqq\IPEntry.java IPSeeker\src\com\lumaqq\IPSeeker.java IPSeeker\src\com\lumaqq\test\Test.java IPSeeker\src\com\lumaqq\test IPSeeker\src\com\lumaqq\Utils.java IPSeeker\src\com\lumaqq IPSeeker\src\com IPSeeker\src\QQWry.Dat IPSeeker\src IPSeeker IPSeeker\readme.txt

2018-09-13

网络爬虫jar包

该压缩包中包含众多java网络爬虫需要用到的jar包,如:httpclient-4.5.5、jsoup-1.8.1、fastjson-1.2.7、commons-httpclient-3.1、json-lib-2.3、httpcore-4.4.9、fastjson-1.2.7等等

2018-09-09

commons-fileupload-1.3.3和commons-io-2.6

Commons Fileupload是Apache commons众多开源组件中的一员,这种类库用于解析二进制数据流,一些框架如Struts里集成了Apache CommonFileupload类库来实现文件上传。

2018-09-09

空空如也

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

TA关注的人

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