
java
文章平均质量分 67
我不帅了只能刷魅力值了
记录文章,去帮助自己更快的开发,降低重复工作
你知道的越多,你不知道的越多。
-----来自对创新充满了兴趣的年轻人
展开
-
基础-Mybatis一级缓存和二级缓存的区别
如果你的MyBatis使用了二级缓存,并且你的Mapper中select语句也配置使用了二级缓存,那么在执行select查询的时候,MyBatis会先从二级缓存中取输入,其次才是一级缓存,即MyBatis查询数据的顺序是:二级缓存 —> 一级缓存 —> 数据库。SqlSession的生命周期:它应该存活在一个业务请求中,处理完整个请求后,应该关闭这条连接。一个会话查询一条数据,这条数据就会被放到当前会话的一级缓存中。如果当前会话关闭了,那么这个会话的一级缓存会放入二级缓存中。默认情况下,只有一级缓存开启。原创 2022-12-25 21:06:22 · 1018 阅读 · 0 评论 -
更自动化的开发----给开发插上恣意飞翔的翅膀!
总结:设置启动项:开机时候快速启动自己所需要的程序,根据程序数量不一样,每天节省可重复的劳动时间约为5s-1min(此处数据为自己瞎说 O(∩_∩)O哈哈~);使用生成代码的插件:开发使用easycode的插件,目的是只需要自己写好数据库表字段的设计,就可以自动生成基础的controller到 表格相关的实体类(自己再略微修改一下,约定好访问路径等,就可以实现简单的增删改查),又可以节约时间,一个涉及到三张数据库表以上的开发,可以节省重复劳动1天以上的基础搭建代码时间。(*^▽^*)原创 2022-12-11 22:54:18 · 445 阅读 · 0 评论 -
架构体系-黑马学习2:-业务幂等性技术架构体系(2)
Zk分布式锁,可以解决表新增数据并发问题。利用zk的有序节点和watch机制来实现分布式锁。解决掉了并发幂等性问题、接口重复调用、服务间重试机制幂等性问题(第一种属于多人操作,后两种属于单人操作导致的问题)...视频讲解的业务是:增加订单,同时减少库存18min5028min。原创 2022-11-29 21:51:35 · 550 阅读 · 0 评论 -
世界上程序员最好的学习法:费曼学习法
你是否曾幻想读一遍书就记住所有的内容?是否想学习完一项技能就马上达到巅峰水平?除非你是天才,不然这是不可能的。对于大多数的普通人来说,可以通过笨办法(死记硬背)来达到学习的目的,但效率低下。当然,也可以通过优秀的学习法来进行学习,比如今天讲的“费曼学习法”,可以将你的学习效率极大的提高。费曼学习法是由加拿大物理学家费曼所发明的一种高效的学习方法,费曼本身是一个天才,13岁自学微积分,24岁加入曼哈顿计划(核武器计划);转载 2022-11-25 12:33:01 · 627 阅读 · 0 评论 -
事务隔离级别(数据库层面)和传播机制(代码层面spring框架)的偏本质的理解,分布式加入后对CAP的理解,自己能挖到的最深处
事务隔离级别(数据库层面)和传播机制(代码层面spring框架)的区别?事务隔离级别和事务传播机制都是对事务行为的规范,但二者描述的侧重点却不同。本文这里所说的事务隔离级别和事务传播机制指的是 Spring 框架中的机制。1、事务隔离级别事务隔离级别是对事务 4 大特性中隔离性的具体体现,使用事务隔离级别可以控制并发事务在同时执行时的某种行为。原创 2022-10-24 14:08:11 · 181 阅读 · 0 评论 -
理解单点登录和多点登录原理以及重点
多点登录的概念:同一账号可以在不同终端同时登录,同时收发信息。多点登录限制(禁止用户多点在线):一个端同一个账号只能登录一个实例,例如一个账号在网站端登录后,后一个人使用这个账号在网站端登录,前一个人会被挤下去并会收到通知“你已在别处登录....”待补充...转载 2022-09-16 11:28:25 · 7335 阅读 · 2 评论 -
实操----mybatis自动生成实体类/mapper.java/mapper.xml:mybatis-generator-config
mybatis自动生成实体类/mapper.java/mapper.xml:mybatis-generator-config原创 2022-09-14 11:30:13 · 1052 阅读 · 0 评论 -
基础----去理解记忆-学习volatile关键字的作用
1 保证内存可见性可见性是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果,另一个线程马上就能看到。实现原理当对非volatile变量进行读写的时候,每个线程先从主内存拷贝变量到CPU缓存中,如果计算机有多个CPU,每个线程可能在不同的CPU上被处理,这意味着每个线程可以拷贝到不同的CPU cache中。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,保证了每次读写变量都从主内存中读,跳过CPU cache这一步。当一个线程修改了这个变原创 2021-08-02 11:21:31 · 370 阅读 · 0 评论 -
认识类加载的过程
参考文档5个步骤总体过程:加载---验证---准备---解析---初始化总结自我的一些理解:加载.将类的.class文件中的二进制数据读入到内存中(把.class文件放在方法区;在堆中创建了一个类对象,类对象封装了数据结构,向程序员提供数据结构的接口;)验证:是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求准备:为类变量(static修饰的成员变量),分配内存,并且赋予变量类型对应的初始值,而不是,代码中=号赋予的显示值!显示值只在初始化阶段赋予特殊情况,两种。p原创 2021-07-21 18:40:35 · 81 阅读 · 0 评论 -
bean生命周期---大厂易问
---参考来源GitHub上王浩同学的推荐文章(觉得讲的比较容易理解的)Spring 中的 bean 生命周期?这部分网上有很多文章都讲到了,下面的内容整理自:https://yemengying.com/2016/07/14/spring-bean-life-cycle/(原作者可能不再维护这个博客,连接无法访问,可通过其 Github 仓库访问https://github.com/giraffe0813/giraffe0813.github.io) ,除了这篇文章,再推荐一篇很不错的文章 ...原创 2021-07-21 17:28:12 · 128 阅读 · 0 评论 -
spring注入方式理解大全 spring注入的8种方式
1.set方法注入2.构造方法注入3.xml注入 xml上填类似的值以后4.接口注入5.autowired 注解注入方式6.resource 注解注入方式原创 2021-06-15 16:58:09 · 343 阅读 · 0 评论 -
加深--ioc,对ioc整体流程的熟悉
1.引入依赖:pom.xml文件中2.写配置文件:application.xml.写需要加载的bean文件3.类文件上,直接进行调用使用。如ClassPathXmlApplicationContext clXmlBf = new ClassPathXmlApplicationContext("application-1.xml"); BaseDao dao1 = (BaseDao) clXmlBf.getBean("baseDao");//byName#############原创 2021-06-15 15:54:04 · 139 阅读 · 0 评论 -
spring注解的详解--自己的逻辑性理解记忆
Spring的注解(1) 在配置文件当中加入:<context:component-scan base-package=“biz, dao” />扫描包(2) Component:普通的bean(3) Repository:指向dao(4) Service:指向Service(5) Controller:指向Controller(6) 自动装载① Autowired:Spring的注解byName:Qualifier注解指定ByName的Name② Resource:J2原创 2021-06-02 14:32:33 · 193 阅读 · 0 评论 -
spring中用到的代理方式,动态代理详解,aop中的动态代理运行方式。
两种动态代理1、java动态代理利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。2、cglib动态代理利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 spring中的动态代理 spring会自动在JDK动态代理和CGLIB之间转换1、 默认使用Java动态代理 来创建AOP代理,这样就可以为任何接口实例创建代理了。2、当需要代理的类没有实现代理接口的时候,Spring会切换为使用CGLIB代理。3、可以通过配置 强制使转载 2021-05-31 17:28:38 · 602 阅读 · 0 评论 -
通俗的理解--ioc概念,实例使用例子
总体上:配置pom.xml的依赖文件springframework等三个核心包==》创建aplicationcontext.xml文件,引入标签库标签校验,添加进去需要作为bean 管理的类,或者工厂。ioc的作用:就在于用容器去管理bean.以bean的方式去管理所有的组件,bean在spring的容器中运行,容器负责创建,并管理他的生命周期。代码如下:application.xml ( application-1.xml)<?xml version="1.0" encoding...原创 2021-05-13 16:34:01 · 522 阅读 · 0 评论 -
强引用,软引用,弱引用和虚引用的概念,区别与用法
引用的概念:强烈顺序:强引用(正常使用时)>软引用>弱引用(WeakReference)>虚引用。弱引用:弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。如果这个对象是偶尔的使用,并且希望在使用时随时就能获取到,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference来记住此对象。这个引用不会在对象的垃圾回收判断中产生任原创 2021-04-20 21:40:56 · 456 阅读 · 0 评论 -
线程池学习 ,Executor 与 ExecutorService 和 Executors的区分
ExecutorExecutor, ExecutorService, 和 Executors 最主要的区别是 Executor 是一个抽象层面的核心接口(大致代码如下)。 public interface Executor { void execute(Runnable command);}ExecutorServiceExecutorService (也是借口)接口 对 Executor 接口进行了扩展,提供了返回 Future 对象,终止,关闭线程池等方法。当调用 shutDown转载 2021-04-15 11:22:03 · 2321 阅读 · 0 评论 -
Java中,9种锁概念的总结
Java中常见的锁类型常见的锁分类大致有:排它锁、共享锁、乐观锁、悲观锁、分段锁、自旋锁、公平锁、非公平锁、可重入锁等。排他锁和共享锁synchronized就是一个排他锁,ReentrantLock也是一个排它锁,而ReentrantReadWriteLock则是一个读共享锁,写排他锁乐观锁和悲观锁乐观锁和悲观锁是一种锁的思想,乐观锁对并发数据修改持乐观态度,通过CAS非加锁方式尝试修改数据,而悲观锁对数据修改持保守态度,修改都要加排它锁,也常用于和数据库隔离级别结合使用分段锁分段锁分段锁原创 2021-04-14 18:21:01 · 276 阅读 · 0 评论 -
redis基础知识进阶文,拓宽到全部知识面
应用场景##########################################1.与memcache的区别memcache(简称MC)介绍MC通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcache是一个高性能,分布式内存对象缓存系统。Memcache特性:(1)本质是什么:本质是使用物理内存作为缓存区,对外可独立运行在服务器上。..原创 2021-04-13 17:12:55 · 160 阅读 · 1 评论 -
redis详细讲解----入门到进阶
全面讲解应用场景1.数据存储2. 作为缓存3. 作为队列它的数据结构(五种:String,set,sortset,list,hash)redis五大数据结构和使用场景原创 2021-04-08 11:18:13 · 168 阅读 · 0 评论 -
自我学习要求:线程。对线程的理解和并发的深度挖掘
1.实现线程的方式thread类;runable callable接口;Q:callable 怎么实现的(和runnable不同的是返回处理结果)使用时,三者的区别目前看使用接口优于使用类;thread runnable都能实现数据共享,有好不好的区别new Thread(new MyThread()).start() ------这种线程自己有自己的start方法,还用另外线程的start方法就很奇怪。new Thread(runnalble).start()Q:数据共享怎么达到的(三种原创 2021-04-07 11:41:40 · 129 阅读 · 0 评论 -
反射获取类的三种方式
https://blog.youkuaiyun.com/jiang123986/article/details/53645889java通过包名反射获取所有的类名https://blog.youkuaiyun.com/sunflowerxt/article/details/90036861通过反射获取类上的方法https://blog.youkuaiyun.com/zwt122755527/article/details/102723542?utm_medium=distribute.pc_relevant.none-task-blo转载 2021-04-07 11:13:47 · 1297 阅读 · 1 评论 -
多线程复习 疑问点总结
------------线程 理解(链接到简书)https://www.jianshu.com/p/ffe85c093cdbstart()和run()的区别https://www.cnblogs.com/zhaosq/p/10564698.html通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法------------线程 方法的基本理解和应用Java并发09:Thread的基本方法(6)-线原创 2021-04-07 10:17:09 · 205 阅读 · 2 评论 -
Java实现数据共享的三种方式
1、类的静态变量类初始化的时候率先加载好,且不会被改变。2、类内声明共享数据类型的引用3、内部类参考链接原创 2021-04-02 15:32:39 · 982 阅读 · 0 评论 -
最全集合:父类;概念;作用;区别,从基础深挖,重点详细讲解。一篇包含所有记忆重点~(理解面试专用)
集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。Collection:Collection 是集合 List、Set、Queue 的最基本的接口。Iterator:迭代器,可以通过迭代器遍历集合中的数据Map:是映射表的基础接口关系图:集合框架:Arrays工具类常用方法讲解#################List#################################################原创 2021-03-31 16:26:57 · 948 阅读 · 0 评论 -
震到面试官-生动理解hashmap底层实现原理以及深层理解他的动态变化
两篇理解文章jdk1.8 HashMap工作原理和扩容机制(源码解析)jdk1.8 HashMap工作原理和扩容机制(源码解析)重点:1.继承关系hashmap=>abstractmap=>map2.从hash看,底层是hash表。键不可以重复值可以。对3.没有加锁,线程不安全4.允许key值为null。5.扩容方式(默认容量是16,超过极限值0.75*容量,数组扩容1倍,链表不扩;链表容量是8,超过以后,转换为红黑树)JDK1.8中,HashMap采用位桶+链表+红黑树实现原创 2021-03-31 13:13:46 · 145 阅读 · 0 评论 -
ArrayList详解,总结最关注的重点
ArrayList特性:1.关于array方面:底层是数组,增删数据慢,查询快。2.关于List方面:有序,允许重复。3.扩容方式。4.允许有多个空值。(list特性)ArrayList扩容机制JDK1.8 (底层原理)总结1.ArrayList创建对象时,若未指定集合大小初始化大小为0;若已指定大小,集合大小为指定的大小;2.当第一次调用add方法时,集合长度变为10和addAll内容之间的较大值;3.之后再调用add方法,先将集合扩大1.5倍,如果仍然不够,新长度为传入集合大小;Ar原创 2021-03-31 09:59:16 · 173 阅读 · 0 评论 -
Vector 详细讲解,一篇文章掌握所有需要的vector知识点
继承关系Stack =>Vector=》abstractArrayList=>abstractList(实现list接口)=>abstractCollection=>collectionVector作为List的另外一个典型的实现类,完全支持List的全部功能,Vector的实现其实和ArrayList的底层实现很类似,都是封装了一个Object[],但Vector是一个比较古老的集合,JDK1.0就已经存在,建议不要使用这个集合,Vector与ArrayList的主要区别是:V原创 2021-03-28 21:36:57 · 443 阅读 · 0 评论 -
集合:LinkedList和 ArrayList的详细讲解
Java 的 LinkedList 的底层数据结构ArrayList数据结构与原理分析原创 2021-03-28 21:23:09 · 129 阅读 · 0 评论 -
Collections工具类常用方法总结
Collections工具类常用方法总结拓展:什么是JUC什么是JUC:java.util.concurrent包名的简写,是关于并发编程的API。与JUC相关的有三个包:java.util.concurrent、java.util.concurrent.atomic、java.util.concurrent.locks。我们知道 HashSet,TreeSet,ArrayList,LinkedList,HashMap,TreeMap 都是线程不安全的。Collections提供了多个静态方法可以把转载 2021-03-28 20:00:12 · 129 阅读 · 0 评论 -
Arrays工具类常用方法讲解
概述在Java API中提供了操作数组的工具类 java.util.Arrays,例如:排序,查找,复制,数组转集合,数组转字符串等常见操作。本文将介绍Arrays中常用的方法。###########数组无法打印,list是可以直接打印的。package com.utils;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * 本文作者:谷哥的小弟 * 博客地址:http://bl转载 2021-03-28 19:51:35 · 156 阅读 · 0 评论 -
redis详细讲解
大多数据学习自github,自我修改了步骤,便于自己理解。-------------------是什么?简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。-------------------什么用?Redis 除了做缓存之外,Redis 也经常用来做分布式锁,甚至是消息队列。Redis 提供了多种数据类型来支持不同的业务场景。Redis 还支.转载 2021-03-19 14:18:02 · 131 阅读 · 0 评论 -
java总结:时间转换----0002工作直接使用
获取当前时间通过Date类来获取当前时间1、Date day=new Date();SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);2、SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); System.out.println(df.format(System.currentTimeMillis()));通过System类中的cur原创 2021-03-09 17:32:23 · 155 阅读 · 0 评论 -
基本数据类型,常量池,堆栈,之间的关系-----基础复习---20200302
讲通数据类型和堆栈的关系Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型,接口类型和数组。堆与栈堆和栈是程序运行的关键,很有必要把他们的关系说清楚。栈是运行时的单原创 2021-03-02 17:29:07 · 181 阅读 · 0 评论 -
equals 和==的区别,数据类型不同的情况
https://www.cnblogs.com/mrhgw/p/10449391.html“equals”比较equals(Object obj)方法,在equals(Object obj)方法中,会先判断参数中的对象obj是否是Integer同类型的对象,如果是则判断值是否相同,值相同则返回true,值不同则返回false,如果obj不是Integer类的对象,则返回false。需要注意的是:当参数是基本类型int时,编译器会给int自动装箱成Integer类,然后再进行比较。基本类型(值类型)原创 2021-03-02 17:19:03 · 269 阅读 · 0 评论 -
基础--集合大类-常用集合数组概念的探究(学习面试,学术类专用)
几种集合的区别Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。Set和List两个类继承于它。Set中不能包含重复的元素,也没有顺序来存放。而List是一个有序的集合,可以包含重复的元素。Map又是另一个接口,它和Collection接口没有关系。Map包含了key-value键值对,同一个Map里key是不能重复的,而不同key的value是可以相......原创 2019-12-20 22:55:32 · 94 阅读 · 0 评论