- 博客(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
原创 从海明校验码深入了解
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
原创 从深分页查询到覆盖索引
id是聚簇索引,如果遍历ID索引的结果就是,会遍历所有数据,所以使用idx_modify_time索引的**覆盖索引**机制,而i**dx_modify_time的顺序和id不一致**,所以出现查询到的结果不一
2023-03-08 13:28:08 429
原创 设计跳表(动态设置节点高度)
1、跳表的设计,类似二分查找,但是不是二分查找,比较像之前遇到的一个面试题,使用有限个数鸡蛋,确定鸡蛋易损程度2、跳表无法再设计的时候,就达到完美状态,而是在操作过程中一直维护完美状态
2023-03-03 17:15:00 610
原创 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
2020-09-17
快速实现导出报表jar
2020-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人