C#然后使用IF语句判断一个输入的字符是否为数字

C#如何用if else语句判断输入的值为数字类型,如果不是数字提示重新输入,如果是数字则进行else输出。

2个回答

int x;
if (int.TryParse(textBox1.Text, out x))
{
是数字
}
else
{
不是数字
}

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复音尘啊: 你这个不是数字啊,是数字字母的组合,那么 str是你的输入,meta是你允许的字符 string meta = "12345667890ABCDEF"; if (str.All(x => meta.Contains(x))) ... else ...
7 个月之前 回复
asd497907957
音尘啊 https://blog.csdn.net/asd497907957/article/details/92802147 是这个网址 我是想实现输入类型不正确会提示重新输入 但是输入的类型错误就会报错
7 个月之前 回复
asd497907957
音尘啊 我用控制台应用写 我试了你的方法 然后如果你输入的不是数字 会报错不会进入else 就是回答一个相关的问题,我写在博客中 您帮我看下吧!https://mp.csdn.net/mdeditor/92802147#
7 个月之前 回复
asd497907957
音尘啊 我用控制台应用写 我试了你的方法 然后如果你输入的不是数字 会报错不会进入else 就是回答一个相关的问题,我写在博客中 您帮我看下吧!
7 个月之前 回复

用 isnumberic 好像是这么拼写的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
这是一个关于C语言字符串初始化的问题和if语句问题
``` #include<stdio.h> #include<stdlib.h> int main() {int id=0; int ceshi=2; char a[20]={'a','baaa','c'}; for(int num;num<20;num++) { if(a[num='\0']) break; id++;} printf("%d",id); system("pause"); return 0;} ``` 这是我写的一段程序,我由两个疑问。 第一呢,我声明了字符数组a[20]。我觉得每个元素只能是一个字符,但是把baaa写在一起,编译器也不会报错,这个令我觉得奇怪,为什么会这样呢? 第二呢,if 后面接的是a[num='\0'],这是一个数组,不是一个true类型或者false类型的判断条件,这么做的话,什么时候执行if下面包含的语句,是未知的。 这两个问题都是编译器的错误吗?
关于if语句和switch语句 不知道怎么打 麻烦大家解一下了,万分感激! c语言 switch
#include void main() double a; printf("%f",a); scanf("%f",&a); switch(a) { case 'a':printf("%f",a); break; default:printf("输入的字符不是字母\n"); } } 显示错误,不知道怎么打下去了 后面还有但是不知道怎么打了,求解! 题目如下: 输入一个字符,判断字符必须为字母,为其它字符则输出“输入字符不是字母” 然后输入的字符改为当前字符的下一个字符,例:c改为d,Z改为A。注意大小写不能改变。
C# Image类里的方法无法调用,求解
**想使用image.FromStream方法显示存储在数据库中的图片。 但是发现FromStream不能被顺利调用 ,说image.exe文件缺失?用的版本是2010的C# 使用了命名空间using System.Drawing.Imaging; 不知道有什么方法可以解决,怎么样才能正常调用image下的方法,现在下面只能看到Form1控件,system{}** 具体方法的代码如下: private void button2_Click(object sender, EventArgs e) { try { //创建数据库连接字符串 string strConn = "Server=.;DataBase=tempdb;Integrated Security=True"; //创建SqlConnection对象 SqlConnection connection = new SqlConnection(strConn); //打开数据库连接 connection.Open(); //创建SQL语句 string sql = "select blodid,blobdata from blobtest order by blodid"; //创建SqlCommand对象 SqlCommand command = new SqlCommand(sql,connection); //创建DataAdapter对象 SqlDataAdapter dataAdapter = new SqlDataAdapter(command); //创建DataSet对象 DataSet dataSet = new DataSet(); dataAdapter.Fill(dataSet, "BLOBTest"); int c = dataSet.Tables["BLOBTest"].Rows.Count; if (c > 0) { Byte[] mybyte = new byte[0]; mybyte = (Byte[])(dataSet.Tables["BLOBTest"].Rows[c-1]["BLOBData"]); MemoryStream ms = new MemoryStream(mybyte); pictureBox1.Image = Image.FromStream(ms); } connection.Close(); }
这是一个关于C语言scanf语句的吃字符问题
``` #include<stdio.h> #include<stdlib.h> int main() { int month=0; int day=0; int result=0; int days[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入您选择的月日"); scanf("%d,%d",&month,&day); for(int num=0;num<12;num++) { if(num<month) result+=days[num]; else result+=day; } printf("%d",result); system("pause"); return 0;} ``` 以上是我的全部代码,执行scanf语句的时候,在输入第一个整数后,输入逗号,在输入第二个整数,会吃掉第一个数字,这是为什么呢
C#用ShowDialog()跳转界面不能加载出东西 是我加了判断语句的问题嘛 执行不出来第一张那样的效果
![图片说明](https://img-ask.csdn.net/upload/201712/07/1512617034_634179.png)![图片说明](https://img-ask.csdn.net/upload/201712/07/1512617017_901161.png)![图片说明](https://img-ask.csdn.net/upload/201712/07/1512616880_207302.png)using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsFormsApplication1 { public partial class login : Form { public login() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { comboBox1.SelectedIndex = 0; } private void textBox2_TextChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); //创建数据库连接字符串 SqlConnection connection = new SqlConnection(connString); //通过connection对象创建数据库连接 con.ConnectionString = "server=DESKTOP-3U564EO;database=library;uid=xxpxxplove;pwd=feinibuaiv5"; string sql = string.Format("select count(*) from {2} where num='{0}'and password='{1}'", textBox1.Text,textBox2.Text , comboBox1.Text); //创建sql语句 con.Open(); //打开数据库连接 //创建command对象 SqlCommand command = new SqlCommand(sql,con); int num = (int)command.ExecuteScalar(); //执行sql查询语句,ExecuteScalar()返回查询结果集中的第一行的第一列 if (num > 0) { MessageBox.Show("欢迎进入成绩管理系统!", "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information); //弹出登录成功消息框 this.Hide(); //当前窗口(登录窗口)不显示 if (comboBox1.Text=="Administrator") { Form AMain = new Form(); AMain.ShowDialog(); this.Close(); this.Dispose(); } else { Form RMain = new Form(); RMain.ShowDialog(); this.Close(); this.Dispose(); } } else { MessageBox.Show("您输入的用户名或密码错误!", "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } con.Close();//关闭数据库连接 } private void button2_Click(object sender, EventArgs e) { this.Close(); } } }
C语言 如何将 两字符串的比较结果 作为 if 的判断条件
例如我有兩個字符串 ``` char i[9][13], j[13]; ``` 应该如何正确地將 i[2(或由前面的语句提供的一个数作)] ==(或!=) j 作为 if语句的判断条件?(或!=) 我试过 ``` if(strcmp(i[n], j) !=0) //string.h ``` 和 ``` if(i[n]!=j) ``` 上面两个if代码片段都嵌套与一个for代码块,n由for提供 程序都没办法正确执行这个if判断,而是直接跳过了if代码块,执行下面的语句 ``` #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *input_file, *output_file; int total_people, giving_to, accepting, having[9], money_counter; char giver[9][13], receiver[9][13], the_giver[13], the_recever[13]; int people_scaner, people_judger; int test_count; int main () { input_file = fopen("gift1.in", "r"); output_file = fopen("gift1.out", "w+"); fscanf(input_file, "%d\n", &total_people); //read all name to a array called `giver[][]` and `receiver[][]` people_scaner = 0; while(people_scaner < total_people){ fscanf(input_file, "%s", giver[people_scaner]); /* *&giver[people_scaner] = &receiver[people_judger]; */ people_scaner ++; } //read the first of who giving gift to others to `the_giver` fscanf(input_file, "%s", the_giver); //if the guy who is the first person on the list of `giver[]` eles increase the people_judger people_judger = 0; if(strcmp(the_giver, giver[people_judger]) != 0){ people_judger ++; } //according to the number of last step, scan next two number to &having[people_judger] and giving_to, giving_to will be resuing fscanf(input_file, "%d%d", &having[people_judger], &giving_to); accepting = having[people_judger] / giving_to; for(people_scaner = 0; people_scaner < giving_to; people_scaner++){ //read a recever fscanf(input_file, "%s", the_recever); printf("%s\n", the_recever); //put the gift from the giver to the recever people_judger = 0; if(strcmp(the_giver, giver[people_judger]) != 0){ //这里 people_judger++; printf("%d\n", people_judger); continue; } having[people_judger] = accepting + having[people_judger]; people_scaner++; } fclose(input_file); fclose(output_file); return 0; } ``` 所读文件 ``` 5 dave laura owen vick arm dave 200 3 laura owen vick owen 500 1 dave arm 150 2 vick owen laura 0 2 arm vick vick 0 0 ``` 题目来源 USACO Greedy Gift Givers
C#中连接Access的问题
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb;//连接Access数据库 namespace Login { public partial class Form1 : Form { static public string username;//用于保存用户名 static public string password; public Form1() { InitializeComponent(); } //判断语句 private bool judge() { if (txt_username.Text == "") return false; if (txt_password.Text == "") return false; return true; } //登陆按钮的点击 private void btn_login_Click(object sender, EventArgs e) { if (!judge()) { MessageBox.Show("请输入正确的的信息..."); return ; } //创建路径及数据名 string strPath = Application.StartupPath+"\\login.accdb"; //生成来连接数据库字符串 string oleCon = "provider=Microsoft.Jet.OLEDB.12.0;Data source=" + strPath; //创建数据库连接 OleDbConnection conn = new OleDbConnection(oleCon); // conn.Open(); //SQL查询语句 string access = "select UserId,Password from user where UserId='" + this.txt_username.Text + "'and Password='" + this.txt_password.Text + "'"; OleDbCommand cmd = new OleDbCommand(access, conn); OleDbDataReader hyw = cmd.ExecuteReader(); if (hyw.Read()) { //在构造中我们的量就作为判断 username = txt_username.Text; password = txt_password.Text; //一旦连接成功了就弹出窗口 MessageBox.Show("登录成功!"); Form f2 = new Form2(); this.Hide(); f2.ShowDialog(); this.Dispose(); } else { //信息错误,判断条件不成立 MessageBox.Show("输入用户密码错误"); } } } } 报 未在本地计算机上注册“Microsoft.Jet.OLEDB.12.0”提供程序。??? 后来我安装了AccessDatebaseEngine.exe 还是报一样的错
向函数模板中传入字符串,typeid()和if的搭配会失效,编译不通过,怎么办?
我写了个函数模板里用到了typeid,判断传入变量的类型。传入整型和浮点型都没问题,传入字符串直接编译不通过。 ```C #include <iostream> #include <typeinfo> #include <string> using namespace std; struct Item { int intvalue=0; double doublevalue=0.0; string stringvalue=""; }; template <typename T> void TypeDetect(Item *p, T elem) { if (*typeid(elem).name() == 'i') p->intvalue = elem; else if (*typeid(elem).name() == 'd') p->doublevalue = elem; else if (*typeid(elem).name() == 'P') p->stringvalue = elem; } int main() { Item *p1 = new Item, *p2 = new Item, *p3 = new Item; TypeDetect(p1, 1); TypeDetect(p2, 1.1); TypeDetect(p3, "abc"); cout << p1->intvalue << endl; cout << p2->doublevalue << endl; cout << p3->stringvalue << endl; return 0; } ``` 直接编译上述代码会报错: invalid conversion from 'const char*' to 'int' [-fpermissive] [15, 21] cannot convert 'const char*' to 'double' in assignment [17, 24] 但注释掉 ```C TypeDetect(p3, "abc"); ``` 就可以编译运行了。这是为什么?传入字符串后typeid应该会判断它是一个指针,然后通过if语句判断,但似乎编译器就不认我写的三个if语句。
编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。
编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 #include <iostream> using namespace std; int main() { char a[500]; char b[500]; cin>>a; for(int i=0;i<500;i++) { if( (a[i]>'a' && a[i]<'z')||(a[i]>'A' && a[i]<'Z') ) { cout<<a[i]; } } return 0; } 输出结果乱码... 跪求大神指错啊...能给出代码就更好了...QAQ
如何用while语句判断用户名及密码 并且在账号错误或者密码错误的情况下输出MessageBox
如何用while语句判断用户名及密码 并且在账号错误或者密码错误的情况下输出MessageBox 代码已经写好了如下 怎么样可以在while循环密码不正确后输出MessageBox 用于区分 对账户的判断 if (sdr.HasRows) { //SqlDataReader 在数据库中为 从第1条数据开始 一条一条往下读 while (sdr.Read()) //如果读取账户成功(文本框中的用户名在数据库中存在) { //则将第1条 密码 赋给 字符串pwd ,并且依次往后读取 所有的密码 //Trim()方法为移除字符串前后的空白 string pwd = sdr.GetString(0).Trim(); //如果 文本框中输入的密码 ==数据库中的密码 if (pwd == txtPwd.Text) { //说明在该账户下 密码正确, 系统登录成功 MessageBox.Show("系统登录成功,正在跳转主页面..."); FrmManager manager = new FrmManager(); manager.Show(); this.Hide(); } } } else { MessageBox.Show("此用户不存在"); }
c语言关于字符getchar()的问题
输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数 测试用例 1 ni12$$↵ 字母=2,空格=0,数字=2,其它=2↵ 下面是我写的程序,思路就是让ch的初始值为0,然后进入for语句循环,直到输入回车为止,中间还加了个if ch='\n' break;用来跳出。但是无论输入什么结果不知为何都是0。。。我上网查说要用while((ch=getchar())!='\n') 但我不太明白我这种方式为何不可以?? ``` #include <stdio.h> void main() {char ch,a=0,b=0,c=0,d=0; for(ch=0;ch!='\n';) {ch=getchar(); if ch='\n' break; if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='z')) a++; else {if(ch==' ') b++; else {if('0'<=ch&&ch<='9') c++; else else d++;}}} printf("字母=%d,空格=%d,数字=%d,其他=%d",a,b,c,d); } ```
请路过的大神有时间帮忙看看,搞不懂if语句运行后就无限循环
![图片说明](https://img-ask.csdn.net/upload/201812/06/1544088044_105006.png) if语句里面的内容运行后就无限循环,真想不通。。。。以下是整个程序的代码: ``` #include<iostream> #include<cstring> using namespace std; int fn1(char [],char []);//判断输入的有没有两个空格 int main()//让用户按要求输入正确的格式 { char blank[]=" "; cout<<"输入用两个空格分隔开的两个字符串\n"; for(int i=0;i<=0;i++) { char *input=new char[20]; cin.get(input,20); if(fn1(input,blank)) { i--; delete input; continue; } cout<<"输入正确"; delete input; } return 0; } int fn1(char judge_input[],char judge_blank[]) { for(int i=0;i<10;i++) { if((strstr(judge_input,judge_blank))==NULL) { cout<<"输入的格式错误,请重新输入\n"; return 1; } if((strstr(judge_input,judge_blank))[i]==' '&&i>=2) { cout<<"输入的格式错误,请重新输入\n"; return 1; } if(i==2) { return 0; } } } ```
C#连接数据库实现登陆,现在连接不上数据库,请各位大佬指点一下代码哪有问题
namespace _日记本 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "") MessageBox.Show("用户名不能为空!", "提示"); else if (textBox2.Text == "") MessageBox.Show("密码不能为空!", "提示"); try //try...catch...异常处理语句 { string name, pass; bool flag = false; name = textBox1.Text; pass = textBox2.Text; //获取用户名,密码 string str = Properties.Settings.Default.Database1ConnectionString;//连接字符串 SqlConnection Conn = new SqlConnection(str);//建立到数据库的连接 Conn.Open(); //将连接打开 //SQL语句:从数据库的登录表中搜索登录名,密码 string sqlstring = "select * from dbo.Table where Id ='" + name + "'and Password ='" + pass + "'"; //执行con对象的函数,返回一个SqlCommand类型的对象 SqlCommand command = new SqlCommand(sqlstring, Conn); //用cmd的函数执行语句,返回SqlDataReader对象thisReader,thisReader就是返回的结果集(也就是数据库中查询到的表数据) SqlDataReader thisReader = command.ExecuteReader(); //判断用户名及密码是否正确,对flag进行赋值 while (thisReader.Read()) { if ((thisReader.GetValue(0).ToString().Trim()) == (name.ToString().Trim())) { if (thisReader.GetValue(1).ToString().Trim() == pass.ToString().Trim()) { flag = true; } } } //用完后关闭连接,以免影响其他程序访问 Conn.Close(); if (flag) { MessageBox.Show("登陆成功!"); Form2 F = new Form2(); //显示主页面 F.Show(); this.Hide(); } else { MessageBox.Show("请检查你的用户名和密码!"); textBox1.Focus(); } } catch (Exception ex2) { MessageBox.Show("连接远程SQL数据库发生错误:" + ex2.ToString(), "错误!"); } } } }![图片说明](https://img-ask.csdn.net/upload/201705/19/1495162964_885089.jpg) 表里就一个Id一个Password报错是这样的,是不是我的sql语句有语法错误,查了半天查不出来,小弟还是新手,请各位大手子指点一下,不胜感激
为什么最后一个for语句里的截取字符语句总是出错,大神们帮帮忙啊。。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TJ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } public int Pd(string s) { int len = s.Length; //s=str.Substring(str.Length-i); // or str=str.Remove(0,str.Length-i); k = k.Substring(k.Length-1, 1); // string str = s.Substring(s.Length -1,1); //s = s.Remove(s.LastIndexOf(","), 1); /* if (str==","||str==".") { s = s.Remove(s.Length - 2,s.Length -1); }*/ ListViewItem li = new ListViewItem(); for (int i = 0; i < listView1.Items.Count; i++) { if (listView1.Items[i].SubItems[0].Text == s) { return 0; } } return 1; } public int Pdc(string[] sj,string s) { int tem=0; for (int i = 0; i < sj.Length; i++) { if (s == sj[i]) tem++; } return tem; } private void button1_Click(object sender, EventArgs e) { string center = txtDate.Text; string str = center.ToLower(); string[] parm = str.Split(' '); int len = parm.Length; this.listView1.View = View.Details; this.listView1.GridLines = true; this.listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable; this.listView1.Columns.Add("词汇", 120, HorizontalAlignment.Right); this.listView1.Columns.Add("出现次数", 120, HorizontalAlignment.Right); this.listView1.Visible = true; for (int i = 0; i < len; i++) { string s = parm[i]; s = s.Remove(s.LastIndexOf(","), 1); int tem = Pd(parm[i]); if (tem == 1 && parm[i] != "") { int m = Pdc(parm, parm[i]); string mm = Convert.ToString(m); ListViewItem li = new ListViewItem(); li.SubItems[0].Text = parm[i].ToString(); li.SubItems.Add(mm); this.listView1.Items.Add(li); } } } } }
C#关于sqlite数据库问题,大神来看看
``` namespace QQLite.GuessFeng { /// <summary> /// 说明:这是一个针对System.Data.SQLite的数据库常规操作封装的通用类。 /// 更新时间:2014-10-31 /// </summary> public class SQLiteDBHelper//SQLiteDBHelper { public static string DataSource = string.Format("Data Source={0};Pooling=true;FailIfMissing=false", Path.Combine(D:\\, "GuessFeng.db")); public static string dbpath = D:\\ + "GuessFeng.db"; private string connectionString = string.Empty; #region 数据库连接必要条件参数 private SQLiteConnection dbConnection = null; /// <summary> /// 数据库连接 /// </summary> public SQLiteConnection DbConnection { get { if (this.dbConnection == null) { // 若没打开,就变成自动打开关闭的 this.Open(); this.AutoOpenClose = true; } return this.dbConnection; } set { this.dbConnection = value; } } private SQLiteCommand dbCommand = null; /// <summary> /// 命令 /// </summary> public SQLiteCommand DbCommand { get { return this.dbCommand; } set { this.dbCommand = value; } } private SQLiteDataAdapter dbDataAdapter = null; /// <summary> /// 数据库适配器 /// </summary> public SQLiteDataAdapter DbDataAdapter { get { return this.dbDataAdapter; } set { this.dbDataAdapter = value; } } /// <summary> /// 数据库连接 /// </summary> public string ConnectionString { get { return this.connectionString; } set { this.connectionString = value; } } private SQLiteTransaction dbTransaction = null; private bool inTransaction = false; /// <summary> /// 是否已采用事务 /// </summary> public bool InTransaction { get { return this.inTransaction; } set { this.inTransaction = value; } } private bool autoOpenClose = false; /// <summary> /// 默认打开关闭数据库选项(默认为否) /// </summary> public bool AutoOpenClose { get { return autoOpenClose; } set { autoOpenClose = value; } } #endregion /// <summary> /// 构造函数 /// </summary> /// <param name="dbPath">SQLite数据库文件路径</param> public SQLiteDBHelper() { // string dbPath = Client.BasePath + @"QQ\" + Client.QQ + @"\DataBase\QQLite.Plugin.VipwarrantPlugin.db"; this.connectionString = DataSource; } /// <summary> /// 这时主要的获取数据库连接的方法 /// </summary> /// <returns>数据库连接</returns> public IDbConnection Open() { this.Open(this.ConnectionString); return this.dbConnection; } /// <summary> /// 获得新的数据库连接 /// </summary> /// <param name="connectionString">数据库连接字符串</param> /// <returns>数据库连接</returns> public IDbConnection Open(string connectionString) { // 若是空的话才打开 if (this.dbConnection == null || this.dbConnection.State == ConnectionState.Closed) { this.ConnectionString = connectionString; this.dbConnection = new SQLiteConnection(this.ConnectionString); this.dbConnection.Open(); } this.AutoOpenClose = false; return this.dbConnection; } #region 建立本地数据库 /// <summary> /// 创建SQLite数据库文件 /// </summary> /// <param name="dbPath">要创建的SQLite数据库文件路径</param> public void CreateDB() { if (!File.Exists(dbpath)) { // 自动打开 if (this.DbConnection == null) { this.AutoOpenClose = true; this.Open(); } else if (this.DbConnection.State == ConnectionState.Closed) { this.Open(); } this.dbCommand = this.DbConnection.CreateCommand(); this.dbCommand.CommandText = "CREATE TABLE [DBVersion] ([Version] NVARCHAR(50) NULL);INSERT INTO [DBVersion] (Version) values('4.0.0.0');CREATE TABLE [RanNum] ([Id] INTEGER PRIMARY KEY NOT NULL,[ExternalId] INTEGER NOT NULL,[Num] INTEGER NOT NULL,[LastQQ]INTEGER NULL);CREATE TABLE [Config] ([Id] INTEGER PRIMARY KEY NOT NULL,[Fix] TEXT NULL,[Open] INTEGER NOT NULL,[Deduct] INTEGER NOT NULL,[Award] INTEGER NOT NULL);INSERT INTO [Config] (Fix,Open,Deduct,Award) values('#',10,5,100);CREATE TABLE [Lock] ([Id] INTEGER PRIMARY KEY NOT NULL,[value] TEXT NULL);"; this.dbCommand.ExecuteNonQuery(); //this.dbCommand.CommandText = "DROP TABLE Demo"; //this.dbCommand.ExecuteNonQuery(); } } #endregion /// <summary> /// 对SQLite数据库执行增删改操作,返回受影响的行数。 /// </summary> /// <param name="commandText">要执行的增删改的SQL语句</param> /// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param> /// <returns></returns> public int ExecuteNonQuery(string commandText, SQLiteParameter[] parameters) { // 自动打开 if (this.DbConnection == null) { this.AutoOpenClose = true; this.Open(); } else if (this.DbConnection.State == ConnectionState.Closed) { this.Open(); } this.dbCommand = this.DbConnection.CreateCommand(); this.dbCommand.CommandText = commandText; if (this.dbTransaction != null) { this.dbCommand.Transaction = this.dbTransaction; } if (parameters != null) { this.dbCommand.Parameters.Clear(); for (int i = 0; i < parameters.Length; i++) { this.dbCommand.Parameters.Add(parameters[i]); } } int returnValue = this.dbCommand.ExecuteNonQuery(); // 自动关闭 this.dbCommand.Parameters.Clear(); // 自动关闭 //if (this.AutoOpenClose) //{ // this.Close(); //} return returnValue; } #endregion #region public void Close() 关闭数据库连接 /// <summary> /// 关闭数据库连接 /// </summary> public void Close() { if (this.dbConnection != null) { this.dbConnection.Close(); this.dbConnection.Dispose(); } this.Dispose(); } #endregion #region public void Dispose() 内存回收 /// <summary> /// 内存回收 /// </summary> public void Dispose() { if (this.dbCommand != null) { this.dbCommand.Dispose(); } if (this.dbDataAdapter != null) { this.dbDataAdapter.Dispose(); } this.dbConnection = null; } #endregion } } ``` ``` private void button1_Click(object sender, EventArgs e) { SQLiteDBHelper vdb = new SQLiteDBHelper();//初始化SQLite数据库 string sql = "UPDATE Config SET Fix=@Fix,Open=@Open,Deduct=@Deduct,Award=@Award WHERE (Id=1)";//修改语句 SQLiteParameter[] Config = new SQLiteParameter[]{ new SQLiteParameter("@Fix",text_Fix.Text ), new SQLiteParameter ("@Open",text_Open.Text ), new SQLiteParameter("@Deduct",text_Deduct.Text ), new SQLiteParameter("@Award",text_Award.Text ) }; //MessageBox.Show("保存成功!"); if (vdb.ExecuteNonQuery(sql, Config) > 0) { MessageBox.Show("保存成功!"); } } ``` 为什么点击按钮保存,一点就卡死
vs2010 mfc ADO连接SQL server 程序不解
各位网友, 我在网站下载的一个MFC ADO方式连接SQL server数据库代码有个地方不明白,请帮忙看看 新建一个按钮,加入如下代码: void CADOTESTDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 1. ADOConn conn; 2. conn.OnInitADOConn(); 3. _bstr_t vSQL; 4. vSQL = "INSERT INTO [dbtest].[dbo].[userinfo] ([username],[userpwd]) VALUES('seamanj','123')"; 5. conn.ExecuteSQL(vSQL); 6. conn.ExitConnect(); 7. conn.m_pConnection; } MFC 中debug执行完第2行,m_pConnection中就有了地址,SQL server 中执行Select * from sys.dm_exec_connections可看到新的连接,但是执行完第6行应该m_pConnection中的地址被清空,并且断开连接的,可是实际情况是一直到执行完所有的代码并结束,m_pConnection才被清空并断开连接。 哪位能帮我解释下,谢谢。 ``` void ADOConn::ExitConnect() { // 关闭记录集和连接 if (m_pRecordset != NULL) m_pRecordset->Close(); m_pConnection->Close(); // 释放环境 ::CoUninitialize(); //CString temp=_T("0"); } ``` ``` void ADOConn::OnInitADOConn() { // 初始化OLE/COM库环境 //CoInitialize(NULL)和AfxOleInit()的区别: https://blog.csdn.net/zhoubl668/article/details/4139933 ::CoInitialize(NULL); try { // 创建Connection对象 m_pConnection.CreateInstance("ADODB.Connection"); // 设置连接字符串,必须是BSTR型或者_bstr_t类型 _bstr_t strConnect = "Provider=SQLOLEDB; Server=127.0.0.1;Database=dbtest; uid=lnhv013710; pwd=013710;"; m_pConnection->Open(strConnect,"","",adModeUnknown); } // 捕捉异常 catch(_com_error e) { // 显示错误信息 AfxMessageBox(e.Description()); } } ``` ``` #pragma once class ADOConn { // 定义变量 public: //添加一个指向Connection对象的指针: _ConnectionPtr m_pConnection; //添加一个指向Recordset对象的指针: _RecordsetPtr m_pRecordset; // 定义方法 public: ADOConn(); virtual ~ADOConn(); // 初始化—连接数据库 void OnInitADOConn(); // 执行查询 _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); // 执行SQL语句,Insert Update _variant_t BOOL ExecuteSQL(_bstr_t bstrSQL); void ExitConnect(); }; ```
通讯录管理系统: 通过电话号码查询通讯录,查不出东西。
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> struct stu //第一部分:声明结构体类型struct stu { char name[100];//姓名为字符串型 char cel[50];//手机 char tel[50];//电话 char mail[50];//邮件 char add[100];//地址为字符串型 char post[15];//邮编 char qq[50]; char gend[2]; struct stu *next;//用指针处理链表,next是指针变量,指向结构体变量 }; struct stu *charu(struct stu *head,struct stu *q)//第二部分:插入函数(插入新结点) { struct stu *p; for(p=head; p->next!=NULL; p=p->next); //for(使p也指向head;当p为空文件时 ;p指向下一个结点) p->next=q; q->next=NULL; return head; } void search(struct stu *head) //第三部分:查找结点并输出 { struct stu *p; int a;//要查找的电话 if(head->next==NULL)//头文件为空时打印出的结果为"通讯录为空" printf("**********************************通讯录为空!!!*********************************\n\n\n"); else//头文件不为空时,开始查询学生的信息 { printf("\t输入要查询的电话号码:"); scanf("%d",&a); for(p=head->next; p->next!=NULL; p=p->next) //for(使p也指向head;当p为空文件时 ;p指向下一个结点) { if(p->cel==a) //如果输入的电话号码和某个相同,输出以下的东西。 { printf(" 要查找的学生信息为:\n"); printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t手机号"); puts(p->cel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱"); puts(p->mail); printf("\t查找成功!!!"); printf("\n\n\n"); break; } } if(p->cel==a) { printf(" 要查找的学生信息为:\n"); printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t手机号"); puts(p->cel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱"); puts(p->mail); printf("\t查找成功!!!"); printf("\n\n\n"); } else printf("no people have found!!!\n");//如果不符合,就输出没有找到 } } struct stu *del(struct stu *head) //第四部分:删除结点 { struct stu *p,*q; int a;//要删除的电话号码 if(head->next==NULL)// 头文件为空时,输出通讯录为空 printf("**********************************通讯录为空!!!*********************************\n\n\n"); else { printf("\t输入要删除电话号码:"); scanf("%d",&a); for(p=head,q=p->next; q->cel!=a&&q->next!=NULL;) { p=p->next; q=p->next; } if(q->cel==a) { p->next=q->next; free(q);//释放q,也就是删除q,在这里就是删除q(学号为a) printf("删除成功!!!\n"); } else printf("no people have found!!!");//如果不符合,就输出没有找到 } return head;//返回头文件 } struct stu *change(struct stu *head) //第五部分:修改结点内容 { int b,a,c; struct stu *p; if(head->next==NULL)// 头文件为空时,输出通讯录为空 printf("**********************************通讯录为空!!!*********************************\n\n\n"); else { printf(" 输入要修改电话号码:"); scanf("%d",&a); for(p=head->next; p!=NULL; p=p->next) { start: printf(" 输入想要修改什么?\n"); printf("\t\t\t 1:修改姓名\n"); printf("\t\t\t 2:性别\n"); printf("\t\t\t 3:地址\n"); printf("\t\t\t 4:邮编\n"); printf("\t\t\t 5:手机号\n"); printf("\t\t\t 6:QQ\n"); printf("\t\t\t 7:邮箱\n"); printf(" 请输入你的选择:"); scanf("%d",&b); switch(b)//先通过学号找到该学生,然后用switch语句选择修改项,再用switch和goto语句实现是否循环 { case 1: printf("\t输入新姓名:"); scanf("%s",p->name); break; case 2: printf("\t输入新的性别:"); scanf("%s",p->gend); break; case 3: printf("\t输入新的地址:"); scanf("%s",p->add); break; case 4: printf("\t输入新的邮编;"); scanf("%s",p->post); break; case 5: printf("\t输入新的手机号:"); scanf("%s",p->cel); break; case 6: printf("\t输入新的QQ:"); scanf("%s",p->qq); break; case 7: printf("\t输入新的邮箱;"); scanf("%s",p->mail); break; default: printf("输入操作错误,请重新输入:"); } printf("修改成功!!!\n"); printf(" 是否要修改其他项? 1:是 2:否\n"); printf(" 请输入你的选择:"); scanf("%d",&c); switch(c) //goto语句实现是否循环 { case 1: goto start; case 2: break; } } } return head; //返回头文件 } void printall(struct stu *head) //第六部分:输出全部通讯录 { struct stu *p=head->next; while(1) { if(p==NULL) { printf("**********************************通讯录为空!!!*********************************\n\n\n"); break; } else if(p->next==NULL) { printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t电话:"); puts(p->tel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱:"); puts(p->mail); printf("输出成功!!!\n"); printf("\n\n\n"); break; } else { printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t电话:"); puts(p->tel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱:"); puts(p->mail); printf("\n"); p=p->next; continue; } printf("输出成功!!!\n"); } } void sf(struct stu *head) //第八部分:释放结点退出系统 { struct stu *p=head ; printf("释放链表:\n"); while(p!=NULL) { head=head->next; free(p); p=head; } printf("释放链表成功!!!\n"); } int main()// 第九部分:主函数框架 { int cz;//操作符 struct stu *head,*q; head=(struct stu*)malloc(sizeof(struct stu));//动态链表malloc head->next=NULL;//使next指向下一个结点,next结点不放其他结点地址 system("color fc");//修改dos窗口前背景色,用两个十六进制数表示 printf("班级: 姓名: 学号: 设计课题:个人通讯录管理系统\n"); printf("\n********************************C语言课程设计***********************************\n"); printf(" *******************★个人通讯录管理系统★*****************\n\n\n"); printf(" * 1:新建通讯录 *\n"); printf(" * 2:删除通讯录 *\n"); printf(" * 3:修改通讯录 *\n"); printf(" * 4:查询通讯录 *\n"); printf(" * 5:显示全部记录 *\n"); printf(" * 6:释放链表并结束程序 *\n"); printf(" *********************************************************\n"); start : printf("输入操作符1-6:");//"输入操作符1- scanf("%d",&cz); switch(cz)//switch语句 { case 1: q=(struct stu *)malloc(sizeof(struct stu)); printf("\t输入姓名:"); scanf("%s",q->name); printf("\t输入性别:"); scanf("%s",q->gend); printf("\t地址:"); scanf("%s",&q->add); printf("\t输入邮编:"); scanf("%s",&q->post); printf("\t手机号:"); scanf("%s",q->cel); printf("\tQQ号:"); scanf("%s",q->qq); printf("\t输入电子邮件:"); scanf("%s",q->mail); charu(head,q); printf("插入成功!!!\n"); break; case 2://删除 head=del(head); break; case 3: change(head); break;//修改学生信息 case 4: search(head); break;//查找结点head case 5: printall(head); break; //保存文件 case 6: //释放结点退出系统 sf(head); exit (0); default: printf("输入操作错误,重新"); //什么也不符合就"输入操作错误,重新" } goto start;//用goto语句实现循环操作 return 0; }
c语言:这是一个学生信息管理系统,编译过了,但是运行的时候出了问题!
代码如下: #include"stdio.h" # include "stdlib.h" #define M 100 struct student { char name[25]; //姓名 char num[25]; //学号 char gender[20]; //性别 char class[35]; //班别 char tel[25]; //手机号 char sex[25]; //性别 }; void input(struct student stu[M]); //输入函数 void output(struct student stu[M]); //输出函数 void lookfor(struct student stu[M]); //查询函数 void modify(struct student stu[M]); //修改函数 void delete_student(struct student stu[M]); //删除函数 int count = 0; struct student t; int main() { int choice, sum; struct student stu[M]; point1: sum = 0; printf("\t\t\t\t * 欢迎使用学生信息管理系统 *\n"); printf("\t\t\t\t\t 1、添加学生信息\n"); printf("\t\t\t\t\t 2、查询学生信息\n"); printf("\t\t\t\t\t 3、修改学生信息\n"); printf("\t\t\t\t\t 4、删除学生信息\n"); printf("\t\t\t\t\t 5、浏览学生信息\n"); printf("\t\t\t\t\t 6、退出系统\n"); printf(" *********************************************************************************\n"); printf("请输入你的选择\n"); scanf_s("%d", &choice); if (choice > 7 || choice <= 0) { sum++; if (sum >= 5) { printf("输入错误次数过多,程序将重新开始\n"); system("pause"); //程序暂停 system("cls"); //清屏语句 goto point1; } } switch (choice) //根据选择,调用不同的函数来完成不同的任务 { case 1:input(stu); break; case 2:lookfor(stu); break; case 3:modify(stu); break; case 4:delete_student(stu); break; case 5:output(stu); break; case 6:printf("感谢你使用学生信息管理系统,请关掉程序!!!\n"); system("pause"); break; default:printf("无效的选择!!!请重新输入!!!\n"); break; } return 0; } void input(struct student stu[M]) //自定义输入函数 { int len; system("cls"); printf("请添加要输入学生的信息\n"); do { printf("请输入由12位数字组成的学生学号\n"); scanf_s("%s", &stu[count].num); len = strlen(stu[count].num); } while (len != 12); printf("请输入同学的姓名\n"); scanf_s("%s", stu[count].name); printf("请输入学生的性别(1.男 2.女):\n"); scanf_s("%s", &stu[count].sex); printf("请输入对应的学生班级: \n"); scanf_s("%s", &stu[count].class); printf("请输入学生的手机号码\n"); scanf_s("%s", &stu[count].tel); count++; } void output(struct student stu[M]) //自定义输出函数 { int j; system("cls"); if (count == 0) { printf("当前已存学生信息为0个\n"); return; } for (j = 0; j < count; j++) { printf("学号\t\t 姓名\t\t性别\t班别\t手机号\n"); for (j = 0; j < count; j++) { printf("%s\t", stu[j].num); printf("%s\t", stu[j].name); printf("%s\t", stu[j].sex); printf("%s\t", stu[j].class); printf("%s\t", stu[j].tel); } } } void modify(struct student stu[M]) //自定义修改函数 { int j, flag = 0, course; char xh[25]; system("cls"); if (count == 0) { printf("当前已存学生信息为0个,无法修改!!!\n"); return; } else { printf("请输入你想要修改的同学学号\n"); scanf_s("%s", &xh); for (j = 0; j < count; j++){ if (strcmp(stu[j].num, xh) == 0) //同上 { printf("你确定要修改学生的信息吗???如果不确定的话,请关掉本程序吧!!!\n"); printf("选择需要修改的内容: 1、姓名 2、学号 3、班别 4、性别 5、手机号\n"); scanf_s("%d", &course); printf("请输入你想要修改后的学生成绩\n"); switch (course) { case 1:printf("请输入你想要修改后的学生名字\n"); scanf_s("%s", &stu[j].name); break; case 2:printf("请输入你想要修改后的学生学号\n"); scanf_s("%s", &stu[j].num); break; //switch控制语句 case 3:printf("请输入你想要修改后的学生班别\n"); scanf_s("%s", &stu[j].class); break; case 4:printf("请输入你想要修改后的学生性别\n"); scanf_s("%s", &stu[j].sex); break; case 5:printf("请输入你想要修改后的学生手机号\n"); scanf_s("%s", &stu[j].tel); break; default:printf("无效的选择!!!请重新输入!!!\n"); break; } } } } } void lookfor(struct student stu[M]) //自定义查询学生信息函数 { int j, flag = 0; char xh[25]; system("cls"); if (count == 0) { printf("当前已存学生信息为0个,无法查询!!!\n"); return; } else { printf("请输入你想要查看的同学学号\n"); scanf_s("%s", &xh); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, xh) == 0) //通过字符函数对已存入的学生信息进行比较,找出要查看的学生 { printf("学号\t\t姓名\t\t班别\t性别\t手机号\n"); printf("%s\t", stu[j].num); printf("%s\t", stu[j].name); printf("%s\t", stu[j].class); printf("%s\t", stu[j].sex); printf("%s\t", stu[j].tel); } } if (j == count) printf("很抱歉,没有你所需要的学生信息\n"); } } void delete_student(struct student stu[M]) //自定义删除函数 { int j, index = 0, k = count; char xh[25]; system("cls"); if (count == 0) { printf("当前已存学生信息为0个,无法删除!!!\n"); return; } else { printf("请输入你想要删除的同学学号\n"); scanf_s("%s", xh); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, xh) == 0) { for (j = index; j < count; j++) stu[j] = stu[j + 1]; count--; if (count < k) printf("你已经删除成功\n"); } index++; } if (j == count) printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n"); } }
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的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 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问