- 博客(89)
- 资源 (3)
- 收藏
- 关注

原创 解决springboot2整合Redis 后某个接口报错 java.io.IOException: 远程主机强迫关闭了一个现有的连接
spring boot2整合Redis5时报错症状为:访问某个接口很慢,即时访问成功后报错,再次访问一切正常,但是每隔几分钟访问接口仍然很慢或者报错2019-08-07 11:34:15.141 ERROR 21076 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for...
2019-08-07 18:00:41
110335
32

原创 Could not get any response postman报错 但是浏览器可以访问
答案在最后一张图片案例分析把postman报错的信息复制再这里,你去翻译一下Could not get any responseThere was an error connecting to http://118.xxx.xxx.10:11134/api-customer/...
2019-04-12 18:31:42
247036
62
原创 if从入门到出轨
if从入门到出轨,业务代码大量的if占据着整个项目,显得不太美观,审美疲劳,处于过于疲惫,那么我们选择一种新鲜的方式来处理它,达到出轨的感觉,让代码写起来不太正经,符合当下年轻人的style
2023-02-12 21:51:16
7113
1
原创 Windows常用设置
Windows设置开机启动cmd,并且后台运行我们经常遇到那种写了个cmd命令,但是需要后台启动的,因为一个黑窗口留在任务栏,容易误关闭.新建myvpn.txx文本文件为例,输入如下内容,保存后,把文件后缀名改为.vbs结尾(D:\Asoftware\package\nps\vpn.bat解释如图2)set ws=WScript.CreateObject("WScript.Shell") ws.Run "D:\Asoftware\package\nps\vpn.bat /start",.
2021-05-06 17:41:53
370
原创 Linux安装java常用开发docker环境
软件环境概述以Windows10为宿主机,vm16虚拟机搭建centos7的Linux系统为前提,记录安装过程,其他宿主机版本或者云主机操作类似,仅供参考.docker安装MySQL8
2021-02-27 09:12:25
466
原创 使用vue-cli创建vue前端的脚手架项目
前提是安装完成nodejs和npm软件和环境配置好后,打开cdm,执行如下命令D:\Aworkspace\HbuilderX\vue>vue create hello选择版本(比如vue3)后构建项目,然后进到构建好的项目下执行命令D:\Aworkspace\HbuilderX\vue>cd helloD:\Aworkspace\HbuilderX\vue\hello>npm run serve ...
2020-12-09 16:28:58
513
原创 在Linux服务器上搭建Nexus私服
简单介绍前言:我们常用的maven仓库有中央仓库(全球共用),私有仓库(公司内部共用),和本地仓库(个人私有).类似代码托管大概有GitHub(全球代码托管)和gitee(国内版代码托管)和Gitlab(公司私有代码托管),所有一般公司要内部搭建的往往就是内部代码托管(Gitlab)和内部jar包托管(nexus私服),这里演示的主要是nexus私服的搭建,主要目的是学习并可以模拟maven上传自己的jar包到公司开发流程.私服的搭建安装私服软件nexus首先安装或者搭建服务器自然需要软件的
2020-10-29 17:46:27
2170
原创 Nexus搭建Maven私服并使用私服
前言:我们常用的maven仓库有中央仓库(全球共用),私有仓库(公司内部共用),和本地仓库(个人私有).类似代码托管大概有GitHub(全球代码托管)和gitee(国内版代码托管)和Gitlab(公司私有代码托管),所有一般公司要内部搭建的往往就是内部代码托管(Gitlab)和内部jar包托管(nexus私服),这里演示的主要是nexus私服的搭建,主要目的是学习并可以模拟maven上传自己的jar包到公司开发流程.首先安装或者搭建服务器自然需要软件的,那么nexus软件下载地址:http://ww
2020-10-25 01:44:47
1823
1
原创 Linux centos8 安装rocketMQ4.7
去官网下载最新稳定版(稍微找一下下载地址)http://rocketmq.apache.org/docs/quick-start/我这里以4.7.1为例 https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zip下载后放到/opt/software/rocketMQ文件夹,并解压[root@localhost rocketMQ]# unzip rocket...
2020-09-23 21:53:29
1820
1
原创 springboot2整合dubbo,以zookeeper为注册中心
虽然微服务已经流行起来了,但是由于公司很多架构仍然是采用dubbo+zookeeper搭配组合实现分布式项目架构,所以这里还是象征性写个笔记,以后可以用来回味搭建zookeeper服务注册中心,用于dubbo的提供的服务暴露给需要调用的客户端找到官网选择下载,这个Windows版本和Linux版本是混合在一个压缩包的,所以一箭双雕哈.https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3
2020-09-19 18:44:35
1094
原创 java安全框架之shiro的入门
java流行的权限管理框架目前主要有两款,且都是出身名门,shiro是大名鼎鼎的Apache软件提供商下的,而spring security是spring全家桶成员的一员,都是安全类框架,主要对比如下可以自行查阅其他资料,这里主要说一句就是:shiro和spring security既然都存在,都在企业级应用中大量使用,显然就是选择的不同,根绝业务需求选择了即可,过多对比不再本博客赘述,请自行查阅相关资料.官网:http://shiro.apache.org/什么是权限管理基本上涉...
2020-09-15 14:52:48
733
原创 MySQL数据库优化基本理论
参考博客:https://blog.youkuaiyun.com/ThinkWon/article/details/104778621/数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。mysql有关权限的表都有哪几个MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初.
2020-09-11 09:47:29
589
原创 使用Redis实现分布式锁
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁本篇博客介绍的是第二种,基于Redis的分布式锁,实际上是使用Redisson这一款强大的框架来实现分布式锁的.代码示例: https://gitee.com/zhang-xiao-xiang/zxx-redis-lock代码结构预览1:创建一个springboot的基本项目,写好一些基本接口所需的基本pom依赖 <!--spring b..
2020-09-11 00:34:42
909
原创 Docker安装Redis集群,无中心节点方式解决方案RedisCluster
下载镜像(这个是mukewang的老是封装好的,拿来即用)[root@localhost ~]# docker pull yyyyttttwwww/redis#重命名[root@localhost ~]# docker tag yyyyttttwwww/redis redis#删除长名字的redis,以免后面干扰[root@localhost ~]# docker rmi -f yyyyttttwwww/redis创建net2网段(我的mysql集群使用了net1,所以这里就使用一个新的.
2020-09-03 19:48:26
4992
原创 Docker安装MySQL数据库集群之PXC解决方案
Docker安装PXC集群,即mysql集群的安装安装PXC 可以使用带版本的安装docker pull percona/percona-xtradb-cluster:5.7,下面干脆安装最新版[root@localhost ~]# docker pull percona/percona-xtradb-cluster由于镜像名字太长,修改成短一点的[root@localhost ~]# docker tag docker.io/percona/percona-xtradb-cl..
2020-09-02 16:24:53
5711
3
原创 2020年springboot微服务打包成docker镜像并发布运行
spring boot 项目或模块完成后,可以编写docker文件,并打包,最后构建镜像并发布.springboot微服务打包成docker镜像流程1:创建springboot项目可以直接使用我写好的demo:示意项目2:打包项目3:编写dockerfile注意最新版idea貌似带有docker插件(没有也可以下载,下载后会有代码提示,比手写的稍微快一点)FROM java:8COPY *.jar /app.jarCMD ["--server.port=8.
2020-09-01 15:04:09
6772
原创 docker 网络
Linux可以ping通容器的网络,但是docker的容器是相互隔离的,哪怎么网络通信呢?比如tomcat容器访问mysql容器[root@localhost ~]# ip addr
2020-09-01 13:05:38
5991
原创 docker DockerFile技术
什么是docker DockerFile技术Docker通过读取Dockerfile里面的内容可以自动build image,Dockerfile是一个包含了build过程中需要执行的所有命令的文本文件。也可以理解为Dockfile是一种被Docker程序解释的脚本,由一条一条的指令组成,每条指令对应Linux系统下面的一条命令,由Docker程序将这些Dockerfile指令翻译成真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Ma
2020-09-01 09:51:50
9206
1
原创 docker 容器数据卷技术
简单说明一下,比如数据库镜像的数据要和Linux的数据同步即可,这样可以避免docker容器安装的mysql数据库软件即使删除,数据库数据删除了也不会影响Linux里面存的mysql数据库数据,他们是可以互相添加数据的,比如docker添加了一条mysql数据,那么Linux的mysql也会多一条数据,同理,Linux里面添加一条数据,docker也会增加一条数据.我们下载docker的centos最新的镜像(虽然我安装的虚拟机vm安装的centos8,但是和docker的centos最新镜像不一样,一
2020-08-31 16:34:43
5882
原创 docker安装java环境
本文是基于Linux centos8安装docker后再拉取镜像安装各个环境(tomcat,mysql,redis等等)docker安装tomcat下载tomcat(可以指定版本号,这里默认安装最新的版本哈,指定版本号实例 docker pull tomcat:9 )[root@localhost ~]# docker pull tomcat启动(在写博客时tomcat的镜像的webapp文件夹是空的,在webapps.dist里面,所以注意要复制到webapps的目录)[root.
2020-08-31 00:50:52
7301
原创 Linux之CentOS8安装docker教程
官方安装教程 https://docs.docker.com/engine/install/centos/我这里直接使用Windows安装VM虚拟机安装的方式写的教程操作系统要求要安装Docker Engine,您需要CentOS 7的维护版本。不支持或未测试存档版本。卸载旧版本(>这个是xshell复制命令后自动添加的换行符哈,我使用的是root用户)[root@localhost ~]# yum remove docker \> ..
2020-08-30 19:45:21
7717
原创 java 并发编程之AQS(并发界的扫地僧)
AQS是什么所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。把它比喻成扫地僧是比较合理的,把线程相关技术比喻成一些武功秘籍,那么AQS就是作者,掌握了秘籍的灵魂.用AQS自己模拟一个CountDownLat
2020-08-26 18:13:27
6113
原创 java线程治理法宝2: Future和Callable(可以处理后续结果,后来的我们)
Future的核心思想是:一个方法的计算过程可能非常耗时,一直在原地等待方法返回,显然不明智。可以把该计算过程放到线程池去执行,并通过Future去控制方法的计算过程,在计算出结果后直接获取该结果。...
2020-08-26 08:52:48
6789
原创 JAVA 多线程之控制并发流程
简介控制并发流程的工具类,作用就是帮助我们程序员更容易得让线程之间合作,让线程之间相互配合,来满足业务逻辑,比如让线程A等待线程B执行完毕后再执行等合作策略。CountDownLatchcountDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。CountDownLatch使用举例pack.
2020-08-24 16:00:44
7116
原创 java 并发容器ConcurrentHashMap与阻塞队列
ConcurrentHashMap简介ConcurrentHashMap是Java1.5中引用的一个线程安全的支持高并发的HashMap集合类。JDK1.8的ConcurrentHashMap 和JDK1.8的HashMap是很相似的。其中抛弃了原有的 Segment 分段锁,而采用了CAS + synchronized来保证并发安全性。ConcurrentHashMap存在的意义1、线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用..
2020-08-19 18:17:38
7313
原创 java CAS
无锁的概念(开胃概念)在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发展事态如果不及时控制,以后就无法挽回了,即使无法挽回的局面几乎不可能发生。这两种派系映射到并发编程中就如同加锁与无锁的策略,即加锁是一种悲观策略,无锁是一种乐观策略,因为对于加锁的并发程序来说,它们总是认为每次访问共享资源时总会发生冲突,因此必须对每一次数据操作实施加锁策略。而无锁则总是假设对共享资源的访问
2020-08-18 11:52:46
6420
原创 java 原子类
Java 并发包中的原子类都是基于无锁方案实现的(CAS),相较于传统的互斥锁,无锁并没有加锁、解锁、线程切换的消耗,因此无锁解决方案的性能更好,同时无锁还能够保证线程安全。java原子类预览AtomicInteger 示例package com.zhang.myjuc.a4.atomic;import java.util.concurrent.atomic.AtomicInteger;/** * AtomicIntegerDemo:演示AtomicInteger的基本用法,对比
2020-08-17 20:27:56
6657
原创 java的中的各种锁
Synchronzied与ReentrantLock(Lock接口的一个实现类)的对比ReentrantLock有很多Synchronzied 不具备的功能ReentrantLock基本使用示例代码如下(重要的事情是解锁哈)package com.zhang.myjuc.a3.lock.lock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/**..
2020-08-16 23:30:39
7476
原创 并发编程之ThreadLocal
ThreadLocal是什么是用来维护线程中的变量不被其他线程干扰而出现的一个结构,内部包含一个ThreadLocalMap类,该类为Thread类的一个局部变量,该Map存储的key为ThreadLocal对象自身,value为我们要存储的对象,这样一来,在不同线程中,持有的其实都是当前线程的变量副本,与其他线程完全隔离,以此来保证线程执行过程中不受其他线程的影响。主要是四个方法1. void set(Object value)设置当前线程的线程局部变量的值。2. public Ob...
2020-07-26 16:50:35
8045
原创 java线程治理法宝一:线程池
线程池使用及优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务, 如果线程数量超过了最大数量 超出数量的 线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 它的主要特点为:线程复用,控制最大并发数,管理线程优点:1:降低资源消耗。通过重复利用己创建的线程降低线程创建和销毁造成的消耗。2:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。3:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资
2020-07-26 11:32:40
8225
原创 java小数计算工具类(直接用糊涂工具包,我也不知道写个这个干什么哈哈)
import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。 */ public class ArithUtil{ // 默认除法运算精度 private static final int DEF_DIV_SCALE = 10; /...
2019-09-11 13:38:57
43736
原创 JDK8新特性
关于jdk8的改变大体有对lambda表达式(借鉴其他语言的函数式编程方式)简化很多啰嗦的代码,还有就是流的操作,类似把集合当做数据库,java的流操作当做SQL,这样方便对集合的数据进行操作,当然对JDK的升级还有很多,这里只是小结一些常用的.GitHubhttps://github.com/zhang-xiaoxiang/jdk81lambda表达式简单试用package ja...
2019-09-08 21:12:33
48099
原创 安全发布对象-发布与溢出
举个不安全的发布对象例子,比如我们创建一个类是下面的方式创建,那么则属于不安全发布对象,就是说这个类压根不安全,使用的时候会导致在多线程环境下不安全package com.example.gaobinfa.publish;import com.example.gaobinfa.annoations.NotThreadSafe;import lombok.extern.slf4j.Slf...
2019-08-22 22:01:09
61687
原创 java并发编程之-JUC并发容器的使用
在 Java 5.0 提供了java.util.concurrent(简称JUC)并发编程容器包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中的 Collection 实现等我们拿其中常用的list容器来作为例子,进行高压(高并发测试),使用代码和JMter测试工具来分别测试线程安全问题...
2019-08-11 15:11:06
77308
原创 java设计模式之装饰器模式(包装器模式)
显然设计模式往往追求开闭原则,所以往往是面向接口编程,那么万事万物就是先写接口,把需求弄出来,这里以一辆车子在陆地上跑为基础,对它进行装饰,使它可以具备更多的"功能",达到装饰的效果.这里由于代码相对简单,直接写在一个类里面了package com.demo.decorator;/** * ICar:抽象构建,面向接口编程,不管三七二十一,来个接口明确要干什么哈 * 就是实现一个毫无...
2019-08-10 11:38:36
82199
2
原创 spring boot2使用AOP注解和反射知识实现非空参数的切面判断
项目demo GitHub上https://github.com/zhang-xiaoxiang/judge-parameter我求求你们不要再黑蔡徐坤了好吗?他是我朋友的救命恩人啊,上次我同学出了车祸,成了植物人。医生都放弃了,都说别救了。可那天在病房,电视上在播蔡徐坤打篮球的视频,我朋友硬是从昏迷中醒来把电视给关了!!!你还在为一大堆参数判断而烦恼吗?这里提供一种思路,使用AO...
2019-07-22 23:18:28
107262
原创 使用阿里巴巴的easy-excel实现excel导入到数据库和从数据库导出excel到桌面
直奔主题了,需求:实现如题所述的基本需求,快速实现excel的处理,那么显然我要给个例子放在GitHub上才能假吧意思体现我的良心项目的地址https://github.com/zhang-xiaoxiang/easy-excel (含有数据库SQL和Excel表格)实现以下excel的数据与数据库的导入导出,具体实现功能如下1:excel下载(单sheet的实现了,多sheet...
2019-07-22 21:47:42
116358
20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人