- 博客(18)
- 收藏
- 关注
原创 Linux write 函数深入了解
write函数 函数定义如下:> #include <unistd>> ssize_t write(int filedes, void *buf, size_t nbytes); > // 返回:若成功则返回写入的字节数,若出错则返回-1> // filedes:文件描述符> // buf:待写入数据缓存区> // n
2018-09-02 22:15:11
7543
原创 TCP协议由浅入深(2)——TCP状态变迁
在上一篇中我们了解了TCP的连接和终止,现在来讨论TCP的状态变迁。 一、TCP状态变迁图 下面我们来结合上一篇连接方式来解读这个图 1.正常连接与终止 各个状态的含义与作用: LISTEN:侦听来自远方的TCP端口连接请求 SYN_SENT:客户端发送SYN报文,等待服务端的匹配请求(SYN+ACK) SYN_RCVD:服务端收到客户端的SYN报文后发出SYN+ACK并等待...
2018-09-01 18:30:43
415
原创 Linux系统资源限制
一、page allocation failure(页空间分配失败,linux 默认一页是4K) 现象:系统日志kernel:abc:page allocation failure. Order:1,mode:0x20 说明:程序abc·获取连续物理内存失败(内核调用get_free_page函数)Mode:0x20指的原子分配方式。 原因: 1. 物理内存不足,分配制定的orde...
2018-08-26 22:43:28
1395
原创 MYSQL中mysql_init与mysql_connect的线程安全问题
在网上有几个Mysql线程不安全的问题,如:19 #include20 #include 2122 void* func(void* arg)23 {24 MYSQL* mysql = (MYSQL *)arg;26 mysql_real_connect(mysql, “127.0.0.1″, “root”, “213456″, “FC_word”, 3344, NULL, 0)...
2018-08-17 11:58:50
4225
1
原创 TCP协议由浅入深(1) ——TCP连接
认TCP TCP是工作在网络层,向应用层提供一种可靠的,面向字节流的协议。TCP的首部![这里写图片描述(https://img-blog.youkuaiyun.com/20180627205713441?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1REVE9fTw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFC...
2018-08-14 10:49:34
401
原创 自学python——基础语法(list,tuple)
python里面的列表结构类似于C/C++中的数组,是一个有序列的数据结构,可以用索引访问里面的元素。1、创建list(1)创建空列表l1 = []l4 = list()print(type(l1))#type函数能得到数据类型(2)创建带值的列表l3 = [1,2,3,4]2、列表可以用下标值访问元素(从0开始)3、列表的分片操作l5 = [1,2,3,4,5,6,7]print(l5[1:4...
2018-06-11 18:00:57
340
原创 自学python——基础语法(变量,递归)
变量类型分为两种:1、全局变量(global):生命周期为整个程序2、局部变量(local):生命周期指在一个函数或者一个语句块中例如:def fun(): global b1#将b1定义为全局变量 b1=100 b1 += 1fun()print(b1) 输出b1=101假如将global换成local的话,在函数外就不能访问b1了。递归:递归使代码简洁,并且...
2018-06-07 21:36:27
355
原创 自学python——基础语法(函数)
python中的函数定义:def 函数名(参数): 函数语句 return 返回值函数调用:函数名(参数)注意函数语句的缩进量级。例如:定义一个函数完成求年利率为6.7%时,多少年后本金翻倍。def Summoney(money): year = 0 while money< 40000: money=money+0.067*money ...
2018-06-07 21:15:36
396
原创 自学python3——基础语法(if、for、while)
if语句:gender = input("输入性别:")if gender == "nan": print("性别是男的") print("I am a boy.")else: print("性别是女的") print("I am a girl. ")注意:在if语句中一定要注意缩进的量级,只有在同一量级的语句才会被包括在if语句中,如果将代码改成:ge
2018-06-07 20:30:23
3120
原创 求一个数字是否是回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字...
2018-06-06 20:06:52
1050
原创 最长回文字串(Mancher算法)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路:将字符串中每一个元素作为中心算出其最大的回文字串的长度,最后得出整个字符串中最长回文字串的中心位置和长度。关键:有两种情况:一、回文字串长度为奇数。二、回文字串长度为偶...
2018-05-08 21:15:29
525
原创 两个排序数组的中位数
定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5思路:将两个排序数组合并成一个数组,最后再判断中位数。先将数组二中比数组一小的放进数组中。然后判断数组二是...
2018-05-08 20:57:27
324
原创 删除排序数组中重复得元素
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。
2018-04-28 10:22:35
598
转载 分治法求二进制中1得个数
所谓分治法就是将相邻得两位相加,然后再相加,得到得数就是 二进制中1得个数。int Function(unsigned int n) { n = (n & 0x55555555) + ((n >> 1) & 0x55555555); n = (n & 0x33333333) + ((n >> 2) & 0x33333333); n = (
2018-04-27 16:53:05
781
原创 C++智能指针
最近在准备实习生面试,复习了一下C++,顺便分享一下智能指针的知识:智能指针并不是一个指针,而是由三个类构成的,这三个类分别为智能指针类,动态分配对象类,引用类。为什么需要智能指针呢?它有什么作用呢?答:管理多个指针指向同一个动态分配对象释放问题.如果对象过早释放会产生悬浮指针.如果不释放会造成内存泄漏下面从代码上理解智能指针工作的过程与原理://智能指针测试类class SmartTest...
2018-04-21 22:06:27
222
原创 Linux内存(2)
主讲逻辑地址与物理地址转换一、分页机制为了提高内存读取效率,每一页的大小都是2的n次幂,一个程序最多有64页,(16位处理器一页大小为1K,32位处理器一页大小为4K)以1K为例讲解:假如相对地址为1502,二进制为0000010111011110,而一页的大小为1024(2^10),所以前六位000001为页号,后十位0111011110为偏移量,所以1502在第一页的偏移量为478。上述情况未...
2018-04-20 17:43:49
267
原创 Linux内存总结(1)
内存管理满足的要求:1.重定位: 把逻辑地址空间转换为内存中的实际物理空间的过程。 重定位是多道程序在内存中同时运行的基础,有动态重定位与静态重定位。2.保护 在进程运行的过程中需要保护,避免受到其他进程的干涉。通过处理器的寄存器来实现保护。3.共享 在保护的同时需要灵活性,允许多个进程访问内存的同一个部分。4.逻辑组织5.物理组织下面介绍一下内存分区:一、固定分区第一种是...
2018-02-10 12:46:23
259
原创 Linux 内核同步方法(锁机制)(1)
**1.自旋锁::**Linux中最常见的锁,在短时间内进行清亮级加锁。如果一个执行线程试图获取一个已经被持有的自旋锁,那么该线程就会一直进行忙循环——旋转——等待锁重新可用。 注意:自旋锁在Linux不可递归(当试图获取一个自己已经持有的锁时,本身在自旋等待自己释放锁,这时候自己将永远无法释放锁,会造成死锁的情况。)1.2读写自旋锁:用途明确分为读取和写入(内核中任务链表的保护就
2017-12-28 22:34:13
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人