c#中将stringbuilder对象通过tostring()转换为string类对象 出现了反斜杠

c#中将stringbuilder对象(包含转义字符),通过tostring()转换为string类对象 出现了反斜杠

StringBuilder sql = new StringBuilder();
sql.Append("update patienthabit ");
sql.Append(updateString);
sql.Append(" where patientID=\" + GlobalVariables.patientID + \" ");
string str = sql.ToString();
GlobalVariables.ExecuteNoneQuery(str);

str的结果是带反斜杆,为什么是这样,如何改。

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
6 年多之前 回复

1个回答

" where patientID=\" + GlobalVariables.patientID + \" "
改为这样:
" where patientID=\"" + GlobalVariables.patientID + "\" "

\"是转义的双引号

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c# StringBuilder.ToString() 方法会重新分配内存吗
![图片说明](https://img-ask.csdn.net/upload/201904/26/1556248257_29186.png) 如图所示,第一行代码为变量stringBuilder分配了10个字符的内存,并赋值字符串“hello”,占用5个字符。 第二行代码ConsoleWriteLine(stringBuilder.ToString());会将值转换为string类型并打印到控制台,那么第二行的这个操作在转换为string时使用的内存是重新分配的5个字符的内存还是使用的stringBuilder变量所剩余的5个字符的内存?
C# StringBuilder 转 String
StringBuilder temp; tostring 以后 原本的值Data Source=YRKB3RFHNEQCL1F\\SQLEXPRESS;Initial Catalog=Ordering;Integrated Security=True 变成了Data Source=YRKB3RFHNEQCL1F\\\\SQLEXPRESS;Initial Catalog=Ordering;Integrated Security=True 怎么办
想请教各位大牛关于C#中StringBuilder赋值的问题
最近看了一段StringBuilder的代码,突然有点搞不明白了,想请教一下各位大牛! 第一段代码: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string a = "张三"; string b = a; b = null; Console.WriteLine(a); } } } ``` 这段代码很好理解,字符串不可变,b的修改不会影响a 第二段代码: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Person a = new Person(); Person b = a; b.Name = "李四"; Console.WriteLine(a.Name); } } class Person { public string Name { get; set; } = "张三"; } } ``` 这个也很好理解,a和b指向托管堆中同一个地址,b的修改会影响到a 第三段代码: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { StringBuilder a = new StringBuilder(); a.Append("张三"); StringBuilder b = a; b.Append("李四"); Console.WriteLine(a.ToString()); Console.WriteLine(b.ToString()); b = null; Console.WriteLine(a.ToString()); // 为什么这里还是输出"张三李四" } } } ``` 这段代码最后已经把b赋值为null了,为什么a还是输出“张三李四”?希望各位高手能够帮助小弟解答一下!
C#里string类型比StringBuilder类型的优势是什么?能举例说明吗?
C#里string类型比StringBuilder类型的优势是什么?能举例说明吗?
如果在C中调用C#函数并获取字符串的返回值给C。
把C#的委托给C,这个可以正常,但是C想要通过这个委托拿到C#的字符串值 要怎么做? C# ``` [UnmanagedFunctionPointer(CallingConvention.StdCall)] public delegate void GetStrCallback(StringBuilder str); [DllImport("...")] public extern static void SetStrCallback(GetStrCallback cb); ... public static void Handle(StringBuilder str) { str.Append("AAAAAA"); } SetStrCallback(Handle); ``` C ``` c# typedef void(__stdcall * GetStrCallback)(const char* str); GetStrCallback _getStrFunc = NULL; extern __declspec(dllexport) void SetStrCallback(GetStrCallback cb) { _getStrFunc = cb; } ... void GetCSharpStr() { char temStr[1024] = ""; _getStrFunc(temStr); // 调用C#的函数,但是temStr还是空的,咋整? } ```
字符串对称判断 。StringBuilder 转换成 String后地址不同么?但是内容相同,应该是同一个常量池的地址啊。
public static void main(String[] args) { //A:键盘输入一个字符串 Scanner sc=new Scanner(System.in); String s=sc.nextLine(); panduan(s); } public static void panduan(String s) { StringBuilder sb=new StringBuilder(s); String ss=sb.reverse().toString(); System.out.println(ss); if(ss==s) { System.out.println("是对称字符串"); }else { System.out.println("不是对称字符串"); } } ![图片说明](https://img-ask.csdn.net/upload/202002/04/1580794148_424621.png) 不管输入是否为对称字符串,都是不对称。
签名算法,java代码转为 C#
请帮忙把如下的java签名算法转换为c#的,牛人伸手啊!! 具体代码如下: public static String genSignature(String sk, String stringToSign) { String signature = ""; try { String encodedSign = URLEncoder.encode(stringToSign, ENCODING); try { Mac mac = Mac.getInstance(HASH); mac.init(new SecretKeySpec(sk.getBytes(ENCODING), HASH)); byte[] hashData = mac.doFinal(encodedSign.getBytes(ENCODING)); StringBuilder sb = new StringBuilder(hashData.length * 2); for (byte data : hashData) { String hex = Integer.toHexString(data & 0xFF); if (hex.length() == 1) { // append leading zero sb.append("0"); } sb.append(hex); } signature = sb.toString().toLowerCase(); } catch (Exception e) { logger.warn("sha256 exception for[" + sk + "," + stringToSign + "]. e:", e); } } catch (UnsupportedEncodingException e) { logger.warn("encode error, string[" + stringToSign + "] e:" + e); } return signature; }
C#调用dll,使用intPtr接收char*返回值不一致
在C#中调用C的dll,遇到char* 使用 intPtr接收,返回值与C中char 指针不一致 C结构体 typedef struct { BYTE ErrCode; int* errstring; } ERRPARAMS; 函数 BYTE DSCUDAPICALL dscGetLastError(ERRPARAMS* errparams); C#结构体 [StructLayout(LayoutKind.Sequential)] public struct ERRPARAMS { public byte ErrCode; public IntPtr errstring; } 函数 [DllImport("dscud.dll", EntryPoint = "dscGetLastError", CharSet = CharSet.Unicode, SetLastError = false, CallingConvention = CallingConvention.Cdecl)] extern unsafe public static byte dscGetLastError(ERRPARAMS* errparams); 执行结果: 在C中 ErrCode是5 errstring是0x1007eb80 可以转换成字符串 在C#中 ErrCode是5 errstring是0x00000010 使用Marshal.PtrToStringAnsi转换为空,不是想要的地址 将intPtr改成string/String/StringBuilder/char[]都试过了,函数会报内存异常的错误。 且大神解答,非常感谢。
C# 菜鸡新人小白在线等急求问
1.使用StringBuilder对象完成可变字符串的各项操作(菜鸟表示这个不太懂)、 2.使用StringBuilder对象完成字符串的各项操作
c#调用go语言生成的dll传string不成功,急!
![图片说明](https://img-ask.csdn.net/upload/201907/30/1564488504_712964.png) c#代码 ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace test { [StructLayout(LayoutKind.Sequential)] struct GoString { public char[] str; public int length; }; class Program { //System.Runtime.InteropServices.MarshalDirectiveException:“方法的类型签名与 PInvoke 不兼容。” [DllImport("SearchMusic.dll", CharSet = CharSet.Unicode)] static extern GoString Search(GoString key,int apageNum, int pageSize); //这个函数能调用成功 [DllImport("SearchMusic.dll", EntryPoint = "Add")] static extern int Add(int a, int b); static void Main() { GoString str = new GoString(); StringBuilder sb = new StringBuilder("沙漠骆驼"); str.str= ("沙漠骆驼").ToCharArray(); str.length = str.str.Length; Search(str, 1, 10); } } } ``` go语言代码 ``` package main import ( "C" "fmt" "io/ioutil" "net/http" ) //Search : //export Search func Search(key string, pageNum int, pageSize int) { url := "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=57152133376853167&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0&w=" + key + "&p=" + fmt.Sprintf("%d", pageNum) + "&n=" + fmt.Sprintf("%d", pageSize) resp, _ := http.Get(url) defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) json := string(body) fmt.Println(json) } //Add : //export Add func Add(a int, b int) int { return a + b } func main() { } ``` go生成dll时的.h文件 ``` /* Code generated by cmd/cgo; DO NOT EDIT. */ /* package command-line-arguments */ #line 1 "cgo-builtin-export-prolog" #include <stddef.h> /* for ptrdiff_t below */ #ifndef GO_CGO_EXPORT_PROLOGUE_H #define GO_CGO_EXPORT_PROLOGUE_H #ifndef GO_CGO_GOSTRING_TYPEDEF typedef struct { const char *p; ptrdiff_t n; } _GoString_; #endif #endif /* Start of preamble from import "C" comments. */ /* End of preamble from import "C" comments. */ /* Start of boilerplate cgo prologue. */ #line 1 "cgo-gcc-export-header-prolog" #ifndef GO_CGO_PROLOGUE_H #define GO_CGO_PROLOGUE_H typedef signed char GoInt8; typedef unsigned char GoUint8; typedef short GoInt16; typedef unsigned short GoUint16; typedef int GoInt32; typedef unsigned int GoUint32; typedef long long GoInt64; typedef unsigned long long GoUint64; typedef GoInt64 GoInt; typedef GoUint64 GoUint; typedef __SIZE_TYPE__ GoUintptr; typedef float GoFloat32; typedef double GoFloat64; typedef float _Complex GoComplex64; typedef double _Complex GoComplex128; /* static assertion to make sure the file is being used on architecture at least with matching size of GoInt. */ typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; #ifndef GO_CGO_GOSTRING_TYPEDEF typedef _GoString_ GoString; #endif typedef void *GoMap; typedef void *GoChan; typedef struct { void *t; void *v; } GoInterface; typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; #endif /* End of boilerplate cgo prologue. */ #ifdef __cplusplus extern "C" { #endif //Search : extern void Search(GoString p0, GoInt p1, GoInt p2); //Add : extern GoInt Add(GoInt p0, GoInt p1); #ifdef __cplusplus } #endif ```
为什么StringBuilder的效率要比String高?
StringBuilder 中的append方法,很多资料上写之所以建议使用StringBuilder是因为它可变,不会一直创建对象。可是append方法的源码却是每一次都调用了System.arraycopy方法,也就意味着每次执行append都在内存中创建了一个数组对象。既然都与String一样,每次都创建对象,那么这效率从何而来的啊?请老师指教
c#调用C++的DLL时调用失败
本人C#小白。老大要求用C#调用C++的DLL. C++的我写出来了,可以调用成功. #include <windows.h> #include <tchar.h> void main(){ HMODULE hModule = ::LoadLibrary(_T("C:\\CT_InfoTerm.dll")); typedef LONG (WINAPI *pDLLProc)(int,char*,int,int,int,char*,int); pDLLProc dllfunc; int iPort = 0; char cExtendPort[1] = {'9'}; int iBaudRate = 9600; int iVoiceType = 0; int iTimeOut = 30; char cPin[256]; memset(cPin, NULL, sizeof(cPin)); dllfunc = (pDLLProc) ::GetProcAddress((HMODULE)hModule, "CT_ReadPin"); int iReturn; if (dllfunc != NULL){ iReturn = dllfunc(iPort, cExtendPort, iBaudRate, iVoiceType, iTimeOut, cPin, sizeof(cPin)); } } 现在改为C#的 [DllImport("CT_InfoTerm.dll", EntryPoint = "CT_ClosePinPad" ,CallingConvention=CallingConvention.Cdecl)] public unsafe static extern int CT_ReadPin(int iPortNo, char extendPort, int iBaudRate, int iVoiceType, int iTimeOut, StringBuilder Pin, int iPinSize); public unsafe void CT_ReadPin(WebCommand command) { int nRet = -3;//打开串口失败(默认) if (_canRead) { int iPortNo = 0; char extendPort = '9'; int iBaudRate = 9600; int iVoiceType = Convert.ToInt16(command.Parameter); int iTimeOut =30; //var Pin=new byte[100]; StringBuilder Pin = new StringBuilder(1024); // string Pin = new string(Convert.ToChar(" "), 256); // char Pin = new char(); int iPinSize =256; nRet = Centerm.CT_ReadPin(iPortNo,extendPort,iBaudRate,iVoiceType,iTimeOut,Pin,iPinSize); checkresult(command, nRet); } } pin是返回值 注释的地方是我尝试的方法,并不报任何错误,但是C#的调用不成功,可能是pin这个参数有问题. 各位大神能不能提供一些思路,供我参考一下,多谢
winfrom 通过multipart/form-data方式 上传EXCEL文件,发生错误
static void FileUpload(string m_fileNamePath, string wenjianmin) { string Boundary = "wojuedezhgexiangmushigekeng"; //构造请求参数 Dictionary<string, string> PostInfo = new Dictionary<string, string>(); //PostInfo.Add("sequenceNo ", "A0002"); //PostInfo.Add("type", "application/vnd.ms-excel"); //PostInfo.Add("file", ""); //PostInfo.Add("filename", wenjianmin); //构造POST请求体 StringBuilder PostContent = new StringBuilder("--" + Boundary); byte[] ContentEnd = Encoding.UTF8.GetBytes("--" + Boundary + "--\r\n");//请求体末尾,后面会用到 //组成普通参数信息 foreach (KeyValuePair<string, string> item in PostInfo) { PostContent.Append("\r\n") .Append("Content-Disposition: form-data; name=\"") .Append(item.Key + "\"").Append("\r\n") .Append("\r\n").Append(item.Value).Append("\r\n") .Append("--").Append(Boundary); } //转换为二进制数组,后面会用到 byte[] PostContentByte = Encoding.UTF8.GetBytes(PostContent.ToString()); //文件信息 byte[] UpdateFile = File2Bytes(m_fileNamePath);//转换为二进制 StringBuilder FileContent = new StringBuilder(); FileContent.Append("\r\n") .Append("Content-Disposition:form-data; name=\"") .Append("flie" + "\"; ") .Append("filename=\"") .Append(wenjianmin + "\"") .Append("\r\n") .Append("Content-Type: application/vnd.ms-excel") .Append("\r\n") .Append("\r\n"); byte[] FileContentByte = Encoding.UTF8.GetBytes(FileContent.ToString()); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_address); request.Method = "POST"; request.Timeout = 100000; //这里确定了分隔符是什么 request.Headers.Add("Cookie", "JSESSIONID=19FCE6CF428E78732830248719E3836A"); //request.Headers.Add("Accept-Encoding", " gzip, deflate"); request.ContentType = "multipart/form-data;boundary=" + Boundary; //request.Cookie = ""; //定义请求流 Stream myRequestStream = request.GetRequestStream(); myRequestStream.Write(PostContentByte, 0, PostContentByte.Length);//写入参数 myRequestStream.Write(FileContentByte, 0, FileContentByte.Length);//写入文件信息 myRequestStream.Write(UpdateFile, 0, UpdateFile.Length);//文件写入请求流中 myRequestStream.Write(ContentEnd, 0, ContentEnd.Length);//写入结尾 HttpWebResponse res; try { res = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } //StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode); //strHtml = sr.ReadToEnd(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //获取返回值 Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myRequestStream.Close(); myStreamReader.Close(); myResponseStream.Close(); } 以下是抓包截图 ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578548657_696695.png) 返回错误信息 {"timestamp":"2020-01-09 13:40:35","status":500,"error":"Internal Server Error","message":"Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly","path":"/lab/calibrator/uploadReport"}
VS C# 找不到string.cs
不知道动了哪里 今天发现执行会成功但没有结果 调试才发现找不到很多cs档案 ![图片说明](https://img-ask.csdn.net/upload/201907/03/1562136613_53648.png) 突然缺少很多东西 string.cs stringbuilder.cs error.cs等等 我试着修复VS但没用 难道要重装VS吗? 网上有人说打开"仅启用我的代码" 是可以执行 但是我的程序一样没有结果 该怎解?
C# 客户端远程访问IIS服务器出现:远程服务器返回错误: (404) 未找到。
C# 客户端远程访问IIS服务器出现:远程服务器返回错误: (404) 未找到。但是服务器端可以访问URL:http://192.168.2.179:8081/webform.aspx,请问这是什么原因? ``` private void upload_Click(object sender, System.EventArgs e) { try { //上传服务器的地址(web服务) string address = "http://192.168.2.179:8081/Default.aspx"; //上传后文件保存的名称 string saveName = DateTime.Now.ToString("yyyyMMddHHmmss"); int count = UpSound_Request(address, filePath, saveName, this.progressBar1); if (count > 0) { MessageBox.Show("上传文件成功!"); } else { MessageBox.Show("上传文件失败!"); } } catch (Exception ex) { MessageBox.Show("" + ex.GetBaseException()); } } /// <summary> /// 上传文件 /// </summary> /// <param name="address">文件上传到服务器的路径</param> /// <param name="fileNamePath">要上传的本地路径(全路径)</param> /// <param name="saveName">文件上传后的名称</param> /// <returns>成功返回1,失败返回2</returns> public int UpSound_Request(string address, string fileNamePath, string saveName, ProgressBar progressBar) { int returnValue = 0; //要上传的文件 FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read); //二进制对象 BinaryReader r = new BinaryReader(fs); //时间戳 string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x"); byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n"); //请求的头部信息 StringBuilder sb = new StringBuilder(); sb.Append("--"); sb.Append(strBoundary); sb.Append("\r\n"); sb.Append("Content-Disposition: form-data; name=\""); sb.Append("file"); sb.Append("\"; filename=\""); sb.Append(saveName); sb.Append("\";"); sb.Append("\r\n"); sb.Append("Content-Type: "); sb.Append("application/octet-stream"); sb.Append("\r\n"); sb.Append("\r\n"); string strPostHeader = sb.ToString(); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader); // 根据uri创建HttpWebRequest对象 HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(address)); httpReq.Method = "POST"; //对发送的数据不使用缓存 httpReq.AllowWriteStreamBuffering = false; //设置获得响应的超时时间(300秒) httpReq.Timeout = 300000; httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary; long length = fs.Length + postHeaderBytes.Length + boundaryBytes.Length; long fileLength = fs.Length; httpReq.ContentLength = length; try { progressBar.Maximum = int.MaxValue; progressBar.Minimum = 0; progressBar.Value = 0; //每次上传4k int bufferLength = 4096; byte[] buffer = new byte[bufferLength]; //已上传的字节数 long offset = 0; //开始上传时间 DateTime startTime = DateTime.Now; int size = r.Read(buffer, 0, bufferLength); Stream postStream = httpReq.GetRequestStream(); //发送请求头部消息 postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); while (size > 0) { postStream.Write(buffer, 0, size); offset += size; progressBar.Value = (int)(offset * (int.MaxValue / length)); TimeSpan span = DateTime.Now - startTime; double second = span.TotalSeconds; labTime.Text = "已用时:" + second.ToString("F2") + "秒"; if (second > 0.001) { labSpeed.Text = "平均速度:" + (offset / 1024 / second).ToString("0.00") + "KB/秒"; } else { labSpeed.Text = " 正在连接…"; } labState.Text = "已上传:" + (offset * 100.0 / length).ToString("F2") + "%"; labSize.Text = (offset / 1048576.0).ToString("F2") + "M/" + (fileLength / 1048576.0).ToString("F2") + "M"; Application.DoEvents(); size = r.Read(buffer, 0, bufferLength); } //添加尾部的时间戳 postStream.Write(boundaryBytes, 0, boundaryBytes.Length); postStream.Close(); //获取服务器端的响应 //WebResponse webRespon = httpReq.GetResponse(); WebResponse webRespon; try { webRespon = httpReq.GetResponse() as WebResponse; } catch (WebException ex) { webRespon = ex.Response as WebResponse; } Stream s = webRespon.GetResponseStream(); //读取服务器端返回的消息 StreamReader sr = new StreamReader(s); String sReturnString = sr.ReadLine(); s.Close(); sr.Close(); if (sReturnString == "Success") { returnValue = 1; } else if (sReturnString == "Error") { returnValue = 0; } } catch { returnValue = 0; } finally { fs.Close(); r.Close(); } return returnValue; } } ![图片说明](https://img-ask.csdn.net/upload/201908/24/1566628122_433652.png) ```
C#中调用C++Dll接口,字符串编码问题
**在C#中调用C++Dll接口,接口返回一个多字节字符串,然后再C#中再次转码为宽字节字符串。 字符串内容都为汉字。** # **_问题: 如果汉字为偶数个,则一切正常; 如果汉字为奇数个,则C#获得的多字节字符串内容的最后一个字节被篡改成‘?’的ascll码。(多字节编码时,每个汉字占三个字节) 本人没多少币,全部家当拿出来了,求大神指点。**_ ## C++代码: // 宽字节转多字节 __declspec(dllexport) void TCharToChar(LPCWCH tchar, char * _char) { //获取字节长度 int iLength = WideCharToMultiByte(CP_UTF8, 0, tchar, -1, NULL, 0, NULL, NULL); //将tchar值赋给_char WideCharToMultiByte(CP_UTF8, 0, tchar, -1, _char, iLength, NULL, NULL); } // 多字节转宽字节 __declspec(dllexport) void CharToTChar(char* _char, LPWSTR tchar) { int iLength = MultiByteToWideChar(CP_UTF8, 0, _char, -1, NULL, 0); MultiByteToWideChar(CP_UTF8, 0, _char, -1, tchar, iLength); } __declspec(dllexport) char* GetStr() { setlocale(LC_ALL, "chs"); LPCWCH pTChar = L"好"; char* pChar = new char[50]; memset(pChar, 0, 50); TCharToChar(pTChar, pChar); return pChar; } ## C#代码: class Program { private const string strDllPath = "DllTest.dll"; [DllImport(strDllPath, EntryPoint = "GetStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] extern public static IntPtr GetStr(); // 多字节转宽字节 [DllImport(strDllPath, EntryPoint = "CharToTChar", CallingConvention = CallingConvention.Cdecl)] extern public static void CharToTChar(string src, [MarshalAs(UnmanagedType.LPWStr)]string des); // 宽字节转多字节 [DllImport(strDllPath, EntryPoint = "TCharToChar", CallingConvention = CallingConvention.Cdecl)] extern public static void TCharToChar(string src, StringBuilder des); static void Main(string[] args) { IntPtr ptr = GetStr(); string str = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ptr); bytes = System.Text.Encoding.Default.GetBytes(str); string strResult = System.Text.Encoding.Default.GetString(bytes); Console.WriteLine(strResult); } }
安卓和C# 用TCP通信发送数据
目前在做一个程序,安卓手机每一秒钟向PC机发送若干条数据,有可能一台机器发,也有可能若干台同时发,PC机用C#接收数据。我测试了一台安卓发数据可以正常接收,可是当若干台同时发数据的时候,就出现问题了。后来我发现不知道为什么,这些安卓设备的IP地址用DHCP自动获取IP的时候IP都是一样的,我想会不会就是因为两个相同IP的机器发送数据的时候,因为后来发后数据的机器会把原先正在发送的机器建立的TCP通信链接给关掉然后自己在发送数据,现在由于实验室路由器比较特殊,我没有权限改成静态获取,所以在此问一下是不是因为这个原因出的错,下面列出代码,麻烦大家帮忙看一看,出错的地方我用注释标记出来了 安卓端发送数据代码 ``` public void sendToPC(String data){ try { s =new Socket("192.168.0.104",8730); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } DataOutputStream dout=null; try { dout =new DataOutputStream(s.getOutputStream()); Thread.sleep(50, 0); dout.writeBytes(data); dout.flush(); }catch(Exception e){ } } ``` C#段代码 ``` private void listenConnect() { while (true) { tcpClient = myListener.AcceptTcpClient(); //获取网络流 User user = new User(tcpClient); Thread receiveThread = new Thread(receiveData); receiveThread.IsBackground = true; receiveThread.Start(user); } } string receiveString = ""; public void receiveData(object u) { User user = (User)u; NetworkStream netStream1 = user.client.GetStream(); while(true){ byte[] myReadBuffer = new Byte[1024]; int numberOfBytesRead = 0; StringBuilder myCompleteMessage = new StringBuilder(); int nodeId = 0; do { numberOfBytesRead = netStream1.Read(myReadBuffer, 0, myReadBuffer.Length);//出错总是在这一句,提示错误“远程主机主动关闭现有连接” myCompleteMessage.AppendFormat("{0}", Encoding.UTF8.GetString(myReadBuffer, 0, numberOfBytesRead)); } while (netStream1.DataAvailable); receiveString = myCompleteMessage.ToString(); string[] receivearr = receiveString.Split('!'); for (int i = 0; i < receivearr.Length-1;i++ ) { string[] infoarr = receivearr[i].Split('#'); DoWork(infoarr[1], infoarr[0]); } } } } ```
java对象属性的默认值影响sql查询语句的拼接,该如何处理。
1、问题描述: 想做一个通用的sql查询语句,通过传入对象的属性赋值情况,拼接查询语句。比如Admin类,有int id,String name,int age,boolean isLeader 4个属性,如果给Admin的对象的某几个属性赋值,比如:setAge(32);setName(“张”)。那么语句拼接为select * from admin where age=32 and name like '%张%'。我在拼接时本来想通过属性是否为null,或者是否为空字符来判断是否作为查询条件,但是由于默认值的存在,导致拼接错误。 2、代码 ``` /*** * 约定: * 1、类名与表名对应,表名全小写。 * 2、类属性与列名一致。 * 3、ID列的类属性和列名为=表名(第一个字母小写)+“Id” * * 4、暂不支持联表查询。 *类名:BaseDao * ***/ public <T> List<T> query(T t) throws IllegalArgumentException, IllegalAccessException, SQLException{ StringBuilder sql=new StringBuilder(); StringBuilder whereString=new StringBuilder(); List<Object> parameters=new ArrayList<Object>(); Class clazz=t.getClass(); //获取类名 String classSimpleName=clazz.getSimpleName(); //获取表名 String tableName=classSimpleName.toLowerCase(); //拼接select语句前半部分 sql.append("select * from "+tableName); //获取所有类属性 Field[] fields=clazz.getDeclaredFields(); //遍历所有属性 for(Field field:fields) { field.setAccessible(true); //得到属性值 Object fieldValue=field.get(t); if(fieldValue!=null) { //如果属性值不为null,获取属性名(字段名)。 String fieldName=field.getName(); //判断是否为String类型 if(fieldValue instanceof String) { // 如果是String,判断是否为空字符 if(!("".equals(((String)fieldValue).trim()))) { //不是空字符串,作为where条件,并将参数加入列表。 whereString.append(fieldName+" like ? and "); parameters.add("%"+(String)fieldValue+"%"); } }else if("Integer".equals(fieldValue.getClass().getSimpleName())){ /***判断是否为int,如果int>0,认为参数有效---这个也是为了处理默认值为0的情况,想的办法,但是有时候表里面字段值可能<=0,所以我觉得处理得不**好*/ if((int)fieldValue>0) { whereString.append(fieldName+"=? and "); parameters.add(fieldValue); } }else{ /*其他情况直接作为where查询条件,但是运行发现boolean值默认false,也会直接当成是有效条件,影响条件设置*/ whereString.append(fieldName+"=? and "); parameters.add(fieldValue); } } } //判断是否有有效条件,有的话拼接where语句。 if(parameters.size()>0) { whereString.delete(whereString.length()-5, whereString.length()-1); sql.append(" where "); sql.append(whereString); } System.out.println(sql.toString()); System.out.println(parameters); //连接数据库,查询。 QueryRunner qr=JdbcPool.getQueryRunner(); // return null; return qr.query(sql.toString(), new BeanListHandler<T>(clazz), parameters.toArray()); } ``` 3、测试代码 ``` @Test public void BaseDao() throws Exception, IllegalAccessException { IpAddress ipObj=new IpAddress(); //只设置了一个条件。 ipObj.setIpAddress("192.168.1"); BaseDao bd=new BaseDao(); List<IpAddress> list=bd.query(ipObj); for(IpAddress ip:list) { System.out.println(ip); } System.out.println(list.size()); } ``` 4、结果 ``` //在只设置了一个条件的情况下,拼接出两个查询条件。 select * from ipaddress where ipAddress like ? and isReachable=? [%192.168.1%, false] ``` 5、问题: 请问如何处理这种由于对象基本类型默认值,导致的拼接错误的问题?
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问