自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫兮

More And More Specialized

  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 kafka和zookeeper集群搭建

前提我这里用的是三台服务器搭建集群,不是一台,这个要搞清楚zookeeper集群搭建1. 下载安装包可以直接到官网下载,也可以通过下面命令下载,将命令中的版本号改成自己的想要下载的版本号就可以,如果不能,那就乖乖去官网下载wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz接下来就是解压了 tar -zxvd apache-zoo

2021-07-16 15:30:03 345

原创 zookeeper和kafka集群搭建-错误集合

1. 出现 zookeeper server is not running问题排查解决方案在zoo.cfg文件中加入下面配置maxClientCnxns=60standaloneEnabled=falseadmin.enableServer=true2. 出现Error: JAVA_HOME is not set and java could not be found in PATH.问题排查zookeeper是在java环境中运行的,这里是没有指定jdk路径解决方案如图就行,如果

2021-07-15 22:12:23 805 1

原创 Elasticsearch全面学习

1. 整体介绍Elasticsearch通过docker安装,并安装kibana进行操作。主要是记录了Elasticsearch常用的指令,查询序列,创建序列,查询数据,对数据分类聚合等。关于更多的使用,直接看ES的官方文档,文档很详细。2. 软件安装下载ealastic search和kibanadocker pull elasticsearch:7.12.1docker pull kibana:7.12.1安装前配置,将ES配置文件外挂,这样方便修改配置// 创建外部挂载目录

2021-05-07 09:48:17 275 3

原创 使用nginx和Spring gateway实现反向代理

整体描述整个过程就是,对于我们的一个域名,我们需要改域名访问特定的页面。这里域名默认都是80端口,为啥呢?因为80端口不用显示写出来,别人访问你的网站,还要人家输入域名吗,这很不优化。通过nginx代理来完成,nginx是可以通过访问域名和80端口来进行代理的(也就是端口都是80,只要域名不同,都是可以的)具体流程客户端通过域名(我随意起一个域名:ligel.com)ligel.com -->到nginx监听该域名和80端口–>转发到nginx中配置的网关集群—>访问网关—&g

2021-05-06 21:10:05 4001 2

原创 Java AQS源码学习

整体认识注释看一下原文注释,我觉得原文注释能理解,对AQS已将理解一大半。不进行英文翻译了,平常没事了就拿出来读一读,慢慢加深理解/** * Provides a framework for implementing blocking locks and related * synchronizers (semaphores, events, etc) that rely on * first-in-first-out (FIFO) wait queues. This class is des

2021-04-21 23:12:08 152

原创 ApplicationContext和ConfigurableApplicationContext解析

1. ApplicationContext该类提供了高级IOC规范其中有几个注意点:从ListableBeanFactory接口继承来的:用于访问应用组件的工厂方法从ResourceLoader接口继承来的:用通用的方式加载文件资源从ApplicationEventPublisher接口继承来的:注册和发布事件从MessageSource接口继承来的:处理消息,支持国际化从父应用上下文定义的在子上下文中将始终保持优先。public interface ApplicationContext

2021-02-03 22:13:18 7668 9

原创 Spring IOC源码分析

IOC容器设计与实现重点知识BeanFactory定义了IOC基本功能,这也就是面向接口编程,对于对IOC功能的增强,是通过集成BeanFacroty的拓展接口来实现的。这里的整体设计可以借鉴的,这就是典型的面向接口编程和装饰者模式。在Spring中所有的bean都是由BeanFactory进行管理的,FactoryBean是产生或者粉饰对象生成的的工厂beanBeanFactory路线BeanFactory是实现IOC的基本形式,也就是最原始的IOC规范。Applicat

2021-02-01 20:39:56 408 4

原创 MySql数据库优化--v1.0

选取合适的字段属性这其中包括最长用到的char和varchar的问题。过长的字段长度会给数据库带来压力使用JOIN来代替子查询子查询是先查外表在差内表,如果外表数据量很大,这样速度会明显的下降,JOIN是经过优化的查询,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。使用联合(UNION)来代替手动创建的临时表UNION会自动创建多条语句的临时表来完成查询任务,并且在查询任务执行完毕后,自动删除临时表。注意的是:每条查询语句的字段数量要一致。事务..

2020-10-02 11:06:39 298

原创 记录开发过程中的遇到的bug-----后面东西多了,再进行整理

Q01 SpringBoot 无法进行单元测试问题在springboot进行单元测试会出现容器找不到,就是容器没有被加载解决方法这个问题在pom文件导如单元测试出错,在导入时加入的不需要的配置参数。正确的导入依赖如下: <!--导入springboot单元测试依赖--> <dependency> <groupId>org.springframework.boot</groupId>

2020-05-19 10:23:06 1879

原创 总结自己开发中,阅读源码中获得的编程技巧

1. scan用来跳出循环下面是String源码中的应用,通过scan坐标,在符合条件下调到scan位置处。scan: { for (firstLower = 0 ; firstLower < len; ) { int c = (int)value[firstLower]; int srcCount; if ((c >= Character.MIN_HIGH_SURROGA

2020-05-18 20:46:44 949

原创 23种设计模式之策略模式,单例模式 ,工厂方法模式,抽象工厂模式,观察者模式

策略设计模式概念定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的替换独立于使用算法的客户。(这里的算法就是一个个行为-方法)1. 继承的弊端首先使用继承来设计接口是一种很糟糕设计方法,因为软件总是存在变化的,使用继承很难应对改变,因为父类改变会改变所有的子类在需求变化中,会出现并不是所有的子类都需要基类的方法,这样就违反类里氏代换原则。2. 引子...

2020-04-08 18:08:26 664 1

原创 设计模式学习-6大设计原则

六大设计原则名称概念开闭原则对拓展开发,对修改关闭里氏代换原则任何基类出现的地方,子类一定可以出现依赖倒转原则针对接口编程,而不是实体类接口隔离原则单一责任原则,通过接口来降低耦合迪米特法则一个实体尽量少的与其他实体发生相互作用的关系合成复用原则尽量使用和合成/聚合的方式,而不是使用继承开闭原则1. 个人理解1. 开发原则是...

2020-04-08 09:52:26 346 1

原创 2021-08-01至2022-08-01年计划

总结前一年多时间的收获从2020年3月开始工作,入职是也写了一份一年的计划,如今过去了一年零4个月,回看自己之前写的一年计划,我觉得还是完成了的,而且在这基础之上还拓展了一些知识方面。这一年自己都在利用业余时间学习,觉得自己学习的当中不足的地方如下没有像任务细化到每一周,甚至每一天。(没有短时间的计划,导致学习效率底)写了很多博客,但是没有定期的进行总结,比如一个星期,一个月。导致很凌乱,不成体系、理论结合实践还不够,要提升自己的动手能力前面提到的学习汇总的不足,也是在之后的一年中学习计划已

2021-08-04 10:01:54 270 1

原创 mac 安装bochs汇编模拟器

安装bochs1. Mac安装bochs直接用brew进行安装brew install bochs通过下载bochs-2.6.11.tar.gz 版本不固定这个方式暂时不搞:2. 配置启动信息找到配置路径:/usr/local/Cellar/bochs/2.6.11/share/doc/bochs关于配置路径问题,我看网上的不是这样的,路径不对,这个要看自己电脑,标志就是找到bochsrc-sample.txt该文件拷贝bochsrc-sample.txt文件,并重命名为

2021-06-08 19:00:21 743

原创 牛客网SQL练习题

01. 查找最晚入职员工的所有信息DROP TABLE IF EXISTS `employees`;CREATE TABLE `employees` (`emp_no` int(11) NOT NULL, `birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NULL,`hire_date` date NOT NULL

2021-06-02 14:28:46 364

原创 Mysql缓存使用

Mysql缓存相关信息查询1. 查看mysql缓存信息show status like 'Qcache%';结果:Variable_nameValue中文解释Qcache_free_blocks1缓存中空闲块数Qcache_free_memory1031832空闲缓存空间Qcache_hits0缓存命中次数Qcache_inserts0缓存未命中时,数据写入缓存次数Qcache_lowmem_prunes0表示缓存修剪次数,缓存满时

2021-05-07 18:27:45 174

原创 数据库系列文章汇总

Mysql1. sql语句优化1.1 文章简介文章链接2. 数据库索引设计与优化–看书记录v1.02.1 文章简介文章链接3. MySQL性能优化的几个方面3.1 文章简介文章链接

2021-05-07 14:25:55 194

原创 ArrayList和LinkedList源码分析

ArrayList和LinkedList设计结构注:绿色实线是接口之间继承关系绿色虚线是类实现接口关系蓝色实现是类之间的继承关系1. ArrayList设计结构2. LinkedList设计结构3. 对ArrayList和LinkedList结构进行分析从整体上来说,ArrayList和LinkedList主要区别是,LinkedList实现了队列(Queue)接口,也就...

2021-05-07 13:31:55 132

原创 代理模式-静态代理和动态代理

1. 代理模式三要素,理解这个代理模式就足够了图片来源地址2. why:代理模式产生的背景是什么?要解决什么问题3. 静态代理的缺点是什么?4. 动态代理又解决了什么问题?肯定与静态代理有关5. 代理模式的应用场景有哪些?AOP肯定是经典之一...

2021-05-07 13:29:42 86

原创 《Java并发编程艺术》线程池的实现原理--04

概括首先线程池使我们在并发编程中运用最多的并发框架。线程池有效管理我们创建的线程,减少了线程创建和销毁带来的性能消耗。线程池实现原理图片来源于《Java并发编程艺术》判断核心线程池中的线程是否在都在执行任务,没有就在这里执行。否则进入加一个流程判断工作队列是否已经满了,没满就将任务提交到工作队列中,否则进入下一个阶段判断线程池中的线程是够都处于工作状态,不是就创建一个线程来执行该任务,否则就交给饱和策略来处理这个任务。之所以要设计这么多步骤,目的是为了在执行excute()方法是避免获

2021-05-07 13:28:59 81

原创 MySQL性能优化的几个方面

一般来说mysql数据库优化要从下面几个方面进行优化,对于开发者,接触得最多的就是sql语句优化。我之前也是这么认为的,但是后来发现,要想提高mysql的整体性能,光是sql语句优化还不够。 就比如系统配置优化,即使服务器性能很好,但是系统配置没有完全发挥硬件性能,这样也没达到最大优化效果。优化方面1. 硬件优化增加服务器性能,cpu、内存、核心数、2. 系统配置优化连接数配置占用内存连接池3. 表结构优化数据类型(char vs varchar 、datetime vs tim

2021-05-07 13:25:40 475

原创 Synchronized原理

铺垫知识CAS: 刚刚重新温习了该知识,发现,CAS确实能够保证在对目标对象的修改的途中不会出现别的线程修改该值,但是可以引起类似于”幻读“的情况,如果线程A修改 aa=1,但线程B在线程A修改该值时对aa进行了修改,aa =2,那A线程第一修改失败了,但是线程A自旋继续尝试修改aa,第二次成功了,因为这期间里线程B修改aa=1相隔时间很短,当线程B读取aa值得时候,发现aa=2,这种情况就是类似于”幻读“,其实这种情况是避免不了的,我暂时没想到解决方案,你想你互斥的操作了,你厉害了,还不让人对aa进行操

2021-05-07 13:21:12 165

原创 Mysql锁认识

1. 锁类别Innodb引擎支持锁的,MyISAM是不支持的,这里将的mysql锁就是Innodb的锁。Innodb支持行级锁,也就是锁定范围能够到达某个数据表的某行,锁的粒度还是很大的。锁粒度大的好处是,能提高并发的性能,并发一定是需要锁的,如果是表级锁,那么一个事务锁定表,其它事务将阻塞等待,这样大大降低性能,其实获得锁的那个事务可能只操作某一行,却锁住整个表。共享锁 : SLOCK排它锁:XLOCK2. 行级锁实现算法记录锁: record lock 锁定某一条记录间隙锁: Gap

2021-05-07 12:01:20 106

原创 深入分析 Volatile 的实现原理

整体认识Volatile是相对于synchronized来说的轻量级锁,其最大的特点是没有通过加锁的方式来解决线程可见性问题Volatile直解决了线程可见性问题,但没有提供原子性支持。Volatile的使用其实还是很有难度的,要正确的使用Volatile,避免出现因没有考虑原子性问题而出现使用不当问题,所以在正在开发中Volatile使用还是较少的。要充分的了解Volatile,要知道一下知识点指令重排序内存屏障缓存行缓存一致性问题缓存失效锁缓存关键知识什么是可见性在多核机器

2021-04-25 22:43:18 177

原创 CAS认识

整体认识原子性的实现简单的 i++操作。使用的os地城指令为: cmpxchgjava对该指令进行了封装compareAndSetInt(this, VALUE, expectedValue, newValue)解释一下其中的参数意思:this: 表示当前对象VALUE: 表示该变量在当前对象地址的偏移量,该对象地址是展示的是地址始址expectedValue: 期望的值newValue:要改成的值;这个函数其实需要用户传入的是expectecValue 和 newValue,当该变量

2021-04-19 23:10:48 134

原创 SQL语句优化

1. 分页优化select * from user LIMIT offset , end上面的sql语句的缺点是是,当偏移量越来越大时,查询时间会越来越慢优化基于Id自动增加的优化,这也是局限性// size是每一页大小,offset为起始偏移量, end为终止偏移量 select * from user where id between offset and end LIMIT size问题如果如订单这个数据量庞大的表,一定会分库分表的,那这样怎么实现分页查询优化。这里就不建议使用i

2021-04-18 22:19:44 130

原创 关于mybatis-plus中QueryWrapper使用

这里借鉴一下别人的文章,这里先上文章链接参考文章链接

2021-04-18 17:21:10 1970

原创 Spring事务-01

整体Spring的声明式事务不适合简单的一样,Exception会令事务失效,事务捕捉不到事务。事务能捕捉到的异常是:RunningException这里亲自验证过,Exception确实会令事务失效。这里就要熟悉Java异常架构。图来源地址...

2021-04-18 14:34:23 91

原创 MyBatis一级缓存和二级缓存

一级缓存和SqlSession绑定,当开启一个sqlSession就会在本地创建一个一级缓存,其中一级缓存也就是Map集合,map的key有statementId-也就是接口的全限定路径+sql语句+参数值+返回值范围+环境变量名称,值为查询结果。下面这个例子:-1540658202:1619949906:org.apache.ibatis.zzTest.mapper.UserMapper.selectByName:0:2147483647:select * from user where userna

2021-04-12 21:28:55 107

原创 MyBatis启动

MyBatis启动原理是构建者模式,这里都不是重点,重点是:怎么将sql解析出来,放在那里了怎么将mapper.xml 和mapper.class绑定在一起sql解析出来放在了MappedStatement中,这里是sql语句的抽象类至于这两者是怎么绑定了,那就要到binding模块了,通过mapperRegistry进行mapper注册了然后通过XMLMapperBuilder. bindMapperForNamespace()进行绑定,也就是通过命名空间进行绑定。...

2021-04-12 11:54:41 97

原创 MyBatis事务

整体认识Mybatis的事务真的没啥学法,全都是依赖于jdbc 和 manage的事务。真的要了解事务,就要去了解Spring 事务,但是Spring事务也是用的数据库事务。所以还是要了解数据库事务是如何实现才行。...

2021-04-11 22:31:13 131

原创 JDK动态代理认识

整体认识JDK动态代理是基于接口的代理,也就是说目标对象一定要实现某个接口。实现原理获取被代理对象引用,得到它的接口通过反射重新生成一个代理对象,该代理类实现被代理对象的所有接口(注意:这里可能有很多接口,接口多实现)生成代理对象字节码,重新编译,加载到JVM中,返回该代理对象的实例。在代理对象中,可以对目标方法实现前后增强处理执行代理对象的目标方法,返回执行结果。使用JDK动态代理元素接口接口实现类InvocationHandler的实现类,该类中对目标函数进行增强Proxy

2021-04-11 19:36:29 72

原创 Java核心知识总结---第一版

1. 网络部分关于TCP/IP的面试题TCP和UDP的认识和区别TCP为什么是三次握手,两次握手不行吗?感觉是二次握手就可以了,但是当服务端发送syn/ack给客户端,告诉客户端,我可以接收信息时。客户端并没有告诉服务端,收了了服务端的确认,所以需要客户端发送确认信息,告诉服务端,我收到了,我知道你可以接收信息,我们这就建立连接,发送数据。TCP四次挥手的意义确保客户端和服务端数据能够完全传输tcp三次握手,可靠传输如何实现这个题很重要,是在一个网友字节跳动面试时遇到参考资料-01参考资

2021-04-05 00:47:47 152 2

原创 Java对象开销的认识

这是第一遇到对象开销的概念,以前对这个基本没有概念。关于对象开销,如上图的概念那样。对象开销与JVM相关,我大胆猜测一下,jvm的性能提升,其中有一些优化就是对于对象开销的优化。...

2021-03-24 09:42:35 315

原创 Spring-cloud微服务相关文章汇总

文章汇总spring-cloud-alibaba微服务搭建过程记录–01这里是第一版微服务搭建踩坑记录-后面会将问题汇总

2021-03-19 15:18:25 74

原创 spring-cloud-alibaba微服务搭建过程记录--01

微服务搭建过程记录自己微服务搭建学习过程,真的是一步一个坑。1. 前期准备1.1 锁版本主要锁的就是Spring boot 、Spring cloud 、Spring cloud alibaba的版本,而且这几个对应的版本要匹配,不然会出现错误<!--属性配置--> <properties> <java.version>1.8</java.version> <spring-boot.version>

2021-03-19 15:13:24 477

原创 软考系统分析资料整合

前言最近在复习软考-高级系统分析。整理了自己的资料,其中包括 《系统分析师教程_张友生》 《系统分析师考试全程指导》还有真题电子版有需要的可以联系我 Q->1367387915

2021-03-18 12:01:18 291

原创 Docker 和Docker compose安装

1. Docker 安装Docker安装分国内镜像和国外镜像,下面都弄成了脚本,可以一键执行我自己的用的是sudo apt-get install docker.io下面是网上找的脚本,可以做参考。1.1 国内版#!/bin/bash# 移除掉旧的版本sudo yum remove docker \ docker-client \ docker-client-latest \ doc

2021-03-17 18:13:28 99

原创 Spring cloud微服务搭建踩坑记录

01 引入Eureka组件问题在引入下面包时会出现<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>${eureka-version}</version></dependency>

2021-03-13 10:32:46 1407

原创 Spring AOP原理学习-看书记录笔记

1. 整体2. 重点2.1 重要概念切点通知代理拦截2.2 动态代理原理记住一点,AOP的核心技术就是动态代理AOP用的是代理,管理代理。java有自带的代理机制,还有Cglb代理机制。这两种机制Aop都在应用,Java代理主要运用于接口,而Cglb主要是类。2.3 invoke()方法逻辑分析代理中最主要的方法就是invoke()方法了,那就介绍一下该方法的逻辑。获取目标源TargetSource赋值代理目标对象Target获取代理对象类获取代理对象参数

2021-02-26 12:02:49 100 1

Python for Everybody

本书适合python学习,是一本不错的python入门书籍,这不是扫描版,而是正版书籍的pdf电子版。

2018-04-25

空空如也

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

TA关注的人

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