
java
文章平均质量分 91
烟花散尽13141
Java分布式组件学习全家桶持续更新!
感谢支持
还请点赞、关注、评论三连
1、springcloud系统学习
2、数据库底层学习、sql优化
3、开发个人工具包
展开
-
从单例谈double-check必要性,多种单例各取所需
上面这段代码就是饿汉式单例模式。通过这单代码我们也能够总结出单例模式的几个特点特点隐藏类的创建即外部无法进行创建内部初始化好一个完整的类提供一个可以访问到内部实例的方法,这里指的是getInstance...原创 2022-06-06 08:55:13 · 398 阅读 · 0 评论 -
Java并发防修改ConcurrentModificatioException不亚于NullPointException
前言ConcurrentModificationException 这个异常大伙应该不少见啊。List在循环时是不能够改变其结构的。问题代码public static void main(String[] args) throws InterruptedException { List<Integer> list = new ArrayList<>(); list.add(1); for (int i = 0; i < 10; i++) {原创 2021-12-27 16:37:06 · 423 阅读 · 0 评论 -
【redis前传】redis整数集为什么不能降级
前言整数集合相信有的同学没有听说过,因为redis对外提供的只有封装的五大对象!而我们本系列主旨是学习redis内部结构。内部结构是redis五大结构重要支撑!前面我们分别从redis内部结构分析了redis的List、Hash、Zset三种数据结构了。今天我们再来分析set数据结构内部是如何存储的基本结构在src/t_set.c中我们发现这样一段代码由此我们可知在set中是由两种数据结构构成的: hashtable+intset 。关于redis内部其他的结构我专门在【redis专栏中有原创 2021-07-21 09:07:55 · 193 阅读 · 0 评论 -
【redis前传】自己手写一个LRU策略 | redis淘汰策略
一、题目描述146. LRU 缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化LRU缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到原创 2021-06-25 09:13:56 · 225 阅读 · 0 评论 -
定时任务不在硬编码,动态定时刷起来
前言传统定时器是硬编码。但是有的时候业务上需要不断的调整问题描述我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那么我们如何实现呢?请接着看简介定时器在开发中真的算是一种福利了。通过定时器我们省去了很多人力。我们通过定时器将一些繁琐定期的事情通过代码去完成。在Java开发中我们通过Timer类可以简单实现定时器功能。既然是springboot课程今天我们就来看看srpingboot整合定时器的事情传统定时器这里使用的是之前课程一的配置。原创 2021-05-31 09:42:05 · 422 阅读 · 0 评论 -
换个思路迭代法解决局部反转问题(发现leetcode一个重大bug)
一、题目描述找出数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。二、思路分析之前我们已经分析过了通过递归的方式解决此问题 。 递归将问题逐层细化已达到整体问题的解决而今天我们将从另外一个角度去分析次问题–迭代。所谓迭代就是通过一次循环遍历解决反转问题。而递归不同的是他将是从左至右的方式解决问题在范围内的链表节点先将他指向一个默认前置原创 2021-05-21 08:40:20 · 227 阅读 · 0 评论 -
运维告诉我CPU飙升300%,为什么我的程序上线就奔溃了
线上服务CPU飙升前言功能开发完成仅仅是项目周期中的第一步,一个完美的项目是在运行期体现的今天我们就来看看笔者之前遇到的一个问题CPU飙升的问题。 代码层面从功能上看没有任何问题但是投入使用后却让我头大问题描述系统上点击数据录入功能在全局监控中会受到相关消息的通知。此时服务器CPU飙升300%问题定位首先我们先梳理下Websocket的数据发送的简单原理示意图。往往定位问题得清楚我们的逻辑是什么当一个客户端启动时除了和Websocket建立连接之外,我们还需要向Websocke.原创 2021-05-12 16:32:30 · 2157 阅读 · 20 评论 -
装逼失败系列之ThreadLocal引起的一次线上事故,谁又知道那是几个通宵呢
线上用户存储数据后查看提示无权限前言不知道什么时候年轻的我曾一度认为Java没啥难度,没有我实现不了的需求,没有我解不了的bug直到我遇到至今难忘的一个bug 。 线上用户存储数据后查看提示无权限初次定位明明自己添加的数据,为什么提示自己没有权限呢?我一开始自信的认为是我们的客户操作有问题、或者是我们权限配置有问题但是带我自己亲自验证了一下之后发现这个问题时现时不现,属于一个偶发的问题。这个在开发阶段还真的不容易发现。问题升级经过自己的测试后让我更加怀疑人生了,你要么.原创 2021-05-10 06:19:19 · 311 阅读 · 0 评论 -
别拦我,我要去开彩票,这么做真的能控制彩票
随机数是专门的随机实验的结果,在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的实验组的过程中,或许在进行蒙特卡罗模拟法计算的时候等等。产生随机数有多种不同的方法,这些方法被称为随机数发生器。随机数量重要的特性是:他所产生的后面的那个数与前面的那个数毫无联系。今天我们讨论的问题就是基于随机数展开的。总所周知,彩票就是一种随机的发生,但是在这随机的表面下实际上是一种有目的行的控制的随机。简而言之是在大概率下的随机生成定义概率集改造概率集随机.原创 2021-05-06 11:03:05 · 401 阅读 · 0 评论 -
spring初识--bean的几种注册方式
spring彻底改变了java世界观。spring解决了java 对象管理问题,今天我们来看看spring创建对象的方式有哪些至今还不知道的吧注册bean的几种方式(IOC)BeanDefinition我们查看类图可以看出,BeanDefinitionRegistry下有三个实现类。spring为我们提供了一个默认的BeanDefinition注册工厂DefaultListableFactory 。 为什么说他是默认的不仅仅是因为名字里出现了Default字样。而是在AnnotationCo.原创 2021-05-03 08:08:28 · 1479 阅读 · 0 评论 -
中文数字阿拉伯数字相互转换(Java版本)
文章目录中文数字转阿拉伯数字解题思路各个击破友情提醒阿拉伯数字转中文数字测试源码# 加入战队阿拉伯数字肯定是使用最广泛的符合之一了。我们日常生活都离不开数字。中文下的数字是中国特色的数字。开发中也会遇到需要两者相互转换的需求。今天就来实现下。中文数字转阿拉伯数字想上面的数字一样。假设我们的中文数字是【一亿七千七十九万七千一百九十七】。解题思路首先我们需要将上面中文数字按阿拉伯数字进行分离。这里我们先提出一个思想前提: 亿、万 这种是高级单位;千、百、十这种是低级单位。所以我们先按高级原创 2020-07-22 08:45:31 · 4120 阅读 · 3 评论 -
Java中为什么String不可变
文章目录常量池便利安全引申问题String在Java中的【引用传递】# 加入战队Java中为什么String是不可变性的。今天我们从多角度解析为什么Java把String做成不可变的。常量池Java中我们创建String对象有两种基本方法。String str1 = "zxhtom";String str2 = new String("zxhtom");上面两种方式我们创建了两个String变量 。 但是第一种通过双引号创建的zxhtom这个对象我们称之为常量 。 在JVM中是存储原创 2020-07-20 09:33:03 · 368 阅读 · 0 评论 -
springboot整合swagger。完爆前后端调试
web接口开发时在调试阶段最麻烦的就是参数调试,前端需要咨询后端。后端有时候自己也不是很了解。这时候就会造成调试一次接口就需要看一次代码。Swagger帮我们解决对接的麻烦springboot接入swaggerspringboot 引入swagger只需要引入jar包,然后配置swagger启动。并配合swagger的注解使用就可以实现文档自动生成了。我们先来看看效果环境准备代码还是基于spring仓库开发。分支为feature/0004/springboot-swaggersw.原创 2020-07-17 08:49:25 · 779 阅读 · 0 评论 -
java的干儿子锁Lock
文章目录Lock的由来线程之间的交互Lock方法简介lock()lockInterruptibly()trylock()trylock(long,TimeUnit)unlock()newCondition()使用Lock保障高并发Lock期间线程挂起LockRunnable改造ReentrantLockDemo改造总结# 加入战队微信公众号大数据时代随之而来的就是并发问题。Java开发本身提供了关于锁的操作。我们知道的有Synchronized。 这个是JVM层面的锁。操作简单Lock的由来因为原创 2020-07-16 09:29:33 · 1481 阅读 · 1 评论 -
【优雅写代码系统】springboot+mybatis+pagehelper+mybatisplus+druid教你如何优雅写代码
文章目录spring基本搭建整合mybatispom配置mybatis配置设置数据源设置sqlsessionfactory设置扫描设置开启事务资源放行测试结果思考&&疑问使用通用mapper功能使用mybatis-plus使用分页插件mybatis-plus自带分页github分页插件使用常规版本总结# 加入战队微信公众号主题springboot 融合了很多插件。springboot相比spring来说有一下有点自动配置: 针对很多spring的应用程序,springboot提供了原创 2020-06-11 09:26:34 · 1700 阅读 · 0 评论 -
mybatis精讲(七)--动态sql
文章目录常用标签if元素choose元素trim元素forearchbind元素在我们传统的开发中我们会通过拼接sql达到数据库的操作。java中的拼接不仅效率低下而且代码很长不易维护。而Mybatis通过代理模式实现SQL语句的组装。简洁易懂。常用标签元素作用备注if判断语句条件分支chooseswitch多条件分支trim去除空字符特殊处理foreach集合循环遍历if元素if元素是常用的语句,常常在where内部和test结合原创 2020-06-02 09:45:09 · 258 阅读 · 0 评论 -
基于redis实现分布式锁
文章目录原理剖析实现编写注解拦截器拦截上述提及工具RedisLockStockKeyGenerator问题分析业务处理时间>上锁过期时间系统的不断扩大,分布式锁是最基本的保障。与单机的多线程不一样的是,分布式跨多个机器。线程的共享变量无法跨机器。为了保证一个在高并发存场景下只能被同一个线程操作,java并发处理提供ReentrantLock或Synchronized进行互斥控制。但是这仅仅对单机环境有效。我们实现分布式锁大概通过三种方式。redis实现分布式锁数据库实现分布式锁zk实现原创 2020-06-01 09:25:52 · 368 阅读 · 0 评论 -
freemark+dom4j实现自动化word导出
导出word我们常用的是通过POI实现导出。POI最擅长的是EXCEL的操作。word操作起来样式控制还是太繁琐了。今天我们介绍下通过FREEMARK来实现word模板导出。文章目录开发准备模板准备开发测试结果检测功能通用化思考Dom4j实现智能化复选框部分源码集合部分源码图片部分源码基于word自动化导出(含源码)参考网络文章# 加入战队微信公众号开发准备本文实现基于springboot,所以项目中采用的都是springboot衍生的产品。首先我们在maven项目中引入freemark坐标。.原创 2020-05-25 09:10:06 · 461 阅读 · 0 评论 -
mybatis精讲(三)--标签及TypeHandler使用
[TOC]话引前两张我们分别介绍了Mybatis环境搭建及其组件的生命周期。这些都是我们Mybatis入门必备技能。有了前两篇的铺垫我们今天就来深入下Mybatis, 也为了填下之前埋下的坑。XML配置标签概览<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PU...原创 2019-11-26 09:15:05 · 1225 阅读 · 0 评论 -
Mybatis精讲(二)---生命周期
[TOC]回顾上一章节我们通过xml和代码的方式实现了Mybatis环境的配置。代码方式只是简单介绍下。我们也知道我们大部分情况使用的是xml方式的配置。在实际开发中我们那样开发显然是不合理的。上章节提到的组件显示不可能每次执行sql都要重新创建的。这样性能上肯定是过不去的。今天我们就来简单聊聊SqlSessionFactoryBuilder、SqlSessionFactory、SqlS...原创 2019-11-20 15:57:02 · 635 阅读 · 0 评论 -
Mybatis精讲(一)---环境配置及架构梳理
此文已独家授权给【新华前后端开发】使用。其他平台使用联系作者后再使用[TOC]简介在数据库方面我们最常用的应该JDBC、Hibernate和Mybatis。通过JDBC方式连接数据库,我们会发现工作量是相当的复杂。我们得处理一些琐碎的关闭。然后入参出参我们都得自己管理。基于次产生了ORM(Object Relational Mapping)模型。ORM模型简单的说ORM模型就是数据库...原创 2019-11-13 10:10:28 · 1019 阅读 · 2 评论 -
javaWeb 中前端Form表单数据处理(手动拼json)
在前端我们会用到最多的就是form表单提交数据,在form表单中有很多都是自动将数据传到后台,然后通过实体来接受的,但是有的时候我们就是需要在前端就拿到这个Form表单的数据,这是我们就可以自己讲数据拼接好// 获取表单里面的数据,返回一个json形式的对象 // 参数 form 为表单对象,filler 为字符串 // 对于表单中空值的元素,默认忽略,也可以设置填充值:filler 来填充空原创 2016-06-23 15:08:34 · 18989 阅读 · 4 评论 -
git冲突
myeclipse 集成gitgit命令使用git和svn一样,很容易造成代码冲突。大多是以下三种情况myeclipse 集成git这是服务器上的文件。目前第三行是zxhtom1 下面是本地myeclipse中的文件。第三行被改了。而且增加了一行 这个时候本地文件和服务器文件是冲突的。这个时候如果直接提交或者更新都会出错。直接提交 通过上面我...原创 2018-08-19 14:37:40 · 23651 阅读 · 0 评论 -
Maven标签了解(一)
maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。 maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性 利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。 localRepository用于指定存储jar包的路径,换句话说就是本地原创 2018-04-10 10:52:48 · 23392 阅读 · 0 评论 -
mybatis关联
数据准备数据结构实体准备基本实体对应stage_order单表扩展实体基本映射一对一一对多查询应用复杂映射多重映射联合主键查询简单说明常用标签格言web项目开发中目前很多企业都是在SSM框架基础上开发。其中的M指的的mybatis(ibatis).mybatis里指的一说的是规避了传统的jdbc等的繁琐。在mybatis中我们可以只用关注sql本身。而不用太在意之个执行原创 2017-12-20 09:22:27 · 23578 阅读 · 0 评论 -
JavaWeb前端分页显示方法
在前端中我们总会遇到显示数据的问题,正常情况分页显示是必须的,这个时候我们不能仅仅在前端进行分页,在前端其实做起分页是很困难的,着就要求我们在后台拿数据的时候就要把分页数据准备好,在前端我们只需要将这些后台准备好的数据拿过来就行了在后台我们通常是实现准备好一个分页工具类Pagination这里是分页显示的基本数据在前台中我们只需要将pagination中构造函数中所需要的参数传过来就可以了。然后原创 2016-06-24 15:44:35 · 21153 阅读 · 2 评论 -
Sublime Text3激活及个性化配置
[TOC] 在我们的开发过程中,选择正确的开发工具会让我们事半功倍。作为后端开发我们熟悉的myeclipse和itellij idea这些工具我也介绍曾介绍过关于他们的安装及破解。但是我们并不能仅仅使用后端。前端开发工具也是有很多的。今天让我们来破解和配置sublime text这个前端神器。 软件激活激活码点我去原博客地址查看 激活步骤我们安装好软件之后,在Help–>Register Lic原创 2017-11-07 11:26:55 · 23094 阅读 · 0 评论 -
log4j2的使用介紹
一张图带你了解log4j2使用环境准备log4j-api-2.3.jarlog4j-core-2.3.jarlog4j-web-2.3.jar (在web项目中需要引入的jar包。这里做了数据的初始化) 数据初始化我们知道在web项目的入口在web.xml中。所以我们得加入log4j的监听器和过滤器 org.apache.logging原创 2018-08-28 10:17:00 · 369 阅读 · 0 评论 -
powerdesign进军(二)--oracle数据源配置
title: powerdesign进军(二)–oracle数据源配置date: 2019-05-20 12:00:30tags:- [powerdesign]categories:- [database]permalink: zxhprefix: database文章目录title: powerdesign进军(二)--oracle数据源配置date: 2019-05-20 ...原创 2019-07-11 16:57:58 · 362 阅读 · 0 评论 -
Mina各组件介绍
Mina各组件介绍上一篇文章已经系统的介绍了Mina的运行流程,Apache推出的Mina性能上很是高效,上章节我们知道内部有很多的类,各个类之间的依赖也是很多,他们之家都是相互依赖。下面主要看看各个类中的方法。本篇就当是Mina的文档了。一下总结来源于网络: IoService 这个接口是服务端IoAcceptor、客户端IoConnector 的抽象,提供IO 服务和管理IoS...原创 2019-08-22 09:15:08 · 589 阅读 · 0 评论 -
springboot整合websocket高级版
文章目录sockjs介绍产生的原因环境搭建springboot整合sockjs使用场景聊天室开发点对点通信群聊效果总结加入战队微信公众号上一章节我们说了websocket的优缺点,我们通过websocket和http的对比分析,总结出用websocket的场景。今天小编带大家通过一个案例使用下升级版的websocket。sockjs介绍So长江J算是一个浏览器库,它提供了一个跨浏览器的api...原创 2019-08-12 17:21:55 · 792 阅读 · 0 评论 -
Socket通信封装MIna框架--含羞代放
[TOC] Mina异步IO使用的Java底层JNI框架,Mina提供服务端和客户端,将我们的业务解耦开发.真正做到高内聚低耦合的思想 核心类 IoService :Mina中将服务端和客户端都看成是服务,这里提供统一接口IoService,这个接口的作用就是用来处理套接字机制。也正是IoService来监听消息返回消息这些步骤,可以说IoService就是我们Mina中核心 ...原创 2019-08-21 15:11:03 · 1205 阅读 · 0 评论 -
zxhtom框架开源啦--springboot搭建
[TOC]开源位置springboot基于spring和mvc做了很多默认的封装。这样做的好处极大的方便了开发者的效率。尽管与此我们每个人还是需要有一些自己个人的脚手架。方便我们秒级搭建项目。此项目就是基于次为出发点进行了企业的规范设置。项目介绍基于Spring + SpringMVC + Mybatis敏捷开发的一套系统框架。zxhtom目前是针对管理端进行封装的一个架构。里面内...原创 2019-08-25 09:15:00 · 522 阅读 · 0 评论 -
Ubuntu系统开发环境完整搭建
安装搜狗输入法 点击我下载哦 idea快捷键冲突 输入发占用快捷键。撤掉输入法的快捷键。还有系统自带快捷键也要取消。 安装deepin-terminal 在tools工具包中找到deepin-terminal中运行启动脚本。因为途中为去下在github源码。这里下载慢的可以直接先下载下来 然后执行 mkdir buildcd buildcmake ..make...原创 2019-08-24 09:14:50 · 1824 阅读 · 0 评论 -
深入理解vue父子组件之从零开始Tree插件
[TOC] Tree树形控件在前端开发中必不可少,对于数据的展示现在网站大都采取树形展示。因为大数据全部展示出来对于用户来说是不友好的。今天我们自己手写一个Tree插件。 iview提供的控件 iview已经很成熟了,如果说我写的控件和iview提供的控件谁更好,那肯定是选择iview , 手写控件只是为了更好的了解vue父子组件之间的通信的。 请读者还是不要拿我的控件和ivi...原创 2019-08-19 15:24:54 · 524 阅读 · 0 评论 -
springboot整合websocket原生版
文章目录HTTP缺点HTTP websocket区别websocket原理使用场景springboot整合websocket环境准备客户端连接加入战队微信公众号主题HTTP请求用于我们开发以及用户之间最为广泛的一种协议,在HTTP中我们可以简单的通过浏览器获取到我们需要的内容(页面)。但是他也有他的局限性。今天我们的主角websocket将为展现他的功能HTTP缺点HTTP只能有clie...原创 2019-08-06 16:39:47 · 475 阅读 · 0 评论 -
powerdesign进军(三)--mysql驱动配置
文章目录资源下载powerdesign配置总结第二节我们已经安装了oracle的驱动,但是企业中还有一个重头数据库(mysql),今天来安装mysql驱动。mysql相较oracle比较简单。资源下载百度云镜像官网下载在资源选择中要注意版本问题。我就是一开始选择了5.0.3报各种问题。后来换了版本就好了。还有我们需要选择32位的。不管你的系统32还是64的。我的电脑64位安装64位的报...原创 2019-07-31 19:25:43 · 544 阅读 · 0 评论 -
pdf.js跨域加载文件
pdf.js一个基于Html的工具类,熟悉pdf.js的朋友们很清楚,pdf.js帮助我们做了很多事。尤其金融类网站会产生很多的报表。需要在线预览。pdf.js绝对是我们的首选 本地预览在pdf.js的官网上下载的demo中我们就可以直接进行预览。官网的案列在web文件夹下的view.html。这里我整理了一个pdf.js精简版的。 这两个demo里面加载的是本地文件。这里没什么说的。其中demo原创 2017-07-25 14:39:39 · 57377 阅读 · 13 评论 -
设计模式(一)----工厂模式
基本的业务逻辑的编写并不是难事,作为一个合格的程序员能够编写出易扩展,可维护,高内聚,低耦合的代码才是真正的能力。所以从今天开始会陆陆续续的研究一下设计模式。设计模式并不是针对编程语言,而是考察的编程的思想。设计模式中最简单的应该就是工厂模式了,在我们企业项目中工厂模式和单例模式也是应用最多的模式了。今天我们就简单的介绍一下工厂模式。都是个人总结,不喜勿喷!!! 描述工厂模式就是简化了对象的构建原创 2017-06-11 14:34:11 · 22895 阅读 · 0 评论 -
带你剖析WebGis的世界奥秘----Geojson数据加载(高级)
前言:前两周我带你们分析了WebGis中关键步骤瓦片加载+点击事件(具体的看前两篇文章),下面呢,我带大家来看看Geojson的加载及其点击事件Geojson数据解析GeoJSON是一种对各种地理数据结构进行编码的格式。GeoJSON对象可以表示几何、特征或者特征集合。GeoJSON支持下面几何类型:点、线、面、多点、多线、多面和几何集合。GeoJSON里的特征包含一个几何对象和其他属性原创 2016-08-19 08:12:29 · 33013 阅读 · 20 评论