- 博客(174)
- 收藏
- 关注
原创 数组和链表
插入排序动态获得中位数 public static int[] getMiddle(int[] A, int n) { // write code here int[]res=new int[A.length]; res[0]=A[0]; //插入排序, 每次取i/2的数 for (int i = 1; i...
2020-04-20 10:19:32 274
原创 数据结构基本实现
数组链表栈队列树图/** * 深度优先搜索(递归) */ private boolean checkDFS(UndirectedGraphNode a, UndirectedGraphNode b) { if (a == null || b == null) { return false; ...
2020-03-31 09:00:54 217
原创 动态规划&回溯各种变形题
叠罗汉叠罗汉是一个著名的游戏,游戏中一个人要站在另一个人的肩膀上。为了使叠成的罗汉更稳固,我们应该让上面的人比下面的人更轻一点。现在一个马戏团要表演这个节目,为了视觉效果,我们还要求下面的人的身高比上面的人高。请编写一个算法,计算最多能叠多少人,注意这里所有演员都同时出现。给定一个二维int的数组actors,每个元素有两个值,分别代表一个演员的身高和体重。同时给定演员总数n,请返回最多能........................
2019-12-15 20:36:55 686
原创 《分布式系统原理介绍》要点简记
数据备份机制问题: 机器宕机导致数据丢失问题解决:无状态节点则无需读取读取任何信息就可以立刻重新“可用”有状态节点可以 通过读取本地存储设备中的信息或通过读取其他节点数据的方式恢复内存信息有状态是指是否是保存数据的节点序列号机制问题: 消息乱序解决: 给消息排号,按照版本号进行消费校验码机制问题:数据错误 消息被抓包篡改解决: 使用一定的校验码机...
2019-08-26 08:58:26 301
原创 五大基本算法之 基础算法实现
大致套路求总共多少 - 用分治法求最大 - 用动态规划求是否存在 - 用二分(先排序)数组和字符串 - 大部分可以用双指针法哈希可以降低时间复杂度对数字的操作就是 n % 10 n/10数字判断回文,反转后和原来相等二分查找public int binarySearch(int[] a, int l,int r, int k){ while(l &l...
2019-08-01 09:13:11 556
原创 Mybatis 设计
public static SqlSessionManager newInstance(Reader reader, String environment) { //加载配置 构建对象 return new SqlSessionManager(new SqlSessionFactoryBuilder().build(reader, environment, null)); ...
2022-07-05 12:02:53 125
原创 图存储-GeaBase
解决问题主要解决复杂关系网络数据存储,支持高并发,低延迟,高可用的读写能力架构详细架构存储格式vertisces: 顶点edges: 边in-edge: 入边 out-edge:出边 数据冗余,为了增加性能micro shards:micro-sharding性能评测 | MongoDB中文社区一台机器有多大shard底层结构全量更新主要通过文件存储系统+MapReduce,提高效率。批量更新业务基于odps...
2022-05-11 11:52:42 388
原创 Hive 特殊SQL
explode()列转行 SELECT stu_name, ecourse, escorefrom student_score_2lateral view posexplode(split(course, ',')) cr as a, ecourselateral view posexplode(split(score, ',')) sc as b, escorewhere a=b;结果-- 结果为:-- 张三 语文 98-- 张三 数学
2021-05-17 14:44:15 105
原创 Java线程池
线程池任务处理机制线程池的运行机制是 先创建core线程 大于core会把任务放在等待队列 等待队列满了 会创建新线程 大于max线程数会触发拒绝常用的等待队列ArrayBlockingQueueFIFO、数组实现有界阻塞队列,一旦指定了队列的长度,则队列的大小不能被改变LinkedBlockingQueueFIFO、Node链表结构可以通过构造方法设置capacity来使得阻塞队列是有界的,也可以不设置,则为无界队列PriorityBlockingQueue无...
2021-04-13 15:13:31 105
原创 常用中间件理解
Dubbo是一个RPC调用的解决方案,我们在最开始的时候都是在一个系统中调用服务,没有远程调用,随着业务的复杂度提升,需要多系统之间进行服务调用,因此在服务的提供方和调用方之间就需要约定一个协议,进行通信,Dubbo就是这样的一个协议,他的整体架构是一个三角形,有服务提供者,注册中心,服务调用者,首先服务提供者向注册中心注册服务,然后服务调用者从注册中心获得服务提供列表,并缓存到本地,然后服务调用者直接调用服务提供者,同时Dubbo还有一个监控模块,负责监控整个服务调用的情况,比如耗时,服务调用次数等
2021-04-13 15:04:46 141
原创 统计学研究系列之鸟瞰
why之前是从工程中获得红利,现在需要从数据中获得红利what统计学是一套有关数据收集,数据处理,数据分析的方法论how数据收集 简单抽样 完全随机 分类抽样 先分类,每类中抽样,保证样本分布均匀 系统抽样 按照等比例抽样 数据处理 数据分析...
2020-09-21 09:58:23 118
原创 SOFA 探究
SOFA模块化问题:传统的module只是代码的模块化,最终变成jar 运行在jvm中,这样会导致module的服务可以随意依赖另一个模块,不利于微服务化。解决: 将每个模块中的类使用不同的上下文进行隔离,然后在模块依赖时,提供方进行jvm服务注册,调用方进行jvm服务注入,在运行时,还是在同一个jvm中调用。...
2020-08-19 15:34:25 269
原创 SpringCloud全局介绍
Spring Cloud是一系列框架的有序集合,她可以实现服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控。服务注册发现(Eureka) 相当于zookeeper,好处是服务调用方不直接依赖于服务提供方,保证服务高可用 服务降级(Hystrix) 可以保证某个服务提供方的异常不会影响整体系统的稳定。 数据监控(Zuul) Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架 相当于网关 配置中心(Archaius) 配置管理API,包含一系列配置管
2020-07-06 15:44:39 1437
原创 DDD 领域驱动设计
why目前业务规则和数据库层以及其他层交织在一起,很难保证业务规则的实现和业务设计的一致,代码不易维护what主要是把业务规则层抽取到领域层中,解决软件复杂性的问题。howDDD也会分为3层应用层 组装领域层和基础设施层完成对应的用户指令 领域层 保存领域状态(基础字段)和业务规则(对象操作方法) 基础设施层 消息处理 缓存 RPC 数据库操作 应用层@Service@Transactional(rollbackFor = Exceptio
2020-06-16 21:03:14 241
原创 kafka研究系列之事务实现
java代码Properties props = new Properties();props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("client.id", "ProducerTr
2020-06-09 11:13:32 259
原创 缓存过期清除策略之LRU算法
class LRUCache{ Node head; Node end; int limit; HashMap<String, Node> map = new HashMap<>(); public LRUCache(int limit) { this.limit = limit; } public String get(String key) { Node node = map.ge.
2020-06-06 20:36:46 516
原创 Zookeeper研究系列之二阶段提交到Paoxs协议到ZAB协议的演进
要解决的问题:分布式数据一致性(当客户端发起写入数据请求时,各个节点的数据保持一致)两阶段提交存在的问题:同步阻塞: 协调者发起命令后只能无限等待参与者响应 单点问题:协调者宕机则整个集群不可用 脑裂问题:网络分化后,导致部门节点提交成功,部分节点失败,造成数据不一致Paoxs协议存在问题:活锁问题:假如提案者1因为不能获得过半响应而将自己的编号+1,...
2020-06-05 11:33:23 638
原创 Zookeeper研究系列之经典案例 实现公平的分布式锁
思路抢锁,抢到了执行业务方法,没抢到监听前一个用户节点代码pom <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency>public class User
2020-06-04 18:36:57 232
原创 Kafka研究系列之时间轮TimerWheel
what 电商中经常会有些延时操作的业务,比如30分钟未支付则取消订单,kafka中消息到达broker后,写入延时队列,如果在超时时间内ISR列表节点没有全部同步消息,则返回客户端超时异常,因此时间轮的本质就是一个延时队列。why java中自带的延时队列DeleyQueue,底层使用优先队列PriorityQueue实现,本质是一个小顶堆,在入队时需要和父节点不断比较,如果比父节点大,则插入,如果比父节点小,则交换当前位置和父节点的位置,循环比较,直到比父节点大为止。因...
2020-06-02 15:40:32 690
原创 每日收获(4月7日- 4月10日)
4月7日计算逆序对import java.util.*;public class AntiOrder { public int count(int[] A, int n) { // write code here if (A == null || n == 0) return 0; return mergeSortRecursio...
2020-04-07 09:44:05 99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人