- 博客(93)
- 资源 (2)
- 收藏
- 关注
原创 微众银行一面凉经
context类有包含strategy的map,实现ApplicationListener的onApplicationEvent方法,通过自定义的ioc获取到strategy类型的实现类,并将各种实现类存到map里面,每次执行的时候,根据策略标志拿到对应的策略实现类并执行。动态代理:运行时生成代理类,基于反射,定义目标类和实现的接口,定义handler实现invocationhandler接口,然后将接口的类加载器和接口类数组、handler作为proxy的参数返回一个代理对象。
2024-03-09 16:00:55
384
原创 BST+AVL+SB
BST性质左子树<根节点、右子树>根节点用途解决排名相关的检索需求基本操作插入操作一直插入到叶子节点删除操作1、删除叶子节点:直接删除,并将其父节点的孩子节点置空2、删除度为1的节点:删除后,将孩子节点挂到父节点的父节点上3、删除度为2的节点:找到前驱或者后继替换后,转换为度为1的节点缺点查找效率依赖于节点的插入顺序AVL树二叉排序树可能会退化成链表,时间...
2020-04-22 13:28:43
190
原创 epoll的api介绍
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平...
2020-04-14 17:03:08
896
原创 使用poll实现echo服务器
#define POLLSIZE 100#define BUFFERSIZE 512char ch_char(char c) { if(c >= 'a' && c <= 'z') return c - 32; return c;}int main(int argc, char **argv){ if(argc != 2) {...
2020-04-14 16:48:02
169
原创 select实现echo服务器
#include <stdio.h>#define CLIENTSIZE 50#define BUFFERSIZE 512char ch_char(char c) { if(c >= 'a' && c <= 'z') return c - 32; return c;}int main(int argc, char *...
2020-04-14 15:45:48
279
原创 select实现socket_connect_timeout
int socket_connect_timeout(char *host, int port, long timeout){ int sockfd; struct sockaddr_in server; server.sin_family = AF_INTE; server.sin_port = htons(port); server.sin_addr.s_addr = ...
2020-04-14 15:16:02
286
原创 select、poll、epoll的区别
select、poll、epoll简介epoll跟select都能提供多路I/O复用的解决方案。在现在的Linux内核里都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现。select:select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1、 单个进程可监视的fd数量被限制,即能监听端口的...
2020-04-12 07:50:37
132
原创 select监听socket的connect编程实现
//// Created by xx on 2020/4/10.//#include "mySocketConnectTimeOut.h"int socket_connect_timeout(char *ip, int port){ int sock_fd; struct sockaddr_in server; server.sin_family = AF_I...
2020-04-10 19:21:06
492
原创 操作系统之生产者-消费者
class Resources{ private int count = 0; public synchronized void produce() { if(count < 20) { count++; System.out.println(Thread.currentThread().getName() ...
2020-04-05 09:35:36
126
原创 Shell编程基础
第一个shell脚本#!/bin/bashecho 'hello wolrd'第一行告诉程序解释器bash,第二行表示输出hello world变量与局部变量弱变量类型,不需要像C语言那样给出变量类型a=12a=helloworlda=`pwd`a=$a:a $符号表示局部变量local a=12特殊变量之位置变量$0:获取当前执行shell脚本的文件名,包括路径...
2020-03-12 21:30:52
142
原创 297
二叉树的序列化与反序列化序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以...
2020-03-01 11:52:59
185
原创 257
二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3class Solution {public: vector<string> binaryTreePat...
2020-02-29 20:29:09
190
原创 235
二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入...
2020-02-29 19:25:59
202
原创 226
翻转二叉树翻转一棵二叉树。示例:输入:输出:备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。/** * Definition for a binary tree node. * struct TreeNode { * int...
2020-02-29 18:46:45
132
原创 112
路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...
2020-02-29 18:36:34
177
原创 111
二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]返回2/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...
2020-02-29 18:24:28
130
原创 110
平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回true/** * Definition for a binary tree node. * struct TreeNode { * int val...
2020-02-29 17:07:46
118
原创 107
二叉树的层次遍历 II给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7]/**Definition for a binary tree node.struct TreeNode {int val;struct TreeNode *left;s...
2020-02-29 16:31:25
108
原创 104
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]返回它的最大深度为3./** * Definition for a binary tree node. * struct TreeNode { * int val;...
2020-02-29 16:16:53
126
原创 102
二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7]返回其层次遍历结果:C++,应该是最短的代码了。层序遍历一般来说确实是用队列实现的,但是这里很明显用递归前序遍历就能实现呀,而且复杂度O(n)。。。要点有几个:利用depth变量记录当前在第几层(从0开始),进入下层时...
2020-02-29 16:05:43
157
原创 101
对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。/** * Definition for a binary tree node. * struct TreeNode { * ...
2020-02-29 14:57:03
247
1
原创 100
相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2...
2020-02-29 14:34:22
102
原创 232
用栈实现队列使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.po...
2020-02-27 20:38:40
109
原创 225
用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或...
2020-02-27 20:00:46
160
原创 287
寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n...
2020-02-27 18:43:43
135
原创 237
删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....
2020-02-27 16:45:25
105
原创 234
回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: trueint get_length(struct ListNode *head){ int n = 0; while(head){ n++; head = head->next; } retur...
2020-02-27 16:06:50
100
原创 206
反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *n...
2020-02-27 15:23:36
149
原创 203
移除链表元素删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * struct ListNode { * int val; * ...
2020-02-27 15:06:40
100
原创 202
快乐数:编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 0...
2020-02-27 14:52:44
98
原创 142
环形链表二/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *detectCycle(struct ListNode *head) { struct ListNode *...
2020-02-25 17:03:11
157
原创 160
相交链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode...
2020-02-25 16:41:47
94
原创 141
环形链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { struct ListNode *p = head, *q = h...
2020-02-25 16:10:17
94
原创 83
删除排序链表中的重复元素/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head){ stru...
2020-02-25 15:51:03
181
1
原创 24
两两交换链表中的节点/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* swapPairs(struct ListNode* head){ struct ListNo...
2020-02-25 15:06:05
121
原创 19
链表删除倒数第N个元素/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ ...
2020-02-25 14:47:29
105
原创 森林与并查集
连通性问题:①quick-find算法:简单来说a联通b,b联通c,得到a联通c。这便是一种连通性。类似下图的颜色覆盖:时间复杂度:②quick_union算法:当前值记录着下一个联通的点习题:1.2.quick-union算法总结:时间复杂度:low(i)表示:树高为i的情况下,最少节点数。low(1)= 1;low(2)= 2;low(3)= 4;...
2020-02-22 20:15:39
202
原创 二叉排序树
二叉排序树的性质:二叉排序树的插入操作:③的左右孩子均为空,且由于此树的性质,10置为③的右孩子,结束。二叉排序树的删除:解决思路:1.直接删除2.如图:3.如图:中序遍历为:17-18-19-20-28-29-30-32LeetCode:代码实现:#include <stdlib.h>#include <stdio.h>typed...
2020-02-22 16:59:43
140
原创 哈希表
哈希表:使用哈希函数将任意类型的数据映射为整型值比如val % size这个函数,(处理冲突)如下图所示:处理冲突的四大类操作:1.开放定址法2.拉链法3.再哈希4.建立公共溢出区(存储产生冲突的值的索引)Leetcode题:代码实现:#include <stdio.h>#include <stdlib.h>#include <strin...
2020-02-22 15:38:43
104
原创 查找
二分查找二分查找的特殊情况1若arr[mid] == 1, min = mid + 1;若arr[mid] != 1, max = mid - 1;二分查找的特殊情况2三分查找
2020-02-20 20:49:12
135
blockchain_guide.rar
2020-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人