自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 资源 (17)
  • 收藏
  • 关注

原创 实战之快速完成 ChatGLM3-6B 在 GPU-8G的 INT4 量化和本地部署

加载半精度的 ChatGLM3-6B 模型需要大概 13GB 内存。从上图也可以看到,ChatGLM3-6B-32K的话是最高配的模型,而ChatGLM3-6B-Base是最低配的模型。大模型是很吃CPU和显卡的,所以,要不有一个好的CPU,要不有一块好的显卡,显卡尽量13G+,内存基本要32GB+。清华大模型分为三种(ChatGLM3-6B-Base,ChatGLM3-6B,ChatGLM3-6B-32K)一般会选择 ChatGLM3-6B普通模型来使用,当然,如果配置高,可以用32K的,会更好。

2024-05-24 09:19:17 998

原创 Win安装Conda及其环境配置(包含pip、conda换源)

Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。创建指定Python版本环境 conda create --name 环境名称 python=3.7。第二步 在C:\Users\Admin\pip文件夹下创建pip.ini文件。删除环境 conda remove --name 环境名称 --all。创建环境 conda create --name 环境英文名称。

2024-05-24 09:16:08 230

原创 eureka 加入密码认证 springboot-admin 加入密码认证

2. application.properties 配置如下 用户名和密码。1. pom.xml 加入依赖。

2024-05-23 09:21:47 160

原创 SpringBoot启动流程分析之ApplicationEnvironmentPreparedEvent事件发布(四)

org.springframework.boot.SpringApplication#run(java.lang.String…)构建环境1、创建ConfigurableEnvironment对象从UML类图看出:StandardServletEnvironment 继承StandardEnvironment 实现ConfigurableWebEnvironmentStandardEnvironment 继承AbstractEnvironment 中构造函数中customizePrope

2024-05-23 09:18:37 1051

原创 IDEA 快捷键

IntelliJ IDEA 常用快捷键。IDEA 默认Eclipse快捷键。

2024-05-18 09:14:13 145

原创 SpringBoot启动流程分析之命令行参数args的封装解析(三)

补充一下:命令行参数在cmd中添加如下,先在项目根目录执行mvn clean install ,然后到target目录或者在jar包前面加上target目录都行,执行图片中的命令运行, 图片是从我后面文章复制过来的,主要是说明命令行参数在cmd中怎么加。可以看到args参数在构造方法中在作为参数放到了DefaultApplicationArguments的静态内部类Source的构造方法中进一步封装,至于下面的全局变量args放的就是原始的args参数。可以通过getSourceArgs方法得到。

2024-05-18 09:12:38 545

原创 SpringBoot @AllArgsConstructor和final 代替 @Autowired

Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了。

2024-05-16 11:36:34 364

原创 SpringBoot 服务熔断降级之-Hystrix

通过断路的方式,将后续请求直接拒绝,一段时间(默认5秒)之后允许部分请求通过,如果调用成功则回到断路器关闭状态,否则继续打开,拒绝请求的服务。用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息) 即:及时返回服务调用失败的结果,让线程不因为等待服务而阻塞。可以优先保证核心服务。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。,默认fallback,可设置统一的降级服务逻辑。

2024-05-14 09:12:28 679

原创 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

再者,回到设计层面上分析,从职责单一原则来看,服务层只负责业务,与具体的表现形式无关,因此,它返回的DTO,不应该出现。首先是概念上的区别,DTO是展示层和服务层之间的数据传输对象(可以认为是两者之间的协议),而DO是对现实世界各种业务角色的抽象,这就引出了两者在数据上的区别,例如UserInfo和User(对于DTO和DO的命名规则,请参见笔者前面的一篇博文),对于一个getUser方法来说,本质上它永远不应该返回用户的密码,因此UserInfo至少比User少一个password的数据。

2024-05-14 09:11:03 425

原创 Skywalking 8.x部署

首先因为,具体步骤跟以上差不多,修改完mysql持久化后,需要用代理跑一个jar包,那我们直接复制agent目录到另一台服务器的随便一个目录下,这里agent它默认是向本地发送监控请求,那我们就得修改一下,同时你可以指定自己的项目名。下一步懂得都懂,那肯定就需要mysql-connector-java-8.0.16写入mysql的;将下载后的包放入oap-libs外部包内。可以修改如下your_Application为你自己的项目名。找到config目录下的。打开agent目录下的。

2024-05-13 09:18:24 322

原创 Mysql 删除数据方案

表删除数据速度优先级方式:drop>truncate>delete。

2024-05-13 09:08:46 246

原创 【Spring源码分析】ResolvableType

这些包括原始类型,参数化的类型,数组类型,类型变量和原始类型(These include raw types, parameterized types, array types, type variables and primitive types).它并不是我们平常工作中经常使用的 int、String、List、Map等数据类型,而是从Java语言角度来说,对基本类型、引用类型向上的抽象;通配符表达式,或泛型表达式,它虽然是Type的一个子接口,但并不是Java类型中的一种,表示的仅仅是类似?

2024-05-10 09:34:03 1268

原创 SpringBoot启动流程分析之ApplicationStartingEvent事件的发布监听流程(二)

即在创建SpringApplicationRunListener接口实现类对象的时候调用的构造方法是指定了参数类型的,为types数组中的参数类型,然后还有SpringApplication和args,这两个想的到就是构造方法的参数了。SpringApplicationRunListeners类封装了SpringApplicationRunListener接口的所有方法,方法内循环SpringApplicationRunListener实例对象集合,去调用相关方法。限制日志输出,直到日志系统完全初始化。

2024-05-10 09:27:39 1089

原创 SpringBoot启动流程分析之创建SpringApplication对象(一)

这些对象的initialize方法会在后面的run方法中被调用。先是判断默认的classloader中是否存在org.springframework.web.reactive.DispatcherHandler、且不存在org.springframework.web.servlet.DispatcherServlet、org.glassfish.jersey.servlet.ServletContainer,如果为true返回WebApplicationType.REACTIVE;

2024-05-09 09:23:51 758

原创 JAVA 双亲委派之一

不论是AppClassLoader还是ExtClassLoader还是启动类加载器,其加载类的路径都是固定的,如果我们需要加载外部类或者资源,如某路径下或网络上,这样便需要自定义类加载器自定义类加载器,只需要继承ClassLoader类,复写findClass方法,在findClass方法中调用defineClass方法即可一个ClassLoader创建时如果没有指定parent,那么它的parent默认就是AppClassLoader。

2024-05-09 09:15:44 751

原创 Java Spring @Import和@Enable注解

本文先通过3个demo介绍了Import注解的3种使用场景,然后结合ConfigurationClassPostProcessor类的源码分析了Import注解的使用原理。接着通过@Import注解,揭开了@Enable系列注解的神秘面纱。并结合@EnableAsync注解的源码,举例说明了@Enable注解的原理。最后解释了使用@Import和@Enable系列注解的好处。

2024-05-09 09:11:47 697

原创 Spring中FactoryBean的作用和实现原理

我们都知道在Spring中我们的Bean都会被Spring的IOC容器所管理,在AbstractApplicationContext中有一个很重要的方法:refresh(),项目启动或重启的时候refresh()会调用getBean()初始化所有的Bean,这个getBean()最终会指向AbstractBeanFactory中的getBean()方法。看源码的时候如果我们一直追究所有的细节那会让我们会越陷越深,掉入细节的无底洞,稍不留神脑回路跟不上就会蒙圈。synthetic);

2024-05-08 18:36:31 599

原创 Spring ASM 原理以及再Spring中的应用

ASM可以直接产生二进制class文件,也可以在类被加载Java虚拟机之前动态改变类行为,Java class被存储在严格格式定义的.class文件里,这些文件拥有足够的元数据来解析勒种的所有元素:类名称, 方法,属性以及Java字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。事件驱动的处理方式使得用户只需要关注于对其编程有意义的部分,而不必了解 Java 类文件格式的所有细节:ASM 框架提供了默认的 “response taker”处理这一切。

2024-05-08 18:34:06 511

原创 Redis 相关问题总结

官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)Redis利用队列技术将并发访问变为串行访问 1)绝大部分请求是纯粹的内存操作(非常快速)2)采用单线程,避免了不必要的上下文切换和竞争条件 3)非阻塞IO优。

2024-05-04 09:20:59 1032

原创 Linux 安装Mysql

其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。因此,会出现这样的问题,Mysql-A的数据库操作是可以并发的执行的,但是Mysql-B只能从relay log中一条一条的读取执行。日志系统B,不是二进制日志,由于它是从MYSQL-A的二进制日志复制过来的,并不是自己的数据库变化产生的,有点接力的感觉,称为中继日志,即relay log。

2024-05-04 09:16:28 1019

原创 Java MapStruct 字段映射工具类

使用注解@Mapper定义一个Converter接口,在其中定义一个do2dto方法,方法的入参类型是PersonDO,出参类型是PersonDTO,这个方法就用于将PersonDO转成PersonDTO。@Mapper在转换映射过程中,给一些属性定义一个固定的值,这个时候可以使用 constant。

2024-05-03 09:35:01 1314

原创 一文读懂Mysql数据库索引原理

MyISAM 存储引擎索引实现: MyISAM 索引文件(磁盘上表对应.MYI)和数据文件(MYD)是分离的(非聚集)InnoDB 存储引擎索引实现: InnoDB 索引实现(聚集)

2024-05-03 09:31:54 1012

原创 史上最全面的Spring Boot Cache使用与整合

Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache ,ConcurrentMapCache等;每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。使用Spring缓存抽象时我们需要关注以下两点;1、确定方法需要被缓存以及他们的缓存策略2

2024-05-02 09:58:20 994

原创 SpringBoot / SpringCloud 注册与发现

在使用Spring Cloud feign使用中在使用服务发现的时候提到了两种注解,一种为@EnableDiscoveryClient,一种为@EnableEurekaClient,用法上基本一致。其实用更简单的话来说,就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。但是使用@EnableEurekaClient的情景,就是在服务采用eureka作为注册中心的时候,使用场景较为单一。

2024-05-02 09:34:19 299

原创 Java AQS的原理

在Java领域中,我们可以将锁大致分为基于Java语法层面(关键词)实现的锁和基于JDK层面实现的锁。在Java领域中, 尤其是在并发编程领域,对于多线程并发执行一直有两大核心问题:同步和互斥。互斥(Mutual Exclusion):一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。即就是同一时刻只允许一个线程访问共享资源的问题。同步(Synchronization):两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。

2024-04-30 09:12:04 457

原创 Java 源码 - DelayQueue 源码解析

消费者线程查看队列头部的元素(注意是查看不是取出),然后调用元素的 getDelay 方法,如果此方法返回的值小于0或者等于0,则消费者线程会从队列中取出此元素,并进行处理。当生产者线程调用 put 之类的方法加入元素时,会触发 Delayed 接口中的 compareTo 方法进行排序,也就是说队列中元素的顺序是按到期时间排序的,而非它们进入队列的顺序。4. 如果“leader线程”不存在,把当前线程设置为“leader线程”,释放锁并等待头节点对象的延迟时间后,重新获得锁,下次循环获取头节点对象返回。

2024-04-30 09:10:50 854

原创 Jdk 内存伪共享

数据X、Y、Z被加载到同一Cache Line中,线程A在Core1上修改X,而修改X会导致其所在的所有核上的缓存行均失效;假设此时线程B在Core2上读取Y,由于X所在的缓存行已经失效,所有Core2必须从内存中重新读取。线程A的操作不会修改Y,但是由于X和Y共享的是一个缓存行,就导致线程B不能很好地利用Cache,这其实就是伪共享。简单来说,伪共享指的是由于共享缓存行导致缓存无效的场景。

2024-04-29 14:11:23 656 1

原创 通俗理解:亚马逊SKU、ASIN、FNSKU、UPC

由卖家根据自己的商品管理体系进行编写,因此即使是同一个产品,不同的商家卖也会有不同的SKU。SKU是由商家自己设计的,因此即使同一个产品不同商家会设置不同的SKU,而ASIN码只关心商品,无论你商家怎么设置SKU,商品都是唯一的。:虽然商家有很多,但是他们卖的产品是同一个,一模一样。京东:输入图中的SKU:50647371542,就会直接进入该商家的该页面,是一个卖耳机的商家的旗舰产品。在说明SKU的时候,就说明了SKU是有商家自己设计的,因此不可避免地就会包含商家信息+产品信息。这是亚马逊特有的识别码。

2024-04-29 14:09:13 657

原创 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

传统的MyBatis 配置SQL 语句方式就是使用XML文件进行配置的,但是这种方式不能很好地支持面向接口编程的理念,为了支持面向接口的编程,MyBatis 引入了Mapper接口的概念,面向接口的引入,对使用注解来配置SQL 语句成为可能,用户只需要在接口上添加必要的注解即可,不用再去配置XML文件了,但是,目前的MyBatis 只是对注解配置SQL 语句提供了有限的支持,某些高级功能还是要依赖XML配置文件配置SQL 语句。(至于具体的MyBatis缓存机制,我将准备专门一篇文章来讨论,敬请关注~)

2024-04-28 21:18:25 1353

原创 Treiber Stack简单分析

Treiber Stack Algorithm是一个可扩展的无锁栈,利用细粒度的并发原语CAS来实现的,Treiber Stack在 R. Kent Treiber在1986年的论文Systems Programming: Coping with Parallelism中首次出现.

2024-04-28 21:12:16 280

原创 Java-布隆过滤器

【代码】Java-布隆过滤器。

2024-04-27 16:37:40 153

原创 Mac下使用homebrew管理多版本mysql同时启动

给每个版本分配不同的数据目录和配置文件即可本文尝试了使用 brew 安装管理多个MySQL版本,同时运行、直接切换。

2024-04-27 16:35:29 935

原创 pyinstaller利用spec文件打包的使用模板

pyinstaller 基础常规打包方法,网上文章很多了,大家自己搜索也是一大堆,就不一一列举了。使用pyqt5开发软件,当项目越来越大,引用的资源越来越多时,那么使用pyinstaller进行打包,如果不利用spec文件,是很难满足打包需求的。【注3:当项目越来越大时,免安装绿色文件夹 在软件启动速度上,比单个可执行文件,要快!不过,如果你想把自己的资源文件一起打进包去,则需要对spec文件进行一些编辑,然后使用。【如下代码,完全复制,直接运行,即可使用】spec文件,其实你在使用。

2024-04-25 14:16:59 384

原创 JavaScript常用的Hook脚本

/ 严格模式,检查所有错误// document 为要hook的对象 ,属性是cookie// hook set方法也就是赋值的方法,get就是获取的方法// 这样就可以快速给下面这个代码行下断点,从而快速定位设置cookie的代码debugger;// 在此处自动断下console.log('Hook捕获到set-cookie ->',val);return val;})})();

2024-04-25 14:16:33 537

原创 Java Thread 线程相关知识

Java 线程的实现并不受 JVM 规范约束,故不同虚拟机的实现,往往不同。目前主流的 HotSpot 是将每个 Java 线程直接映射到一个操作系统的原生线程,从而由操作系统完成一系列的线程调度;等待 / 定时等待与阻塞,差别就是后者需要一个事件信号(如其他线程放弃当前线程需要的排他锁),才可以进行状态切换。说完了线程的状态,那么再来说下,如何解除线程的WAITING/Sleep,让线程继续运行呢?,这里的状态是线程在JVM中的线程状态,那么这个线程在操作系统中的状态又是什么呢?可以看到,线程进入到。

2024-04-24 09:13:53 589

原创 Java-AQS的原理

在Java领域中,我们可以将锁大致分为基于Java语法层面(关键词)实现的锁和基于JDK层面实现的锁。在Java领域中, 尤其是在并发编程领域,对于多线程并发执行一直有两大核心问题:同步和互斥。互斥(Mutual Exclusion):一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。即就是同一时刻只允许一个线程访问共享资源的问题。同步(Synchronization):两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。

2024-04-24 09:11:57 585

原创 Java 源码-多级时间轮TimingWheel

通过TimingWheel.overflowWheel 上层时间轮的引用更新当前时间轮的创建时间字段:currentTime。类似现实中的钟表,由多个环形数组组成,每个环形数组包含20个时间单位,表示一个时间维度(一轮),如:第一层时间轮,数组中的每个元素代表1ms,一圈就是20ms,当延迟时间大于20ms时,就“进位”到第二层时间轮,第二层中,每“一格”表示20ms,依此类推…因此,理论上,当任务较多时,TimingWheel的时间性能优势会更明显。多级时间轮TimingWheel。

2024-04-23 14:11:09 516 2

原创 雪花算法生产Id,逆向推导

由于41位是时间戳,我们的时间计算是从1970年开始的,只能使用69年,为了不浪费,其实我们可以用时间的相对值,也就是以项目开始的时间为基准时间,往后可以使用69年。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。在雪花形成过程中,会形成不同的结构分支,所以说大自然中不存在两片完全一样的雪花,每一片雪花都拥有自己漂亮独特的形状。

2024-04-23 14:08:24 437

原创 Spring 5源码学习

在/Users/yuanjlv/work/server/gradle-5.1/init.d/ 新建 init.gradle 文件。安装目录下:/Users/yuanjlv/work/server/gradle-5.1/修改spring源码根目录中的setting.gradle文件,在第一行添加下面的配置。然后配置项目的gradle 为自己的下载安装的gradle,不用使用idea自带的。修改spring源码根目录中的gradle.properties文件。调整build.gradle。

2024-04-22 11:27:54 952

原创 SpringCloud 服务注册和发现源码解析

ConfigurationClassPostProcessor#processConfigBeanDefinitions()具体的思路是先获取所有的bean definition,并找出配置类对应的bean definition。addBeanPostProcessor()会添加一个ApplicationContextAwareProcessor处理器,这个类实现了BeanPostProcessor接口,同时由于应用上下文持有其它*Aware等的引用,因此在后面的代码中忽略了这些依赖。

2024-04-22 11:25:37 1251

中国城市区域数据字典

中国城市区域数据字典

2016-11-25

世界国家城市区域数据字典

世界国家城市区域数据字典

2016-11-25

chrome_plugins

chrome浏览器的JSON解析插件/Postman请求插件

2016-05-11

MyBatis3.2.3帮助文档

MyBatis3.2.3帮助文档

2016-05-11

java 反编译工具

1.java图形界面反编译工具 2.直接选择文件夹进行反编译成java源码 3.直接选择jar文件或class文件反编译成java源码

2014-04-06

JDK6.0 API

JDK6.0 API标准中文API,J2SE必备工具

2013-11-15

网页制作文档

这是一个开发网站很好的开发文档! 网站开发文档

2013-07-28

Css帮助文档

这是一个漂亮网站开发很好的帮助文档! CSS开发文档

2013-07-28

Javascript

这个一个介绍javascript的中文帮助文档

2013-07-28

Ext2.2API中文版(最终完成版).CHM

Ext2.2API中文版(最终完成版).CHM

2013-07-17

jquery_pai文档

应用于web页面开发的jquery文档资料,jquery.chm可以给开发人员提供方便快捷的开始帮助文档

2012-09-10

电子书 text格式转换陈jar格式

手机电子书 把text格式的转换成jar格式的工具

2010-04-04

Java图形编程Awt&Swing

Java图形编程的基本案例 和 图形编程基础的知识

2010-04-04

AJAX帮助技术文档

AJAX指南和向导.chm 包含所有的使用方法和实例

2009-02-19

XML指南和向导文档

XML帮助文档.chm帮助文档 包含所有对xml文件操作和使用的方法

2009-02-19

J2EE API 文档.chm格式

J2EE API 文档.chm格式 使用j2ee项目文档大全

2008-12-30

数据结构+算法基础资料

数据结构课件 知识点例举全面 从浅到深讲述全面,无论对刚入门的新手还是对有一定理解数据结构的人都是非常有用的

2008-12-26

空空如也

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

TA关注的人

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