- 博客(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
2020-08-08
抽奖轮播实现的,html,js.zip
2020-04-30
jsp的驱动包.zip
2020-04-14
DBConnection.java
2020-04-13
机组初步认知.docx
2020-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人