C++程序设计 请给出完整程序参考 10C

1)建立一个教师类Teacher,其包含3个私有数据成员:num(工号)、name(姓名)、sex(性别),包含2个公有成员函数:带参构造函数(用于对三个数据成员进行初始化),display函数(输出数据成员)。
2)建立一个生日类BirthDate,其包含3个私有数据成员:year(年)、month(月)、day(日),包含3个公有成员函数:带参构造函数(用于对三个数据成员进行初始化),display函数(输出数据成员),change函数(修改生日数据,即将3个数据成员的值改为change函数参数指定的值)。
3)建立一个教授类Professor,它是Teacher类的公有派生类,在Teacher类的基础上增加了私有数据生日信息birthday(birthday是BirthDate类的对象),其新增成员函数包含:带参构造函数(对新增的和继承的数据成员初始化),display函数(输出所有数据成员),changebirth函数(将修改生日信息修改为函数参数指定日期)。
4)main函数中的操作步骤如下:
 定义Professor类的对象prof1
 输出对象prof1的所有数据信息
 修改prof1的生日信息
 输出对象prof1的所有数据信息

5个回答

#include
#include
#include
using namespace std;
class Teacher;
class Student
{public:
void display()
{cout<<"num:"<<num<<endl<<"name:"<<name<<endl<<"sex:"<<sex<<endl<<"score:"<<score<<endl;}
Student(){};
Student(int m,char n[20],char x,float s)
{num=m;strcpy(name,n);sex=x;score=s;}
int num;
char name[20];
char sex;
float score;
};

class Teacher
{
public:
void setpay(float a)
{pay=a;}
void display()
{cout<<"num:"< Teacher(){};
Teacher(int m,char n[20],char x,float p)
{num=m;strcpy(name,n);sex=x;pay=p;}
Teacher(Student & s)
{
num=s.num;
strcpy(name,s.name);
sex=s.sex;
}
private:
int num;
char name[20];
char sex;
float pay;
};
int main()
{
cout cout int num;
char name[20];
char sex;
float score;
float pay;
cin>>num>>name>>sex>>pay;
Teacher teacher1(num,name,sex,pay);
cin>>num>>name>>sex>>score;
Student student1(num,name,sex,score);
cout<<"student1:"<<endl;
student1.display();
Teacher teacher2=Teacher(student1);
teacher2.setpay(1500);
cout<<"teacher2:"<<endl;
teacher2.display();
return 0;
}

#include
#include
using namespace std;

class Teacher {
private:
int num;
string name;
string sex;

public:
Teacher(int num,string name,string sex) {
this->num = num;
this->name = name;
this->sex = sex;
}
void display(){}
}

#include
#include
using namespace std;

class Teacher {
private:
int num;
string name;
string sex;

public:
Teacher(int num,string name,string sex) {
this->num = num;
this->name = name;
this->sex = sex;
}

void display() {
    cout << "工号:" << num << endl;
    cout << "姓名:" << name << endl;
    cout << "性别:" << sex << endl;
}

};

class BirthDate {
private:
int year;
int month;
int day;

public:
BirthDate() {}

BirthDate(int year, int month, int day) {
    this->year = year;
    this->month = month;
    this->day = day;
}

void display() {
    cout << "生日:" << year << "年" << month << "月" << day << "日" << endl;
}

void change(int year, int month, int day) {
    this->year = year;
    this->month = month;
    this->day = day;
}

};

class Professor :public Teacher {
private:
BirthDate birthday;

public:
Professor(int num, string name, string sex, BirthDate birthday) :Teacher(num, name, sex) {
this->birthday = birthday;
}

void display() {
    Teacher::display();
    birthday.display();
}

void changebirth(int year, int month, int day) {
    birthday.change(year, month, day);
}

};

void main() {
Professor prof1(10000, "胡歌", "男", { 2018,4,24 });
prof1.display();
prof1.changebirth(1982, 9, 20);
cout << "*********************" << endl;
prof1.display();
}

#include
#include
using namespace std;
class Teacher {
public:
Teacher(int, string, char);
void display();
private:
int num;
string name;
char sex;
};
Teacher::Teacher(int n, string na, char s): num(n), name(na), sex(s) { }

void Teacher::display() {
cout<<"num:"<<num<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; }

class BirthDate {
public:
BirthDate(int, int, int);
void display();
void change(int, int, int); //
private:
int year;
int month;
int day; };

BirthDate::BirthDate(int y, int m, int d): year(y), month(m), day(d) { }
void BirthDate::display(){
cout<<"birthday:"<<year<<'/'<<month<<'/'<<
day<<endl;
}
void BirthDate::change(int y, int m, int d) {
year = y; month = m; day = d;
}

class Professor:public Teacher {
public:
Professor(int, string, char, int, int, int);
void display();
changebirth(int, int, int);
private:
BirthDate birthday;

};
Professor::Professor(int n,string na,char s,int y,int m,int d): Teacher(n,na,s), birthday(y,m,d) {}
void Professor::display() {
Teacher::display();
birthday.display(); }
void Professor::changebirth(int y,int m,int d){
birthday.change(y,m,d);
}

void main() {
Professor prof1(1001,"Wang",'f',1993,5,10);

prof1.display();
cout<<endl<<endl;

prof1.changebirth(1998,10,12);
prof1.display();
}

很基础的问题,多看书,要掌握牢靠

#include <iostream>
#include <string>

class Teacher {
public:
    Teacher(int num, const std::string &name, const std::string &sex) : m_num(num), m_name(name), m_sex(sex) {}
    ~Teacher() {}

    void display() const;

private:
    int m_num;
    std::string m_name;
    std::string m_sex;
};

void Teacher::display() const {
    std::cout << "工号: " << m_num << std::endl
            << "姓名: " << m_name << std::endl
            << "性别: " << m_sex << std::endl;
}

class BirthDate {
public:
    BirthDate(int year, int month, int day) : m_year(year), m_month(month), m_day(day) {}
    ~BirthDate() {}

    void display() const;
    void change(int year, int month, int day);

private:
    int m_year;
    int m_month;
    int m_day;
};

void BirthDate::display() const {
    std::cout << "生日: " << m_year<< "年" << m_month << "月" << m_day << "日" << std::endl;
}

void BirthDate::change(int year, int month, int day) {
    m_year = year;
    m_month = month;
    m_day = day;
}

class Professor : public Teacher {
public:
    Professor(int num, const std::string &name, const std::string &sex, int year, int month, int day)
        : Teacher(num, name, sex), m_bd(year, month, day) {}
    ~Professor() {}

    void display() const;
    void changebirth(int year, int month, int day);

private:
    BirthDate m_bd;
};

void Professor::display() const {
    Teacher::display();
    m_bd.display();
}

void Professor::changebirth(int year, int month, int day) {
    m_bd.change(year, month, day);
}

int main() {
    Professor prof1(111, "x先生", "男", 1999, 2, 2);
    prof1.display();

    prof1.changebirth(2000, 0, 0);
    prof1.display();

    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++程序设计 请给出完整程序参考
今年“双11”期间,5所高校争夺谁花费最多,请你实现编程。要求(1)设计一个类School,有3个私有数据成员,编号(id),学校名称(name)和花费(cost),还有相应的读入和输出这些数据成员的函数:getid() putid() getname() putname() getcost() putcost();(2)另外设计一个类Maxshool,构造函数从文件中aa.txt中读入5个学校的信息(文件格式见下,每行的三个数据分别表示编号、学校名、花费),另一函数求出花费最大的学校,并输出相应信息。 1001 北京大学 120.5 1002 清华大学 135.4 1003 浙江大学 156.8 1004 浙江工业大学 97.6 1005 复旦大学 95.3
c++程序设计,求完整程序参考
有3个学生stu[3],每个学生的数据包括学号、姓名、3门课的成绩(声明struct student结构体类型),从键盘输入3个学生的数据,要求调用子函数average求出3门课的总平均成绩(函数首部:int average(struct student *ps),函数返回值为3个学生3门课的总平均成绩,即9个成绩的平均值),调用子函数getMax找出所有成绩中最高分的学生序号,在主函数中输出三门课的总平均成绩,以及最高分学生的数据(包括学号、姓名、3门课成绩)。运行结果如图1所示,程序结构如下,请完善程序。 #include <stdio.h> struct student {//成员列表 int num; //学号 char name[20]; //姓名 float score[3]; //存放3门课成绩 }; float average(struct student *ps) // 返回3个学生的3门课的总平均成绩 { } int getMax(struct student *ps)// 返回3个学生3门课成绩中最高分的学生序号 { } void main() { struct student stu[3]; //定义其他变量 //从键盘输入3个学生的学号、姓名、3门课的成绩 //调用子函数average求出3个学生3门课的总平均成绩 //输出总平均成绩 //调用子函数getMax找出最高分的学生序号 //输出最高分学生的数据(包括学号、姓名、3门课成绩) } ![图片说明](https://img-ask.csdn.net/upload/201804/15/1523802279_242315.png)
C语言五子棋求源码参考
C语言课程设计有一个题让写五子棋程序出,哪位大神有五子棋的源码,参考一下
linux课程设计 自动答题系统
【课程设计选题九】自动答题系统 课程设计内容 利用 Qt Creater 等工具和 Linux 环境下随机、时间日期函数实现自动答题系统,自行 构建界面,构建简易题库,开始答题时,从题库中随机显示题目与备选答案,用户确认答案 后,自动计算出答题正确率和对正确答案的反应时间。 课程设计任务 1、实验者先要独立进行需求分析,确定任务需求; 2、根据任务需求,完成应用的功能设计; 3、根据功能设计,完成能够实现所需功能的详细设计; 4.使用 Qt Creater 等工具,实现自动答题系统的编写、调试工作; 5.将设计过程写出完整的课程设计报告,报告要求必须附上主要程序界面和程序源代码。 课程设计报告要求 课程设计必须使用规定的课程设计实验报告纸书写,并且要使用钢笔或用中性水笔,不能使 用圆珠笔。报告的内容主要围绕着设计过程展开。设计报告由封面、前言、目录、课程设计 任务书、正文、小结、参考文献,其中正文包括以下几个部分: 1.概述 这部分主要说明本课程设计的目的、任务和要求; 2.需求分析 根据任务和要求,将所作的需求分析进行清晰陈述; 3.功能设计 说明软件具备那些功能,并对这些功能和相关设计作详细的功能说明; 4.程序的设计与编制 这部分要对程序的设计进行说明,首先要对程序的总体进行说明,然后再说明各个部分 的功能;对于程序中要使用的主要数据结构要进行说明,说明各个数据项的作用;对主要的 程序代码的主要部分也要说明是如何实现的。 5.程序的测试与调试 程序代码完成后,需要对程序进行测试,看所编制的程序是否完成了设计功能,在测试 前一般要设计一下测试的方法或测试计划,由于程序比较小可以边测试边调试。 建议分两步进行,第一步对单个的功能进行调试(测试与调试),然后在对整个程序进行联 调,在调试的过程中尽量利用集成软件开放环境提供的调试功能。另外可以在你认为关键的 地方插入消息窗口来显示必要的变量是否是预期的值,以便确认程序是否正确地执行。 6.小结 主要说明设计中学到的东西和取得的经验总结; 7.附录 要求附上主要源代码,源代码要有注释。 8.参考文献
LABVIEW设计频谱分析仪
![图片说明](https://img-ask.csdn.net/upload/201911/02/1572671426_87476.png)![图片说明](https://img-ask.csdn.net/upload/201911/02/1572671432_960079.png) "由于波形未穿过中间参考电平足够多次,无法执行测量。请检查信号长度、参考电平和参考电平的单位。"请问如何解决?程序框图是否有问题?
C语言编写一个程序,急求,哪位大神可以帮帮忙啊
设计一个程序,能够读取安卓导出的*.vcf通讯录文件并正确识别信息,并正确操作: 1.可以在电脑上新建一个通讯录,2.也可以导出安卓手机上的通讯录,3.支持生成的文件在程序中和手机中都能使用,4.要添加的选项参考安卓手机上的联系人
关于“找你妹”的C++实现
同系的一个女生这学期上程序设计基础,她的大作业选题是“用C++实现找你妹”,现在到期末了,大作业憋不出来,现恭请各位大牛支招…… 主要问题如下: 1. 图形化界面用什么好? 2. 多线程操作如何实现? 如果各位有现成的代码的话,希望能提供参考一下!感激不尽!
学习不久的c++,想要用类做这个作业,自己写的一部分,但总是出错,很苦恼,有没有大佬写出来参考一下。
本课程设计将通过设计和实现一个任务清单(To Do List)应用,对C语言程序设计课程中学习 的选择结构、循环结构、数组等知识点进行综合运用;同时通过该应用的开发,对C语言程序 的设计与开发过程等做简要介绍。 课程设计 前言 本课程设计将通过设计和实现一个任务清单(To Do List)应用,对C语言程序设计课程中学习 的选择结构、循环结构、数组等知识点进行综合运用;同时通过该应用的开发,对C语言程序 的设计与开发过程等做简要介绍。 背景 任务清单通过将待做事项变成可以具体执行的行动,从而帮助你更好的管理、安排和执行你的 生活。简单来说,使用任务清单,就是写下你需要做的一切。但是对于那些虚无缥缈的想法或 项目,要把它们拆解成可执行的行动。例如你要完成一个宣传“时间管理”的演讲,这个项目本 身不可执行,因为你需要前期的准备才能宣传。所以你要写“1.收集演讲内容”、“2.完成演讲稿 和PPT文件”和“3.选定地点和演讲时间”。 1.显示菜单 我们使用命令行界面与应用的使用者(以下简称“用户”)进行交互,当应用运行时,系统应显 示出菜单,同时等待用户的输入,用户输入相应的指令后,应用根据用户输入的指令,执行相 应的操作。例如一个简单的菜单如下: 请输⼊指令: 1 添加新任务 2 查看现有任务列表 0 退出程序 提示: 菜单显示可以通过循环方式显示,用户输入退出程序的指令后,跳出循环。 较好的实现方法是定义一个单独的函数例如menu( )实现显示菜单的功能,主函数里调 用menu( )函数显示菜单。 2.定义数据结构 一个任务应该至少包括任务标题,任务具体的描述,任务的截止日期,任务的完成状态等信 息,我们采用类定义任务,使用字符串定义任务标题和任务的描述,使用整型定义任务截 止日期的年、月和日以及任务的完成状态。 我们使用数组表示任务列表,系统初始运行时,数组为空,用户输入一个新任务时,则在数组 中插入相应的元素,假设用户输入的任务数量总数不会超过100。 3.任务输入 用户在菜单选择页面输入相应的指令(例如输入1)后,应用输出提示信息,提示用户依次输 入新任务的标题、描述、以及截止日期等信息,并保存用户输入的信息(将用户输入的信息保 存在数组中)。 提示: 可以使用全局变量记录用户已经输入的任务个数(即数组中已经有内容的元素个数)。 可以使用switch语句实现用户输入相应指令后,执行不同的操作(例如输入1后,提示 用户进行输入;输入0后,退出程序)。 较好的实现方式是定义一个单数的函数例如add_task( )实现用户输入任务的功能, menu( )函数中调用add_task( )。 4.显示任务列表 用户在菜单选择页面输入相应的指令后,应用输出现有任务列表。 提示: 输出时,应不仅输出数据信息(例如任务a等),还应输出这一列数据代表的含义(例 如任务标题等)。 较好的实现方式是定义一个单数的函数例如list_task( )实现显示任务列表的功能,menu( )函数中调list_task( )。 5.完成任务 用户在菜单选择页面输入相应的指令后,应用输出现有任务列表,应用输出提示信息提示用户 输入要完成的任务编号,应用将该任务的任务完成状态改为已完成。 提示: 任务的完成状态数据类型为整型,可以用不同的数字代表不同的任务完成状态。例如0 表示项目未完成,1表示项目已完成等。 较好的实现方式是定义一个单数的函数例如finish_task( )实现完成任务的功能,menu( ) 函数中调finish_task( )。 6.保存到文件 用户在菜单选择页面输入相应的指令后,应用将现有的项目列表的内容按照一定的格式输出到 文本文件(.txt)中。 以下是我自己写的一部分 // TO DO A LIST #include<iostream.h> #include<string.h> class Date //日期 { int year,month,day; public: Date(int i=2000,int j=1 ,int k=1) { year=i;month=j;day=k; } void Dprint() { cout<<"截止日期:"<<year<<"."<<month<<"."<<day; } }; class Time //时间 { int hour,min; public: Time(int i=0,int j=0) { hour=i;min=j; } void Tprint() { cout<<"截止时间:"<<hour<<":"<<min; } }; class List:public Date,public Time //继承日期和时间 { char List_name[100]; //任务标题 char List_dis[100]; //任务描述 public: List (int a,int b,int c,int d,int e,char *name,char *dis):Date(a,b,c),Time(d,e) { strcpy(List_name,name); strcpy(List_dis,dis); } List() { } void Lprint() { cout<<"任务标题:"<<List_name<<endl; cout<<"任务描述:"<<List_dis<<endl; } }; void menu() //菜单显示 { cout<<"按1添加新任务"<<'\n'<<"按2查看现有任务"<<'\n'; } List Add_task(List A) { int a,b,c,d,e; char name[100],dis[100]; cout<<"请输入任务名称"; cin>>name;cout<<endl; cout<<"请输入任务描述"; cin>>dis;cout<<endl; cout<<"请输入截止日期(格式为2000 1 1)"; cin>>a>>b>>c;cout<<endl; cout<<"请输入截止时间(格式为18 32)"; cin>>d>>e; return A(a,b,c,d,e,*name,*dis); } void Print(List A) { A.Dprint;cout<<endl; A.Tprint;cout<<endl; A.Lprint; } void main() { }
c#中的richTextBox如何表示光标后面的文字内容?
我在写一个简易记事本程序,我参考word里的选择文字样式的设计,当我选择了文字样式后,如果我在word中选中了文字段落,那么该文字段落就会变成我选择的字体样式,如果我没有选中文字段落,那么就会在光标之后输入的文字就会变成我所选的文字样式,那么我想问如何表示光标之后即将输入的文字?
单片机PIC16F877A 产生200Hz的方波
在做设计,但是做了好久完全是一脸懵逼。 啥啥都不会,居然还想自己做一做试试。我真的太天真了。 第一步就卡住了,卡了一个星期了。真的,救救孩子吧T-T TASK1:单片机PIC16F877A,提供稳定并且可调的200Hz的方波信号; 网上能找到的都是51的单片机的,根据找到的例子暂时写了一个汇编语言的。但是编译不成功,运行环境是MPLAB。MPLAB也刚开始用,反正编译是不成功。反正是实在是挣扎不出来了,来问问大家。 现阶段还不太会用C写单片机。 希望: 1.大家帮我挑挑错; 2.如果用C写的话,到底要怎么写啊。有没有什么参考例子可以告知一下 漫天都是51的那种频率可调的方波正在在研究,实在是渣到不知道要怎么开始写。 【程序】死活编译不成功 ;----------------------------------------------------------------------------- ;中断服务程序 ;------------------------------------------------------------------------------- LOOP TEST BTFSC PIR1,TMR1IF ;为0(未溢出)时间跳。TMR1计数是否溢出中断 COMF PORTD GOTO TEST ORG 0004H BCF PIR1,TMR1IF ;清除TMR1中断标志,从而避免返回主程序后重复响应 INCF PORTD ;实现RD端口计数功能 RETFIE ;中断服务程序返回,程序指针自动加载出栈的断点地址;同时, ;将中断使能位恢复到使能状态,转向执行原来被强行中断的主程序,并处于应急事物准备阶段 ;------------------------------------------------------------------------------- ;主程序 ;------------------------------------------------------------------------------- ORG 0000H ;单片机复位地址 MAIN NOP BSF STATUS,RP0 ;选择数据存储器体1 CLRF TRISD ;定义RD端口输出 BSF PIE1,TMR1TE ;TMR1中断使能-将PIE1的TMR1TE置位 BCF STATUS,RP0 ;STATUS的RP0位清零,选择数据存储器体0- MOVLW B'00001010' ;-将B'00001010'传至W寄存器,使能低频振荡器 MOVWF T1CON ;将W寄存器的内容传至T1CON寄存器 CLRF PORTD ;RD端清零 MOVLW B'11000000' ;总中断和外围中断使能 MOVWF INTCON BSF T1CON,TMR1ON ;将T1CON的TMR1ON置位,即启动TMR1定时器 MOVLW FAIDH MOVWF TMR1 ;重新启动定时器开始计数,赋值 GOTO LOOP ;代表当前偏移地址,等待被中断 END
android 如果你想参考别人的UI 设计,怎么办
不知道大家有没有经历过这样的事: <br />手机上的应用程序,别人的界面设计的很漂亮,很想知道别人的怎么设计的,我应该怎么做呢? <br />在没有遇到这个工具前 我是通过破解别人的程序去查看他的设计的。 <br />那天无意中在 tools这个文件夹下发现这个文件 hierarchyviewer.bat,Google一下发现帮你分析应用程序UI布局。 <br />现在我们开始使用它吧: <br />第一步,双击(废话),出现一个灰色的界面,大家不要急,这是因为它没有发现运行的android程序呢 <br />第二步:启动android程序,(或者连接android手机),你会发现在 Hierarchy Viewer 的 Devices里有 emulator-5554(这个是我的模拟器),然后选择 start servier <br />如图 <br /> <br /><img src="http://dl.iteye.com/upload/attachment/342034/3c9855eb-7277-39c6-a620-1d9a4f65aca3.jpg" /> <br />选择 MainActivity,点击Load view Hierarchy <br /> 如图 <br /> <br /><img src="http://dl.iteye.com/upload/attachment/342036/02e3ef90-e448-39e0-bf87-d058503d51bf.jpg" /> <br />你还可以通过左下角的按钮交换到界面视图 <br /> <br /><img src="http://dl.iteye.com/upload/attachment/342044/ec18e7d3-6d53-3bae-a6fb-17acd720e7c8.jpg" /> <br /> <br />这就是你手机上看到的效果,看到蓝色的细线没有?你可以拖动他,右边会显示他的颜色的坐标 <br />你也可以把这些东西导出来,怎么样 好用吧<br/><strong>问题补充</strong><br/><div class="quote_title">gorymt 写道</div><div class="quote_div">还有这东西啊,感谢分享了!还蛮有用的 <br />问一下,我的怎么只能看到蓝线和当前所选控件的边框?而且蓝线不能拖动。。</div> <br />蓝线不能拖动是不是你没选中它哦
我想制作一个电子阅读器用stm32f103rct6,求住制作流程,网上有一个,不是很懂求指教
这是我从网上down的方法,有点不懂,关键就是编程还有MF RC522模块设计,求大虾指教,谢谢 1 硬件设计 1.1 硬件结构设计 RFID阅读器基于STM32单片机设计,芯片型号选择为STM32F103RBT6。该芯片为LQFP64封装, 内部有128 KB Flash和20 KB RAM,采用32位的ARM CortexTM-M3内核, 最高支持主频72 MHz,拥有2个SPI接口、 2个USART接口、1个USB接口、2个I2C接口和7个定时器。支持SWD和JTAG调试模式及IAP和ISP编程。 STM32单片机支持J-Link在线调试,J-Link调试有两种模式:JTAG调试和SWD调试。在线调试的便捷性,可以极大缩短程序的开发周期,提高开发效率。本系统采用的调试模式为SWD模式,只需2根SWDIO和SWCLK信号线,相比JTAG模式更加节约I/O口资源。阅读器的硬件结构框图如图1所示。 1.2 电源模块设计 系统可使用直流电源或电池供电,外部直流电源电压为8.4 V;电池电压为7.2 V,2 600 mA/h的锂电池。电源模块设计原理图如图2所示。 电源模块工作原理:当插座J1连接外部直流电源时,电流可经过D4给电池充电,直流电源经开关JP1连接IRF7404的G极,使IRF7404的D极与S极断开,则系统使用外部直流电源供电;当不使用直流电源、按下开关时,D4可将CD_POWER与电池断开,IRF7404的G极为低电平, IRF7404导通, 则系统使用电池供电。SYS_ POWER电压经过LM2576S-3.3转换为3.3 V为系统的各模块供电。 1.3 MF RC522模块设计 MF RC522是阅读器的读卡芯片,工作频率为13.56 MHz,工作模式支持ISO 14443A标准,芯片内部驱动器可以直接驱动阅读器的天线,无需其他电路。MF RC522具有3种接口模式:SPI接口模式、UART模式和I2C总线模式[3]。其中SPI模式的通信速度最快,可达到10 Mb/s。 MF RC522与主机接口模式有关的两个引脚为IIC和EA:当IIC引脚拉高时,表示当前模式为I2C模式,若IIC引脚为低电平时,再通过EA引脚电平来区分。EA为高电平时,表示SPI模式;为低电平时,则表示UART模式[4]。本设计中MF RC522与MCU采用SPI通信,与AT45DB161共享一个MCU的SPI2接口。 在系统中,MF RC522和天线电路一起作为单独模块使用,以便于更换与维修。天线模块与主板之间通过插座连接。 天线是阅读器中的一个重要组成部分。其作用是向外发射一组固定频率的电磁波,为射频卡提供能量、传递数据。 本系统中使用的是PCB天线,天线的设计关系到阅读器的读写距离,甚至关系到阅读器是否能正常与射频卡通信。RC522的天线设计须注意以下两点:(1)为了让射频卡能获取足够大的能量驱动本身的集成电路,设计天线时应该保证向外辐射足够大的电磁波; (2)为了提高读卡数据的准确性,需要考虑调谐电路的通频带,确保调制信号的准确性。 天线的匹配电路可分为:天线线圈、LC谐振电路和EMC滤波电路。RC522的天线匹配电路如图3所示,其中RQ为品质因素Q的匹配电阻,Lant为天线的电感。 1.4 显示模块设计 阅读器选用2.8英寸的TFT LCD触摸屏。在本系统中移植了GUI模块,使得人机交流界面操作更加便捷、友善。触摸屏为四线电阻屏,使用ADS7843作为A/D转换芯片。ADS7843是内置12位模/数转换、低导通电阻模拟开关的串行接口芯片,模/数转换输出范围0~4 095,工作电压2.7 V~5 V,参考电压VREF为1 V~VCC,转换电压的输入范围为0~VREF,最高转换速率为125 kHz[5]。ADS7843与MCU的接口为SPI1。 驱动层的程序基于硬件平台,主要是为中间服务层提供硬件驱动接口函数,完成底层的硬件操作。编写STM32的内部资源驱动程序时,调用了ST公司的固件库函数。 中间服务层主要是为上层应用程序提供库支持和服务接口。中间服务层的程序在驱动层程序上开发,并封装驱动程序的接口。如FATS文件系统是在AT45DB161的驱动程序上移植,为上层的应用程序提供文件创建、写入、读出、删除等服务;GUI模块是在LCD显示驱动程序上开发,将LCD驱动的画点画线函数封装成不同的控件,在控件上加载相应的数据结构,为界面应用程序提供控件的创建、销毁等操作。 应用层程序是面向用户,通过调用中间服务函数和库函数来完成相应的数据处理和控制功能等。 2.2 Free RTOS实时操作系统 Free RTOS是一个轻量级的操作系统,基本满足较小系统的需要。该操作系统完全免费且源码公开,同时具有可移植、可裁减、调度策略灵活的特点。 在本设计中Free RTOS的任务之间的关系如图5所示。 2.3 GUI模块 GUI模块是一个中间服务层程序,为显示应用程序提供控件显示服务。如控件的显示位置、尺寸、颜色以及控件响应的回调函数入口地址等。在本系统中GUI控件包含有文本框、编辑框、进度条、图像框、下拉列表、按钮等。每个控件都可以注册一个回调函数,这个函数对应了该控件的响应功能函数。 2.4 FAT文件系统 FatFs文件系统是中间服务层程序,建立在AT45DB161驱动程序上,文件系统提供了磁盘I/O接口和应用程序接口。磁盘I/O接口函数位于diskio.c文件,常用的接口函数有读磁盘disk_read()和写磁盘disk_write()。这两个函数分别调用AT45DB161驱动程序的读扇区和写扇区函数。在文件系统中一个扇区的大小为512 B,与AT45DB161的页大小一致。 为了使FatFs文件系统与Windows的文件系统兼容,要使用FAT32格式来格式化磁盘。f_open()函数与f_close()函数必须要成对出现,即打开一个文件操作完成后必须要关闭这个文件。在对文件进行操作前必须先调用f_mount(0,&Fs)函数对工作区进行注册,操作完成后也需要调用f_mount(0,NULL)函数对工作区进行注销。 2.5 MF RC522驱动程序流程 本系统中使用的射频卡为Mifare1 S50,也简称为M1卡,该卡有16个扇区,每个扇区有4个块,每个块可存储16 B的数据。MF RC522对M1卡进行读写控制,分别有寻卡、防碰撞、选卡、认证、读块和写块等过程。 MF RC522驱动程序流程如下: (1)寻卡:寻找感应区内所有符合ISO14443A标准的卡,寻卡成功后,返回卡的类型。 (2)防碰撞:通过防碰撞命令查看多张M1卡之间是否发生碰撞,若发生碰撞,使用防碰撞算法进行处理;若未发生碰撞,则MF RC522与M1卡进行通信,如果通信成功,读出M1卡中的序列号。 (3)选卡:根据M1卡的序列号进行选卡。 (4)密码验证:密码验证模式有验证A密钥和验证B密钥,通过这两种模式来验证块地址、密码和卡片序列号。 (5)读数据块:根据提供的块地址读取块数据。 (6)写数据块:根据提供的块地址写入块数据,操作完成后命令M1卡进入休眠状态。 2.6 AT45DB161D驱动程序 AT45DB161D是一个外部Flash存储器,拥有2 MB的容量,分为4 096个页,可配置为每页512 B,还拥有2个512 B的缓冲区。在主存储器正在编程时,缓冲区允许接收数据,且支持数据流式写入。AT45DB161的初始化包括STM32的引脚配置和SPI2接口配置,初始化之后才能进行读写操作。读写页操作流程如下: (1)读页操作流程 ①检测AT45芯片是否忙。若忙,则继续读忙,直到芯片空闲;若芯片空闲,则执行流程②。 ②向AT45芯片写入命令0x53和页地址。0x53命令是将Flash中整页的数据读到缓冲区1中。 ③向AT45芯片写入命令0xD4和页偏移地址及数据长度。0xD4命令是读缓冲区1中的数据。 ④读页操作完成。 (2)写页操作流程 ①检测AT45芯片是否忙。若忙,则继续读忙,直到芯片空闲;若芯片空闲,则执行流程②。 ②向AT45芯片写入命令0x84、页偏移地址及需要写入的数据。0x84命令是将数据写到缓冲区1中。 ③向AT45芯片写入命令0x83和页地址。0x83命令是将缓冲区1中的数据写到Flash指定的页。使用0x83命令,写入前不需要对页进行擦除操作。 ④写页操作完成。 3 性能测试与实验分析 3.1手持式阅读器的功能测试 需要测试的功能有对M1卡读写、文件读写、与PC机数据通信等功能。为了便于测试上述功能,将本设计应用在校园消费系统上进行测试。测试步骤如下: (1)用串口线将RFID阅读器与PC机相连。运行PC机的上位机程序,设置串口参数为:波特率9 600 b/s,数据位8 bit,停止位1 bit,无校验位,无流控制。 (2)对M1卡读写功能测试。通过上位机软件发送指令和数据至阅读器,阅读器将指定数据写入M1卡。然后再将M1卡数据读出,传回给上位机软件显示,并比较写入数据和读出数据,如图6所示。 (3)文件读写测试。由于读M1卡的数据以文件的形式存放在阅读器的外部Flash中,该Flash由文件系统管理。用USB线连接阅读器和PC机,阅读器以盘符的形式在PC机上显示,从磁盘中将文件复制到PC机上,用上位机软件打开读出软件,记录测试数据。 (4)与PC机数据通信测试。以上两项测试通过则表明阅读器能与PC机进行正常通信。 3.2 性能测试与分析 系统的性能测试主要是锂电池的续航时间及RFID有效读卡距离等。系统性能测试如表1所示。 (1)锂电池的续航时间需要分别测试最长待机时间和连续工作时间。 ①最长待机时间测试:将锂电池充满电,阅读器使用电池供电,将阅读器开机而不使用,记录待机时间。 ②连续工作时间测试:将锂电池充满电,阅读器使用电池供电,编写一个测试程序,让阅读器定时每30 s读取M1卡信息。记录工作时间。 ③用万用表分别测量阅读器的待机消耗电流和工作消耗电流,并记录电流值。 (2)RFID有效读卡距离。将阅读器固定不动,M1卡平行放在阅读器天线平面的正上方200 mm处,将M1卡缓慢向阅读器移动,直到阅读器能正确读取M1卡中数据为止。测量卡与阅读器天线之间的距离并记录数据。 通过对上述的系统功能、性能进行验证,分析实验测出的相应数据,系统的功能基本能达到了初期预设的技术指标。 本文设计的阅读器有良好的人机交流界面,可通过触控操作,显示屏可显示M1卡中存储信息。经过实验证明,在70 mm的范围内能准确读写M1卡中的数据。该阅读器具有超长待机和低功耗的功能。经过实际功能测试,已成功地将该设计应用于校园消费系统。 专注
Swing桌面单机应用程序和数据库的问题
大家好,我工作中是搞Java web的,对swing 一直是有兴趣,但是确实没有实际的去使用。本着我对java的爱好,所以我最近计划开发一个swing的桌面单机应用程序,主要功能是记录管理家里面的财务状况,由于数据结构可能比较复杂,内容比较多,所以需要用到数据库,而不用xml文件。 目前我还在系统设计、数据库设计、个别组建开发阶段。(PS: 参考网上的一个日期控件样式,自己做了一个,感觉还是很不错的 ^_^) [img]http://dl.iteye.com/upload/attachment/533345/4ffb6c56-f4de-3853-b32d-75f3b5f8ba2f.jpg[/img] 开发环境是这样JDK6(视情况是否采用JDK7) 开发工具:Eclipse 3.7 +WindowBuilder Pro 数据库: mysql5 从一开始就有一个问题一直在纠结我,就是数据库服务的问题。如果我把mysql服务启动,我连接数据库,操作数据库肯定没有问题。但是我将来发布程序的时候, 我总不会把mysql这个数据库也打包一起发布吧?也许我就需要一个数据库文件和一个最基本的服务,让我能够访问mysql的数据库。 请做过桌面单机带数据库应用的各位大侠,帮忙指点一二。告诉我有什么的解决办法或者代替方案,谢谢。但是我肯定不采用文件方式保存数据的方式。
请各位老手帮我看看我的代码有什么问题,为什么编译通过了但是运行有错误。
做的数据结构课程设计,中缀算术表达式求值但是课程还没有学,参考书上代码编的。 代码如下: #include<malloc.h> #include<stdio.h> #include<ctype.h> #include<stdlib.h> #define MAXSIZE 100 typedef int elemtype; char ch[7] = { '+','-','*','/','(',')','#' }; int f1[7] = { 3,3,5,5,1,6,0 }; int f2[7] = { 2,2,4,4,6,1,0 }; int n = 0; typedef struct sqstack { //顺序栈结构 elemtype stack[MAXSIZE]; int top; }sqstack; //1.把操作符转换成相应的数字 elemtype cton(char c) { switch (c) { case'+': return 0; case'-': return 1; case'*': return 2; case'/': return 3; case'(': return 4; case')': return 5; default: return 6; } } //2.通过原来的设定比较两个字符的优先级 char Compare(char c1, char c2) { int i1 = cton(c1); int i2 = cton(c2); if (f1[i1] > f2[i2]) return '>'; else if (f1[i1] < f2[i2]) return '<'; else return '='; } //3.进行四则运算,并返回结果 int Operate(elemtype a, elemtype t, elemtype b) { int sum; switch (t) { case 0: sum = a + b; break; case 1: sum = a - b; break; case 2: sum = a*b; break; default: sum = a / b; } return sum; } //5.取栈顶元素 elemtype Gettop(sqstack s) { if (s.top == 0) { printf("ERROR,underflow\n"); return 0; } else return s.stack[s.top]; } //6.初始化栈 void Initstack(sqstack *s) { s->top = 0; } //7.出栈 void Pop(sqstack *s, elemtype *x) { if (s->top == 0) printf("ERROR,Underflow\n"); else { *x = s->stack[s->top]; s->top--; } } //8.入栈 void Push(sqstack *s, elemtype x) { if (s->top == MAXSIZE - 1) printf("ERROR,Overflow!\n"); else { s->top++; s->stack[s->top] = x; } } //9.若S为空栈,则返回TURE,否则返回FALSE bool StackEmpty(sqstack S) { if (S.top == 0) return true; else return false; } //4.主要的表达式计算函数,返回表达式计算结果 int EvaluateExpression() { char c; int i = 0, sum = 0; int k = 1, j = 1; elemtype x, a, t, b; sqstack OPTR, OPND; Initstack(&OPTR); Push(&OPTR, cton('#')); Initstack(&OPND); c = getchar(); while (c != '#' || ch[Gettop(OPTR)] != '#') { if (isdigit(c)) { sum = 0; while (isdigit(c)) { if (!j) { sum = sum * 10 - (c - '0'); } else sum = sum * 10 + (c - '0'); c = getchar(); } Push(&OPTR, sum); j = 1; } else if (k) { switch (Compare(ch[Gettop(OPTR)], c)) { case'<':Push(&OPTR, cton(c)); c = getchar(); break; case'=':Pop(&OPTR, &x); c = getchar(); break; case'>':Pop(&OPTR, &t); Pop(&OPND, &b); Pop(&OPND, &a); Push(&OPND, Operate(a, t, b)); break; } } } return(Gettop(OPND)); } //10.主函数 int main() { int result; printf("**********欢迎使用中缀算数表达式求值程序**********\n"); printf("请输入您要计算的表达式(以#号结束)\n"); result = EvaluateExpression(); printf("表达式的计算结果是:%d\n",result); return 0; } ``` ```
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
关于用Hibernate往Oracle里存长字符串的问题
今天老师让做一个网上商城的项目,其中里面有关于产品描述的模块,我想把这些描述存到oracle数据库中,可是总是添加失败 请问存较长的字符串有什么限制吗? 我要存入的字符串 "本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。 " 就这么多字,按理说不算太多啊~~~~ 我想把这些字存进去,应该在怎么解决啊?
怎么能观察出JVM的Old区中存储的都是那些对象
操作系统:Solaris10 JDK:SUN JDK1.5.0_17 [b]问题补充:[/b] jmap这个命令我用了,但我发现只是显示出了实例的数量。看不出来哪些对象是在Old区的。你说用Heap工具分析,是什么Heap工具呢?我用了Optimizeit,也是只能看出实例的数量和引用关系,看不出哪些对象是在Old区的。 [b]问题补充:[/b] 我现在的GC策略是这样的,堆最大,最小都是1024m,young区是512m,对象在from和to之间拷贝5次然后扔到old区。回收算法用的是cms。我们的应用对吞吐量的要求比较高,绝大多数都是短生命周期的对象。我在windows下用optimizeit检查了,不存在内存泄漏,但发现在并发量比较大的时候,有几个对象的实例数量是一直在增长的。但当客户端的程序停止的时候,这些对象又是可以被回收的。我们的程序是运行在solaris上的,由于我没下载到optimizeit的solaris安装文件,或者是类似工具的solaris安装文件,因此不确定,olc区中的那些对象是否就是那几个不断增长的对象。我用jvmstat看了,old区涨的很快。而且程序运行大概20分钟左右就core dump了。有的时候会直接把服务器整死。因此我想看看有没有什么手段来看看old区的对象存储的都是什么来帮我肯定一下,就是那几个对象再搞鬼。 [b]问题补充:[/b] 其实这个问题,在昨天临下班之前的10几分钟突然有了进展。终于排查出,我们的程序是没有内存泄漏的。而是由于传输层的拥挤造成的。设置了socket的readReceiveBuffer和sendBuffer之后这个问题得到了缓解。但是为什么会因为传输层的拥挤导致我们old区的对象很多,这点需要再好好研究一下mina框架。 [b]问题补充:[/b] [quote]根据你的说法, 我觉得你的,配置有问题的, 为什么设计-Xmn512m, 这个是很关键的, 如果你要求很低的world stop. 那么把-Xmn设置到128 或者256m, core dump 的原因可能是因为你CMS机制不起作用, 导致并行收集过多产生的。 另外,也跟你的JAVA的版本有关系。 CMS最好使用JAVA6的版本, 在JAVA5上, 这个技术并不是非常成熟。如果是JAVA5, CMS的启动策略是有BUG的, 这个你可以参考我的BLOG : http://sdh5724.iteye.com/admin/blogs/283977 [/quote] young区默认的大小是堆的1/4,但是对于吞吐量优先的程序,可以设置为堆的1/2。因为对象的生命周期短,应该尽可能的让对象在young区就被回收掉,免得被拷贝到old区,再进行回收时,暂停时间会相对较长。网上有些资料显示了,对于吞吐量优先的程序,应该设置一个较大的young区的说法,Sun的网站上也有,将堆设置为3G,young区设置为2G的例子。你说的CMS最好在JAVA6下用,这个我真的不知道。听说JAVA6的GC机制要比JAVA5好。这个我回去试试。 [quote]readReceiveBuffer和sendBuffer 是操作系统参数, 如果你的OS内存很紧张, 也可能导致系统资源不够。 这个参数应该调整成你业务需要的发送接收的大小, 不可以盲目扩大, 每个TCP连接都会占用这个BUFF的大小。 我建议你一般设置成8K。[/quote] 你说的这个我很关系,对这两个参数我也不太了解,但的确是缓解了问题,而且很明显。目前我们只使用了一个TCP连接。对于你说的“这个参数应该调整成你业务需要的发送接收的大小”,我不太明白是什么意思。主要是我不清楚我们需要的大小是多少啊,呵呵。你说的8K,这个是默认配置。但我们使用这个配置时,程序最多只能跑20分钟,程序就死掉了。这涉及到tcp的传输,因为跟我们对接的另一端,他们是C语言写的,目前他们没有设置缓冲区大小,应该用的也是默认的,但C程序我不太了解,不知道是多少。我把这个缓冲区设置为Integer的最大值了,好像是2G(我也觉得有点儿夸张),程序大概跑了四十分钟,服务器宕机了。 [quote]我觉得, 你是不是因为TCP的连接断开后, 没有释放TCP连接? socket.close(). 会导致大量的time_wait的连接, 你要仔细看下。 OS会在比较长的时间回收[/quote] 我们现在就一个TCP链接,出现问题时,链接没断过。我们应该是没有内存泄漏的,我用Optimizeit检查了好多次了。 很高兴与你讨论这个问题,我感觉现在问题出现在TCP的缓冲区上,应该让C那边也设置一个较大的缓冲区,然后再看看问题能不能得到解决。 [b]问题补充:[/b] 经过几天的测试,总结如下: 1.机器宕机居然是机器的问题,那个机器,不管上面运行的是我们的应用程序还是模拟器,都会宕机。换了其他的几台服务器,都没出现宕机的问题。 2.buffer的设置:我们一个消息的长度是20个字节。每秒钟2000条消息,就是40000个字节,因次buffer设置为40000。但最后还是没有设置这个值采用默认的。因为问题可能不在这里。 3.目前的问题,使用mina的client接收消息时,每秒钟2000条,大概运行一段时间之后,就会mina就会接收到一个很大的包(100K以上)。这导致我们应用层解析这个消息的时候调用层次过多,抛出stackOverFlow的异常,并且主动把连接关闭了。其实,我们可以修改一下我们的代码,避免抛出这个异常。但这不是问题的根源,因为mina传了一个这么大的数据包给应用层就是不正常的。于是我看了一下mina的代码,在read的时候,会根据接收到的消息的长度,来调整allocate的长度。这个上限是receiveByteBuffer的2倍。我尝试修改了mina的代码,让他每次固定allocate 1024个字节。但是问题依然存在,目前没找到解决方法。为了规避这个问题,只是让服务端不给我们发送这个应答,这在业务上是允许的。但没找到问题的根源总是感觉心里堵的荒,打算试试grizzly。
如何控制各种类的静态成员对象的创建顺序?
想用C++实现类似Java的反射机制,参考网上的设计方案形成了如下代码: 基类声明和实现: protocolui.h: ``` #ifndef PROTOCOLUI_H #define PROTOCOLUI_H #include<map> #include <string> class UIProtocolDev; struct UIProtocolDevInfo; typedef UIProtocolDev* (*_tfnCreateUI) (void); class UIProtocolDev { static std::map<std::string, _tfnCreateUI> m_uiInfoMap; public: UIProtocolDev() {} virtual ~UIProtocolDev() {} static bool registerUI(UIProtocolDevInfo* pUiDevInfo); static UIProtocolDev* CreateUI(std::string type); }; struct UIProtocolDevInfo { std::string _type; _tfnCreateUI _fnCreateUI; UIProtocolDevInfo(std::string const type, _tfnCreateUI fnCreateUI); }; #endif //PROTOCOLUI_H ``` protocolui.cpp ``` #include "protocolui.h" std::map<std::string, _tfnCreateUI> UIProtocolDev::m_uiInfoMap; bool UIProtocolDev::registerUI(UIProtocolDevInfo *pUiDevInfo) { if (pUiDevInfo == NULL) return false; m_uiInfoMap[pUiDevInfo->_type] = pUiDevInfo->_fnCreateUI; return true; } UIProtocolDev *UIProtocolDev::CreateUI(std::string type/*, QObject *parent, logstream::ILogHost * const logHost, const char *strIdentifier*/) { if (m_uiInfoMap[type] != NULL) { return m_uiInfoMap[type](/*parent, logHost, strIdentifier*/); } return NULL; } UIProtocolDevInfo::UIProtocolDevInfo(const std::string type, _tfnCreateUI fnCreateUI) { _type = type; _fnCreateUI = fnCreateUI; UIProtocolDev::registerUI(this); } ``` 继承类声明和实现: uiprotocolserialport.h: ``` #ifndef UIPROTOCOLSERIALPORT_H #define UIPROTOCOLSERIALPORT_H #include "protocolui.h" #include <QObject> #include <string> class Test : public UIProtocolDev { public: Test() {} virtual ~Test() {} static UIProtocolDev* CreateUI(void) { return new Test(); } private: static UIProtocolDevInfo m_devinfo; }; #endif // UIPROTOCOLSERIALPORT_H ``` uiprotocolserialport.cpp: ``` #include "uiprotocolserialport.h" UIProtocolDevInfo Test::m_devinfo("Test",(_tfnCreateUI)(Test::CreateUI())); ``` main.cpp: ``` void main(void) { UIProtocolDev * pdev = UIProtocolDev::CreateUI("Test"); delete pdev; } ``` 使用MinGW-w64 4.9.2编译链接后,运行时报告程序崩溃; 尝试将uiprotocolserialport.h和uiprotocolserialport.cpp中的代码分别移动到uiprotocol.h和uiprotocol.cpp中后,程序正常执行并正常结束。 由此怀疑在继承类与基类不在相同的文件中时,MinGW-w64的GCC编译器没有正确的安排基类静态成员变量UIProtocolDev::m_uiInfoMap和继承类静态成员变量Test::m_devinfo的创建顺序,使得继承类的静态成员先于基类的静态成员创建,但由于继承类的静态成员构造函数在执行时需要使用基类的静态成员,这造成访问未初始化内存区的错误。 因此,请问: 1.如何控制不同文件之间各种类的静态成员对象的创建顺序呢? 2.若无法控制创建顺序,有没有变通的办法来实现类似JAVA的反射机制呢?
java正则表达式实现字符串匹配
问题描述: resultStr = "@inproceedings{1031197, author = {S. Alireza Aghili and Divyakant Agrawal and Amr El Abbadi}, title = {Protein structure alignment using geometrical features}, booktitle = {CIKM '04: Proceedings of the thirteenth ACM international conference on Information and knowledge management}, year = {2004}, isbn = {1-58113-874-1}, pages = {148--149}, location = {Washington, D.C., USA}, doi = {http://doi.acm.org/10.1145/1031171.1031197}, publisher = {ACM}, address = {New York, NY, USA}, }," 要将resultStr中{}内部的内容识别出来,并与 = 前的内容匹配。即得到 author的值为S. Alireza Aghili and Divyakant Agrawal and Amr El Abbadi, title的值为Protein structure alignment using geometrical features,等等。 我的做法有些问题,运行结果不正确,请大家指点,谢谢! /** * 对BitTex输出格式识别 * */ public static GlobalMode bitTex_identify(String resultStr) { GlobalMode obj = new GlobalMode(); Pattern p = Pattern.compile("(\\s[\\w]+\\s=)(\\s\\{.*?},)"); Matcher m = p.matcher(resultStr); String reStr[] = new String[100]; int i = 0; while (m.find()) { i++; reStr[i] = (m.group(1) + m.group(2)).trim(); String value = reStr[i].substring(reStr[i].indexOf("{") + 1, reStr[i].lastIndexOf("}")); if(reStr[i].startsWith("author")){ obj.setAuthor(value); continue; } if (reStr[i].startsWith("title")) { obj.setTitle(value); continue; } if (reStr[i].startsWith("journal")) { obj.setJournal(value); continue; } if (reStr[i].startsWith("booktitle")) { obj.setBooktitle(value); continue; } if (reStr[i].startsWith("year")) { obj.setYear(value); continue; } if (reStr[i].startsWith("month")) { obj.setMonth(value); continue; } if (reStr[i].startsWith("pages")) { obj.setPages(value); continue; } if (reStr[i].startsWith("volume")) { obj.setVolume(value); continue; } if (reStr[i].startsWith("number")) { obj.setNumber(value); continue; } if (reStr[i].startsWith("publisher")) { obj.setPublisher(value); continue; } if (reStr[i].startsWith("location")) { obj.setLocation(value); continue; } if (reStr[i].startsWith("addresultStrss")) { obj.setAddress(value); continue; } if (reStr[i].startsWith("isbn")) { obj.setIsbn(value); continue; } if (reStr[i].startsWith("doi")) { obj.setDoi(value); continue; } if(reStr[i].startsWith("issue_description")){ obj.setTitle(value); continue; } if(reStr[i].startsWith("issue_date")){ obj.setYear(value); //obj.setYear(value.substring(value.indexOf(" "))); continue; } } return obj; } 补充: 1、感觉这么写if语句太繁琐,但不知道怎么改。 2、程序其它地方要用到返回的author,title等值,如:要用参考文献的格式将这些值打印出来。 [b]问题补充:[/b] 不好意思,之前我说的问题不清楚。我是在得到这样的数据之后需要再处理 author =S. Alireza Aghili and Divyakant Agrawal and Amr El Abbadi title =Protein structure alignment using geometrical features booktitle =CIKM '04: Proceedings of the thirteenth ACM international conference on Information and knowledge management year =2004 ... 最终目的是能随意调用author,title 这些值。如:要用参考文献的格式将这些值打印出来。 [b]问题补充:[/b] 您所说的数据项是指author这些么? 那是不是还要用if-else语句来判断? [b]问题补充:[/b] Sorry,我总是表达的不够清楚。 我是想定义一个实例obj,将author,title这些对应的值分别赋值给obj.author, obj.title等,最后可以随意调用obj.author, obj.title。 我的代码基本上能实现这个功能,但是觉得用这么多的if-else语句有些繁琐,是否有简单高效的实现方法呢?请指教,谢谢~
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问