![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 63
孤竹彧
一个想进步,又控制不住自己的小码农
展开
-
Paxos算法的自我理解(《从Paxos到zookeeper》第二章)
Proposer:提议者Acceptor:批准者,数量为奇数,方便选出多数派请求先到Proposer,再通过Proposer到Acceptor简述:使用多数派方式,只要多数达成一致就行,这样可以保证在部分节点断开依然可以运行acceptor通过不接受旧编号的方式,来确保每次通过prepare的都是最新编号数据proposer通过prepare获取最新的v,来保证不会将已有决议推翻原创 2021-10-26 09:40:18 · 99 阅读 · 0 评论 -
泛型使用时遇到的bug
首先说,这次的bug理解起来很简单,就是泛型被使用时,泛型的类一定要被引用。前提说明:我建了一个保存预下单数据的接口,然后提供一个查询接口我就想,每次查出来就是json,那每次都要代码里解析,太重复,为什么不做成泛型,查询时候把类型传入,我直接返回把类对象返回回来不是很好代码大致如下:public <T> DTO<T> getPreTradeByBillNo(****, Class<T> cla) { String tradeJson = ****;原创 2021-03-17 14:04:09 · 193 阅读 · 1 评论 -
微信公众号支付调试经验
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 · 677 阅读 · 0 评论 -
记录一次由Mysql不区分大小写引发的bug
简述一下:1)数据的code为:zztest;name为:测试。2)所以缓存保留的key为zztest,数据为:测试。3)查询时,以code为:zzTest进行查询,查询缓存失败,再去数据库查询,查询到一条数据,并保存到缓存中。4)此时缓存中有两条数据:{zztest,测试};{zzTest,测试}。5)后台修改zztest的数据为:上线;6)此时缓存中有两条数据:{zztest,上线...原创 2020-03-10 10:45:50 · 183 阅读 · 0 评论 -
抢红包游戏策略分析
我先开始准备写个红包游戏,是提升自己并发能力的,当时的我的红包策略是,建立数组,然后分割红包,抽红包其实只是随机抽取一个准备好的红包而已。但是看到知乎的一个回答, 给出的回答是每次的抢的动作都是重新计算金额,而不是提前准备数组。而给的代码,我开始是不相信的,代码如下(知乎复制要转载,直接贴我的代码(有优化)):public static int getVlaue(int leftNum, in...原创 2020-01-14 11:33:14 · 2259 阅读 · 2 评论 -
191227笔记(foreach循环会赋值失败)
今天遇到一个很让我奇怪的问题我建了一个List数组,然后给数组进行foreach循环,但是我后来在用到List时候,却报空指针,让我很困惑,如下: List<Character>[] strs = new List[10]; for (List<Character> str : strs) { str = new ArrayList<...原创 2019-12-27 14:46:21 · 838 阅读 · 0 评论 -
Java带资源的try语句(try-with-resources)
java7中的新概念,try后面加括号,括号内可以写是使用的资源(创造对象)。比较能代表这个功能的是下列代码public static void copy(String src, String dst) throws IOException { try (InputStream in = new FileInputStream(src); OutputStream o...原创 2019-12-27 09:48:29 · 439 阅读 · 0 评论 -
三次握手+四次挥手
原网址https://blog.csdn.net/hyg0811/article/details/102366854三次握手的目的第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端...转载 2019-10-31 18:28:31 · 71 阅读 · 0 评论 -
编码注意事项笔记191028
1、迭代entrySet() 获取Map 的key 和value少使用Map的keySet进行迭代,除非不想知道value;2、使用Collection.isEmpty() 检测空少使用size()==0的方法3、初始化集合时尽量指定其大小减少扩容次数4、使用StringBuilder 拼接字符串5、若需频繁调用Collection.contains 方法则使用SetHashSet...原创 2019-10-28 16:15:18 · 81 阅读 · 0 评论 -
leetcode552. 学生出勤记录 II(典型的最优规划)
https://leetcode-cn.com/problems/student-attendance-record-ii/给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量。 答案可能非常大,你只需返回结果mod 109 + 7的值。学生出勤记录是只包含以下三个字符的字符串:‘A’ : Absent,缺勤‘L’ : Late,迟到‘P’ : Present,到场...原创 2019-10-28 11:11:56 · 277 阅读 · 0 评论 -
leetcode1225. 报告系统状态的连续日期(sql自定义变量)
https://leetcode-cn.com/problems/report-contiguous-dates/Table: Failed±-------------±--------+| Column Name | Type |±-------------±--------+| fail_date | date |±-------------±--------+...原创 2019-10-24 18:11:33 · 726 阅读 · 0 评论 -
集合之PriorityQueue的使用
PriorityQueue实现了Queue接口,所以属于队列PriorityQueue最大的特点是,时刻保持有序(最重要的特性)构造参数中加入Comparator,可以自定义排序方式 PriorityQueue<ListNode> listNodes = new PriorityQueue<>(new Comparator<ListNode>() { ...原创 2019-10-16 11:36:29 · 870 阅读 · 0 评论 -
算法导论之第八章-计数排序
package test2018.test08;import java.util.Arrays;/** * Filename: Class9Jishupaixu.java * Description: 计数排序前提是都是整数,而且有上限 * 例如:数组[9,5,3,1,9,7,5,0,4,3,5,6,7,8,1,7,8,9,2,0] * 你统计出来0有2个,1有2个,...原创 2018-08-09 15:33:08 · 177 阅读 · 0 评论 -
算法导论之第八章-基数排序
比计数排序优秀的点还在,计数排序要建立对象,如果数字过大,会导致建的数组过长而堆溢出/** * Filename: Class9Jishupaixu.java * Description: 基数排序:和我们分类的思想很像,比如说高考成绩排序, * 我们先把400分以上归成一类,在排300-400的,排完后,排300-310分的… * 但是,基础排序是反过来,因为先排高位会导致...原创 2018-08-09 16:24:42 · 219 阅读 · 0 评论 -
算法导论之习题9.1-1
9-1.1:思路很简单,两两比较,找到最小的(n-1次),然后从输给它的lgn个数里面找到最小(lgn-1次)。总数n+lgn-1次原创 2018-08-09 17:23:32 · 728 阅读 · 0 评论 -
算法导论之第四章-习题4-6VLSI芯片测试
package test2018.test08;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random;/** * 题目概要: * 有n多个设备 * 两两测试 * 如果两个都是好的,测试结果必为好 * 一好一坏必为坏 ...原创 2018-08-06 15:13:02 · 344 阅读 · 0 评论 -
设计模式之面向对象设计原则及模式关系
这是原博主地址,之后所有的笔记都是在读了原博主文章之后写的。 (https://blog.csdn.net/LoveLion/article/details/17517213)七大原则是: 单一职责原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则单一职责原则(Single Responsibility Principle, SRP):一个类...转载 2018-08-10 17:01:08 · 537 阅读 · 0 评论 -
设计模式之简单工厂模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 1:简单工厂模式: 就是建个工厂类,然后在类里面进行判断进行选择初始化哪一个子类(或者是实现类)。 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模...转载 2018-08-14 14:17:17 · 101 阅读 · 0 评论 -
设计模式之工厂模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 和简单工厂模式的区别就是,工厂类不再是一个类,而是一个超类,然后由子类来创建对象,每个子类建一个。 感觉老没劲了,这样就相当于你需要一个子类,就要先给工厂类创建一个子类。 但是,如果这个工厂类里创建很多对象的话,好像就有些用处 工厂方法模式(Factory Me...转载 2018-08-14 14:43:18 · 78 阅读 · 0 评论 -
设计模式之抽象工厂模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 感觉和工厂模式没区别,只是产品不再是一个,那我在上一篇的理解有问题,我说:“如果这个工厂类里创建很多对象的话,好像就有些用处 ”,但是现在有多个产品不叫工厂模式,叫抽象工厂模式,所以,除了可以用配置文件加反射就能获得产品外,我也想不到什么优点。 不过抽象工厂模式还是...转载 2018-08-14 15:15:13 · 89 阅读 · 0 评论 -
设计模式之单例模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 单例模式,原本以为这是我唯一熟悉的设计模式,后来才发现,我之前做的单例都是线程不安全的。 懒汉模式占内存 饿汉模式第一次慢 IoDH模式双全 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个...转载 2018-08-14 15:58:50 · 78 阅读 · 0 评论 -
设计模式之原型模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 其实就是克隆 浅克隆,直接使用super.clone(),结果就是如果属性有非基础类型的,会出现地址一致。 深克隆,利用序列化,先写出来,然后再读。 原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对...转载 2018-08-14 16:54:42 · 120 阅读 · 0 评论 -
算法导论之第五章-引理4(如何生成随机排序)
package test2018.test08;import java.util.Arrays; import java.util.HashMap; import java.util.Map;/** * 曾经,在如何洗牌的算法时,是把第0位和random[0,53]交换,第1位和random[0,53]交换… * 一直以为这是随机排序,但是今天看了新的排序方式,对此有疑惑,所有...原创 2018-08-07 11:06:30 · 118 阅读 · 0 评论 -
算法导论之第五章-5-4-1
这道题之所以被拉出来,只是因为自己傻了 先抖个机灵,我觉得翻译者翻译的不好之处在于,7月4日是美国国庆,所有这里应该翻译成10月1日。 第一问忽略,太简单 第二问: 即排除掉所有人都不是在那天生日和只有一人在那天生日的,就是至少两个人。 所有人都不是:(1-1/365)^n; 只有一个人是:(1/365)*((1-1/365)^(n-1))*C(1、n);(就是n中选1个的可能性)...原创 2018-08-07 15:18:19 · 279 阅读 · 0 评论 -
算法导论之第六章-堆排序
package test2018.test08;import java.util.Random;/** * Filename: Class7Duipaixu.java Description: 堆排序:第一步,建堆,保证所有父节点大于子节点的值 * 第二步,取值:把根节点移到后面,然后移位 * * @author: guzhangyan * @date: 2018年8...原创 2018-08-07 20:02:13 · 163 阅读 · 0 评论 -
设计模式之建造者模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 建造者模式是唯一不需要产品建子类的创建型(当然,你要用子类表示也可以) 由建造者建子类,建造者父类只是要求必须要设置哪些产品属性,由子类去实现。 当然Director(指挥者)是可以有也可以无的,放在建造者中去实现也可以啊。 钩子方法,定义一个钩子方法,在创建对...转载 2018-08-15 10:00:31 · 102 阅读 · 0 评论 -
算法导论之第二章之分治法(Java实现数组排序-合并排序)
import java.util.Arrays; import java.util.Random;/** * Filename: Class3FenZhiFa.java Description: * 使用分治法排序(将数组进行二分拆解,二分拆完再二分直至不能拆,然后进行排序) * @author: guzhangyan * @date: 2018年8月3日 上午11:40:...原创 2018-08-03 13:37:25 · 642 阅读 · 0 评论 -
设计模式之适配者模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213) 适配者模式已经不属于创建型模式,而是结构型模式 在我感觉,适配者模式就是创建一个类,然后挑选方法 比如:a方法我想用A类的,b方法我想用C类的…如果没有模式,每次使用都要建好多类,很麻烦,适配者的作用就是直接使用一个类来把这些操作整合在一起,你只有使用适配者类就行...转载 2018-08-15 10:54:53 · 164 阅读 · 0 评论 -
算法导论之第七章-快速排序
一亿条排序,执行时间为13.664s 缺点,如果排序之前是有序的,会很慢。 相当于T(n) = T(n-1) + n;复杂度为o(n*n) package test2018.test08;import java.util.Arrays; import java.util.Random;/** * Filename: Class8.java Description: Compan...原创 2018-08-08 13:35:43 · 207 阅读 · 0 评论 -
设计模式之组合模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213)其实到现在没有理解这模式有什么特别,不就是用抽象类吗?不过还是用了代码来实现组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式...原创 2019-01-27 17:42:48 · 93 阅读 · 0 评论 -
设计模式之装饰模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213)装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。装饰接口package test2019.mon01.装饰者模式;/** * Filename:...转载 2019-01-28 11:30:35 · 76 阅读 · 0 评论 -
设计模式之外观模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213)外观者模式,就是把简单任务拆分,各司其职,所以就没有写例子。外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。不过通过这事,我把我之前写的加密进行整改,不是真的外观者模式。加密类package tes...转载 2019-01-28 16:32:26 · 85 阅读 · 0 评论 -
设计模式之桥接模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213)桥接模式:就是把两个功能单独开来,比如节目要在电视台播出,选中电视台才能选节目,如果按原来,要准备n*m个方法,但是现在只有准备n个电视台和m个节目就行,具体怎么播出自由搭配。桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化...转载 2019-01-23 11:20:52 · 122 阅读 · 0 评论 -
设计模式之代理模式(python实现)
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213)代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。Proxy Pattern: Provide a surrogate or placeholder for another object to control access to it.代理...转载 2019-02-21 13:57:00 · 338 阅读 · 0 评论 -
群聊系统
客户端输入(name:自己的名字)后,正式加入聊天服务器代码package test2019.mon02.聊天系统;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net...转载 2019-02-15 16:06:31 · 381 阅读 · 0 评论 -
索引-使用索引的原则
1、where查询条件后的加索引2、数据的基数大效果好,比如性别基数就2个,加了用处也不大3、尽量使用短索引,如果前10位就能进行删选,就不要删选20位,浪费IO4、注意最左前缀(多列索引时候,由左到右索引)5、不要过度索引,毕竟修改和插入的时间,费时间...原创 2019-02-15 16:42:27 · 980 阅读 · 0 评论 -
索引-HASH索引和BTREE索引
HASH索引,顾名思义,是把数据按照hash值进行排序,所以会出现数据明明相近的两条数据确插入很远。所以在以下的查询中会不起效果:1、>=、<=、between、like 等时;2、order by操作而BTREE索引是建树,7778距离7776必定比7779距离7776更近。所以在使用>、<、>=、<=、BETWEEN、!=或者<>,或者 ...原创 2019-02-15 16:50:36 · 240 阅读 · 0 评论 -
设计模式之策略者模式
原博主地址:(https://blog.csdn.net/LoveLion/article/details/17517213)策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。票类package test2019.mon02.策略模式...转载 2019-02-21 17:57:29 · 84 阅读 · 0 评论 -
算法导论之第十三章-红黑树
算法导论相关的博客类似自己的笔记,如果想学习,最好还是看看别人的吧。红黑树,就是二叉树上有红色节点和黑色节点。需要满足以下几个要求:1、每个节点要么是红的,要么是黑的。2、根节点是黑色的。3、每个叶子节点都是null节点,黑色的。4、从根节点往下走,到任一叶子节点,经历的黑色数要一致。5、红节点的子节点必须要是黑色的。满足以上几个要求之后,就保证这个二叉树不会过长,因为4、5的要求,...原创 2019-01-30 14:20:41 · 147 阅读 · 0 评论 -
多线程编程第一章多线程技能
使用方式:继承Thread(本质是实现了Runnable,再加几个方法)或者实现Runnable(执行时,还得套Thread的壳)几个方法:1、isAlive2、sleep3、currentThread4、getId5、suspend暂停线程、resume恢复线程 6、yield当前线程放弃CPU资源,当前线程继续排队,因为随机,所以也有可能刚放弃又重新占有7、setPriorit...原创 2019-02-22 09:54:27 · 114 阅读 · 0 评论