自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 个人订阅号使用说明

公众号注册教程:https://jingyan.baidu.com/article/59703552b96b4e8fc00740d4.html 右上角账号详情可以设置公众号头像,名称,下载二维码等,介绍里可以加上微信,左侧菜单栏——》功能——》自定义菜单,可以设置公众号底部菜单,横向最多3个,纵向4个左侧菜单栏——》创作管理——》图文素材,可以发布文章,一天一条群发消息,一条可以包括八篇文章可以设置接收到消息后的一些自动回复...

2020-11-27 17:44:00 1067

原创 spring 或 springboot 的 websocket 里面使用 @Autowired 注入 service 或 bean 时,报空指针异常

spring 或 springboot 的 websocket 里面使用 @Autowired 注入 service 或 bean 时,报空指针异常,service 为 null(并不是不能被注入)。解决方法:将要注入的 service 改成 static,就不会为null了。参考代码:@Controller@ServerEndpoint(value="/chatSocket")public class ChatSocket { // 这里使用静态,让 service 属于类

2020-11-25 11:10:28 1879 4

原创 Linux 启动脚本哈哈哈

#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=websocketserver-0.0.1-SNAPSHOT.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|status]" exit 1 }#检查程序是否在运行is_exist(){ pid=`ps -ef|grep $APP_NAME|gre...

2020-11-10 15:44:57 660 2

转载 Linux系统安装mysql数据库

目录前言1 下载mysql2 解压文件3 配置文件4 安装初始化mysql5 修改密码6 设置远程访问7 设置开机自启动8 配置环境变量前言最近闲着没事,则把mysql的详细安装步骤在这里写一遍,以防后面又忘了。MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。这里的操作系统以centos 7为准,my...

2020-11-09 15:17:43 161

原创 mysql 使用like索引是否生效

只有%在右面的时候like的字段索引生效

2020-11-09 11:43:12 579

转载 WebSocket实现实时通讯

WebSocket实现实时通讯WebSocket是HTML5以后基于TCP协议应用层的一种全双工实时通讯协议。注:全双工:个人了解服务器和客户端可以进行信息的相互传递WebSocket由何而来在没有WebSocket的时候,我们都是基于HTTP协议进行的一种实时通信。而HTTP协议并没有状态,而服务器只会响应来自客户端请求,而他并不具备持续连接.所以我们必须手动去获取:两种方式:长轮询:描述: 在规定的时间内客户端通过Ajax去服务器端发送请求,问服务器端收到了某某某的消息没,如果收

2020-10-29 17:17:05 1552

原创 Java非常好用的工具类库,hutool

官网:https://www.hutool.cn/

2020-10-20 10:08:34 140

原创 好全好全的git命令详解

▍Git是什么?Git是目前世界上最先进的分布式版本控制系统。工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 ▍SVN与Git的最主要的区别?SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器那里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制..

2020-10-20 09:41:02 260

原创 线上问题故障

https://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247500041&idx=4&sn=8b488311fc059ccb8c3c0c80f9699d95&chksm=eae2345bdd95bd4db41bb0f3a9363729ef05c3bc0d05920e673992d9c70c2d8021b6060c7230&xtrack=1&scene=0&subscene=90&sessi

2020-10-19 20:40:44 233 1

原创 关于Redis缓存,这3个问题一定要知道!(java团长)

在Redis缓存中有三个必须要知道概念:缓存穿透、缓存击穿和缓存雪崩。缓存穿透那什么是缓存穿透,它就是指当用户在查询一条数据的时候,而此时数据库和缓存却没有关于这条数据的任何记录,而这条数据在缓存中没找到就会向数据库请求获取数据。它拿不到数据时,是会一直查询数据库,这样会对数据库的访问造成很大的压力。如:用户查询一个 id = -1 的商品信息,一般数据库 id 值都是从 1 开始自增,很明显这条信息是不在数据库中,当没有信息返回时,会一直向数据库查询,给当前数据库的造成很大的访问压...

2020-10-19 08:23:02 195 1

原创 SpringBoot三招组合拳,手把手教你打出优雅的后端接口(java团长)

以项目驱动学习,以实践检验真知前言一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范!本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范,同时再构建新的后端接口也会十分轻松。在文章末尾贴上了项目演示的...

2020-10-19 08:20:47 156

转载 SpringBoot---WebMvcConfigurer详解

目录1. 简介2. WebMvcConfigurer接口2.1 addInterceptors:拦截器2.2addViewControllers:页面跳转2.3addResourceHandlers:静态资源2.4configureDefaultServletHandling:默认静态资源处理器2.5configureViewResolvers:视图解析器2.6configureContentNegotiation:配置内容裁决的一些参数2.7...

2020-09-10 10:32:28 573

原创 MySQL 四种隔离级别

什么是事务事务是应⽤程序中⼀系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原⼦性,⼀个事务中的⼀系列的操作要么全部成功,要么⼀个都不做。事务的结束有两种,当事务中的所以步骤全部成功执⾏时,事务提交。如果其中⼀个步骤失败,将发⽣回滚操作,撤消撤消之前到事务开始时的所以操作。事务的 ACID事务具有四个特征:原⼦性( Atomicity )、⼀致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四

2020-06-15 19:01:09 205

原创 MySQL灵魂100问

索引相关关于MySQL的索引,曾经进⾏过⼀次总结,⽂章链接在这⾥ Mysql索引原理及其优化.1. 什么是索引?索引是⼀种数据结构,可以帮助我们快速的进⾏数据的查找.2. 索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使⽤较多的索引有Hash索引,B+树索引等,⽽我们经常使⽤的InnoDB存储引擎的默认索引实现为:B+树索引.3. Hash索引和B+树所有有什么区别或者说优劣呢?⾸先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是ha

2020-06-15 18:54:59 346

原创 mysql索引和锁

InnoDB的索引结构在InnoDB中是通过⼀种多路搜索树——B+树实现索引结构的。在B+树中是只有叶⼦结点会存储数据,⽽且所有叶⼦结点会形成⼀个链表。⽽在InnoDB中维护的是⼀个双向链表。你可能会有⼀个疑问,为什么使⽤ B+树 ⽽不使⽤⼆叉树或者B树?⾸先,我们知道访问磁盘需要访问到指定块中,⽽访问指定块是需要 盘⽚旋转 和 磁臂移动 的,这是⼀个⽐较耗时的过程,如果增加树⾼那么就意味着你需要进⾏更多次的磁盘访问,所以会采⽤n叉树。⽽使⽤B+树是因为如果使⽤B树在进⾏⼀个范围查找的时候每次都

2020-06-15 17:07:51 214

原创 数据库面试题

1. 什么是索引?索引是⼀种数据结构,可以帮助我们快速的进⾏数据的查找.2. 索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使⽤较多的索引有Hash索引,B+树索引等,⽽我们经常使⽤的InnoDB存储引擎的默认索引实现为:B+树索引.3. Hash索引和B+树所有有什么区别或者说优劣呢?⾸先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进⾏查找时,调⽤⼀次hash函数就可以获取到相应的键值,之后进⾏回表查询获得实际数据.B+

2020-06-15 15:00:15 1622

转载 InnoDB存储引擎

一、InnoDB存储引擎1.InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID)事务的ACID属性:即原子性、一致性、隔离性、持久性a.原子性:原子性也就是说这组语句要么全部执行,要么全部不执行,如果事务执行到一半出现错误,数据库就要回滚到事务开始执行的地方。实现:主要是基于MySQ日志系统的redo和undo机制。事务是一组SQL语句,里面有选择,查询、删除等功能。...

2020-06-15 11:27:33 269

原创 MYSQL中的int(11)

MYSQL中的int(11)到底代表什么意思?11代表的并不是长度,而是字符的显示宽度,在字段类型为int时,无论你显示宽度设置为多少,int类型能存储的最大值和最小值永远都是固定的当int字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,为什么会有无符号的限制呢,是因为ZEROFILL属性会隐式地将数值转为无符号型,因此不能存储负的数值。插入两条数据INSERT INTO int_demo (

2020-06-11 12:22:59 956

原创 filter在springboot

业务需求背景:项目采用微服务架构,在各个服务前面配置一个网关,通过SpringCloud生态中的Zuul组件实现。该网关同时负责页面调度,在各个单页面应用子产品的页面之间进行调度。ZuulFilter挺有意思,对于本服务的Controller请求不会进行拦截,因此需要针对页面请求做一个认证鉴权的Filter。实现第一版首先实现一个Filter进行鉴权及页面重定向(未登录认证状态下跳转到登录页面)。大体逻辑如下:①通过WebFilter进行Filter声明,这样容器在进行部署的时候就会处理该F

2020-06-09 11:25:38 125

原创 spring boot 操作redis 几种数据结构

import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.Red

2020-06-08 17:56:57 206

原创 Matcher,Pattern

import java.util.regex.Matcher;//匹配类import java.util.regex.Pattern;//模式类import java.util.Scanner;public class Example1_2FoundPrice { public static void main(String[] args) { String s="牛奶:89.8元,香肠:12.9元,啤酒:69元,巧克力:132元"; String regex=...

2020-06-08 14:18:53 394

原创 Redis 面试准备

redis是单线程工作模型redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此Redis的的的在性能上对比其他基于硬盘存储的数据库有非常明显的优势。(数据虽在内存,但是提供了持久化的支持,即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务)为什么快:(一)纯内存操作(二)单线程操作,避免了频繁的上下文切换(三)采用了非阻塞I/O多路复用机制Redis的的是完全开源免费的,遵守BSD协议,是一个高性能的键值数据库。是当前最热门的的的NoSql数据库之一,

2020-06-05 10:42:16 116 2

转载 MySQL面试

正文你知道MySQL的基本架构么?你能在纸上给我大致画出这个示意图么?好的那我们按照顺序了解下,连接器是啥?我们要进行查询,第一步就是先去链接数据库,那这个时候就是连接器跟我们对接。他负责跟客户端建立链接、获取权限、维持和管理连接。链接的时候会经过TCP握手,然后身份验证,然后我们输入用户名密码就好了。验证ok后,我们就连上了这个MySQL服务了,但是这个时候我们处于空闲状态。怎么查看空闲连接列表?show processlist,下图就是我在自己的数据库表执行命令的结果,其

2020-06-05 07:37:05 118

原创 MySql知识

关系型数据库,顾名思义,是指存储的数据之间具有关系。这种所谓的关系通常用二维表格中的行列来表示,即一个二维表的逻辑结构能够反映表中数据的存储关系。概念总是拗口难懂的。那么简单来说,关系型数据库的存储就是按照表格进行的。数据的存储实际上就是对一个或者多个表格的存储。通过对这些表格进行分类、合并、连接或者选取等运算来实现对数据库的管理。常见的关系型数据库有MySQL、Oracle、DB2和SqlServer等。非关系型数据库(NoSQL)是相对于关系型数据库的一种泛指,它的特点是去掉了关系型数据库中的关

2020-06-03 14:34:10 302

原创 springboot错误异常处理

@Controllerpublic class AppErrorController implements ErrorController { @Value("${server.servlet.context-path}") private String entryPath; @RequestMapping("/error") public void handleError(HttpServletRequest request, HttpServletResponse.

2020-06-01 11:46:41 161

转载 消息队列

Tip:这三个场景也是消息队列的经典场景,大家基本上要烂熟于心那种,就是一说到消息队列你脑子就要想到异步、削峰、解耦,条件反射那种。异步:我们之前的场景里面有很多步骤都是在一个流程里面需要做完的,就比如说我的下单系统吧,本来我们业务简单,下单了付了钱就好了,流程就走完了。但是后面来了个产品经理,搞了个优惠券系统,OK问题不大,流程里面多100ms去扣减优惠券。后来产品经理灵光一闪说我们可以搞个积分系统啊,也行吧,流程里面多了200ms去增减积分。再后来后来隔壁的产品老王说:下单成功后我们

2020-05-30 16:23:20 280

转载 kafka入门(转载)

一、什么是Kafka?首先我们得去官网看看是怎么介绍Kafka的: https://kafka.apache.org/intro 在收集资料学习的时候,已经发现有不少的前辈对官网的介绍进行翻译和总结了,所以我这里就不重复了,贴下地址大家自行去学习啦: https://scala.cool/2018/03/learning-kafka-1/ https://colobu.com/2014/08/06/kafka-quickstart/ 我之前写过的消息队列入门文章也提到了,要

2020-05-30 15:58:13 123

转载 二叉查找树和红黑树(转载)

转载地址:https://mp.weixin.qq.com/s/-8JFh5iLr88XA4AJ9mMf6g————————————————————————二叉查找树(BST)具备什么特性呢?1.左子树...

2020-05-30 14:40:55 329

原创 指定顺序执行线程

public class Test { /* thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。 比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。 想要更深入了解,建议看一下join的源码,也很简单的,使用wait方法实现的。 t.join(); //调用join方法,等待线程t执行完毕 t.join(1000); //等待 t 线程,等待时间是100.

2020-05-27 11:42:29 109

原创 为啥加锁可以解决可见性问题呢?

为啥加锁可以解决可见性问题呢?因为某一个线程进入synchronized代码块前后,线程会获得锁,清空工作内存,从主内存拷贝共享变量最新的值到工作内存成为副本,执行代码,将修改后的副本的值刷新回主内存中,线程释放锁。而获取不到锁的线程会阻塞等待,所以变量的值肯定一直都是最新的。...

2020-05-27 09:56:43 591

原创 spring处理跨域过滤器

import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRe...

2020-05-08 13:51:55 129

原创 redis分布式锁

原理redis为单进程单线程模式,采用队列模式j将并发访问变成串行访问,多客户端对redis的连接不存在竞争关系,setnx命令来实现命令SETNX将key设置值为value,如果key不存在,这种情况下等同[SET](http://www.redis.cn/commands/set.html)命令。 当key存在时,什么也不做。SETNX是”SET if Not...

2020-04-28 10:23:11 108

原创 POJO最简单的Java对象

JavaBean 负责单一功能的类,用于存储数据定义:1.属性私有化2.必须有无参构造函数3.为属性赋值/取值(setter,getter)

2020-04-17 18:44:17 148

转载 cookie和session

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cookie机制在程序中,会话跟...

2020-04-13 11:14:46 147 1

原创 mysql 中group by 和select 列字段数不同(包括后续解决方法)

mysql 中group by 和select 列字段数不同首先,这个是MySQL对标准sql的扩展这在mysql 中是合法的。在ORACLE中会报错。这是mysql的设计,当group by 字段和select 多字段是唯一的一个分组时,这样能提高效率。但是如果不能唯一确定的话,mysql会随机选一个值。这是要注意的。如果group by 字段对应的结果是多条数据,那么...

2020-04-08 17:48:33 5461 1

原创 substring_index(str,delim,count)以及在mysql中一行数据转成多行中的应用

遇到这个问题,查询了许多资料,终于找到了解决方法,有许多文档中的内容大多是参考过来的没用经过测试,淹没了真正能解决问题的资料,所以有时候对自己知识盲区的问题快速查找资料解决问题的快速很不容易呀问题:将存在的结果中spare2字段一行转成多行打印原有数据:SELECT cname ,spare2 ,spare1 FROM privilege.f_column WHERE id = ...

2020-03-16 11:05:07 543

原创 使用join 注意事项(源自领导分享)

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类:我们 DBA 不让使用 join,使用 join 有什么问题呢?如果有两个大小不同的表做 join,应该用哪个表做驱动表呢?今天这篇文章,我就先跟你说说 join 语句到底是怎么执行的,然后再来回答这两个问题。为了便于量化分析,我还是创建两个表 t1 和 t2 来和你说明。CREATE TABLE `t2` (...

2020-03-11 21:19:08 1003

原创 Java序列化学习笔记

概念: Java序列化是指把Java对象转换成字节序列的过程,反序列化是指再把字节序列转换成Java对象的过程。作用: 序列化最主要的作用就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络中传输或者保存在文件中,序列化的字节流保存了对象的状态以及相关描述信息,,序列化的核心作用就是对象状态的保存和重建。 在很多应用...

2020-03-11 21:17:41 87

原创 在有序的二维数组中查找一个数(二叉查找树)

由于给定的二维数组具备每行从左到右递增以及每列从上到下递增的特点,当访问到一个元素时,可以排除数组中的部分元素。从二维数组的右上角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则移到左边一列。如果当前元素小于目标值,则移到下边一行。可以证明这种方法不会错过目标值。如果当前元素大于目标值,说明当前元素的下边的所有元素都一定大于目标值,因此往下查找不可能找到目标值...

2020-03-10 09:52:29 515

转载 查找数组中任意重复的数字

思路 1标签:哈希使用 HashSet 来进行处理,因为 HashSet 本身不允许出现重复元素,所以当添加元素失败或已经包含该数字时,则表示出现了重复元素,将其返回即可。思路较为简单,就不给图了时间复杂度:O(n),空间复杂度:O(n)代码 1JavaJavaScriptclass Solution { public int findRepeatNumber(int[] nu...

2020-03-10 09:14:38 224

空空如也

空空如也

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

TA关注的人

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