![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
山川之水
承蒙关照,欢迎关注。
展开
-
Multiple annotations found at this line: - For artifact {org.springframework
spring boot项目打包报错 pom文件报错原创 2022-11-07 22:51:10 · 241 阅读 · 1 评论 -
java计算年卡剩余天数
/** * * @param 开卡日期 * @return 剩余天数 */ public static Long cludate(Object o){ SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd"); Date d = null; try { d = df1.parse(o.toString()); ...原创 2022-05-24 11:44:54 · 370 阅读 · 0 评论 -
CentOS8更换yum源后出现同步仓库缓存失败的问题
报错截图因为CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本,所以建议更换yum源。阿里云建议使用Centos-vault-8.5.2111.repo把系统/etc/yum.repos.d文件 CentOS-Base.repo 换成下面配置,目录下其他的文件备份删除。# CentOS-Base.repo## The mirror system uses the connecting IP address of the clien原创 2022-03-11 10:04:05 · 1836 阅读 · 0 评论 -
java语言的介绍
1.1.java的介绍Java是一种面向对象编程的高级程序语言,由Sun Microsystems公司1995年5月推出,2009年sun公司被oracle公司收购并维护。它有三个版本,有着不同的作用,分别为javaSE,javaEE,javaME。1.2.java版本介绍javaSE是基础版本,是所有版本的基础,它允许开发和部署在桌面服务器嵌入式环境中使用的java应用程序。javaEE是企业版本,它为了帮助开发和部署在服务器端的java应用程序。它是在javaSE的基础上构建的,...原创 2022-03-11 09:55:36 · 2815 阅读 · 3 评论 -
循环删除list已经处理完数据
List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); for (int i = 0; i < list.size(); i++) { list.remove(i); }以上代码在删除中会出现,当i已经为2了,list的长度因为被remove后变成2,导致不会再次进入for循环。正确方法如下: Iterator<...原创 2022-01-25 22:15:54 · 257 阅读 · 0 评论 -
JWT(JSON WEB TOKEN)实例
1.jwt简介jwt是一种跨域认证技术,主要用于分布式,微服务架构下,单点认证后全服务都能识别用户信息。还可以通过JWT进行信息交换,但是尽量不要放敏感信息以及尽量通过https传输保证通道安全。例如我们用jwt做登入认证,可以在用户进行验证登入成功后生成一个jwt返回在前端保存(服务器端可保存也可不保存),然后前端带着它可以进行跨域跨系统传输,就可以避免重复登入校验。2.组成部分jwt加密串由三部分组成分别为头部(header),载体(playload),签名(sign)。中间用.隔开。如原创 2021-11-02 15:44:10 · 600 阅读 · 0 评论 -
Object类equal和hashcode方法讲解
介绍①boolean equals(Object obj)比较2个对象是否相等,相等返回true 不相等返回false通过之前的学习我们知道,比较基本数据类型我们可以用==比较2个数 据是否相等,但是当我们比较他们的包装类和引用数据类型的时候我们就得 用equal。Object类里面的equal比较的是2个对象的引用,何为引用呢?我们的 对象在内存中存的方法是一个名字一块区域,然后通过引用指向它的值。当我们在new一个对象的时候,...原创 2021-10-01 08:52:55 · 258 阅读 · 0 评论 -
普通代码块,静态代码块,构造代码块,构造方法
1.使用示例2.静态代码块介绍在类中通过static修饰然后大括号里面的内容就是静态代码块。见13.1实例static {}静态代码块在类被加载的时候执行,并且他只会执行一次,优先于其他所有代码块以及构造方法执行,如果有多个静态代码块则按编写顺序执行。静态代码块在项目启动的时候执行, 静态代码块不能存在方法,主要放一些项目启动就需要加载的配置或者固定资源以及属性。比如我们可以放一些固定的正则表达式...原创 2021-09-27 15:07:15 · 2057 阅读 · 0 评论 -
面向对象设计的六大法则
1.开闭原则:对扩展开放,对修改关闭。一个软件尽量通过扩展软件实体的行为来实现变化,而不是通过修改现有的代码来完成变化,我们在设计软件的时候也应该尽量的提高灵活和稳定度来真正的拥抱变化。比如我们的登入功能,现在登入功能只有账号密码登入,现在有一个新需求是新加手机验证码登入。我们有的同学就直接在登入接口类加上一个验证码登入接口,然后在实现类实现,最后调用这个方法。虽然这样简单粗暴的方法完成了这个功能,其实这是违反我们的开闭原则的。我们可以新加一个验证码登入的实现类,实现之前的登入接口方法,或者原创 2021-08-25 11:41:11 · 143 阅读 · 0 评论 -
springcloud alibaba架构介绍
springcloud alibaba是由阿里巴巴开发的新一代微服务架构解决方案,方便微服务的管理。 微服务优点:方便扩展,灵活管理,简化部署,相互影响小可靠性高 缺点: 复杂度高,运维及人力成本高,可能影响整个系统性能一.组件介绍 负载均衡 前段基于nginx负载均衡策略并进行域名解析,后台服务之间基于ribbon。 分布式配置 ...原创 2021-05-13 12:01:21 · 1607 阅读 · 0 评论 -
JAVA 内部类
一 。Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类。 1.静态内部类 定义在类内部的静态类,就是静态内部类。 public class Out { private static int a; private int b; public static class In...原创 2021-04-08 16:20:45 · 73 阅读 · 0 评论 -
java垃圾收集器版本有哪些
各种版本对比 名称 特点 缺点 介绍 Serial GC 单线程,精简,结构简单,初始化简单 进行垃圾收集过程中,会进入臭名昭著的“Stop-The-World”状态 它是最古老的垃圾收集器,JVM 参数是: -XX:+UseSerialGC ParNew GC 多线程 线程切换卡顿,和用户线程抢占CPU Serial GC的多线程版本,对应参数 -XX:+UseConcMarkSweepGC -XX:+UseParNe原创 2021-03-25 16:36:54 · 158 阅读 · 0 评论 -
Map map = new HashMap((int initialCapacity, float loadFactor);
简介HashMap是无序,非线程安全基于哈希表的键值对集合,允许存null,但key不能重复。数据结构底层采用数组,链表,红黑树的数据结构实现特点效率高,读取快,关键参数/**实际存储的key-value键值对的个数*/transient int size;/**阈值,当table == {}时,该值为初始容量(初始容量默认为16);当table被填充了,也就是为table分配内存空间后,threshold一般为 capacity*loadFactory。HashMap原创 2020-11-17 17:53:33 · 1097 阅读 · 2 评论 -
什么是静态代理和动态代理
当实现同一个接口的很多类需要进行同样的操作,我们需要重复写很多代码,这个时候我们可以使用代理模式,减少代码的冗余,增加代码的层次感。比如我们需要统计一个接口的运行时间: 接口类public interface Dongwu { public void eat(String str); public void drink(String str); public void play(String str); } 实...原创 2020-10-30 11:31:34 · 406 阅读 · 0 评论 -
springboot集成ES以及ES详细解读
未完待续原创 2020-04-27 17:19:38 · 3747 阅读 · 3 评论 -
redis常见问题以及解决方法
穿透 原因: 客户端一直在查数据库没有的数据,导致没有查缓存然后直接到了数据库。 解决方式: 1.布隆过滤器 :预先把数据ID全存在过滤器里面(实时更新),当在查缓存为空时,再判断过滤器里面有没 有,没有的话直接返回,有的话再查数据库。 ...原创 2020-04-01 18:21:25 · 421 阅读 · 0 评论 -
为什么mysql索引要用B+Tree数据结构
二叉树 不适合自增长索引,失去索引效率,树单边增长,成链表状。 (从1插入到4)红黑树(平衡二叉树) 不适合数据量大,树太高。如果查找数据在叶子节点,则需要查树高次数。 (从1插入到5)hash表 hash冲突,并且不支持范围查询,...原创 2020-03-06 19:30:48 · 623 阅读 · 1 评论 -
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', bu
升级JDK1.7到1.8正常操作后执行javac命令正常,执行java命令报错:Error:Registrykey'Software\JavaSoft\JavaRuntimeEnvironment'\CurrentVersion'hasvalue'1.8',but'1.7'isrequired.百度了很多资料大概都是如下1.改注册表java运行环境版本2...原创 2019-12-23 18:58:07 · 317 阅读 · 0 评论 -
常用linux命令
(操作)mv 移动 改名cd 进入文件夹cp 复制 -r 目录递归复制mkdir 建立空文件夹touch 建立空文件ls 查看文件ll 查看文件详细信息cat 查看文件内容vi vim 编辑文件 (以下是进入后命令) /查找内容 继续按n下一个 shift+n上一个 more 分页查看 :q不保存退出 ...原创 2019-12-09 12:10:58 · 114 阅读 · 0 评论 -
Object o = new Object()深度解析
Object o = new Object();对象初始化过程申请内存初始化成员变量 0设置初始值 8对象头包括什么锁的信息Gc标记信息 标记清除算法 GC年龄(4位最大15) 为什么标记清除算法标记年龄最大15 对象头GC标记信息最大4位hash码八个字节64位栈不需要垃圾回收,直接弹出一个boject占多少个字节?最小16个字节 8+4...原创 2019-12-04 17:27:34 · 3586 阅读 · 2 评论 -
tomcat优化
一.Tomcat内存优化Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数 JAVA_OPTS参数说明 -server 启用jdk 的 server 版 -Xms java虚拟机初始化时的最小内存 -Xmx java虚拟机可使用的最大内存 -XX: PermSize 内...转载 2019-12-04 14:21:32 · 89 阅读 · 0 评论 -
什么是CAS/ABA以及volatile的使用
1.CAS原理介绍CAS全称 比较和交换(Conmpare And Swap),它是一种思想,是乐观锁。内存地址V,内存地址V中旧值C,获取的旧预期值A,要修改的新值B, 工作内存W我们需要把C修改成B时首先从V中取到值进入W中时,不像悲观锁一样,把V中值锁住,而是先把A放入W中,然后用A和C进行比较,如果不一样,则修改失败。然后重新从V中获取A,这个过程叫自旋,使用了自旋...原创 2019-11-12 15:04:55 · 459 阅读 · 0 评论 -
linux系统pgsql数据库定时备份失败问题
备份脚本贴上如下OUT_DIR=/usr/local/DB_BKLINUX_USER=rootDB_NAME=数据库名DB_USER=数据库用户名DAYS=20cd $OUT_DIRDATE=`date +%Y_%m_%d`OUT_SQL="$DATE.sql"TAR_SQL="备份脚本名$DATE.tar.gz"pg_dump -U $DB_USER -p 6544...原创 2018-01-24 16:28:54 · 387 阅读 · 0 评论 -
设计模式之装饰设计模式
1.目的:动态扩展类的行为开闭原则对扩展开放,对修改关闭2.要点:装饰类和被装饰类都实现同一个接口或者继承同一个类3.具体实现:被装饰组件接口-->>被装饰组件实现类实现抽象类构建被装饰组件实现被装饰组件接口-->>装饰类继承抽象类装饰类 -->> 重写抽象类方法 装饰 4.实例:被装饰类接口 public interface plan原创 2017-11-14 10:01:26 · 150 阅读 · 0 评论 -
一对多 一对一 多对一 多对多 数据库设计实践
在数据库设计中,我们进行垂直分表或者是某些业务场景需要分多个表但是又得使这些表有联系的, 就必须设立一个关联字段让两个表关联。这样就产生了表关系,有一对多 一对一 多对一 多对多等。 一对多,一个用户对应多个账户类型,一个用户对应多个订单,多个购物车 等 一对一,这种在一个表字段太多,垂直分表常见,或者 需要分表满足特殊功能 多对一原创 2017-11-01 15:49:00 · 659 阅读 · 0 评论 -
分布式系统session共享问题
现在我们的服务器很多都是同一个服务部署多个,或者部署在不同服务器上面,架设成集群,实现负载均衡。那么问题来了。当同一个用户登入后,再次访问可能分发到不同的服务,这样我们就取不到之前登入session,出现未登入现象。所以我们必须解决共享session问题。 方式一: 存储在数据库中,用户登入时,把session信息储存在数据库中,然后再原创 2017-11-01 10:48:10 · 1208 阅读 · 0 评论 -
500错误以及java.net.SocketException: Too many open files错误
多线程批量处理任务需要频繁用http请求接口,任务跑了十几天后忽然报错500 error。开始以为是因为频率太快导致错误。因为处理时间完成没要求,所以决定对每个任务进行了延时500ms处理。几天后忽然又报错Caused by: java.lang.NoClassDefFoundError: org/apache/http/impl/client/RequestWrapper看到这个错以为是因为ht...原创 2018-06-26 11:46:23 · 1055 阅读 · 0 评论 -
mybatis动态代理原理初步解析
为什么我们在调用一个未实现的方法能够执行定义的方法,就是因为mybatis用动态代理给我们实现了。首先mybatis里面有一个实现InvocationHandler接口的类叫MapperProxy,类里面有一个方法叫Mapperproxy.invoke();通过Proxy.newProxyInstance创建一个代理实例,我们在写代码时用sqlSession.getMapper实现。...原创 2018-10-10 16:55:17 · 555 阅读 · 0 评论 -
为什么final修饰的String值不能改值,而final修饰的map能改值
如题 final int a =1; final Map map = new HashMap(); private void test(){ a=2; //报错 map.put("1", "1"); }我们都知道final修饰的类不能被...原创 2018-12-04 17:10:03 · 8601 阅读 · 0 评论 -
java运行时数据区
未完待续原创 2019-01-31 15:18:50 · 76 阅读 · 0 评论 -
用synchronized关键字加锁
官方介绍synchronized作用: 同步方法支持一种简单的策略来防止线程干扰和内存一致性错误:如果一个对象对多个线程可见,则用改对象变量的所有读取或写入都是通过同步方法完成的。一句话来说:能够保证一段时间内只有一个线程执行该段代码,以达到并发安全的效果,是一种悲观锁。看2段代码: public static void main(String[] ar...原创 2019-01-31 11:25:27 · 185 阅读 · 0 评论 -
java垃圾回收算法
我们知道垃圾回收主要是回收堆区的内存1. 堆区我们分成eden区 s1 s0区 老年代2.JVM对象的引用分为了四种类型:(1)强引用:默认情况下,对象采用的均为强引用(这个对象的实例没有其他对象引用,GC时才会被回收)(2)软引用:软引用是Java中提供的一种比较适合于缓存场景的应用(只有在内存不够用的情况下才会被GC)(3)弱引用:在GC时一定会被GC回收(4)虚引用...原创 2019-02-19 17:29:40 · 181 阅读 · 0 评论 -
位 字节 byte bit 关系
计算机的最小储存单位是位即bit 八位组成一个字节即byte两个字节组成一个字1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) 所以 一个字节长度为8 一个字长度为16我们常说的MB KB G 1 kb = 1024 bytes =2^10 bytes 1 mb = 1024 kb = 2^20 by原创 2017-11-07 15:07:04 · 309 阅读 · 0 评论