C#中,子类怎么初始化父类的readonly属性?

class A
{
public readonly int _X;

public A()
{
     _X=3;
}

}

class B:A
{
public B()
{
//Init _X?
}

}

3个回答

不能初始化,readonly只能由构造函数或者字段定义时一次性赋值。如果你希望派生类可以修改/赋值,而类的外部不能修改,可以使用只读属性,写法是:
public int _X { get; private set; }

A多一个重载版本,可以传参的

class A
{
public readonly int _X;

public A(int x)
{
    _X = x;
}
public A() { }

}

class B : A
{
public B(int x):base(x) { }

}

B b = new B(12);

既然定义成readonly为什么还要重新赋值呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#通过Presentation类操作ppt结束后弹出保存提示窗口
c# 通过Presentation类操作ppt结束后,会弹出是否保存的窗口。怎么可以隐藏这个窗口或不提示? 打开的时候ReadOnly 设为true的时候 2010office是不弹了,2013还是会弹出。
C#委託事件如何更新UI的值
我想在一個委託事件中更新ui值,但是總是報錯,請幫我看看: ``` System.InvalidOperationException: '跨執行緒作業無效: 存取控制項 'tb_log' 時所使用的執行緒與建立控制項的執行緒不同。' ``` 我的代碼如下: ``` using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MavenInstall { public partial class MavenInstall : Form { public delegate void OutDelegate(string txt); public OutDelegate outDelegate; public MavenInstall() { InitializeComponent(); tb_packaging.Text = "jar"; outDelegate = UpdateLog; //tb_command.Text = "mvn install:install-file -DgroupId={0} -DartifactId={1} -Dversion={2} -Dpackaging={3} -Dfile={4}"; } private void btn_select_Click(object sender, EventArgs e) { if (SelectJarFile.ShowDialog() == DialogResult.OK) { tb_file.Text = SelectJarFile.FileName; } } private void btn_execute_Click(object sender, EventArgs e) { tb_log.Text = null; foreach (Control control in gb_condition.Controls) { control.Enabled = false; } String cmd = String.Format(@"mvn install:install-file -DgroupId={0} -DartifactId={1} -Dversion={2} -Dpackaging={3} -Dfile={4}" , tb_groupid.Text,tb_artifactid.Text ,tb_version.Text,tb_packaging.Text,tb_file.Text); tb_command.Text = cmd; Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 process.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 process.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 process.StartInfo.RedirectStandardError = true;//重定向标准错误输出 process.StartInfo.CreateNoWindow = true;//不显示程序窗口 process.Start();//启动程序 process.OutputDataReceived += new DataReceivedEventHandler(OutputDataHandler); process.BeginOutputReadLine(); process.StandardInput.WriteLine(cmd); process.StandardInput.AutoFlush = true; process.StandardInput.WriteLine("exit"); process.WaitForExit();//等待程序执行完退出进程 foreach (Control control in gb_condition.Controls) { control.Enabled = true; } process.Close(); } private void OutputDataHandler(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrEmpty(e.Data)) { //UpdateLog(e.Data); outDelegate.Invoke(e.Data); } } private void UpdateLog(string txt) { //if (tb_log.InvokeRequired) //{ // tb_log.Invoke(outDelegate, txt); //} //else //{ // this.tb_log.Text += txt + "\r\n"; //} this.tb_log.Text += txt + "\r\n"; } private void btn_clear_Click(object sender, EventArgs e) { tb_groupid.Text = null; tb_artifactid.Text = null; tb_version.Text = null; tb_packaging.Text = null; tb_file.Text = null; tb_command.Text = null; tb_log.Text = null; } } } ``` design文件 ``` namespace MavenInstall { partial class MavenInstall { /// <summary> /// 設計工具所需的變數。 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清除任何使用中的資源。 /// </summary> /// <param name="disposing">如果應該處置受控資源則為 true,否則為 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form 設計工具產生的程式碼 /// <summary> /// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改 /// 這個方法的內容。 /// </summary> private void InitializeComponent() { this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.panel1 = new System.Windows.Forms.Panel(); this.btn_clear = new System.Windows.Forms.Button(); this.btn_execute = new System.Windows.Forms.Button(); this.gb_condition = new System.Windows.Forms.GroupBox(); this.tb_command = new System.Windows.Forms.TextBox(); this.btn_select = new System.Windows.Forms.Button(); this.lb_Command = new System.Windows.Forms.Label(); this.tb_file = new System.Windows.Forms.TextBox(); this.lb_File = new System.Windows.Forms.Label(); this.tb_packaging = new System.Windows.Forms.TextBox(); this.lb_Packaging = new System.Windows.Forms.Label(); this.tb_version = new System.Windows.Forms.TextBox(); this.lb_Version = new System.Windows.Forms.Label(); this.tb_artifactid = new System.Windows.Forms.TextBox(); this.lb_ArtifactId = new System.Windows.Forms.Label(); this.tb_groupid = new System.Windows.Forms.TextBox(); this.lb_GroupId = new System.Windows.Forms.Label(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.tb_log = new System.Windows.Forms.TextBox(); this.SelectJarFile = new System.Windows.Forms.OpenFileDialog(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); this.panel1.SuspendLayout(); this.gb_condition.SuspendLayout(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // splitContainer1 // this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainer1.Location = new System.Drawing.Point(0, 0); this.splitContainer1.Margin = new System.Windows.Forms.Padding(4); this.splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 // this.splitContainer1.Panel1.Controls.Add(this.panel1); this.splitContainer1.Panel1.Controls.Add(this.gb_condition); // // splitContainer1.Panel2 // this.splitContainer1.Panel2.Controls.Add(this.groupBox1); this.splitContainer1.Size = new System.Drawing.Size(1067, 372); this.splitContainer1.SplitterDistance = 348; this.splitContainer1.SplitterWidth = 5; this.splitContainer1.TabIndex = 0; // // panel1 // this.panel1.Controls.Add(this.btn_clear); this.panel1.Controls.Add(this.btn_execute); this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; this.panel1.Location = new System.Drawing.Point(0, 328); this.panel1.Margin = new System.Windows.Forms.Padding(4); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(348, 44); this.panel1.TabIndex = 1; // // btn_clear // this.btn_clear.Location = new System.Drawing.Point(240, 8); this.btn_clear.Margin = new System.Windows.Forms.Padding(4); this.btn_clear.Name = "btn_clear"; this.btn_clear.Size = new System.Drawing.Size(100, 29); this.btn_clear.TabIndex = 0; this.btn_clear.Text = "Clear(&C)"; this.btn_clear.UseVisualStyleBackColor = true; this.btn_clear.Click += new System.EventHandler(this.btn_clear_Click); // // btn_execute // this.btn_execute.Location = new System.Drawing.Point(8, 8); this.btn_execute.Margin = new System.Windows.Forms.Padding(4); this.btn_execute.Name = "btn_execute"; this.btn_execute.Size = new System.Drawing.Size(97, 29); this.btn_execute.TabIndex = 0; this.btn_execute.Text = "Execute(&E)"; this.btn_execute.UseVisualStyleBackColor = true; this.btn_execute.Click += new System.EventHandler(this.btn_execute_Click); // // gb_condition // this.gb_condition.Controls.Add(this.tb_command); this.gb_condition.Controls.Add(this.btn_select); this.gb_condition.Controls.Add(this.lb_Command); this.gb_condition.Controls.Add(this.tb_file); this.gb_condition.Controls.Add(this.lb_File); this.gb_condition.Controls.Add(this.tb_packaging); this.gb_condition.Controls.Add(this.lb_Packaging); this.gb_condition.Controls.Add(this.tb_version); this.gb_condition.Controls.Add(this.lb_Version); this.gb_condition.Controls.Add(this.tb_artifactid); this.gb_condition.Controls.Add(this.lb_ArtifactId); this.gb_condition.Controls.Add(this.tb_groupid); this.gb_condition.Controls.Add(this.lb_GroupId); this.gb_condition.Dock = System.Windows.Forms.DockStyle.Fill; this.gb_condition.Location = new System.Drawing.Point(0, 0); this.gb_condition.Margin = new System.Windows.Forms.Padding(4); this.gb_condition.Name = "gb_condition"; this.gb_condition.Padding = new System.Windows.Forms.Padding(4); this.gb_condition.Size = new System.Drawing.Size(348, 372); this.gb_condition.TabIndex = 0; this.gb_condition.TabStop = false; this.gb_condition.Text = "Condition"; // // tb_command // this.tb_command.Location = new System.Drawing.Point(92, 196); this.tb_command.Margin = new System.Windows.Forms.Padding(4); this.tb_command.Multiline = true; this.tb_command.Name = "tb_command"; this.tb_command.ReadOnly = true; this.tb_command.Size = new System.Drawing.Size(247, 115); this.tb_command.TabIndex = 1; // // btn_select // this.btn_select.Location = new System.Drawing.Point(253, 161); this.btn_select.Margin = new System.Windows.Forms.Padding(4); this.btn_select.Name = "btn_select"; this.btn_select.Size = new System.Drawing.Size(87, 29); this.btn_select.TabIndex = 0; this.btn_select.Text = "Select(&S)"; this.btn_select.UseVisualStyleBackColor = true; this.btn_select.Click += new System.EventHandler(this.btn_select_Click); // // lb_Command // this.lb_Command.AutoSize = true; this.lb_Command.Location = new System.Drawing.Point(12, 202); this.lb_Command.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lb_Command.Name = "lb_Command"; this.lb_Command.Size = new System.Drawing.Size(69, 15); this.lb_Command.TabIndex = 0; this.lb_Command.Text = "Command:"; // // tb_file // this.tb_file.Location = new System.Drawing.Point(92, 161); this.tb_file.Margin = new System.Windows.Forms.Padding(4); this.tb_file.Name = "tb_file"; this.tb_file.Size = new System.Drawing.Size(152, 25); this.tb_file.TabIndex = 1; // // lb_File // this.lb_File.AutoSize = true; this.lb_File.Location = new System.Drawing.Point(55, 168); this.lb_File.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lb_File.Name = "lb_File"; this.lb_File.Size = new System.Drawing.Size(33, 15); this.lb_File.TabIndex = 0; this.lb_File.Text = "File:"; // // tb_packaging // this.tb_packaging.Location = new System.Drawing.Point(92, 126); this.tb_packaging.Margin = new System.Windows.Forms.Padding(4); this.tb_packaging.Name = "tb_packaging"; this.tb_packaging.Size = new System.Drawing.Size(247, 25); this.tb_packaging.TabIndex = 1; // // lb_Packaging // this.lb_Packaging.AutoSize = true; this.lb_Packaging.Location = new System.Drawing.Point(13, 132); this.lb_Packaging.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lb_Packaging.Name = "lb_Packaging"; this.lb_Packaging.Size = new System.Drawing.Size(69, 15); this.lb_Packaging.TabIndex = 0; this.lb_Packaging.Text = "Packaging:"; // // tb_version // this.tb_version.Location = new System.Drawing.Point(92, 91); this.tb_version.Margin = new System.Windows.Forms.Padding(4); this.tb_version.Name = "tb_version"; this.tb_version.Size = new System.Drawing.Size(247, 25); this.tb_version.TabIndex = 1; // // lb_Version // this.lb_Version.AutoSize = true; this.lb_Version.Location = new System.Drawing.Point(29, 98); this.lb_Version.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lb_Version.Name = "lb_Version"; this.lb_Version.Size = new System.Drawing.Size(55, 15); this.lb_Version.TabIndex = 0; this.lb_Version.Text = "Version:"; // // tb_artifactid // this.tb_artifactid.Location = new System.Drawing.Point(92, 56); this.tb_artifactid.Margin = new System.Windows.Forms.Padding(4); this.tb_artifactid.Name = "tb_artifactid"; this.tb_artifactid.Size = new System.Drawing.Size(247, 25); this.tb_artifactid.TabIndex = 1; // // lb_ArtifactId // this.lb_ArtifactId.AutoSize = true; this.lb_ArtifactId.Location = new System.Drawing.Point(17, 62); this.lb_ArtifactId.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lb_ArtifactId.Name = "lb_ArtifactId"; this.lb_ArtifactId.Size = new System.Drawing.Size(67, 15); this.lb_ArtifactId.TabIndex = 0; this.lb_ArtifactId.Text = "ArtifactId:"; // // tb_groupid // this.tb_groupid.Location = new System.Drawing.Point(92, 21); this.tb_groupid.Margin = new System.Windows.Forms.Padding(4); this.tb_groupid.Name = "tb_groupid"; this.tb_groupid.Size = new System.Drawing.Size(247, 25); this.tb_groupid.TabIndex = 1; // // lb_GroupId // this.lb_GroupId.AutoSize = true; this.lb_GroupId.Location = new System.Drawing.Point(24, 26); this.lb_GroupId.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lb_GroupId.Name = "lb_GroupId"; this.lb_GroupId.Size = new System.Drawing.Size(59, 15); this.lb_GroupId.TabIndex = 0; this.lb_GroupId.Text = "GroupId:"; // // groupBox1 // this.groupBox1.Controls.Add(this.tb_log); this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox1.Location = new System.Drawing.Point(0, 0); this.groupBox1.Margin = new System.Windows.Forms.Padding(4); this.groupBox1.Name = "groupBox1"; this.groupBox1.Padding = new System.Windows.Forms.Padding(4); this.groupBox1.Size = new System.Drawing.Size(714, 372); this.groupBox1.TabIndex = 0; this.groupBox1.TabStop = false; this.groupBox1.Text = "Log"; // // tb_log // this.tb_log.Dock = System.Windows.Forms.DockStyle.Fill; this.tb_log.Location = new System.Drawing.Point(4, 22); this.tb_log.Margin = new System.Windows.Forms.Padding(4); this.tb_log.Multiline = true; this.tb_log.Name = "tb_log"; this.tb_log.ReadOnly = true; this.tb_log.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.tb_log.Size = new System.Drawing.Size(706, 346); this.tb_log.TabIndex = 0; // // SelectJarFile // this.SelectJarFile.FileName = "SelectJarFile"; // // MavenInstall // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1067, 372); this.Controls.Add(this.splitContainer1); this.Margin = new System.Windows.Forms.Padding(4); this.Name = "MavenInstall"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "MavenInstall"; this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); this.splitContainer1.ResumeLayout(false); this.panel1.ResumeLayout(false); this.gb_condition.ResumeLayout(false); this.gb_condition.PerformLayout(); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Button btn_clear; private System.Windows.Forms.Button btn_execute; private System.Windows.Forms.GroupBox gb_condition; private System.Windows.Forms.TextBox tb_command; private System.Windows.Forms.Button btn_select; private System.Windows.Forms.Label lb_Command; private System.Windows.Forms.TextBox tb_file; private System.Windows.Forms.Label lb_File; private System.Windows.Forms.TextBox tb_packaging; private System.Windows.Forms.Label lb_Packaging; private System.Windows.Forms.TextBox tb_version; private System.Windows.Forms.Label lb_Version; private System.Windows.Forms.TextBox tb_artifactid; private System.Windows.Forms.Label lb_ArtifactId; private System.Windows.Forms.TextBox tb_groupid; private System.Windows.Forms.Label lb_GroupId; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.TextBox tb_log; private System.Windows.Forms.OpenFileDialog SelectJarFile; } } ```
C# 中需要延时,该怎么做.求解
C#在操作word时,将RichTextBox内容粘贴到word时失败,昨天经网友提醒,发现是延时的. 于是今天在copy()之后,延时几秒中以达到效果.但怎么也不成功.求教 ``` string strDirectory = System.IO.Directory.GetCurrentDirectory().ToString(); string strTempFileName = strDirectory + @"\temp000.docx"; Clipboard.Clear(); _Word._Application _wardApp = new _Word.Application(); _wardApp.Visible = false; _Word._Document _wordDoc = null; object missing = System.Reflection.Missing.Value; object filename = strTempFileName; object readOnly = false; object isVisible = false; _wordDoc = _wardApp.Documents.Add(missing, missing, missing, isVisible); _Word.Paragraph _wordPara = _wordDoc.Content.Paragraphs.Add(ref missing); _Word.Range _wordRange = _wordDoc.Paragraphs[1].Range; #region 将RichTextBox的内容存储到临时word文档中 try { //建立word工作 rtxbContent.SelectAll(); rtxbContent.ClipboardCopy(); **//暂时使用了一个弹出窗口解决的**. MessageBox.Show("正在生成文件,请点击以确认","确信生成"); _wordDoc.Activate(); _wordRange.Paste(); } catch(Exception ex) { MessageBox.Show(ex.ToString(), "失败啦!<( ̄︶ ̄)>"); _wordRange.Paste(); } //保存word文档 _wordDoc.SaveAs2(filename, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); //退出word _wardApp.Quit(true, missing, missing); MessageBox.Show("保存成功", "成功啦"); #endregion ```
Dev的 spreadsheetControl 控件怎么设置单元格只读
C# winfrom Dev的 spreadsheetControl 控件怎么设置单元格只读 整个控件有readonly属性,单元格 行 列 都没找到readonly属性
C# 关于 static class 的应用
我们通常定义一个静态对象: public static class Common { public static readonly string A = "a"; public static readonly string B = "b"; } 通过 Common.A 这样的方式就可以使用了。 但是我现在希望 Common 类支持另外一个使用方式----可以将它作为另一个类的一个属性字段: public class Tools { ///应当如何被定义? public Common Common { get; set; } } 我希望同时可以这样使用 : public class Test { public void sample() { Tools tool = new Tools(); ///可以这样用 string value = tool.Common.A; ///也可以这样用 value = Common.A; } } 那么在Tools对象里面,Common应该怎样被定义? 这样做的原因:Tools 是一个常用对象,用户一定知道有Tools,但不一定知道有 Common,将Common定义在Tools可以方便使用,但是 Common 确实只是一个常量集合,没必要进行 new 操作。
C#.net中 string字符串的赋值失败问题
**麻烦前辈们指点一下,我这个做的功能是点击GRIDVIEW中自带的选择功能后将选定行的第一个格子的内容赋值给上面的CID1,CID2,然后在下面有个提交功能要用到这个CID1和CID2。但是CID1,CID2的值到下面提交功能就为空。 ** ![图片说明](https://img-ask.csdn.net/upload/201907/21/1563692024_17358.png) **这张图到第一个断点时CD1和CD3都成功赋值** ![图片说明](https://img-ask.csdn.net/upload/201907/21/1563692153_129327.png) **到第二个断点时,CD2和CD4成功赋值,但是此时CD1的值为空。** ![图片说明](https://img-ask.csdn.net/upload/201907/21/1563692252_383766.png) **再到下面用到CD1和CD2的提交功能设定的断点时CD1和CD2的值都为空** **我有试过直接赋值给CID1和CID2而不用CID3和CID4,这样的还是结果一样。** **CD1和CD2的赋值到提交功能的使用中间并没有经过任何赋值的步骤。** ![图片说明](https://img-ask.csdn.net/upload/201907/21/1563697563_369495.png) **这是那两个BTN的前端** ![图片说明](https://img-ask.csdn.net/upload/201907/21/1563697598_315243.png) **这是那两个IF的筛选条件也是BTN的功能赋值** **下面是后端代码:** ``` using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class HTML_ChooseCourse : System.Web.UI.Page { string CID1=""; string CID2=""; protected void Page_Load(object sender, EventArgs e) { } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { int index = GridView1.SelectedIndex; if (this.BtnTuesday.Enabled == false && this.BtnThursday.Enabled == true) { this.LabTuesday.Text = GridView1.Rows[index].Cells[1].Text; string CID3 =GridView1.Rows[index].Cells[0].Text.ToString(); CID1 = CID3; } if (this.BtnTuesday.Enabled == true & this.BtnThursday.Enabled == false) { this.LabThursday.Text = GridView1.Rows[index].Cells[1].Text; string CID4 = GridView1.Rows[index].Cells[0].Text.ToString(); CID2 = CID4; } if (this.BtnTuesday.Enabled == true & this.BtnThursday.Enabled == true) { Messagebox(" 您还没选择周次"); } } protected void BtnTuesday_Click(object sender, EventArgs e) { this.BtnTuesday.Enabled = false; this.BtnTuesday.Font.Underline = true; this.BtnThursday.Enabled = true; this.BtnThursday.Font.Underline = false; } protected void BtnThursday_Click(object sender, EventArgs e) { this.BtnThursday.Enabled = false; this.BtnThursday.Font.Underline = true; this.BtnTuesday.Enabled = true; this.BtnTuesday.Font.Underline = false; } public static void Messagebox(string message) { string strScript = "<script type=\"text/javascript\" language=\"javascript\">alert('" + message + "')</script>"; System.Web.UI.Page thisPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; thisPage.ClientScript.RegisterStartupScript(thisPage.GetType(), "ShowMsgBox", strScript); } protected void BtnSubmit_Click(object sender, EventArgs e) { if (this.LabThursday.Text != "" && this.LabTuesday.Text != "") { string connectionstr = "Data Source=DESKTOP-79153UB;Initial Catalog=db_StudentManage;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionstr); connection.Open(); SqlCommand command = new SqlCommand(); command.Connection = connection; command.CommandText = string.Format("insert into tb_ChooseCourse values ('{0}','{1}','周一')", CID1.ToString(),Session["ID"].ToString()); int count1 = command.ExecuteNonQuery(); command.CommandText = string.Format("insert into tb_ChooseCourse values ('{0}','{1}','周二')", CID2.ToString(), Session["ID"].ToString()); int count2 = command.ExecuteNonQuery(); int count3=count1+count2; if (count3 == 2) Messagebox("提交成功"); else Messagebox("提交失败,请重试!"); } else Messagebox("有信息为空,请继续选课!"); } } } ``` 下面是前端代码: ``` <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChooseCourse.aspx.cs" Inherits="HTML_ChooseCourse" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>选课</title> <style> .TopDiv { border: 0px solid black; width:100%; height: 60px; position: absolute; left: 20px; top: 20px; text-align:center; } .MiddleDiv { border: 0px solid black; width: 680px; height: 290px; position: absolute; left:320px; top: 180px; } .SecondDiv { border: 0px solid black; width: 894px; height: 50px; position: absolute; left:320px; top: 100px; } .btn { border-style: none; border-color: inherit; border-width: medium; background-color: #62a8ea; line-height: 45px; color: white; cursor: pointer; font-size: 16px; font-weight: bold; } </style> </head> <body style="background-color:#E6E6E6"> <form id="form1" runat="server"> <div class="TopDiv" style="font-family:幼圆;font-size:50px"> 选课 </div> <div class="SecondDiv"> <table style="background-color:#E6E6E6"> <tr> <td><asp:Button ID="BtnTuesday" CssClass="btn" runat="server" OnClick="BtnTuesday_Click" Text="周二" Height="50px" Width="90px" Font-Underline="False" /></td> <td style="font-family:幼圆;background-color:#E6E6E6;text-align:center"><asp:Label ID="LabTuesday" runat="server" Height="50px" Width="200px" BackColor="Silver" ></asp:Label></td> <td><asp:Button ID="BtnThursday" CssClass="btn" runat="server" OnClick="BtnThursday_Click" Text="周四" Height="50px" Width="90px"/></td> <td style="font-family:幼圆;background-color:#E6E6E6;text-align:center"><asp:Label ID="LabThursday" runat="server" Height="50px" Width="200px" BackColor="Silver"></asp:Label></td> <td><asp:Button ID="BtnSubmit" CssClass="btn" runat="server" Text="提交" Height="50px" Width="90px" OnClick="BtnSubmit_Click"/></td> </tr> </table> </div> <div class="MiddleDiv"> <asp:GridView style="text-align:center;font-family:幼圆;" Height="370px" Width="676px" ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="CId" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnSelectedIndexChanging="GridView1_SelectedIndexChanging"> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="CId" HeaderText="课程ID" ReadOnly="True" SortExpression="CId" /> <asp:BoundField DataField="CName" HeaderText="课程姓名" SortExpression="CName" /> <asp:BoundField DataField="TID" HeaderText="负责教师ID" SortExpression="TID" /> <asp:CommandField HeaderText="操作" ShowSelectButton="True" /> </Columns> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> <br /> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:db_StudentManageConnectionString %>" DeleteCommand="DELETE FROM [tb_Course] WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))" InsertCommand="INSERT INTO [tb_Course] ([CId], [CName], [TID]) VALUES (@CId, @CName, @TID)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [tb_Course]" UpdateCommand="UPDATE [tb_Course] SET [CName] = @CName, [TID] = @TID WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))"> <DeleteParameters> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="CId" Type="String" /> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </UpdateParameters> </asp:SqlDataSource> </div> </form> </body> </html> ```
C# 中关于值的传递,虚方法、重写、反射
整体思想是:我想封装一个dll的形式把MVC及虚方法提供出去,让第三方调用时重写虚方法把值传递进来。目前下面的代码并不能实现该需求,拜托大神给个方案。 第一步是我封装的MVC Controller,由我控制固定调用第二步的方法,在第二步方法中,又调用了第三步的虚方法,而虚方法是真正的交互信息(一个返回实体)来源,现在虚方法中 默认了一个信息来源。现在我该怎么做,让第三方调用的信息源来改变我这个默认信息来源。 有什么方法来做这样的效果,我思路有限,拜托大侠些给个好的方案。不胜感激。 >>>1. //返回的。实际上我想他输入“这是重写吗?”,而不是现在输入的“Hello Word” public class TestController : Controller { private readonly TestMessage _testMessage = new TestMessage(); //我知道如果需要使用子类的重写方法应该实例化继承它的子类,但是,这个子类是由第三方调用我封装这个dll的用户创建,我控制不到我到底该怎么实例化。请大神帮忙想一个思路 public ActionResult Index() { string resulValue = _testMessage.ParseMsg(roots); return Content(resulValue); } } public class TestMessage { >>>2. //封装dll中自用 public string ParseMsg(string content) { SendMessageModel model = MedleyMessage(content); //调用第三部的方法,而这里的调用,我想信息是第三方调用该dll方传入信息源过来,同时我要把content给到第三方,让第三方来分析这个content,分析后,根据content的不同给我信息到这里的调用 string resultMsg = string.Empty; switch (model.MessageType) { case MessageTypeEnum.Text: resultMsg = this.ReturnTextMsg(userName, model.Content); break; case MessageTypeEnum.PicText: if (model.MessageItem != null && model.MessageItem.Count > 0) { List<MessageModel> item = model.MessageItem.Take(8).ToList(); resultMsg = this.ReturnPicTextMsg(userName, item); } break; } return resultMsg; } >>>3. //虚方法 public virtual SendMessageModel MedleyMessage(string content) { SendMessageModel model = new SendMessageModel(); model.Content = "Hello Word"; model.MessageType = MessageTypeEnum.Text; return model; } } >>>4. //模拟第三方接收到content后返回信息源到我封装的dll public class MessageReturnTest : TestMessage { public override SendMessageModel MedleyMessage(string content) { SendMessageModel model = new SendMessageModel(); model.Content = "这是重写吗?"; model.MessageType = MessageTypeEnum.Text; return model; } }
C# 访问redis集群,怎么能够查到所有信息?
使用StackExchange.Redis.dll访问redis,redis环境是集群环境,但是我根据集群环境对外的ip和端口访问获取数据GetDataBase(),然后使用模糊查询的时候,查到的信息不全。这个代码应该怎么实现才能查到想要的所有信息。 其中cacheResultArr的长度为1,我从redis管理工具查到的不只是1条。 private static ConnectionMultiplexer redis; private static readonly object Locker = new object(); private IDatabase db { get; set; } public static ConnectionMultiplexer Manager { get { if (redis == null) { lock (Locker) { if (redis == null || !redis.IsConnected) { redis = GetManager(); } } } return redis; } } private static ConnectionMultiplexer GetManager(string connectionString = null) { if (string.IsNullOrEmpty(connectionString)) { connectionString = ConfigurationManager.AppSettings["redisAddress"]; } return ConnectionMultiplexer.Connect(connectionString); } public void Init() { //redis = ConnectionMultiplexer.Connect(connectString); db = Manager.GetDatabase(); LogInfoHelper.Write("-----初始化,连接Redis-----"); string kpatternAfc = ConfigurationManager.AppSettings["kpatternAfc"]; var script = "return redis.call('keys',@pattern)"; var prepared = LuaScript.Prepare(script); var cacheResult = db.ScriptEvaluate(prepared, new { pattern = kpatternAfc }); if (cacheResult.IsNull) { return; } else { string[] cacheResultArr = (string[])cacheResult; foreach (string key in cacheResultArr) { var entries = db.HashGetAll(key); foreach (var item in entries) { } } } }
C#.net中 公用string字符串的赋值失败问题
**我要做的是选择底下GridView的内容 然后点击提交按钮后 把GridView中的课程ID提交到数据库保存下来** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967328_266399.png) **问题出在这个公用字符串CID1 在GRIDView中选择时 CID1 能成功记录所选的信息 (图一断点验证)** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967249_929930.png) **但是点击提交按钮后CID1变成空(图二断点验证)** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967297_993480.png) **之前问过类似的问题,有个前辈是说点击了asp:button后 页面重新加载 刷新CID1 经过改造我现在这些操作过程是直接选择GRIDVIEW中的内容 再点击提交 中间没有点击按钮的操作 怎么会刷新呢 然后在网上查好像是要用ispostback来做 但是ispostback 只能用在方法里使用 在我定义这个字符串的位置不能够使用 希望前辈们能教教我 如何解决这个问题 或者能教教我如何点击GRIDVIEW中的内容 如何把CELL[0]中的内容传到底下submit的方法**里 **下面是后端代码**: ``` using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class HTML_ChooseCourse : System.Web.UI.Page { string CID1=""; protected void Page_Load(object sender, EventArgs e) { } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { //记录GridView中选择的内容,到下面提交时要用到 int index = GridView1.SelectedIndex; this.LabTuesday.Text = GridView1.Rows[index].Cells[1].Text; CID1=GridView1.Rows[index].Cells[0].Text.ToString(); } public static void Messagebox(string message) { string strScript = "<script type=\"text/javascript\" language=\"javascript\">alert('" + message + "')</script>"; System.Web.UI.Page thisPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; thisPage.ClientScript.RegisterStartupScript(thisPage.GetType(), "ShowMsgBox", strScript); } protected void BtnSubmit_Click(object sender, EventArgs e) { if ( this.LabTuesday.Text != "") { string connectionstr = "Data Source=DESKTOP-79153UB;Initial Catalog=db_StudentManage;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionstr); connection.Open(); SqlCommand command = new SqlCommand(); command.Connection = connection; //将上面记录的信息记录到数据库中 上面选择GRIDVIEW中的信息 记录下的 CID1 到这个方法就无内容了 command.CommandText = string.Format("insert into tb_ChooseCourse values ('{0}','{1}','周二')", CID1.ToString(),Session["ID"].ToString()); int count1 = command.ExecuteNonQuery(); if (count1== 1) Messagebox("提交成功"); else Messagebox("提交失败,请重试!"); connection.Close(); } else Messagebox("有信息为空,请继续选课!"); } } ``` **下面是前端代码:** ``` <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChooseCourse1.aspx.cs" Inherits="HTML_ChooseCourse" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>选课</title> <style> .TopDiv { border: 0px solid black; width:100%; height: 60px; position: absolute; left: 20px; top: 20px; text-align:center; } .MiddleDiv { border: 0px solid black; width: 680px; height: 290px; position: absolute; left:320px; top: 180px; } .SecondDiv { border: 0px solid black; width: 894px; height: 50px; position: absolute; left:320px; top: 100px; } .btn { border-style: none; border-color: inherit; border-width: medium; background-color: #62a8ea; line-height: 45px; color: white; cursor: pointer; font-size: 16px; font-weight: bold; } </style> </head> <body style="background-color:#E6E6E6"> <form id="form1" runat="server"> <div class="TopDiv" style="font-family:幼圆;font-size:50px"> 选课 </div> <div class="SecondDiv"> <table style="background-color:#E6E6E6"> <tr> <td><asp:Button ID="BtnTuesday" CssClass="btn" runat="server" Text="周二" Height="50px" Width="90px" Font-Underline="False" OnClientClick="return false" /></td> <td style="font-family:幼圆;background-color:#E6E6E6;text-align:center"><asp:Label ID="LabTuesday" runat="server" Height="50px" Width="490px" BackColor="Silver" ></asp:Label></td> <td><asp:Button ID="BtnSubmit" CssClass="btn" runat="server" Text="提交" Height="50px" Width="90px" OnClick="BtnSubmit_Click"/></td> </tr> </table> </div> <div class="MiddleDiv"> <asp:GridView style="text-align:center;font-family:幼圆;" Height="370px" Width="676px" ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="CId" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" > <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="CId" HeaderText="课程ID" ReadOnly="True" SortExpression="CId" /> <asp:BoundField DataField="CName" HeaderText="课程姓名" SortExpression="CName" /> <asp:BoundField DataField="TID" HeaderText="负责教师ID" SortExpression="TID" /> <asp:CommandField HeaderText="操作" ShowSelectButton="True" /> </Columns> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> <br /> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:db_StudentManageConnectionString %>" DeleteCommand="DELETE FROM [tb_Course] WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))" InsertCommand="INSERT INTO [tb_Course] ([CId], [CName], [TID]) VALUES (@CId, @CName, @TID)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [tb_Course]" UpdateCommand="UPDATE [tb_Course] SET [CName] = @CName, [TID] = @TID WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))"> <DeleteParameters> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="CId" Type="String" /> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </UpdateParameters> </asp:SqlDataSource> </div> </form> </body> </html> ```
C#一个小程序出现NullReferenceException
刚刚接触反射技术,但并不理解,对着资料打的程序 namespace 反射 { class Program { class User { private int _id; //模拟一个数据库中User的实体 public int ID { get { return _id; } set { _id = value; } } private string _name; public string Name { get { return _name; } set { _name = value; } } } interface IUser { void Insert(User user); //一个从数据库中获取User的接口 User GetUser(int id); } class SqlserverUser : IUser //继承IUser的sql类 { public void Insert(User user) { Console.WriteLine("在sql中插入数据"); //模拟的方法 } public User GetUser(int id) { Console.WriteLine("在sql中得到一条记录"); return null; } } class AccessUser : IUser { public void Insert(User user) { Console.WriteLine("在Access中插入数据"); } public User GetUser(int id) { Console.WriteLine("在Access中得到一条记录,{0}",id); return null; } } class Department { private int _id; public int ID //数据库中的department实体 { get { return _id; } set { _id = value; } } private string _location; public string Location { get { return _location; } set { _location = value; } } } interface IDepartment { void Insert(Department department); //获取Department的接口 Department GetDepartment(int id); } class SqlserverDepartment : IDepartment { public void Insert(Department department) //和上面的差不多 { Console.WriteLine("在sql中插入数据"); } public Department GetDepartment(int id) { Console.WriteLine("在sql中得到一条记录"); return null; } } class AccessDepartment : IDepartment { public void Insert(Department department) { Console.WriteLine("在Access中插入数据"); } public Department GetDepartment(int id) { Console.WriteLine("在Access中得到一条记录"); return null; } } class DataAccess //这个类完全是照抄资料上的,并不是很理解 { private static readonly string AssemblyName = "反射"; private static readonly string db = "Sqlserver"; public static IUser CreateUser() { string className = AssemblyName + "." + db + "User"; return (IUser)Assembly.Load(AssemblyName).CreateInstance(className); } public static IDepartment CreateDepartment() { string className = AssemblyName + "." + db + "Department"; return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className); } } static void Main(string[] args) { User user = new User(); IUser iu = DataAccess.CreateUser(); iu.Insert(user); } } } 执行时会抛出NullReferenceException:未将对象引用设置到对象的实例 上面显示的是最后一行代码有问题 ​求教各位大神是哪儿出错了 using System.Reflection;在程序里有添加
c#程序里有个地方出错,提示unsafe使用不正确,(c#)
private void button2_Click(object sender, EventArgs e) { Bitmap src = new Bitmap(pictureBox1.Image); int w = pictureBox1.Image.Width; int h = pictureBox1.Image.Height; try { Bitmap bitmap1 = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imaging.BitmapData myData1 = src.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imaging.BitmapData myData2 = bitmap1.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb); unsafe { byte* pIn = (byte*) myData1.Scan0.ToPointer(); byte* pOut = (byte*)myData2.Scan0.ToPointer(); byte* p; int Stride =myData1.Stride; for(int y = 0;y < h ; y ++) { for(int x = 0;x < w; x++) { //边缘8个点像素不变 if(x==0|| x==w-1||y==0||y==h-1) { pOut[0]=pIn[0]; pOut[1]=pIn[1]; pOut[2]=pIn[2]; } else { int r0,r1,r2,r3,r4,r5,r6,r7,r8; int g0,g1,g2,g3,g4,g5,g6,g7,g8; int b0,b1,b2,b3,b4,b5,b6,b7,b8; double vR,vG,vB; //左上 p=pIn-Stride-3; r1=p[2]; g1=p[1]; b1=p[0]; //正上 p=pIn-Stride; r2=p[2]; g2=p[1]; b2=p[0]; //右上 p=pIn-Stride + 3; r3=p[2]; g3=p[1]; b3=p[0]; //左 p=pIn-3; r4=p[2]; g4=p[1]; b4=p[0]; //右 p=pIn+Stride-3; r5=p[2]; g5=p[1]; b5=p[0]; //左下 p=pIn+Stride-3; r6=p[2]; g6=p[1]; b6=p[0]; //正下 p=pIn+Stride; r7=p[2]; g7=p[1]; b7=p[0]; //右下 p=pIn+Stride+3; r8=p[2]; g8=p[1]; b8=p[0]; //中心点 p=pIn; r0=p[2]; g0=p[1]; b0=p[0]; //使用模板 vR = (double) ((r1+r3+r6+r8+2*r2+2*r4+2*r7+2*r5+4*r0)/16); vG = (double) ((g1+g3+g6+g8+2*g2+2*g4+2*g7+2*g5+4*r0)/16); vB = (double) ((b1+b3+b6+b8+2*b2+2*b4+2*b7+2*b5+4*r0)/16); if(vR>0) { vR = Math.Min(255,vR); } else { vR = Math.Max(0,vR); } if(vG>0) { vG=Math.Min(255,vG); } else { vG=Math.Max(0,vG); } if(vB>0) { vB=Math.Min(255,vB); } else { vB=Math.Max(0,vB); } double temp =(vR*19595+vG*38469+vB*7472)/65536; pOut[0]=(byte)temp; pOut[1]=(byte)temp; pOut[2]=(byte)temp; } pIn+=3; pOut+=3; } pIn+=myData1.Stride-w*3; pOut+=myData1.Stride-w*3; } } src.UnlockBits(myData1); bitmap1.UnlockBits(myData2); pictureBox2.Image=bitmap1; } catch { pictureBox2.Image=null; } } ```![图片说明](https://img-ask.csdn.net/upload/201604/04/1459776885_5668.png) # ## # ```![图片说明](https://img-ask.csdn.net/upload/201604/04/1459776948_516228.png)c#
c#监听串口是怎么监听不到
![图片说明](https://img-ask.csdn.net/upload/201503/13/1426229159_781487.png) 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.IO.Ports; using System.Threading; using Microsoft.Win32; namespace JTproject { /*创建时间: *功能:监听串口 *创建作者: ***/ public partial class jianting : Form { public jianting() { InitializeComponent(); } private SerialPort Sp = new SerialPort(); public delegate void HandleInterfaceUpdataDelegate(string text); //委托,此为重点 private HandleInterfaceUpdataDelegate interfaceUpdataHandle; // private bool qiii = false; private void jianting_Load(object sender, EventArgs e) { GetComList(); //txtcomid.Focus(); btnPause.Enabled = false; } private void UpdateTextBox(string text) { txtData.Text = text; } //监听 private void btnENT_Click(object sender, EventArgs e) { //if ((cmID.Text.Trim() != "") && (cmRate.Text != "")) if ((cmID.Text.Trim()!= "") && cmRate.Text!= "") { interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateTextBox);//实例化委托对象 Sp.PortName = cmID.Text.Trim(); Sp.BaudRate = Convert.ToInt32(cmRate.Text.Trim()); Sp.Parity = Parity.None; Sp.StopBits = StopBits.One; Sp.DataReceived += new SerialDataReceivedEventHandler(Sp_DataReceived); Sp.ReceivedBytesThreshold = 1; try { Sp.Open(); ATCommand3("AT+CLIP=1\r", "OK"); //txtcomid.ReadOnly = true; btnPause.Enabled = true; btnENT.Enabled = false; } catch { MessageBox.Show("端口" + cmID.Text.Trim() + "打开失败!"); } } else { MessageBox.Show("请输入正确的端口号和波特率!"); cmID.Focus(); } } //暂停 private void btnPause_Click(object sender, EventArgs e) { Sp.Close(); btnENT.Enabled = true; btnPause.Enabled = false; //txtcomid.ReadOnly = false; } private void jianting_FormClosing(object sender, FormClosingEventArgs e) { Sp.Close(); } //sp是串口控件 public void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string strTemp = ""; double iSecond = 0.5; DateTime dtOld = System.DateTime.Now; DateTime dtNow = System.DateTime.Now; TimeSpan dtInter; dtInter = dtNow - dtOld; int i = Sp.BytesToRead; if (i > 0) { try { strTemp = Sp.ReadExisting(); } catch { } if (strTemp.ToLower().IndexOf("\r") < 0) { i = 0; } else { this.Invoke(interfaceUpdataHandle, strTemp); } } while (dtInter.TotalSeconds < iSecond && i <= 0) { dtNow = System.DateTime.Now; dtInter = dtNow - dtOld; i = Sp.BytesToRead; if (i > 0) { try { strTemp += Sp.ReadExisting(); } catch { } if (strTemp.ToLower().IndexOf("\r") < 0) { i = 0; } else { this.Invoke(interfaceUpdataHandle, strTemp); } } } // do null } /// <summary> /// 执行AT指令并返回 成功失败 /// </summary> /// <param name="ATCmd">AT指令</param> /// <param name="StCmd">AT指令标准结束标识</param> /// <returns></returns> private void ATCommand3(string ATCmd, string StCmd) { string response = ""; response = ATCommand(ATCmd, StCmd); } /// <summary> /// 执行AT指令并返回结果字符 /// </summary> /// <param name="ATCmd">AT指令</param> /// <param name="StCmd">AT指令标准结束标识</param> /// <returns></returns> private string ATCommand(string ATCmd, string StCmd) { string response = ""; int i; if (!ATCmd.EndsWith("\x01a")) { if (!(ATCmd.EndsWith("\r") || ATCmd.EndsWith("\r\n"))) { ATCmd = ATCmd + "\r"; } } Sp.WriteLine(ATCmd); //第一次读响应数据 if (Sp.BytesToRead > 0) { response = Sp.ReadExisting(); //去除前端多可能多读取的字符 if (response.IndexOf(ATCmd) > 0) { response = response.Substring(response.IndexOf(ATCmd)); } else { } if (response == "" || response.IndexOf(StCmd) < 0) { if (response != "") { if (response.Trim() == "ERROR") { //throw vError = new UnknowException("Unknown exception in sending command:" + ATCmd); } if (response.IndexOf("+CMS ERROR") >= 0) { string[] cols = new string[100]; cols = response.Split(';'); if (cols.Length > 1) { string errorCode = cols[1]; } } } } } //读第一次没有读完的响应数据,直到读到特征数据或超时 for (i = 0; i < 3; i++) { Thread.Sleep(1000); response = response + Sp.ReadExisting(); if (response.IndexOf(StCmd) >= 0) { break; } } return response; } /// <summary> /// 从注册表获取系统串口列表 /// </summary> private void GetComList() { RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); if (keyCom != null) { string[] sSubKeys = keyCom.GetValueNames(); this.cmID.Items.Clear(); foreach (string sName in sSubKeys) { string sValue = (string)keyCom.GetValue(sName); this.cmID.Items.Add(sValue); } } } private void cmID_DropDown(object sender, EventArgs e) { GetComList(); } } }
这是BUG吗?EXT3.2.1的ComboBox的readOnly属性
readOnly属性。只要设置readOnly:true,下拉框的那个下拉按钮就没有了,直接变成了一个文本框。 换成EXT 2.X就没有问题 不知道有人遇到这种情况了吗? 而且3.2.1的默认样式怎么没有边框啊? [img]http://dl.iteye.com/upload/attachment/268903/2879712c-a4f0-3381-80e7-a15e3a6db8fa.jpg[/img]
C#仿QQ聊天的代码。在打开聊天窗口并输入聊天内容执行发送时,程序报错
这是一段仿QQ聊天的代码。在打开聊天窗口并输入聊天内容执行发送时,程序报错: 参数化查询 '(@FromUserId int,@ToUserId int,@Message nvarchar(1),@MessageType' 需要参数 '@MessageState',但未提供该参数。 错误详细信息为: 未处理 System.Data.SqlClient.SqlException Message="参数化查询 '(@FromUserId int,@ToUserId int,@Message nvarchar(1),@MessageType' 需要参数 '@MessageState',但未提供该参数。" Source=".Net SqlClient Data Provider" ErrorCode=-2146232060 Class=16 LineNumber=0 Number=8178 Procedure="" Server="(local)" State=1 StackTrace: 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 DAL.SqlHelper.ExecuteNonQuery(String connectionString, CommandType cmdType, String cmdText, SqlParameter[] commandParameters) 位置 D:\BOOK\C#_code\project\QQ2010\DAL\SQLHelper.cs:行号 54 在 DAL.MessagesDAL.Insert(MessagesInfo entity) 位置 D:\BOOK\C#_code\project\QQ2010\DAL\MessagesDAL.cs:行号 122 在 BLL.Messages.SendMessage(MessagesInfo entity, EnumMessageType messageType) 位置 D:\BOOK\C#_code\project\QQ2010\BLL\Messages.cs:行号 84 在 MyQQ.frmChat.btnSend_Click(Object sender, EventArgs e) 位置 D:\BOOK\C#_code\project\QQ2010\MyQQ\frmChat.cs:行号 77 在 System.Windows.Forms.Control.OnClick(EventArgs e) 在 System.Windows.Forms.Button.OnClick(EventArgs e) 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 在 System.Windows.Forms.Control.WndProc(Message& m) 在 System.Windows.Forms.ButtonBase.WndProc(Message& m) 在 System.Windows.Forms.Button.WndProc(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 在 System.Windows.Forms.Application.Run(Form mainForm) 在 MyQQ.Program.Main() 位置 D:\BOOK\C#_code\project\QQ2010\MyQQ\Program.cs:行号 17 在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThreadHelper.ThreadStart() InnerException: 具体代码如下: using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Collections; namespace DAL { public class SqlHelper { public static readonly string ConnString = ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString; // Hashtable to store cached parameters private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } } public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection connection = new SqlConnection(connectionString)) { PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters) { parmCache[cacheKey] = commandParameters; } public static SqlParameter[] GetCachedParameters(string cacheKey) { SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey]; if (cachedParms == null) return null; SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length]; for (int i = 0, j = cachedParms.Length; i < j; i++) clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone(); return clonedParms; } private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) { foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); } } } } 请教高手如何解决?谢谢。
c# 连接postgresql出现乱码问题
![图片说明](https://img-ask.csdn.net/upload/201505/24/1432456111_791857.png) public partial class test : System.Web.UI.Page { private readonly string _strConn = "Server=192.168.0.107;Port=5432;User Id=postgres;Password=123;Database=TestDB;"; protected void Page_Load(object sender, EventArgs e) { try { NpgsqlConnection conn = new NpgsqlConnection(_strConn); conn.Open(); string sql = "select count(*) from Tdb"; NpgsqlCommand cmd = new NpgsqlCommand(sql, conn); int n = cmd.ExecuteNonQuery(); conn.Close(); if (n > 0) { Label1.Text = "yes"; } else { Label1.Text = "no"; } } catch (Exception ex) { Label1.Text = ex.Message; } } } 问题和代码都在这里了 求大神
mfc cdatectrl 设置readonly属性
mfc给cdatectrl控件设置只读属性!但我始终没找到类似属性,只有enablewindows但这不是我想要的
c#异步通讯 tcp连接任意ip怎么修改
c#异步通讯 tcp连接任意ip怎么修改,本机可以工作,但是把Dns.GetHostName()改成指定的ipv6地址连接不上 ``` private int maxPlayingTables; private CheckBox[,] checkBoxGameTables; private TcpClient client = null; private Service service; private StreamWriter sw; private StreamReader sr; private BinaryReader br; private BinaryWriter bw; bool exitWhile = false; private FormPlaying formPlaying; private bool isConnected = false; //是否连接成功 BackgroundWorker connectWork = new BackgroundWorker(); //是否正常退出接收线程 private bool normalExit = false; //命令是否来自服务器 private bool isReceiveCommand = false; //所坐的游戏桌座位号,-1表示未入座,0表示坐到黑方,1表示坐到白方 private int side = -1; public FormRoom() { InitializeComponent(); connectWork.DoWork += new DoWorkEventHandler(connectWork_DoWork); connectWork.RunWorkerCompleted += new RunWorkerCompletedEventHandler(connectWork_RunWorkerCompleted); } private void FormRoom_Load(object sender, EventArgs e) { Random r = new Random((int)DateTime.Now.Ticks); textBoxName.Text = "Player" + r.Next(1, 100); maxPlayingTables = 0; textBoxLocal.ReadOnly = true; textBoxServer.ReadOnly = true; } /// <summary>异步方式与服务器进行连接</summary> void connectWork_DoWork(object sender, DoWorkEventArgs e) { client = new TcpClient(); //此处为方便演示,实际使用时要将Dns.GetHostName()改为服务器域名 //IAsyncResult result = client.BeginConnect(Dns.GetHostName(), 51888,null,null); //while (result.IsCompleted == false) //{ // Thread.Sleep(100); //// //} try { // client.EndConnect(result); client = new TcpClient(Dns.GetHostName(), 51888); e.Result = "login"; } catch (Exception ex) { e.Result = ex.Message; return; } } /// <summary>异步方式与服务器完成连接操作后的处理</summary> void connectWork_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Result.ToString() == "login") { isConnected = true; groupBox1.Visible = true; textBoxLocal.Text = client.Client.LocalEndPoint.ToString(); textBoxServer.Text = client.Client.RemoteEndPoint.ToString(); buttonConnect.Enabled = false; //获取网络流 NetworkStream netStream = client.GetStream(); //sr = new StreamReader(netStream, System.Text.Encoding.UTF8); //sw = new StreamWriter(netStream, System.Text.Encoding.UTF8); br = new BinaryReader(netStream); bw = new BinaryWriter(netStream); service = new Service(listBox1, bw); service.SendToServer("Login," + textBoxName.Text.Trim()); Thread threadReceive = new Thread(new ThreadStart(ReceiveData)); threadReceive.IsBackground = true; threadReceive.Start(); } else { //AddStatus("连接失败:" + e.Result); MessageBox.Show("与服务器连接失败", "", MessageBoxButtons.OK, MessageBoxIcon.Information); return; //buttonConnect.Enabled = true; } } /// <summary>【登录】按钮的Click事件</summary> private void buttonConnect_Click(object sender, EventArgs e) { buttonConnect.Enabled = false; connectWork.RunWorkerAsync(); //try //{ // //仅作本机测试,实际使用时要将Dns.GetHostName()改为服务器域名 // client = new TcpClient(Dns.GetHostName(), 51888); //} //catch //{ // MessageBox.Show("与服务器连接失败", "", // MessageBoxButtons.OK, MessageBoxIcon.Information); // return; //} //groupBox1.Visible = true; //textBoxLocal.Text = client.Client.LocalEndPoint.ToString(); //textBoxServer.Text = client.Client.RemoteEndPoint.ToString(); //buttonConnect.Enabled = false; ////获取网络流 //NetworkStream netStream = client.GetStream(); //sr = new StreamReader(netStream, System.Text.Encoding.UTF8); //sw = new StreamWriter(netStream, System.Text.Encoding.UTF8); //service = new Service(listBox1, sw); ////登录服务器,获取服务器各桌信息 ////格式:Login,昵称 //service.AsyncSendToServer("Login," + textBoxName.Text.Trim()); //Thread threadReceive = new Thread(new ThreadStart(ReceiveData)); //threadReceive.Start(); } ``` 后面处理接受数据的就不贴了,
如何用jquery动态改变textarea的readonly属性
我现在 有一个文本域,前台用的是jQuery,然后是用到了富文本,用的是Xheditor这个插件。现在有一个问题。 我现在想查看的让这个文本域从可编辑编程不可编辑状态,百度了好久没有找到希望大神。能帮帮我
C#保存为Excel时提示Access to the path '.xlsx' is denied.
昨天还好好的,好像也没干嘛,保存时就出问题了。 然后试着在程序中添加如下代码,取消文件夹的只读权限。代码如下: ``` System.IO.DirectoryInfo DirInfo = new DirectoryInfo(excelFilePath); if (DirInfo.Attributes == FileAttributes.ReadOnly) DirInfo.Attributes = FileAttributes.Normal ; ``` 结果还是不行,然后手动将那个文件夹的只读属性去掉,或者给用户赋予full control还是不行。求高手指导下,实在是搞不了了
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
ES6基础-ES6的扩展
进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, Atom,Sublime)或者IDE(Webstorm) 浏览器最新的Chrome 字符串的扩展: 模板字符串,部分新的方法,新的unicode表示和遍历方法: 部分新的字符串方法 padStart,padEnd,repeat,startsWith,endsWith,includes 字...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Qt实践录:开篇
本系列文章介绍笔者的Qt实践之路。
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
一条链接即可让黑客跟踪你的位置! | Seeker工具使用
搬运自:冰崖的部落阁(icecliffsnet) 严正声明:本文仅限于技术讨论,严禁用于其他用途。 请遵守相对应法律规则,禁止用作违法途径,出事后果自负! 上次写的防社工文章里边提到的gps定位信息(如何防止自己被社工或人肉) 除了主动收集他人位置信息以外,我们还可以进行被动收集 (没有技术含量) Seeker作为一款高精度地理位置跟踪工具,同时也是社交工程学(社会工程学)爱好者...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问