自定义博客皮肤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的博客

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

  • 博客(130)
  • 资源 (6)
  • 收藏
  • 关注

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

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

2020-07-07 11:50:40 1144

原创 git巨坑2,未提交就pull本地工作区被覆盖

用smart git.在未提交前pull会提示你stage覆盖了就版本回退git reflog 命令查看你的历史更改记录git reset --hard HEAD@{n}(HEAD@{n} 或版本号,就前面那一串数字)Git:避免更新代码导致被还原或覆盖的解决方案结论先行:1、明确分工,相同文件,尽可能只由一个人操作 (根本上解决问题)2、保存储藏->拉取代码->弹出储藏->解决冲突 (推荐,版本记录好看且方便)3、拉取代码,合并时的必填消息不填或为空!最后检查每一个

2020-06-28 15:11:47 7295

原创 mybatis-plus的自动填充时间,@TableField 注解,

@TableField 注解填充策略主要是告诉他我啥时候开始填充,1。在实体类加上@TableField 注解,//字段插入自动填充@TableField(fill = FieldFill.INSERT)private Date createTime;//字段更新自动填充@TableField(fill = FieldFill.INSERT_UPDATE)private Date updateTime;2.看看@TableField的源码@Documented@Retention(Re

2020-06-19 08:45:13 5208

原创 秋招面试知识点----机网,linux等其他篇

公司的背景,业务一定了解rpc远程过程调用,主要是1、服务消费者(client客户端)通过本地调用的方式调用服务2、客户端存根(client stub)接收到调用请求后负责将方法、入参等信息**序列化(**组装)成能够进行网络传输的消息体3、客户端存根(client stub)找到远程的服务地址,并且将消息通过网络发送给服务端4、服务端存根(server stub)收到消息后进行解码(反序列化操作)5、服务端存根(server stub)根据解码结果调用本地的服务进行相关处理6、本地服务执

2020-12-10 22:51:31 392 2

原创 秋招面试知识点----框架篇

IoC控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,就是new 对象,对象的创建由程序自己控制,直接写死的,但是这样的话框架的开发者不知道我们写的类名,没法写死在程序,所以就反射进行创建,放到bean工厂里面,就是ioc容器,用的时候就是@autowore,resoruse使用,默认是单例,个人认为所谓

2020-12-10 22:44:35 327

原创 秋招面试知识点----JVM篇

1.发生栈内存溢出。描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。栈定义存放基本类型的变量数据和对象的引用,栈是线程私有的,他的生命周期与线程相同。每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。为什么会溢出如果线程请求的栈深度大于虚拟机所允许的最大深度,就会抛出StackOverflowError异常

2020-12-10 22:43:42 359 3

原创 秋招面试知识点----多线程篇

juc下有什莫AQS:共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制。就是clh先进先出队列(节点有联系),private volatile int state;//同步状态,使用volatile修饰保证线程可见性,还有就是同步状态cas操作模版模式,就是父类搞个模版,规划好方法执行顺序,就是一个方法里包含其他方法,子类只用修改其中一部分,运行时就会走子类地方法。Au

2020-12-10 22:41:44 210

原创 秋招面试知识点----数据库篇

B树B树相对于平衡二叉树的不同是,每个节点包含的关键字增多了,特别是在B树应用到数据库中的时候,数据库充分利用了磁盘块的原理就是局部i性的思想,装入部分就可以执行,在B树的基础上每个节点存储的关键字数更多,树的层级更少所以查询数据更快,所有指关键字指针都存在叶子节点,所以每次查找的次数都相同所以查询速度更稳定;mysql B+1)B+跟B树不同B+树的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加;(2)B+树叶子节点保存了父节点的所有关键字

2020-12-10 22:40:08 219

原创 秋招面试知识点----集合篇

ArryListArrayList 底层基于数组实现容量大小动态可变。 扩容机制为首先扩容为原始容量的 1.5 倍。如果1.5倍太小的话,则将我们所需的容量大小赋值给 newCapacity,如果1.5倍太大或者我们需要的容量太大,那就直接拿 newCapacity = (minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE 来扩容。 扩容之后是通过数组的拷贝来确保元素的准确性的,所以尽可能减少扩容操作。 ArrayLi

2020-12-10 22:30:52 86

原创 java锁的升级过程

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

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

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

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

2020-09-15 21:53:16 198

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

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

2020-09-15 21:21:10 417

原创 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 102

原创 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 283

原创 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 307

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

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

2020-08-29 18:33:05 176

原创 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 132

原创 修改密码时报错,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 1070

原创 解决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 11313 1

原创 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 155

原创 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 168

原创 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 128

原创 初识spring security

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

2020-08-23 18:16:31 439

原创 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 963

原创 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 406

原创 springcloud搭建

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

2020-08-06 22:09:18 91

原创 选择框级联代码

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 266

原创 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 853 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 168

原创 由输入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 242

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

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

2020-08-05 21:22:16 454

原创 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 1497 1

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

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 163

原创 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 551

原创 自己写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 1169

原创 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 1479

原创 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 287

原创 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 349

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

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

2020-07-25 23:47:30 574

原创 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 238

echarts.js

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 } ] });

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

空空如也

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

TA关注的人

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