- 博客(43)
- 资源 (8)
- 收藏
- 关注
转载 C#性能优化之Lazy<T> 实现延迟初始化
在.NET4.0中,可以使用Lazy<T> 来实现对象的延迟初始化,从而优化系统的性能。延迟初始化就是将对象的初始化延迟到第一次使用该对象时。延迟初始化是我们在写程序时经常会遇到的情形,例如创建某一对象时需要花费很大的开销,而这一对象在系统的运行过程中不一定会用到,这时就可以使用延迟初始化,在第一次使用该对象时再对其进行初始化,如果没有用到则不需要进行初始化,这样的话,使用延迟初始化就提高程序的效率,从而使程序占用更少的内存。 下面我们来看代码,新建一个控制台程序,首先创建一个Studen
2020-10-22 18:55:46
187
转载 TCP/IP 协议详解
一图看完本文一、 计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。二、 TCP/IP 基础1. TCP/IP 的具体含义从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只...
2020-07-27 15:04:58
394
转载 GDB调试
gdb基本命令列表: 实例:1 新建一个源文件vi swap.cc源文件内容如下:#include<iostream>using namespace std;void swap(int &a,int &b){ ...
2020-01-15 08:46:16
221
原创 c++ 11特性理解
禁止虚函数被重写class AFinal{ public: virtual void F1() final{}};class BFinal:public AFinal{ public: virtual void F1(){}};error: C3248: “AFinal::F1”: 声明为“final”的函数无法被“BFinal::F1...
2019-11-06 16:21:29
186
转载 三次握手和四次挥手
三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。见过比较典型的面试场景是这样的: 面试官:请介绍下三次握手 求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一...
2019-10-09 09:03:14
195
原创 实验楼学习网络总结
IP地址网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一个 32bit 的数字,被 . 分成 4 组,例如,255.255.255.255 就是一个 IP 地址域名用 12 位数字组成的 IP 地址很难记忆,在实际应用时,用户一般不需要记住 IP 地址,互联网给每个 IP 地址起了一个别名,习惯上称作域名常见的域名包括 com、net 和 org 三种...
2019-09-27 10:41:47
455
原创 WPF 使用MaterialDesign简单教程
官网地址:http://materialdesigninxaml.net/gitHub地址:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit使用步骤:1.安装MaterialDesignThemes程序包,如下图2.在App.xaml中<Application.Resources>...
2019-08-21 11:48:23
29554
4
原创 drop,delete与truncate
一.drop 1.概念:直接删掉表2.用法:drop table 表名3.范围:drop语句将表所占用的空间全释放掉4.恢复:不可恢复二.truncate1.概念:删除表中数据2.用法:truncate 表名(不可以加where)3.范围:当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小4.恢复:不可恢复三.de...
2019-08-20 15:55:22
158
转载 Oracle occi 批量插入数据
在用OCCI 向Oracle中插入数据时,效率不高,使用自动提交数据的情况(默认)下一秒钟只能插入1000条数据左右。因为插入数据库这块是影响系统中效率最明显的地方,因此很有必要提高数据插入这块的效率。在网上找了一些资料后发现,可以重用statement对象,使用批量插入的方法,先把数据保存在内存中,积累到一定数值之后批量插入Oracle,这样平均下来一秒钟可以插入5000多条数据,性能有所提高,...
2019-08-14 16:46:37
607
原创 c# 扩展方法
/// <summary> /// ConcurrentDictionary扩展 按照使用Dictionary Remove Add /// </summary> public static class ConcurrentDictionaryExt { public static bool Remove<TK...
2019-08-12 13:55:29
153
转载 类型语法、内存管理和垃圾回收基础
2.4 Dispose和Finalize方法在何时被调用? 由于有了垃圾回收机制的支持,对象的析构(或释放)和C++有了很大的不同,这就需要我们在设计类型的时候,充分理解.NET的机制,明确怎样利用Dispose方法和Finalize方法来保证一个对象正确而高效地被析构。 (1)Dispose方法 // 摘要: // 定义一种释放分配的资源的方法。 ...
2019-08-12 13:41:11
131
转载 类型语法基础和内存管理基础
二、内存管理和垃圾回收2.1 .NET中栈和堆的差异? 每一个.NET应用程序最终都会运行在一个OS进程中,假设这个OS的传统的32位系统,那么每个.NET应用程序都可以拥有一个4GB的虚拟内存。.NET会在这个4GB的虚拟内存块中开辟三块内存作为 堆栈、托管堆 以及 非托管堆。 (1).NET中的堆栈 堆栈用来存储值类型的对象和引用类型对象的引用(地址),其分配的是一块连续...
2019-08-12 13:40:25
166
转载 类型语法基础和内存管理基础
一、基础类型和语法1.1 .NET中所有类型的基类是什么? 在.NET中所有的内建类型都继承自System.Object类型。在C#中,不需要显示地定义类型继承自System.Object,编译器将自动地自动地为类型添加上这个继承申明,以下两行代码的作用完全一致: public class A { } public class A : System.Object { ...
2019-08-12 13:38:00
110
原创 c# 静态分析
简化委托调用// 调用1 public event TcpSend Send;// 定义2 public delegate void TcpSend(Object sender, ref object o, ref bool b);原形1 if (Send != null)2 Send(this, ref s.obj, ref bSend);简化Send...
2019-06-21 11:11:11
560
转载 C#中实现并发的几种方法的性能测试
去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块。当时的做法很简单,服务端等待链接,有用户接入后开启一个线程,在线程中运行一个while循环接收数据,接收到数据就处理。用户退出(收到QUIT命令)后线程结束。程序一直运行正常(当然还要处理“TCP粘包”、消息格式封装等问题,在此不作讨论),不过随着使用的人越来越多,而且考虑到线程开销比较...
2019-06-13 09:21:04
339
转载 TCP考点
TCP 的数据包如何组织?透视一个协议的最原始的方法就是看它的数据包,一个TCP 的报文格式如下:这里面的字段就包括了:源端口表明发送端所使用的端口号,用于目标主机回应。目的端口表明要连接的目标主机的端口号。序号表明发送的数据包的顺序,一般为上次发送包中的顺序号+1。若该数据包是整个TCP连接中的第一个包(SYN包),则该值是随机生成的。确认号表明本端TCP已经接...
2019-05-20 08:14:30
309
转载 TCP协议学习
前言 计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略 今天,我将详细讲解计算机网络中最重要的TCP协议,含其特点、三次握手、四次挥手、无差错传输等知识,希望你们会喜欢。 阅读本文前,请先了解计算机网络基础知识:献上一份全面 & 详细的计算机网络基础 学习指南目录1. 定义Transmission Control Protocol,即 传输控...
2018-12-29 08:26:57
303
转载 TCP
背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。 UDP,在传送数据前不需要先建立连接,远地的主机在收...
2018-12-27 08:35:53
281
转载 Windows Socket五种I/O模型笔记
Winsock 的I/O操作:1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。为了解决这个问题,提出了进行...
2018-11-08 09:41:44
286
转载 UML
1. 关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。在UML类图中,用实线连接有关联关系的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。在使用类图表示关联关系时可以在关联线上标注...
2018-10-10 09:13:14
114
转载 数据库基础
数据库技术与并发1、数据库基本知识(1)主键与外键主键:数据表属性中可以唯一表示行数据的一个属性,比如学生信息表中的学号;外键:如果两个表的公共关键字在一个表中是主键,那么这个公共关键字被称为另一个表的外键。由此可见,外键表示了两个表之间的关联。以另一个表的外键作主键的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。 (2)SQL中的join语句与多表查询...
2018-10-09 08:36:45
320
转载 数据库建表原则
关键字: 数据库建表原则·1. 原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。〖例〗:一份员工履历资料,在人力资源信息系统中,...
2014-11-05 08:58:11
1235
转载 数据库建表原则
关键字: 数据库建表原则·1. 原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。〖例〗:一份员工履历资料,在人力资源信息系统中,...
2014-11-05 08:55:49
1019
转载 map
map 是一种关联容器, 提供一对一的关联, 关联的形式为: KEY----VALUE 关键字不重复。multimap与map类似,但是允许关键字重复 即:关键字和与之对应的值 关键字起到索引的作用, 在map中查找记录 就是根据关键字查找 关键字 和 值 可以是任意类型 ...
2014-05-04 17:32:08
436
1
转载 通过类String看拷贝构造函数,赋值函数的作用和区别
/*如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式生成自动缺省函数.如果类中含有指针变量,这个缺省函数会带来错误.以类String的两个对象a,b为例,a.m_str内容是"hello",b.m_str的内容为"world".将a赋给b,缺省赋值函数的位拷贝意味着b.m_str=a.m_str,这样会发生如下3个错误:1. b.m_str的原有内存没有释放,造成内存泄露;2. b...
2014-05-04 17:03:25
389
转载 础算法--排序: 之选择排序
三种简单排序的区别: 冒泡排序是 未排序部分,相邻元素之间两两比较移动,从而找出最值。 插入排序是 某个待排序元素与以排元素两两比较, 从而找到待排元素所应在的位置 选择排序是 在未排部分,一次遍历找到最大值,然后将其置于未排部分的末尾位置。 选择排序、冒泡排序,都是遍历未排序部分, 所不同的是: 选择排序,遍历时,不进行移动,...
2014-05-04 16:00:19
376
转载 基础算法--排序:之快速排序
与简单排序不同,快序排序所需的比较次数较少,是内部排序中速度较快的一种排序方法。 算法思想: 分-------------- 将待排序集合划分为2部分 (一部分小于准则值,一部分大于等于准则值) 这个分的过程是不断迭代的,直到无法再分为止。 算法过程演示: ...
2014-05-04 16:00:17
396
转载 基础算法--排序: 之插入排序
冒泡排序两两比较指的是: 未排序的相邻元素之间的两两比较,对于已排好的元素,它不再访问。 而插入排序中的比较则是: 在未排序的元素中,取出一个,将它与已排好的元素进行比较,从而确定其位置。 是某未排元素,与诸多已排元素的逐次比较。 其排序图...
2014-05-04 15:58:37
401
转载 基础算法--排序: 之冒泡排序
冒泡排序,是所有排序中用的最多和最易想起的一种排序算法。 其排序思想: 对未排序的相邻元素进行两两比较,找出未排序元素中的最值,并将其置入应有位置。 算法特点: 1) 一次遍历,即可在未排序元素中,找到一个最值(最大值或最小值) 2) 当进行第i次遍历时(以第0次为...
2014-05-04 15:57:48
436
转载 基础算法:递归
递归用处很广,可以将复杂问题简单化。很多问题都可以使用递归算法或结合递归算法得到解决。 那么,设计递归算法的关键是什么? 其关键之处在于,正确分析出2种类型的节点:出口节点和入口节点 一 算法关键: 出口节点 , 入口节点 递归问题可看做是由各个节点构成,而所有节点只能分为出口节点、入口节点两类。 1)出口节点: 可直接计算此节点的值,...
2014-05-04 15:56:18
614
转载 socket步骤
The following is a step-by-step guide to getting started with Windows Sockets programming. It is designed to provide an understanding of basic Winsock functions and data structures, and how they ...
2014-05-04 15:41:02
556
转载 socket基础知识
一 SOCKET相关结构 1 WSADATA 用于初始化WINSOCK[cpp] view plaincopyWSADATA WSaData; int err; err = WSAStartup(0x0202, &WSaData); if (err == SOCKET_ERROR) { AfxMessageBox(...
2014-05-04 15:33:26
393
转载 CTreeCtrl 控件使用总结
一 基础操作 1 插入节点1)插入根节点 [cpp] view plaincopy//插入根节点 HTREEITEM hRoot; CString str=L"ROOT" hRoot=nTreeCtrl.InsertItem(str); //相当于 hRoot=nTreeCtrl.InsertItem(str,TVI_ROOT,TVI...
2014-05-04 15:31:18
833
转载 DLL编程实现
一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中、Windows编程所需要的大量的API函数也被...
2014-05-04 15:30:33
294
转载 DLL(动态链接库)专题
0. Windows API中所有的函数都包含在dll中,其中有3个最重要的DLL。 (1) Kernel32.dll 它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数; (2) User32.dll 它包含那些用于执行用户界面任务(如窗口的创建和消息的传送)的函数,例如CreateWindow...
2014-05-04 15:28:47
425
转载 基类,派生类,内存分配情况
派生类继承基类 内存分配时,是在于基类对象不同的内存地址处,按基类的成员变量类型,开辟一个同样的类型空间,但注意开辟后派生对象的空间,不是复制基类的成员的值,而是仅仅开辟那种成员类型的空间,未初始化时,里面存在的数是不确定的 然后派生类自己定义的成员变量是排在继承的A类成员下面,如果派生类定义的变量名与基类相同,则此变量覆盖掉继承的基类同名变量,注意,覆盖不是删除,也 就...
2014-05-04 15:24:46
789
转载 c++ 面试一
1、 下面的程序是否有错误,如果有错,请说明原因。 char* const pszHelp = “hello”; pszHelp[0] = ‘a’; 因为 pszHelp 指向一个常量字符串,所以根本不允许修改字符串内容。除非使用一个字符数组。//armbbs注解:这个题目的答案错了,此处是正确的 2、 const 用法: const char* p p 是一字...
2014-05-04 15:18:26
699
转载 STL中基本容器区别
在STL中基本容器有: string、vector、list、deque、set、mapset 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问set:集合, 用来判断某一个元素是不是在一个组里面,使用的比较少map:映射,相当于字典,把一个值映射成另一个值,如果想创建字典的话使用它好了string、vector、list、deque、set 是有序容器 1.string st...
2014-05-04 15:17:58
393
转载 STL线程安全
想要使用STL时是线程安全的,需要自己处理而不是依赖STL的实现。可以手工做同步控制,如下面:vector<int> v;...getMutexFor(v);vector<int>::iterator first5(find(v.begin(),v.end(),5));if(first5!=v.end()){*first5=0;}rele...
2014-05-04 15:15:57
497
转载 openMP的一点使用经验
最近在看多核编程。简单来说,由于现在电脑CPU一般都有两个核,4核与8核的CPU也逐渐走入了寻常百姓家,传统的单线程编程方式难以发挥多核CPU的强大功能,于是多核编程应运而生。按照我的理解,多核编程可以认为是对多线程编程做了一定程度的抽象,提供一些简单的API,使得用户不必花费太多精力来了解多线程的底层知识,从而提高编程效率。这两天关注的多核编程的工具包括openMP和TBB。按照目前网上的讨论,...
2014-01-10 09:18:42
362
c# 调用Redis例子
2018-12-27
labview核心教程
2018-08-07
设计模式精解
2014-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人