appendtext

.NET简陋服务器

爷,独闯天下 提交于 2020-10-17 19:57:47
服务器是干啥子用滴?监听客户端,响应客户端用滴! 虽然是世界上最简陋的服务器,但是也有几个注意点: 1.因为要一个死循环监听客户端响应,也就是说无法和用户进行交互了,所以防止前台假死就要为监听新起一个线程; 2.要把新起的线程td.IsBackground = true;设置为后台线程,这样的话线程才会随着应用程序的关闭而关闭,不然的话关了窗体,它还在运行; 3.跨线程问题,在新的线程里改变UI会报跨线程改变UI的错误,所以要用Invoke; 4.在监听的死循环中加入 Thread.Sleep(1);这样可以提高应用程序性能,不要担心当服务的线程正在Sleep的时候来了个请求服务器会收不到,其实是收得到的。 加入Thread.Sleep(1)的CPU如图: 不加Thread.Sleep(1)的CPU如图: 所以一定要加! 所以服务器端代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 using System

csharp: Emgu.CV.OCR and Tesseract.OCR Optical Character Recognition

邮差的信 提交于 2020-10-04 00:19:12
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Emgu.CV; //3.2.02 using Emgu.CV.VideoStab; using Emgu.CV.ML; using Emgu.CV.OCR; using Emgu.CV.Structure; //https://github.com/iobrains/OpenCV namespace CharacterRecognition { /// <summary> /// geovindu edit /// </summary> public partial class MainWnd : Form { string path; public MainWnd() { InitializeComponent(); } /// <summary> /// /// </summary> /// <param name="sender"><

【C#】【Thread】SynchronizationContext线程间同步

心不动则不痛 提交于 2020-08-18 16:02:55
  SynchronizationContext在通讯中充当传输者的角色,实现功能就是一个线程和另外一个线程的通讯。   需要注意的是,不是每个线程都附加SynchronizationContext这个对象,只有UI线程是一直拥有的。 故获取SynchronizationContext也只能在UI线程上进行 SynchronizationContext context = SynchronizationContext.Current;   那什么时候会用到呢?   在多线程操作时往往需要切回某个线程中去工作,等完成后再切回来。   如主UI线程中创建了一个子线程A。A中添加了委托事件。UI线程中向A线程的类注册了事件,当A线程触发事件时去修改UI上的属性如TEXT。   这个时候往往要在UI线程向子线程注册的事件方法中使用控件的invoke方法才能访问UI线程中的控件,因为这些注册的事件(委托)方法代码虽然看似写在UI线程的Form类中,但实际上是注册在了子线程A的事件中,它们是会被子线程A触发事件时在子线程内部执行的。这样,我们不得不在主UI线程的类的注册事件方法中通过控件的 Invoke 方法才能访问控件,这样做十分麻烦。我们想和系统的控件事件一样,直接在注册的事件方法中访问控件。那么这个时候就可以用SynchronizationContext了。  

基于.NET的免费开源的模板引擎---VTemplate

回眸只為那壹抹淺笑 提交于 2020-08-16 09:32:09
1、VTemplate模板引擎的简介 VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象。当VTemplate应用于web开发时,界面设计人员可以和程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由程序开发人员关注业务逻辑编码。VTemplate将.NET程序代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在ASP.NET WebForm开发之外又提供了一种可选的方案。 VTemplate也可以作为动态文本生成工具,生成HTML、XML、邮件、程序源代码或其它文本等。 2、VTemplate模板的特色: 2.1、 VT是一种解释型的模板引擎,所以你可以随时更改你的模板代码以获得不同的输出,而不需要重新编译程序代码 2. 2、 VT支持缓存,也就是模板只需要解析一次,下次就可以直接从内存里构建您的模板对象而不需要再次解析模板代码,除非相关的模板文件已被修改。 2. 3、 VT的模板标签语法是基于HTML规范定义的元素,所以对页面设计人员来说是非常友好的。 2. 4、 VT模板支持循环、条件判断、数值表达式计算等,以方便你在模板里直接进行逻辑处理。 2. 5、 VT支持直接调用对象里的方法 例子: --------

如何在Java中将文本追加到现有文件

隐身守侯 提交于 2020-08-11 01:45:24
问题: I need to append text repeatedly to an existing file in Java. 我需要将文本重复添加到Java中的现有文件中。 How do I do that? 我怎么做? 解决方案: 参考一: https://stackoom.com/question/6onS/如何在Java中将文本追加到现有文件 参考二: https://oldbug.net/q/6onS/How-to-append-text-to-an-existing-file-in-Java 来源: oschina 链接: https://my.oschina.net/u/4438370/blog/4348174

第一个微信小项目

偶尔善良 提交于 2020-08-10 05:44:41
第一个好友分析: 我们需要用到wxpy这个库,这个库用到时会弹出一个二维码,这个二维码是通过扫码的方式登录微信,以获取信息 1 # 导入模块 2 from wxpy import * 3 4 # 初始化机器人,选择缓存模式(扫码)登录 5 bot = Bot(cache_path= True) 6 7 # 获取我的所有微信好友信息 8 friend_all = bot.friends() 接下来我们调用这个库的函数做到将好友的信息转化成列表 1 lis= [] 2 for a_friend in friend_all: 3 NickName = a_friend.raw.get( ' NickName ' ,None) 4 Sex ={1: " 男 " ,2: " 女 " ,0: " 其它 " }.get(a_friend.raw.get( ' Sex ' ,None),None) 5 City = a_friend.raw.get( ' City ' ,None) 6 Province = a_friend.raw.get( ' Province ' ,None) 7 Signature = a_friend.raw.get( ' Signature ' ,None) 8 list_0= [NickName,Sex,City,Province,Signature] 9 lis

C#串口通讯概念以及简单实现

雨燕双飞 提交于 2020-07-28 18:58:14
  最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信。它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可以同时向两端或者更多进行数据发送,它们之间的传输数据类型是byte,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。   听大佬说的几个关于串口通讯的术语,啥?啥,这是啥?   就让我这个“小白”给你说说:第一个波特率,这个东西在不同领域都有涉及,在串口通讯中两个串口之间通讯之间的信号单元叫做码元,每分钟传递的信号(码元)也就是波特率;   第二个数据位、停止位:这个听名字就知道是啥意思了,在传递数据过程之前,机器会识别你的数据是个啥,然后根据这个类型,去调整不同的起始位、停止位。   第三个奇偶校验:就是想知道你这个数据有多大,多长,因为传输都是1 和 0 ,具体校验方法如下: 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 ---- 1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。 偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数 ---- 1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。   如果想要在C

C#串口通讯实例

那年仲夏 提交于 2020-05-09 16:01:11
本文参考《C#网络通信程序设计》(张晓明 编著) 程序界面如下图: 参数设置界面代码如下: 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; namespace ComDemo { public partial class ComSet : Form { public ComSet() { InitializeComponent(); } private void ComSet_Load( object sender, EventArgs e) { // 串口 string [] ports = SerialPort.GetPortNames(); foreach ( string port in ports) { cmbPort.Items.Add(port); } cmbPort.SelectedIndex = 0 ; // 波特率 cmbBaudRate.Items.Add( " 110 " );

Java 在Word中创建表格

孤街浪徒 提交于 2020-04-22 14:42:08
在 Word文档中, 表格 能使 文本内容更加 简洁 明了 ,同时也能使 数据 的 展示 更加清晰直观。 本文将介绍如何使 用 Java 代码 在 Word文档中创建表格 并 设置 其单元格的 背景颜色 。 Jar文件导入方法 方法一: 下载 免费 的 Free Spire. Doc for Java 包并解压缩 , 然后从 lib文件夹下, 将 Spire.Doc.jar包 导入 到你的 Java应用程序中。 ( 导入成功 后 如下图所示 ) 方法二: 通过 Maven仓库安装 导入 。 详细的操作步骤 请参考链接 : https://www.e-iceblue.cn/licensing/install-spirepdf-for-java-from-maven-repository.html Java代码示例 : import com.spire.doc.* ; import com.spire.doc.documents.* ; import com.spire.doc.fields.TextRange; import java.awt.* ; public class CreateTable { public static void main(String[] args) { // 创建Word文档 Document document = new Document(); //

【C#】写一个支持多人聊天的TCP程序

孤者浪人 提交于 2020-04-16 09:43:29
【推荐阅读】微服务还能火多久?>>> 碎碎念 先谈谈我们要实现的效果:客户端可以选择要聊天的对象,或者直接广播消息(类似QQ的私聊和群消息) 那么,该如何实现呢? 首先明确的是,要分客户端和服务器端两个部分( 废话 ) 客户端:选择要发送的对象,发送信息。同时有一个线程在监听是否收到新的信息。 服务器端:负责转发收到的消息,并负责管理所有接入的连接 好了有了大体思路后,开始编程吧~ 客户端 界面设计 客户端要提供的信息主要是发送对象、发送信息内容,故设计如下: 其中用户名必须提供(这里考虑的比较简单,不需要验证用户名是否重复),发送信息时需要选择目标用户。 编码实现 连接服务器部分 连接服务器和正常的tcp连接没什么区别,由于要考虑到 目标用户 选项刷新的问题,这里必须在建立连接后向服务器发送一条信息告知服务器自己的身份,服务器接收后会再返回一条信息来告知客户端目前服务器在线用户的名称。 因为请求的信息内容、作用不一样,这里使用自定义的“信息格式”,使用$符号来分割,请求格式为 code$message 以下是请求的说明表 故我们可以根据该表写出一个Encode函数: private String EncodeMessage(String message, int code,String goalName) { switch (code) { case 1 : // 汇报用户名