java进阶-实战篇
文章平均质量分 60
主要通过一些案例来加深一些技术方面的知识,同时更能快速理解技术
wwwzhouzy
一个有情怀的奋斗者!
展开
-
利用微信小程序实现一个在线商城
{微信小程序简易商城,基于微信客户端搭建的一个运动服专卖小程序,没做任何推广,纯粹个人爱好。 目前开源前后端,无论是个人、团队、或是企业,均可学习使用或商用。原创 2022-12-10 21:59:00 · 810 阅读 · 1 评论 -
Springboot集成Disruptor做内部消息队列
一、基本介绍1,什么是 Disruptor?(1)Disruptor是英国外汇交易公司LMAX开发的一个高性能的并发框架。可以认为是线程间通信的高效低延时的内存消息组件,它最大的特点是高性能。与Kafka、RabbitMQ用于服务间的消息队列不同,disruptor一般用于一个JVM中多个线程间消息的传递。(2)从功能上来看,Disruptor实现了“队列”的功能,而且是一个有界队列(事实上它是一个无锁的线程间通信库)。作用与ArrayBlockingQueue有相似之处,但...原创 2021-08-08 16:12:18 · 2168 阅读 · 2 评论 -
springboot整合drools7.0规则引擎
一、简介Drools是一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行所需的业务规则。适用于风控、反欺诈规则匹配二、语法详见地址:http://www.drools.org.cn/三、springboot整合drools1、pom引包<?xml version="1.0" encoding="UTF-8"?><project xmlns=原创 2021-08-08 11:34:37 · 727 阅读 · 0 评论 -
springboot集成activiti6工作流
源码地址:https://codechina.csdn.net/wwwzhouzy/activitidemo一、什么是工作流工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开原创 2021-08-07 21:03:44 · 602 阅读 · 0 评论 -
springboot + VUE实现后台管理系统(集成JWT接口权限验证)
源码地址:https://codechina.csdn.net/wwwzhouzy/vuespringboot前端项目:smart-admin-web后台项目:bootAdmin一、用到的技术1、前端Vue + Vue-Router + Vuex + ViewUI + vue-enum +AxiosView UI即为原先的 iView,从 2019 年 10 月起正式更名为 View UI,官网地址:https://www.iviewui.com/不过也可以使用VUE+elem.原创 2021-08-07 14:00:48 · 804 阅读 · 0 评论 -
netty解决拆包粘包的三种方案
一、什么是粘包拆包举个例子客户端和服务器建立一个连接,客户端发送一条消息,客户端关闭与服务端的连接。客户端和服务器简历一个连接,客户端连续发送两条消息,客户端关闭与服务端的连接。对于第一种情况,服务端的处理流程可以是这样的:当客户端与服务端的连接建立成功之后,服务端不断读取客户端发送过来的数据,当客户端与服务端连接断开之后,服务端知道已经读完了一条消息,然后进行解码和后续处理...。对于第二种情况,如果按照上面相同的处理逻辑来处理,那就有问题了,我们来看看第二种情况下客户端发送的两条消息递交原创 2021-07-27 22:07:10 · 7355 阅读 · 1 评论 -
dubbo快速入门(包含dubbo管理页面)
一、dubbo的实现原理dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。dubbo框架是基于Spring容器运行的。RPC远程过程调用远程过程调用协议是一种通过网络从远程计算机程序上请求服务,而不需要了解网络底层技术的协议。RPC协议假定某些传输协议的存在,如TCP或者UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC的优点:使得开发包括网络分原创 2021-07-26 21:32:32 · 1269 阅读 · 3 评论 -
Java自动生成代码工程(mybatis-generator)
新建一个maven工程代码链接:https://codechina.csdn.net/wwwzhouzy/zhouzygenerator一、新建一个maven工程二、修改配置1、pom.xml<build></build>标签里的内容修改成以下内容,注意添加自己需要的数据库驱动,我这里是mysql驱动<build> <finalName>ssm_web</finalName> <plugi.原创 2021-07-20 21:54:30 · 445 阅读 · 3 评论 -
根据sql语句在线生成java代码(节省大量代码开发量)
本章介绍一个可以根据sql语句就可以生成java代码的网址:https://java.bejson.com/generator他可以帮你生成你想要的代码,包括实体类、mapper层、service层、controller层、mybatis的xml代码,甚至可以帮你生成前端的代码,包括swagger-ui、element-ui、bootstrap-ui、layui等看看该网站的页面:圈圈里面输入对应的sql然后还有辅助功能,比如自己输入包名、忽略表名前缀,一般根据表名峰驼命名,会自动.原创 2021-07-20 21:30:59 · 3364 阅读 · 0 评论 -
解决eclipse debug运行项目时下一步按钮一直为灰色不可用的问题
问题描述如图:Debug时一直为灰色,导致不能进行下一步调试解决方案:找到eclipse的安装目录,进入configuration目录然后找到org.eclipse.osgi,删除改目录下的所有文件我的整体目录是:D:\soft\eclipse-jee-luna-SR2-win32-x86_64\eclipse\configuration\org.eclipse.osgi重启eclipse,再debug可以正常调试了...原创 2021-07-19 21:29:59 · 2402 阅读 · 0 评论 -
springcloud服务治理与配置中心-搭建consul服务端
Consul是一套开源的分布式服务发现和配置管理系统,有HashiCorp公司用go语言开发。提供了微服务系统的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格。 它具有很多优点。包括:基于raft协议,比较简洁;支持健康检查。同时支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供图形界面,跨平台,支持Linux、Mac、Windows。安装并运行Consul1,官网下载2,执行cmd命令,弹出命令行窗口...原创 2021-06-30 20:51:41 · 236 阅读 · 0 评论 -
分布式事务TCC框架-hmily(spring cloud feign)
官网案例:文档(springcloud):https://dromara.org/zh/projects/hmily/user-springcloud/官网示例:https://github.com/dromara/hmily/tree/master/hmily-demo/hmily-demo-springcloud本示例:https://codechina.csdn.net/wwwzhouzy/zhouzy-hmily一、说明hmily是一个高性能异步分布式事务TCC框架,具有以下..原创 2021-07-18 13:09:12 · 3100 阅读 · 0 评论 -
springboot 实现cas单点登录
一、部署服务端我这边部署的是cas-server5.2cas-server:https://github.com/apereo/cas-overlay-templatecas documenthttps://apereo.github.io/cas/5.2.x/index.html源代码:https://codechina.csdn.net/wwwzhouzy/zhouzy-cas1、构建下载后解压如图:构建,我的是windows,用build.cmd也可以直接从ht..原创 2021-07-17 16:21:50 · 939 阅读 · 0 评论 -
java设计模式-适配器模式
说明适配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作角色源(Adaptee):需要被适配的对象或类型,相当于插头。 适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。 目标(Target):期待得到的目标,相当于插座。代码实现适配器模式包括3种形式:类适配器模式、对象适配器模式、接口适配器模式(或又称作缺省适配器模式)以下举例,最新智能手机用VGA接口适配实现充电源:手机typeC充原创 2021-07-17 00:15:58 · 168 阅读 · 0 评论 -
java设计模式-单例模式(并发处理)
说明单例模式适合于应用中频繁创建的对象,如果是重量级的对象,更应该使用单例模式。比如配置文件,如果不采用单例模式的话,每个配置文件对象的内容都是一样的,创建重复的对象就会浪费宝贵的内存,所以有必要使用单例模式,达到性能的提升,减小了内存的开销和GC的压力。本文会一步一步由浅入深的讨论如何实现正确的单例模式。饿汉式饿汉式就是不管你要不要,我都给你new一个对象出来这肯定是线程安全的,因为new的动作发生在第一次访问类的时候但是第一次只是访问里面的name常量,也会实new出一个来,所以如果原创 2021-07-16 23:39:28 · 433 阅读 · 0 评论 -
java设计模式-访问者模式
说明顾名思义使用了这个模式后就可以在不修改已有程序结构的前提下,通过添加额外的访问者来完成对已有代码功能的提升,它属于行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。其主要目的是将数据结构与数据操作分离。角色抽象访问者(Visitor)角色:声明了一个或者多个方法操作,形成所有的具体访问者角色必须实现的接口。具体访问者(ConcreteVisitor)角色:实现抽象访问者所声明的接口,也就是抽象访问者所声明原创 2021-07-16 23:10:42 · 67 阅读 · 0 评论 -
java设计模式-观察者模式
介绍说白了就是发布订阅,服务端先添加订阅的观察者用户,等服务端触发某个事件时通知订阅过的用户,然后让用户处理自己的业务逻辑该模式包含四个角色1、一个抽象的主题接口就是被观察的主题接口,可以用来添加、删除和通知观察者2、’具体的被观察者对象3、抽象的观察者接口4、具体的观察者对象代码实现1、抽象的观察者接口package com.zhouzy.sjms.model;/** * 观察者 * @author Administrator * */public in原创 2021-07-15 21:31:59 · 54 阅读 · 0 评论 -
java设计模式-三种工厂模式
一、简单工厂模式简单工厂模式就是根据不同的参数由工厂创建对应的对象1、公共对象 People.javapackage com.zhouzy.sjms.model;public abstract class People { /** * 抽象方法-说话 */ public abstract void speak(); }2、老师 Teacher.javapackage com.zhouzy.sjms.model;public class Teacher ext原创 2021-07-14 21:41:34 · 114 阅读 · 0 评论 -
java设计模式-动态代理(InvocationHandler)
动态代理利用反射机制在运行时创建代理类。接口、被代理类不变,我们构建一个handler类来实现InvocationHandler接口。实现类里有三个部分1、被代理类2、构造方法,主要是给被代理类赋值3、invoke方法,三个参数:代理类、方法和参数如果要在执行方法前后做一些其他处理,就在该方法中实现代码实现1、代理类WorkHandlerpackage com.zhouzy.sjms.service;import java.lang.reflect.Invocat原创 2021-07-13 21:36:36 · 839 阅读 · 0 评论 -
java设计模式-静态代理
代理模式代理模式主要就是委托给代理人去做,就好比,我们租房子,买房子自己没时间就委托给中介代理。静态代理创建一个接口,然后创建被代理的类实现该接口并且实现该接口中的抽象方法。之后再创建一个代理类,同时使其也实现这个接口。在代理类中持有一个被代理对象的引用,而后在代理类方法中调用该对象的方法。代码实现处理事情的接口CommonInterface.javapackage com.zhouzy.sjms.service;public interface CommonInterface原创 2021-07-13 20:59:09 · 66 阅读 · 0 评论 -
java设计模式之策略模式(枚举)
1、背景策略模式在项目中应用的很多的,尤其是对应公共的接口,我们根据不同的参数实现不同的逻辑时,如果一直用if来判断其实是很难维护的,如果采取策略模式,不同的参数对应不同的实现类,那么这样对应的人维护对应的实现逻辑就方便很多了2、代码实现1、公共接口AnimalServicepackage com.zhouzy.boot.zhouzyBoot.service;public interface AnimalService { /** * 吃 */ public Strin原创 2021-07-12 21:44:25 · 1460 阅读 · 0 评论 -
springboot集成mongdb 操作数据及文件存储下载
一、安装如果去官网下载mongdb的话比较麻烦,http://www.mongodb.org。建议去http://dl.mongodb.org/dl/win32/x86_64这个地址下载,方便快捷安装好之后,去安装目录启动,我安装到了C盘C:\Program Files\MongoDB\Server\4.0\bin。cd进入该目录,然后命令启动:mongod --dbpath E:\mongdb\data 如图:访问:http://localhost:27017/说明启动成功二、..原创 2021-07-11 12:20:41 · 407 阅读 · 0 评论 -
springboot 整合Elasticsearch6.x ElasticsearchRepository和ElasticsearchTemplate
一、引入对应的pom版本要对应,不然连接会报错<?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-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apach原创 2021-07-10 18:45:37 · 694 阅读 · 0 评论 -
打印Spring Cloud Feign请求响应日志
本篇主要基于consul注册中心来实现的consul官网下载:https://www.consul.io/downloads.htmlcmd 命令窗口执行:consulagent-devconsul 自带 UI 界面,打开网址:http://localhost:8500,可以看到当前注册的服务界面一、feign接口提供者1、pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://m...原创 2021-07-06 20:48:52 · 1379 阅读 · 0 评论 -
java高并发-秒杀商品限流篇springcloud gateway
服务端代码上一篇已经写过了,这篇主要配置gateway1、pom.xml引入<?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-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt原创 2021-07-04 15:21:56 · 713 阅读 · 0 评论 -
java高并发-商品秒杀redis篇 watch功能
1、将商品数量初始化到redisimport java.util.concurrent.TimeUnit;import javax.annotation.PostConstruct;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.原创 2021-07-04 11:18:37 · 449 阅读 · 0 评论 -
java高并发方案-前后端分离之VUE
一、搭建vue项目1、安装vue-cli脚手架工具npm install -g vue-clivue -V查看版本说明安装成功2、用vue-cli命令创建项目 vue init webpack zhouzhiyao后面会提示一系列问题,我这边是这样回答的Project description:项目描述Author:作者Vue build:打包方式(standalone和runtime),按回车选择默认的就好Install vue-router?:是否安装原创 2021-07-03 17:38:28 · 564 阅读 · 0 评论 -
Spring-cloud-feign添加统一的Header
1.背景使用Feign 调用其他微服务,尤其是在多级调用的同时,需要将一些共同的参数传递至下一个服务,如:token。比较方便的做法是放在请求头中,在Feign调用的同时自动将参数放到restTemplate中。2.具体做法是首先实现RequestInterceptorimport feign.RequestInterceptor;import feign.RequestTemplate;import org.springframework.stereotype.Component;i.转载 2021-06-30 21:10:39 · 494 阅读 · 0 评论 -
java redis实现bitmap签到功能
用户一天有没有签到只有两种状态:是和否(1,0)。一个月最多31天,4个byte32位刚好能容纳一个月的数据量,每一位0和1分别表示是否签到。因此使用4个byte就能表示一个人一个月的签到状态场景需求适用场景如签到送积分、签到领取奖励等,大致需求如下:签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等。 如果连续签到中断,则重置计数,每月初重置计数。 当月签到满3天领取奖励1,满5天领取奖励2,满7天领取奖励3……等等。 显示用户某个月的签到次数和首次签到时间。转载 2021-06-27 15:41:55 · 1085 阅读 · 0 评论 -
springboot整合redis发布订阅功能
1.Maven引用<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId>转载 2021-06-24 20:37:01 · 101 阅读 · 0 评论