自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 复习JVM

JVM概述简介JVM全称Java Virtual Machine,也就是Java虚拟机,目前大多数的Java虚拟机都是HotSpot。JVM它就包含在JRE(Java Runtime Environment)中。说到这就不免想起JDK(Java Development Kit),那JRE里有什么,JDK里除了JRE还有什么?JRE中的都是Java程序必须的组件,如JVM,Java核心类库...

2020-03-23 21:18:43 172

原创 JDK1.7的HashMap死循环

为什么在JDK1.7多线程情况下会很容易出现HashMap死循环,这个还是要根据它采取的扩容策略来看,它的扩容策略是头插法,因此会导致这样的问题。在JDK1.8改进为尾插法,但并不意味着尾插法能适应多线程并发的场景,我认为其最主要的考虑就是头插法在正常情况下是与原来链表顺序相逆的,而尾插不会改变其顺序。第一阶段:线程1和线程2同时开始扩容,但是线程1在执行完Entry<K,V> next = e.next后由于不可控因素(如CPU调度)暂时失去执行能力,此时Thread获取到CPU资源,并.

2020-08-25 10:44:04 383

原创 回顾数据结构——使用两个栈实现一个队列和用两个队列实现一个栈

今天下午有面试,早上先来无事,写一篇博客压压惊,由于时间不多,先写个思路和实现代码,图后面有时间补上。使用两个栈实现一个队列核心思想:因为栈是先进后出的,所以自身带有翻转的光环,那队列不就是栈翻转后的结构么,因此只需要将stack1的数据给它按照栈的特性放到stack2上那就解决问题了package com.wrial.kind.design;/* * @Author Wrial * @Date Created in 11:24 2020/8/18 * @Description 使用两个栈实

2020-08-18 11:54:31 255

原创 根据商城首页需求编写ES映射

在编写ES映射前先看看JD商城的检索页面,然后根据这个页面编写自己的检索映射,对于这些品牌,品牌属性和所属分类都是要保存的下面这些手机就是根据上面条件检索出来的ES数据结构的编写那一个检索的实体中,需要哪些信息呢?哪些是需要被检索的,哪些又是不需要被检索的,哪些能进行模糊匹配,哪些不能进行模糊匹配,以及哪些能够进行内部匹配(嵌入式,扁平化处理,防止数据扁平化搜索)等等实体数据结构的思考过程下面先大致来拆解一下具体商品的数据结构(以手机为例,具体的信息都是查出来的)第一种方案{ skuId

2020-05-22 11:35:56 308

原创 使用SpringBoot整合ES

整合ES的要求很低,只要能发送请求,那它就能操作ES,因此,下面来分析一下那种整合ES的方式更为优雅高效ES端口选择ES服务器有两个可选端口,一个是9200(HTTP),一个是9300(TCP),可以通过操作TCP连接来通过9300端口进行ES操作,但是官方不建议使用9300来进行操作,后续版本会废弃相关的jar包,因此我们的端口选择只能是9200第三方工具选择既然是只能操作9200端口,那也就是能发送HTTP请求的工具都是可以的(比如都可以使用postman来进行es操作)JestClie.

2020-05-18 22:41:41 20656 4

原创 ES进阶语法

在练习语法前,先导入官网中的数据,来进行各种的语法测试导入数据samples

2020-05-18 18:45:33 522

原创 Docker安装nginx

docker run -p 80:80 --name nginx -d nginx:1.10docker container cp nginx:/etc/nginx . //将Nginx文件赋值到当前目录,并改名docker stop nginxdocker rm nginxdocker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/ng.

2020-05-18 18:32:07 231

原创 ElasticSearch安装及操作

安装ElasticSearch需要安装ElasticSearch服务器和一个可视化界面(Kibana),它们的关系就和mysql和mysqlworkbench一样。安装ElasticSearch先从镜像仓库拉一个镜像过来(版本自己选择) docker pull elasticsearch:7.4.2创建映射目录方面和docker内的一些文件做映射(方便配置)mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearc.

2020-05-17 21:33:42 694

原创 JSR303参数校验实践

参数校验主要是对前台传参的合法性监测,下面就来了解Java中参数校验的一些知识简单的参数校验要想实现一个简单的参数校验很简单:给需要校验的字段加上相应的规范注解有需要可以自定义message信息在校验时加上@Valid注解在需要校验的Bean前可以给校验的Bean后面紧跟一个BindingResult就可以获取到校验结果如下为校验注解@Data@TableName("pms_brand")public class BrandEntity implements Serializable

2020-05-13 14:04:19 379

原创 使用阿里云OSS完成文件上传·

文件上传的几种方案简述服务器上传模式用户上传数据到服务器,然后服务器再上传到阿里云OSS上优点:安全性比较高,逻辑简单缺点:会导致服务器承担一些不必要的压力,对服务器资源损耗大,也成为了服务器性能的瓶颈因素之一直接上传模式用户通过APP/浏览器直接通过账号密码上传文件到OSS服务器优点:实现简单,不会给服务器带来巨大开销缺点:不安全,每次访问时携带了秘钥(JS代码中)策略上传模式首先用户先给服务器发送上传请求,然后服务器给客户端颁发证书(根据上传策略),然后客户端携带token后上传文件

2020-05-09 21:24:12 1241

原创 商城三级分类拖拽与增删改及其批量操作

上一篇中实现了三级分类的基本页面,下来就完成三级分类的的修改删除及其批量操作。前端开发增加和删除使用Vue中的插槽机制,在el-tree中添加一个spn,slot-scop中使用JS解构传入node和data,在里面添加两个button一个为Append一个为Remove,然后为其绑定单击响应函数分别为append(data)和remove(data) <!-- 使用vue slot插槽机制 解构传入当前节点和节点数据 --> <span class="custom-

2020-05-09 15:32:17 342

原创 商城三级分类的设计与开发

数据库的结构设计三级分类的sql如下,要有三级分类,那就需要两层的父类id(cat_id,parent_cid)需要有商品的名称和层级及其显示状态,还需要有各自的优先级,单位,每层的数量,还有图片信息。DROP TABLE IF EXISTS `pms_category`;CREATE TABLE `pms_category` ( `cat_id` bigint(20) NOT NUL...

2020-05-05 22:11:38 3181

原创 Vue结合ElementUI快速开发

在安装Vue脚手架之后就可以导入ElementUI的包,使用ElementUI完成项目开发。ElementUI的官网中国站要使用ElementUI需要安装ElementUI可以通过npm安装(推荐)通过CDN形式引入安装完ElementUI后需要在Vue中main.js中引入ElementUI和它对应的CSS,并且开启使用ElementUIimport ElementUI fro...

2020-05-04 23:24:11 450

原创 Vue模块化开发

在Vue中封装了很多的模块供开发使用,因此使用vue开发单页项目是一件很愉快的事情,学习过js或者Vue就可以知道很多的重复功能都可以做成组件来供重复使用。条件:需要在安装有node的环境下(如果速度较慢npm install cnpm -g --registry=https://registry.npm.taobao.org)cnpm install -g vue-cli --安装v...

2020-05-04 22:40:20 2658

原创 SpringCloud Alibaba商城项目实践

为什么采取SpringCloud Alibaba,处于以下几方面考虑,首先是因为SpringCloud中的一些组件已经宣布停止更新,其次SpringCloud Alibaba提供的这些组件功能更加强大对于SpringCloud Alibaba的信息,官网上无论是教程还是文字都很清晰github地址在本项目中会用到以下组件SpringCloud Alibaba Nacos作为注册中心...

2020-05-03 14:27:17 4509 6

原创 使用人人开源代码生成器自动生成项目简单代码

人人开源地址使用git clone 将generator项目克隆到本地将代码生成器放入到项目中(去掉项目本身的git信息)使用IDE打开父项目(是需要生成东西的项目)将代码生成器项目加入到子模块中接下来就要配置数据库信息,因为需要逆向生成代码需要生成那个数据库的信息就修改url后的数据库名然后就去配置properties文件#代码生成器配置信息# 主路径#mainP...

2020-05-01 18:09:14 3674 1

原创 使用人人开源秒搭SpringBoot2.x+Vue的前后端分离管理平台

对于一些简单的增删改查写起来太浪费时间,因此使用人人开源里面的脚手架搭建项目后台人人开源地址搭建SpringBoot服务端git clone项目到电脑上将项目用IDE打开,我这块就放到我的微服务项目总工程目录下,先要将原本项目的git信息进行删除将此项目加入到父项目的子模块中进入项目,找到DB文件,并将它放到自己的数据库执行完如下然后在dev下修改数据源信息进行启动...

2020-05-01 11:07:25 918 1

原创 Docker安装Mysql和Redis

环境:VMWare+Centos7在安装前一定要先配置镜像加速器,我采用的是阿里云镜像加速器,否则下载速度会很慢安装Mysqlpull一个Mysql镜像docker pull mysql:5.7启动并配置端口 名称 文件映射(为了方便修改mysql的配置,不用进入mysql,可以直接在外面进行配置) 密码等等-v /mydata/mysql/log:/var/log/mys...

2020-04-30 22:41:52 240

原创 重学Netty(六)——ChannelHandlerContext

所谓ChannelHandlerContext就是ChannelHandler上下文,因此它就可以看做是一个管理它所关联的ChannelHandler。那ChannelHandlerContext和ChannelHandler和ChannelPipeline和Channel之间的关系又是怎样的呢?Channel前面也说过Channel的获取和使用,在这说一说它的生命周期,说到Channel的生...

2020-04-18 13:51:52 14472 2

原创 重学Netty(五)——细说一下ByteBuf

在上篇文章也提到ByteBuf和它的几种模式,下面就来了解一下ByteBuf的其他方面,及其优点。还有一些关于ByteBuf池化的一些问题。ByteBuf的几种获取方式在Netty中可以通过下面三种方法来获取ByteBufByteBufAllocator可以使用ByteBufAllocator来进行Buffer的按需分配,可以自己定义大小,也可以自己决定是否使用Buffer内存池。B...

2020-04-16 23:11:27 706

原创 重学Netty(四)——进一步了解Netty的组件及其作用

在上一篇文章简单的编写了EchoServer和EchoCLient,接下来就对这些常用组件进行深入了解Channel在传统的BIO编程中,我们都会使用Socket进行端口绑定,连接等操作,但是在NIO中我们使用的是SocketChannel(可以简单的理解为Socket+Channel),它也可以进行绑定,连接,读写等操作,也可以完成Channel的关闭操作,因此不难发现Channel的一...

2020-04-15 13:57:15 550 2

原创 重学Netty(三)——Netty的概念及其简单的Echo服务器编写

Netty简介刚开始学习一门技术的时候,不要先去看那些博客和视频,应该先去官网上通读一遍,然后有什么看不懂的再去找其他途径。下图为官网截图据官网描述,Netty是一个异步的事件驱动型的网络应用框架,可以用来快速的开发高性能且可维护协议的服务器和客户端。也可以从官网中看到它的特点:从设计方面来看:不仅可以实现非阻塞,当然也可以实现阻塞socket通信,还有灵活可扩展的事件模型,还可以自定...

2020-04-13 16:29:37 352

原创 重学Netty(二)——简单回顾NIO及NIO网络编程

NIO知识NIO也被大家成为NewIO或者是Non-Block IO,顾名思义,非阻塞就是采取了一系列的措施解决了传统IO阻塞的问题,提高了资源利用率。NIO核心原理NIO和BIO的不同...

2020-04-12 15:51:47 454

原创 重学Netty(一)——简单回顾BIO及网络编程

BIObio也叫同步阻塞IO,位于java.io包下,也就是面向数据流的IO(Stream)它的整体架构如下图所示可以从上图看出除去文件系统,剩下的就是BIO,可以按照读写单元将它们同意分为两类面向字节流InputStreamFileInputSteam -> BufferedInputSteam (文件操作相关)ObjectInputStream等等 (数据对象...

2020-04-09 22:49:07 718

原创 Linux常用命令复习

操作系统的功能级别0——停机1——单用户2——多用户,没有NFS3——完全多用户4——保留5——带有图形界面6——重启系统的关闭shutdown,shutdown -h nowhalt——正常关闭reboot——重启poweroff——关机后还会关电源系统的注销:logout简单命令pwd:查看当前目录cal:日历date:日期who:显示当前用户和登...

2020-03-24 11:42:46 153

原创 复习八大排序

这篇文章用来复习一下数据结构中常提到的八大排序和三大查找算法八大排序八大排序都有哪些?八大排序按照种类可以分为以下几种:交换排序:冒泡,快排插入排序:直接插入,希尔排序选择排序:直接选择,堆排归并排序基数排序下面就按照顺序对八大排序进行复习交换类排序冒泡 // 最简化版的 public static void myBubbleSort(int[] arr)...

2020-03-22 11:14:58 159

原创 3万字长文带你复习JUC

在复习JUC之前,先搞明白什么情况下才能线程安全,也就是线程安全所具备的条件原子性有序性可见性那从上面这几个角度来考虑Synchronized和volatile的区别?Synchronized可以保证原子性,有序性,可见性volatile可以保证有序性和可见性,但是不能保证原子性还有一种类是绝对安全的,它就是不可变类(immutable),它的不可变也就意味着不能进行写操作,...

2020-03-20 22:03:14 200 1

原创 项目小点整体

怎么实现第三方登录现在很多第三方登录都是使用的,我在项目中使用的是GitHub第三方登录第一步先要在GitHub上配置自己的服务器地址和回调的地址用户点击登录,到ClientServerClientServer通过redirect到GitHub认证服务器服务器检查请求,并返回登录表单页面用户填写后,发送给认证服务器认证服务器检查正确性,并返回authorization_code给C...

2020-03-19 11:22:18 98

原创 Spring源码深度解析(十)——Spring内置后置处理器哪来的

今天在看源码的时候,有些后置处理器莫名其妙就加了进来,因此我就看看它是从哪来的?Spring内部会加载的选项如下/** * Register all relevant annotation post processors in the given registry. * @param registry the registry to operate on * @param sour...

2020-03-17 23:24:35 507

原创 Spring源码深度解析(八)——Spring环境的准备化工作

准备就包括了prepareRefresh(),obtainFreshBeanFactory()和prepareBeanFactory(beanFactory)。下面就逐个向下分析prepareRefresh()主要是对容器的激活标记的设置,启动时间,验证环境还有初始化一个用于对消息事件的提前发布的Set,代码及其注释如下/** * Prepare this context for ref...

2020-03-17 12:11:28 158

原创 Spring源码深度解析(七)——简单模拟Spring类扫描过程

此文章中会简单的模拟一下Spring的scan方法,Spring底层使用的更优的扫描算法,此处就以简单的文件操作完成实现步骤:自定义注解作为扫描的标识,作用就同@Component作用在Spring中是利用给配置文件中添加@ComponentScan注解,此处就直接写出basePackage,原理和第一点相同调用方法,并打印代码:自定义注解Wa.javapackage anno;...

2020-03-16 23:03:08 246

原创 魔音短视频技术点整理

魔音短视频是在慕课网上项目实战中的一个项目,在这个项目中我学习到了很多,也知道了很多东西,在此记录一下用到的技术和某些功能的实现流程几个工具类自定义统一响应格式:用于结果返回,很有用package com.wrial.utils;/** * @Description: 自定义响应数据结构 * 这个类是提供给门户,ios,安卓,微信商城用的 * 门户接受此类数据后...

2020-03-16 22:57:43 411

原创 Spring源码深度解析(六)——AnnotationConfigApplicationContext详解

今天的猪脚是AnnotationConfigApplicationContext,记着开始看这个类的时候已经是很久以前了,看起来简简单单几条代码,背后却是上万条。先来整体分析,然后后面再局部剖析。后面就简称为ACACACAC到底是用来干嘛的这个类就是我们常常提到的应用上下文,可以做这么说吧(个人理解),它包含Spring应用的所有信息(包括配置信息),它负责将Spring中零零散散的信息和...

2020-03-16 11:19:37 4706

原创 Spring源码深度解析(五)——Spring中的常用后处理器和扩展器

Spring的后处理器的作用是什么?能干什么?有多强大?读完就了解了。可以这么说吧,Spring中Bean的初始化基本就是围着后处理器来完成的功能强化,比如AOP也就借助于后处理器完成的。BeanPostProcessorBeanFactoryPostProcessorBeanDefinitionRegistryPostProcessor继承BeanFactoryPostProcessor...

2020-03-15 20:52:01 254

原创 Spring源码深度解析(四)——模拟mybatis和原理分析

说到Mybatis就顺理成章的想起了@Mapper,@MapperScan,@Select,@Update等等注解,下面就来模拟一下它的过程。用到的知识点:自定义注解,FactoryBean,Spring的构造方法装配,ImportBeanDefinitionRegistrar,@Import,JDK动态代理需要去模拟mybatis需要想清楚的是目标是什么?目标就是将抽象接口进行注入值,也...

2020-03-15 14:33:57 202

原创 Spring源码深度解析(三)——使用Aware接口编写SpringUtils

在了解过一段时间源码后,深深的被折服,就那简简单单的ApplicationContext初始化那几条代码都够我研究很长一段时间了。Spring强大的地方很多,它留给了我们很多能够扩展的地方比如BeanFactoryPostProcessor,BeanPostProcessor等等,今天来说一个也是很牛的接口就是Aware接口。由于一次我的特殊要求,Spring提供的功能并不能满足我的需求,那我就...

2020-03-14 18:34:20 205 1

原创 Netty编写TCP服务器和SpringBoot整合

以前在写项目的时候用到过,这个tcp服务器的功能主要就是不间断的完成客户端发来的TCP连接请求,先是使用的阻塞式IO,然后又改为NIO,NIO写的时候出现了一些问题,就改用为Netty了前言:此文仅提供思路,环境SpringBoot2.x,JDK8,Mysql5.7导入Netty的依赖由于Netty并不是属于JDK自带的,它是一个开源的高性能的Java网络框架,是由JBoss提供的。注意:...

2020-03-14 17:41:44 6482 2

原创 JDK8HashMap源码

进入这篇文章之前,我想清楚的说一说怎么去理解HashMap源码。它先是使用的hash算法,那么哈希算法需要注意的那就是怎么hash,怎么减少冲突,怎么避免冲突。然后是Map,Map是存储这些<K,V>结构的Entity,那么HashMap需要注意的就是HashMap的初始化过程,什么时候进行数组(桶)扩容等等构造和初始化要深入了解HashMap就必须先了解它的这几个比较重要属性...

2019-11-29 23:56:04 144

原创 回顾数据结构(Java版)——排序算法的分类以及时间复杂度

排序算法分类排序算法大致可以分为内部排序和外部排序。内部排序:在内存里进行的排序插入排序:直接插入排序和希尔排序选择排序:简单选择排序和堆排交换排序:冒泡排序和快速排序归并排序:采用分治法,将子序列排序并合并基数排序:属于分配排序法,和桶排序思路相同外部排序:内存结合外存进行的排序,一般在数据量很大的情况下,无法将数据全部加载在内存里时间复杂度时间频度一个算法中语句...

2019-10-15 22:15:55 168

原创 回顾数据结构(Java版)——递归解决八皇后问题

八皇后是一道十分经典的数据结构与算法的题目,八皇后题目的核心思想就在一个8*8的棋盘中,每行摆放一个皇后,并且每个皇后不能同行或者同列甚至斜着偷瞄一眼也不行,下来就使用递归来解决八皇后问题使用递归来解决八皇后十分的简单,递归会不断的前进和回退,从而找出所有的解。实现步骤:使用一个数组queen来代表这个棋盘,为什么可以用一个一维数组来代表二维数组呢?很简单,因为每一行或者每一列只能放置...

2019-10-15 20:37:11 188

空空如也

空空如也

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

TA关注的人

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