基础知识
文章平均质量分 94
Tangocc
@GitHub: tangocc.github.io
@baiduer
展开
-
从操作系统漫谈GOLang GPM模型
本文从操作系统谈起,简单介绍操作系统基本知识,引出进程、线程调度的基本原理和基本模型,然后从0到1设计Golang调度器,通过方案的逐步演进升级,可以了解到GPM模型设计理念。阅读本文会了解到线程模型、线程调度,并最终理解Golang为什么设计为GPM模型,并通过简要runtime代码分析,验证在GPM模型推演过程中各种问题设想以及解决方案。原创 2022-10-26 10:04:53 · 611 阅读 · 1 评论 -
一文读懂数据库分库分表
阅读此文你将了解:什么是分库分表以及为什么分库分表 如何分库分表 分库分表常见几种方式以及优缺点 如何选择分库分表的方式数据库常见优化方案对于后端程序员来说,绕不开数据库的使用与方案选型,那么随着业务规模的逐渐扩大,其对于存储的使用上也需要随之进行升级和优化。随着规模的扩大,数据库面临如下问题:读压力:并发QPS、索引不合理、SQL语句不合理、锁粒度 写压力:并发QPS、事务、锁粒度 物理性能:磁盘瓶颈、CPU瓶颈、内存瓶颈、IO瓶颈 其他:宕机、网络异常面对上述问题,常..原创 2022-04-15 12:21:23 · 11616 阅读 · 2 评论 -
C++<algorithm>中sort的比较函数写法
C++中sort的比较函数写法转自:http://www.wl566.com/biancheng/98907.htmlC++中sort的比较函数写法,有需要的朋友可以参考下。 定义排序函数:方法1:声明外部比较函数bool Less(const Student& s1, const Student& s2){ return s1.name //从小到大转载 2017-05-03 17:13:41 · 425 阅读 · 0 评论 -
linux网络编程基础
1.常用头文件介绍① #includeunistd.h是unix std的意思,是POSIX标准定义的unix类系统定义符号常量的头文件,包含了许多UNIX系统服务的函数原型,例如read函数、write函数和getpid函数。unistd.h在unix中类似于window中的windows.h!ssize_t read(int, void *, size_t)ssize原创 2017-04-17 21:59:25 · 827 阅读 · 0 评论 -
负载均衡学习笔记
负载均衡学习笔记最近在学习负载均衡原理,看了大量的文章和相关知识,有很大的收获,做一个简要总结,一来回顾自己所学的知识,二来对所看所学知识整理,供后来者参考借鉴,如有错误的地方,还请指出,学生阶段,考虑的内容尚有欠缺之处。1. 什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器原创 2017-02-11 18:28:03 · 469 阅读 · 0 评论 -
Linux文件系统
文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识。 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接硬链接、和常见目录的介绍。相信有了这些知识对于深入的学习linux会有一定的帮助。文章例子主要是基于ubuntu发行版。 如有不对之处请大家多多指出。1.Linux转载 2017-05-05 22:18:37 · 454 阅读 · 0 评论 -
Git常用命令
提交代码历程:git add -> git commit -m "Message Infomation" -> git push场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1原创 2017-06-14 19:35:52 · 262 阅读 · 0 评论 -
数据库经典面试题
1.数据库完整性约束 实体完整性、参照完整性、用户自定义完整性2.存储过程、触发器、函数的区别 触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的...原创 2018-03-09 17:03:12 · 425 阅读 · 0 评论 -
C++对象内存模型
最近看了《深入理解C++对象模型》,综合学习C++对象的内存布局,本文基于个人理解和程序测试绘制C++对象模型内存布局,如有错误,还请批评指正。1.前言首先,相较于C语言,C++语言并没有额外增加内存消耗(确切说,在没有虚函数情况下)。 对于一个C++类对象,每个对象有独立的数据成员(非static),但是内存中成员函数只有一份,该类的所有对象共享成员函数。static数据成员属...原创 2018-03-20 20:01:37 · 564 阅读 · 0 评论 -
JVM 垃圾回收器
GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。GC机制要准确理解Java的垃圾回收机制,就要从:“什么时候”,“对什么东西”,“做了什么”三个方面来具体分析。第一:“什么时候”即就是GC触发的转载 2017-07-19 18:58:51 · 248 阅读 · 0 评论 -
linux多进程编程
进程的状态Linux进程有7种基础状态(两种running算一种),除了traced都可以用$ps命令查看,$ps可以查看的进程状态如下,更多进程状态信息参见Linux Process VS Thread VS LWPR running or runnable (on run queue)D uninterruptible sleep (usually IO)S inter转载 2017-05-05 22:15:31 · 540 阅读 · 0 评论 -
Linux下网络编程5种实现(源代码)
学习整理Linux网络编程5种服务器模型多线程、多进程、Select、Poll、Epoll实现源代码,注释较为详细,方便初学者学习。1.简单阻塞式客户端服务器实现:(如若链接打不开,复制网址到浏览器打开)源代码:http://download.csdn.net/detail/u013291818/98225252.多线程模型客户端服务器实现:源代码:http://down...原创 2019-08-07 18:11:44 · 2822 阅读 · 0 评论 -
创建和调用动态链接库与静态链接库
作为一个新手,在程序调试过程中,尤其在对产品二次开发过程中,常常遇到【缺少DLL库的情况】,之前往往搞的云里雾里,靠度娘解决问题,现在趁着项目的需要,对于动态链接库和静态链接知识进行系统的学习。在介绍静态链接库和动态链接库的知识之前,先来介绍相关基础知识。一、.程序编译过程库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因原创 2017-04-07 21:51:58 · 571 阅读 · 0 评论 -
jps、jinfo、jstat、jstack、jmap、jconsole等命令简介
JDK提供了几个很实用的工具,如下:jinfo:观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数,java class path等信息。命令格式:jinfo 进程pidjps:用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。命令格式:jps 或 jps 远程服务ip地址 (默认端口1099)jst转载 2017-09-17 08:41:59 · 623 阅读 · 0 评论 -
数据库锁-行锁、页锁、表锁
页级:引擎 BDB。表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , 单独的一行记录加锁表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以原创 2017-09-10 14:32:40 · 1011 阅读 · 0 评论 -
Shell脚本编程
if语句 if condition1 then command1 elif condition2 then command2 else commandN fifor语句 for var in item1 item2 ... itemN do command1 command2 ... commandN donewhile 语句 while condition do comman原创 2017-09-05 09:19:25 · 366 阅读 · 0 评论 -
mybatis知识点
Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的目标是介绍Mybatis的技术架构和重要组成部分,以及基本运行原理。博客写的很辛苦,但是写出来却不一定好看,所谓开始很兴奋,过程很痛苦,结束很遗憾。要求不高,只要读者能从系列博客中,学习到一点其他博客所转载 2017-09-05 09:18:08 · 317 阅读 · 0 评论 -
TCP流量控制和拥塞控制-滑动窗口协议详解
拥塞:拥塞发生的主要原因在于网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间、链路带宽容量和中间节点的处理能力。由于互联网的设计机制导致其缺乏“接纳控制”能力,因此在网络资源不足时不能限制用户数量,而只能靠降低服务质量来继续为用户服务,也就是“尽力而为”的服务。拥塞其实是一个动态问题,我们没有办法用一个静态方案去解决,从这个意义上来说,拥塞是不可避免的。重传机制:转载 2017-05-24 21:13:33 · 1172 阅读 · 0 评论