自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

等一轮明月的博客

JAVA小白的进阶之路

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

原创 并发编程(一)

关于java中线程的一些基础理解1:并发编程的基础:为什么是使用多线程:一个线程在一个时刻只能运行在一个处理器核心上,随着处理器核心的增多,开启多个线程能够提高处理器核心的利用率。线程的优先级:java进程中,通过一个整形成员变量priority来控制优先级,范围1-10,创建线程时可以通过setPriority(int)来设置优先级,默认是5,优先级高的分配的时间片要多于优先级低的线程。设置优先级,对于频繁阻塞的线程需要设置较高优先级,偏重计算(需要cpu时间久偏运算)则设置较低优先级,

2021-07-26 17:11:50 115

原创 jar包防反编译记录

java代码防反编译处理起因:为了防止应用jar包被反编译,泄漏代码。解决方案代码混淆:在原代码层面根据混淆规则混淆,反编译后理解困难看不下去。应用包加密:对已经打好的jar包进行加密,通过对jar包处理导致不解密的情况下反编译jar包后看不到字节码。具体分析代码混淆:本文采用ProGuard插件(网上大部分都是这种)ProGuard 是可以对 Java 类文件进行压缩、优化、混淆和预验证的工具。使用:在pom文件中插入如下配置,调整自己包名可以直接使用。将混淆后的clas

2021-07-23 16:57:27 1041

原创 k8s入门快速了解

k8s安装kubeadmkubelet:运行在cluster所有节点上,负责启动POD和容器kubeadm:用于初始化clusterkubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件k8s核心:ControllerController是在集群上管理和运行容器的对象,Controller是实际存在的,Pod是虚拟机的Pod和Controller的关系Pod是通过Controller实现应用的运维,比如弹性伸.

2021-07-20 18:14:53 204

转载 5种网络IO模型

linux的五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。其中阻塞IO、非阻塞IO、多路复用IO、信号驱动IO都属于同步IO。同步IO和异步IO同步IO:应用程序主动向内核查询是否有可用数据,如果有自己负责把数据从内核copy到用户空间。异步IO:应用程序向内核发起读数据请求需要:(1)告诉内核数据存放位置(2)注册回调函数,当内核完成数据copy后调用回调通知应用程序取数据。同步IO/异步IO最大区别:同步IO数据从内核空间到用户空间的copy动作是由应用程.

2021-04-23 17:48:39 287

原创 工厂模式记录

类之间关系依赖:要是在类中用到了对方,那么他们之间就存在依赖关系泛化:特殊的依赖,就是继承实现:实现关系实际上就是 A 类实现 B 接口,他是依赖关系的特例关联:有导向性的依赖关系。单向/双向聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示:组合关系:也

2021-04-23 15:09:59 62

原创 单例模式记录

本文为学习记录####单例模式:定义:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法)。举例:比如 Hibernate 的 SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系

2021-04-19 14:23:30 59

原创 Mock接口controller单元测试记录

Mock接口controller单元测试记录:一:创建基础BaseJunit/** * 基础测试类 * * @author xx */@RunWith(SpringRunner.class)@SpringBootTest(classes = xxxx.class)@WebAppConfiguration@Transactional //打开的话测试之后数据可自动回滚public class BaseJunit { @Autowired WebApplicationCo

2021-04-15 17:27:01 310

原创 CountdownLatch和CyclicBarrier

CountdownLatch和CyclicBarrierCountDownLatch:具有计数器的功能,等待其他线程执行完毕,主线程在继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行CyclicBarrier:所有线程在其他线程没有准备好之前都在被阻塞中,等到所有线程都准备好了才继续执行。区别:CountDownLatch: 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。CyclicBrrier: N个线程相互等待,任何一个

2021-04-07 09:53:16 105 1

转载 Redis学习了解(二)

Redis持久化RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可

2021-04-06 15:39:03 46

原创 Redis学习了解(一)

Reids:Redis:REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行 并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash

2021-04-06 14:35:55 65

原创 NOSQL数据库

Nosql:NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,泛指非关系型的数据库,为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。传统RDBMS VS NOSQLRDBMS:结构化数据,数据和关系都存储在单独的表中,严格的一致性,基础事务。NOSQL:存储方式多样,键-值对存储,列存储,文档存储,图形数据库,最终一致性,而非ACID属性,CAP定理NOSQL数据库分类:KV:Redis文档型数据库:MongoDB列存

2021-04-06 14:01:32 127

转载 Mysql优化使用LOAD DATA INFILE

如今mysql普遍的插入方式有如下两种: 1、循环单条插入 <insert id="insert" parameterType="com.chargeProject.consumer.entity.Test"> insert into test (id, nums, name) values (#{id,jdbcType=INTEGER}, #{nums,jdbcType=INTEG...

2021-04-06 11:51:01 632 1

原创 volatile关键字分析

volatile:volatile通常被比喻成”轻量级的synchronized特性:可见性,有序性。1:可见性:可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值原理:如果一个变量被volatile所修饰的话,在每次数据变化之后,其值都会被强制刷入主存。而其他处理器的缓存由于遵守了缓存一致性协议,也会把这个变量的值从主存加载到自己的缓存中。这就保证了一个volatile在并发编程中,其值在多个缓存中是可见的。有序性:volatile禁止指令重排没,保

2021-03-19 11:33:38 68

原创 Xxl-job:调度中心分析

Xxl-job:调度中心分析:一:根据设置的时间自动触发:通过配置类XxlJobAdminConfig加载完属性文件后后初始化了一堆线程池(任务触发,任务注册,失败监控,回调处理,报表处理,按照时间任务处理),并启用 public class XxlJobScheduler {private static final Logger logger = LoggerFactory.getLogger(XxlJobScheduler.class);public void init() throws

2021-03-17 17:52:34 387

原创 xxl-job 执行器源码分析:

xxl-job 执行器分析:一: 启动配置初始化:启动的时候,通过配置类XxlJobConfig ,构造完单例对象后通过XxlJobSpringExecutor类的afterSingletonsInstantiated进行初始化操作。@Overridepublic void afterSingletonsInstantiated() { // init JobHandler Repository /*initJobHandlerRepository(applicationConte

2021-03-17 17:45:12 397

原创 跨域失效?

springboot后端跨域addCorsMappings与拦截器冲突导致跨域失效失效原因:请求处理的顺序问题,请求打到后端时,是先被拦截器拦截处理的,也就是我们配置的addCrosMappings并没有起到作用,请求直接被拦截器拦截了,而由于此时请求还没有配置跨域信息,所以就出现了跨域问题//预检请求处理时是预检请求则生成个预检执行器PreFlightHandler,//否则生成一个跨域拦截器加入拦截器链中,最终再doDispatch函数处执行,而因为拦截器是顺序执行的,如果前面执行失败异常返

2021-03-05 17:46:52 398

原创 dependencyManagement与dependencies区别

maven中dependencyManagement与dependencies区别说明:dependencyManagement一般用在maven构建的聚合项目的父项目中,只是用来声明和锁定版本,子项目用的只要在dependencie中填写和即可。举例:父pom中:<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.commons</group

2020-12-03 14:52:38 442

原创 nginx复盘记录

nginx复盘笔记配置解析:​ 说明:配置文件中的内容包含三部分内容;全局块:配置服务器整体运行的配置指令比如 worker_processes 1;处理并发数的配置。events 块:影响 Nginx 服务器与用户的网络连接比如worker_connections 1024; 支持的最大连接数为 1024;还包含两部分:http 全局块和server 块一:反向代理 server { listen 81; server_name localh

2020-12-02 18:46:01 131

原创 枚举和常量的选用

一:枚举反编译后介绍:原码:/* Color.java */public enum Color { RED, GREEN, BLUE;}为了方便理解,加工反编译后。public final class Color extends Enum<Color> { public static final Color RED; public static final Color GREEN; public static final Color BLUE;

2020-11-06 11:25:34 1494

原创 测试案例中@SpringBootTest与@RunWith**的含义

背景:平常都是写功能,写业务代码忽略了对测试案例的理解,借此机会梳理记录一下测试案例中常用到的的几个注解。一:@SpringBootTest作用是加载ApplicationContext,启动spring容器。使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找@SpringBootApplication@Sprin

2020-11-05 14:32:04 3732 2

原创 springboot+mybatis-plus脚手架记录-代码生成(二)

回顾:上一篇文章中项目主体结构包已创建成功。**本文主要实现:mybatis-plus-generator +velocity 模版引擎 进行代码自动生成,生成 controller、service、mapper、serviceImpl相关代码,并且继承预定义增删改查操作的接口BaseMapper与IService。**一:添加mybatis配置文件/* * @Author: shen_antonio * @Date: 2020-05-20 20:27:27 * @LastEditTim

2020-11-03 17:56:24 176

原创 springboot+mybatis-plus脚手架记录-结构搭建(一)

一:使用idea创建springboot项目1:通过spring Initializr快速创建项目2:填写项目信息,group为包名,artifcast为项目名(后面可以改)3:选择项目启动依赖(如果不确定或没有可以之后在pom文件中自行添加,本文操作略过这一步。4:选择项目路径5:创建成功二:添加项目依赖 <dependencies> <!--SpringBoot通用依赖模块--> <dependency>

2020-11-03 17:17:13 356 1

原创 java基础之集合系列(一)

1:什么是集合。集合就是一个放数据的容器,准确的说是放数据对象引用的容器,主要存放于java.util包中。2:集合框架整体架构概图。Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列上图未展示),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。3:collection接口Collection作用就是规定了一

2020-11-03 14:53:54 114

原创 NIO复盘记录(一)

简介:Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。一:与传统IO的区别传统IO的数据传输都是在流中进行传输的(可以想象成水流在管道中传输),单向传输,而NIO是在缓冲区中(可以想象成火车(缓冲区)在铁路(通道)上跑,数据就是火车中的货物)可以双向传输。二:基本概念Ja

2020-11-03 11:40:04 359

原创 linux内核与Linux发行版本区别

linux内核:Linux内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。linux发行版本:Linux发行版就是由Linux内核与各种常用软件的集合产品,如今全球大约有数百款的Linux发行版本,根据不同标准可以把Linux发行版本进行不同性质的分类,比如一种分类方式是根据它是社区维护还是商业公司维护,Linux发行版主要有三个分支:Debian、Slackware、Redhat。常用命令:1:查看内核信息uname -a2:

2020-11-02 17:28:26 2832

转载 Antlr4学习记录(二)

antlr4操作使用一:操作环境环境:java8+maven+ideaantlr4:使用idea搜索然后下载插件*二:定义.g4文件,编写语法定义文件。关键字:grammargrammar是规则文件的头,需要与文件名保持一致。当antlr生成词法语法解析的规则代码时,类名就是根据grammar的名字来的。rulerule是antlr生成词法语法解析的基础。包括了lexer与parser,每条规则都是key:value的形式,以分号结尾。lexer首字母大写,lexer小写。示例:gra

2020-11-02 16:05:32 347

原创 Antlr4学习记录(一)

一:ANTLR的介绍简介:Antlr4是ANother Tool for LanguageRecognition即另一个语言识别工具,官方介绍为Antlr4是一款强大的解析器生成工具,可用来读取、处理、执行和翻译结构化文本或二进制文件。Antlr4生成的解析器包含了词法分析程序和语法分析程序(就是编译原理课程中的词法分析和语法分析)。词法分析器 (Lexer) :词法分析是指在计算机科学中,将字符序列(输入信息)转换为单词(Token)的过程。执行词法分析的程序便称为词法分析器。词法分析器(L

2020-11-02 10:55:38 318

原创 gitlab-CI实现持续集成自动发布踩坑记录

gitlab-CI实现持续集成自动发布背景:公司为了版本统一方便管理,舍弃jenkins,拥抱Gitlab-Ci,开始踩坑。区别:个人感觉,Jenkins图形化交互页面友好,Gitlab-Ci更适合敏捷开发。一:简介1、GitLab-CI GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。2、GitLab-Runner 

2020-10-29 14:43:41 703

原创 Resultful接口实现后端文件下载

简介:springboot前后端分离项目,要实现文件下载功能。如果文件较大时采用后端直接下载,将文件采用zip压缩后以流的方式写入响应中,返回给浏览器,浏览器解析完成下载。一:获取下载请求,调用实现,返回响应。 @ApiOperation(value = "", notes = "") //@UserLoginToken @GetMapping(value = "/downTaskResult") @ResponseBody public RestfulResult

2020-10-23 14:29:26 822

转载 Path、Paths 和 Files工具类的使用

目录 1.创建文件或目录2.删除文件3.移动文件4.复制文件5.从文件读取数据6.从文件按行读取数据7.向文件写入数据8.获得文件路径的几种方法 JDK1.7 引入了新的IO操作类。在java.nio.file包下,包括Files、Paths等工具类。 中文文档:...

2020-10-23 13:58:19 665

原创 相似却不同的SOA与微服务

一:什么是SOA?SOA是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能,每一个服务通常以独立的形式存在于操作系统进程中,服务之间通过网络调用,而非采用进程内调用的方式进行通信。二:什么是微服务架构?和 SOA 架构类似,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成,简而言之,就是把单个服务拆的更细了。三:区别?SOA架构自上向下设计架构,团队开发迭代快。微服

2020-10-22 10:29:52 249 1

原创 关系型数据库与非关系型数据库

问题1:什么是关系型数据库,什么是非关系型数据库?答:关系型数据库的存储结构是表,数据是结构化数据;非关系型的存储结构是数据结构化存储方法的集合,可以是文档或者键值对等。问题2:什么是结构化数据,什么是非结构化数据?答:结构化数据是高度组织和整齐格式化的数据,它是可以放入表格和电子表格中的数据类型;非结构化数据本质上是结构化数据之外的一切数据。...

2020-10-12 11:28:17 268

转载 大数据Hadoop生态圈-组件介绍

大数据Hadoop生态圈-组件介绍     Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。     Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示:    根据服务对象和层次分为:数据来源层、数据...

2020-10-12 10:46:18 492

原创 Springboot中利用AOP记录接口访问日志

**需求:**需求记录接口的执行时间,请求体与响应体以便排查问题。**思路:**决定采用Aop实现。解决方案利用AspectJ实现Aop。首先添加AspectJ的依赖。 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>

2020-10-10 16:10:56 560

原创 什么时候采用socket通信,什么时候采用http通信

什么时候采用socket通信,什么时候采用http通信。问题1:什么是socket通信,什么是http通信。socket通信是对TCP/IP协议的封装(封装了tcp/ip协议让我们操作更加方便),http协议是应用层协议。问题2:两者的区别Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。socket连接:socket连接是长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户

2020-10-10 11:22:10 1659

原创 多线程之ThreadLocal

多线程之ThreadLocal问题:多线程之间的数据共享,保证线程安全。举例代码实现:public class ThreadLocalTest { private static ThreadLocal<Integer> x = new ThreadLocal<Integer>(); public static void main(String[] args) { for(int i=0;i<2;i++){ new Thread(new Runnable(

2020-10-09 18:30:23 90

原创 Akka并发处理数据:

Akka并发处理数据:背景:涉及同时多个文件并发处理计算为了提高效率采用Akka。介绍:akka:是一个开发库和运行环境,用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用,akka是基于actor模型的实现,actor模型也就是响应式模型,它和我们常用的基于方法堵塞式的调用不同,而是基于消息的异步调用。Actor模型:由三个重要部分组成,它们是状态(state),行为(Behavior)和邮箱(Mailbox);一:创键一个actor.package com.akkaTes

2020-08-20 18:27:26 428

空空如也

空空如也

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

TA关注的人

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