秦老厮
码龄9年
关注
提问 私信
  • 博客:96,039
    96,039
    总访问量
  • 45
    原创
  • 166,052
    排名
  • 100
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:成长就是一个人从一群人的墓碑前走过,穿过幽暗的森林,见到第二天的太阳!

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2016-01-07
博客简介:

yelang0的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    1
    当前总分
    41
    当月
    1
个人成就
  • 获得196次点赞
  • 内容获得13次评论
  • 获得790次收藏
  • 代码片获得572次分享
创作历程
  • 1篇
    2024年
  • 43篇
    2019年
  • 1篇
    2017年
成就勋章
TA的专栏
  • JUC源码分析
    6篇
  • java基础
    1篇
  • 随笔
  • Java NIO
    1篇
  • 算法与数据结构
    27篇
  • Spring源码分析
  • JVM源码分析
    2篇
  • java8
    3篇
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

184人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

这个AI换衣项目也太惊艳了吧,看完我整个人都不好了!

以上老秦介绍了AI虚拟试衣技术和OOTDiffusion的本地部署,老秦之前就部署过,也踩了一些坑,所以这次部署比较顺利,如果大家遇到问题,可以加下老秦的AI闲聊群,有空可以帮大家看下问题。
原创
发布博客 2024.03.23 ·
2694 阅读 ·
30 点赞 ·
1 评论 ·
41 收藏

volatile底层实现原理

前言当共享变量被声明为volatile后,对这个变量的读/写操作都会很特别,下面我们就揭开volatile的神秘面纱。1.volatile的内存语义1.1 volatile的特性一个volatile变量自身具有以下三个特性:可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程...
原创
发布博客 2019.09.02 ·
1264 阅读 ·
2 点赞 ·
1 评论 ·
3 收藏

JVM源码调试环境搭建

前言:上篇文章我们介绍了如何在Ubuntu中编译openjdk,包括hotspotJVM,编译完之后大家就要开始阅读jvm源码了,为了让大家能够流畅地阅读和调试jvm源码,这篇介绍下如何搭建jvm源码调试环境,使之能够在IDE中调试。1.笔者环境:源码:openjdk11-hotspotIDE:clion系统:Ubuntu19.042.搭建过程:2.1将源码载入到clion首先...
原创
发布博客 2019.09.02 ·
1449 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Ubuntu下编译openjdk11

前言我的另一篇文章:Ubuntu下编译openjdk8 已经编译了openjdk8的版本,现在需要用到openjdk11的HotspotJVM,所以就编译一下openjdk11,把不同的部分记录下来,openjdk11的准备部分就不在赘述了,直接进入编译环节,需要准备环境的看我的编译openjdk8的文章,先把需要安装的工具安装了。1.笔者环境源码:openjdk11,大家可以...
原创
发布博客 2019.09.02 ·
614 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Unsafe类源码解析

前言Unsafe,顾名思义,一个不安全的类,那么jdk的开发者为什么要设计一个不安全的类呢?这个类为什么会不安全呢?现在就让我们来揭开Unsafe类的神秘面纱。1.概述作为java开发者的我们都知道,java是没有指针的,默认是由JVM进行内存的分配与垃圾回收,那就意味着java不能直接操作内存了?其实不是的,Unsafe类通过JNI的方式访问本地的C++实现库从而使java具有了直接操...
原创
发布博客 2019.09.02 ·
2538 阅读 ·
7 点赞 ·
0 评论 ·
18 收藏

java中锁的分类

一、java中的锁从以下几个方面进行划分类别:1.线程是否要锁住同步资源:锁住:悲观锁不锁住: 乐观锁 CAS2.锁住同步资源失败,线程是否要阻塞:阻塞不阻塞:自旋锁适应性自旋锁3.多个线程竞争同步资源的流程细节有没有区别:不锁住资源,多个线程中只有一个能修改资源成功,其他线程会重试: 无锁同一个线程执行同步资源时自动获取资源: 偏...
原创
发布博客 2019.09.02 ·
321 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

CAS算法

前言CAS,即 Compare And Swap(比较与交换),是一种无锁算法,基于硬件原语实现,能够在不使用锁的情况下实现多线程之间的变量同步。jdk中的java.util.concurrent.atomic包中的原子类就是通过CAS来实现了乐观锁。CAS算法过程算法涉及到三个操作数:需要读写的内存位置V需要进行比较的预期值A需要写入的新值UCAS算法解析:CAS具体执行...
原创
发布博客 2019.09.02 ·
245 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

volatile底层实现原理

前言当共享变量被声明为volatile后,对这个变量的读/写操作都会很特别,下面我们就揭开volatile的神秘面纱。1.volatile的内存语义1.1 volatile的特性一个volatile变量自身具有以下三个特性:可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递...
原创
发布博客 2019.09.02 ·
10723 阅读 ·
19 点赞 ·
0 评论 ·
71 收藏

Java内存模型详解

前言Java内存模型(Java Memory Model,简称JMM),即Java虚拟机定义的一种用来屏蔽各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能够达到一致的内存访问效果的内存模型。本篇文章大致设涉及到五个要点:Java内存模型的基础,主要介绍JMM抽象结构;Java内存模型中内存屏障;Java内存模型中的重排序;happens-before原则;顺序一致性内存模...
原创
发布博客 2019.09.01 ·
410 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Stream流

前言这篇详细介绍了Stream流的概念,创建方式,基本操作及部分源码分析。可能有点长哈,大家看起来比较费劲,我自己写的也比较累,光码字就码了很长时间,大家看得过程中可以停下来休息下,喝个茶,斗个地主接着再来看,就安利到这里了,我也该洗洗睡了(码字确实挺累的,写文章也是很累),最后在安利下哈,个人绝得很详细的,祝大家学习愉快哈,看完就可以找到心仪小姐姐(小哥哥)。1.流的概述及相关概念ja...
原创
发布博客 2019.08.24 ·
280 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

方法引用

1.什么是方法引用方法引用是java8中特定情况下简化lambada表达式的一种语法糖,这里的特定情况是指当调用现有的方法时可以用方法引用替代lambada表达式,其他情况下,则不可以替代。举个栗子:public class MethodReferenceTest { public static void main(String[] args) { List<St...
原创
发布博客 2019.08.24 ·
4977 阅读 ·
8 点赞 ·
0 评论 ·
33 收藏

函数式接口

概述java8中新增了 @FunctionalInterface 注解表示函数式接口,用注解@FunctionalInterface标识的接口都是函数式接口,函数式接口只能有一个抽象方法,但除了抽象方法,java8还允许接口中定义默认方法(声明为default的方法)和静态方法。如果一个接口只有一个抽象方法,即便我们并没有用 @FunctionalInterface 注解标注,编译器依然会将该接...
原创
发布博客 2019.08.24 ·
282 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

lambada表达式介绍

前言在其他语言中,函数式编程是很常见的,java8中为了支持函数式编程,新增了lambada表达式。lambada表达式其实是匿名内部类和闭包的一种符号表示,至于概念性的问题,大家不必深究,lambada表达式会用就可以了。1.为何需要lambada表达式在js中,函数的参数是另一个函数,返回值也是一个函数的情况是根常见的,因此js也是一门典型的函数式语言。而在java8以前的版本中,我...
原创
发布博客 2019.08.24 ·
2624 阅读 ·
2 点赞 ·
0 评论 ·
7 收藏

Ubuntu下编译openjdk8

一、笔者环境1.Ubuntu18.042.openjdk8u60二、源码下载由于openjdk使用mercurial版本管理工具构建的, 所以可以使用mercurial来下载源码,但是下载速度不敢恭维,我是在openjdk官网:http://hg.openjdk.java.net/jdk8u下载的openjdk8u60版本,我已上传到github,这里给出我的github地址:https:...
原创
发布博客 2019.08.04 ·
669 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Spring源码调试环境搭建

一、实验环境1.jdk1.8.0_1712.gradle-5.3.1(Spring源码使用gradle构建的,关于gradle的安装和配置使用,请读者自行上网搜一下,这里不再赘述)3.IntelliJ IDEA 2019.24.Spring-5.0.x二、环境搭建1.进入到GitHub官网并搜索spirng,找到对应的spring-framework工程,点击链接进入,如下图:2....
原创
发布博客 2019.07.30 ·
1429 阅读 ·
1 点赞 ·
1 评论 ·
4 收藏

算法与数据结构系列之[图-概念]

前言前面我们介绍了线性表和树这两大类数据结构,线性表局限于一个直接前驱和一个直接后继,树也只能有一个直接前驱也就是父节点,当我们需要表示多对多的关系时就需要用到图这种数据结构,比如微博,微信互相关注,互加好友的社交关系就用图来表示。1.概述图(Graph)是一种数据结构,由结点和边组成,通常表示为G(V,E),其中G表示一个图,V是图G中结点的集合,结点也称顶点,可以具有零个或多个相邻元素,...
原创
发布博客 2019.07.09 ·
313 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

算法与数据结构系列之[哈希表]

前言前面我们介绍线性表的时候,如果要查找某个元素,比如key,就需要从表头开始,逐个比较记录a[i]和key的值是相等还是不相等,知道有相等才算查找成功,返回i。那么我们有没有一种方法不用逐个比较就能查找到要查询的元素呢?答案是肯定的,我们可以通过关键字key得到要查找记录的内存位置,这就是我们这篇要介绍的哈希表,其实哈希表算是线性存储结构的范畴,因为哈希表用到数组作为存储结构。1.什么是哈希...
原创
发布博客 2019.07.09 ·
1406 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

算法与数据结构系列之[红黑树-下]

上篇介绍了红黑树的概述,这篇贴出红黑树的java实现代码。public class RBTree<K extends Comparable<K>, V>{ private static final boolean RED = true; private static final boolean BLACK = false; private class...
原创
发布博客 2019.07.09 ·
132 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

算法与数据结构系列之[红黑树-上]

前言前面我们提到,为了解决二分搜索树有时候会退化成链表的问题,科学家们提出了平衡树的概念,最早发明的AVL树就是高度平衡(所有节点的左右子节点的高度差的绝对值不超过1)的二分搜索树,但实际开发中,AVL树并不常见,工程中,常用的平衡二分搜素树是这篇我们要介绍的红黑树。那到底什么是红黑树呢?我们在这篇文章中揭晓。为了便于理解红黑树,我们先来看一种绝对的平衡树–2-3树。所谓绝对平衡树就是所有节点...
原创
发布博客 2019.07.09 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

算法与数据结构系列之[平衡二叉树-AVL树-下]

上篇介绍了AVL树的概述,这篇把AVL树的java代码实现贴出来public class AVLTree<K extends Comparable<K>, V> { private class Node{ public K key; public V value; public Node left, right; ...
原创
发布博客 2019.07.09 ·
581 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多