自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 git命令

git init 创建git仓库git add . 添加所有工作区文件到暂存区,不包括删除的文件git add -A 提交所有变化git add -u 提交被修改和被删除的文件到暂存区,不包括新增文件git statusgit checkout – 1.txt 放弃工作区1.txt文件的修改git checkout . 放弃工作区所有修改(未被版本库管理的新建文件不会变化,同时会恢复被删除的版本库中存在的文件)

2024-06-02 15:46:25 975

原创 @Lazy

Lazy注解会通过ProxyFactoty拿到一个被注解的代理对象,然后在使用使用的时被代理对象时,且这时才会创建被代理对象。

2024-05-22 20:38:10 210

原创 spring 启动之解析配置类

invokeBeanFactoryPostProcessors会调用实现了BeanFactoryPostProcessors接口的postProcessBeanFactory方法invokeBeanFactoryPostProcessors会调用实现BeanDefinitionRegistryPostProcessor接口的postProcessBeanDefinitionRegistry方法。

2024-05-19 16:54:26 801

原创 spring 循环依赖

先创建ABean1.0. 记录正在创建ABean singletonCurrentlyInCreation<1.1.实例化ABean–>得到一个对象–>存入singletonFactories1.2. 填充BBean属性–>去单例池找BBean–>没有就创建1.3. 进行其他依赖注入1.4. 初始化前,初始化1.5. 初始化后1.6. 放入单例池创建BBean2.1. 实例化BBean–>得到一个对象。

2024-05-14 23:35:57 465

原创 Sping @Autowired @Value @Resourece依赖注入原理

AnnotationUtils.isCandidateClass(clazz, this.autowiredAnnotationTypes)) {//判断bean的类型是否需要注入,如String类型,则不会进行依赖注入。然后调用AutowiredAnnotationBeanPostProcessor.AutowiredFieldElement.inject对属性进行依赖注入,在resolveFieldValue方法获取值后,通过反射进行赋值。//从缓存中拿到metadata。

2024-05-12 22:52:07 842 2

原创 @PostConstruct

initializeBean方法–> PostProcessor.postProcessMergedBeanDefinition --> InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction。所以到bean初始化时,会调用到InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction方法。

2024-05-12 18:03:23 237

原创 Spring 类加载器

-> AppClassLoader (默认情况下会拿到)

2024-05-12 14:05:06 227

原创 Mysql 锁

mysql进行表锁时会扫描表中是否存在读锁或者写锁,当有事务给表的数据行加了共享锁或排他锁,同时会给表设置一个标识,代表已经有行锁了,其他事务要想对表加表锁时,就不必逐行判断有没有行锁可能跟表锁冲突了,直接读这个标识就可以确定自己该不该加表锁。从锁的性能有乐观锁和悲观锁;锁的粒度有行锁、页锁、表锁;写锁是排他的,会阻塞其他的写锁和读锁,update、delete、insert都会加写锁。(排他锁、x锁(exclusive)):select …(共享锁、S锁(Shared)):select …

2024-05-10 20:27:48 347

原创 spring 创建bean的过程

object.class – > 调用无参构造方法 --> 对象 --> 依赖注入(属性赋值) --> 初始化前(@PostConstruct)–>初始化(InitializingBean)–>初始化后(AOP)–>bean。

2024-05-10 00:51:27 834

原创 MySql 事务

一组操作要么全部成功,要么全部失败,目的是为了保证数据的最终一致性。**原子性(Atomicity):**当前的事务要么同时成功,要么同时失败。原子性由undo log日志来实现。(mysql undo log日志会在后台生成相应的对应数据日志,比如当执行insert语句时会undo log日志生成对于的delete语句,在事务执行失败回滚时会执行该语句。**一致性(Consistency):**使事务的最终目的,由其他3个特性以及业务代码正确逻辑来实现、

2024-05-09 15:50:57 520

原创 mysql 造测试数据

t1 为表名,a.b为字段名。

2024-05-09 01:04:27 406

原创 ThreadLocal

transmittableTreadlocal 阿里开源的,子线程可见,多个子线程安全。InheritableThreadlocal 子线程可见,但是对应多个子线程不安全。

2024-05-03 16:16:37 105

原创 Stream流常用方法

filter(Predicate p) 过滤流limit(int) 截取流,使元素不超过指定数量slip(int n) 跳过元素,返回一个扔掉前n个元素的流,假设长度不足n,就返回空流distinct() 根据equals方法去重map(Function f) 转换类型...

2021-12-17 17:29:12 203

原创 强引用、软引用、

强引用:直接new出来的对象就是强引用。 Object o = new Object(); 当设置o=null后,o才会等待gc回收。软引用:public void quote(){ SoftReference<byte[]> s = new SoftReference<>(new byte[1024*1024*10]); System.out.println(s.get());//[B@5c8da962 try {

2021-12-16 16:45:36 122

原创 volatile

volatile效果:1.保证线程可见性。以cache line为单位(64字节)2.禁止指令重排序volatile实现1.java代码 加volatile关键字2.字节码 加ACC_volatile3.内存屏障 4.hospot实现 底层实现是锁总线,因为内存屏障不支持可移植性...

2021-12-16 15:42:11 341

原创 synchronized底层实现和原理

ABA问题:当内存中值E被改为B,然后又改为E,怎么判断。答:加版本号CAS 最终java底层本地方法c++实现其中lock对cmpxcjg加锁,在比较E和V时,写回V时,操作不能被其他cpu打断。锁的级别new - 偏向锁 - 轻量锁(无锁,自旋锁,自适应自旋(cas就是轻量锁)) - 重量级锁查看 object 占用字节即内存模型 文章链接https://editor.csdn.net/md?articleId=121969237锁信息和GC信息记录在markword中。偏向锁:.

2021-12-16 14:05:22 389

原创 new Object() 占多少字节

java Object Layout <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency>在这里插入代码片public static

2021-12-16 10:37:35 304

原创 Collections

Collections是一个可以操作List,Map,set集合的工具类reverse(List) 集合反转shuffle(List) 随机排序sort(List) 自然排序sort(Comparator) 自定义排序swap(List int int) 将List集合i和j处元素互换max(Collection) 根据自然排序返回最大值max(Collection Comparator) 根据自定义排序返回最大值min(Collection)min(Co

2021-12-14 15:05:06 168

原创 map集合

Hashtable 1.0 map的古老实现类,线程安全,效率低,不可以存null的key和valueHashMap 1.2实现,线程不安全,效率高,可以存null的key和value,1.7之前使用数组+链表,1.8使用数组+链表+红黑树LinkedHashMap 添加两个引用,类似双向链表,可以遍历时按添加元素遍历TreeMap 可以按照key排序,实现排序遍历。底层使用红黑树Propertier k-v都是String类型,常用来处理配置文件Mapmap中key是无序的、不可重复的,.

2021-12-14 13:48:19 60

原创 List集合

集合结构如图1.集合主要是两组(单列集合,双列集合)2.Collection接口又两个重要的子接口List、Set,他们实现的子类都是单列集合3.Map 接口的实现子类 是双列集合 存放的是K-VCollection接口add 添加单个元素,添加基本数据类型会有一个自动装箱的过程remove 删除指定元素(指定索引或者元素,删除索引返回元素,删除元素返回Boolean值)contains 查找元素是否存在size 获取元素个数isEmpty 判断元

2021-12-13 15:53:08 749

原创 String

StringString 相等 == 问题string 拼接时,如果拼接的是变量,则使用 == 返回falseString a = "a"String b = "b"final String a1 = "a"final String b1 = "b"String s1 = "ab"String s2 = a+"b"String s3 = a+bString s4 = a1+a2s1 == s2 值 false s1 == s3 值 falses1 == s4 值 tr

2021-12-13 11:40:55 154

原创 几种类加载器

JVM支持两种类加载器,分别是引导类加载器(BootStrap ClassLoader)和自定义加载器(User-Defined ClassLoader)所有派生于抽象类ClassLoader的类加载器都是自定义加载器(Extension ClassLoader和System ClassLoader也属于自定义加载器)程序中常见的三种类加载器:主要分为引导类加载器(BootStrap ClassLoader)、扩展类加载器(Extension ClassLoader)、系统类加载器(System

2021-12-09 14:09:32 1452

原创 类加载器加载

加载通过一个类的全限定名获取定义此类的二进制文件流。将这个字节流所代表的的静态存储结构转化为方法区运行时的数据结构在内存中生成一个代表类的java.lang.Class对象,作为方法区这个类各种数据的访问入口链接验证、准备、解析验证确保Class文件的信息符合虚拟机要求,确保被加载类的正确性。主要验证方式:文件格式验证、元数据验证、字节码验证、符号引用验证准备为类变量分配内存并设置默认初始值这里不包含被final修饰的static、不包含实例变量解析将常量池内的符号引用转化为直接.

2021-12-09 11:11:09 377

原创 JVM内存结构

运行时数据区JVM运行时数据区主要包括 堆、栈、方法区、程序计数器等。其中JVM内存优化主要在线程的共享区域:***堆,方法区***中程序计数器程序计数器可以看做是当前执行的字节码的行号计数器,指向下一个要执行的指令代码。如果手机java方法,记录的是虚拟机正在执行的字节码指令的地址,如果是native方法,记录的值是undifined。程序计数器不会发生内存溢出问题栈本地方法栈和虚拟机栈栈线程私有,生命周期和线程相同。栈桢是栈的元素,每个方法在执行时会创建一个栈桢,存储局部变量表,方法出

2021-12-09 09:58:00 58

转载 Spring Boot 下载文件路径问题

java中的路径问题:System.out.println(System.getProperty(“user.dir”));//输出:F:\Java\project\study\iot_em//当前项目绝对路径System.out.println(request.getSession().getServletContext().getRealPath(""));//输出:F:\Java\project\study\iot_em\src\main\webapp//web程序路径,可指定文件URI,

2021-12-02 13:23:51 1420

转载 vue 下载文件提示无法打开

// 划重点 封装接口方法时加上responseTapeexpoet function down (data) {return request ({url: xxx,method: xxx,data,responseType: ‘blob’ // 必须要加上否则会报错})}主要是responseType: ‘blob’文章转载,用于记录,原文地址 https://blog.csdn.net/miem_yang/article/details/116709626...

2021-11-19 15:16:20 830

转载 【Nginx】将您重定向的次数过多

如果项目根路径不为空,需要多做一层映射,防止前后端来回重定向;server{ listen 80; server_name pmp.mussessein.cn; location / { root html; proxy_pass http://127.0.0.1:9000/pmp; proxy_redirect off; proxy_set_header Host $hos

2020-12-10 17:13:34 3257

原创 打印GC日志

idea打印GC日志是在命令:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggs:./gc.log

2020-11-22 19:23:42 257

原创

new出来的对象会放到堆空间的Eden区中。老年的默认站整个堆空间的三分之二大小,年轻代占三分之一。其中Eden区占年轻代的十分之八,From和To各占十分之一。当Eden区放满之后,JVM的执行引擎会触发垃圾收集的线程,会使用minor gc做垃圾收集,收集无效的对象。之后还有引用的对象会被移动到Survivo区,且对象(分代)年龄加一(对象年龄也记录在对象头中)。当Survivo区被放满后也会触发minor gc,会将From区的无效对象回收,有效对象移动到To区,对象年龄加一,之后Eden区.

2020-11-22 19:18:58 68

原创 动态链接

动态链接:动态链接中存放所有方法的JVM指令码的内存地址。public class Math { public static final Integer CONSTANT=444; public int compute(){ //一个方法会创建一块栈帧内存区域 int a=1; int b=2; int c=(a+b)*10; return c; } public static void main(Str

2020-11-22 15:12:13 104 1

原创 JVM

JVMjvm整体架构: .java文件通过javac编译成.class文件,通过JVM(从软件屏蔽不同操作系统在底层硬件指令上的区别)编译成机器码(不同操作系统对应相应的jdk版本)。JVM分为类装载子系统,内存模型和执行引擎当用java命令执行.class文件时,JVM首先通过类装载子系统,把字节码文件装载到内存区(一般装载到方法区),之后执行引擎执行内存区域的字节码文件。栈(又叫线程栈)栈是一种数据结构,FILO,先进后出存放局部变量,是每个线程独享栈帧:在执行main方法时,会在当前栈

2020-11-19 18:25:37 53

原创 OxyPlot获取折线图选择区域的点的集合

关于OxyPlot的文档网上真的不全,官方文档也不祥不尽,所以没有办法就只有自己写了,不多说,直接上代码,拿来就可以直接用使用OxyPlot控件,控件名plotView1 private DateTimeAxis _dateAxis;//X轴 private LinearAxis _valueAxis;//Y轴 private PlotModel _myPlotModel; private Random rand = new Random();//用来生成随机数 private

2020-09-12 22:08:32 1192

原创 学习c#之委托

class Program{//定义委托delegate bool Function(int num); //定义委托逻辑 static Function GreaterThan10 = delegate(int n){ return n >= 10; }; //使用委托的方法 static List<int> Traverse(List<int> nums,Function function ) { va

2020-08-23 20:42:31 83

原创 计算机系统概论

计算器语言的发展,机器语言,向上发展汇编语言,高级语言,向下发展微指令系统。机器语言执行过程:将机器语言的指令从存储器中取出,将这条指令的地址传送给存储器,告诉存储器进行读取,然后指令取出来后送给控制器进行译码,译码的结果在进行控制操作数(操作之间有些操作可以同时指向,有些操作有时序性)微指令系统:把一条机器语言指令进行细化,在每一个时间点上执行的操作放在一条微指令当中,执行之间有不同先后顺序...

2020-01-14 11:54:50 69

原创 线性表1

线性表:具有线一样的性质线性表(list)由零个或多个数据元素组成的有限序列1)可以是零个,零个就是空表2)他是一个序列,数据元素之间有先来后到3)若元素存在多个,第一个元素无前驱,最后一个元素无后继,其他元素有且仅有一个前驱和一个后继4)线性表是有限的数据类型:数据类型是指一组性质相同的值的集合及定义在此集合上一些操作的总称抽象数据类型(ADT):是指一个数字模型及定义在该模...

2019-12-16 00:30:49 66

原创 java之获得当天的年份,月份,零时零分零秒

/*** 获得当天零时零分零秒* @return*/private Date initDateByDay(){Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.set(Calendar.HOUR, 0);calendar.set(Calendar.MINUTE, 0);...

2019-11-26 19:51:55 228

转载 npm install时报错gyp ERR! stack Error: Can't find Python executable "2.7",不安装Python的解决方法

具体报错信息如下gyp verb ensuring that file exists: C:\Python27\python.exegyp ERR! configure errorgyp ERR! stack Error: Can’t find Python executable “python2.7”, you can set the PYTHON env variable.gyp ER...

2019-11-18 22:43:16 4033

原创 前后端交互之promise

前后端交互模式1.url地址格式传统的url:格式: sehema://host:port/path?query#fragment1)schema:协议,如http,https,ftp等2)host:域名或ip地址3)port:端口号4)path:路径,定位资源5)query:查询参数6)fragment:锚点(哈希Hash),用于定位页面的某个位置restful风格的url...

2019-11-15 20:54:43 593

原创 学习vue的第五天

做了一个购物车案例代码如下: 购物车 <div id="app"> <div class="container"> <my-cat :list='list'></my-cat> </div> </div>总结: 父子组件间的通信不适用于爷孙之间,可以用注册组件方式通信。...

2019-11-11 00:14:10 60

原创 算法效率的度量方法

影响算法效率的情况: 1.算法采用的策略,方案 2.编译产生的代码质量 3.问题的输入规模 4.机器执行指令的速度 所以,抛开计算机硬件,软件,有关因素,一个程序的运行时间依赖于算法的好坏和问题的输入规模(输入规模是指,输入量)算法的效率高一般是指算法的执行时间,其判断算法的效率方法有:(研究算法的复杂度,侧重是研究算法随着输入规模扩大,增长量的一个抽象,分析一个算法运行时间,重要的...

2019-11-10 01:10:18 709

空空如也

空空如也

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

TA关注的人

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