自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(234)
  • 资源 (2)
  • 收藏
  • 关注

原创 部署时的sql版本维护

优势:不会出现数据库先行;两步执行,在客户环境执行对比,缺失哪些字段,获取到字段后,在公司环境获取脚本(需要知道字段类型长度啥的)其实,已经找到了一个解决方案,就是测试环境进行部署时,也验证执行脚本,执行失败即提bug,但是因为种种原因(开发、测试共用数据库,开发直接在数据库执行sql,测试未经培训,sql由开发自己执行),很难实现。以上三种办法,我都用过,不过第二种基本因为要维护每个数据库版本,不用了,如果可以直接连接客户数据库,基本都是使用方法一,如果需要使用向日葵跳转,使用方法三。

2024-03-12 18:41:39 451 1

原创 分支需求管理方式

我们来回顾一下,现在,你的小组负责的系统,有主干分支,每次新的需求,你都从主干(formal)拉取分支(dev-日期-需求名)进行修改,自测通过后,合并至测试分支(test)进行提测,测试通过后,再合并至正式分支等待发布,每次发布时,拉取最新部署分支(formal-2.x-0)进行部署,如果需要在已部署分支进行修改,将此需求合并至对应分支,再修改版本进行发布。最后,进行更新时,又出现一个问题,版本跨度太大,好多表都有调整,测试进行回归测试时,各种因为表结构问题导致的报错,如何修改。

2024-03-11 18:35:16 896

原创 还不完的分期

最近逛知乎,总能刷到以贷养贷最后贷不下去的回答,又气又可怜,所以编了下面的例子,希望能警示下不了解消费贷的人文中使用的年化15%的数据,来自京东白条分期购买手机计算所得(即文中第一次的例子),信用卡延期一般也是12%值18%的年化利率,故文中所有利率按15%计算(月息1.25%)为了不引起性别歧视,文中出现“他”仅指代为人,没有男性含义2018年6月,你顺利毕业,且找到省城一份月薪5000的工作,你很兴奋,带着行李就去了,房子找了个房租1000的,押一付三,买了买必要东西,发现身上的钱正好能花到8月初

2024-03-08 15:13:24 848

原创 代码分支管理方式讨论

奋战两个工作日,你们小团队六个需求均开发完成,合并至test分支,测试经过测试,4个需求验证通过,2个还有瑕疵,为了给客户交代(体现出重视),决定将4个需求上线,将验证通过的四个分支“dev-20240307-需求名称”合并至formal-1.0,版本修改为formal-1.1,发布至预发环境(客户提供预发和正式两套环境),测试在客户预发环境进行回归测试,如有问题,立马解决,奋战到晚上12点,终于讲4个需求上线。客户需要部署哪个分支呢?测试通过后,拉取formal分支,版本定位2.0,发布至两家客户现场。

2024-03-07 20:36:03 1024

原创 记忆深刻的异常解决合集

工作中的异常

2023-07-10 09:54:48 430

原创 从海明校验码深入了解

1、选出哪些试药的小白鼠,2的k次方位,二进制表示就是 1、10、100、1000...2、其他非校验位位置,根据自己的位置编号,明确自己要参与到哪些位置的计算,如位置位10101的,要参与10000、00100、00001的计算3、校验位根据需要校验的数字,进行奇偶校验,得到数值

2023-04-14 16:25:59 678

原创 使用程序协助计算24点

1、从数组中任意取两个数,进行加减乘除,再放进数组(数组长度会减一)2、如果数量为1,判断该数值是否为24,是说明计算成功3、继续走1

2023-04-07 17:11:01 218

原创 FactoryBean和BeanFactory的区别

实际是也是先找的"factoryBean"再找的Guser(factory.getObject)比如AbstractBeanFactory就是实现BeanFactory的。的本质是Factory,是SpringIOC的实现原理。

2023-03-30 20:29:41 118

原创 Spring的AOP与mybatis的插件与拦截器到动态代理

基本上基于动态代理实现,也就是在InvocationHandler的invoke方法做增强,spring的AOP(JDK模式)是如此,mybatis的拦截器和插件也是如此。2、JdkDynamicAopProxy的invoke就是InvocationHandler的invoke方法的增强。2019年时候,我就学习了动态代理,不过当时只是依葫芦画瓢实现了而已,对于这个怎么用,还是不够明白。1、Spring在生成bean时候,如果加了注解并且有切面使用的,会生成代理对象而不是原生对象。我先再次实现下动态代理。

2023-03-29 18:20:34 455

原创 分布式事务解决方案

Confirm 阶段:主要是对业务系统做确认提交,Try阶段执行成功并开始执行 Confirm阶段时,默认 Confirm阶段是不会出错的。都是正向还好,如果AB两个线程,A拿锁后,B也要拿锁,此时A异常要回滚,也会等待,直到B超时。Cancel 阶段:主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。2、如果commit过程中,通信失败,会导致部分commit,数据不统一。2、preCommit后,如果超时,默认认为commit。TCC和PC的不同之处是,不会锁表,数据库事务是分开的。

2023-03-29 16:29:19 218

原创 数据库主从复制

1.从库生成两个线程,一个 I/O 线程,一个 SQL 线程2.当从库连接主库时,主库会生成一个 二进制转储(binlog dump) 线程,用来给从库 I/O 线程传 binlog3.I/O 线程去请求主库的 binlog,并将得到的 binlog 日志写到 relay log(中继日志) 文件中。(在读取 binlog 的内容的操作中,会对主库的 binlog 加锁,当binlog读取完成并发送给从库后解锁。

2023-03-28 21:26:40 214

原创 从redis到epoll到mmap

redis为什么这么快?比较容易答出的答案1)纯粹的内存操作2)单线程操作,不用考虑线程切换其他优势3)I/O 多路复用,使用epoll4)Reactor 设计模式

2023-03-26 23:36:57 430

原创 MVCC机制

RR下MVCC可以解决不可重复读,无法解决幻读

2023-03-26 21:39:47 266

原创 从深分页查询到覆盖索引

id是聚簇索引,如果遍历ID索引的结果就是,会遍历所有数据,所以使用idx_modify_time索引的**覆盖索引**机制,而i**dx_modify_time的顺序和id不一致**,所以出现查询到的结果不一

2023-03-08 13:28:08 429

原创 Spring三级缓存核心思想

Spring三级缓存核心思想

2023-03-05 14:51:57 428

原创 从测试鸡蛋硬度到跳表的设计

从测试鸡蛋硬度到跳表的设计

2023-03-03 17:57:47 618

原创 设计跳表(动态设置节点高度)

1、跳表的设计,类似二分查找,但是不是二分查找,比较像之前遇到的一个面试题,使用有限个数鸡蛋,确定鸡蛋易损程度2、跳表无法再设计的时候,就达到完美状态,而是在操作过程中一直维护完美状态

2023-03-03 17:15:00 610

原创 TransactionalEventListener注解学习

TransactionalEventListener注解学习

2023-02-22 19:53:55 240

原创 AQS(AbstractQueuedSynchronizer)类核心思想

AQS

2023-02-20 19:50:21 98

原创 LockSupport类核心思想

LockSupport核心思想

2023-02-20 19:00:25 88

原创 unsafe类核心思想

unsafe类核销思想

2023-02-20 18:48:28 68

原创 线程学习笔记

线程状态

2023-02-18 17:27:30 75

原创 ThreadLocal内存泄漏问题分析

深入理解ThreadLocal内存泄漏

2023-02-17 00:08:01 277

原创 循环依赖问题学习笔记

解决循环依赖

2023-01-31 11:05:59 283

原创 dubbo异常拦截方案及自定义

package org.apache.dubbo.rpc.filter;import java.lang.reflect.Method;import org.apache.dubbo.common.extension.Activate;import org.apache.dubbo.common.logger.Logger;import org.apache.dubbo.common.logger.LoggerFactory;import org.apache.dubbo.common.util

2022-04-28 15:55:15 705

原创 分库案例及ID生成规则

我这里只实现了静态分库,就是一开始就决定确定好有哪些数据库,和有哪些表要分库1.配置文件需要移除原本的数据库配置加上shardingsphereshardingsphere: datasource: names: ds0,ds1 ds0: name: ds0 type: ${spring.datasource.type} driverClassName: ${spring.datasource.driver-class-name}

2022-04-28 15:52:27 1159

原创 Paxos算法的自我理解(《从Paxos到zookeeper》第二章)

Proposer:提议者Acceptor:批准者,数量为奇数,方便选出多数派请求先到Proposer,再通过Proposer到Acceptor简述:使用多数派方式,只要多数达成一致就行,这样可以保证在部分节点断开依然可以运行acceptor通过不接受旧编号的方式,来确保每次通过prepare的都是最新编号数据proposer通过prepare获取最新的v,来保证不会将已有决议推翻

2021-10-26 09:40:18 119

原创 事务因Propagation.REQUIRES_NEW导致的bug分析

开发时候,遇到一个奇葩问题,单独部署(3情况)不会出现bug,而合并打包(4情况)时候,反而出现异常具体该不该加事务,该加怎样的事务,都要具体问题具体考虑,不能因为需要实现一个功能,导致其他的bug

2021-09-24 17:00:28 1686

原创 布隆过滤器的自我理解

布隆过滤器的作用?布隆过滤器如何解决缓存穿透?布隆过滤器的实现原理?布隆过滤器是否会存在误判?布隆过滤器是否可以删除key?如何解决布隆过滤器因为删除导致的数据问题?

2021-09-18 13:41:01 146

原创 HashMap理解与自定义面试题

这里的问题,回答都是jdk1.8之后的,1.8之前的参考意义不大。这里的问题及回答都是自己的理解,如有不同意见欢迎讨论。简单的说明下HashMap的数据结构?HashMap由数组+链表(红黑树)组成。链表什么时候会转成红黑树?链表长度达到8,且数组长度达到64.链表长度大于8时一定会转成红黑树吗?数组长度要达到64;为什么要求数组长度达到64?保持平衡,使用红黑树也比直接hash定位到性能低.为什么使用红黑树而不是普通二叉树?普通二叉树有退化成链表的可能性,不够平衡。为什么不使用完全

2021-09-13 15:35:08 98

原创 蓝眼睛和红眼睛-信息熵

题目:有个与世隔绝的岛屿,岛上住着1000个岛民,其中900人是红眼睛,100人是蓝眼睛。岛上有个神秘的宗教,宗教要求大家都不能谈论眼睛的颜色,每个人也没有什么办法可以知道自己眼睛的颜色,但是,如果一个人知道自己的颜色,第二天的早上,他就要去自杀。现在岛上来了外来人,为了欢迎他,岛上进行了篝火晚会,在晚会上,他说了一句,哎呦,岛上居然有蓝眼睛的人(意思是岛上的岛民都听到了这句话)。请问,岛上会发生什么事情?答:100天后的早上所有的蓝眼睛的人自杀,101天后的早上,所有的红眼睛的人自杀解释1)我

2021-06-07 10:46:47 912

原创 泛型使用时遇到的bug

首先说,这次的bug理解起来很简单,就是泛型被使用时,泛型的类一定要被引用。前提说明:我建了一个保存预下单数据的接口,然后提供一个查询接口我就想,每次查出来就是json,那每次都要代码里解析,太重复,为什么不做成泛型,查询时候把类型传入,我直接返回把类对象返回回来不是很好代码大致如下:public <T> DTO<T> getPreTradeByBillNo(****, Class<T> cla) { String tradeJson = ****;

2021-03-17 14:04:09 258 1

原创 leetcode331. 验证二叉树的前序序列化

序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写

2021-03-12 13:50:46 172

原创 缓存和数据库一致性问题解决方案

缓存是减轻数据库压力的一种解决办法,不过要做到缓存和数据库数据一致性。给缓存设置过期时间,是保证数据最终一致性的办法,我们也要尽量保证使用时候的一致性。一般不使用先更新缓存再更新数据库的方式,如果缓存更新成功而数据库更新失败,那肯定不行那基本就还剩如下三种1)先更新数据库,再更新缓存2)先删除缓存,再更新数据库3)先更新数据库,再删除缓存依次分析方法一:先更新数据库,再更新缓存这种方法其实还有很多项目在这么用,不过是最糟糕的选项。1、A更新数据库数据为a2、B更新数据库数据为b3、B

2021-03-02 18:30:19 307 1

原创 leetcode1776. 车队 II

在一条单车道上有 n 辆车,它们朝着同样的方向行驶。给你一个长度为 n 的数组 cars ,其中 cars[i] = [positioni, speedi] ,它表示:positioni 是第 i 辆车和道路起点之间的距离(单位:米)。题目保证 positioni < positioni+1 。speedi 是第 i 辆车的初始速度(单位:米/秒)。简单起见,所有车子可以视为在数轴上移动的点。当两辆车占据同一个位置时,我们称它们相遇了。一旦两辆车相遇,它们会合并成一个车队,这个车队里的车有着同样

2021-03-02 13:19:49 533

原创 关于CAP原理的理解和困惑

CAP由以下三个指标组成:C(Consistency):一致性A(Availability):可用性P(Partition tolerance):分区容错一致性很好理解,就是各分区的数据要保持一致,不能我从A分区查询和从B分区查询到的数据不同可用性也好理解,就是部分分区崩溃的情况下,服务仍可以使用分区容错性的意思是,各个分区是分隔的时候,网络通信失败,整个服务还是可以用的现在困惑的一点是,分区容错性是可以保证分区通信失败的,这种情况下,怎么保证数据一致性的呢?哪位大神能够解答...

2021-02-25 10:42:25 311 2

原创 微信公众号支付调试经验

1、公众号授权获取openId1.1、由服务器提供appid1.2、使用appid获得code,第一步1.3、使用appid、appsecret、code得到openid(因为跨域问题,该接口由服务器执行)2、使用openId获取支付工单2.1、此步骤我们公司有支付中心做,大概是就是展示一个工单3、使用工单进行支付、跳转成功界面(点金计划)3.1点金计划即在商户设置支付成功后的跳转界面3.2成功配置的前提是根据要求,把txt保存到对应路径3.3跳转成功界面,会携带商户订单号等信息,可以使用

2021-02-24 19:12:05 702

原创 ThreadLocal的自我测试用例

以下是test的内容,想要每个线程一秒钟后拿到的num和之前放进去的一致,显然使用静态的int熟悉不可以public class TestMain { public static void main(String[] args) throws InterruptedException { Thread[] threads = new Thread[10]; for (int i = 0; i < 10; i++) { threads[i

2021-01-14 15:44:26 174

原创 关于mapper和pagehelper的使用发现

先看下mapper中如何使用分页操作的protected <E> DataGrid<E> selectPage(String id, Params params, Page page) { PageHelper.startPage(page.getPage(), page.getLimit()); if (page.getSort() != null && !"".equals(page.getSort())) {

2021-01-14 15:09:41 682

原创 单例模式如何确保线程安全

懒汉模式为什么是线程安全的?这个大家基本都能看懂,加了锁了嘛!饿汉模式为什么是安全的?因为静态对象是在类加载中就初始化了。那为什么类加载过程是线程安全的呢?之前没有考虑过,现在知道了,因为loadClass对象加了锁了所以说饿汉模式是不加锁的,是不准确的有答案说,使用ThreadLocal可以做到不加锁就做到线程安全的单例模式,但是这样的单例得出的只能保证线程内部的单例,多线程之间的数据不是单例的当然,饿汉模式懒汉模式以及静态内部类模式就真的能做到单例?也不是,使用反射或者序列化的方式,就可以

2020-12-08 17:07:54 1654 1

快速实现导出报表jar2.0

1)报表导出代码减少 2)合计小计不用自己算 3)报表添加字段修改内容少 4)解决上一个资源的bug 5)使用参考博客https://blog.csdn.net/qq_33321609/article/details/108627566

2020-09-17

快速实现导出报表jar

在jxl的基础进行封装,做导出时的代码量大大减少,修改时再加入列的操作很简单 封装出两个公用方法,一个传入数据及导出路径,一个传入数据及HttpServletResponse; 部分奇葩的情况,要求多个报表在一个excel内进行导出,也得到了实现 该包有bug,在2.0中解决 https://download.csdn.net/download/qq_33321609/12852805

2020-09-16

空空如也

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

TA关注的人

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