- 博客(40)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 快速排序算法原理
1.快速排序算法是什么?想必大家都学过和用过冒泡排序吧!这应该是大家成为程序员道路上学的第一个算法哦,那么我们的快速排序算法其实是在冒泡排序的基础上的一个改进,快速排序算法是利用一趟快速排序,一趟快排一般都是取第一个数作为准基数进行排序,将一串数据分成两个部分,第一部分都比准基数小,第二部分都比准基数大,如:(-------第一部分------准基数------第二部分),也就这样以准...
2019-09-09 17:00:02
16054
原创 Java23种设计模式七大原则--单一职责原则
目录一.定义:二.作用:三.实现方法:四.代码演示:反例:正例:结果:一.定义:单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reaso.
2021-05-20 17:01:14
379
1
原创 Java23种设计模式七大原则--依赖倒置原则
一.定义:依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在C++Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depen..
2021-05-08 16:58:31
336
1
原创 Java23种设计模式七大原则--里氏替换原则
一.定义:里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about supertyp
2021-05-07 17:44:42
282
1
原创 Java23种设计模式七大原则--开闭原则
目录一.定义:二.作用:1.对软件测试的影响2.可以提高代码的可复用性3.可以提高软件的可维护性三.实现方法:四.代码演示1.基类父类抽象:2.子类主题实现3.最终产品组装类:4.调用测试5.结果一.定义:开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:.
2021-05-06 14:18:09
374
1
原创 浅显易懂的JAVA对象布局
天下文章一大抄!!!!现在由于资源的共享,很多技术平台的文章都很丰富,但是丰富中夹杂着多数的雷同,并且也没有什么依据,可能仅仅是自己的见解和别人的见解,没有真正的回归本质真理的实践。那么想要最浅显的弄清楚JAVA的对象布局,其实很简单:1.创建一个Maven项目2.引入jol的jar包 <dependency> <groupId>org.openjdk.jol</groupId> &.
2021-04-20 16:59:10
307
原创 可见性和原子性
可见性:一个线程在对一个变量进行操作时,其他线程对同一个变量是可见的。 线程是可以并行的简单来说:线程一操作i变量进行加减写入主内存,其他线程操作该变量时,使工作内存的变量失效,再从主内存重新获取变量。比较典型例子:JMM模型底层采用的时MESI协议的嗅探机制进行处理,volatile也是这种原理唯一的缺点是:不能解决原子性,导致下面问题出现,出现俩个1。原因是俩个线程同时写入主内存,得到一样的返回结果package com.zking.lock;import java.util.c.
2021-03-12 13:28:55
880
3
原创 HashMap源码分析1.8
HashMap1.8的升级主要是修复1.8的问题:目录1.重要源码分析2.结构组成?3.如何解决在扩容的时候碰到的链表死循环的问题4.如何解决时间复杂度从O(0)-->O(n)的过程1.重要源码分析/* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to li
2021-02-03 17:47:57
188
原创 HashMap源码分析1.7
1.源码分析 HashMap<Object,String> map=new HashMap<>(); map.put("x","xxxx"); System.out.println(map.get("x"));该源码是根据上面的代码进行调试后所得的结果,源码进行了主要流程的翻译和部分分析过程,有需要者可以自行copy到自己的idea工具进行分析,效果更佳/* * Copyright (c) 1997, 2010,...
2021-02-03 13:36:37
162
原创 B+树
B树链接:https://blog.csdn.net/Mr_xiayijie/article/details/112013425B+树的特征:在B树的基础上做了改动(满足B树的规则):拓展特征:1.B+树的父节点中的关键字都会包含在子节点中2.所有的叶子节点包含了全量的信息,形成一个有序的链表卫星数据:B-树中的卫星数据(Satellite Information):B+树中的卫星数据(Satellite Information):B树所有..
2020-12-31 15:38:01
157
原创 B-树
B-树(Balance Tree)一个m阶的B树具有如下几个特征:每个结点最多有m-1个关键字。 根结点最少可以只有1个关键字。 非根结点至少有Math.ceil(m/2)-1个关键字。 每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。 所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。 每个节点中的关键字从小到大排列,节点当中关键字正好是子节点包含的关键字的值域分划。特征解释:如:这是一个3阶的B
2020-12-31 15:30:22
7095
原创 异步多级缓存静态化(大型电商处理)
前提:1.nginx+lua+openresty环境搭建https://blog.csdn.net/Mr_xiayijie/article/details/1112248182.Nginx静态化html本地缓存处理https://blog.csdn.net/Mr_xiayijie/article/details/1112250891.思路流程图:叙述:1.用户通过前端发送请求Nginx,获取Nginx本地缓存渲染Html模板2.如果Nginx本地缓存没有找到,就去...
2020-12-15 17:25:08
269
1
原创 Nginx静态化html本地缓存处理
1.Nginx的conf文件目录新建lua.conf:在nginx.conf同一级目录来一个lua.conf:lua.conf:lua_shared_dict my_cache 128m; #这个是配置Nginx本地缓存server { listen 80; server_name localhost; # first match ngx location 首选匹配模板路径(找Html) set $tem
2020-12-15 17:02:40
1528
原创 nginx+lua+openresty环境搭建
环境:本地VM虚拟机+centos环境搭建1.准备openresty依赖yum install readline-devel pcre-devel openssl-devel gcc2.安装openresty有问题可以用yum install wget和yum install perl解决wget https://openresty.org/download/ngx_openresty-1.9.7.2.tar.gztar -xvf ngx_openresty-1.9.7.2.t.
2020-12-15 16:50:52
265
原创 十分有趣的Redis哨兵模式
监控他的表层体现是:Redis集群之间相互ping/pong,在固定时间内,去对其他的Redis主机进行检查,判断Master或者Slave是否是一个正常状态。哨兵其实是一个分布式的一个系统,在Redis整个架构上可以开多个这样的一个进程。每个哨兵向其他的哨兵的Maser或者Slave发送消息ping,默认1秒/次,如果对方没有回应pong的话,会主观认为对方宕机了,然后自己知道后再告诉整个集群,我这里发现了有Redis宕机了,然后整个集群都处于等待的状态,这个时候是不会进行主备切换的如果多
2020-11-17 21:51:31
149
原创 为什么hash槽的大小为16384?
这是作者给出的原话:Normal heartbeat packets carry the full configuration of a node, that can be replaced in an idempotent way with the old in order to update an old config.正常的心跳包携带节点的完整配置,可以用幂等方式替换旧节点,以便更新旧配置。This means they contain the slots configurat..
2020-11-16 21:26:24
3666
原创 Windows下Redis的深入探索
Redis集群信息描述redis-trib.rb支持的操作Redis(主/从)节点新增Redis宕机程度对数据存储的影响Redis Cluster集群分片模式Redis哨兵模式Redis主从复制
2020-11-14 19:50:45
169
原创 Windows下Redis集群搭建,不会脑子捐了篇
一 所需软件(安装):Redis Ruby语言运行环境 Redis的Ruby驱动RubyGems 创建Redis集群的工具redis-trib.rb1.安装Redisredis下载地址 https://github.com/MSOpenTech/redis/releases;下载Redis-x64-3.2.100.zip。2.安装Rubyhttps://rubyinstaller.org/downloads/3.安装RubyGemshttps://ru...
2020-11-11 15:58:04
207
原创 JVM堆内存原来这么简单
作为JVM的一个组成部分,JVM堆是一个非常重要的一个部分,我们常说的JVM调优,一般调到就是堆内存,对于一个程序运行空间,堆内存是一个非常重要,也是最为复杂的的一个点。我们一般看到的堆内存溢出,基本上都是老年代要炸了,抛出OOM的异常。注:这里的永生代(方法区)在JDK1.8的时候,HotSpot设计者考虑到内存频繁被占满报OOM的问题,同时也是为了兼容HotSpot VM和JRockit VM(无永生代),就把永生代给替换成元空间了,元空间在本地内存,也就相当于,JVM里面的方法...
2020-11-10 15:56:43
256
原创 JVM栈内存
一个方法相当于一个栈帧,下面进行结构和过程解析:栈帧包括结构:局部变量表,操作数栈,动态链表,返回地址,对象实例引用,变量槽.....1.局部变量表说白了就是存放方法内部定义的局部变量(8大基本数据类型),(String引用类型),(对象引用<reference类型>),(指向一条字节码指令地址<returnAddress类型>)8大基本数据类型:int、short、byte、double、char、boolean、float、longString引用类...
2020-11-09 16:48:37
318
原创 再也没有人把JVM内存结构讲的这么透彻了
首先贴图,用图说话,开么见山:Java虚拟机规范定义的运行时数据区:(引用一下大佬的图)推荐大佬CSDN:https://www.cnblogs.com/ysocean/p/9345622.html **五大区域:方法区、堆、虚拟机栈、本地方法栈、程序计算器**1.程序计数器记录程序执行位置,一般在字节码也就是JVM指令每一行都会标有一个code也就是一个数字。dos命令: javap -c .class文件可以查看作用:假如在一核cpu...
2020-10-27 15:48:02
164
原创 再也不要说JVM的内存模型==内存结构了
内存结构==内存模型??前段时间在度娘上面想查查JVM的发展史的,后来就有一大片引荐文章,让我记忆最为深刻的是,看到很多文章将JVM的内存模型和内存结构混淆在一起的。作为一名优秀的开发人员,JVM的内存模型和内存结构是一定要区分开来的,因为这俩者的根本就不是一个概念,而且这俩者的区别是非常非常的大的。JVM的发展历程:https://blog.csdn.net/qq_45057072/article/details/106977794?utm_medium=distribute.pc_rel
2020-10-25 21:03:10
142
原创 手把手带你实现简单的Python爬虫(图片+小说)爬取
目录1.准备工作:2.爬取图片01:urllib中包括了四个模块,包括03:网页源码(截取部分源码)04:匹配正则06:根据正则获取到的数据:09:下载图片3.小说1.代码解释1.print(urls) :2.f = open('C:\Story\{}.txt'.format(chapter_text), 'w') f.write(content) 流下载1.准备工作:前提:安装好Python环境和PyCharm编辑工具 http...
2020-07-01 15:23:01
1689
原创 使用fiddler移动端开发抓包调试(动手试一试,超简单)
目录一.工具介绍二.使用背景三.安装使用1.下载Fiddler(HTTP调试抓包工具) v5.0.20194.41348中文2.安装3.设置第一步解密HTTPS:工具->选项->HTTPS(Tool->Options->HTTPS)第二步:允许设备远程连接:工具->选项->连接(Tool->Options->connections)第三步:验证远程设备和装fiddler的计算机在同一局域网内(记得关闭电脑的防火...
2020-05-11 16:06:09
774
原创 Windows下Nginx安装做负载均衡 看这一篇就够了
目录一.简介1.1优点1.2服务器二.windows下载安装三.配置详情四.负载均衡一.简介Nginx(engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好1.1优点1.Nginx 可以在大多数UnixLin...
2020-04-26 15:21:51
2364
原创 windows下安装kafka新手教程
1. 安装JDK1.1 安装文件:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK1.2 安装完成后需要添加以下的环境变量(右键点击“我的电脑” -> "高级系统设置" -> "环境变量"):JAVA_HOME:C:\Program Files\Java\jdk1.8.0_17...
2020-04-16 17:05:20
452
原创 Windows安装Redis新手教程
1.redis下载链接redis下载链接:下载64位2.将zip压缩包解压到对应的目录3.配置环境变量(建议配置,若未配置,可到对应的redis目录下运行)4.可直接启动redis服务与客户端连接测试。(我是配置了redis环境变量)启动服务端命令:redis-server连接客户端命令:redis-cli5.像上面这种启动方式,关闭命令窗口就会关闭re...
2020-04-16 09:16:49
941
原创 手把手教你如何搭建一个简单的微信小程序
开发工具:HBuilderX 1.0 (编写工具)+微信开发者工具 1.2(发布程序审核) 开发环境:win 10+uni-app+vue+js+DCloud组件调试环境:Huawei nova 3(开发者模式)真机调试+微信开发者工具模拟器调试项目:uni-app重点:1.创建微信公众号平台小程序账号 填写信息获取AppId2.pages.jso...
2020-03-30 01:50:45
2498
原创 MYSQL问题解决方案:Access denied for user ‘root‘@‘localhost‘ (using password:YES)
my.ini:[mysqld]# 设置3306端口port=3306# 自定义设置mysql的安装目录,即解压mysql压缩包的目录basedir=C:\Java_application\mysql-8.0.15-winx64\mysql-8.0.15-winx64# 自定义设置mysql数据库的数据存放目录datadir=C:\Java_application\mysql-...
2020-03-28 16:18:24
686
原创 rabbitListenerEndpointRegistry.getListenerContainer(“id")为null
import com.zking.config.RabbitConfig;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.rabbit.annotation.RabbitHandler;import org.springframework.amqp.rabbit....
2020-03-13 22:08:56
1737
7
原创 SpringBoot+sqlToy+Activiti环境搭建实现请假流程
效果图:流程图:源码地址(后台):https://gitee.com/xcodinglifex/sqltoydemo.git源码地址(前台):https://gitee.com/xcodinglifex/activitidemo.git
2020-03-10 16:57:01
1021
2
原创 Activiti 历史任务表(act_hi_taskinst)没有任务办理人
/** * 启动流程 * * @param personal 申请人 * @param day 请假天数 * @param reason 请假原因 * @return */ @RequestMapping("/start") public synchronized String startPr...
2020-03-09 23:34:10
3628
原创 SpringCloud 中Eureka+Fegin+Zuul的整合使用
理论的话不多说,直接进入主题(项目结构安排):1.springcloud-config:作用: 作为父级module,子级module继承父级中的依赖pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xml...
2019-12-24 17:28:39
396
1
原创 Activiti FormService自定义Task动态表单
一.内置表单1.部署流程+启动流程 /** * 部署流程 */ @RequestMapping("publishProcess") public void publishProcess() { String processDefinitionKey=null; Deployment deployment= repositoryService.createD...
2019-09-16 09:19:19
2342
原创 Eclpise下整合SpringBoot+Activiti 6.0的简单实现审批流程
注:IDEA在给任务Assignee和Task Listeners设置不上的问题一.创建项目创建一个新的SpringBoot的一个项目,pox.xml引入Activiti工作流和数据库Mysql驱动和连接相关依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org...
2019-09-11 14:34:02
996
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人