java
文章平均质量分 69
csdn-延
好记性不如个烂笔头
展开
-
java常用数据结构有哪些
假如我们要从上图中查找 5 个元素,先从根节点 7 开始找,5 必定在 7 的左侧,找到 4,那 5 必定在 4 的右侧,找到 6,那 5 必定在 6 的左侧,找到了。尽管可能性极小,但仍然会发生,如果哈希冲突了,Java 的 HashMap 会在数组的同一个位置上增加链表,如果链表的长度大于 8,将会转化成红黑树进行处理——这就是所谓的拉链法(数组+链表)。同理,栈按照“后进先出”、“先进后出”的原则来存储数据,先插入的数据被压入栈底,后插入的数据在栈顶,读出数据的时候,从栈顶开始依次读出。转载 2023-08-04 08:26:17 · 321 阅读 · 0 评论 -
聊聊 Sharding-JDBC 数据脱敏
上文介绍到了Sharding-JDBC支持的两种加密策略,肯定都是要实现一下,下面将会针对两种策略去介绍一下如何自定义。自定义很简单,直接实现Encryptor 接口即可,重写其中的加密、解密方法。下面自定义一个SHA256加密算法器,这是一种不可逆的算法,如下:复制/*** @author 不才陈某 公众号:码猿技术专栏* 自定义的加密解密算法,基于sha256*/@Data/*** 别名,配置时需要*/@Override/*** 加密。转载 2023-08-03 23:56:00 · 197 阅读 · 0 评论 -
Java中各种数据类型占字节数
Java是广泛应用于大型企业系统的一种面向对象编程语言,它被广泛应用于多种物联网应用、移动应用开发,以及网站后台的开发中。在Java语言中,数据类型对于变量的定义起到了至关重要的作用,这些数据类型的选取除了需要根据语言的规范进行选择之外,还需要根据数据类型所占用的字节数位数进行评估,以保证系统的效率和稳定性。本文将简要介绍在Java语言中数据类型的占用字节数以及其对Java程序的影响。原创 2023-08-03 21:09:40 · 626 阅读 · 0 评论 -
将指定jar包安装到本地maven仓库
部分jar包通过maven中央仓库是无法下载到本地仓库供使用的,这需要我们去其他地方进行下载,并安装到本地仓库以便后续应用。s: maven的配置文件路径(当有多个配置文件时,需指定,否则命令执行时只会寻找settings.xml)DartifactId: pom.xml配置中artifactId的值。DgroupId: pom.xml配置中groupId的值。Dpackaging: 文件类型。Dfile: jar包的路径。Dversion: 版本号。原创 2022-10-08 16:51:51 · 409 阅读 · 0 评论 -
数学运算符(++、--)
在数学计算里面最头疼是“++”、“−−”,因为这两种运算符有两类使用方式:① ++变量、−−变量:先进行变量的自增或者自减,而后再进行数字的计算;② 变量++、变量−−:先使用变量进行计算,而后再进行自增或自减。public class Test { public static void main(String[] args) { int x = 10; int y = 20; //1. ++x首先x的内容要先自增,为11 ..原创 2022-05-22 13:07:14 · 208 阅读 · 0 评论 -
位运算(&、|、^、~、>>、<<)
1.位运算概述从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。口说无凭,举一个简单的例子来看下 CPU 是如何进行计算的,比如这行代码:int a = 35;int b = 47;int c = a + b;计算两个数的和,因为在计算机中都是以二进制来进行运算,所以上面我们所给的 int 变量会在机器内部先转换为二进制在进行相加:35: 0 0 1 0 0 0 1转载 2022-05-22 12:50:57 · 147 阅读 · 0 评论 -
《JAVA设计模式》之状态模式(State)
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状转载 2022-03-09 22:38:42 · 558 阅读 · 0 评论 -
调整kafka服务端允许生产者发送的最大消息体大小
集群配置1. server.propertiesmessage.max.bytes=5242880default.replication.factor=2replica.fetch.max.bytes=5242880说明:broker 配置:message.max.bytes (默认:1000000) – broker能接收消息的最大字节数,这个值应该比消费端的fetch.message.max.bytes更小才对,否则broker就会因为消费端无法使用这个消息而挂起。...原创 2022-03-06 10:11:15 · 6150 阅读 · 0 评论 -
收藏这36个正则表达式,开发效率提高80%
写在前面我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。1、整数 public static final String intege = "^-?[1-9]\\d*$/";转载 2021-12-08 00:27:45 · 295 阅读 · 0 评论 -
什么是用户画像和标签?
在数据越来越值钱的年代,用户画像和标签也被热议了许久。无论你身处IT部门还是业务部门,一定都听说过用户画像或者标签,甚至有不少人基于此开展各项日常工作。笔者希望通过这篇文章,能让大家有效理解标签和用户画像之间的关系。一、先熟悉一些名词和概念1. 标签(Tag)对某一类特定群体或对象的某项特征进行的抽象分类和概括,其值(标签值)具备可分类性。例:对于“人”这类群体,可将“男”、“女”这类特征进行抽象概括,统称为“性别”,“性别”即一个标签; 对于“手机”这类对象,可将“骁龙835.转载 2021-12-06 01:04:14 · 859 阅读 · 0 评论 -
什么是数据结构?程序员如何学好数据结构?
前几天,小灰给大家介绍了什么是算法。说到算法,就不能不说起数据结构。今天我来讲一讲,什么是数据结构?程序员怎么学好数据结构?我们介绍算法的时候说过,计算机当中的算法,本质就是一系列程序指令,用以解决特定的运算和逻辑问题。而所谓数据结构,是数据的组织、管理和存储格式。简单理解的话,数据结构就是执行算法的“原材料”。俗话讲,巧妇难为无米之炊。算法,就好比是聪明勤劳的女主人,而数据结构,就是用来做饭做菜的柴米油盐。数据结构都有哪些组成方式呢?首先,是线性结构。但凡有过一点编程基转载 2021-12-06 01:01:38 · 161 阅读 · 0 评论 -
azkaban使用System.getenv()获取刚刚设置的系统环境变量时为空
场景:azkaban已在linux服务器运行多天,因为程序安全然后设置了系统环境变量export IV=abc123,当程序部署到azkaban运行时发现通过System.getenv()获取时显示为空。原因:环境变量仅在进程树下方,并且只有在进程启动时。azkaban是您的shell的子进程,因此,当您启动azkaban时,它继承了您的shell上定义的所有环境变量。您可能在启动azkaban之后在shell上定义了环境变量,因此,azkaban及其创建的java子进程不了解您的新环境变量原创 2021-07-26 22:14:43 · 801 阅读 · 0 评论 -
读取Maven项目resource下文件方式(兼容纯Java运行和Maven打包运行)
比如: src/main/resources 下有一个1.xml文件,完整路径src/main/resources/config/1.xmlURL url = MemberTask.class.getClassLoader().getResource("config/1.xml")重点说明:getResource里面的值,很多人也许会用.、\、或者空字符来获取路径,这种在mave...原创 2020-02-20 12:55:28 · 637 阅读 · 0 评论 -
Nacos、Apollo、Spring Cloud Config微服务配置中心对比
来源:Nacos 社区为什么需要配置中心配置实时生效:传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中。配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。配置管理流程...转载 2019-12-02 22:26:26 · 2728 阅读 · 1 评论 -
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER
新入门的同学可能会问为什么有时候会出现如下提示:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE S...原创 2019-02-22 14:36:57 · 662 阅读 · 0 评论 -
分布式任务调度框架
我们在实际的开发工作中,或多或少的都会用到任务调度这个功能。常见的分布式任务调度框架有:cronsun、Elastic-job、saturn、lts、TBSchedule、xxl-job等。 定时任务的分布式调度 分布式调度框架大集合 ...转载 2019-02-19 23:21:01 · 926 阅读 · 0 评论 -
SpringCloud FeignClient 遇到的参数问题(RequestParam.value() was empty on parameter 0)
@RequestMapping(value="/add",method=RequestMethod.GET) int add(@RequestParam() int a,@RequestParam() int b);下面是启动报错日志Caused by: java.lang.IllegalStateException: RequestParam.value() wa...原创 2019-02-20 17:26:43 · 3280 阅读 · 0 评论 -
注解@EnableDiscoveryClient和@EnableEurekaClient的区别
SpringCloud中的“Discovery Service”有多种实现,比如:eureka, consul, zookeeper。1. @EnableDiscoveryClient 注解是基于 spring-cloud-commons 依赖,并且在classpath中实现; 2. @EnableEurekaClient 注解是基于 spring-cloud-netflix 依赖,只能为e...原创 2019-02-21 11:01:02 · 5813 阅读 · 1 评论 -
java多线程学习系列:线程锁+线程池+线程同步
1、并发编程三要素?1)原子性原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。2)可见性可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。实现可见性的方法:synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内...原创 2019-03-26 23:10:22 · 486 阅读 · 0 评论 -
使用java8将list转为map
常用方式代码如下:public Map<Long, String> getIdNameMap(List<Account> accounts) { return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));}收集成实体本身ma...原创 2019-03-27 14:37:17 · 27850 阅读 · 1 评论 -
如何正确、安全地停止SpringBoot应用服务
正确、安全地停止SpringBoot应用服务转载 2019-02-21 15:57:09 · 1220 阅读 · 1 评论 -
springboot通过shutdown关闭进程依然存活的问题
背景:前几个月在组内一个小项目的基础上,进行了springboot的改造。在关闭springboot应用的时候,根据日志确认应用确实被关停,但是应用相关的进程还是存活。问题:通过springboot官方推荐的方式调用shutdown的url,在我的应用中是 "http://ip:port/shutdown",关闭springboot应用,应用正确停止,服务下线。但是再次grep进程,发...原创 2019-02-21 15:44:35 · 6329 阅读 · 0 评论 -
SpringCloud应用Maven打包服务启动时连接Eureka报错
在打包带有eureka 的应用时,报如下错:org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while si...原创 2019-02-21 14:57:52 · 728 阅读 · 0 评论 -
开源监控介绍
Cat [CAT基于Java开发的实时应用监控平台,包括实时应用监控,业务监控]Zabbix[zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。]Zipkin[使用zipkin做分布式链路监控]Grafana[ Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示...原创 2019-01-16 14:22:29 · 371 阅读 · 0 评论 -
Maven的几个常用Plugin
一. maven-compiler-plugin编译Java源码,一般只需设置编译的jdk版本<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <ve...原创 2019-01-09 15:36:48 · 913 阅读 · 0 评论 -
发布Maven包到私服
一. maven setting.xml中配置私服server信息: <server> <id>releases</id> <username>admin</username> <password>admin123456</password&g原创 2019-01-09 15:19:07 · 855 阅读 · 0 评论 -
谈谈对Spring AOP的理解
首先先给出一段比较专业的术语(来自百度):在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦...原创 2019-01-14 21:56:34 · 6789 阅读 · 4 评论 -
Maven第三方依赖包所依赖Guava包高低版本不同互不兼容的解决方案
由于从maven3.0开始,maven将不重复引用同一个依赖包(同一groupId和artifactId)。Guava没有向后兼容,由其第三库再依赖guava后,极易再项目里造成jar冲突,真实头疼。不过方法总比困难多。 以下解决方案是在引用的不同第三方包所依赖的Guava冲突背景下进行的。如果你可以简单的通过排除Guava包便可达到兼容的话,...原创 2019-01-09 14:26:56 · 22788 阅读 · 3 评论 -
69道Spring面试题和答案
目录Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVCSpring 概述1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java...转载 2019-01-14 21:42:20 · 229 阅读 · 0 评论 -
谈谈对Spring IOC的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring IOC的理解。 一、分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开...原创 2019-01-13 22:27:00 · 103 阅读 · 0 评论 -
Java13都要来了,你还不了解Java8的新(旧)特性?
Java如今的版本迭代速度简直不要太快,一不留神,就错过了好几个版本了。官方版本虽然已经更新到Java12了,但是就目前来说,大多数Java系统还是运行在Java8上的,剩下一部分历史遗留系统还跑在Java7,甚至Java6上。我刚学Java的时候,正好处于Java7版本末期,彼时已经有很多关于Java8新特性的风声,当时作为初学者,其实对此关注不多,只是依稀记得“lambda表达式”、“函数式编...转载 2019-04-07 00:03:50 · 8770 阅读 · 0 评论 -
Spring Boot 优雅的配置拦截器,实现权限管理
其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了。下面主要介绍两种常用的拦截器:一、基于URL实现的拦截器:关键代码:path.matches(Const.NO_INTERCEPTOR_PATH 就是基于正则匹配的url。二、基于注解的拦截器①创建注解:②创建拦截器:三、把拦截器...原创 2019-04-07 00:26:08 · 5167 阅读 · 1 评论 -
redis单节点和集群配置及工具类
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> 可视包:jedis-2.8原创 2018-03-20 20:06:45 · 639 阅读 · 0 评论 -
Spring Boot Starters 原理与实践
Spring Boot StartersSpring Boot Starter是在SpringBoot组件中被提出来的一种概念,stackoverflow上面已经有人概括了这个starter是什么东西,想看完整的回答戳这里Starter POMs are a set of convenient dependency descriptors that you can include ...转载 2019-06-25 15:59:14 · 438 阅读 · 0 评论 -
在更改密码和注销时使JWT无效的最佳做法?
不使用刷新令牌时:1. 更改密码时:当用户更改密码时,请注意用户数据库中的更改密码时间,因此当更改密码时间大于令牌创建时间时,令牌无效。因此可以很快将其它的会话也给注销掉。2. 当用户注销时:当用户注销时,将令牌保存在单独的数据库中(例如:InvalidTokenDB并在令牌过期时从Db中删除令牌)。因此,用户从相应的设备注销,他在其他设备中的会话保持不受干扰。因此,在使J...翻译 2019-06-21 14:09:23 · 9187 阅读 · 5 评论 -
OAuth授权 看这一篇就够了
背景上一篇我们介绍了单点登录(SSO),它能够实现多个系统的统一认证。今天我们来谈一谈近几年来非常流行的,大名鼎鼎的OAuth。它也能完成统一认证,而且还能做更多的事情。至于OAuth与SSO的区别,将在文章最后总结。如上图所示,用户通过浏览器(Browser)访问app1,他想用微信的账号直接登录,这样就免去了在app1系统的注册流程。这样的流程完全符合单点登录(SSO),但我们今天...转载 2019-06-16 23:07:28 · 3796 阅读 · 0 评论 -
单点登录(SSO)看这一篇就够了
背景在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于运营人员来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称Single Sig...转载 2019-06-16 22:52:05 · 1450 阅读 · 0 评论 -
Api接口访问系统日志记录
pom包: <properties> <project.build.sourceEncoding>utf-8</project.build.sourceEncoding> <spring.version>4.3.8.RELEASE</spring.version> </properties> <...原创 2019-06-10 10:09:00 · 5314 阅读 · 0 评论 -
使用logback进行系统日志记录
pom包:springboot start 引入即可<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> &...原创 2019-06-10 09:55:57 · 1161 阅读 · 0 评论 -
quartz在job间隔期间内,保证上一个任务执行完后,再去执行下一个任务
<p>假设,我们有个job,每2分钟执行一次,但是job本身就要执行5分钟,这个时候,quartz默认设置是并发的,所以它又会开一个线程来执行。这样往往会导致我们执行的数据不正确。 <br>解决办法:1、要是是和spring框架结合的,可以添加如下配置:<propert...转载 2019-06-14 16:54:44 · 10857 阅读 · 0 评论