- 博客(34)
- 收藏
- 关注
原创 浅谈java-web开发技术栈
1. 前言1.1 java-web说明1.2 java-web前后端分离1.3 java-web的开发生命周期2. 技术栈2.1 前端技术栈2.1.1 HTML + CSS 实现静态页面2.1.2 JavaScript动态渲染页面2.1.3 Vue + Element/Iview 急速前端页面开发2.2 后端技术栈2.2.1 Spring框架2.2.2 SpringMVC框架2.2.3 Mybatis/JPA框架2.2.4 SpringBoot框架1. 前言1.1 java-w
2020-10-20 17:32:05
3777
2
原创 疑难技术点汇总(一)---手机号正则匹配
前言在项目开发中,验证用户输入的手机号格式是否正确,是一个非常常见的需求。本人的资料检索水平有限,未找到比较权威的说明文档。因此只能动手,丰衣足食。本着授人以鱼不如授人以渔的想法,先将该需求的实现细节罗列如下:手机号号段信息汇总中国电信号段:133、1349、1410、149、153、162、170(0-2)、173、174(0-1)、177、180、181、189、190、191、193、199中国联通号段:130、131、132、140、145、146、155、156、166、167、170
2020-07-12 19:38:31
687
原创 服务性能测试---JMeter使用教程
一 前言JMeter工具的官方下载地址是:https://jmeter.apache.org/download_jmeter.cgi 。JMeter是一款纯java开发的(支持跨平台)压测工具。使用JMeter工具进行压力测试之前,需要预先配置好JDK环境。最新版本JMeter-5.2.1要求JDK版本在1.8以上。下载并解压压缩包apache-jmeter-5.2.1.zip后,既可以直接在Windows上面运行,也可以在Linux上面运行。二 JMeter-GUI使用说明2.1 JM
2020-05-15 19:18:55
927
原创 百万知乎用户的数据分析
目录1. 前言2. 博客结构图3. 爬取知乎用户数据3.1 知乎用户页面解析3.2 选取爬虫框架3.3 使用反反爬手段3.4 调用接口爬取数据4. 分析知乎用户数据4.1 数据去重4.2 数据导入ElasticSearch4.3 kibana分析知乎数据4.4 echarts作图5 总结1. 前言我是一个真正的知乎小白。上班的时候,自己手头的事情处理...
2019-08-26 14:48:56
5680
6
原创 axios+promise整合http请求
前言当以前后端分离的方式进行项目的开发时,我们可以简单地把前端开发看做页面展示的开发,把后端开发看做数据处理的开发。前端页面的展示,会根据需求去后端请求相应的数据。后端是以URL的方式暴露接口来提供服务的,也就是说前端需要根据需求对应的URL组装http请求,去调用后端接口获取数据并将展示在页面上。前端项目的实际开发中,经常使用axios + promise来整合http请求。这篇博客就是对a...
2019-06-11 16:07:03
7354
原创 java-web系列(九)---SpringBoot整合ElasticSearch
ElasticSearch全家桶前言ElasticSearch是一个开源的高扩展的分布式全文检索引擎。它可以近乎实时(延迟1秒)的存储、检索并处理PB级别的数据。它是一个基于Lucene的搜索服务器。使用Java开发通过简单的RestFul API提供全文检索功能,这种做法隐藏了全文检索功能内部实现的复杂性。核心概念Document,文档。文档是ElasticSearch中数据存储的基...
2019-03-11 18:37:29
6710
2
原创 八大排序算法的原理图解及代码实现
八大排序算法程序 = 数据结构 + 算法。设计优良程序的两个要点:选用正确的存储结构、采用合理的解决方案。算法就是“解决方案”。而排序,是一种非常常见的业务场景,如:“前100名下单的打八折”、“成绩前三的获一等奖”、“绩效最差的扣工资”等等。但排序的实现有很多不同的解决方案,不同的解决方案需要的运算时间和存储空间不同。这里说的八大排序算法,都是内部排序(不需要额外的空间存储数据,所有运算...
2019-02-13 13:29:43
2642
原创 从零开始搭建个人Hexo博客
从零开始搭建个人Hexo博客最终个人博客搭建成功后的效果图如:我的博客购买阿里云服务器和域名虽然可以把我们的博客系统托管在github上面,但是由于之前我就购买了阿里云服务器,所以就理所当然地直接把博客系统放在自己的云服务器上面了。首先需要你有一个阿里云账号。你可以在阿里云官网进行注册一个新账号,当然你也可以直接用跟阿里相关的第三方账号如:淘宝账号/支付宝账号/钉钉账号等去登陆阿里云的官网...
2019-01-18 14:16:00
2990
1
原创 Linux上搭建Git服务器
在阿里云服务器上搭建一个私有的Git服务器由于github可以免费帮我们管理项目(即项目的版本控制),因此我们通常会将一些开源项目放在github的公共仓库。但我们经常会有这样的需求:出于商业目的,我们必须要项目的源文件进行保密。这个时候再用github的私有仓库管理我们的项目就不合适—github的私有仓库是“收费”的。这个时候,我们就可以考虑搭建一个私有的Git服务器。以下是阿里云服...
2019-01-07 14:37:57
4532
5
原创 JavaScript系列(二)---JavaScript中的BOM和DOM知识汇总
BOM和DOM的简介JavaScript是一种网络脚本(客户端)语言,实际上包含了三部分的内容:ECMAScript,BOM和DOM。ECMAScript,描述该语言的语法和对象;浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口;文档对象模型(DOM),描述处理网页内容的方法和接口。BOM汇总BOM(浏览器对象模型)提供了很多东西(对象),用于访问浏览器的功能,这些对象与...
2018-10-19 13:50:07
308
原创 JavaScript系列(一)---JavaScript中的ECMAScript知识汇总
JavaScript简介JavaScript是一种网络脚本语言。在Web应用开发中,JavaScript被广泛应用于表单校验、浏览器事件响应、HTML页面中嵌入动态文本等等。因此对于web开发人员来说,了解JavaScript是很有必要的。我们常说的JavaScript实际是包含三个部分:ECMAScript,描述该语言的语法和对象;文档对象模型(DOM),描述处理网页内容的方法和接口;...
2018-10-15 10:03:59
501
原创 java-web系列(八)---RabbitMQ在java-web中的简单应用
RabbitMQ的使用场景MQ,是Message Queue(消息队列)的简写。简而言之,RabbitMQ就是将消息储存在队列中。在项目的实际开发过程中,可以将一些无需即时返回结果且耗时的操作提取出来,进行异步处理。这种处理方式能够大大节省服务器的请求响应时间,从而提高系统的吞吐量。比如:以去年双十一淘宝成交额为例当天每秒下订单笔数超过32.5万笔,支付笔数超过25.6万笔。 也就是说...
2018-10-09 14:34:56
2908
原创 java-web系列(七)---SpringBoot整合Quartz实现多定时任务
定时任务的使用场景在项目的开发过程中,我们经常会遇到类似这样的需求:需要定期执行某一项工作,或者按照特定计划执行某些工作。这时我们就需要用到定时任务的实现。SpringBoot对定时任务的支持日常开发中,定时任务最常用的实现方式有如下两种:Spring-3.*版本之后,自带定时任务的实现SpringBoot-2.*版本之后,均实现了Quartz的自动配置Spring自带定时任务的实...
2018-09-27 14:51:41
2054
原创 java-web系列(六)---SpringBoot + Mybatis配置多数据源
java-web系列(六)---SpringBoot + Mybatis整合多数据源多数据源的使用场景多数据源配置详解测试声明多数据源的使用场景简单来说,Web项目业务功能的实现就是对“数据”的增、删、改、查功能的实现。以“在TMALL购物”为例,这里的购物过程实现可简单拆分为:TMALL商城浏览商品,挑选要买的商品,下单等过程。“TMALL商城浏览商品”,就是把"tmall_goods...
2018-09-20 15:00:55
791
原创 java-web系列(五)---SpringBoot整合Redis大合集
Redis大合集Redis是什么?Redis是一个基于C语言编写、支持网络交互、可基于内存也可持久化、高性能的Key-Value数据库。Redis支持的数据类型有:字符串(string)、链表(list)、集合(set)、有序集合(zset)和哈希表(hash)。我的理解:Redis是非关系型(Nosql)数据库。数据可以放在内存中,进行读写操作时速度非常高(关系型数据库如MySq...
2018-09-10 18:36:51
2590
原创 java-web系列(四)---几种常见的加密算法
什么是加密算法?百度百科给出的解释如下: 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。简单来说,就是把某一段数据(明文),按照“某种规则”转换成另外一段...
2018-09-05 19:41:53
4423
1
原创 java-web系列(三)---(slf4j + logback)进行日志分层
前言这个项目的github地址:extensible的github地址如对该项目有疑问,可在博客/github下面留言,也可以以邮件的方式告知。 我的联系方式:dzy930724@163.comslf4j和logback的概念SLF4J,是Simple Logging Facade for Java的简称。简而言之,slf4j是一个日志门面,它只提供了通用的日志接口,而未提供日志...
2018-08-28 17:02:18
2020
原创 java-web系列(二)---以dockerfile的方式发布java-web项目
前言这个项目的github地址:extensible的github地址如对该项目有疑问,可在博客/github下面留言,也可以以邮件的方式告知。 我的联系方式:dzy930724@163.comDocker相关环境搭建1.空白虚拟机的“傻瓜式”安装安装VMware Workstation安装虚拟机(CentOS 7.4) 相关的平台及辅助工具和CentOS-...
2018-08-28 16:55:33
4075
原创 java-web系列(一)---搭建一个基于SSM框架的java-web项目
前言这个项目的github地址:extensible的github地址如对该项目有疑问,可在博客/github下面留言,也可以以邮件的方式告知。 我的联系方式:dzy930724@163.comextensible这是一个基础的java web项目。后期我会根据自己的技术栈,在该项目中加上不同的功能模块。项目详解1.当前项目技术栈Spring + SpringBo...
2018-08-28 16:46:47
4100
原创 SpringBoot框架---自动配置原理的解密
SpringBoot框架—自动配置原理的解密什么是SpringBoot的自动配置?SpringBoot官网对Spring Boot的定义如下: Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can run. We take ...
2018-08-28 16:06:47
1351
原创 Maven常用命令总结
Maven常用命令总结Maven是什么?Maven,是一款由Apache组织开发,开源的、跨平台的项目管理工具。Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。准备工作JDK配置 不仅是Java项目的开发需要JDK的支持,Maven项目的运行也需要JDK的支持。因此需要先进行环境的配置—JDK。查操作系统位数。在cmd终端窗口中,输...
2018-04-28 19:56:56
501
原创 用户身份与文件权限---Linux就该这么学(四)
用户身份与文件权限—Linux就该这么学(四) 学习总览用户身份与能力文件权限与归属文件的特殊权限文件的隐藏权限文件访问控制列表su命令和sudo服务 Linux是一个多用户、多任务的操作系统。Linux系统是如何高效协调多用户与多文件的n对n对应关系的呢?具体可从以上6个方面,来学习Linux就该这么学的第五章—用户身份与文件权限。用户身份与能力...
2018-04-13 18:12:07
272
原创 Thread源码学习及案例演示
Thread源码学习及案例演示Thread源码学习 这里我只截取了java.lang.Thread.java的部分源码—我能看懂的一部分,注释部分由我自己翻译。但受我的翻译及专业水平所限,可能错误颇多,望请勿喷。Thread.java的部分源码即注释如下/* * @since JDK1.0 * 线程这个类是JDK1.0就有的,它实现了Runnable接口...
2018-04-13 17:50:11
276
原创 Vim编辑器与Shell命令脚本---Linux就该这么学(三)
Vim编辑器与Shell命令脚本—Linux就该这么学(三) 学习总览Vim文本编辑器编写Shell脚本流程控制语句计划任务服务程序Vim文本编辑器 Vim的三种模式命令模式:控制光标,增强对文本的复制、粘贴、删除和查找功能。编辑模式:文本录入。末行模式:保存或退出,设置编辑环境。三种模式的切换如下图: 默认进入的就是命令模式,...
2018-04-09 19:15:39
7619
1
原创 管道符、重定向与环境变量---Linux就该这么学(二)
管道符、重定向与环境变量—Linux就该这么学(二) 学习总览输入输出重定向管道命令符命令行的通配符常用的转义字符重要的环境变量输入输出重定向 输入重定向:把文件导入到命令中;输出重定向:把原本要输出到屏幕的数据信息写入到指定文件中。工作中常用到的是输出重定向。输出重定向可分为:标准输出重定向(默认)和错误输出重定向(2),也可分为清空输入(>)和追...
2018-04-08 18:35:15
600
原创 Linux常用命令归纳---Linux就该这么学(一)
Linux常用命令—Linux就该这么学(一)本文参考自Linux就该这么学(LinuxProbe) 简介计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务。Shell(终端)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,...
2018-04-03 17:51:24
405
原创 深入理解计算机系统(一)
计算机系统漫游前言 这是学习深入理解计算机系统(Computer Systems A Programmer’s Perspective)的第一章的总结。C语言程序Hello World是怎么执行的1. 在虚拟机中新建一个hello.c文件cd /homemkdir learnCSPPcd learnCSPPvim hello.c# 编辑hello.c...
2018-03-29 17:21:55
581
原创 Vuex初识
Vuex初识Vuex的介绍 Vuex是一个专为Vue.js应用程序开发的状态管理模式。官网给出Vuex的流程图如下:这个流程图我的解读如下:Components: 页面中的组件Actions: 页面中要改变数据状态的动作Mutations: vuex中执行数据状态更改的行为State: 数据仓库(由vuex来管理状态的数据组成集合) 我对Vuex这几...
2018-03-20 19:12:05
346
1
原创 Jenkins部署java-maven项目
Jenkins部署java-maven项目Jenkins是什么? Jenkins是一个用java编写的开源的持续集成平台。首先理解几个概念持续集成(Continuous Integration),在传统的软件开发中,项目的整合是在项目开发结束所有人提交了代码之后。而持续集成,是在项目的开发过程中不断地进行环境构建、功能的测试与集成。持续交付(Continuous De...
2018-03-19 15:49:11
3309
1
原创 数据结构与算法学习总结(一)
前言受本人知识水平所限,若您发现有不足的地方,欢迎指正。本文的代码以及图片纯手打手画,如果觉得有用,麻烦点赞。基本概念数据结构相关 数据元素(data element )是数据的基本单位。通常由若干个数据项组成,数据项具有原子性,是不可分割的最小单位。数据对象(data object )是性质相同的数据元素的集合。数据结构(data structure )是指相互之间存在一...
2018-03-05 16:29:35
1072
1
原创 Java反射
JVM简述了解Java的反射,首先需要知道虚拟机(JVM)是如何处理Java程序的。附图如下: 假定程序中有一句源码如下:Object o = new Object();详细流程如下:你的代码(.java文件)会编译成(.class文件);JVM启动,调用main方法,.class文件会被类加载器加载进JVM的内存中,类(Object)的元数据信息会被加载到方法区,创...
2018-02-24 16:04:21
257
原创 Vue深度学习总结
1. Vue生命周期解读这一部分参考自Vue官方文档以及生命周期详解官网的生命周期图示例如下: 测试代码如下:<!DOCTYPE html><html lang="en"> <head> &lt
2018-02-24 15:51:05
2219
原创 Springboot整合JPA以及动态条件查询的实现
前言: 为了学习JPA技术,我在网上翻阅了几十篇关于Springboot整合JPA的文章,但文章内容由于作者水平良莠不均,非常影响类似我这样的菜鸟的学习效率。同时也是为了巩固并汇总 SpringBoot + JPA 的相关知识,才有了这篇博客。此篇博客的项目代码已经上传到我的github。1.Demo展示第一阶段:首先展示Demo项目最终的目录结构,如下图:1...
2017-09-25 17:26:25
29087
10
原创 龟兔赛跑之Java多线程通讯初识
注:这是第一次写自己的博客,试试效果怎么样一,前言龟兔赛跑这个寓言故事,是一个经典的多线程并发的案例。通过这个案例的学习,可以对Java中线程之间通讯有一个初步的认识。二,场景假设1.跑道长度为20米;2.乌龟和兔子同时出发,乌龟的速度为0.1m/s,乌龟不休息;兔子的速度为0.5m/s,兔子每跑2米就休息一次,每次休息时间为2秒;3.当有一个动物到达终点时,获胜者宣布比赛结束,需要告知失败者不用...
2017-09-21 19:24:01
610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人