- 博客(24)
- 资源 (9)
- 收藏
- 关注
原创 GC垃圾回收算法基础
垃圾回收中最为基础的是引用计数,标记清除这两种,其他算法都是在这些基础上的优化。 引用计数 设计一个计数器,对象被引用时加1,对象解除引用时减1。计数器为0时被回收 标记清除 分为标记和清除两个阶段。标记阶段:暂停线程确保内存无变化STW(stop the word),从根节点遍历所有对象,标记没被引用的对象;清除阶段:清除被标记的对象。 ...
2021-03-03 15:54:47
196
1
原创 CMakeLists文件知识汇总
基本规则 主目录和存放源代码子目录下都要有CMakeLists.txt 变量使用${}取值(if中使用变量名),环境变量使用$ENV{}取值,使用SET(ENV{VAR} VALUE)赋值 指令格式:指令(参数1 参数2…) 环境变量 PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR变量 CMAKE_BUILE_TYPE CMAKE_MODULE_PATH EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH 例子:SET(EXECUTAB
2020-09-03 14:12:03
417
原创 golang知识汇总
关键字 chan 修饰符:<-chan只读,chan<-只写,chan读写,默认是阻塞的,非阻塞需要用select 带缓冲定义:ch := make(chan int, 10),缓冲满了就阻塞 select 监听io并触发case操作 每个case语句里必须是一个IO操作 所有channel表达式都会被求值、所有被发送的表达式都会被求值 如果任意某个case可以进行,它就执行(其他被忽略)。 如果有多个case都可以运行,Select会随机公平地选出一个执行(其他不会执行)。 如
2020-07-22 14:43:16
254
原创 sdp知识汇总
Session description 必需的 i=* (session information) u=* (URI of description) e=* (email address) p=* (phone number) c=* (connection information - not required if included in all media) b=* (zero or more bandwidth information lines) One or more time descript
2020-07-21 18:23:37
724
原创 maven知识汇总
groupId artifactId version packaging 这四个元素组成了Maven的坐标,它相当为项目在Maven世界中的ID。 其中packaging默认为jar,可以为jar,pom,war等。
2020-07-03 10:05:06
155
原创 ubuntu下用ethstatus监控网络使用情况
这个软件能显示当前网卡的 RX 和 TX 速率 安装: sudo apt-get install ethstatus 使用: sudo ethstatus -i eth0 查看网卡: ifconfig
2020-06-24 14:14:05
931
原创 系统基础知识
死锁的四个必要条件 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。【求新保旧】 不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 【资源:互斥、不可剥夺。进程:请求与保持、循环等待】 ...
2020-06-08 21:38:35
142
原创 Spring Boot 基础知识汇总
@Configuration //表示这个一个配置类,相当于spring的xml 文件 在@Configuration加上@Bean去注册一个bean 对象,这样我们就不用再去写xml文件去注册bean对象。@Bean标注在方法上(返回某个实例的方法)。 @AutoWired是获取bean的基本方法 oauth负责多后台统一登录认证,shiro负责给登录用户赋予不同的访问权限。 跨域问题一般前端的解决方案有: 使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说..
2020-06-08 07:20:07
216
原创 RabbitMQ知识汇总
名词解释: Channel(信道):消息推送使用的通道【类似nio的异步模型】 ConnectionFactory(连接管理器):Client与Rabbit Server之间建立连接的管理器 Message: 由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Queue接受、优先级是多少等。 vhost: 每个vhost都是mini版的RabbitMQ,里面可以有若干个Exchange和Queue Exchange(
2020-06-05 10:27:36
188
原创 Kafka基础知识
名词解释 在一套 Kafka 架构中有多个 Producer,多个 Broker,多个 Consumer,每个 Producer 可以对应多个 Topic,每个 Consumer 只能对应一个 Consumer Group。 整个 Kafka 架构对应一个 ZooKeeper 集群,通过 ZK 管理集群配置,选举 Leader,以及在 Consumer Group 发生变化时进行 Rebalance。 Broker:消息中间件处理节点,一个kafka节点就是一个Broker Producer:消
2020-06-04 16:54:08
132
原创 MySQL基础知识
MySQL发送一个请求: MySQL客户端/服务端通信协议是同步协议 据库设计上做一些优化:比如: 用多个小表代替一个大表,注意不要过度设计 批量插入代替循环单条插入 合理控制缓存空间大小,一般来说其大小设置为几十兆比较合适 可以通过SQL_CACHE和SQL_NO_CACHE来控制某个查询语句是否需要进行缓存 ...
2020-06-04 16:36:46
332
原创 9大常见数据结构
常见数据结构 数组型:数组,栈,队列 链表型:链表,跳表,散列表 树型:树,堆,图 树:二叉平衡树(AVL树),红黑树,B树 图:邻接矩阵法,邻接链表法,十字链表法 树的遍历:前序、中序、后序、层序 -堆:大根堆、小根堆。层序表示 平衡二叉树:左旋,右旋 左旋清掉右子树,右旋清掉左子树 https://mp.weixin.qq.com/s/5NfKB9Yp2haB3x5_9C40mA ...
2020-06-04 10:15:09
290
原创 AVL树的左右旋
定义: 左子节点<父节点<右子节点。 左子树与右子树的高度差(平衡因子)的绝对值最大为1 引起旋转的原因: 左子树与右子树的高度差的绝对值大于1 旋转的目的: 左旋引起:左子树高度+1,右子树高度-1 右旋引起:左子树高度-1,右子树高度+1 口诀: 左旋加左度,右旋加右度 左旋断左树,右旋断右树 简版: 谁旋加谁度,谁旋断谁树 解释: 左旋加左度:左旋会增加左子树的高度减少右子树的高度。 左旋断左树:左旋会断掉子节点与它的左子树的连接,并成为旋转后新子节点的右子树。 找出需要旋转的父节点和子节
2020-06-03 18:05:01
435
原创 网络编程
C10K问题:基于同步阻塞I/O模型,单个连接占用的资源,随着连接数的增加,总资源(算力和内存)超过服务器上限(太多时间花在:IO阻塞、上下文切换、用户内核数据对拷)。 select 方案:socket状态ready了再处理。缺点:效率不高 poll方案:订阅关注的事件 epoll方案:异步非阻塞回调模型(Reactor),只返回ready的句柄。【Nginx,libevent,node.js都是epoll方案】 ...
2020-06-02 15:20:02
161
原创 Redis基础知识
redis是nosql(巨大的内存map) 单线程(避免资源竞争,切换),耗时操作会导致卡顿 redis的持久化方式:RDB(默认)和AOF,异步写入硬盘 RDB持久化原理:通过bgsave命令触发,然后父进程执行fork操作创建子进程,子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换(定时一次性将所有数据进行快照生成一份副本存储在硬盘中)【生成快照,对比替换】 优点:是一个紧凑压缩的二进制文件,Redis加载RDB恢复数据远远快于AOF的方式。 缺点:由于每次..
2020-06-02 15:19:32
191
原创 Java基础知识积累
文章目录JVMJMM数据类型关于String数据结构类Exception输入输出其他 JVM synchronized (确保线程件代码有序)和 volatile(直接操作内存别优化) 的区别:前者保证可见性和原子性,后者只保证可见性 volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 volatile仅能使用在变量级别;synchronized则可以使用在变量、方法
2020-05-29 13:45:30
321
原创 如何解析C语言的声明
如何解析C语言的声明如何解析c语言复杂的声明类型: Step1 取最左边的标识符(标识符:声明变量的名字) 表示”标识符是…” Step2 查看标识符**右边**的下一个符号 如果是方括号”[]”,表示”…的数组” 如果是圆括号”()”,表示”返回…的函数” 如果是”;”,解析结束。 Step3 查看标识符左边的下一个符号 如果是左括号”(“,把已经解析的部分组合在一起,然后
2017-05-02 20:06:07
249
原创 c语言hex字符串转byte数组
c语言hex字符串转byte数组例:”0C B1 15 02 C0 27 01 20 ” –> {0x0c, 0xb1, 0x15, 0x02, 0xc0, 0x27, 0x01, 0x20}static int hex2byte(char *dst, char *src) { while(*src) { if(' ' == *src) { src++
2017-03-07 17:09:01
9741
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅