自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 资源 (1)
  • 收藏
  • 关注

原创 remote: Support for password authentication was removed on August 13, 2021. Please use a personal ac

今天提交代码得时候,突然发现上述的异常,看样子是github https密码的方式已经不支持了,需要用token来验证,当然如果你是ssh的方式的话,就不会出现上述的异常。git push origin masterUsername for 'https://github.com': [email protected] for 'https://[email protected]@github.com':remote: Support for password authenti.

2021-08-23 16:18:36 1465

原创 fatal: unable to access ‘https://github.com/shamogulang/oddworld-learn-note.git/‘: OpenSSL SSL_read:

fatal: unable to access 'https://github.com/shamogulang/oddworld-learn-note.git/': OpenSSL SSL_read: Connection was reset, errno 10054执行下面即可:git config --global http.ssVerify "false"然后就可以正常操作了。

2021-07-09 22:17:48 296

原创 elasticsearch简单介绍

1、elasticsearch简单介绍elasticsearch是基于操作文档的搜索引擎,里面使用了netty,luncen相关技术。它可以用作站内搜索,也可以结合Logstash,kibana等技术进行日志收集分析,使用聚合技术可以进行各种数据的聚合,并且和kibana一起展示条形图,饼图,map地理分布等功能。1.1、elasticsearch的安装因为是练习用的,所以我直接使用windows的版本,下载地址:https://artifacts.elastic.co/downlo...

2021-03-27 23:30:14 388 1

原创 自定义springboot的starter

自定义starter可以减少配置类的编写,比如我自定义了某个配置类,需要一些属性的配置,然后在多个模块中引用的话,那么都需要加入这个配置类的信息,常见的是通过@Configration注解来使用,或者是使用xml的方式,但是其实对于各个模块来说,这个信息是重复的,可以公用,那么可以自定义一个starter来引入。1、编写你需要引入的功能。比如我这里就是想引入MyWife这个实列。你可以通过@Configuartion这个注解直接引入,这里演示通过自定义starter的方式引入。这个最简单,.

2021-03-24 14:42:54 217 1

原创 cms垃圾回收器

cms垃圾回收器,用于回收老年代内存空间,官方号称零停顿(其实也会停顿,不过垃圾回收中,比较 耗时的部分采用了和服务线程一起工作的方式来减少停顿),该垃圾回收器默认会搭配ParNew(用于 收集年轻代的内存空间)垃圾回收器使用。年轻代使用复制算法,同时是并发的方式;老年代采用标记 清除的方式,也是并发的方式,会利用服务器多核心的优势。该垃圾回收器主要是为了避免老年代垃圾回收的长停顿而设计的。主要通过两种方式:1、老年代不进 行空间的整理,而是采用空闲列表的方式来管理空用的内存。2、标记和清除部分

2021-03-21 16:41:08 740 1

原创 将小数转成百分比的字符串

public String to100Format(String elem){ if(StringUtils.isBlank(elem)){ return elem; } DecimalFormat df = new DecimalFormat("0.00%"); try { return df.format(Double.valueOf(elem)); }catch (NumberFormatException e){ .

2021-02-19 14:51:46 606

原创 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderExce

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'companyCode != null AND companyCode != '''. Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expr

2021-02-18 17:30:52 293 2

原创 redis主从、哨兵、集群

redis集群首先集群是为了解决横向扩展的问题。就是当请求量很大,服务承受不住时,可以扩展机器,增加服务来应对突然增加的服务。redis集群方案有三种:1、codis2、3、RedisCluster在3.0版本后推出的方案。RedisCluster方案假设有6条数据,我们集群有3台机器,那么可以会对数据进行hash分区然后对节点取余数(分区方式:虚拟槽分区和一致性hash分区)RedisCluster集群方案是采用虚拟槽分区的方式,所有的key都会通过CRC16方法进行has

2021-01-31 19:37:20 191

原创 spring事务源码 (声明式事务管理)

基于spring AOP实现,其本质是对方法前后进行拦截。在方法之前创建或者加入一个事务,在执行完目标方法之后根据情况进行提交或者回滚操作。通过@Transactional注解,能做到代码的不侵入。在使用@Transactional注解之前,需要启动注解:@EnableTransactionManagement@EnableTransactionManagement 默认的属性值boolean proxyTargetClass() default false;AdviceMode mode(

2021-01-26 15:54:23 86

原创 spring事务源码 (编程式事务管理)

测试用例:事务模板类:org.springframework.transaction.support.TransactionTemplatepackage com.vip.xstore.spring;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.core.

2021-01-25 13:59:02 384

原创 springboot自动装配

​其实springboot的自动装配流程的关键点是通过@Import注解和对应的ImportSelector接口实现,加入相关需要导入的配置文件properties,配置文件中默认配置了需要导入的类,结合过滤规则和项目中是否导入相应的jar来确定是否需要导入相关的类。首先介绍下@Import和ImportSelector接口的使用。注意:我这里是搭建的源码环境:普通的pojo:package mytest.person;​public class Person2 {​ .

2021-01-24 11:56:53 102

原创 spring搭建源码错误笔记

1、spring搭建源码错误1.1、Error:Kotlin: warnings found and -Werror specified这个问题是因为加了-Werror这个参数选项,会将警告当作错误处理如图,我这里是因为有两个jar不存在,出现警告:方案1:你可以编译产生这两个jar包,在问题1.4和1.5有介绍,这个警告不存在的话,就不会出现这个错误。方案2: 从错误可以发现是spring-core这个模块有这个问题,所以你可以到以下界面:File -> project Structr

2021-01-17 11:46:26 1233 3

原创 idea reload修改文件,减少重复启动服务的动作

公司的服务,每次启动都接近十分钟,很麻烦,后来发现开发的时候,可以reload修改的文件修改相应的文件 ,然后Ctrl + F9,界面会弹出 以下界面,直接yes,然后再调用接口,发现接口返回结果已经修改了(几秒中就可以了,不用重启服务)。...

2021-01-12 12:04:26 1515

原创 kafka安装入门

kafka1、安装单机版的kafka1.1、下载kafka压缩包下载地址在:https://mirror-hk.koddos.net/apache/kafka/2.7.0/kafka_2.12-2.7.0.tgz解压(注意:我这里在windows下使用,用git base客户端进行操作)tar -xzf kafka_2.12-2.7.0.tgz1.2、启动kafka1.2.1、启动zookeeper进入对应的目录,然后执行:bin/zookeeper-server-start.sh c

2021-01-09 18:00:14 347

原创 mysql多版本并发控制(mvcc)

mysql多版本并发控制(mvcc)我使用的mysql版本的8.0.19,mysql的innodb引擎是一个多版本并发控制的引擎,它会保存修改的记录的旧版本的信息,来支持事务的特征,比如回滚和一致性,这个特性只在可重复读和读已提交隔离级别起作用。1、隐藏字段innodb的引擎会在数据库表中为每一条记录添加三个隐藏的字段。(DB_TRX_ID,DB_ROLL_PTR ,DB_ROW_ID )1、占6个字节的字段DB_TRX_ID记录该记录操作时刻的事务ID(更新,删除或者是插入)2、占7个字节的字段

2021-01-02 21:44:41 275

原创 代码生成器:mybatis-gennerator

可以帮助生成数据库中的entity,mapper和xmlmapper代码,当数据库字段多的时候,这个非常的方便,同时修改字段也是,只需要执行下代码即可使用该功能,需要导入两个依赖:compile group: 'org.mybatis.generator', name: 'mybatis-generator-core', version: '1.3.7'compile group: 'tk.mybatis', name: 'mapper', version: '4.1.5'xml的配置.

2020-12-27 11:08:47 279

原创 生成某个范围的随机数

第一种方式:生成【min,max】范围的随机数Min + (int)(Math.random() * ((Max - Min) + 1))例子: 生成【3,6】都是闭区间 int result = 3 + (int)(random*(6-3+1));第二种方式:int randomNum = ThreadLocalRandom.current().nextInt(min, max + 1);例子:生成【3,6】都是闭区间int randomN...

2020-12-23 22:48:39 1274

原创 java原生的xml处理类

总体介绍: @XmlRootElement(name = "root") 改注解是指定根标签,即 <root>...</root> @XmlElementWrapper(name = "persons") 表示要包裹的List属性子标签的标签,<persons></persons>,不加的话,默认没有这一层标签。 @XmlElement(name = "item") 表示对应的属性包裹的标签:<item></item&gt.

2020-12-23 20:11:16 326

原创 G1垃圾回收器

4、G1垃圾回收器G1设计的目标是让stop the world的时间是可预测和可配置的。C1垃圾回收器是软实时,低延迟的垃圾回收器,你可以设置你需要的性能目标。它解决了CMS中空间碎片的问题,同时因为G1在低延迟,高吞吐量方面都比较好,所以在JDK9取代了默认的Parallel GC 关注吞吐量的组合成为默认的垃圾回收器,而CMS在Jdk9被移除了。G1不要求将年轻代和老年代用连续的空间来实现,堆会被划分成一系列的小resion,通常默认是2048块,任何一个region可能是eden区,surviv

2020-12-20 23:22:15 198

原创 The stash entry is kept in case you need it again.

执行:git stash pop stash@{0}Auto-merging xxxCONFLICT (content): Merge conflict in xxxThe stash entry is kept in case you need it again.这个异常,是指你在本地git pull拉取了代码后,你stash起来的代码和你git pull下来的代码有冲突,因为有冲突,stash的代码在git pop之后会保留一份备用,防止后续还需要到stash的代码。不行你查看g...

2020-12-13 12:38:45 14709 1

原创 github每次提交都要弹出登陆框,要求输入账号和密码,账号对也显示错。后续又要求输入账号和密码(Logon failed, use ctrl+c to cancel basic credentia)

每次进行将本地代码提交到远程的时候总会要求输入账号和密码:git push origin master而且会弹出以下界面:这样就很烦了,查了很多资料,最后在一位知乎老哥(https://www.zhihu.com/question/31836445)那里得到答案。其实我们在github上面配置的ssh-keygen,是要求走ssh协议的,如果你本地的代码跟github是通过http协议关联的话,那么这个key就用不上了,你得每次都输入账号和密码。坑爹的是,还每次输错!查看你本地拉取得代.

2020-12-13 11:59:19 4586 3

原创 git的使用

​git的使用​前提:首先要注册一个github账号: https://github.com/ ,然后要安装Git的工具:https://git-scm.com/download/win1、SSH协议这里不是介绍这个协议,而是通过这个协议来使用代码的上传和下载。如果没有生成publickey的话,那么拉取代码的时候,会出现: Permission denied$ git clone [email protected]:shamogulang/git-learn.gitClonin.

2020-12-12 22:21:22 393 1

原创 数组转成ArrayList   Exception in thread “main“ java.lang.UnsupportedOperationException

List<Integer> result = Arrays.asList(1, 2, 3); 或者 String[] str = {"a", "b", "c"}; List<String> result = Arrays.asList(str); 这个是我最常用的方法,非常好用。不过有个要注意的地方:就是这个方式产生的List是不支持add 和 remove的。如果操作了,就会抛出: Exception in thread "main" java.lang.Un...

2020-12-10 23:26:54 100

原创 GC overhead limit exceeded Error:java: Compilation failed: internal java compiler error

Error:Module 'xxxx' production: java.lang.OutOfMemoryError: GC overhead limit exceededError:java: Compilation failed: internal java compiler error今天组里将两个项目合并了,然后idea跑项目的时候,发现出现了上述的编译异常。提示内存溢出OOM的异常,其实这个是因为idea默认编译进程的内存大小为700M,只需要改大就好了。点击 File ==> .

2020-12-07 09:52:08 302

原创 6、强引用,软引用,弱引用和虚引用

上一篇:GC Roots的介绍https://blog.csdn.net/chenjianhuideyueding/article/details/110788112java中的引用可以分成四类,分别为:强引用,软引用,弱引用和虚引用。6.1、强引用对于强引用,是我们最常见,比如直接创建一个对象:Obeject obj = new Object();那么obj就是一个强引用。在当前栈帧有效的作用域内,是永远不会被回收的。6.2、软引用软引用是指被SoftRe...

2020-12-06 23:19:14 114

原创 5、GC Roots的介绍

上一篇:Java虚拟机栈https://mp.csdn.net/editor/html/110788112java程序在运行的时候,无时无刻都在创建对象,当一些对象已经超过相应的作用域的时候,同时在年轻代的空间不够的时候,就需要进行垃圾回收,对无用的对象进行回收,释放对应的内存。上述的运行时数据区的介绍中,堆和方法区是需要进行垃圾回收的。java虚拟机栈不用回收,pc也不用(这个没介绍),本地方法栈(跟java虚拟机栈是一样的,所以也没有介绍)也不用进行垃圾回收。哪些对象是存活的?既然要...

2020-12-06 23:00:39 141

原创 4、Java虚拟机栈

上一篇:堆里对象头的介绍https://blog.csdn.net/chenjianhuideyueding/article/details/110359196参考资料: https://www.artima.com/insidejvm/ed2/jvm8.html这块内存区域是线程私有的区域,存储当前线程运行Java方法所需的所有的数据,指令,返回地址等。它的生命周期和线程是相同的。虚拟机栈中包含栈帧。栈帧是方法运行需要用到的数据结构,用于存储数据和临时结果。栈帧里包含:局...

2020-11-30 00:51:09 107

原创 3、堆里对象头的介绍

堆,用于存放对象,就像上述的jconsole界面中,可以分为老年代和新生代,新生代又可以分为:伊甸园区和两个survivor区。3.1、对象的探索堆中的对象创建:需要划分内存区域。有两种方式:一种:指针碰撞另外一种: 空闲列表具体采用哪种方式,跟内存是否是规整有关。内存是否规整,跟垃圾回收的策略有关。如果采用的是复制算法,那么内存规整,采用指针碰撞的方式如果是标记清除的方法,那么内存就不规整,采用空闲列表的方式为了防止并发出现问题,一般会使用相关的同步策略。.

2020-11-30 00:34:02 202

原创 2、java 字节码文件解析(java class file bytecode learaning )

​class文件格式解析​classFile的文件结构:ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 ...

2020-11-21 17:20:24 204

原创 1、java内存管理-方法区(元空间的简介)

​java内存管理​我这里使用的版本为:java version "1.8.0_31",64位的机器首先,这里会先用一个工具查看内存的信息:jconsole相关的介绍:https://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html装了jdk,并且配置了环境变量,可以直接在控制台中输入jconsole,就会弹出对应的界面。这里我首先写一段代码,仅仅是sleep一段时间,这里就可以使用jco..

2020-11-16 01:05:19 277

原创 通过spring的aop实现一个建单的mock功能

在分布式开发的时候,将一个需要分成多个模块,需要模块间的调用,那么就会涉及到远程调用的情况。但是在和同事联调之前,总会出现时间对不上的情况,比如他们没有时间跟你对接,那么就不能联调,就有一些流程走不下去了。此时就需要用到mock,制造一些返回,用于将 流程走下去。比如需要调用的一个接口,那么就给一个假的返回结果,模拟调用成功的场景。你可以直接在代码里面加入返回结果,就是不去调用他的方法,自己开一个方法,手动写返回的响应。我这里通过spring 拦截器和注解来实现一个mock的简易功能。首先定义.

2020-11-12 21:06:13 645

原创 cannot find Graphviz

装了PlantUML后,画图的时候,报错:cannot find Graphviz要先装Graphviz后,https://www2.graphviz.org/Packages/stable/windows/10/msbuild/Release/Win32/graphviz-2.44.1-win32.zip然后解压后,找到对应的dot.exe位置,如下图,我把它放到了D盘中:D:/software/Graphviz/bin/dot.exe然后在idea中:找到右边的PlantUML菜单,然后

2020-10-31 17:47:28 1749

原创 自定义类加载器

点入ClassLoader的源码查看样例:* <blockquote><pre> * class NetworkClassLoader extends ClassLoader { * String host; * int port; * * public Class findClass(String name) { * byte[] b = loadClassData(name); *

2020-10-26 20:05:16 112

原创 gradle跳过javadoc的检查

最近上传jar和打包jar到本地的时候,老是报错 ,但是包是可以成功的,出于强迫症的我,看着怪恶心的:����: ������ı� * @throws �����п�ֵ��������νӿڷ����쳣ʱ���׳�Exception ^截图如下:有两种方式可以解决,一种是在build.gradle中加入以下配置:allprojects { tasks.withType(Javadoc).all { enabled = false }}这种方式你会发现...

2020-10-26 14:30:14 2471

原创 类加载机制​

​1、类加载器定义一个Person类:package cn.yishijie.config;​public class Person { private int age; private String name;}测试所有的类加载器:package cn.yishijie.config;​public class Client {​ public static void main(String[] args) { Class...

2020-10-25 18:46:11 77

原创 装饰器设计模式

装饰者模式其实就是添加附加功能的一种方式。就是说一个类已经有了基本功能,那么添加额外的功能要怎么添加才比较好。一般情况的话,你可以在该类中添加一个方法,然后在调用原来的方法之前或者之后调用,那么就相当于进行相应的装饰。这种方式不太好的方面是就是违反开闭原则。还有进行不够灵活,比如要各种装饰的搭配也不好解决。装饰模式可以通过多态的方式来解决这种问题,而且可以自由搭配。注意装饰器不可以单独使用,它必须指定一个装饰器或者一个实际的被装饰的对象。比如这里SwimDecorator和FlyDecorato

2020-10-17 11:50:17 88

原创 注解和反射

反射可以动态获取一个类的所有信息Class类用于表示字节码文件.class,在使用反射之前,需要得到Class对象获取Class对象的三种方式://第一种方式Class<?> aClass = Person.class;//第二种方式Class<? extends Person> aClass1 = new Person().getClass();//第三种方式,如果对应的全类名不存在,那么会抛出ClassNotFoundExceptionClass...

2020-10-11 19:06:54 795 2

原创 axios的基本使用

安装axios, npm install --save axios用于发送请求,记得要对后台进行跨域访问进行处理,不然无法访问:封装axios:import Axios from 'axios'/** * 第一种封装方式 * @param config * @param success * @param err */export function userServiceUrl(config, success, error) { const axiosInstance =

2020-07-30 13:55:32 265 1

原创 Vuex的使用

Vuex用于状态的管理,当组件树很复杂时,底层的组件需要用到外层的组件变量,会比较麻烦,可以使用vuex作为一个全局的管理,需要的时候,获取和修改。能够做到实时响应界面的刷新。多个组件:实现状态(变量)的共享,集中式管理,放到一处首先安装vuex:npm install --save vuex创建store.js,基本模块如下:import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const store = n...

2020-07-29 21:32:28 79

原创 vue路由

我使用的vue-cli的版本市 @vue/cli 4.4.6首先创建项目: vue create myvue按照指示创建项目然后删除helloworld的代码,比如HelloWorld组件等创建Home.vue<template> <div> <h1>我要一步一步往上爬</h1> </div></template><script> export defau.

2020-07-28 10:29:22 82

jvm的总结,主要是通过一些例子验证相关理论

jvm的总结,主要是通过一些例子验证相关理论

2020-12-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除