- 博客(26)
- 收藏
- 关注
原创 CAP之C和A互斥
C和A互斥,在分布式系统里,C代表了数据的一致性,当数据更新的时候,为了保持主从数据一致,必须有一把锁住数据。此时A的高可用性或者说快速相应性,就会得到影响。反之,若为了保持高可用性A,数据主从同步的时候也得立马相应,那么数据的一致性就可能出现问题。
2024-10-17 10:11:07
398
原创 ReentrantLock - 公平锁和非公平锁
2 使用多县城很重要的考量点是县城切换的开销,当采用非公平锁时,当一个线程请求锁获取同步状态,然后释放同步状态,所以刚释放锁的线程在此刻再次获取同步状态的概率就变得非常大,所以就减少了线程的开销。优势: 1 恢复挂起的县城到真正锁的获取有一定时间差,从CPU角度看,此时间差的存在还是比较明显。所以非公平锁更能充分利用CPU的时间片,尽量减少CPU空闲状态时间。非公平锁:new ReentrantLock(false),默认非公平锁。公平锁:new ReentrantLock(true)
2024-01-09 10:00:33
933
1
原创 线程流程演示一
演示 NEW-RUNNABLE--Running...--TERMINATED如上图,打断点,并将断点改成Thread类型。通过debug运行。流程:debug启动项目,main函数线程执行到24行先不下一步。切换到t1线程,将 t1线程执行结束后,再执行main函数的线程输入日志:[DEBUG] 2022-05-24 11:23:34,407 method:com.irving.list.TestThreadState.testRunnableTerminated(TestThre.
2022-05-24 14:14:39
181
原创 ThreadLocal
ThreadLocal的特点1. ThreadLocal 可以实现【资源对象】的线程隔离,让每个线程各用各的【资源对象】,避免引用引起的线程安全问题2.ThreadLocal 同时实现线程内资源共享(一个线程里面)ThreadLocal的特原理:(1)调用set方法,就是以 ThreadLocal 自己作为key,资源对象作为 value,放入当前线程的 ThreadLocalMap 集合中(2)调用get方法,就是以 ThreadLocal自己作为key,到当前线程中查找关联的.
2022-05-23 17:19:54
149
原创 HashMap
jdk1.7 底层用的是 数组+链表jdk1.8 底层是: 数组+(链表|红黑树),链表和红黑树的转换的阈值是 8问: 为何用红黑树,为何一上来不树化,树化阈值为何是8,何时会树化,何时会退化为链表?...
2022-05-19 14:31:42
349
原创 ArrayList
ArrayList获取对象的三种方式:public ArrayList() ---》 无参构造,长度为0public ArrayList(int initialCapacity)--》 有参构造,得到长度为 initialCapacity 的集合public ArrayList(Collection<? extends E> c) -->得到长度为 c的大小的集合ArrayList无参构造得到的对象,默认长度为0。若(add)添加数据,会有扩容机制扩容原理:
2022-05-17 18:09:44
323
原创 FactoryBean和BeanFactory
1. FactoryBean用法spring容器管理的类,起到一个工厂的作用。也是一种实例化bean的方式该接口有三个方法,下面代码都有注释。// 实现 FactoryBean 接口,该类作为生产object的工厂暴漏。调用下面的 getObject()生成对象@Configurationpublic class PersonFactoryBean implements FactoryBean<Person> { // 返回对象实例 @Override
2022-05-10 16:26:20
122
原创 springboot之自带springmvc拦截器
实现拦截器只需要两步:1 .定义类 MyHandlerInterceptor 实现HandlerInterceptor接口,实现HandlerInterceptor的方法。自定义规则2. MyWebMvcConfigurer实现WebMvcConfigure,将上面的 MyHandlerInterceptor手动add到MyWebMvcConfigurer。并将MyWebMvcConfigurer注入到spring容器中@Slf4jpublic class MyHandlerIntercep
2022-05-10 00:15:36
251
原创 BeanPostProcessor入门级别简单源码
BeanPostProcessor是接口,后置处理器,翻译成 增强器更合适定义一个实体类,实现该接口。并debug执行看执行的所有方法调用的所有方法重点方法:该处主要介绍两个方法1 populateBean(beanName, mbd, instanceWrapper); ---- 给对象属性赋值操作2 exposedObject = initializeBean(beanName, exposedObject, mbd); ---- 开始调用初始化方法3 进入exp.
2022-04-27 02:15:18
85
原创 bean的初始化和销毁
1. 配置文件配置2. @Bean注解中使用init-method属性和destroy-method属性3.JSR-250d的规范:@PostConstruct注解和@PreDestroy注解4. 实现InitializingBean接口和DisposableBean接口<bean id="user" class="com.irving.eneity.User" init-method="init" destroy-method="destroy"></bean&
2022-04-27 01:31:52
233
原创 实例化Bean
实例化bean的三种方式1. 包扫描+给组件标注注解(@Controller、@Servcie、@Repository、@Component),但这种方式比较有局限性,局限于我们自己写的类2. @Bean注解,通常用于导入第三方包中的组件3. 实现 FactoryBean接口4. @Import注解,快速向Spring容器中导入一个组件@Import三种方式1. 直接写入class数组( @Import({****.class}) ) ...
2022-04-26 15:35:58
714
原创 普通注解使用
@ComponentScan includeFilters()方法指定Spring扫描的时候按照什么规则只需要包含哪些组件 excludeFilters()方法指定Spring扫描的时候按照什么规则排除哪些组件。两个方法的返回值都是Filter[]数组,在ComponentScan注解类的内部存在Filter注解类。 规则:FilterType 是枚举类, 包含了FilterType.ANNOTATION 注解类型。 Fil...
2022-04-26 11:40:50
125
原创 @Configuration的proxyBeanMethods和@Bean的@Scope
proxyBeanMethods = false 代表关闭代理proxyBeanMethods = true 代表开启cglib代理proxyBeanMethods = true 或不写,是Full模式proxyBeanMethods = false 是lite模式一般@Configuration配置类里面,含有带有@Bean的对象。看了很多博客说proxyBeanMethods = true的时候,得到的对象是同一个。而proxyBeanMethods = false对象则非同一个。为
2022-04-13 01:37:26
454
原创 jdbc
public List<Object> findByUser(final Integer userId,final int first,final int pageSize) { String sql = " SELECT * FROM (select h.iid as hiid,h.id as hid,h.doc_type_id as qid,h.name as qname,"+...
2018-06-08 11:24:31
177
原创 图片上传,使用FastDFS
1 先判断:防火墙是否关闭命令:service iptables status结果: ---->> iptables:未运行防火墙。 关闭linux防火墙命令:-->> service iptables stop 2 查看nginx是否已启动成功 ps -ef | grep nginx检查FastDFS Tracker Server是否启动成
2018-01-28 19:51:26
292
原创 oo设计五大原则:
1 . SRP(Single Responsibility Principle 单一职责原则) 单一职责很容易理解,所谓单一职责,就是一个设计元素只做一件事2. OCP (Open Close Principle 开闭原则) 一句话:“Closed for Modification; Open for Extension”——“对变更关闭;对扩展开放”。3. LSP(Liskov
2018-01-28 14:46:29
317
原创 "==" 与equals的区别:
对于==:如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址;对于equals方法:注意:equals方法不能作用于基本数据类型的变量 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址; 诸如String、Date等类对equals方法
2018-01-28 14:45:20
150
原创 Git的命令
Git init:初始化git仓库Git add 文件名:把文件添加到暂存区Git commit –m “提交信息”:提交暂存区的内容到本地仓库Git log:查看版本库历史Gitcheckout-- 文件:还原文件(已加到暂存区:从暂存区还原。没有添加到暂存区:从最新版本库还原)Git reset head 文件名:撤销暂存区Git reset--hard 版本号:还
2018-01-16 20:50:01
159
原创 Git Please tell me who you are
问题:Can’t finish GitHub sharing process Successfully created project ‘GitHubDemo’ on GitHub, but initial commit failed: * Please tell me who you are. Run git config –global user.email “you@
2018-01-16 19:48:33
203
原创 用maven整合springmvc和spring
1, 配置web.xml2 根据web.xml配置spring容器 applicationContext.xml3 根据web.xml配置springmvc 的usermanage-servlet.xml的配置配置模板:web.xmlxml version="1.0" encoding="UTF-8"?>web-app xmlns:xsi="http://www
2018-01-16 15:07:41
1779
原创 maven jar包反向安装
com.itextpdf itext-asian 5.2.0mvn install:install-file -DgroupId=com.itextpdf -DartifactId=itext-asian -Dversion=5.2.0 -Dpackaging=jar -Dfile=itext-asian-5.2.0.jarinstall
2018-01-15 16:30:05
926
原创 Log4j
maven坐标:dependency>groupId>org.springframeworkgroupId>artifactId>spring-webmvcartifactId>dependency>dependency>groupId>org.slf4jgroupId>artifactId>slf4j-log4j12artifactId>dependency>
2018-01-12 19:15:27
185
原创 Spring的主配置文件applicationContext.xml
bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.
2018-01-07 01:27:28
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人