自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张俊杰 的博客

这个博客是平时给自己学习记录和工作遇到的问题解决啥的碎片化的随便写写的 , 这是我的语雀地址 yuque.com/zjj1994/

  • 博客(26)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis的线程模型 IO多路复用

redis是基于reactor模式开发的网络事件处理器,这个处理器叫做文件事件处理器,file event handler.这个文件事件处理器是单线程的,所以redis才叫单线程模型,采用IO多路复用技术同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理事件.①.在Redis启动及初始化的时候,Redis会(预先)将连接应答处理器跟"AE_READABLE"事件关联起来,接着如果一个客户端向Redis发起连接,此时就会产生一个"AE_READABLE"事件,然后由连接应答处理

2021-03-31 12:10:33 23

原创 JVM类加载的几个过程

这是类加载的过程,加载的类是放到了JVM的元数据空间,也就是永久代。• 加载:根据查找路径找到相应的 class 文件然后导入;• 检查:检查加载的 class 文件的正确性;• 准备:给类中的静态变量分配内存空间;• 解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址;• 初始化:对静态变量和静态代码块执行初始化工作。概述通过全限定名来加载生成 class 对象到内存中,然后进行验证这个 class 文件,包括文件格式校验、元

2021-03-29 10:17:40 23

原创 Java虚拟机内存结构

Java虚拟机内存结构不同虚拟机的运行时数据区可能略微有所不同,但都会遵从 Java 虚拟机规范, Java 虚拟机规范规定的区域分为以下 5 个部分:方法区 程序计数器 虚拟机栈 本地方法栈 堆各个区的作用程序计数器指向当前线程正在执行的字节码指令。线程私有的。内存空间小,该内存区域是唯一一个java虚拟机规范没有规定任何OOM情况的区域。一个线程的执行,是通过字节码解释器改变当前线程的计数器的值,来获取下一条需要执行的字节码指令,从而确保线程的正确执行。为什么需要程序计数器 ?参考:h

2021-03-28 17:58:16 14

原创 Elasticsearch集群扩容,垂直扩容还是水平扩容

垂直扩容和水平扩容介绍垂直扩容:所谓的垂直扩容就是升级服务器,买性能更好的,更贵的然后替换原来的服务器,这种扩容方式不推荐使用。因为单台服务器的性能总是有瓶颈的。水平扩容:水平扩容也称为横向扩展,很简单就是增加服务器的数量,这种扩容方式可持续性强,将众多普通服务器组织到一起就能形成强大的计算能力。水平扩容 VS 垂直扩容用一句俗语来说再合适不过了:三个臭皮匠赛过诸葛亮。为什么用水平扩容一般的扩容模式分为两种,一种是水平扩容,一种是垂直扩容。假设现在6台服务器,每台服务器容纳1T的数据,马上数据

2021-03-21 23:06:02 94

转载 ElasticSearch集群检查,master选举,扩容缩容

本篇将介绍ES的集群组成、节点发现与Master选举,错误检测与扩缩容相关的内容。ES在处理节点发现与Master选举等方面没有选择Zookeeper等外部组件,而是自己实现的一套,本文会介绍ES的这套机制是如何工作的,存在什么问题。本文的主要内容如下:ES集群构成节点发现Master选举错误检测集群扩缩容ES集群构成首先,一个Elasticsearch集群(下面简称ES集群)是由许多节点(Node)构成的,Node可以有不同的类型,通过以下配置,可以产生四种不同类型的Node:conf

2021-03-21 22:52:23 57

原创 HBase的高可用

概念在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。如果HMaster挂掉的话:1.不能建表修改表了,但是可以在已经存在的表增删改查数据,因为这些操作是RegionServer做的.Region分配也是由HMaster来处理的.如果HMaster挂掉的话,那么Region分配也是无法完成的.

2021-03-19 13:30:30 13

原创 Mysql事务原理

概述事务是基于重做日志文件(redo log)和回滚日志(undo log)实现的。每提交一个事务必须先将该事务的所有日志写入到重做日志文件进行持久化,数据库就可以通过重做日志来保证事务的原子性和持久性。每当有修改事务时,还会产生undo log,如果需要回滚,则根据undo log 的反向语句进行逻辑操作,比如insert 一条记录就delete 一条记录。undo log 主要实现数据库的一致性,还可以用来实现MVCC详解事务操作原理:事务开启之后,所有的操作都会临时保存到事务日志,事务日志只

2021-03-19 12:19:09 26

原创 MVCC多版本并发控制

什么是MVCCMultiversion concurrency control (多版本并发控制)MySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。不仅是MySQL,包括Oracle、PostgreSQL等其他数据库系统也都实现了MVCC,但各自的实现机制不尽相同,因为MVCC没有一个统一的实现标准。可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。虽然实现机制有所不同,但大都实现了非阻塞

2021-03-19 12:13:19 12

原创 哈希表

1.介绍哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。2.链式哈希表链式哈希表从根本上说是由一组链表构成。每个链表都可以看做是一个“桶”,我们将所有的元素通过散列的方式放到具体的不同的桶中。插入元素时,首先将其键传入一个

2021-03-18 14:02:21 8

原创 基本数据类型保存在java虚拟机的哪个部分?

有两种情况1.方法内定义2.方法外定义(类中定义)方法内定义在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。1.当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在JAVA虚拟机栈中2.当声明的是引用变量时,所声明的变量(该变

2021-03-17 18:36:53 35

转载 RPC与Http的区别

无论是微服务还是分布式服务(都是SOA,都是面向服务编程),都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?常见的远程调用方式有以下几种:RPC:Remote Produce Call远程过程调用,类似的还有RMI(Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型RPC的框架:webservie(cxf)、du

2021-03-17 16:29:02 40

原创 sesssion的工作原理

session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,当程序需要为某个客户端的请求创建一个 session 时,服务器首先检查这个客户端的请求里是否已包含了一个 session 标识(称为 session id),如果已包含则说明以前已经为此客户端创建过 session,服务器就按照 session id 把这个 session 检索出来使用(检索不到,会新建一个),如果客户端请求不包含 session id,则为此客户端创建一个 session 并且生成一个与此 sessi

2021-03-10 12:13:25 38

原创 什么是Session

Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session.使用Cookie和附加URl参数都可以讲上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务端程序处理的难度,即使这样,传递的信息也是非常有限的,为此,各种服务器端的开发方案都提供了一种将会话状态保存在服务器端的技术,即Session技术.当程序需要

2021-03-10 12:09:17 13

原创 Cookie和Session的区别和比较

简单介绍Cookie:是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发送请求时,同时会发送所有为该服务器存储的 cookie。Session:是存储在 web 服务器端的一块信息。session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。区别:存在的位置cookie 存在于

2021-03-10 12:06:33 27

原创 Spring如何解决循环依赖

循环依赖问题就是A->B->A,spring在创建A的时候,发现需要依赖B,因为去创建B实例,发现B又依赖于A,又去创建A,因为形成一个闭环,无法停止下来就可能会导致cpu计算飙升如何解决这个问题呢?spring解决这个问题主要靠巧妙的三层缓存,所谓的缓存主要是指这三个map,singletonObjects主要存放的是单例对象,属于第一级缓存;singletonFactories属于单例工厂对象,属于第三级缓存;earlySingletonObjects属于第二级缓存,如何理解early这

2021-03-09 18:20:31 63 2

原创 解释Spring框架中bean的生命周期

在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring容器中的bean的生命周期就显得相对复杂多了。正确理解Spring bean的生命周期非常重要,因为你或许要利用Spring提供的扩展点来自定义bean的创建过程。下图展示了bean装载到Spring应用上下文中的一个典型的生命周期过程。bean在Spring容器中从创建到销毁经历了若干阶段,每一阶段都可以

2021-03-09 18:01:50 63

原创 线程池内部结构(组成)

Java线程池包含4个部分,线程池的工作原理,是生产者消费者模式的(1)线程池管理器(ThreadPool):就是负责创建和销毁线程池的(2)工作线程(PoolWorker):就是线程池中的一个线程(3)工作任务(Task):这个就是线程池里的某个线程需要执行的业务代码,这个是你自己编写的业务逻辑(4)任务队列(TaskQueue):这个是扔到线程池里的任务需要进行排队,要进任务队列...

2021-03-08 17:24:03 49

原创 序列化相关概念

在分布式场景,比如我想给服务B的一个实体类传输到服务A中,给对象转换成可以传输的字节流数据,这就是序列化.把一个存储在内存里面的数据转换成可传输和可存储的对象这就是序列化.在rpc框架的话,序列化是必须存在的.(一)serialVersionUID 序列化版本号这是一个版本号,如果不定义的话,会自己生成一个,serialVersionUID 是一种安全校验的机制,序列化对象的id和反序列化对象的id是一致的,这样的话就能对序列化的安全性做一个识别.如果序列化时候的id和反序列化的

2021-03-06 22:17:43 24

原创 bat脚本转成exe执行程序

下载地址和转图标地址链接: https://pan.baidu.com/s/1AOP8e9bPTuA2jRuLxcj8Sw 提取码: nuec 复制这段内容后打开百度网盘手机App,操作更方便哦转图标网站http://www.zuohaotu.com/image-to-ico.aspx设置语言打开Bat To Exe Converter,默认是英文的,我们选择语言->简体中文,如下图所示:开始转换以简体中文显示之后,点击文件->打开,选择要转换成exe程序的bat批处理程序,如下

2021-03-04 15:19:03 120 1

转载 Kubernetes之network: failed to set bridge addr: “cni0“ already has an IP address different from xxx问题

Kubernetes之network: failed to set bridge addr: “cni0” already has an IP address different from xxx问题1 问题2 解决方案1.问题在使用Kubernetes部署应用时发现有Pod一直不能创建成功,使用kubectl describe pods <pod-name> -n <namespace>得到的结果如下图:从上面的截图中看到问题出现在给Pod分配IP上,意思是cni0

2021-03-03 10:05:11 89

原创 kubernetes Service 对外暴露应用

Service 对外暴露应用Service 对外暴露端口的时候其实也做了一个负载均衡的效果kubectl expose deployment [deployment 名字]–port=[对外提供端口] --target-port=[内部本身端口] --type=NodePort说明:– port 是对外提供的端口–target-port 是内部本身的端口,–type=NodePort方式暴露注意端口不要乱写,要和你项目端口对上才行,不然就访问不了.比如说你原来项目端口就是8080,那么这个

2021-03-02 17:27:07 51

原创 kubernetes查看现有pod的YAML描述文件

命令: kubectl get po [pod名字] -o yamlkubectl get po httpd-gv4bl -o yamlyaml描述文件结果 apiVersion: v1 --YAML描述文件所使用的Kubernetes API版本kind: Pod --Kubernetes 对象资源 metadata: --pod元数据(名称、标签和注解) creationTimestamp: 2019-09-03T06:05:16Z gener

2021-03-02 16:55:18 60

原创 jsp按钮怎么传递两个参数给后台

通过get传参方式.不过这种情况会有get请求乱码问题.jsp页面: <td><a href="#" οnclick="openDialogView('查看平台管理-企业金融-审核记录', '${ctx}/approvedmemo/businessFinance/form?businessType=${businessFinance.businessType}&id=${businessFinance.id}','800px', '500px')">

2021-03-02 09:37:21 56

原创 Kafka在zookeeper中存储的信息

Kafka在zookeeper中的存储结构1.topic注册信息/brokers/topics/[topic] :存储某个topic的partitions所有分配信息每个topic的信息{ "version":1, // 版本编号目前固定为数字1 "partitions":{ // partitionId编号 "1":[ //同步副本组brokerId列表 101, 103 ],

2021-03-01 12:52:03 124

原创 Kubernetes 集群部署SpringBoot项目流程

制作镜像,将项目上传到阿里云仓库上https://www.yuque.com/docs/share/69500bda-8be1-4a8b-9794-6c27fb66eef7?# 《docker 将镜像上传到阿里云镜像仓库,再拉取到本地》deployment部署镜像创建出podkubectl create deployment javademo1 --image=[镜像地址] --dry-run -o yaml >[yaml文件名].yaml[root@zjj101 k8s]# kubectl

2021-03-01 09:45:40 113

原创 kubernetes 查看 pod的描述

kubernetes 查看 pod的描述kubectl describe pod [pod名字] kubectl describe pod javademo1-69f7678847-qf5gf

2021-03-01 08:59:39 67

WPS Office.10.1.0.6875(无联网功能)

WPS Office.10.1.0.6875(无联网功能) 这是没有联网功能,单纯就是wps的文本,没有广告,没有登录功能, 绿色版的.压缩后只有80m 还有wps表格功能.我现在就在用,挺好用的比world2016要小巧

2018-03-31

mysql-connector-java-5.1.27.jar

mysql-connector-java-5.1.27-bin.jar jar包, 可以用这个连接MySQL的,, 适合MySQL5 版本的,, 很不错......

2020-10-29

sqoop-1.4.6.bin__hadoop-2.0.4-alpha

sqoop-1.4.6.bin__hadoop-2.0.4-alpha 导入导出工具,, 可以去官网下载, 也可以用这个

2020-10-29

json格式转换工具

可以把json格式的代码转换成,用起来挺不错的.

2018-02-15

ssm整合通用mapper

ssm整合通用mapper,如题,,适合新手去看,如题Spring4 mybatis3 好早以前弄的了, 适合新手看看,

2019-02-11

简单的ajax异步Crud项目

是自己写的简单的异步CRDU 项目,我本人也是一个菜鸟,当时什么都不会,自己写异步写了半天,现在自己写出来了,供新手学习,里面有ajax异步页面, 以及传智封装的分页

2018-05-12

空空如也

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

TA关注的人 TA的粉丝

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