自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GORM通过struct查询字段的零值

当通过struct进行查询的时候,GORM 将会查询这些字段的非零值, 意味着你的字段包含0, ' ',false或者其他将不会出现在查询语句中。

2023-03-10 15:34:01 616

原创 gorm查询返回为空struct

该返回为空struct。

2023-03-06 16:49:21 426

原创 gin里中间件BasicAuth认证

postman 测试。

2023-02-22 10:49:42 215

原创 探究内存中子类实例

也就是说,当系统创建一个 Java 对象时,如果该 Java 类有2个父类(一个直接父类 A ,一个间接父类 B ),假设 A 类中定义了2个实例变量, B 类中定义了个头的变量,当前类中定义了2个实例变量,那么这个 Java 对象将会保存2+3+2个实例变重。注意:不是完全覆盖,因此系统在创建子类对象时,依然会为父类中定义的、被隐藏的变量分配内存空间。如果在类里定义了与父类中已有变量同名的变量,那么。因为子类中定义与父类中同名的实例变量。当程序创建一个子类对象时,

2022-09-08 22:00:48 91

原创 探究继承父类变量和方法区别

继承成员变量和继承方法之间存在这样的差别 ,所以对于一个引用类型的变直而言,当通过。也就是 说 父类引用指向 子类时。

2022-09-08 21:17:12 89

原创 探究子类重写父类方法的调用

由于语言特性 会优先执行父类构造器,子类如果有父类重写的方法,会优先执行子类重写的方法。

2022-09-01 22:41:32 1757

原创 探究子类构造器和 父类构造器 的实例变量赋值问题

当变量的编译时类型和运行时类型不同时,访问他引用的对象实例变量时 ,是由声明该变量的对象类型决定的比如 Base 里的 this.i ,但是访问他引用的对象实例方法时,是由变量的实际引用的对象决定的比如 Base 构造器里调用的 this.sub() 就会在编译时报错。...

2022-08-31 22:37:36 238 1

原创 探究类变量的初始化时机

现在 由于2个类变量执行顺序发生改变 ,先执行了。至于下面一个 代码执行 就是一个构造方法执行。类加载的准备阶段 已上面相同 ,初始化阶段。我们可以从字节码上可以查看到这个问题。我们对调一下2个类变量的顺序。类加载进行准备阶段时。......

2022-08-31 21:53:18 105

原创 java class 文件解读

类文件结构类文件结构一个简单的执行编译为后是这个样子的:根据JVM规范,类文件结构如下ClassFile{小版本号主版本号常量池访问修饰当前类的信息父类信息接口信息成员变量信息方法信息类的附加属性信息}u4 和u2 是指字节数。............

2022-08-22 16:09:13 635

原创 java内存模型与对象头

②. 对象头分为对象标记(markOop)和类元信息(klassOop),类元信息存储的是指向该对象类。(klass)的首地址。

2022-08-18 19:57:08 88

原创 垃圾回收调优

自适应调整大小策略 主要调整新生代的内存 大小,动态调整伊甸园区和幸存者区域的大小 以及 对象晋升到老年代的寿命。的吞吐量下降,总的暂停时间就会变长。即就是在程序运行期间,垃圾回收的时间占程序运行时间的大小。采用并行垃圾回收器 前面是的新生代gc 后面是老年代gc。单位时间内回收垃圾的量。设置并行gc线程数量。........................................................................

2022-08-15 17:14:29 785 1

原创 GC算法分类

在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的如果存在 循环引用 最终导致无法回收是指 A对象里引用了B对象 ,而B对象也引用了A对象 导致 这2个对象各个计数器值 都为 1,最终导致无法回收对象简单来说 可达性分析算法 首先确定根对象 即肯定不能被当成垃圾被回收的对象(如 Thread 等 其实也就是 java核心 api里的对象),在进行垃圾回收之前,会对堆内存中对象进行扫描,看看这些对象 被根对象是

2022-08-11 17:06:11 175

原创 ByteBuffer原理与unsafe类以及关于jvm 和 系统之间的直接内存

我们来看下 这个ByteBuffter里的 allocateDirect方法。我们可以使用 jdk 自带的 Nio 包下的ByteBuffer 来操作。因为需要分配2个缓冲区 来造成不必要的复制 造成效率低下。其调用了 DirectByteBuffer 构造器。

2022-08-11 11:52:27 423 1

原创 关于jdk 文档地址

jvm规范地址。

2022-08-09 17:30:22 69

转载 sql 如何查询不在某个范围内的数据

使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字段为 null的记录 ~执行时间:0.739秒~例如:A、B两表,找出ID字段中,存在A表,但是不存在B表的数据。A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引。使用 not in ,容易理解,效率低 ~执行时间为:1.395秒~逻辑相对复杂,但是速度最快 ~执行时间: 0.570秒~【SQL查询存在一个表而不在另一个表中的数据的具体方法】...

2022-08-09 11:07:31 8971

原创 ThreadLocal 使用 以及源码分析

首先理解JMM模型①.ThreadLocal本地线程变量,线程自带的变量副本(实现了每一个线程副本都有一个专属的本地变量,主要解决的就是让每一个线程自己用自己的,不跟别人争抢。通过使用get()和set()方法,获取默认值或将其值更改为当前线程所存的副本的值从而避免了线程安全的问题)②.synchronized或者lock,有个管理员,好比,现在大家签到,多个同学(线程),但是只有一只笔,只能同一个时间,只有一个线程(同学)签到,加锁(同步机制是以时间换空间,执行时间不一样,类似于排队)https。....

2022-07-22 17:09:11 187

原创 原子操作类使用以及源码分析

注意:使用 TimeUnit.SECONDS.sleep 让主线程进行阻塞 ,在生产环境中及其不规范 使用CountDownLatch 来解决这个问题

2022-07-07 18:01:04 449

原创 CAS原理与使用

不使用原子类保证 i++ 线程安全使用原子类保证i++线程安全CAS底层原理? UnSafe类+CAS思想[自旋锁] ①. CAS的全称为Compare-And-Swap ,它是一条CPU并发原语,比较工作内存值(预期值)和主物理内存的共享值是否相同,相同则执行规定操作,否则继续比较直到主内存和工作内存的值一致为止。这个过程是原子的(AtomicInteger类主要利用CAS(compare and swap)+volatile和native方法来保证原子操作,从而避免synchronized的高开销,执

2022-07-06 17:19:06 137

原创 JAVA Volatile关键字 使用以及源码分析

①. 特点:可见性、有序性、不保证原子性②. volatile的内存语义1、当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中。2、当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,直接从主内存中读取共享变量3、所以volatile的写内存语义是直接刷新到主内存中,读的内存语义是直接从主内存中读取volatile凭什么可以保证可见性和有序性有序性不存在数据依赖关系 可以重排序 存在数据依赖关系 禁止重排序①. 内存屏障(也称

2022-07-02 21:11:20 338

原创 java 实体类互相转化

前提 是 字段名相同

2022-07-01 16:01:12 747 1

原创 JMM 概念和原理 、三大特性 、 Happens-Before 先行发生原则

JMM 概念和原理

2022-06-29 17:44:34 222

原创 线程中断机制 interrupt、isInterrupted、interrupted方法

①. 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,所以,Thread.stop、Thread.suspend、Thread. resume都已经被废弃了②. 在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的机制 — 中断③. 中断只是一种协作机制,Java没有给中断增加任何语法,中断的过程完全需要程序员自己实现④. 若要中断一个线程,你需要手动调用该线程的interrupt方法,该方法也仅仅是将线程对象的中

2022-06-28 17:03:13 1859 2

原创 synchronized 源码分析

synchronized 源码分析

2022-06-27 10:52:52 139

原创 JUC 三大辅助类 CountDownLatch CyclicBarrier Semaphore

常用的构造方法有:CyclicBarrier(int parties,Runnable barrierAction)创建一个新的CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,并在启动barrier时执行给定的屏障操作,该操作由最后一个进入barrier的线程操作常用的方法有:await() 在所有的参与者都已经在此barrier上调用await方法之前一直等待 具体常用的构造方法有:Semaphore(int permits)创建具有给定的许可数和非公平的公平设

2022-06-24 10:11:37 87

原创 反射可以修改final类型

Java 编译器不会对所有的 final 属型进行内联优化,只有八种基本类型属性和 LiteralString(直接用引号包裹而不是new关键字实例化的字符串 如 String str="123") 会进行内联优化,对于引用类型不会则进行内联优化。此外,在运行期间才确定值的final属性也不会进行内联优化。Java 编译器对 final 属型的基本类型进行了内联优化,即编译时把该 final 属性的值直接放到了引用它的地方。即使是反射修改了该属性,但是引用它的地方放的并不是属性引用而是属性值,所以返回值并没

2022-06-22 17:27:42 1543

原创 Lock 8锁问题

最初资源类题目/** * 题目:谈谈你对多线程锁的理解,8锁案例说明 * 口诀:线程 操作 资源类 * 8锁案例说明: * 1 标准访问有ab两个线程,请问先打印邮件还是短信 * 2 sendEmail方法中加入暂停3秒钟,请问先打印邮件还是短信 * 3 添加一个普通的hello方法,请问先打印邮件还是hello * 4 有两部手机,请问先打印邮件还是短信 * 5 有两个静态同步方法,有1部手机,请问先打印邮件还是短信 * 6 有两个静态同步方法,有2部手机,请问先打印邮

2022-06-22 16:57:45 185

原创 不推荐Executors创建线程池

线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 说明:Executors返回的线程池对象的弊端如下:1)FixedThreadPool和SingleThreadPool:  允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。2)CachedThreadPool:  允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量的线程

2022-06-20 10:36:52 551

原创 java 异步编程 CompletableFuture

同步:就是在发出一个功能调用时,在没有得到结果之前,将一直处于等待中 即阻塞状态。也就是必须一件一件事做,等前一件做完了才能做下一件事异步:异步通常意味着非阻塞,可以使得我们的任务单独运行在与主线程分离的其他线程中,并且通过回调可以在主线程中得到异步任务的执行状态,是否完成,和是否异常等信息。 没有返回值的异步任务 有返回值的异步任务 thenAccept 消费处理结果, 接收任务的处理结果,并消费处理,无返回结果。 异常处理exceptionally 异常

2022-06-17 11:00:30 3538

原创 ForkJoin使用

Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个的小任务运算的结果进行 join 汇总 采用 “工作窃取”模式(work-stealing):当执行新的任务时它可以将其拆分分成更小的任务执行,并将小任务加到线程队列中,然后再从一个随机线程的队列中偷一个并把它放在自己的队列中。相对于一般的线程池实现,fork/join框架的优势体现在对其中包含的任务的处理方式上.在一般的线程池中,如果一个线程正在执行的任务由于某些原

2022-06-16 17:39:46 519

原创 使用Callable创建线程的FutureTask类

FutureTask 主要意义 主线业务流程依次往下执行,可以单开几个线程做其他事情 ,最终汇总,但汇总只需要汇总一次

2022-06-16 16:17:01 54

原创 ThreadPoolExecutor 线程池底层原理和执行流程

②. maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值必须大于等于1③. keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁直到只剩下corePoolSize个线程为止(非核心线程)④. unit:keepAliveTime的单位 即 TimeUnit 类⑤. workQueue:任务队列即阻塞队列,被提交但尚未被执行的任务(候客区)⑥. threadFactory:线程工厂,用于生成 线程池里的工作线程,一般用默认即

2022-06-16 14:44:01 296

原创 AQS原理解析

转载文章地址视频

2022-06-15 15:16:58 55

原创 springdata.mongodb根据某个字段统计每天数量

参考博客

2022-06-13 09:24:26 550

java面试使用的资料!!!!!!!

java面试使用的子类

2022-11-02

java面试!!!!!!!!!!!!!!!!!

java面试!!!!!!!!!!!!!!!!!

2022-06-15

空空如也

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

TA关注的人

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