
编程基础
bcjc
Rover Ramble
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DAG路径搜索优化性能提高百倍
图的拓扑关系由 top 这个映射(map)表示,每条边都有一个或多个邻接的后继。begin_line 和 end_line 都是边的id。如果找到了这样的路径,将路径保存 vector path 结构中。如果路径有多条,只需找出任意一条即可。从一个DAG图中给定的起点 begin_line 寻找一条路径到达给定的终点 end_line。原创 2024-08-30 11:02:21 · 470 阅读 · 0 评论 -
求数组中连续递增序列的区间范围
输入为排好序的正整数数组,找出数组的所有连续区间, 如果该连续空间只有一个数字,将该数字放入一个数组中,否则将该连续空间的首位数字计入一个数组中,输出所有这些数组组成的数组。输出->[[1,2], [4,5], [7,9], [11]] 7-8-9为连续空间,那么记为[7,9]给定一个已排序数组,数组中没有重复的元素,依次递增。将其表示为区间形式,例如。问题1 和 问题2 类似,是一个意思。输入->[1,2, 4,5, 7,8,9,11]原创 2023-09-25 18:13:25 · 322 阅读 · 0 评论 -
判断二叉树是否左右对称
二叉树左右成镜像对称,不一定是满树。如图:code:struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};// ========== 递归 ==========bool check(TreeNode *p, TreeNode *q) { if (!p && !q原创 2020-08-03 17:46:05 · 593 阅读 · 0 评论 -
jvm垃圾回收 -- ZGC
ZGC是从JDK11中引入的一种新的支持弹性伸缩和低延迟垃圾收集器,ZGC可以工作在KB~TB的内存之下,作为一种并发的垃圾收集器,ZGC保证应用延迟不会超过10毫秒(即便在堆内存很大的情况下),在JDK11中是以实验阶段的特性被发布出来的,到JDK13时,ZGC可以支持到16TB的堆内存,并且可以将未提交的内存归还给操作系统。Z垃圾收集器(ZGC)是可伸缩的低延迟垃圾收集器。ZGC可以同时执行所有昂贵的工作,而不会将应用程序线程的执行停止超过10ms,这使得它适合于要求低延迟和/或使用非常大堆(数TB原创 2020-08-02 23:34:41 · 358 阅读 · 0 评论 -
数组相关的算法题
// https://www.cnblogs.com/grandyang/category/625406.html快速排序void quickSort(int a[], int left, int right){ if(left < right) { int i = left, j = right; int x = a[left]; while(i < j) { while(i < j && a[j] >=原创 2020-08-02 23:16:51 · 449 阅读 · 0 评论 -
JVM中的对象
摘要:Java类加载链接初始化执行,以及对象的压缩指针。类加载器Class Loaders是JRE(Java Runtime Environment)的一部分,当JVM需要一个类的时候,Class Loader就会通过类的全名尝试定位到类文件(.class文件,字节码)的位置,并通过类文件定义成一个Java类(java.lang.Class的一个实例);另外的,ClassLoader还负责加载应用需要的资源,如配置文件,图片等等。All classloaders, with the exception原创 2020-07-27 19:47:24 · 181 阅读 · 0 评论 -
快速排序进阶
三月不练手生。翻出了以前写的快速排序、单链表快排和scala快排。老老实实写把基础版写对就足够。本文代码均经过测试。1,快速排序的C++写法:#include <iostream>#include <vector>#include <algorithm>using namespace std;int getPartition(int arr[], int low, int high){ int key = arr[low]; while(low &原创 2020-07-01 18:15:19 · 248 阅读 · 0 评论 -
glibc中memcpy和memmove函数的实现
两三年前的一篇笔记,挺有意思的。[ glibc-2.12.2 ]中memcpy()的源码,加上个别中文注释:// 位于 string/memcpy.c#include <string.h>#include <memcopy.h>#include <pagecopy.h>#undef memcpyvoid *memcpy (dstpp, srcpp, len) void *dstpp; const void *srcpp;...原创 2020-05-24 22:20:02 · 1299 阅读 · 0 评论 -
理解虚拟内存的作用
虚拟内存提供了三个重要的能力:缓存,内存管理,内存保护1. 虚拟内存可以结合磁盘和物理内存的优势为进程提供看起来速度足够快并且容量足够大的存储;2. 虚拟内存可以为进程提供独立的内存空间并引入多层的页表结构将虚拟内存翻译成物理内存,进程之间可以共享物理内存减少开销,也能简化程序的链接、装载以及内存分配过程;3. 虚拟内存可以控制进程对物理内存的访问(通过页表),隔离不同进程的访问权限,提高系...原创 2020-04-17 17:49:06 · 3108 阅读 · 0 评论 -
C++11 右值引用与move语义
1. 右值引用1.1 右值右值就是指在下一个分号后(更准确的说是在包含右值的完整表达式的最后)销毁的临时对象。对于C++ 11,编译器会依据参数是左值还是右值在复制构造函数和move构造函数间进行选择。怎样区分呢?The distinguishing criterion is: if it has a name, then it is an lvalue. Otherwise,原创 2015-08-21 16:08:37 · 393 阅读 · 0 评论 -
boost asio Example
下面的代码来自官网http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/echo/async_tcp_echo_server.cpp#include #include #include #include using boost::asio::ip::tcp;class session转载 2015-08-20 10:49:05 · 675 阅读 · 0 评论 -
boost bind 用法
boost::bind()用来将一个函数或函数对象绑定某些参数,返回值是一个函数对象。它提供一个任意的函数对象(仿函数)、函数、函数指针、成员函数指针。原创 2015-08-19 16:26:39 · 837 阅读 · 0 评论 -
boost asio 几个问题
1。strand求教 asio中strand的post和dispatch的区别RT 求教 这2个接口的详细区别先谢谢了 看boost文档或者代码。http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/reference/io_service/dispatch.htmlhttp://www.boost.org/doc/libs/1_48_0...转载 2015-08-25 10:21:18 · 1190 阅读 · 0 评论 -
c++11生产者消费者
综合运用 C++11 中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——生产者消费者模型,并给出完整的解决方案。http://www.cnblogs.com/lchb/p/3569799.htmlhttps://github.com/forhappy/A-Detailed-Cplusplus-Concurrency-Tutorial/tree/master/zh单生产转载 2015-08-24 15:06:32 · 446 阅读 · 0 评论