自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath(已解决)

而实际被使用的是slf4j-reload4j,所以我们排除其他两个即可。在Dependcy Analyer中,搜索过滤对应的包名。1、使用maven依赖分析工具查找上图中出现的依赖。参照这里其实不难看出,大概率是依赖冲突了。上面冲突依赖说明一共有三个。往上翻报错栈信息还能看到。运行测试方法时报错如下。2、刷新maven依赖。再运行项目就不会报错了。

2023-11-28 14:32:46 2503

转载 linux 查询CPU信息(核数,型号,数量)

linux查询cpu核数等信息

2023-02-10 15:44:43 733 1

转载 统一异常处理

统一异常处理

2022-07-01 14:35:45 270

原创 Nginx 基础

nginx基础

2022-06-21 19:48:35 542

原创 Linux安装nginx步骤

nginx安装步骤

2022-06-13 10:00:53 454

原创 设计模式—工厂模式

都说工厂模式的重要,工厂模式到底是个啥?看名字就知道起码是个工厂,应该是用来生产东西的,换到计算机中也就是用来生产对象的。说多无益show me code,就根据例子进行理解吧工厂方法模式女娲造人例子思考一个场景,当初女娲造人时候,光凭女娲要造世上成千上万的人这可是很大工作量的,而且要造出不同特点的人。女娲通过八卦炉来造不同肤色的人public interface Human { // 人类有不同肤色 public void getColor(); // 人类会说话

2022-05-06 15:03:43 307

原创 设计模式—六大设计原则

本文开始对《设计模式之禅》进行学习总结,首先是六大设计原则。单一职责原则单一职责原则(Single Responsibility Principle)简称SRP,这个原则存在的争议之处是“职责”的定义、划分。先举例说明什么事单一职责:以用户管理、修改用户的信息、增加机构(一个人属于多个机构)、增加角色等维护,用户有这么多的行为维护。假如我们把他们写到一个接口中,类图如图最左侧,从图中可以很容易看出,类的定义没有划分用户的属性和用户的行为,按照抽取属性和行为的思路可以进行职责划分。如图中间

2021-12-14 11:40:05 1145

原创 Docker镜像与网络(二)

UnionFS(联合文件系统)联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。特性:一次同时加载多个文件系统,但从外面看起来只能看到一个文件系统。联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。镜像加载原理Docker的镜

2021-11-10 10:29:06 465

原创 Mysql批量造测试数据

写业务中经常需要测试数据,当需要测>100条数据的时候,手动插入已经非常费劲了,尤其是需要测分页或不同数据的时候。故本文记录一下用存储过程来代替手动插入示例实体类@Data@TableName("user")public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String e

2021-11-05 14:31:40 424

原创 手写Spring(二)

手写Spring(二)上一节 手写Spring(一)做了一些准备工作,并且写了Spring启动时候是如何扫描、加载类的,最后通过getBean()方法获取bean依赖注入bean的单例还是原型只是作用域区别,但是创建bean都是同样的步骤。在补充createBean()这个方法之前我们在service层新加一个OrderService@Component("orderService")public class OrderService {}在原来的UserService新增一个属性@Com

2021-10-12 19:49:32 117

原创 手写Spring(一)

本文开始手写源码系列学习,通过手写各大框架的源码了解底层逻辑。流程应用程序容器启动—>解析配置类—>扫描准备工作回顾之前学习Spring,启动时候首先需要注册bean。**那么如何加载bean?**以前是通过beans.xml配置文件的方式,让容器读取到配置文件中的配置来加载对应的bean。如下代码@Testpublic void test(){ //解析beans.xml文件 , 生成管理相应的Bean对象 ApplicationContext context = ne

2021-09-28 14:32:58 186

转载 Mac:系统深色模式下关闭软件深色模式的办法(针对软件没有设置选项的情况)

个人习惯用Mac深色模式,但是有些开发软件会随着系统改变颜色,看着不是很舒服,又不支持自己设置,这时只能通过命令的模式来修改,下面是具体设置方式比如我想调整Navicat为浅色模式,先到软件列表里找到软件的名称,比如我找到了,名称为:Navicat Premium通过命令找到它的全名,为:com.prect.NavicatPremium15osascript -e 'id of app "Navicat Premium"'通过命令调整为浅色模式defaults write com.p.

2021-09-14 20:59:12 1469 1

原创 日期集合排序,List<Date>,Set<Date>

如何对日期类型的集合排序?List根据sonarLint提示点点点可以发现新大陆!其实java8已经内置了许多比较器,可以点进去看看 List<Date> list = new ArrayList<>(); list.sort(new Comparator<Date>() { @Override public int compare(Date o1, Date o2) { return o1.compareTo

2021-09-10 19:21:51 2519

原创 Elasticsearch 操作命令(二)

1. REST风格methodurl描述GETlocalhost:9200/索引名称/类型名称/文档id通过id查询文档POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档id)PUTlocalhost:9200/索引名称/类型名称/文档id创建文档/修改文档DELETElocalhost:9200/索引名称/类型名称/文档id删除文档POSTlocalhost:9200/索引名称/类型名称/_search查询所有的数

2021-08-29 11:06:57 102

原创 ElasticSearch概述(一)

1. 简介ElasticSearch,简称es,es是一个开源的高拓展的分布式全文检索引擎,它可以近乎实施的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。它通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。谁在使用维基百科,类似百度百科,全文检索,高亮,搜索推荐Stack Overflow国外的程序异常讨论论坛GitHub(开源代码管理),搜索上千亿行代码电商网站,检索商品日志数据分析,logstash采集日志,ES进行复杂

2021-08-29 11:03:10 148

原创 Mybatis的TypeHandler Cause: java.lang.IllegalArgumentException: argument type mismatch

问题背景业务中常常遇到数据库中一个字段存的是Json字符串,查询出来需要解析为对应的实体类。代码需要自定义TypeHandler@Componentpublic class MachineConfigHandler implements TypeHandler<MachineConfig> { // 指定类型 private static final Type MACHINE_CONFIG_TYPE = new TypeToken<MachineConfig>(

2021-07-20 17:25:44 646

原创 查询数据库两列为Map(3种方式)

问题描述SELECT两个字段,需要返回一个Map,其中第一个字段作为key,第二个字段作为value解决方案推荐第三种解决方案1.封装结果集编写ResultMap,映射字段值和key/value的关系<resultMap id="configMap" type="java.util.Map" > <result property="key" column="SCName" jdbcType="VARCHAR" /> <result property="va

2021-06-30 10:39:34 3869

原创 Docker 安装与基本命令(一)

概述Docker为什么出现?开发和运维两套环境,环境配置十分麻烦。如在Windows上开发,要发布到Linux上运行。Docker给以上问题提出了解决方案:Java — Jar(环境)—打包项目带环境(镜像)— Docker仓库(应用商店)—下载镜像 — 直接运行Docker的思想来自于集装箱,核心思想:隔离。即将应用打包装箱,每个箱子是互相隔离的,可以将服务器利用到极致。虚拟机Dockerlinux centos原生镜像(一个电脑)隔离镜像(最核心的环

2021-06-29 09:52:22 123

原创 程序员拿到新电脑应该配置哪些东西?

2021年6月25日,后续持续更新1. 沟通微信(设置静音、截图快捷键、退出时保留聊天记录)https://weixin.qq.com/公司内部交流软件outlookSkype for Business2. 效率WPS https://www.wps.cn/Typora(配置主题Nord、图片文件夹等)https://www.typora.io/主题下载地址:https://theme.typora.io/解压软件 bestZip pro https://wh0603.lanzoux.c

2021-06-25 17:40:37 2255

原创 SpringCloud 环境搭建与 Eureka(二)

一、环境搭建1、创建父工程新建父工程项目springcloud,切记Packaging是pom模式主要是定义POM文件,将后续各个子模块公用的jar包等统一提取出来,类似一个抽象父类pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc

2021-03-02 22:36:24 116

原创 SpringCloud 入门 (一)

SpringCloud是什么?Spring官网:https://spring.io/SpringCloud, 基于SpringBoot提供了一套微服务解决方案,包括服务注册于发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。SpringCloud利用SpringBoot的开发便利性,巧妙的简化了分布式系统基础设施的开发,为开发人员提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,熔断器,路由,微代理,

2021-03-02 21:29:04 184

原创 微服务

什么是微服务?通常而言,微服务架构是一种架构模式,或者说是一种架构风格,它是将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值,服务之间采用轻量级的通信机制(HTTP)互相沟通,每个服务都围绕着具体的业务进行构建,并且能狗被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应该根据业务上下文,选择合适的语言,工具(Maven)对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不

2021-03-02 21:23:52 90

原创 Redis 主从复制

概念:指将一台Redis服务器的数据复制到其他的Redis服务器,前者称为主节点(master/leader),后者称为从节点(slave/follower)数据复制是单向的,只能从主节点到从节点。master以写为主,slave以读为主默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点主从复制的作用数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速

2021-01-21 00:40:16 69

原创 Redis 持久化

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!RDB(Redis Data Base)什么是RDBRDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复时是将快照文件直接读到内存里。(默认持久化机制)Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,等到持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行

2021-01-20 22:10:01 44

原创 Redis.conf 详解

redis启动的时候,就通过配置文件来启动!单位配置文件 单位(unit)对大小写不敏感可以包含多个配置文件网络当前绑定本机,可以指定为* 或者特定的ip保护模式,默认开启。端口号:6379通用配置最后一行的pidfile /www/server/redis/redis.pid的意思是如果以后台守护线程的模式运行,需要指定一个pid文件。日志日志位置数据库(默认16)是否显示logo(默认开启)快照标注了持久化的规则,也就是在多久时间内执行了多少次改动就会进

2021-01-20 20:37:56 65

转载 Redis为何那么快-----底层原理浅析

Redis的快速很多人都知道是因为基于内存,但这只是一方面,其实redis在底层是一套很完善的多路复用事件处理机制来保证执行的高效的线程模型redis内部使用文件事件处理器file event handler,它包含如下几个部分多个socketIO多路复用程序文件事件分派器事件处理器(连接应答处理器,命令请求处理器,命令回复处理器)之所以说redis是单线程其实是指这个文件事件处理器是单线程的,它采用多路复用的方式监听系统上多个socket,将socket上产生的事件压入队

2021-01-20 17:20:02 266

原创 Redis 事务

事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在任务执行的过程中,会按照顺序执行。执行具有:一次性、顺序性、排他性!----队列setsetset---执行Redis单条命令保证原子性,但是事务不保证原子性!事务测试redis事务:开启事务(multi)命令入队()执行事务(exec)正常执行事务127.0.0.1:6379> multi #开启事务OK127.0.0.1:6379> set k1 v1QUEUED #入队127.0.0

2021-01-04 22:07:08 52

原创 Redis 入门

概述Redis是什么Redis(Remote Dictionary Server ),即远程字典服务。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。Redis能干什么?1、内存存储、持久化(rdb,

2020-12-31 11:15:51 119

原创 jdk8新特性学习

函数式接口什么是函数式接口?函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。@FunctionalInterface四个主要接口Function:函数型接口,范型的就是接收的参数类型和返回的类型public static void main(String[] args) { Function<String,String> function = new

2020-12-29 16:50:17 93

转载 CopyOnWriteArrayList实现原理以及源码解析

参考:CopyOnWriteArrayList实现原理以及源码解析一、CopyOnWrite容器(并发容器)Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。

2020-12-26 09:55:11 99

原创 NoSQL,为什么要用它?

一、简介什么是NoSQL?NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。为什么使用NoSQL?这就要从系统架构演进来说了。1. 单机MySQL时代90年代,一个网站的访

2020-12-22 18:50:58 200

原创 深入探究MySQL中的 VARCHAR

上一篇简单对比了一下char和varchar的区别,并且测试了一下在mysql数据库中这两种数据类型的存储情况,下面放链接MySQL中CHAR和VARCHAR区别:https://blog.csdn.net/weixin_46053707/article/details/110916066.本文深入探究一下varchar到底存储是什么样的一、varchar 存储规则varchar的存储规则:4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字

2020-12-09 11:07:06 341

原创 MySQL中CHAR和VARCHAR区别

以下都是基于mysql5.0以上版本而言,也就是char和varchar括号内指定的都是最大字符数,话不多说先上结论:行为char字段varchar字段最大长度255字符括号中最大的字符数通过编码来算,不超过行65535个字节是否定长定长,不足的部分用隐藏空格填充不定长,保留实际字符空间使用可能浪费更加节省查找效率高低尾部空格插入时省略插入时不会省略,查找时可省略like查找语句中like后的’ '不会省语句中like后的’ '不

2020-12-09 09:39:03 3203

原创 线程池到底是什么?

线程池到底是什么?为什么要了解线程池?首先面试中经常被问到的线程池,其次因为工作中可能你并不仅仅听到线程池,有可能更多的是数据库连接池、内存池、对象池等等的一些列“池”。万变不离其宗,了解了线程池也就是对其他的有一些了解。那线程池到底是什么玩意?本文带你一步步探索,包括线程池的三大方法、七大参数、四种拒绝策略程序的运行本质:占用系统的资源。那么为了优化系统资源的使用就需要用到池化技术!池化技术池化技术就是构建类似于池子一样的东西来存放资源,有人(线程)要用就拿去用,用完再放回来。避免了用的时

2020-12-04 16:51:39 333

原创 线程辅助类

线程辅助类简要介绍三种线程辅助类的使用方式,加减计数器和信号量。CountDownLatch看名字就知道他是减计数器,主要是为了保证指定的线程执行完程序才能继续执行(案例:有时会多线程任务未执行完,main线程就结束了,导致多线程任务直接结束)。CountDownLatch(int count)示例:public static void main(String[] args) { //模拟三个线程执行任务 CountDownLatch countDownLatc

2020-12-04 13:14:40 180

原创 为什么java中很多范围取值都是左闭右开呢?

为什么java中很多范围取值都是左闭右开呢?今天在写随机数的时候,注意到左闭右开,突然就想java中很多范围都是取左闭右开(二分查找,分治,for循环,数组下标,list等等)这仅仅是程序员的习惯吗?我们拿字符串举例String a = "0123456789";System.out.println(a.substring(0,0)); //输出为“”,什么都不显示System.out.println(a.substring(0,1)); //0System.out.println(a.sub

2020-12-04 11:35:15 2648

原创 多线程虚假唤醒问题

线程虚假唤醒问题问题描述生产者-消费者模式,构建如下代码来判断线程的交替执行public class TestPool { public static void main(String[] args) { MyTicket myTicket = new MyTicket(); new Thread(()->{ for (int i = 0; i < 10; i++) { myTicket.inc

2020-12-03 16:19:20 247

原创 已解决:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:exec (default-cli) on project

已解决:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:exec (default-cli) on project问题描述出现以上报错的来源是,我在一个SpringBoot项目(Maven构建的)的 junit 的 test 文件夹建立测试文件,然后我想不用@Test来测试,直接写main方法运行,结果就报错。[ERROR] Failed to execute goal org.codehaus.mojo:exec-m

2020-11-29 20:19:18 16695 11

原创 Linux学习:软件安装方式(三)

Linux学习:软件安装方式(三)环境安装安装软件一般有三种方式:rpm(jdk:在线发布一个SpringBoot项目)解压缩(tomcat,启动并通过外网访问,发布网站)yum(docker:直接安装运行跑起来)jdk安装(rpm安装)1、rpm下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、如果有安装openjdk 则卸载[root@xxx ~]# java -versionjava

2020-11-28 18:38:10 84

原创 Linux学习:基本命令(二)

Linux学习:基本命令(二)一、目录管理1. 绝对路径和相对路径我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。什么是绝对路径与相对路径?绝对路径路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。相对路径路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man 这就是相对路径的写法啦!2. 处理目录的常用命令ls(英文全拼:list fil

2020-11-28 18:34:35 143

空空如也

空空如也

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

TA关注的人

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