自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 es的使用

ElasticSearch学习笔记ES是什么ElasticSearch 是一个高可用开源全文检索和分析的组件,官方解释说它是一个分布式、可扩展、实时的搜索与数据分析引擎。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用。为什么要用它使用es,是因为数据量大的时候,如果所有数据存入关系型数据库,会出现,难以全文检索,效率低,难以完成数据库分析的问题。所以,为了提供查询效率,同时实现全文检索,所以我们采用了ES。ES主要解决问题全文检索相关数据:(1) 搜索“UK

2021-05-26 14:43:31 3058

原创 Redis的hash初步使用

起因这是第一次接触redis的hash使用,所以记录一下,一个新手如何上手redis的hash是什么首先,要了解这个东西它是什么,然后才进一步的学习。redis的hash可以理解为:map内部再放了一个map,其中外层的map是所有redis的结构:键值对。但是,内层的值,也是一个map,可以存放键值对。这样的结构非常适合存放我们的对象。底层实现:一个map,然后有一个list存放了所有map的key。有些命令需要知道map内部存储的所有key或者value,所以就需要通过我们的这里list去查找

2021-05-25 15:15:34 297

原创 延时队列的几种实现方案比较

背景项目涉及到了一个自动过单的问题,24小时后无人操作,自动通过什么的。所以,为了实现这个功能,决定采用延时队列。那么,如何实现一个延时队列呢?我去各大博客进行了技术调研,整理了一下几种方法。供大家参考,也希望大家评论区提出更多的方法技术方案基于redis的延时队列基于DelayQueue的延时队列(java)实现原理主要是利用了PriorityQueue这个类,内部是一个平衡二叉树,满足一定条件的时候,会取消返回数据,让阻塞等待数据的经常继续执行。以此实现的阻塞功能。基于定时的实现各个语言应

2021-05-21 14:17:17 1940 1

原创 Go语言各种常见类型的默认值和判空方法

起因(解决的问题)由于在项目中设计到了类型的判空,所以突然好奇起来,每个类型如果只是声明,而没有初始化,那么默认值是多少?怎么判断它是不是空值?所以去整理了一下基本类型的默认值常见的基本数据类型有:数据类型(int,uint,float之类的),字符串(string),结构体,数组,指针。那么他们的默认值是:数据类型默认值int0float0.00000string“”结构体根据结构体内部的基础数据类型进行初始化赋值,下面会有demo数组(切

2021-04-12 16:14:40 10446

原创 WINDOWS下,protoc与protoc-gen-go安装

背景最近转了go语言,然后代码生成器用的是proto。就开始研究一下怎么用proto制定协议和生成go代码了。假设你的go环境已经安装好了,那么接下来要做的东西其实就是安装protoc与protoc-gen-go了。protoc安装直接去git找到protoc的开源代码,然后下载指定版本就好了。我们项目用的版本要求是3.6以上的,然后我是下载了3.15版本。git下载链接我下载的是protoc-3.7.1-linux-x86_64.zip,可以直接解压到任意目录下,可以得到下面的文件:然后进

2021-03-25 14:50:34 7979 4

原创 Goland搭建第一个go项目(可以导入自定义包)

描述今天在学习了go的语法后,单纯运行单个的go文件已经不能满足我的需求了。所以我开始去尝试建立go项目,可以访问其他自定义的packet的函数和变量。基本配置流程我用的是goland编译器。所以就是直接新建go moudle项目就好了(如果你不想在gopath下新建项目。而是自己随便新建,那么就新建go moudle项目即可)新建:项目的路径可以随便写。用了go module,限制少很多了然后就可以在新建的项目里进行一同操作了。我新建了一个src目录,用来存放我的源代码。然后s

2021-03-18 14:58:13 1085

原创 bootstrap的ace模板+vue的初步使用

开头简述简单来说,就是ace模板,我们如果有看中的页面,那么,可以直接把对应的html代码copy过来。但是,copy的时候,要注意将css和js代码放到特定的位置,不然就无法重现ace模板原本的样子了。那么,下面就开始介绍一下怎么个科学copy方法吧。过程找到ace的login页面,将< head>内引入的第三方的css和js文件之类的,放到vue的index.html的< head>内。这是因为,vue都是通过组件替换index的div代码块,如下:<div

2021-02-24 22:55:34 961

原创 网络攻防第一步——搭建web攻防环境

简介网络攻防的练习,少不了一个充满漏洞的服务器以及相关的功能。还有就是一台安装好了各种攻击软件的机器。而这些,我们可以直接直接用虚拟机搭建出来对应的服务器。被攻击者成为靶机,攻击者称为攻击机。那么,简单介绍以下两台机子怎么安装吧。靶机的安装直接用虚拟机,安装vmx文件,打开就好了。参考:https://www.e-learn.cn/topic/3753757攻击机安装我们采用的攻击服务器是kali-linux,我们可以直接去官网安装。不过,为了安装方便,版本对应完成,我们建议采用vmwav

2020-12-29 22:47:53 1386

原创 流媒体之播放flv格式的视频

起因项目之前支持高清预览,但是不支持flv格式的视频。所以,为了让他支持flv格式,我去整理了一些相关资料,发现,有两种方式,一个是采用插件,一个是使用b站开源的flv.js。详情见下:flv.js简介Flv.js 是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。概览:一个实现了在 HTML5 视频中播放 FLV 格式视频的 JavaScript 库。它的工作原理是将 FLV 文件流转码复用成 ISO B

2020-11-17 11:40:23 3031

原创 mysql数据类型的梳理

简介想写本篇博客,是因为发现了mysql的数据类型非常的多。但是,其中的差异,为什么要用这样的数据类型,大多数人是没有去仔细了解的。所以,自己对这方面有点好奇,去学习了一下。笔记如下:mysql常见数据类型数值类型int:int最大长度是11位。从 -2^31 (-2,147,483,648) ^^到 2^31 - 1 (2,147,483,647)^ 的整型数据(所有数字)。存储大小为bai 4 个字节。11也是int类型的最大长度,其中第一位表示符号+或者-,后面十位表示数字。 所以,如果指定

2020-11-06 11:14:29 832

原创 vue项目部署中,tomcat,nginx扮演的角色和作用

一.tomcat在vue部署的时候的作用1. 问题:之前对于前端的理解一直是:前端就是各类css,js,html文件。没有什么逻辑执行。但是,前后端分离之后,发现我们浏览器访问的前端提供的路由,也是可以返回页面的。但是前端明明就是一个没有逻辑,只有页面的东西。那么,拦截请求,转发之类的是谁处理的呢?(比如我们后端写了一些filter,一些controller,可以拦截请求,并且指出位置。但是,前后分离之后,我们访问的路由没有人拦截了,又怎么找到到文件呢?)2. 思考:答:针对括号内的文件,我们需要知

2020-10-25 21:42:22 1541

原创 Thrift框架入门(Java)

定义Thrift框架是什么?答:thrift是二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。Thrift框架解决了什么问题?答:它提供了一套解决方案,可以解决各系统间大数据量的传输通信以及系统之间语言环境不同,需要跨平台的问题。Thrift的特点是什么?答:Thrift是一个服务端和客户端的架构体系;需要你在系统中搭建好通信双方的接口逻辑。Thrift 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports),Thrif

2020-10-09 14:18:18 3178

原创 为什么myisam查询比innodb快?

是什么了解这个问题,需要先了解innobd和myisam先。这两个是数据库的实现引擎,其中innodb是比较新的,myisam是5.5之前用的,双方各自有各自的优点。详情请看问题解答(需要对于innodb和myisam有一定的理解才看得懂)为什么myisam查询比innodb快?主要原因有三点:查询的时候,由于innodb支持事务,所以会有mvvc的一个比较。这个过程会损耗性能。查询的时候,如果走了索引,由于innodb是聚簇索引,会有一个回表的过程,即:先去非聚簇索引树中查询数据,找到数

2020-10-08 17:31:53 7072 13

原创 docker本质是轻量级虚拟机?不,它是一个进程而已

参考docker是如何通过内核的系统调用模拟出一个虚拟机的。docker底层的简介怎么理解docker就是一个进程?

2020-10-07 01:12:58 565

原创 细节!UDP最大传输报文长度是512字节还是1472字节?

疑问今天学习DNS服务器的时候,发现,DNS使用的通信方式,有UDP和TCP两种。一般情况下使用的是UDP进行DNS域名查询。但是,在以下两种情况会使用TCP进行域名查询:但是,这里就有个问题了。UDP支持的最大数据不是受限于以太网帧的MTU1500字节吗?那么计算下来,也应该是1500-20-8=1472字节啊。怎么就是512了?解答进行了一波搜索,终于找到原因了。以太网帧在局域网中的MTU是1500byte,但是在非局域网环境,如:internet下的时候,MTU是各个路由器进行一个配置的。所

2020-10-06 17:48:06 8155 8

原创 Java泛型的理解

是什么?定义:泛型,即“参数化类型”。所谓的参数化,指的就是:原来我们的类型是写死的,现在是我们真的声明的时候,在指定,传入具体的类型。例如:List<Interge> a = new ArrayLisr<>();其中,Interge就类似于一个方法调用中,传入的参数。在遍历的时候,会将内部的符号都变成此参数分类:操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。为什么?使用泛型机制编写的程序代.

2020-08-26 18:43:38 420

原创 spring boot的websocket五种实现方式

方式一:注解实现原理websocket是一种强连接+双工信道的技术,强连接是指:前后端之间,不是http那种无状态的单次请求,单次响应的交互模式,而是强后端之间(其实是浏览器和服务器之间)建立socket信道,前端可以向着信道写入消息,后端也是。而双工信道指的是,服务器不是被动等待响应,而是可以主动发送信息给浏览器,因为信道已经建立起来了,服务器也找得到客户端的地址了。同时,由于建立了信道,浏...

2020-08-09 18:32:00 3667

原创 Java并发编程系列:简单小结:future,runable,@Async

异步介绍两个方法前,先简单介绍一下常见的异步处理方法。包括了:runnable+callable:两个都是简单的开启一个thread进行处理,不同的是,callable可以有返回值。

2020-08-09 17:42:00 681

原创 java方法命名规范(持续更新)

前言:命名的目的是见名知意。业界目前没有强制的命名规范,但是用过了JPA之类的人,自己新建DAO层的方法的时候,也有一个参考,所以,用hibernate那一套,其实挺好的,维护起来也是很方便。增删查改的方法的命名规范这套是阿里的,对应增删改查:这套是我觉得也不错的:Dao 接口命名:这里的方法名字最好对应着sql语句,这是最直接的。然后表示条件用By作为介词,表示查询列表用list前缀。insert :插入batchInsert :批量插入selectOne :查询一个数据sel

2020-07-24 15:12:06 10959 2

原创 JSP理解:从编译原理角度理解jsp最后如何生成html

注:本篇文章更多的是一篇理解的散文。不是详细教程。说了一下我学习了spring系列套件和thymeleaf之类的模板之后,再去回顾jsp的感受。是什么jsp就是一个动态页面,这个说法是参考html的,那个是个静态页面。html访问过程:浏览器直接访问,服务器把html用二进制串传过去,浏览器再渲染的。但是,jsp中有很多的java代码,当有请求来到的时候,服务器会处理请求,根据请求的参数,执行对应的逻辑,注入数据到页面中。jsp访问过程:这个过程是服务器根据请求url定位到了对应的jsp页面,然

2020-07-24 14:15:39 983

原创 从整体到细节,简单的Bootstrapt的使用

定义什么是Bootstrapt?就是一个前端的框架,它提供了一些很方便的css样式给我们,让我们可以直接将这些css样式用在dom块中,实现一个漂亮的界面。同时,这个功能也简单的封装了很多的jquery语法之类的,可以为我们使用。我们通常来说,用的最多的会是:全局的 CSS 设置,定义基本的 HTML 元素样式,以及一个先进的网格系统(基础布局)布局组件JavaScript 插件:Bootstrap 包含了十几个自定义的 jQuery 插件。那么,我们接下来围绕着这三个点进行一个操作,可以快速

2020-07-22 16:25:32 462

原创 Struct2的回顾

起因1.由于项目中涉及到了struct那一套东西,所以我去回顾了一下Struct2。Struct2是什么定义:Struct2就是一个MVC框架。MVC框架无非就是请求拦截预处理,请求分发,响应结果注入模板引擎这三个步骤了。和看过的公司自研的MVC框架一样,都是通过拦截器之类的功能,利用dicpatchServlet之类的类,去拦截request,而后再将request中的请求路径进行一个划分,获得到对应的uri,通过uri可以反射,找到对应的处理类。而后就是一个链式模式之类的,去层层过滤,拦截

2020-07-21 12:52:31 136

转载 sqlserver的安装教程

https://blog.csdn.net/CHQC388/article/details/104565370

2020-07-11 21:58:33 930

原创 springboot实现简单的定时器功能:@Scheduled

介绍:@Scheduled是什么@Scheduled是spring自带的定时器注解,由于约定大于配置的思想,里面已经有默认的参数配置好了一个线程池给你放一些定时任务。当然,你也可以通过继承对应的配置类,自己实现schedule相关的属性。使用场景:为什么要用主要是项目中有一些场合,需要定时执行某些更新的任务。怎么用:来个Demo给你理解代码:package com.demo.javaspring.定时器;import org.slf4j.Logger;import org.slf4

2020-07-02 15:17:27 343

原创 java开发——slf4j日志的理解和比较篇

定义:日志是什么日志主要是程序开发过程中,为了满足程序员观察数据变化搞出的东西。在java1.4之前,都是依靠println()完成这部分内容的。1.4之后,java自己出了一个相关的包。但是可能不是很好用,所以后面出来了一个log4j,还有slf4j之类的日志包。为什么要用日志日志篇主要记录的是日志的用法,我们平时开发的时候,可能会比较喜欢用:System.out.println();的方法来记录日志,但是,实际上这种方法可能封装的信息不是很够,在真正的企业开发的过程中,我们很可能只依靠sout输出

2020-07-02 14:45:17 443

原创 js写了retrun后,后面代码却还是在执行

起因项目中写了一个函数:判断数组,如果有不符合的地方,就return,结束函数;否则继续进行后续处理。代码function a(){ $("input[name='a[]']").each(function(){ var vid=$(this).val(); if (vid==null || vid==""){ alert("流量必须填写"); return false;

2020-06-30 18:06:11 6023

原创 js利用日期和时间戳转换实现时间的对比

起因最近项目涉及到了一个有效时间的判断的需求。由于数据库存储的不是时间戳,而是一个如下格式的时间:2020-06-16 10:12:44所以,当这个时间直接传递到了前端的时候,进行一个时间的对比会变得比较麻烦。(注:由于dto里面的time变量是Date类型,所以我也无法后台转化为时间戳,再返回给前端。而添加一个新的变量保存时间戳,我又觉得没有必要,这样势必涉及到了类的修改,开闭原则,写好的部分尽量不要再去修改了。)所以,我去查了一下怎么用js实现当前时间于上面那种格式的字符串(后端传递过来就变成了

2020-06-28 10:13:04 929

原创 报错:在实体引用中, 实体名称必须紧跟在 & 后面。

原因分析这个错误的主要原因是因为:js代码中的&&表示的是“与”,但是如果结合了thymeleaf,在controller返回html页面的时候,springmvc会对其进行一个模板渲染,填入model内的数据。但是这个时候的html会被读取为流,放入对应线程处理。但是由于&字符是thymeleaf自己也附带的关键字,所以html中涉及到的&都会被转义,导致thymeleaf填入数据的时**&&**会无法识别,从而报错。解决方案直接加上下列的符号即可:

2020-06-24 11:18:10 5788

原创 Java学习路线--从双非到拿到阿里offer

大概定一个剑指阿里的目标。Java基础打基础的话,我一开始是看了马士兵的java基础视频教程。看了java核心卷然后是框架学习struts+spring+hibernate:这是早期java的web项目架构,不过后来被淘汰了,只有国企之类的地方的老系统才用这种东西了。spring+springmvc+mybatis:这个是现在企业开发的核心,务必了解。springboot+mybatis+thymeleaf:thymeleaf是一个模板引擎,将数据插入到html用的;这个组合框架是现在最

2020-06-21 21:50:39 294

原创 ajax异步请求和java服务器的异步处理,前后端联通讲解

一.原理:前端异步ajax的目的是释放等待且当前操作是独立行为,对后续操作没有直接干涉;服务器端异步的目的是: 避免大量资源被单一线程占用/闲置,进一步压榨硬件性能,但部分系统硬件都有上限锁,只是这种异步更进一步逼近这个上限。同时,前端请求页面的时候,也可以避免长时间的等待。服务器端异步问题其实本质问题是:后端如何给前端主动推送消息?有两种方式:Websocket。前端定时访问。二.场景前端发送处理请求后,后端开始处理后端处理时间较长,估计有10几秒(时间每次都不太确定)才能处理完

2020-06-19 18:46:56 1138 1

原创 PHP的闭包用法(function (参数) use (arg[])的用法)

一开始看到function (参数) use (arg[])的用法还是感觉很陌生的,后来看了一下,就是php的闭包,也就是匿名函数的用法。详细的demo可以看下方链接。我的理解是: 就是和java一样的匿名函数,只是有了一个use关键字,这个关键字传递进去的参数,一旦在函数内进行了修改,函数外再调用就会发生同样的变化。类似于c的地址传递。因为php的变量作用域,在类中定义的变量,是不能在函数内部直接使用的。所以要use传递进去,达到类似java的类变量的那种用法的效果。在所有函数外部定义的变量,拥有全局

2020-06-17 21:14:49 1874

转载 IDEA调试DEBUG的使用教程

为了让自己可以时刻复习,不至于临时百度,这里转发一个idea的debug教程。写的还可以,虽然有一些功能作者自己也没有开发出来,但是,基本使用来说应该是够了。传送门

2020-06-09 15:10:51 124

原创 springAOP扩展原有程序功能

起因最近项目遇到一个需求,要我修改已有功能,添加一些扩展功能上去。但是我担心修改现有的程序,会导致一些地方引用该处代码的时候,发生逻辑的改变。所以,为了以防万一。我本来打算继承原有的类,再重写需要扩展的方法。最大可能保证不影响其他的逻辑。说到这里,我就大概知道为什么设计模式这么重要了。确实,修改已有的逻辑,个人认为是一个大忌啊。很有可能出现:这处功能实现了,其他地方都全线崩溃了。所以要工厂,代理模式之类的东西来保证一定的隔离和复用。不过,我这次要扩展的功能,有一部分是controller,所以,cont

2020-06-01 14:55:18 176

原创 学习论总结:学习的本质是为了推理

学习的本质是为了预测一.学习方法论首先,为了更好的学习,我们需要知道人类大脑的运作,记忆方式,处理逻辑方式。以此,我们才可以在学习的过程中知道,我们要怎么做才可以取得更好更高的学习效率。超人一等的学习效率,要从了解自我开始。人脑的处理逻辑分类:分为意识处理和认知处理,当大脑开始运作的时候,会根据输入到大脑的任务不同,分配到这两个区域进行处理。远动区:说话,走路等,不需要集中注意力,...

2020-05-25 11:41:20 309

原创 Thymeleaf基础语法,写给想快速开发(搬砖)的后端们

Thymeleaf语法${}:访问thymeleaf命名空间内放着的变量{}: 结合${}使用,可以直接去对象属性,而不用对象名.属性名,的方式。#{}: 结合 "th:text"使用,可以获得服务器内的静态资源,比如yml文件内定义的一些属性。或者获取图片等资源。链接URL表达式:@{…}: 它可以连接到目录下的静态资源,也可以发起访问后端。常用的对象表达式:“# +静态方法”。类似java的静态方法访问:#dates: java.util的实用方法。对象:日期格式、组件提取等.

2020-05-20 18:11:38 278

原创 springboot+thymeleaf前后端联调笔记

springboot+thymeleaf前后端联调笔记前端篇参考1:https://zhuanlan.zhihu.com/p/27334352参考2:控制台的多个函数的使用,类似一个使用文档字典。https://zhuanlan.zhihu.com/p/81610924浏览器控制台Console.dir使用 console.dir 命令,可以打印出对象的结构,而 console.log 仅能打印返回值,在打印 document 属性时尤为有用。console.dir(object):

2020-05-20 11:14:57 549

原创 新人程序员或实习生如何快速入门一个新的项目

思维层面凡事欲成,心中有数。掌握了方法论,有了核心思想和目标,效率才可以上来,不会走弯路。所以,我先讲一下项目入手的方法论,心态吧。如下:心态调整:真正好的代码是自解释的,那些看似高深的代码,大部分都是人家写的不够好,不是你不行。同时,项目入手,必定是个循序渐进的过程,不要操之过急。心态调整2:不要以追求完美的心态去接手项目,不要试图搞懂整个项目。过去的功能已经完成了,需要修改该功能时,你...

2020-05-08 11:48:47 2141

原创 HTTPS协议中,CA服务器,服务器,浏览器都做了这些

总体流程服务器找CA进行认证,获得证书。客户端请求和服务器建立连接,会访问443端口,进行安全连接,主要是验证证书。最后是两者之间怎么利用对称密钥和非对称密钥进行安全的通信。下面,就上述黄色部分的三点,我们进行详细说明1.服务器去找CA服务器进行认证,获得证书。主要步骤如下:服务器发送自己得公钥和对应的服务器信息,域名等给ca服务器。ca服务器对其选择一种hash算法,进行数据摘要c...

2020-04-15 18:05:33 628

转载 红黑树(转载一个大佬的)

是什么,有什么特征?红黑树是一种含有红黑结点并能自平衡的二叉查找树。为了解决二叉查找树中,存在着退化为链表的情况,同时为了解决平衡二叉树中追求绝对平衡,导致每次插入新节点之后需要旋转的次数不能预知的问题。它的特点是:每个节点要么是黑色,要么是红色。根节点是黑色。每个叶子节点(NIL)是黑色。每个红色结点的两个子结点一定都是黑色。任意一结点到每个叶子结点的路径都包含数量相同的黑结点...

2020-04-05 22:39:06 96

原创 java中锁的定义

分类公平锁、非公平锁:算法不同而已,公平锁是先来先服务公平锁是多个进程间,先来先服务非公平锁是多个进程间,抢占式。可重入锁:就是一个进程获得了该锁后,该进程调用其自己的方法,该方法内有访问了这个被自己锁住的资源,此时,可以放行,可以访问。Java ReentrantLock就是了。乐观锁、悲观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数...

2020-04-05 20:08:51 274

空空如也

空空如也

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

TA关注的人

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