目录介绍:
- 1、C语言问题在线等
- 2、一段C语言程序转换为java的写法谢谢!
- 3、C实现对TXT文件指定行数据提取
- 4、MySQL数据库服务器逐渐变慢分析与解决方法分享
- 5、free命令buff和cache的区别
- 6、C++ 构造函数和析构函数题目
C语言问题在线等
#include stdio.h
#include stdlib.h
int main()
{
int m,n,d; //保存输入参数
int zh,yu,ct; //分别保存 m/n的整数部分,计算中的余数部分,小数位数
char *buff,*p; //小数部分字符串,指向字符串最后一个空字符的指针
scanf("%d %d %d",m,n,d);
if(n == 0)
{
printf("data input error\r\n");
exit(0);
}
zh = m / n;
yu = (m % n )* 10; //取余*10
buff = (char*) malloc( d + 1 ); //申请空间
ct = 0;
p = buff;
while(ct d)
{
*p++ = '0' + yu / n;
yu = ( yu % n ) * 10;
ct++;
*p = 0;
}
printf("%d/%d=%d.%s\r\n",m,n,zh,buff);
if(buff)
free(buff);
return 0;
}
一段C语言程序转换为java的写法谢谢!
按照你的要求,C语言程序转换成的Java程序如下:
public class GGG {
public static String calculateBillMac(String input_str){
String str_buff_8 ="",str_buff_10 = "",str_return = "";
long sum8_1=0,sum8_2=0,sum10_1=0,sum10_2=0;//分别存储八进制和十进制不同算法取值的合计
for(int i=0 ;i input_str.length();i++){//对输入字符串的每一个字节进行循环
str_buff_8+=Integer.toOctalString(input_str.charAt(i));//将ASCII码值转换成八进制字符串
str_buff_10+=Integer.toString(input_str.charAt(i)); //将ASCII码值转换成十进制字符串
}
for(int i=1;i=str_buff_8.length();i++){
sum8_1 += (str_buff_8.charAt(i - 1) - '0')*i;
sum8_2 += (str_buff_8.charAt(str_buff_8.length()-i) - '0')*i;
}
for(int i=1;i=str_buff_10.length();i++){
sum10_1 += (str_buff_10.charAt(i - 1) - '0')*i;
sum10_2 += (str_buff_10.charAt(str_buff_10.length() - i) - '0')*i;
}
str_return=""+sum8_1%10+sum8_2%10+sum10_1%10+sum10_2%10;
return str_return;
}
public static void main(String[] args) {
System.out.println(calculateBillMac("abcdef"));
}
}
运行结果:
2739
这个数据和C语言用字符串"abcdef"测试的结果相同.
C实现对TXT文件指定行数据提取
//UNIX
#include stdio.h
#include stdlib.h
#include string.h
int main()
{
char *pBuff;
FILE *pf = fopen("data.txt","rb");
fseek(pf,0,SEEK_END);
int len =ftell(pf);
if(len==0)
{
printf("文件是空的\n");
fclose(pf);
return 0;
}
pBuff = (char *)malloc(len);
memset(pBuff,0,len);
fseek(pf,0,SEEK_SET);
fread(pBuff,len,1,pf);
fclose(pf);
char *pBuffLine = (char *)malloc(len);
char *pos;
pos = pBuff;
int i,j=0;
int linelen;
printf("行号:");
int LineNum;
scanf("%d",LineNum);
int num =0;
for(i=0;ilen;i++)
{
if(*pos == 0xA)
{
num++;
linelen = pos -(pBuff+j);
memset(pBuffLine,0,len);
memcpy(pBuffLine,pBuff+j,linelen);
*(pBuffLine+linelen)=0;
if(num == LineNum)
{
printf("%s\n",pBuffLine);
free(pBuff);
free(pBuffLine);
return 0;
}
pos++;
j=pos-pBuff;
continue;
}
pos++;
}
if(j!=len)
{
num++;
linelen =len-j;
memset(pBuffLine,0,len);
memcpy(pBuffLine,pBuff+j,linelen);
*(pBuffLine+linelen)=0;
if(num == LineNum)
{
printf("%s\n",pBuffLine);
free(pBuff);
free(pBuffLine);
return 0;
}
}
free(pBuff);
free(pBuffLine);
return 0;
}
MySQL数据库服务器逐渐变慢分析与解决方法分享
一、检查系统的状态
通过操作系统的一些工具检查系统的状态,比如CPU、内存、交换、磁盘的利用率,根据经验或与系统正常时的状态相比对,有时系统表面上看起来看空闲,这也可能不是一个正常的状态,因为cpu可能正等待IO的完成。除此之外,还应观注那些占用系统资源(cpu、内存)的进程。
1.使用sar来检查操作系统是否存在IO问题
#sar-u210—
即每隔2秒检察一次,共执行20次。
结果示例:
注:在redhat下,%system就是所谓的%wio。
Linux2.4.21-20.ELsmp
(YY075)05/19/2005
10:36:07AMCPU%user%nice%system%idle
10:36:09AMall0.000.000.1399.87
10:36:11AMall0.000.000.00100.00
10:36:13AMall0.250.000.2599.49
10:36:15AMall0.130.000.1399.75
10:36:17AMall0.000.000.00100.00
其中:
%usr指的是用户进程使用的cpu资源的百分比;
%sys指的是系统资源使用cpu资源的百分比;
%wio指的是等待io完成的百分比,这是值得观注的一项;
%idle即空闲的百分比。
如果wio列的值很大,如在35%以上,说明系统的IO存在瓶颈,CPU花费了很大的时间去等待I/O的完成。Idle很小说明系统CPU很忙。像以上的示例,可以看到wio平均值为11,说明I/O没什么特别的问题,而idle值为零,说明cpu已经满负荷运行了。
2.使用vmstat监控内存
cpu资源
[root@mysql1
~]#
vmstat
procs
———–memory———-—swap–
—–io—-–system–
—–cpu——
r
b
swpd
free
buff
cache
si
so
bi
bo
in
cs
us
sy
id
wa
st
72
25428
54712672264
14
43
53
59
1
198
vmstat
的输出那些信息值得关注?
io
bo:
磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
①
CPU问题
下面几列需要被察看,以确定cpu是否有问题
Processesinthe
run
queue
(procs
r)
Usertime
(cpu
us)
System
time
(cpu
sy)
Idle
time
(cpu
id)
问题情况:
如果processes
in
run
queue
(procs
r)的数量远大于系统中cpu的数量,将会使系统便慢。
如果这个数量是cpu的4倍的话,说明系统正面临cpu能力短缺,这将使系统运行速度大幅度降低
如果cpu的idle时间经常为0的话,或者系统占用时间(cpu
sy)是用户占用时间(cpu
us)两辈的话,系统面临缺少cpu资源
解决方案
:
解决这些情况,涉及到调整应用程序,使其能更有效的使用cpu,同时增加cpu的能力或数量
②内存问题
主要查看页导入的数值(swap中的si),如果该值比较大就要考虑内存,大概方法如下:
最简单的,加大RAM
减少RAM的需求
3.磁盘IO问题
处理方式:做raid10提高性能
4.网络问题
telnet一下MySQL对外开放的端口,如果不通的话,看看防火墙是否正确设置了。另外,看看MySQL是不是开启了skip-networking的选项,如果开启请关闭。
free命令buff和cache的区别
buff
cache
Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可搜索以干其他的事情。
Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而
Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。
Buffer:一般是用在写入磁盘的,例如:某个进程要求多个字段被读入,当所有要求的字段被读入之前已经读入的字段会先放到buffer中。 Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。
C++ 构造函数和析构函数题目
class CString
{
private:
char * m_pbuff; //指向字符串的指针
int m_length;//表示当前字符串的最大允许长度,也就是字符数组的长度
public:
~CString();//析构
CString(); //构造函数1,设置为空字符串,m_length=100
CString(CString ); //拷贝构造
CString(char *src); //构造函数2,在考虑了src的长度后初始化当前对象,m_length=src的长度+1
CString(char ch); //构造函数3,0号元素赋值为ch,m_length=100
int SetString(char *src); //设置字符串,在考虑了src的长度后设置当前对象,m_length=src的长度+1
void trim();// 去除字符串最前和最后的空格
int find(char ch); //查找字符串中的指定字符的第一次出现位置,如果未出现返回-1
void toLower();//字符串转小写
void toUpper();//字符串转大写
void deletechar(char ch); // 删除其中的指定字符
void show();
private:
void freeBuff();
};
void CString::freeBuff()
{
if(m_pbuff != 0)
{
delete []m_pbuff;
m_pbuff = 0;
}
}
CString::CString()
{
m_pbuff = new char[100];
m_length = 100;
m_pbuff[0] = 0;
}
CString::CString(CString ref)
{
if(ref.m_length 0)
{
m_length = ref.m_length;
m_pbuff = new char[m_length];
memcpy(m_pbuff,ref.m_pbuff,m_length);
}
else
{
m_pbuff = 0;
m_length = 0;
}
}
CString::CString(char *src)
{
m_length = src?strlen(src)+1:0;
if(m_length == 0)
m_pbuff = 0;
else
{
m_pbuff = new char[m_length];
memcpy(m_pbuff,src,m_length);
}
}
CString::CString(char ch)
{
m_length = 100;
m_pbuff = new char[m_length];
m_pbuff[0] = ch;
m_pbuff[1] = 0;
}
int CString::SetString(char *src)
{
freeBuff();
m_length = src?strlen(src)+1:0;
if(m_length == 0)
m_pbuff = 0;
else
{
m_pbuff = new char[m_length];
memcpy(m_pbuff,src,m_length);
}
}
void CString::trim()
{
int i,j=m_length;
for(i=0;im_length;++i)
{
if(m_pbuff[i] != ' ' || m_pbuff[i] == 0)
break;
}
//跳过\0字符后面的所有字符
while(m_pbuff[--j] != 0);
while(j0 m_pbuff[j-1] == ' ')
--j;
m_pbuff[j] = 0;
m_length = j-i;
if(m_length == 0)
freeBuff();
else
{
m_length += 1;
char *p = new char[m_length];
memcpy(p,m_pbuff+i,m_length);
freeBuff();
m_pbuff = p;
}
}
int CString::find(char ch)
{
for(int i=0;im_length;++i)
{
if(m_pbuff[i] == 0)
return -1;
if(m_pbuff[i] == ch)
return i;
}
return -1;
}
void CString::toLower()
{
for(int i=0;im_length m_pbuff[i] != 0;++i)
{
if(m_pbuff[i] = 'A' m_pbuff[i] = 'Z')
m_pbuff += 32;
}
}
void CString::toUpper()
{
for(int i=0;im_length m_pbuff[i] != 0;++i)
{
if(m_pbuff[i] = 'a' m_pbuff[i] = 'z')
m_pbuff -= 32;
}
}
void CString::deletechar(char ch)
{
if(m_length == 0)
return;
char *p = new char[m_length];
for(int i=0,j=0;im_length m_pbuff[i] != 0;++i)
{
if(m_pbuff[i] != ch)
p[j++] = m_pbuff[i];
}
p[j] = 0;
freeBuff();
m_pbuff = p;
}
void CString::show()
{
if(m_length 0 m_pbuff[0] != 0)
printf(m_pbuff);
}
以上代码均为NOTEPAD++手敲,请自行测试。
网友评论
最新评论
; //小数部分字符串,指向字符串最后一个空字符的指针 scanf("%d %d %d",m,n,d); if(n == 0) { printf("data inp
en(src)+1:0; if(m_length == 0) m_pbuff = 0; else { m_pbuff = new char[m_l
:最简单的,加大RAM减少RAM的需求3.磁盘IO问题处理方式:做raid10提高性能4.网络问题telnet一下MySQL对外开放的端口,如果不通的话,看看防火墙是否正确设置了。另外,看看MySQL是不是开启了skip-networking的选项,如果开启请关闭。free命令buff和