- 博客(22)
- 资源 (5)
- 收藏
- 关注
原创 2019.07 Linux IO模型总结
三种IO模型三种IO模型阻塞IO非阻塞IOIO多路复用IO多路复用——selectIO多路复用——pollIO多路复用——epoll总结三种IO模型在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO,这里主要介绍前三种。阻塞IO当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会...
2019-07-13 15:43:48 144
原创 Postgis基础用法
Postgis基础用法基础操作创建表基础操作创建表createdb chenfeidbpsql chenfeidbcreate extension postgis; -- 让此数据库支持postgis-- 创建表create table cities (id int4, city varchar(50));-- 添加列(参数1:表名;参数2:待添...
2020-01-04 11:22:54 391
原创 Ubuntu 安装和卸载Postgres12.0 + Postgis3.0
Ubuntu 安装和卸载Postgres12.0 + Postgis3.0安装卸载安装sudo add-apt-repository ppa:ubuntugis/ppasudo apt-get updatesudo apt-get install postgis (默认安装最新版)卸载切换到root用户sudo apt-get --purge remove postgresql...
2020-01-04 10:58:29 1120
原创 PG库常用操作
Postgresql基础操作 SQL基本命令基础操作安装命令创建数据库:createdb mydb删除数据库:dropdb mydb激活数据库:psql mydb帮助:\h退出:\q创建Table:插入行:条件查询:更新行:删除行:基础操作安装sudo apt-get install postgresql-9.5命令创建数据库:createdb mydb删除数据库:dropdb myd...
2020-01-03 20:49:34 1901
原创 翻转链表
翻转链表翻转链表翻转链表思想:使用三个指针pre,cur,np每次指针顺序移动后,pre结点被正确归位,while循环之后的状态见下图:class Solution {public: ListNode* reverseList(ListNode* head) { if (head == nullptr || head->next == nullptr) ...
2019-10-05 12:30:20 159
原创 顺序表、链表快排,基于快排求解topK问题
快速排序和topK问题快速排序基于链表的快排基于快排思想求解topK问题快速排序1、调用partition,找到一个基准index,使得数组左边的元素都小于基准值,数组右边的元素都大于基准值2、对左侧和右侧的数组递归调用快排#include <stdio.h>const int MAX_LEN = 10;int partition(int* list, int left...
2019-10-04 12:12:27 412
原创 堆排序和topK问题
堆排序和topK问题完全二叉树堆排序完全二叉树完全二叉树除了树的最后一层节点不需要是满的,其它的每一层从左到右都是满的。它有以下三个特点:左孩子index=父节点index * 2 + 1右孩子index=父节点index * 2 + 2最后一个非叶子节点编号为index/2堆排序#include <iostream>// 调整最大堆int adjust_hea...
2019-10-02 14:22:03 231
原创 C++11 移动语义 和 完美转发
C++11 移动语义std::move 和 完美转发std::forward1、左值和右值2、右值引用 和 移动语义(std::move)3、完美转发std::forward1、左值和右值在C++11中可以取地址(有变量名)的就是左值;不能取地址(没有变量名)的就是右值举例:int a = fun(b + c)a是左值,有变量名且可以取地址fun(b+c)是右值(将亡值)2、右值引用...
2019-09-30 16:36:07 373
原创 class struct 内存对齐
class struct 内存对齐struct内存对齐class内存对齐原则:1、每个成员相对于这个结构体变量地址的偏移量正好是该成员类型所占字节的整数倍2、struct最终占用字节数为成员类型中最大占用字节数的整数倍struct内存对齐Demo1:占用17字节,由于必须是8的整数倍,所以实际占用24字节struct Stu{ int id; // 占用0~3...
2019-09-26 22:27:21 181
原创 判断是否为镜像二叉
判断是否为镜像二叉树判断是否为镜像二叉树判断是否为镜像二叉树把树root,强行当做两颗树:root,root;判断这两棵树是否镜像条件1:这两棵树的根节点相等条件2:第1颗树的左孩子val 与 第2颗树的右孩子val相等第1颗树的右孩子val 与 第1颗树的左孩子val相等class Solution {public: bool isSymmetric(TreeNode* r...
2019-09-25 22:38:43 262
原创 二叉搜索树的最近公共祖先
二叉搜索树的最近公共祖先二叉搜索树的最近公共祖先二叉搜索树的最近公共祖先根据二茬搜索树的特性:如果两个结点val都比root结点val大,那它两都在右子树;如果两个结点val都比root结点val小,那它两都在左子树;否则root就是最近公共结点class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* r...
2019-09-22 14:43:41 238
原创 判断是否为平衡二叉树
判断是否为平衡二叉树判断是否为平衡二叉树判断是否为平衡二叉树1、根据基础的树深度函数判断两个子树的深度差值小于22、采用递归思想,对左孩子、有孩子判断是否是平衡二叉树class Solution {public: int node_depth(TreeNode* node) { if (node == NULL) { ret...
2019-09-22 14:34:54 109
原创 二叉树的层次遍历
二叉树的层次遍历二叉树的层次遍历二叉树的层次遍历采用队列先进先出的特性step1:先把根节点push进去step2.1:如果队列不为空,当前队列的size即为这一层总共的Node数,即将队列前size个node放入同一层step2.2:在2.1步骤放入新Node的过程中,如果新Node有孩子,需要将其孩子push进队列中涉及到的api:队列定义:std::queue<T>...
2019-09-22 14:31:15 210
原创 二叉树的三种遍历
二叉树的三种遍历中序遍历前序遍历后序遍历中序、前序、后序是指对根节点的访问顺序,孩子结点无论哪种遍历方式,都是先左后右!!!中序遍历左 中 右class Solution {public: int inorder(TreeNode* root) { if (root != NULL) { inorder(root-&...
2019-09-22 14:22:44 99
原创 二叉树的 最大|最小 深度
二叉树的 最大|最小 深度二叉树的最大深度二叉树的最小深度二叉树的最大深度采用递归的思想class Solution {public: int maxDepth(TreeNode* root) { if (root == NULL) { return 0; } int left_depth = ...
2019-09-22 12:18:48 193
原创 通过有序数组 构建二次平衡搜索树
有序数组构建二次平衡搜索树递归思想+二分查找递归思想+二分查找从根节点起,其val为数组二分查找中间值对左右孩子再进行同样的操作class Solution {public: TreeNode* to_bst(vector<int>& nums, int left, int right) { if (left > right) ...
2019-09-22 12:12:03 144
原创 二叉树翻转
二叉树翻转递归思想非递归思想:翻转一棵二叉树。递归思想从根节点起,一次翻转左右孩子的值,然后再对左右字数进行递归class Solution {public: TreeNode* invertTree(TreeNode* root) { if (nullptr == root || (root->right == nullptr && ro...
2019-09-22 12:08:13 202
原创 C++11新特性
C++11新特性auto关键字for循环的新用法auto关键字在C++11我们可以使用auto去声明一个变量,但是这并不意味着C++增加了一个auto类型(一个可以表示任意类型的类型)。因为C++语言强类型特性是不会变的,变的只是编译器,它变的更加高级(推导出确定的类型)。std::vector<int> vec_int;// 旧的C++语法std::vector<in...
2019-09-07 22:38:38 167 1
原创 2019.07 大规模并发请求处理及C10k问题
C10K问题由来在互联网还不够普及的年代,用户总数不多,一台服务器同时在线100个用户在当时已经算是大型应用了,此时并不存在C10k难题。随着互联网普及率的提高,用户群体几何倍增长;另一方面互联网不再是单纯地浏览静态html网页,大型网站逐渐开始进行交互(提交表单、在线互动、即时通讯等),此时C10K的问题才体现出来。问题:设计一套网络通信框架,使其支持单机1秒处理1万条请求到能力。如何...
2019-07-13 16:41:00 195
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人