c# vs list类型转换问题

图片说明
图片说明

3个回答

两个办法

selfCards.Addrange(_selfCards.ToArray());

or

selfCards = _selftCards.ToList();

selfCards是List<>

改成

CardInFight[] selfCards;

_selfCards.ToArray() 改成 _selftCards.ToList()

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# 如何将一个类中全部字段添加到List中(字段为自定义类,引用类型,不是值类型)?
自定义了一个类,里面包含了很多字段(也是自定义的类),如何将类中的字段全部添加到list中 做这个功能主要是为了能够通过list来访问FileInfoInIni,调用FileInfoInIni的方法。 或者哪位大神有更好的办法能实现这个功能也行 ``` class SystemParamClass { public String ModelFileSavePathName = "D:/Data/SystemParam";//保存参数的文件夹名称 public String ModelSystemParamFileName = "/SystemParam.ini"; public List<FileInfoInIni> AllIniParam = new List<FileInfoInIni>(); public FileInfoInIni LeftDownCamGrapImageHeight; public FileInfoInIni LeftDownCamGrapImagePoseX; public FileInfoInIni LeftDownCamGrapImagePoseY; public FileInfoInIni RightDownCamGrapImageHeight public FileInfoInIni RightDownCamGrapImagePoseX; public FileInfoInIni RightDownCamGrapImagePoseY; } ``` 如何写一个方法,自动将 FileInfoInIni 全部添加到 AllIniParam 中 FileInfoInIni  为自定义的类,我试过了反射,只能设置值,不知道怎么转换类型,然后添加进去 ``` public static void AddTolist(object TempClass) { Type t = TempClass.GetType(); FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public); foreach (FieldInfo field in fields) { if (field.FieldType == typeof(FileInfoInIni)) { Console.WriteLine("Field:" + field); Console.WriteLine("Field:" + field.Name ); } //Console.WriteLine("Field:" + field); } } ``` 不能强制转换类型 ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573789359_269905.jpg) FileInfoInIni的定义 ``` public class FileInfoInIni { private string FilePathAndName; private string FileSection; private string FileAppName; public object Value; public string Key { get => FileAppName; } [DllImport("kernel32", CharSet = CharSet.Ansi, EntryPoint = "GetPrivateProfileStringA", ExactSpelling = true, SetLastError = true)] private static extern int GetPrivateProfileString([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpApplicationName, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpKeyName, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpDefault, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpReturnedString, int nSize, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpFileName); [DllImport("kernel32", CharSet = CharSet.Ansi, EntryPoint = "WritePrivateProfileStringA", ExactSpelling = true, SetLastError = true)] private static extern int WritePrivateProfileString([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpApplicationName, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpKeyName, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpString, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpFileName); public string GetINI(string Section, string AppName, string lpDefault, string FileName) { string text = Strings.LSet("", 256); FileInfoInIni.GetPrivateProfileString(ref Section, ref AppName, ref lpDefault, ref text, Strings.Len(text), ref FileName); return Strings.Left(text, checked(Strings.InStr(text, "\0", CompareMethod.Binary) - 1)); } public long WriteINI(string Section, string AppName, string lpDefault, string FileName) { return (long)FileInfoInIni.WritePrivateProfileString(ref Section, ref AppName, ref lpDefault, ref FileName); } public bool ReadValue() { bool result; try { this.Value = this.GetINI(this.FileSection, this.FileAppName, "", this.FilePathAndName); bool flag = Operators.ConditionalCompareObjectEqual(this.Value, "", false); if (flag) { result = false; return result; } } catch (Exception expr_41) { ProjectData.SetProjectError(expr_41); result = false; ProjectData.ClearProjectError(); return result; } result = true; return result; } public bool SaveValue() { bool result; try { string left = this.Value.ToString(); this.WriteINI(this.FileSection, this.FileAppName, Conversions.ToString(this.Value), this.FilePathAndName); string iNI = this.GetINI(this.FileSection, this.FileAppName, "", this.FilePathAndName); bool flag = Operators.CompareString(left, iNI, false) != 0; if (flag) { result = false; return result; } } catch (Exception expr_71) { ProjectData.SetProjectError(expr_71); result = false; ProjectData.ClearProjectError(); return result; } result = true; return result; } public FileInfoInIni(string TempFilePathAndName, string TempFileSection, string TempFileAppName) { this.Value = RuntimeHelpers.GetObjectValue(new object()); this.FilePathAndName = TempFilePathAndName; this.FileSection = TempFileSection; this.FileAppName = TempFileAppName; this.Value = null; } public void dispose() { this.FilePathAndName = ""; this.FileSection = ""; this.FileAppName = ""; this.Value = null; } } ```
C#求幂集,如何将List<BitArray>转换为值引用
比如A={1,2,3},那么A的幂集为P(A)={{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},{空}},程序需要用位串表示,所以程序如下,能正常运行: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<BitArray> A = new List<BitArray>(); A.Add(new BitArray(new byte[1] { 1 })); A.Add(new BitArray(new byte[1] { 2 })); A.Add(new BitArray(new byte[1] { 3 })); List<BitArray> B = new List<BitArray>(); List<List<BitArray>> C = new List<List<BitArray>>(); Program p = new Program(); p.GetPowerSet(0, A, B, ref C); Console.WriteLine(C.Count); Console.ReadLine(); } void GetPowerSet(int i, List<BitArray> A, List<BitArray> B, ref List<List<BitArray>> C) { if (i == A.Count) { C.Add(B); //求助:这个地方如何转换成值引用(深层拷贝),类似ArrayList可写成C.Add((ArrayList)B.Clone()),而List<B it Array>没有Clone()方法! } else { BitArray x = GetElem(A, i); int k = GetLength(B); B.Insert(k, x); GetPowerSet(i + 1, A, B, ref C); B.RemoveAt(k); GetPowerSet(i + 1, A, B, ref C); } } BitArray GetElem(List<BitArray> A, int i) { return A[i]; } int GetLength(List<BitArray> A) { int i = 0; foreach (var a in A) { //if (a !=null) //{ i++; //} } return i; } } } ``` ![图片说明](https://img-ask.csdn.net/upload/201604/27/1461768571_253281.png) 监视窗口中的[0][1][2][3][4][5][6][7]的count不为0才对! 求助:见代码区域--这个地方如何转换成值引用(深层拷贝),类似ArrayList可写成C.Add((ArrayList)B.Clone()),而List< Bit Array>没有Clone()方法!或是我这个程序什么地方有问题,请赐教!
C# 中怎样将Ilist转换成List
我在后台方法中写了一个返回 Ilist集合的sql ,然后将这个集合放进DataSourse中的时候。能看到查询的条数,但是内容却为空。 所以求各位大侠们 指点
C#三层linq
<p>无法将类型为“System.Data.Linq.DataQuery`1[DAL.Message]”的对象强制转换为类型“System.Collections.Generic.List`1[DAL.Message]”。 <br>说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 <br><br>异常详细信息: System.InvalidCastException: 无法将类型为“System.Data.Linq.DataQuery`1[DAL.Message]”的对象强制转换为类型“System.Collections.Generic.List`1[DAL.Message]”。 <br><br>源错误: <br></p> <pre name="code" class="C#">行 74: public List&lt;Message&gt; findPage(int pagesize, int pageindex) 行 75: { 行 76: return (List&lt;Message&gt;)mdc.Message.Skip(pageindex * pagesize).Take(pagesize); 行 77: } 行 78: </pre> <p><br><br><br>源文件: D:\My Documents\Visual Studio 2008\Projects\Messages\BLL\MessageBLL.cs    行: 76 <br><br>堆栈跟踪: <br><br><br>[InvalidCastException: 无法将类型为“System.Data.Linq.DataQuery`1[DAL.Message]”的对象强制转换为类型“System.Collections.Generic.List`1[DAL.Message]”。] <br>   BLL.MessageBLL.findPage(Int32 pagesize, Int32 pageindex) in D:\My Documents\Visual Studio 2008\Projects\Messages\BLL\MessageBLL.cs:76 <br>   Web.index.GetData() in D:\My Documents\Visual Studio 2008\Projects\Messages\Web\index.aspx.cs:45 <br>   Web.index.Page_Load(Object sender, EventArgs e) in D:\My Documents\Visual Studio 2008\Projects\Messages\Web\index.aspx.cs:40 <br>   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 <br>   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +43 <br>   System.Web.UI.Control.OnLoad(EventArgs e) +91 <br>   System.Web.UI.Control.LoadRecursive() +74 <br>   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2603 </p><br /><strong>问题补充:</strong><br />谢谢你的回答,这个我知道就是不知道怎么去转换。
问个C#上位机数数据接收的问题
目前用C#编写了一个Winform上位机界面,其中用到SerialPort接收数据 具体流程如下: this.BeginInvoke(new EventHandler(delegate//调用控件的invoke方法,由主线程UI执行委托 //这里说一下:Begininvoke为"唤醒",异步执行EventHandler类的delegate委托 { int lenth = serialPort1.BytesToRead;//定义字节数组的长度:每接收一次接收数据读取的字符串长度 if (lenth != 0) { Byte[] BYTE = new Byte[lenth];//建立字节数组对象 serialPort1.Read(BYTE, 0, lenth);//读取接收的字节 builder.Clear();//接收数据时清除之前的残余字符串 foreach (byte str in BYTE) { builder.Append(str.ToString("X2")); } richReceiveText1.AppendText(builder.ToString().Replace(" ", "")); count += lenth; if (richReceiveText1.Text.Substring(0, 2) != "88") { richReceiveText1.Clear(); count = 0; } else { if (richReceiveText1.TextLength == 10) { list1.Add(richReceiveText1.Text); SetDSPReceive(); richReceiveText1.Clear(); } } receiveDataCount.Text = "接收数据:" + count.ToString() + "字节"; } else { ; } })); 这里我是先用richBox接收协议字符串,然后根据报头报位把协议存入到一个List<String>中,然后用SetDSPReceive()方法将list的内容通过协议规定先将字符串转换为十六进制然后再转换成十进制并给窗口的参数值进行赋值。 其中SetDSPReceive()为将接收的十六进制字节转换为界面上的参数的协议(比如 88 03 04 01 07 08,88 08是报头报尾巴,01决定了是什么参数,03,04,07决定了参数值是多少,数据一个100多条) 。 但问题来了:由于公司的控制器的数据发送间隔为10ms。而控制器发送数据时上位机winform会出现卡壳、数据不动的情况。之前用串口调试助手尝试了,单个发送一个协议没有问题,发完一个再手动单个发第二个也完全没有问题,间隔100ms以上连续发送数据也没出现卡壳,我想是不是因为发送的间隔比将接收的数据转换为需求的参数短了导致接收数据不全发生卡壳?? 还有一个问题:本应该接收到的字符串协议是88 03 04 01 07 08,但有时候接收到的协议是00 00 00 0D 88。。。。。,如何过滤掉表头之前的数据呢? 是不是:if (richBox1.Text.Substring(0, 2) != "88") { richBox1.Clear(); count = 0; } ?????????????????
C#,没有key只有value的JSON串,如何转换为list<T>
[]里面的JSON没有key只有value Infor:{"tradeCode":"5040010","mess":"成功","data":[["801","玉璜","2114-10-01","订单","5.29","3.91","100%","100%","0.15%","0.0%","香港","香 港","1.00","1","0","0","0.00","0.0","0.0","0.0"],["802","双龙玉璜","2114-10-01","订单","5.17","3.82","100%","100%","0.15%","0.0%","香港","香 港","1.00","1","0","0","0.00","0.0","0.0","0.0"],["803","龙凤玉佩","2114-10-14","订单","2.32","1.72","100%","100%","0.3%","0.0%","香港","香 港","0.01","1","0","0","0.00","0.0","0.0","0.0"],["805","古玉屏风","2114-11-11","订单","1.97","1.45","100%","100%","0.3%","0.0%","香港","香 港","0.01","1","0","0","0.00","0.0","0.0","0.0"],["806","古玉玉龙","2114-12-18","订单","2.64","1.95","100%","100%","0.3%","0.0%","香港","香 港","0.01","1","0","0","0.00","0.0","0.0","0.0"]],"sid":"M74W4OIDTICHQ9AUE3NLRVGG90KUHFHT","ver":"1.0.0","zip":"n","charset":"UTF- 8","encrypt":"0","cryptKey":null,"digest":"","packetNo":1,"packetCounts":1,"returned":false}
问一个关于C#将接收的字节数据赋值给变量的问题
前面接收数据步骤是这样的 int lenth = serialPort1.BytesToRead; Byte[] BYTE = new Byte[lenth]; serialPort1.Read(BYTE, 0, lenth); 这里定义5个具体变量:byte A,B,C,D,E 现在要求是接收5次数据,第一次把收到的byte赋值给A,第二次赋值给B。。。第五次赋值给E。 以此类推。第六次循环在次赋值给A,B,C,D,E以此类推 以前习惯转到List<String>或字符串数组里就会,但用字节形式直接转换就不会了。 求大神解答~~~~~~~
var 强制转换 转换成List
大家好 请教一个问题 dll中代码是 ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505631140_673996.png) 我现在反射这个dll 然后我怎么将 这个var Info 存到List集合呢 ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505631149_763955.png)
C# 无法触发窗口弹出 show方法不生效
要做一个基于UDP的群聊加私聊程序,群聊已经实现了,私聊也已经单独实现了,但是我想让着两个窗体有联系,就想QQ一样,PC1发消息的时候,PC2 自动弹出消息窗口。 登录窗体: using System.Net; namespace NetMeetingExample { public partial class FormLogin : Form { public FormLogin() { InitializeComponent(); } private void Login_Load(object sender, EventArgs e) { this.textBox1.Text = Dns.GetHostName().ToString(); } public static string nicheng; public static string group; private void button1_Click(object sender, EventArgs e) { nicheng = textBox1.Text; group =comboBox1.Text; //this.Opacity = 0; this.DialogResult = DialogResult.OK; } private void button2_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } } } 群聊窗体: using System.Net; using System.Net.Sockets; using System.Threading; namespace NetMeetingExample { public partial class FormMeeting : Form { private enum ListBoxOperation { AddItem, RemoveItem }; private delegate void SetListBoxItemCallback( ListBox listbox, string text, ListBoxOperation operation); SetListBoxItemCallback listBoxCallback; //使用的IP地址 private IPAddress broderCastIp = IPAddress.Parse("224.100.0.1"); //使用的接收端口号 public static int port = 8001; private UdpClient udpClient; public FormMeeting() { if (FormLogin.group=="101021") { broderCastIp = IPAddress.Parse("224.100.0.1"); } if (FormLogin.group == "101022") { broderCastIp = IPAddress.Parse("224.100.0.2"); } if (FormLogin.group == "101023") { broderCastIp = IPAddress.Parse("224.100.0.3"); } if (FormLogin.group == "101024") { broderCastIp = IPAddress.Parse("224.100.0.4"); } InitializeComponent(); listBoxCallback = new SetListBoxItemCallback(SetListBoxItem); this.Text = FormLogin.group; } private void SetListBoxItem(ListBox listbox, string text, ListBoxOperation operation) { string[] cc;//= splitString[1].Split('@'); if (listbox.InvokeRequired == true) { this.Invoke(listBoxCallback, listbox, text, operation); } else { if (operation == ListBoxOperation.AddItem) { if (listbox == listBoxAddress) { if (listbox.Items.Contains(text) == false) if (text != "") { { cc=text.Split('@'); string oo = cc[0]; listBoxMessage.Items.Add(oo+"进入。"); listbox.Items.Add(text); } } } else { if (text != "[]进入。") { listbox.Items.Add(text); // SetListBoxItem(listBoxMessage, // string.Format("[{0}]进入。",cc[0]), ListBoxOperation.AddItem); } } listbox.SelectedIndex = listbox.Items.Count - 1; listbox.ClearSelected(); } else if (operation == ListBoxOperation.RemoveItem) { cc = text.Split('@'); // SetListBoxItem(listBoxMessage, // string.Format("[{0}]退出。", cc[0]), ListBoxOperation.AddItem); // // listBoxMessage.Items.Add(string.Format("[{0}]退出。", cc[0])); string oo = cc[0]; listBoxMessage.Items.Add(oo+"退出。"); listbox.Items.Remove(text); } } } public static void SendMessage(IPAddress ip, string sendString) { UdpClient myUdpClient = new UdpClient(); //允许发送和接收广播数据报 // myUdpClient.EnableBroadcast = true; //必须使用组播地址范围内的地址 IPEndPoint iep = new IPEndPoint(ip, port); //将发送内容转换为字节数组 byte[] bytes = System.Text.Encoding.UTF8.GetBytes(sendString); try { //向子网发送信息 myUdpClient.Send(bytes, bytes.Length, iep); } catch (Exception err) { MessageBox.Show(err.Message, "发送失败"); } finally { myUdpClient.Close(); } } public static IPAddress ipp; private void FormMeeting_Load(object sender, EventArgs e) { listBoxMessage.HorizontalScrollbar = true; buttonLogin.Enabled = true; buttonLogout.Enabled = false; groupBoxRoom.Enabled = false; IPAddress[] iph = Dns.GetHostAddresses(Dns.GetHostName()); ipp = iph[iph.Length-2]; } /// <summary> /// 接收线程 /// </summary> private void ReceiveMessage() { udpClient = new UdpClient(port); //必须使用组播地址范围内的地址 udpClient.JoinMulticastGroup(broderCastIp); udpClient.Ttl = 50; IPEndPoint remote = null; while (true) { try { //关闭udpClient时此句会产生异常 byte[] bytes = udpClient.Receive(ref remote); string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length); string[] splitString = str.Split(','); int s = splitString[0].Length; //string[] splithostname; // splithostname= splitString[1].Split('@'); string[] mhost; mhost = splitString[1].Split('@'); switch (splitString[0]) { case "Login": //进入会议室 // SetListBoxItem(listBoxMessage, // string.Format("[{0}]进入。", splithostname[0]), ListBoxOperation.AddItem); SetListBoxItem(listBoxAddress, splitString[1], ListBoxOperation.AddItem); string userListString = "List," ; for (int i = 0; i < listBoxAddress.Items.Count; i++) { userListString += "," + listBoxAddress.Items[i].ToString(); } SendMessage(remote.Address, userListString); break; case "List": //参加会议人员名单 for (int i = 1; i < splitString.Length; i++) { SetListBoxItem(listBoxAddress, splitString[i], ListBoxOperation.AddItem); // SetListBoxItem(listBoxMessage, // string.Format("[{0}]进入。", splithostname[0]), ListBoxOperation.AddItem); } break; case "Message": //发言内容 SetListBoxItem(listBoxMessage, string.Format("[{0}]说:{1}", mhost[0], mhost[1]), ListBoxOperation.AddItem); break; case "Logout": //退出会议室 // SetListBoxItem(listBoxMessage, // string.Format("[{0}]退出。", FormLogin.nicheng), // ListBoxOperation.AddItem); // SetListBoxItem(listBoxMessage, // string.Format("[{0}]退出。", splithostname[0]), ListBoxOperation.AddItem); SetListBoxItem(listBoxAddress, FormLogin.nicheng + "@" + remote.Address.ToString(), ListBoxOperation.RemoveItem); break; case "mi": FormChat fc = new FormChat(); fc.Owner = this; fc.Show(); // MessageBox.Show("sfs"); break; } } catch { //退出循环,结束线程 break; } } } private void textBoxMessage_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Return) { if (textBoxMessage.Text.Trim().Length > 0) { SendMessage(broderCastIp, "Message," + FormLogin.nicheng+"@"+ textBoxMessage.Text); textBoxMessage.Text = ""; } } } //窗体已关闭并指定关闭原因前触发的事件 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (buttonLogout.Enabled == true) { MessageBox.Show("请先离开会议室,然后再退出!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); //不关闭窗体 e.Cancel = true; } } //单击进入会议室按钮触发的事件 private void buttonLogin_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; Thread myThread = new Thread(ReceiveMessage); myThread.Start(); //等待接收线程准备完毕 Thread.Sleep(1000); SendMessage(broderCastIp, "Login,"); buttonLogin.Enabled = false; buttonLogout.Enabled = true; groupBoxRoom.Enabled = true; // SetListBoxItem(listBoxMessage, // string.Format("[{0}]进入。", FormLogin.nicheng), ListBoxOperation.AddItem); SetListBoxItem(listBoxAddress, FormLogin.nicheng + "@" +ipp.ToString(), ListBoxOperation.AddItem); string userListString = "List," + FormLogin.nicheng + "@" + ipp.ToString(); SendMessage(broderCastIp , userListString); Cursor.Current = Cursors.Default; } //单击退出会议室按钮触发的事件 private void buttonLogout_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; SendMessage(broderCastIp, "Logout,"); udpClient.DropMulticastGroup(this.broderCastIp); //等待接收线程处理完毕 Thread.Sleep(1000); //结束接收线程 udpClient.Close(); buttonLogin.Enabled = true; buttonLogout.Enabled = false; groupBoxRoom.Enabled = false; Cursor.Current = Cursors.Default; } private void button1_Click(object sender, EventArgs e) { // string add = "sdfsdf-192.168.22.3"; //string[] omg = add.Split('@'); // MessageBox.Show(omg[1].ToString()); //FormChat FC = new FormChat(); // FC.Owner = this; // FC.Show(); } public static string[] omg; private void listBoxAddress_MouseDoubleClick(object sender, MouseEventArgs e) { string add = listBoxAddress.SelectedItem.ToString(); omg = add.Split('@'); FormChat fc = new FormChat(); fc.Owner = this; fc.Show(); } } } 私聊窗体 using System.Net; using System.Net.Sockets; using System.Threading; namespace NetMeetingExample { public partial class FormChat : Form { /// <summary>接收用</summary> private UdpClient receiveUdpClient; /// <summary>发送用</summary> private UdpClient sendUdpClient; /// <summary>和本机绑定的端口号</summary> private const int port = 18001; /// <summary>本机IP</summary> IPAddress ip; /// <summary>远程主机IP</summary> IPAddress remoteIp; public FormChat() { InitializeComponent(); IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); ip = ips[ips.Length - 1]; //为了在同一台机器调试,此IP也作为默认远程IP // remoteIp = ip; remoteIp = IPAddress.Parse(FormMeeting.omg[1]); textBoxRemoteIP.Text = FormMeeting.omg[1]; textBoxSend.Text = "你好!"; } private void buttonSend_Click(object sender, EventArgs e) { Thread t = new Thread(SendMessage); t.IsBackground = true; t.Start(textBoxSend.Text); } private void FormChat_Load(object sender, EventArgs e) { //创建一个线程接收远程主机发来的信息 Thread myThread = new Thread(ReceiveData); //将线程设为后台运行 myThread.IsBackground = true; myThread.Start(); textBoxSend.Focus(); } private void SendMessage(object obj) { string message = (string)obj; sendUdpClient = new UdpClient(0); byte[] bytes = System.Text.Encoding.Unicode.GetBytes(message); IPEndPoint iep = new IPEndPoint(remoteIp, port); try { sendUdpClient.Send(bytes, bytes.Length, iep); AddItem(listBoxStatus, string.Format("向{0}发送:{1}", iep, message)); ClearTextBox(); } catch (Exception ex) { AddItem(listBoxStatus, "发送出错:" + ex.Message); } } private void ReceiveData() { IPEndPoint local = new IPEndPoint(ip, port); receiveUdpClient = new UdpClient(local); IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0); while (true) { try { //关闭udpClient时此句会产生异常 byte[] receiveBytes = receiveUdpClient.Receive(ref remote); string receiveMessage = Encoding.Unicode.GetString( receiveBytes, 0, receiveBytes.Length); AddItem(listBoxReceive, string.Format("来自{0}:{1}", remote, receiveMessage)); } catch { break; } } } delegate void AddListBoxItemDelegate(ListBox listbox, string text); private void AddItem(ListBox listbox, string text) { if (listbox.InvokeRequired) { AddListBoxItemDelegate d = AddItem; listbox.Invoke(d, new object[] { listbox, text }); } else { listbox.Items.Add(text); listbox.SelectedIndex = listbox.Items.Count - 1; listbox.ClearSelected(); } } delegate void ClearTextBoxDelegate(); private void ClearTextBox() { if (textBoxSend.InvokeRequired) { ClearTextBoxDelegate d = ClearTextBox; textBoxSend.Invoke(d); } else { textBoxSend.Clear(); textBoxSend.Focus(); } } private void button1_Click(object sender, EventArgs e) { FormMeeting.SendMessage(remoteIp, "mi," + "hello~"); // SendMessage(broderCastIp, "Message," + textBoxMessage.Text); } } } Program.cs static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); FormLogin fl = new FormLogin(); if (fl.ShowDialog() == DialogResult.OK) { Application.Run(new FormMeeting()); } else { Application.Exit(); } 在私聊窗体里单击BUTTON1会向对端发送“mi”命令从而触发对端的窗体弹出,函数能进去,但窗体就是不弹出,另外将弹出写在button_click下,然后在mi下执行button的_click事件也不能触发,,但是单独单击却能打开,函数是能进来的 求高人解决。。。。。。。。。。
求助 ,关于C# winform窗体串口在读取一组参数后再一次读取另一组参数的问题
有两个按钮,一个是“开启基本数据按钮设为button1”,另一个是“读取ListBox内部 数据的内容“设为button2,设定是先开启button1接收基本数据后才能开启button2接 收ListBox内的数据,接收协议一共有5位,分别是报头,符号位,数据位,数据位,校验位(没有长度位),当开启button1后界面上的基本数据的TextBox值会不断发生变化。 。当点击button2后(会有个“正在发送,请等待5s”的一个winform窗口弹出。当第二 次再次接收到数据后,会把协议转换成数据添加到ListBox中,但问题来了:为什么有时 点击button2后接收到的数据中ListBox的第一行数据有时是0没收到数据,有时候会读 到数??????????????????? 我这里button1的基本原理是给控制器发送一个协议,控制器收到后吧几个基本数据的 协议发送给winform窗口并将协议转换为基本数据记录到TextBox内,这时数据是无限 接收的,从而几个基本数据会不断地有变化。button2和button1原理类似都是发送一 个协议而给ListBox发送数据,发送完成后退出窗口,ListBox的所有行的值都变化之后 继续接收button1的基础数据。 接收代码: int S, A, B, C, D; private List<byte> memory = new List<byte>(4096); private byte[] bufferbyte = new byte[5]; private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { if (Closing) return; Control.CheckForIllegalCrossThreadCalls = false; int n = comm.BytesToRead; Byte[] bytes = new Byte[n]; r_count += n;//记录接收的字节 comm.Read(bytes, 0, n); try { this.Invoke((EventHandler)delegate { if (n > 0) { #region 协议解析/分析数据 //<协议解析> bool data_1_catched = false;//缓存记录数据是否捕获到 memory.AddRange(bytes);//缓存数据 while (memory.Count >= 2)//至少要包含头(1字节)+校验(1字节) { if (memory[0] == 0x88) { if (memory.Count < 5) break; //<数据校验> if ((memory[4] != (memory[1] + memory[2] + memory[3]) % 256) && (memory[4] != (memory[1] - 128 + memory[2] + memory[3]) % 256)) { memory.RemoveRange(0, 5); continue; } memory.CopyTo(0, bufferbyte, 0, 5); data_1_catched = true; memory.RemoveRange(0, 5); //<分析数据> if (data_1_catched) { #region 接收协议定义,用于将协议转化为数据 ............................. #endregion #region 将基本数据转化并填充到TextBox ............................. #endregion #region 将ListBox数据协议转化并填充到ListBox ............................. #endregion } } }); Button1方法比较简单,就是两句话: SendData("88", "FF", "01", "01", "01", 10);//是发送协议方法 周期为10ms comm.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); Button2方法: private void ReadListBoxData_Click(object sender, EventArgs e) { WaitingForm waitf = new WaitingForm(); waitf.ShowIcon = false; waitf.label1.Text = "正在处理,请稍后......"; waitf.Show(); //如果不加上此句话,新窗体加载的内容都在队列中等待而不会绘制,从而导致新窗体没有内容。加上的话,新窗体会重新绘制 Application.DoEvents(); for (int ti = 0; ti < 4; ti++) { SendData("88", "FF", "04", "04", "07", 1000); } Thread.Sleep(4000); if (IsNull(bufferbyte) == true) { MessageBox.Show("重复超时,重新读取"); } waitf.Dispose(); //接受完ListBox的数据后,继续接收基本数据 SendData("88", "FF", "01", "01", "01", 10);// comm.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); } 最大的问题再说一下,就是ListBox的第一行数据有的时候能收到数有时候收不到数,但是自己通过把数据转化到字符串框之后,发现第一列的协议都没有问题, 怀疑是和之前的基本数据协议的尾端发生冲突了,求解决办法?? 现在有一个方法是协商控制器,在发送第一组数据之前添加个5位保护协议。有没有 更好的方法???
C#asp.net三层架构,怎么才能通过主键查询到相对应的记录
类库代码如下: /// 把SqlDataReader对象中的数据读出到List中 /// <returns>转换后的列表对象</returns> private List<UserInfo> GetUse(SqlDataReader reader) { List<UserInfo> uselist = new List<UserInfo>(); while (reader.Read()) { use.UName = reader["UName"].ToString(); use.Password = reader["Password"].ToString(); uselist.Add(use); } reader.Close(); return uselist; } /// 根据给定的查询条件,返回考生对象列表 public List<UserInfo> GetuseBySqlStr(string strWhere) { string sql = "select * from UserInfo where 1=1 " + strWhere; using (SqlDataReader dr = SqlDatabase.ExecuteReader(CommandType.Text, sql)) { return GetUse(dr); } } /// 根据给定的条件判断是否存在记录 public bool Existbystr(string str) { string sql = "select * from UserInfo where 1=1 " + str; if (SqlDatabase.ExecuteScalar(CommandType.Text, sql) != null) return true; else return false; } .aspx.cs后台部分代码如下: if (use.Existbystr("and [UName]='" + txtName.Text + "'")) {判断输入的用户名正确之后 ---------这里应该怎么引用类库里的函数,来实现通过登录名查询数据库中对应的密码,判断是否和密码框(txtpassword)相同。 } 急求补充if条件语句里的代码
请教一个关于C# dataset 生成一个新的dataset 数据重组问题
![图片说明](https://img-ask.csdn.net/upload/201602/13/1455358196_282451.png) 需求请看图! 要求:1、需要过滤掉E列为Null 的行数据 2、上面是dataset 最好转换成 新的dataset 格式 或数组 List 3、我需要计算 E列中相同的值 如 张三1 相加后的合计行。另外需要计算多个值的合计 如张三1+张三2+张三3
为什么无法将集合转换为列表
为什么无法将集合转换为列表: 一下是代码: import random list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] slice = random.sample(list, 5) #从list中随机获取5个元素,作为一个片断返回 set1 = set(list) set2 = set(slice) set3 = set(set1^set2) listx=list(set3) print(slice) print(set1^set2) print(set3) 显示错误: TypeError Traceback (most recent call last) <ipython-input-12-299b736e6c69> in <module> 6 set2 = set(slice) 7 set3 = set(set1^set2) ----> 8 listx=list(set3) 9 print(slice) 10 print(set1^set2) TypeError: 'list' object is not callable
C++模板错误:不定义该运算符或到预定义运算符可接收的类型的转换
// 代码如下: ``` #pragma once template<typename _T> class list_node { public: _T Data; bool bValid; list_node<_T> *pPrev; list_node<_T> *pNext; list_node() {} ~list_node() {} }; template<typename _DATA, typename _NODE=list_node<_T_DATA>> class list_iterator { public: list_iterator() { _ptr = NULL; } ~list_iterator() {} _NODE* _ptr; list_iterator<_DATA, _NODE>& operator++() { _ptr = _ptr->pNext; return *this; } }; class list_test { public: list_test() {} ~list_test() {} }; struct CData { CData() {} CData(int a){x = a;} ~CData() {} int x; }; int main() { list_iterator<CData, list_node<CData>> it2; it2++; } ``` 程序报如下错误: ``` 1>------ 已启动生成: 项目: LinkTest, 配置: Debug Win32 ------ 1> LinkTest.cpp 1>d:\work\linktest\test1.h(50): error C2676: 二进制“++”:“list_iterator<CData,list_node<CData>>”不定义该运算符或到预定义运算符可接收的类型的转换 ====生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==== ``` 问题:明明定义了 operator++(),为什么没有定义?
c# 集合传值的时候出现的错误 请看下面的代码
``` public string all(List<string> list, string user, string pwd, string statue, string phone, string mac, string yp, string strmumr) { //这里执行逻辑 这段代码是在WebService上的 } ``` winfrom 客户端这样调用 ``` List<string> list = new List<string>(); list.Add(txtphone.Text.Trim()); string Sendthe = webs.all(list, null, null, "1", txtphone.Text.Trim(), MMac, Yp, strMNumr); ``` 为什么会出现下面的错误 SRSF.WebSend.WebSend.all(string[], string, string, string, string, string, string, string)”最匹配的重载方法具有一些无效参数 无法从“System.Collections.Generic.List<string>”转换为“string[]” 怎么解决呢
从csv文件中导入数据并转换为浮点型
代码如下,欲从csv文件中导入相关数据: ``` file=open("C:/Users/jyz_1/Desktop/rainfall.csv") lsy=[] for line in file: #append csv to list line=line.replace("\n","") lsy.append(line.split(",")) ``` 但最后得到的lsy是这样的: ``` ["['27.5', '18.8', '45', '61.7', '145.8', '265', '447.2', '167', '65.2', '49.9', '101.8', '5.6']", "['16.6', '31.6', '58.8', '73.8', '170.8', '144.4', '161.5', '28.3', '110', '65', '24.9', '13.1']", "['11.4', '28.8', '1.5', '194.1', '188.3', '337.1', '198.5', '282.9', '116.9', '99.5', '4.8', '34.2']", "['10.5', '12.6', '51.1', '144.6', '183.6', '263.3', '185.5', '76.2', '115.7', '115.7', '79.9', '28.2']", "['28', '17.6', '50.1', '170.3', '209.5', '215.3', '122.7', '217.6', '25.6', '79.1', '22.1', '25.2']"] ``` 请教一下这是什么原理?还有要输出纯数字列表该怎么办?
c++,list里面内容,不知错在哪里,求解答
#include "stdafx.h" #include <iostream> #include<list> //#include<string> #include <algorithm> using namespace std; void unio(list<int> &la, list<int> lb); typedef list<int> intlist; int main() { intlist LA = {3,5,8,11}; intlist LB = { 2,6, 8, 9,11,15,20 }; unio(LA,LB); intlist::iterator it; for (it = LA.begin(); it != LA.end(); it++) cout << *it << " " << endl; system("pause"); return 0; } void unio(intlist &la, intlist lb) { auto la_len = la.size(); auto lb_len = lb.size(); intlist::iterator rit; for (rit = lb.begin(); rit != lb.end();rit++) { intlist::iterator it = find(la.begin(),la.end(),rit); if (!*it) { la.push_back(*rit); } } } 错误 1 error C2678: 二进制“==”: 没有找到接受“int”类型的左操作数的运算符(或没有可接受的转换) c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility 3026 1 table 报了这样的错误,求大神解答
PYTHON EXCEL转换CSV并汇总成一个文件
请大神帮忙调一下程序 DEBUG没走通 请反馈源代码非常感谢 代码如下: #载入需要的库 import os import pandas as pd import glob #excel转化为csv def xlsx_to_csv_pd(): c=os.getcwd() excel_list1=glob.glob('*.xls') excel_list2=glob.glob('*.xlsx') for a in excel_list1: data_xls = pd.read_excel(a, index_col=0) outfile=c+"/"+a data_xls.to_csv(outfile, encoding='utf-8') for b in excel_list2: data_xls = pd.read_excel(b, index_col=0) outfile=c+"/"+b data_xls.to_csv(outfile, encoding='utf-8') # 定义函数hebing def hebing(): csv_list = glob.glob('*.csv') # 查看同文件夹下的csv文件数 print(u'共发现%s个CSV文件' % len(csv_list)) print(u'正在处理............') for i in csv_list: # 循环读取同文件夹下的csv文件 fr = open(i, 'r').read() with open('result.csv', 'rb') as f: # 将结果保存为result.csv f.write(fr) print(u'合并完毕!') # 定义函数quchong(file),将重复的内容去掉,主要是去表头 def quchong(file): df = pd.read_csv(file, header=0) datalist = df.drop_duplicates() datalist.to_csv(file) #运行函数 if __name__ == '__main__': # xlsx_to_csv_pd() print("转化完成!!!" ) hebing() quchong("result.csv") print("已完成数据文件合并清单所处位置:"+str(file))
这个类型转换怎么修改?
这段程序是freertos的一部分。在c编译器中编译通过,在c++编译器中报错。如下 ..\..\FreeRTOS\portable\MemMang\heap_2.c(295): error: #415: no suitable constructor exists to convert from "std::uint8_t *" to "A_BLOCK_LINK" 下面是出错代码 /* xStart is used to hold a pointer to the first item in the list of free blocks. The void cast is used to prevent compiler warnings. */ // xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; xStart.pxNextFreeBlock = static_cast<A_BLOCK_LINK>(pucAlignedHeap); xStart.xBlockSize = ( size_t ) 0; 这个是他的定义 typedef struct A_BLOCK_LINK { struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */ size_t xBlockSize; /*<< The size of the free block. */ } BlockLink_t; /* Create a couple of list links to mark the start and end of the list. */ static BlockLink_t xStart, xEnd; 请问我应该如何修改这一部分?
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问