- 博客(23)
- 收藏
- 关注
原创 网络协议栈的调优
这篇文章是翻译了Documentation/networking/scaling.txt参考:http://tomoyo.osdn.jp/cgi-bin/lxr/source/Documentation/networking/scaling.txt?v=linux-4.3.6;a=ppc参考*为提高多核系统处理的并行性和性能 而采用的相互补充的一组技术这组技术包括:*RSS Recei...
2020-04-28 11:28:40 764
原创 STL里的priority_queue用法总结
STL里的priority_queue用法总结`#include <iostream>#include <vector>#include <queue>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};struct compare { bool operator()
2022-02-25 19:14:58 195
转载 MySql表分区详解
一、MySQL分区表介绍分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。但是并不是所有的存储引擎都支持,如CSV、FEDORATED、MERGE等就不支持分区。在使用此分区功能前,应该对选择的存储引擎对分区的支持有所了解。MySQL数据库在5.1版本时添加了对分区的支持,分区的过程是
2020-11-18 17:22:01 323
原创 mysql修改表分区为RANGE分区
ALTER TABLE t_bitcoinPARTITION by RANGE(UNIX_TIMESTAMP(log_time))(PARTITION p20201118 VALUES less than (UNIX_TIMESTAMP(‘2020-11-19 00:00:00’)));注意:t_bitcoin:表名log_time:t_bitcoin表对应的时间戳字段名,该字段必须设为主键之一p20201118 :新设置的分区名...
2020-11-18 16:22:56 736
原创 mysql 查看变量的值
mysql 查看变量的值例如:set @date_later_1 = date_format(DATE_ADD(@p_name, internal 1 day), “%Y%m%d”);select @date_later_1; //便可查看变量@date_later_1的值
2020-11-18 15:59:41 800
原创 MySQL sql实现将一个表中的数据插入另一个表
MySQL sql实现将一个表中的数据插入另一个表insert INTO t_bitcoin_statistics (day_time, transaction_num, client_in_num,client_out_num, server_in_num, server_out_num)select date(log_time) as day_time,count(distinct(tx_hash)) as transaction_num,count(distinct case when cli
2020-11-09 14:45:51 267
原创 解决implicit declaration of function ‘strptime’ [-Wimplicit-function-declaration]
解决implicit declaration of function ‘strptime’ [-Wimplicit-function-declaration]在Makefile里面加上三个宏就可以解决使用strptime函数未声明的编译警告我的Makefile模板如下:SOURCE = $(wildcard *.c)ECHO = @TARGET = offline_toolall: clean $(TARGET)#CC = gccCFLAG
2020-11-04 19:36:13 3011
原创 readn/writen(接收/发送) 方法封装
前言通常文件的I/O与字节流套接字上的read和write函数所表现的行为不一样,有时候字节流套接字上调用read和write返回的字节数可能比请求的大小要小,而这样并不表示一个错误,如果在内核中用于套接字的缓冲区满了达到上限了,这时候就需要再次调用read或write函数,因此封装了如下的两个小函数。在封装的函数里面如果遇到EINTR错误(说明调用被中断)或EAGAIN(可以尝试再读一次),这时候应该继续读或写,以此来处理剩下的字节/* code from UNIX Network Programi
2020-05-15 10:57:35 265
原创 mysql_real_query函数处理入库字段包含二进制
连接处于活动状态时,客户端可以使用mysql_query() 或将SQL语句发送到服务器mysql_real_query()。两者之间的区别在于, mysql_query()期望查询指定为以空值结尾的字符串,而 mysql_real_query()期望使用计数的字符串。如果字符串包含二进制数据(可能包含空字节),则必须使用 mysql_real_query()。...
2020-05-14 15:24:13 383
原创 linux mysql_ping连不上的原因分析
mysql_ping连不上的原因1、MySQL 服务宕了2、mysql连接超时即某个mysql长连接很久没有新的请求发起,达到了server端的wait_timeout(默认是28800秒也就是8小时) ,被server强行关闭。并且客户端程序没有通过mysql_option接口设置自动重连,此后再通过这个connection发起查询的时候,就会报错...
2020-05-14 14:24:51 794 1
原创 线程同步的方式有哪些(简单易懂)
什么是线程同步线程同步:这里的同步并非同时运行的意思,而是指多线程通过特定的设置来控制线程之间的执行顺序,如果没有同步,那线程之间是各自运行各自的!特殊的线程同步线程互斥可以看成是一种特殊的线程同步,就是当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源线程同步的方式和机制1、临界区(Critical Section):在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,有一个线程进入后,其他线程
2020-05-13 14:20:56 3650
原创 posix_memalign函数详解以及使用时的注意事项
前言在编写可移植的代码的时候,所有的类型都该自然对齐,因为不对齐会导致性能下降,在大多数情况下,编译器和C库透明地帮你处理对齐问题。POSIX 标明了通过malloc( ), calloc( ), 和 realloc( ) 返回的地址对于任何的C类型来说都是对齐的。在Linux中,这些函数返回的地址在32位系统是以8字节为边界对齐,在64位系统是以16字节为边界对齐的。但是对于更大的边界,例如页面,程序员需要动态的对齐。因此,POSIX 1003.1d提供一个叫做posix_memalign( )的函数:
2020-05-12 15:23:41 16788 4
原创 下回接着看的优秀文章
服务器开发常用模型1、C10K 问题:http://www.kegel.com/c10k.html#frameworks2、经典服务器架构模型比较:https://kb.cnblogs.com/page/173038/3、高性能IO设计模型概述:http://www.yeolar.com/note/2012/12/15/high-performance-io-design-patterns/...
2020-05-11 18:00:46 142
原创 Linux下gmtime、gmtime_r、localtime、localtime_r函数详解
函数功能介绍使用man gmtime或man localtime都可以的得到这几个函数的介绍。原型如下:struct tm *gmtime(const time_t *timep);struct tm *gmtime_r(const time_t *timep, struct tm *result);struct tm *localtime(const time_t *timep);struct tm *localtime_r(const time_t *timep, struct tm *res
2020-05-11 12:01:55 6434
原创 Linux下使用localtime函数可能会严重影响性能
本地时间相关函数localtime严重影响性能由于locate相关的函数大部分都会访问本地的时区配置,在环境变量缺失的情况下就会去etc目录下找timezone相关的文件去获取,所以在频繁访问的情况下,比如大量写带时间戳的日志,就会严重影响性能,单线程也就只能做到10万次左右per second,所以在高速环境下一定要避免使用localtime之类的和时区相关的函数在实际的代码中,可以使用gmtime来代替localtime,比如获取当前时间戳可以用如下代码:struct tm today;time
2020-05-11 11:12:05 1466
原创 strict alias规则约束
strict alias规则约束可能带来的问题1、现象:在Linux下的c开发过程中,发现有的模块、函数在编译时加上-O2编译参数时,运行的结果就不对了2、原因:是-O2 默认开启了strict alias选项,我们程序编写的方式不符合strict alias规范,导致编译器优化的程序和实际行为不一致。3、解决:1)修改程序使其符合strict alias规范2)关闭strict alias选项补充:strict alias规则约束下,编译器可以更好的优化代码比如:void fool(in
2020-05-09 19:26:09 268
原创 Linux下的通用Makefile模板
通用Makefile模板SOURCE = $(wildcart *.c)TARGET = demoall: clean $(TARGET)CC = gccCFLAGS = -W -Wall -g#CFLAGS = -O2 -Wall -rdynamicMODIFIED_D := $(shell date +%F)MODIFIED_T := KaTeX parse error: Can't use function '\"' in math mode at position 30: …T)
2020-05-08 20:03:02 225
原创 MYSQL查询、删除表分区
MySQL查询表分区selectpartition_name part,partition_expression expr,partition_description descr,table_rowsfrom information_schema.partitions where table_schema = ‘test’and table_name = ‘http’以上代码需要修...
2020-04-23 19:34:51 3222
原创 MYSQL 定时定时删除表分区
以下实现创建定时事件定时删除表分区, 删除距今最早的七个分区1、 创建存储过程CREATE PROCEDURE del_partition()BEGINset @table_num = 7;set @table_idx = 0;WHERE @table_idx < @table_numDOselect partition_name into @p_name from i...
2020-04-23 19:19:32 487
原创 MYSQL定时创建一个按天分区的表
创建新分区以下实现分区名字按日期递增,例如现有表分区p20200421,p20200422,则在此基础上新创建分区p202004231、创建存储过程CREATE PROCEDURE partition_add()beginselect replace(partition_name,‘p’,"") into @p_name from information_schema.partition...
2020-04-23 18:09:31 1819
原创 MySQL创建表分区
MySQL创建表分区对已有的表创建分区 以20190815这个时间之前的表数据创建分区p20190815alter table 表名 partition by range (unix_timestamp(time))(partition p20190815 values less thanunix_timestamp(‘2019-08-15 00:00:00’))...
2020-04-15 16:16:20 456
原创 linux的mount命令
linux的mount命令首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。命令格式:mount [-t vfstype] [-o options] device dir其中:1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:光盘或光盘镜像:iso9660DOS fat16文...
2020-04-15 11:24:36 97
原创 Linux系统启动慢 排查
Linux系统启动慢 排查排除指令systemd-cgls 查看服务的启动顺序systemd-anlyze 查看启动时间systemd-anlyze blame 查看启动占用的时间
2020-04-15 11:15:31 425
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人