C#生成XML的三种途径
为了全⾯,这⾥都将XML保存到⽂件中,有三种⽣成XML的⽅式:
1.最原始,最基本的⼀种:利⽤XmlDocument向⼀个XML⽂件⾥写节点,然后再利⽤XmlDocument保存⽂件。⾸先加载要写⼊的XML⽂件,但是如果没有的,就要新建,在新建的过程中,要有写⼊的代码;
12345678910111213141516171819202122XmlDocument doc = new XmlDocument();try{ doc.Load("new.xml");}catch{ XmlTextWriter xtw = new XmlTextWriter("new.xml", Encoding.UTF8); //新建XML⽂件 xtw.WriteStartDocument(); xtw.WriteStartElement("gnode"); //gnode根节点 xtw.WriteStartElement("myxm1&quo ...
DevexpressGridControl控件
GridControl 合并单元格修改GridView的OptionsView.AllowCellMerge属性为True;
1gridView.OptionsView.AllowCellMerge == true;
在GridView控件的CellMerge事件中加入以下方法:
12345678910111213141516171819private void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e){ if (e.Column.FieldName == "docKey" || e.Column.FieldName == "docCaption") //docKey和docCaption为需要合并单元格的列 { DevExpress.XtraGrid.Views.Grid.GridView gridView = sender as DevExpress.XtraGr ...
C# Winform内嵌HTML页面
1 引用
CefSharp.Common v100.0.230
CefSharp.WinForms v100.0.230
2 初始化123456789loginForm = new LoginForm();//承载页面的Form窗体string url = AppDomain.CurrentDomain.BaseDirectory + @"\html\login.html";//请求页面地址ChromiumWebBrowser webCom = new ChromiumWebBrowser(url);//传入地址,实例化页面对象CefSharpSettings.WcfEnabled = true;//注册绑定在页面的操作类webCom.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;webCom.JavascriptObjectRepository.Register("middleware", this, isAsync: false, options: Bin ...
C# Array、List、ArrayList、HashSet、SortedSet
1 Array 数组1.1 数组定义和初始化的几种方法:1234567891011//1.int[] stuScore = new int[2];stuScore[0] = 11; stuScore[1] = 12;stuScore[2] = 13;//2.int [] stuScore = new int[2]{11,12,13};//3.int[] stuScore = new int[]{11,12,13};//4.int[] stuScore = {11,12,13};
1.2 数组常见方法:12345678910Array.Sort(array);//对数组进行排序Array.Reverse(array);//对数组进行反转int maxNum = array.Max();//求数组中元素的最大值int minNum = array.Min();//求数组中元素的最小值if(array.Contains(20))//判断元素中是否包含40这个元素foreach(int item in array)//遍历数组in ...
C# Task和async、await详解
什么是异步同步和异步主要用于修饰方法。当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法;当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕,我们称这个方法为异步方法。
异步的好处在于非阻塞(调用线程不会暂停执行去等待子线程完成),因此我们把一些不需要立即使用结果、较耗时的任务设为异步执行,可以提高程序的运行效率。net4.0在ThreadPool的基础上推出了Task类,微软极力推荐使用Task来执行异步任务,现在C#类库中的异步方法基本都用到了Task;net5.0推出了async/await,让异步编程更为方便。本篇主要介绍Task、async/await相关的内容,其他异步操作的方式会在下一篇介绍。
Task介绍Task是在ThreadPool的基础上推出的,我们简单了解下ThreadPool。ThreadPool中有若干数量的线程,如果有任务需要处理时,会从线程池中获取一个空闲的线程来执行任务,任务执行完毕后线程不会销毁,而是被线程池回收以供后续任务使用。当线程池中所有的线 ...
获取数据库表、表字段、表注释、字段注释
1.获取表
Oracle:
1234567select table_name from user_tables; //当前用户的表 table_name,tablespace_name,last_analyzed等 select table_name from all_tables; //所有用户的表 ower,table_name,tablespace_name,last_analyzed等 select table_name from dba_tables; //包括系统表 ower,table_name,tablespace_name,last_analyzed等 --实例:select table_name from dba_tables where owner='用户名' 列名: ower,object_name,subobject_name,object_id,created,last_ddl_time,timestamp,status等
2.获取表字段
Oracle:
123456789select * ...
Node.js多版本安装
Node.js 多版本安装
Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine(Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境)。
Node.js 跨平台,支持 Windows、 Linux、Mac,
2018.10.8 Node.js 最新版本 10.11.0
Node.js 的包管理器 npm,是全球最大的开源库生态系统。
单个 Node.js 版本的安装Node.js 单个版本的安装非常简单,根据自己的操作系统,从官网下载安装程序,按照默认安装即可。国外的网站,下载速度较慢,国内有镜像网站,下载较快。
windows 安装遇到的坑使用 npm install 安装包时报错,卸载了 Node.js 重新安装,依然报错
解决方法:安装盘文件系统为 FAT32,改为 NTFS,就可以安装包,不会报错了
多个 Node.js 版本的安装Node.js 的版本更新非常快,所有有时需要在多个版本之间切换,就需要安装多个版本的 Node.js.Node.js 多 ...
C#压缩zip
一、ZipFileZipFile类用于选择文件或文件夹进行压缩生成压缩包。
常用属性:
属性
说明
Count
文件数目(注意是在ComitUpdat之后才有)
Password
压缩包密码
Size
压缩包占用空间大小
Name
压缩包名称,默认输出是文件路径
ZipEntry
压缩包里的文件,通过索引[]访问
其常用方法如下:
方法
说明
Add
添加要进行压缩的文件
AddDirectory
添加文件夹(不会压缩文件夹里的文件)
Delete
删除文件或文件夹
BeginUpdate
开始修改压缩包
CommitUpdate
提交修改
SetComment
添加注释
示例1(创建压缩文件):
12345678using (ZipFile zip = ZipFile.Create(@"D:\test.zip")){ zip.BeginUpdate(); zip.SetComment("这是我的压缩包"); zip.Add(@"D:\1 ...
C#正则表达式
一、通配符已下代码都是区分大小写。
常用元字符
代码
说明
.
匹配除换行符以外的任意字符。
\w
匹配字母或数字或下划线或汉字。
\s
匹配任意的空白符。
\d
匹配数字。
\b
匹配单词的开始或结束。
[ck]
匹配包含括号内元素的字符
^
匹配行的开始。
$
匹配行的结束。
\
对下一个字符转义。比如$是个特殊的字符。要匹配$的话就得用$
|
分支条件,如:x|y匹配 x 或 y。
反义元字符
代码
说明
\W
匹配任意不是字母,数字,下划线,汉字的字符。
\S
匹配任意不是空白符的字符。等价于 [^ \f\n\r\t\v]。
\D
匹配任意非数字的字符。等价于 [^0-9]。
\B
匹配不是单词开头或结束的位置。
[^CK]
匹配除了CK以外的任意字符。
特殊元字符
代码
说明
\f
匹配一个换页符。等价于 \x0c 和 \cL。
\n
匹配一个换行符。等价于 \x0a 和 \cJ。
\r
匹配一个回车符。等价于 \x0d 和 \cM。
\t
匹配一个制表符。等价于 \x ...
Hexo部署到腾讯云静态网站托管
Hexo部署到腾讯云静态网站托管步骤1:安装 CloudBase CLI 以及本地部署 Hexo
在本地安装 Node.js:如果未安装请前往 Node.js 官网 下载安装,并确保 Node.js 安装成功。
安装 CloudBase CLI。打开命令提示符,执行如下命令:
1npm i -g @cloudbase/cli hexo-cli
执行完毕后,在本地新建名称为 Hexo 的文件夹。在该文件夹中,打开命令提示符,并执行如下命令进行初始化:
1hexo init
在初始化过程中,您可以看到如下图的输出:
初始化完成后,执行如下命令,启动预览:
1hexo s
预览后,在浏览器中打开 localhost:4000,即可看到部署的 Hexo 博客。
步骤2:创建云开发环境
登录腾讯云 云开发控制台,单击立即创建并使用,新建一个环境来进行部署。如果您之前创建过环境,可以继续使用已创建的按量计费环境,或者再次新建环境。
在新建环境窗口中,根据实际需求填写环境名称,选择按量计费,单击立即开通即可开通环境。
开通成功之后,单击环境名称,进入环境总览页面。如下所示:
注 ...
DevexpressTreeList
在 TreeList 控件添加节点或绑定数据源前,需要对其进行初始化(否则就会出现,第一次添加数据不显示,再次添加就会显示正常的问题)123456789101112131415161718this.treeList1.BeginInit();//绑定图片列表treeList1.SelectImageList = imageCollection1;this.treeList1.Columns.Clear();//添加显示列this.treeList1.Columns.Add(new TreeListColumn { FieldName = "name", Caption = "图层", Width = 160, VisibleIndex = 1 });int count = treeList1.Columns.Count;//设置树控件的层次关系及属性treeList1.KeyFieldName = "name";treeList1.ParentFieldName = "pid";tree ...
为什么要尽量避免使用“IN”和“NOTIN”
IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?
1. 效率低项目中遇到这么个情况:
t1表 和 t2表 都是150w条数据,600M的样子,都不算大。
但是这样一句查询 ↓
1select * from t1 where phone not in (select phone from t2)
直接就把我跑傻了。。。十几分钟,检查了一下 phone 在两个表都建了索引,字段类型也是一样的。原来 not in 是不能命中索引的。。。。
改成 NOT EXISTS 之后查询 20s ,效率真的差好多。
12select * from t1 where not EXISTS (select phone from t2 where t1.phone =t2.phone)
2. 容易出现问题,或查询结果有误 (不能更严重的缺点)以 IN 为例。建两个表:test1 和 test2
12345create table test1 (id1 int)create table test2 (id2 int)insert into test1 (id1) values (1) ...
Spring@Bean和@Component注解的区别
本文打算介绍几个不太容易说出其区别或者用途的 Spring 注解,比如 @Component 与 @Bean 的比较,@ControllerAdvice 是如何处理自定义异常的等等。
Spring 中的一些注解@Component 和 @Bean 的区别是什么?
作用对象不同:@Component 注解作用于类,而 @Bean 注解作用于方法、
@Component 通常是通过路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean 告诉了 Spring 这是某个类的实例,当我们需要用它的时候还给我。
@Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。
@Bean 注解使用示例:
1234567@Confi ...
Log4net
log
code
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141using System;using log4net;namespace MapGIS.GMSystem.Plugin{ public class Log { public static void Info(string msg) { Syste ...
SHSH.Log.Net
log
Code
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951 ...
Windows系统配置脚本开机启动的3种方法
一、开始菜单启动项实现用户必须登录才可执行。
测试脚本(python代码):
12345678import timefout = open('e:\\1.txt','w')while True: tmp = '%d-%02d-%02d %02d:%02d:%02d \r\n' % time.localtime()[0:6] print tmp fout.write(tmp) fout.flush() time.sleep(5)
1、常规操作
1.1 创建快捷方式;
1.2 将创建的快捷方式放入开始菜单启动项;
1.3、开机验证;
2、隐藏命令行窗口启动
上述操作方法有命令行窗口,有些场合感觉不太实用,我们可以通过以下两种方式去掉命令行窗口。
2.1 将python脚本的文件扩展名改为”.pyw”
其它操作和上述过程类似,这里不再赘述。
2.2 通过vbs之类的脚本启动
12Set ws = CreateObject("Wscript.Shell")ws.ru ...
SpringBoot自动配置原理
SpringBoot自动配置原理1 SpringBoot 特点1.1 依赖管理
父项目做依赖管理
12345<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version></parent>
无需关注版本号,版本自动仲裁(引入非仲裁版本的jar,需要写版本号)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510 ...
CMD命令
Cmd命令1. Cmd 统改文件扩展名1ren C:\path\*.old *.new
w
Spring Boot 配置文件
1. Spring Boot默认配置文件通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties 或 apllication.yml 作为其默认配置文件,我们可以在该配置文件中对项目进行配置,但这并不意味着 Spring Boot 项目中只能存在一个 application.properties 或 application.yml。
1.1 默认配置文件Spring Boot 项目中可以存在多个 application.properties 或 apllication.yml。
Spring Boot 启动时会扫描以下 5 个位置的 application.properties 或 apllication.yml 文件,并将它们作为 Spring boot 的默认配置文件。
file:./config/
file:./config/*/
file:./
classpath:/config/
classpath:/
注:f ...
int(1) 和 int(10) 有什么区别?
1. 困惑最近遇到个问题,有个表的要加个 user_id 字段,user_id 字段可能很大,于是我提 mysql 工单alter table xxx ADD user_id int(1)。领导看到我的 sql 工单,于是说:这int(1)怕是不够用吧,接下来是一通解释。 其实这不是我第一次遇到这样的问题了,其中不乏有工作5年以上的老司机。包括我经常在也看到同事也一直使用 int(10),感觉用了 int(1),字段的上限就被限制,真实情况肯定不是这样。
2. 数据说话我们知道在 mysql 中 int 占4个字节,那么对于无符号的 int,最大值是2^32-1 = 4294967295,将近40亿,难道用了 int(1),就不能达到这个最大值吗?
1234CREATE TABLE `user` ( `id` int(1) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
id字段为无符号的 int( ...
Spring Boot 入门
1. IDEA创建Spring Boot项目1.1 配置开发环境在使用 Spring Boot 进行开发之前,第一件事就是配置好开发环境。这里我们以 Windows 操作系统为例,如果您使用的是其他操作系统,请对照其相关设置进行操作。
工欲善其事,必先利其器,IDE(集成开发环境)的选择相当重要,目前市面上有很多优秀的 IDE 开发工具,例如 IntelliJ IDEA、Spring Tools、Visual Studio Code 和 Eclipse 等等,那么我们该如何选择呢?
这里我们极力推荐大家使用 IntelliJ IDEA,因为相比于与其他 IDE,IntelliJ IDEA 对 Spring Boot 提供了更好的支持。
Spring Boot 版本及其环境配置要求如下表。
Spring Boot
2.x
JDK
8.0 及以上版本
Maven
3.x
IntelliJ IDEA
14.0 以上
在 Java 官方网站下载 JDK 8.0 及以上版本,JDK 的安装以及环境配置请参考 Java JDK下载与安装教程 和 Java JDK环境变量 ...