自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Forever_and_ever的博客

学而不思则罔,思而不学则殆

  • 博客(21)
  • 收藏
  • 关注

原创 HashMap 源码分析

final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; if ((tab = table) == null || (n = tab.length) == 0) //table数组为空,需要调用r...

2021-05-24 15:15:04 276 6

原创 RabbitMQ消息可靠性投递及分布式事务最终一致性实现

RabbitMQ消息可靠性投递就是保证消息生产者能够将消息百分百投递到RabbitMQ服务器,并在传递过程中不丢失。然而在生产环境中由于网络中断、网络不稳定等原因导致消息在投递过程中丢失,这或许会造成极大的损失。消息投递过程:处理任务A成功但由于网络原因消息在投递过程中丢在,会造成我们系统的不一致,以转账为例A银行某用户向B银行某用户转账,A系统用户扣款成功,发送消息给B系统给用户账号...

2019-08-01 22:18:49 2012 1

原创 GenericServlet中的设计模式

public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { private transient ServletConfig config; 略。。。 public void init(ServletConfig config) throws ServletException { this.config = config; .

2022-01-24 18:19:01 238

原创 ArrayList源码分析

ArrayList 类结构如下ArrayList继承AbstractList,实现了list,RandomAccess,Cloneable,Serializable,支持随机访问、克隆和序列化。RandomAccess是一个标记接口,表示支持随机访问,ArrayList底层是用数组实现了,数组可以通过index随机访问元素。Jdk中Collections类有binarySearch方法,查询List集合中某个元素的索引值。如果集合实现了RandomAccess接口,就支持采用二分查找,否则使..

2021-05-24 17:59:13 171

原创 ReentrantLock源码分析

ReentrantLock是Concurrent包提供的一种可重入锁。可重入锁是指当一个线程获取锁进入互斥区后可以再次拿到该锁,而不需要释放之前获取的锁。通常锁都需要设计成可重入的,否则很容易发生死锁。ReentrantLock 是基于AQS来实现的,AQS也叫抽象同步队列器,是Concurrent包提供的一种实现同步队列的框架。AQS类结构如下:AbstractOwnableSynchronizer 是一个抽象类,只有一个成员变量exclusiveOwnerThread,表示持有锁的对象.

2021-05-07 15:48:51 105 1

原创 Redis 持久化

Redis 持久化分为AOF持久化和RDF持久化AOF 全称 Append Only File,这种方式会将服务器执行的所有写操作命令单独保存在日志文件中。在服务器启动时,通过加载并执行日志文件中的命令来恢复数据。这个日志文件就叫做AOF文件。在默认情况下,AOF持久化并没有被开启,需要配置redis.conf文件中的appendonly.aof yes 来开启。AOF持久化实现当开启AOF持久化后,服务器每执行一条命令,这条命令都会被追加到缓冲区aof_buf。Redis 服务器进程是..

2021-05-06 09:20:14 111

原创 java.io.BufferedInputStream 源码分析

BufferedInputStream 是带有缓存区的输入字节流,使用byte[ ] 数组来进行缓存。当需要从外界读入数据到内存中时,先一次性读取多个字节的数据存放到byte[ ] 数组当中。之后对数据的存取都是操作byte[ ] 数组这个缓存区,从而提高了性能。BufferedInputStream类结构如下所示:在java的io模块中经常看到装饰器模式的身影,FilterInputStream 利用装饰器模式将InputStream 封装成类的成员变量class FilterInpu.

2021-04-02 10:11:07 280

原创 UncaughtExceptionHandler 获取线程运行时异常

我们知道线程执行体的方法接口定义为:public void run(),因此线程在执行单元中是不允许抛出checked异常的,且线程之间是相对独立的,他们运行在自己的上下文当中,派生它的线程无法直接感知到它在运行时出现的异常信息。为了解决这个问题,java提供了UncaughtExceptionHandler接口,当线程在运行时发生异常时,会回调这个接口,从而得知哪个线程在运行时出错。Unca...

2020-04-14 16:26:01 704

原创 JPA 多表动态查询

示例一:@PersistenceContextEntityManager entityManager; public List<Map<String, Object>> getStudentInfo(String idOrName,Integer province,Integer city,Integer area) { StringBui...

2020-03-01 16:55:27 373

原创 解决layui数据表格显示图片不完整

<table class="layui-table" id="activityTable" lay-data="{height:315, url:'activity/list',response:{statusName:'status',statusCode:'1',msgName:'msg'},done:function(res,curr,count){$('.layui-table-c...

2020-01-20 15:48:24 1912

原创 layui iframe子页面重载父级页面数据表格

场景:数据表格页面(页面1),点击添加数据按钮,弹出子页面form表单(页面2),提交数据成功后,(页面2)再弹出confirm弹出层,关闭弹出层以及页面2并重载页面1的数据表格form.on("submit(studentAdd)",function (data) { var formData = data.field $.ajax({ url:"/a...

2020-01-20 15:41:44 2196

原创 layui 数据表格templet属性调用js方法

2020-01-20 15:31:13 3625 2

原创 layui 父页面传递数据给iframe子页面

table.on("tool(demoTable)",function (obj) { var data = obj.data; if (obj.event=="edit"){ layer.open({ type: 2, area: ['380px', '400px'], fix: false...

2020-01-20 15:26:31 3540 2

原创 桥接模式,NAT模式,仅主机模式区别

1、桥接模式 在桥接模式下,虚拟机与主机之间是同等地位的,就相当于在同一个局域网下添加了一台独立的主机,虚拟机和主机ip地址需要在同一个网段,并且虚拟机要占据局域网中的一个ip地址。此时,不管是虚拟机和虚拟机之间还是虚拟机和其他真实主机之间,只要处于同一个网段,他们之间都可以进行相互通信。2、NAT模式 在桥接模式下,虚拟机可以通过宿主机访问网络,无需进行额外配置...

2019-11-25 18:38:32 1985

原创 事务处理

一、基本概念事务是由一组sql语句构成的,它由一个用户输入,并以修改成持久的或者回滚到原来状态而终结。简单来说就是由一个或多个sql语句组成一个事务,在这个事务中,sql语句要么全部执行成功,要么全部失败,并回滚到原来的状态。二、ACID原则事务必须遵从原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)原则。...

2019-06-14 17:35:31 460

原创 spring中bean的生命周期

在spring 框架中 Spring Ioc容器对bean进行管理,负责bean的整个生命周期。具体的过程如下图所示:参考文献:https://www.cnblogs.com/kenshinobiy/p/4652008.html1、实例化bean2、属性注入3、BeanNameAware的setBeanName(String beanName)实现了BeanNameAwar...

2019-05-30 11:56:34 208

转载 spring boot 在普通类中获取HttpServletRequest对象

import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;HttpServl...

2019-01-04 10:58:52 10892 3

原创 left join 和 right join的区别

这里拿学生表和班级表举例:学生表:班级表SELECT * FROM `student`s LEFT JOIN `class` c on s.id = c.uid通常以join关键字来区别左右SELECT * FROM `student`s LEFT JOIN `class` c on s.id = c.uidstudent 表就是左表,class就是右表,左连接...

2018-11-08 14:31:09 3931

原创 spring boot整合UEditor,不改源码,真实有效

UEditor以前在php项目中使用过,是一款非常强大的富文本编辑器,内部实现了各种上传功能,我们甚至不用写任何代码,只需要在所需的项目中正确引入ueditor即可。最近在学习java spring boot框架,项目中也选择这款编辑器。但是配置却出现了很多问题,是我没有想到的。因为用thinkphp5来引用时基本不需要任何配置,引入几个js文件就行了。然而在spring boot 中却没有那...

2018-10-23 17:50:23 5774 64

原创 thinkphp5微信公众号支付

 实习期间,参与了微信公众号开发,接触到了微信公众号支付,在开发过程中踩了不少的坑,好在顺利完成了任务,在这里,我觉得有必要和大家分享一下,也便于自己以后参考。一、场景介绍用户通过微信公众号打开网页, 进入到如下界面,选择或输入相应金额为网站中用户账号充值。二、开发步骤这里就不再介绍商户如何接入微信支付,官方文档中已经有了详细介绍,具体请参考微信公众号支付官方文档。直接上业...

2018-07-17 16:34:42 5018 3

原创 thinkphp5留言板

一、项目目的      为了提高新手对mvc模式的认识、加深thinkphp5知识的掌握程度,本文通过留言板示例进行展示。二、项目需求   用户注册、登录   发表留言   删除本人留言   查看留言三、数据表设计       分析项目需求,一个用户可以有多条留言,发现需要用户表和留言表两张表即可,需求中包含了用户注册、登录,所以用户表需要有账号、密码字段。发表留言...

2018-03-14 18:38:11 7110 6

空空如也

空空如也

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

TA关注的人

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