- 博客(105)
- 收藏
- 关注
原创 webpack学习笔记
这是我们常见的一个页面,上面是第三方的类库,下面是我们项目的业务代码,绝大多数情况下,我们的业务代码是需要依赖第三方类库的 ,根据js在浏览器上的加载特性,所有的js代码是从上至下来加载的,因此如果我们的业务代码依赖到了上面的第三方类库,那么顺序一定不能颠倒,如果颠倒成下面这样,肯定就会报错,这样就会给我们编码造成很大的心智负担。这种方法看似既解决了作用域问题,又可以对外暴露我们想暴露的变量,但是还有其他的问题,比如说,把所有的代码合在一起,就算修改一行代码,也得把整个文件重新编译加载。
2025-02-09 16:10:33
333
转载 Java 个版本解决控制台中文乱码
我在网上找了好久,终于找到一个靠谱的解决办法,在Run->Edit Configurations里,增加VM Options: -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8,再次运行,问题解决。到了JDK18,默认字符编码指定为UTF-8。到了JDK19,新增了stdout.encoding和stderr.encoding两个属性,专门用来指定System.out和System.err的字符编码,如果不指定,还是按操作系统的来。
2025-01-25 14:31:55
23
原创 图片验证码如何显示在 Apifox 的响应控制台中
当接口返回的响应数据结构非常复杂,充斥着嵌套的对象和数组,其中还可能包含着图片的 URL 时,如果要查找特定信息,你需要不断上下滚动 JSON 响应,试图找到所需的字段。第二步,添加 HTML 模板。第一步,获取接口数据(图片路径),并通过 btoa() 方法将其转化为 Base64 编码:。第三步,应用 pm.visualizer.set() 函数,将模板和数据传入其中:。第三步,应用 pm.visualizer.set() 函数,将模板以及数据传入:。
2025-01-03 11:31:59
462
转载 nginx安装时,make编译可能会出现的错误问题
然后重新进入nginx-1.9.9执行[root@iZwz967a5gqt3aqi2g3pbkZ nginx-1.9.9]# ./configure --prefix=/usr/local/nginx --add-module=/root/nginx-1.9.9/headers-more-nginx-module-0.33 --with-http_stub_status_module --with-http_ssl_module注意,我这里的是这条命令,至于你们的./configure……
2024-12-27 16:03:58
113
转载 gitlab通过docker部署搭建
docker安装gitlab,创建项目时,默认项目URL访问地址显示的是容器主机地址(容器id),所以我们需要修改为一个固定可以外部访问的地址及宿主机地址,这样才可以进行pull/push代码。测试分支(test)的权限,main分支只能看,不能提交代码的,因为main分支要保持着随时能发布,不能签提交代码,要由项目负责人从测试分支(test)合并 代码到main分支。这里用的是腾讯云服务器,2核4G,因为gitlab会用比较多的内存和cpu,这个配置装了后服务器变得卡顿,解决办法。
2024-12-27 14:34:16
1022
1
转载 在CentOS 8系统上,使用NVM(Node Version Manager)安装特定版本的Node.js
通过以上步骤,你已经在CentOS 8系统上成功使用NVM安装并管理了特定版本的Node.js。这种方法不仅简化了不同项目间的版本切换,还提升了开发效率和环境的可控性。🔧✨。
2024-12-27 10:43:51
87
转载 Fastdfs 安装
Distributed file system, DFS,又叫做网络文件系统:Network File System。一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。
2024-12-27 10:21:18
27
转载 Fastdfs 安装
FastDFS 是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。:跟踪服务器,主要做调度工作,起到均衡的作用;
2024-12-27 10:17:52
25
原创 ProtoBuffer 细节记录
独一无二的数字作为key,所以在序列化的时候,不需要每个字段的名称信息,只需要写入key的信息就可以了,在生成的代码中会把key和具体的字段做映射,这样在反序列化的时候,只要读出key的信息,就可以通过映射获取到具体的字段名称,这样就可以大大减小序列化以后的数据所占存储的大小。向json和xml这样的自说明序列化方式,就把字段信息全部写入到序列化以后的数据中,导致序列化以后的数据所占的存储很大。这样做的好处是,不需要借助任何其他信息,就可以直接通过字段信息实现反序列化。一、int字段系列化。
2024-12-08 11:43:10
109
1
原创 类继承和实现的技巧
因为 B 从 C 继承到一个实现过了的方法 public void print(){} ,正好相当于对接口 A 的实现。定义一个类 B 实现接口 A,这时 B 就得实现接口 A 中的方法public void print();还有个办法就是,B 在实现接口 A 的同时再继承 C ,这样 B 就可以不用实现 A 的方法了。这里定义了一个 接口 A 定义了抽象方法 public void print();定义一个类 C 也定义一个方法 public void print(){}
2024-11-28 15:54:42
185
原创 Spring 中的 ProxyFactory 创建代理对象
AdvisorChainFactory 的默认实现类 DefaultAdvisorChainFactory。
2024-11-23 17:09:42
270
原创 Spring 中的 BeanDefinitionParserDelegate 和 NamespaceHandler
Spring在解析xml文件的时候,在遇到标签的时候,我们会使用BeanDefinitionParserDelegate对象类解析标签的内容,包括标签的多个属性,例如 id name class init-method destory-method等,还包括各种子标签 例如 接下来的几层调用中,传递的都是 this.delegate 这个BeanDefinitionParserDelegate 对象。
2024-11-15 23:05:50
309
原创 org.springframework.context.support.ApplicationListenerDetector 详细介绍
之所以判断是不是单例,是因为如果一个 ApplicationListener 是非单例作用域的内部 Bean,应用上下文无法有效地管理和广播事件给这些 Bean,因为每次请求都会创建新的实例,而这些实例不在全局范围内注册。这里的合并是指,当一个bean指定了parent的时候,需要把 parent 中定义的信息,合并到当前bean的BeanDefination中。
2024-11-14 18:00:35
737
原创 Spring 解析xml中的 BeanDefination 大概过程
【代码】Spring 解析xml中的 BeanDefination 大概过程。
2024-11-12 12:14:54
267
原创 Spring中的 bean 标签中的 factory-bean , factory-method
factory-method 和 factory-bean 配合使用,factory-bean必须是IOC容器中存在的一个bean实例 beanA,factory-method 配置 factory-bean 所指定的实例 beanA 的一个工厂方法,也就是Spring会先创建 factory-bean 所指定的这个实例 beanA,然后调用beanA的工厂方法,创建一个新的实例 beanB,然后注册到IOC 容器中。1.factory-bean 这个属性和 接口 FactoryBean 没有关系。
2024-11-10 00:32:25
721
原创 Spring 中的 BeanWrapper
BeanWrapper 允许以统一的方式访问 JavaBean 对象的属性,包括简单属性、复杂类型属性、集合和数组等。它支持通过属性路径(property path)来访问嵌套对象的属性,例如 person.address.streetName。BeanWrapper 是 Spring 框架中的一个接口,它提供了一种方式来设置和获取 JavaBean 的属性。JavaBean 是一种特殊的 Java 类,遵循特定的编码约定(例如,私有属性和公共的 getter/setter 方法),通常用于封装数据。
2024-11-08 15:12:49
523
原创 Spring 中的各种 Editor,其实都是java.beans包中PropertyEditor的实现类
3.在Spring中我们有大量的这种场景,比如我们在一个类中定义了一个URL类型的字段,但是我们在xml文件中通过Property标签配置该字段是只能配置字符串类型,所以就需要一个PropertyEditor 将我们配置的 字符串转换为 URL类型的对象。比如在SpringMvc中,我们定义的接收参数的Model中可能有各种各样类型的字段,有时候还可能定义一个数组类型的字段,但是前端传过来的参数都是字符串,所以就需要有对应的PropertyEditor将字符串转换为想要的类型的对象。
2024-11-07 00:15:18
473
原创 Spring 中的 StandardBeanExpressionResolver
StandardBeanExpressionResolver 是用来对配置文件,或者其他地方的 Spel 表达式进行计算的,我们在配置的时候,有可能配置了一个表达式,而不是配置的最终结果,这时候Spring就需要对我们配置的表达式进行计算得到结果。StandardBeanExpressionResolver 主要就是通过配置的expressionPrefix,expressionSuffix 识别出一个字符串中有哪些表达式,然后将解析出来的表达式交给SpelExpressionParser计算出结果。
2024-11-06 16:16:18
234
原创 Spring 中的 Environment
AbstractEnvironment 这个抽象类实现了Environment 和 ConfigurableEnvironment 中定义的绝大部分方法,AbstractEnvironment 实际上就是将 ConfigurablePropertyResolver 进行装饰然后对外暴露,最终关的实现是ConfigurablePropertyResolver来实现的,AbstractEnvironment主要就是提供方法,让外部能够访问ConfigurablePropertyResolver。
2024-11-05 19:29:37
796
原创 Spring 中的 PropertyResolver 用来解析字符串中包含的表达式,并且用Properties对象中的值替换掉表达式
PropertyResolver这个接口只定义了一些判断Perperties数据进行校验,获取,和解析字符串的基本方法,这里的。是我们最终想要的方法,最终的现类也主要是使用这两个方法。
2024-11-05 13:14:05
218
原创 Spring中的ConversionService,为Spring提供数据转换服务
运行结果:上面的代码我们自定义了一个Date和String的Formatter,那么DefaultFormattingConversionService在进行Date和String之间的相互转换时,就会用我们自定义的Formatter 进行格式化和解析@Test@Override@Override});
2024-11-05 12:02:34
549
原创 java 对象内存分布
由于HotSpot规定对象的大小必须是8的整数倍,而对象头刚好是8的整数倍,如果对象实例数据这部分不是的话,就需要占位符对齐填充。里存放的是对象运行时的信息,不同状态的对象里mark word 存放的信息是不同的。由此可见,对象头还是比较耗空间的。有线程ID,还有其他锁来竞争,那锁自然是要升级的(如同前面举的例子 epoch=0)类型指针存放的是该对象对应的类的指针。该部分存储了一个类定义的所有的数据类型信息,包含从父类中继承的信息。当对象的状态不是默认状态时,对象的hashcode去哪儿了?
2024-10-22 15:34:56
812
原创 Object.wait()和Condition.await() Object.notify()和Condition.signal()
Object.wait()和Condition.await() Object.notify()和Condition.signal()
2024-10-18 10:30:35
178
转载 AQS 中 PROPAGATE 这个状态的作用
新的代码对head之前和更新之后的head都进行了判断,并且对与propagate>0也时进行了或的判断,对与上面的情况主要时因为其两个判断时与的逻辑,而新的判断都是或的条件,这些判断可能会造成多余的unpark。此时t3线程调用relased,释放了一个信号量,并且此时由于此时的head的标识是signal,所以它唤醒t1线程,并且此时的state由于t3的释放1,导致了state=1。假设某一时刻t1和t2节点都没获取到信号量,并且都加入到了队列中,此时aqs的状态如下面第一张图展示的。
2024-10-17 15:31:30
84
原创 java 中的线程类Thread的子类 如果既指定 target 对象,又自己实现了run方法
【代码】java 中的线程类Thread的子类 如果既指定 target 对象,又自己实现了run方法。
2024-09-14 16:02:50
459
原创 java 多线程中 一些需要注意的知识点
而 sleep() 在任何地方都可以调用。2.如果同样在 synchronized 代码块内调用 wait() 和 sleep(),wait()会释放监视器,但是sleep()不会释放也就是如果在synchronized 代码块内调用sleep(),那么监视器会一直被当前线程占用,其他线程无法进入到synchronized 代码块。2.wait() await() sleep() 阻塞状态都可以被 Thread.interrupt()方法清除掉,并且抛出InterruptedException。
2024-09-14 11:16:00
350
jdk 6u11 AbstractQueuedSynchronizer.class
2024-10-16
jdk 6u11 AbstractQueuedSynchronizer.Node.class
2024-10-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人