自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

code_mzh的博客

世之奇伟瑰怪之观,常在于险远

  • 博客(125)
  • 资源 (6)

原创 Spring的Aop讲解即三种实现
原力计划

Spring的Aop就是将公共的业务 (日志 , 安全等) 和领域业务结合起来 , 当执行领域业务时 , 将会把公共业务加进来 . 实现公共业务的重复利用 . 领域业务更纯粹 , 程序猿专注领域业务 , 其本质还是动态代理 .spring实现:导入依赖<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --><dependency> <groupId>org.aspectj&l

2020-07-07 11:50:40 997

原创 Linux的基础命令
原力计划

目录管理绝对路径和相对路径我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。在开始本教程前我们需要先知道什么是绝对路径与相对路径。绝对路径:路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man 这就是相对路径的写法啦!处理目录的常用命

2020-06-23 22:27:05 918

原创 java锁的升级过程

无锁,偏向锁,轻量级锁,重量级锁jdk1.6后减少锁的消耗时,引入偏向锁和轻量级锁,锁可以升级但不能降级。因为自旋会消耗CPU,为了避免无用的自旋(比如获得锁的线程被阻塞住了)一旦锁升级成重量级锁,就不会再恢复到轻量级锁状态。当锁处于这个状态下,其他线程试图获取锁时,都会被阻塞住,当持有锁的线程释放锁之后会唤醒这些线程,被唤醒的线程就会进行新一轮的夺锁之争锁分级别原因:没有优化以前,synchronized是重量级锁(悲观锁),使用 wait 和 notify、notifyAll 来切换线程状态非常

2020-09-16 18:26:32 16 1

原创 强引用、软引用、弱引用、虚引用的区别?

强引用当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收!强引用是我们最常见的普通对象引用,只要还有一个强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。在Java中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到,JVM也不会回收,因此强引用是造成Java内存泄漏的主要原因之一。对于一个普通的对象,如

2020-09-15 21:53:16 11

原创 jvm垃圾收集器,各自的优缺点

垃圾回收器Serial收集器: 针对新生代的单线程收集器,使用复制算法。收集垃圾是会产生较长时间的停顿,但不会产生线程切换的开销Serial Old收集器: 针对老年代的单线程收集器,使用标记整理算法。Parallel Scavenge收集器: jdk 1.8默认的垃圾回收器。新生代回收器,采用复制算法,多线程并行回收,充分利用CPU资源。进行垃圾收集时,必须暂停所有工作线程,直到完成Parallel Old收集器: 是Parallel Scavenge收集器的老年代版本,使用.

2020-09-15 21:21:10 25

原创 redis底层数据结构

1.动态字符串用的是c语言,自己写的简单动态字符串sds,分为struct sdshdr{ //记录buf数组中已使用字节的数量 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];}为什么设计呢1.常熟复杂度获取字符串的长度,c语言是要遍历一遍计数的,空间换时间,直接读len就行了2.防止缓存溢出,字符串strcat时,可能由于分配的空间不够导致 内存

2020-09-15 11:56:17 8

原创 condition精准唤醒

package JUC.condition;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author HuangHaiyang * @date 2020/07/02 * @description: description * @version: 1.0.0

2020-09-13 17:47:53 25

原创 sql性能分析explain(2. 举例理解)

单表优化(详细),多表优化一,单表优化今天来准备sql优化的环境,整个实验过程包含两张表,一张员工表emp和一张部门表dept,我们通过存储过程实现批量插入数据,1w条部门数据,5w条员工数据。下面给出具体的代码,大家可以结合注释理解执行。直接全部复制执行即可,耐心等待,建议本地数据库,快#创建表create table dept( id int(11) not null auto_increment, deptName varchar(30) DEFAULT null, addr

2020-08-29 20:41:03 62

原创 sql性能分析explain(1. 基础认知)

Mysql中的explain语句在Mysql的性能分析中我们免不了会使用explain语句。在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,使用explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析查询语句或是表结构的性能瓶颈。下面是一个简单的使用explain语句的例子,使用的

2020-08-29 18:33:05 30

原创 MySql七种join理论

1.内连接select * from A inner join on B where A.key=B.key;2.左连接(就是左侧的无联系都会查出来)select * from A left join B on A.key=B.key where B.key is null;右连接select * from A right join B on A.key=B.key where A.key is null;4.左外连接select * from A left join .

2020-08-27 17:06:46 31

原创 修改密码时报错,ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘

修改密码:先登录mysqlmysql -u root -p输入密码mysql> use mysql;mysql> select user,host from user;+------------------+-----------+| user | host |+------------------+-----------+| root | % || admin | localh

2020-08-26 18:32:40 165

原创 您需要支付0.03比特币(BTC)才能恢复数据库:mail_system。 如果您需要证明,请通过以下电子邮件与我们联系:dumpmysql@protonmail.com。

恭喜你,数据库中病毒了为啥中病毒?1、为了可以远程能够访问数据库,设置数据库权限为所有机器可以访问 ,让意图不轨的人有了可乘之机。。。2、数据库密码过于简单3、关闭了防火墙以下规范可以有效预防比特币勒索病毒:比特币勒索病毒有潜伏期,可以在每日巡检数据库时增加疑似异常过程的检查在赋予用户权限的时候一定要慎重(如果该用户只有connect权限估计病毒也玩不转)第三方工具最好使用正版工具(之前就说有SQL-Developer的Afterconnect.sql脚本中有携带病毒,防不胜防)周期性的

2020-08-26 17:53:54 1064

原创 解决mysql没有mysql.user表的root用户问题

莫名其妙mysql.user表的root没了,远程肯定登陆不上了,千万别卸载mysql,数据会没的我的user表没有任何一个root用户,新手都有的我没了。。。一开始我要设置不给密码,方便后续操作:vim /etc/my.cnfskip-grant-tables #在[mysqld]下面添加这一行,忽略权限表然后重启mysql:systemctl restart mysqld.service先说解决步骤:1.创建root用户2.给予root所有权限过程:1.创建root用

2020-08-26 17:23:00 537

原创 Navicat远程连接mysql

在windows-cmd窗口ping linux IP地址。在linux,mysql窗口查看mysql的端口show variables like '%port%';(如果没有,请跳过这个步骤)置root的密码为123456set global validate_password_policy=0;validate_password_length(密码长度)参数默认为8,我们修改为6set global validate_password_length=6;完成之后再次执行修改密码语句

2020-08-26 17:06:48 22

原创 CentOS7在线安装mysql5.7

先下载 mysql源安装包wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装mysql源yum -y localinstall mysql57-community-release-el7-11.noarch.rpm检查源是否安装成功sudo yum repolist enabled | grep “mysql.-community.”安装 MySQLsudo yum -y install

2020-08-26 16:45:07 30

原创 spring security快速上手

Spring Security在spring boot项目中加入springsecurity更是十分简单,使用Spring Security 减少了为企业系统安全控制编写大量重复代码的工作。依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

2020-08-23 19:27:48 34

原创 初识spring security

什么是认证进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。系统为什么要认证?认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。认证 :用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户名密码登

2020-08-23 18:16:31 171

原创 Echarts使用树图报错:Component series.tree not exists. Load it first.

这是报错:不用cdn就要下载好js没别的,就是下载,github快:点击这下载方式一:全下载下载后找到echarts.js!!!别用echarts.common.js,这是基础的,没树图!!!方式二:觉得麻烦也可以只下载echarts.js1.点进dist2.下载echarts.js然后就是导入使用了<script type="text/javascript" th:src="@{/lib/echarts/echarts.js}" src="lib/echarts/echa

2020-08-08 22:36:00 77

原创 SpringBoot项目的The temporary upload location [路径]is not valid 问题

本来好好的项目过了段时间突然不能上传了!!!报错如下:2019-06-05 11:04:35.904 [http-nio-8899-exec-10] ERROR o.a.c.c.C.[.[.[/main_service].[dispatcherServlet] Servlet.service() for servlet [dispatcherServlet] in context with path [/main_service] threw exception [Request processing

2020-08-07 21:56:02 86

原创 springcloud搭建

一,创建父工程1.创建maven工程2.配置File Encoding utf-83.支持注解4.规范添加*.idea;*.iml;

2020-08-06 22:09:18 27

原创 选择框级联代码

1.前台选择框注意:form.on(‘select(tutorialCover)’tutorialCover是lay-filter=“tutorialCover” <div class="layui-form-item " > <label class="layui-form-label"><span class="x-red">*</span>封面:</label>

2020-08-06 21:34:41 28

原创 idea的terminal终端,git不弹窗,无乱码

1.先去idea下载目录,这两个文件最后添加-Dfile.encoding=UTF-82.再去git的下载目录,在箭头指向最后添加# 解决IDEA下的terminal中文Unicode编码问题export LANG="zh_CN.UTF-8"export LC_ALL="zh_CN.UTF-8"3.去idea配置bash.exe推荐bin里那个...

2020-08-06 21:25:12 71 1

原创 mabatis自动生成的界面,想要list界面的列表多显示内容

1.实体类加上想多余显示,或是id转换成name的字段封面,权重就是新加的 /** * 删除时间 */ private LocalDateTime deleteTime; /** * 封面 */ @TableField(exist = false) private String picture; /** * 权重 */ @TableField(exist = false) pri

2020-08-05 21:56:02 83

原创 由输入id的文本框,转到选择框选择返回给后台id

1.后台给前台一个id对应name的list,可以直接是List /** * 添加跳转页面 * @return */ @GetMapping("editBefore/{id}") public String editBefore(Model model,@PathVariable("id")Long id){ //这就是原本回显得数据 TutorialsRelation tutorialsRelation = tutorialsRel

2020-08-05 21:39:23 57

原创 常用流式操作(逐渐添加)

点击:曾经写的简单样例1.有个实体类,想获得他的id对应name的一个map Map<Long, Integer> weightMap = chapterRelationList.stream() .collect(Collectors .toMap(ChapterRelation::getChapterId, ChapterRelation::ge

2020-08-05 21:22:16 93

原创 Mybatis新增数据后,马上返回新增数据的id

注意mybatisPlus没有实现该功能,还是靠传统方式。1.在Mapper.xml中的添加方法中加:useGeneratedKeys="true" keyProperty="id"例如: <insert id="insert" parameterType="com.mbyte.easy.chapters.entity.Chapters" useGeneratedKeys="true" keyProperty="id"> insert into t_chapter

2020-08-03 22:23:50 157

原创 上传图片,资源等的实现

1.下是在前台选好要上传的<input type="file" accept="image/*"class="layui-input" tname="icon_file" placeholder="修改头像" id="icon"/>2.表单提交,后台接收 @PostMapping("add") @ResponseBody public AjaxResult add(User user, MultipartFile icon_file){ Str

2020-07-31 15:57:08 73

原创 jar包的bean扫描

jar包的bean是不会自动被扫描的,要自己扫描1.搞个配置类@ComponentScan里面写要扫描的包,注意是可以扫秒子包里的@ComponentScan({"com.mbyte.easy.verificationCode","com.mbyte.easy.emailProducer.listener","com.mbyte.easy.RabbitMQConfig"})@Componentpublic class EnableConfig {}2.配个注解,impor进配置类的class

2020-07-28 12:17:48 107

原创 自己写jar包maven导入使用步骤

1.把自己写的达成jar包,配个下载的插件,<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <sour

2020-07-28 12:12:33 213

原创 Spring Boot的SPI机制

1.SPI思想SPI的全名为Service Provider Interface加粗样式.这个是针对厂商或者插件的,随意插拔。服务发现,就是不用再导入特定的包路径,会在MATA-INF.service自己设置接口的,jar包知用换这路径,原有代码不用变java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。例如:jbbc的路径cj问题,我们代码原来写死的路径的话,没法改,变成配置文件告诉使用者,我提供接口是哪个类,这不就动态了吗。2.SPI约定当服务的提供者,提供了服务接口的一种实

2020-07-28 11:39:03 176

原创 bean的生命体周期

1.显示扫描xml创建容器,根据bean的名字(注解名字首字母小写)和calss解析出全限定类名,反射newInstence获取实例,默认是单例2,DI注入属性或是其他bean的引用,就像service曾调用doa层的方法,引入dao的bean,就是配置的value3.在初始化前aop思想加入后置处理器,在初始刷前后分别进行操作,浙江继承了泛型的类,就是工厂模式这是需要加入ioc的,所有bean都会执行4.进行初始化,这函数在xml中,配置initMathod5.使用bean,初始化成了就能用了.

2020-07-28 11:19:57 159

原创 SpringBoot自动配置底层原理

首先是启动类@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}发现只有一个注解,一个run函数先看@SpringBootApplication注解:@Target(ElementType.TYPE) // 注解的适用范围,其中TYPE用

2020-07-28 11:17:40 115

原创 ajax提交响应状态status为canceled解决办法

这问题给一般是controller耗时很严重注意这不一定是前台异步,前台的async:true,会导致后台的代码也是异步的,也就是说,只要你controller特别慢,那就直接跳过了success,error也不触发,你前台啥反应也没有就一脸懵逼,controller加syngnized都没用!!!,也会被异步处理!!!所以,加个前台的同步async:false解决大问题!!!...

2020-07-25 23:47:30 161

原创 GC简介和垃圾回收算法

GC就是回收不再使用的对象,调用析构函数finalize方法,和构造对应,就是这都是内部的,也可以自己调用,手动释放对象。新生代,老年代,永久代新生代又包括Eden(伊甸园)区和两个Survivor区(from,on幸存区),比例是8:1:1,可见大部分存活不长,对象主要分配在新生代的Eden区上,少数分在老年代。GC后年代更替流程Java虚拟机每次使用新生代中的Eden和其中一块Survivor(From),在经过一次Minor GC后,将Eden和Survivor中还存活的对象一次性地复制

2020-07-25 21:46:34 85

原创 序列化和反序列化

Java序列化概述Java序列化就是指把Java对象转换为字节序列的过程Java反序列化就是指把字节序列恢复为Java对象的过程。序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象,芳方便操作。总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)举例:json/xml的数据传递:在数

2020-07-24 21:20:56 86

原创 为啥用mq,rabbitmq的特点

rabbitMQMQ 是什么?队列是什么,MQ 翻译为消息队列,又叫中间件,就是别人写好的配件,在访问服务器之间岸上队列我们可以理解为管道。以管道的方式做消息传递。.其实我们在双11的时候,当我们凌晨大量的秒杀和抢购商品,然后去结算的时候,就会发现,界面会提醒我们,让我们稍等,以及一些友好的图片文字提醒。而不是像前几年的时代,动不动就页面卡死,报错等来呈现给用户。在这业务场景中,我们就可以采用队列的机制来处理,因为同时结算就只能达到这么多。一瞬间全结账那不乱套了,“想挑战的人排好队,一个一个来”。

2020-07-23 22:33:10 126

原创 rabbitmq自动及手动ACK

主要是确认消息被消费者消费完成后通知服务器将队列里面的消息清除,手动自动就是对异常的处理态度不同。不配置Ack的话,此时的服务是no_ack=true的模式,就是说只要我发现你是消费了这个数据,至于异常不异常的,我不管了。通知Ack机制就是这么来的,更加灵活的,我们需要Ack不自动,而是手动,这样做的好处,就是使得我们开发人员更加人性化或者灵活的来处理我们的业务代码,异常发生不会丢数据,更加方便的处理异常的问题以及数据的返回处理等。下面是通话机制的四条原则:basic.Ack 发回给 Ra

2020-07-23 22:21:17 229

原创 配置rabbitMQ,带集群配置,镜像模式

erlang安装1.上传erlangrz otp_src_23.0.tar.gz2.解压tar -zxvf otp_src_23.0.tar.gz3.创建erlang安装目录mkdir /usr/local/erlang4.进入解压目录cd otp_src_23.05.配置安装信息./configure --prefix=/usr/local/erlang --without-javac没问题就直接第六步备用:有错误就安装erlang,运行./configure提示如下错误

2020-07-21 18:17:16 134

原创 JMM对象创建过程,在内存的存储,

1.对象创建过程:第一次使用1.进行判断java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。分为加载并初始化类和创建对象2.加载并初始化类java是使用双亲委派模型来进行类的加载的,所以在描述类加载过程前,我们先看一下它的工作过程:双亲委托模型的工作过程是:如果一个类加载器(ClassLoader)收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委托给父类加载器去完成,

2020-07-18 20:29:36 122

原创 Vue知识点

Vue3 将使用 ES6的Proxy 作为其观察者机制,取代之前使用的Object.defineProperty1.vue优点?答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;双向数据绑定:保留了angular的特点,在数据操作方面更为简单;组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势;视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只

2020-07-15 18:21:00 289

echarts.js

<script type="text/javascript" th:src="@{/lib/echarts/echarts.js}" src="lib/echarts/echarts.js"></script> <script type="text/javascript" th:inline="javascript"> var myChart = echarts.init(document.getElementById('treeChart')); myChart.showLoading(); var data =[[${treeChart}]]; data= JSON.parse(data); console.log(data) myChart.hideLoading(); echarts.util.each(data.children, function (datum, index) { index % 2 === 0 && (datum.collapsed = true); }); myChart.setOption(option = { tooltip: { trigger: 'item', triggerOn: 'mousemove' }, series: [ { type: 'tree', data: data, top: '1%', left: '7%', bottom: '1%', right: '20%', symbolSize: 12, label: { position: 'left', verticalAlign: 'middle', align: 'right', fontSize: 16 }, leaves: { label: { position: 'right', verticalAlign: 'middle', align: 'left' } }, expandAndCollapse: true, animationDuration: 550, animationDurationUpdate: 750 } ] }); </script>

2020-08-08

erlang+rabbitmq

下面是安装流程 https://blog.csdn.net/code_mzh/article/details/107495098

2020-07-30

抽奖轮播实现的,html,js.zip

点击图片,停止必停到点击的那张 左侧小礼物图标,点击次数控制显示第几张图片 关键代码: stop.style.display="none"; start.style.display="block"; console.log(index); if(zuobi2_index!=-1){ clearInterval(timer); luck.style.left=-zuobi2_index*img_width+"%"; zuobi2_sp.innerHTML=sp[zuobi2_index].innerHTML+(zuobi2_index+1); zuobi2_index=-1; zuobi=-1; } else if(zuobi!=-1){ clearInterval(timer); luck.style.left=-zuobi*img_width+"%"; zuobi2_sp.innerHTML=sp[zuobi].innerHTML+(parseInt(zuobi)+1); zuobi=-1; }else{ clearInterval(timer); zuobi2_sp.innerHTML=sp[index].innerHTML+(index+1); }

2020-04-30

jsp的驱动包.zip

<c items="${data}" var="item"> <tr><td xss=removed>${item[0]}</td><td xss=removed>${item[1]}</td><td xss=removed>${item[2]}</td><td>${item[3]}</td><td>${item[4]}</td><td>${item[5]}</td><td>${item[6]}</td><td><img src="upload/${item[7]}" xss=removed></td></tr> </c>

2020-04-14

DBConnection.java

JDBC的jar包// System.out.println("sql语句是:" + sql); int i=0; //数据库连接 DBConnection db = new DBConnection(); try { PreparedStatement preStmt = (PreparedStatement) db.conn.prepareStatement(sql); preStmt.executeUpdate(); preStmt.close(); db.close();//关闭连接 i = 1; // System.out.println("数据插入成功,sql语句是:" + sql); } catch (Exception e) { e.printStackTrace(); } return i;//返回影响的行数,1为执行成功;

2020-04-13

机组初步认知.docx

免费,有程序class,方法,对象运行存储,磁盘简单认知,任何元器件都是闭合电路 首地址标记同一系列数据 内存上全是变量 磁盘上全是为文件 溢出攻击C语言

2020-04-08

空空如也

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