
Java
文章平均质量分 61
分享在开发过程中碰到的问题以及使用的技术
小高同学~
一个不正经的程序员~
展开
-
Google-Authenticator双因子认证
Google-authenticator是基于时间的一次性密码算法(TOTP)是一种根据预共享的密钥与当前时间计算一次性密码的算法。它已被互联网工程任务组接纳为RFC 6238标准[1],成为主动开放认证(OATH)的基石,并被用于众多多重要素验证系统当中。TOTP是散列消息认证码(HMAC)当中的一个例子。它结合一个私钥与当前时间戳,使用一个密码散列函数来生成一次性密码。由于网络延迟与时钟不同步可能导致密码接收者不得不尝试多次遇到正确的时间来进行身份验证,时间戳通常以30秒为间隔,从而避免反复尝试。在原创 2021-06-30 09:55:49 · 3344 阅读 · 1 评论 -
Java类加载机制
1、类加载过程类加载:类加载器将class文件加载到虚拟机内存加载:在硬盘上查找并通过IO读入字节码文件连接:执行校验、准备、解析(可选)步骤校验:校验字节码文件的正确性准备:给类的静态变量分配内存,并赋予默认值解析:类装载器装入类所引用的其他所有类初始化:对垒的静态变量初始化为指定的值,执行静态代码块2、类加载器种类引导类加载器:负责加载JRE的核心类库,如jre目标下的rt.jar,charsets.jar等扩展类加载器:负责加载JRE扩展目录ext中的JAR类包系统原创 2021-01-30 23:51:25 · 323 阅读 · 0 评论 -
六、Hystrix服务降级与熔断
卑微程序员:各位客官,走过看过,不求三联,只需点赞SpringCloud系列目录:一、SpringCloud简介二、Eureka服务注册与发现三、Eureka注册与发现之Eureka Comsumer四、Eureka、Server Provider集群配置五、Ribbon和OpenFeign六、Hystrix服务降级与熔断一、前言 当今环境下分布式已是当今系统架构的发展方向,但分布式同样面临着许多的问题。本文将从分布式系统面临的问题、解决方案、能解决哪些问题,并结合代码去演示.原创 2021-01-24 23:01:55 · 397 阅读 · 0 评论 -
Hystrix常用熔断参数
@HystrixCommand(fallbackMethod = "str_fallbackMethod", groupKey = "strGroupCommand", commandKey = "strCommard", threadPoolKey = "strThreadPool", commandProperties = { //设置隔离策略,THREAD表示...原创 2021-01-24 13:35:15 · 3231 阅读 · 6 评论 -
== 和 equal()
==基本数据类型比较的是值引用数据类型比较的是地址equals()equals()是Object类的方法,所有的类都继承自ObjectObject类型定义equals()方法比较的是两个引用所指向的地址,所以如果一个类没有重写equals()方法,使用equals()方法的就是比较两个引用所指向的对象的地址。如果要比较两个对象中的属性是否相同,就需要重写equals(),比如我们知道的String就是已经重写了该方法String类中重写的equals()代码如下所示:public原创 2021-01-15 08:44:09 · 333 阅读 · 0 评论 -
CrashLoopBackOff
大晚上改代码着实非常的懵逼~CrashLoopBackOff :Kubernetes试图启动该Pod,但是过程中出现错误,导致容器启动失败或者正在被删除。问题描述:问题原因:大都数情况下是代码的问题定位问题:1)首先查看pod的状态是否是正常:kubectl describe pod 实例名称2)查看日志kubectl logs -f 实例名称解决方式查看pod的log信息定位问题,比如这个问题就很清晰,实例初始化失败。。。。。...原创 2021-01-10 00:33:27 · 30914 阅读 · 0 评论 -
String常考知识点一
给出如下代码的结果public class StringDemo{ private static final String MESSAGE="taobao"; public static void main(String [] args) { String a ="tao"+"bao"; String b="tao"; String c="bao"; System.out.println(a==MESSAGE); System.out.println((b+原创 2021-01-05 22:11:29 · 327 阅读 · 0 评论 -
RocketMq设计原理
设计(design)1 消息存储消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构、PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面来分别展开叙述。1.1 消息存储整体架构消息存储架构图中主要有下面三个跟消息存储相关的文件构成。(1) CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大小默认1G ,文件名长度为20位,左边补零,剩余为起始转载 2020-12-30 22:26:52 · 701 阅读 · 0 评论 -
五、Ribbon和OpenFeign
Ribbon是什么Ribbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件Ribbon 可以用来做客户端负载均衡(简单轮询、随机连接),调用注册中心的服务Ribbon的使用需要代码里手动调用目标服务,请参考官方示例:https://github.com/Netflix/ribbonRibbon能做什么LB(负载均衡)集中式LB(在服务的消费方和提供方之间使用独立的LB设施,又该设置负责把访问请求通过某种策略转发给服务的提供方)和进程内LB(将LB逻辑集成到消费方,消费方从原创 2020-12-20 21:38:55 · 1022 阅读 · 0 评论 -
三、Eureka注册与发现之Eureka Comsumer
正在码字中原创 2020-12-05 23:36:23 · 1389 阅读 · 0 评论 -
Error creating bean with name ‘dataSource‘
1、背景: 今天在测试Dockfile的时候,新建了一个hello world项目,pom中的依赖,直接从原有的项目中copy过来的,也没有仔细看其中包含的依赖有哪些;结果在启动的时候出现如下问题:2、问题描述:Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2020-12-11 09:22:32.109 ERROR 10原创 2020-12-11 09:42:33 · 15748 阅读 · 0 评论 -
四、Eureka、Server Provider集群配置
正在更新中原创 2020-12-08 22:06:38 · 1226 阅读 · 1 评论 -
二、Eureka服务注册与发现
Eureka虽然已经停更进入维护阶段,但是依旧不能阻挡大家想一睹芳容的心,归根结底还是太优秀,打败天下无敌手~现在不管是啥,都得有背景,连写个文都要有背景 (╥╯^╰╥),当然这些都是题外话,下面进入正题...原创 2020-12-04 22:28:54 · 1788 阅读 · 4 评论 -
一、SpringCloud简介
话说已经好久没有更新了,趁着周末肝几篇@~@回归正题:在介绍SpringCloud之前先说一下SpringBoot和微服务一、微服务微服务是什么 简单来说,微服务就是一种思想。为什么要用微服务 单体应用在面对需求变化大、用户群体大,并发高的情况下弊端比较明显,版本迭代复杂,扩展不够灵活,应对外界环境的能力弱。微服务思想应运而生(比较正式。。。。)什么是微服务 就是将单体服务拆分成一组小型服务。拆分完成之后,每个服务都在一个独立的进程中(这里比较流行的是容器概念),服务与服务之间采用轻量级的原创 2020-12-04 21:55:58 · 1647 阅读 · 0 评论 -
Failed to determine a suitable driver class——SpringCloud常见问题
问题背景:SpingCloud在启动Eureka服务时报如下错误:`在这里插入代码片Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.2020-11-13 16:18:34.509 ERROR 10004 — [ main] o.s.b.d.LoggingFailureAnalysisReporter :原创 2020-11-15 22:46:59 · 1897 阅读 · 0 评论 -
IDEA2020 Dashboard设置
相较于以前的idea版本,Dashboard做过相应的调整,最主要的是名称变了。。。。。。1)显示方式:view—> Tool Windows—>Services2)界面如下:原创 2020-11-09 21:40:29 · 1426 阅读 · 0 评论 -
Maven使用技巧(持续记录)
1、的作用:锁定版本,父类工程添加的依赖,若子类工程使用到只需要添加对应的依赖名称,而不需要添加对应的版本号:优点:假如我的项目需要调整版本号,则只需要在父工程的properties标签中调整一次即可1)父类的工程pom.xml <dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId&原创 2020-11-02 20:39:35 · 1176 阅读 · 0 评论 -
Spring框架中常用的注解
@Table@Service@RestController@RequestMapping@Autowired@Entity@Id@GeneratedValue@Transactional@SpringBootApplication原创 2020-11-02 15:23:11 · 1242 阅读 · 0 评论 -
(String)、toString()、String.valueOf()区别
1、(String)将object转成String类型的值。需要注意的是类型必须能转成String类型,(例如Integer类型就不行)否则抛出ClassCastException备注:null值可以强制转换为任何java类类型,(String)null是合法的2、.toString()java.lang.Object类里已有public方法.toString(),而通常派生类会覆盖Object里的toString()方法,所以对任何java对象都可以调用此方法。必须保证object不是null原创 2020-09-11 11:51:11 · 1318 阅读 · 0 评论 -
哈希码相同,值一定相同?
结论:值相同,hashcode一定相同;hashcode相同但是值不一定相同所有的类都是集成自Object类,在Object中有hashcode()方法,如果想具体了解此方法的含义,可以看源码注释1、前提条件看类是否有重写hashcode()和equals()方法此处我们使用Set集合来做演示,set有两个特性:存入的数据元素不允许重复没有索引(遍历只能使用Iterater或者是增强for循环(底层也是使用Iterater))此处使用了Set集合的不允许重复元素的特性@Test原创 2020-07-12 13:42:48 · 10802 阅读 · 6 评论 -
GC常用参数(idea)
1 打印堆栈信息-XX:+PrintGCDetailsrun ->Edit configuration可以把堆划分为年轻代、老年代、元空间其中年轻代分为三个区域:eden、from、to在类加载的时候超大的对象会被一次性放到老年代中:原创 2020-06-16 22:41:17 · 1558 阅读 · 0 评论 -
Java动态代理——Sping(5)
1 特点:字节码随用随创建,随用随加载2 作用:不修改源码的基础上对方法增强3 分类:基于接口的动态代理基于子类的动态代理3.1 基于接口的动态代理:涉及的类:Proxy提供者:JDK官方3.1.2 如何创建代理对象:使用Proxy类中的newProxyInstance方法3.1.3 创建代理对象的要求:被代理类最少实现一个接口,如果没有则不能使用(此细节最重要)3.1.4 newProxyInstance方法的参数:(1) ClassLoader:类加载器 ,它是用原创 2020-06-14 15:56:55 · 1324 阅读 · 0 评论 -
Spring整合Junit——Spring(4)
1. 前言由于测试工程师更多的是关注方法是否能够成功执行,而对于spring框架可能不是很了解。所以,对于如下方式我们应该尽量通过框架实现 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService accountService = (IAccountService) ac.getBean("accountService");2. 添加依赖首先我们要添加一个spring-test原创 2020-06-10 19:05:53 · 1357 阅读 · 0 评论 -
i++结果几何?
我观你骨骼清奇,面貌不凡,极其适合撸代码下面有请第一位选手上场第一关:请回答下面这道题的输出结果public class JvmTest{ public static void main(String [] args){ int j = 0; for(int i = 0;i<10;i++){ j = (j++); } ...原创 2020-06-02 22:59:57 · 1475 阅读 · 3 评论 -
线程的生命周期——Java多线程(3)
线程的六种状态以及相互转化在线程new xxx().start()之后,并不是立即进入执行状态,我们在java.lang.Thread.state中可以看到有六种状态:线程状态发生条件New线程被创建,new xxxx(),但是还没有调用.start()方法Runnable线程在jvm中的运行状态Block(阻塞)线程为获取到锁对象(资源),线程进入阻塞状态,当线程获取到锁对象(资源),转入Runnable状态Time_Wait通过调用带有超时参数的方法进原创 2020-05-31 22:07:52 · 1255 阅读 · 0 评论 -
多线程同步(安全机制)——Java多线程(2)
线程安全:如果有多个线程同时运行一段代码,并且运行结果与单线程运行结果是一样的,那么就说是线程安全的。1.1 线程不安全案例通过下面这个买票的案例我们会发现会出现两种情况一张票卖了多次的情况出现负票的情况public class Client3 { public static void main(String[] args) { Ticket t = new Ticket(); //同时开启三个售票窗口 Thread thread =原创 2020-05-30 23:07:02 · 1260 阅读 · 0 评论 -
一个HashMap跟面试官扯了半个小时
一个HashMap能跟面试官扯上半个小时《安琪...转载 2020-04-12 20:52:01 · 1320 阅读 · 1 评论 -
方法调用
1.方法间调用; 实例化该类 对象.方法()/对象.属性[没有使用static修饰的成员变量和方法都必须使用对象来调用] 2.this关键字的使用public class Dog { //定义一个jump方法 public void jump() { System.out.println("正在执行jump方法"); } public原创 2017-05-27 09:20:41 · 404 阅读 · 0 评论 -
finally关键字
与其他语言的模型相比,finally 关键字是对 Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。 如果没有 finally,您的代码就会很费解。例如,下面的代码说明,在不使用 finally 的情况下您必须如何编写代码来释放非内存资源:import java.net.*; imp转载 2016-12-01 21:22:00 · 562 阅读 · 0 评论 -
java集合
抽象类和抽象方法必须使用abstract修饰符定义,有抽象方法的类只能被定义为抽象类,抽象类中可以没有抽象方法1.使用abstract关键字2.抽象类不可以被实例化3.抽象方法不可有方法体4.抽象方法主要作用是被其子类调用接口是一种特殊的抽象类 接口中所有的方法都是抽象方法。jdk8允许在接口中定义方法,默认方法可以提供实现1.接口的修饰符都是public2.接口中定义的是一种规范,接口原创 2017-05-27 09:12:24 · 237 阅读 · 0 评论 -
Java面向对象之多态
理解java的三大特性——多态对象是类的实例,而类是对象的抽象化 面向对象编程有三大特性:封装、继承、多态。 封装:隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承:是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承,子类是一个父类。 多态:就是指程序中定义的引...转载 2018-04-11 17:23:03 · 469 阅读 · 0 评论 -
方法重载与重写
1 方法重载定义:方法名相同,参数不同 使用范围:在同一个类或者是不同的类2 方法重写定义:方法名以及参数相同,但是方法体不同 使用范围:一般用于继承...原创 2018-06-24 23:47:01 · 343 阅读 · 0 评论 -
报错:java.lang.ArithmeticException:divide by zero
除数不能为零,请务必检查代码是否有机会出现除数为零的情况。 尽量不要使用“0” 否则编译器在语法检查时会报错原创 2018-06-28 21:05:19 · 1910 阅读 · 0 评论 -
Java面试
一.基础知识:1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet);2)HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;3)如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现;4)HashTable和ConcurrentHashMap的区别;5)...转载 2019-07-19 14:46:54 · 125 阅读 · 0 评论 -
Java多线程
1.List、set、map详解List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSet List下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection接口下还有个Queu...原创 2019-08-15 21:04:12 · 135 阅读 · 0 评论 -
Java——常用的设计模式
Singleton(单例模式)一句话总结:一个类在Java虚拟机中只有一个对象,并提供一个全局访问点。生活中例子:太阳、月亮、国家主席等。解决什么问题:对象的唯一性,性能浪费太多。项目里面怎么用:数据库连接对象,属性配置文件的读取对象。模式结构:分为饿汉式和懒汉式(如果考虑性能问题的话,就使用懒汉式,因为懒汉式是在方法里面进行初始化的),构造器私 有化,...原创 2019-08-16 12:38:27 · 154 阅读 · 0 评论 -
Mapped Statements collection does not contain value fo ****(Mybatis)
org.apache.ibatis.exceptions.PersistenceException:Error querying database. Cause: java.lang.IllegalArgumentException:Mapped Statements collection does not contain value for com.zwwhnly.mybatisactio...原创 2019-08-21 15:49:05 · 308 阅读 · 0 评论 -
浅谈static
一、static关键字定义属性 • 使用static定义的属性表示类属性,类属性可以由类名称直接进行调用; • static属性虽然定义在了类之中,但是其可以在没有实例化对象的时候进行调用(普通属性保存在堆内存里,而static属性保存在全局数据区之中); 在java中static关键字可以定义属性和方法。class Person { private String name;原创 2017-04-19 00:19:44 · 321 阅读 · 0 评论