-
golang并发编程的实现
go main函数的执行本身就是一个协程,当使用go关键字的时候,就会创建一个新的协程 channel channel 管道,用于在多个协程之间传递信号 无缓存管道 当对无缓冲通道写的时候,会一直阻塞等到某个协程对这个缓冲通道读 阻塞场景: 通道中无数据,但执行读通道. 通道中无数据,向通道写数据,但无协程读取. 综上,无缓存通道的读写必须同时存在,且读写分别在两个不同的协程 func main(){ ch := make(chan int) go func(ch chan int){ ch <
-
Windows下bat批处理脚本使用telnet批量检测远程端口小记
多年没写过批处理了,来新公司的第一个case却是需要写一个bat脚本,批量更新采集agent的配置文件,其中就涉及到远程IP的端口检测. 本以为会和Linux一样可以简单判断: 复制代码 代码如下: echo q|telnet -e 'q' $ip $port && echo "$ip:port 通"||echo "$ip:port 不通" 结果发现Windows下面telnet退出并没有执行结果的返回值: 一.借助工具 于是我优先开启懒人法则,找其
-
Android自定义View实现跟随手指移动的小兔子
本文实例为大家分享了Android自定义View实现跟随手指移动的小兔子,供大家参考,具体内容如下 自定义的View实现跟随手指的小兔子 按前面的例子新创建一个project,再在project中新创建一个module 将需要的背景图和兔子图片放入mipmap中 将布局管理器改为帧布局管理器 <?xml version="1.0" encoding="utf-8"?> //修改为帧布局管理器FrameLayout <FrameLayout xmln
-
C++实现TCP客户端及服务器Recv数据筛选处理详解
目录 正文 代码解析 1:当Tcp缓冲区的数据小于3个字节时,不进行判断 2:判断包头是不是一致? 3:包头匹配后,判断是否达到了数据包的固定协议长度? 4:判断有效数据是否接收完整? 5:数据校验位判断 正文 对于一个简单的tcp通讯这里我就不再讲述了,今天主要为大家讲解下,如何从::recv中筛选出一个完整包逻辑. 就简单的以客户端为例(服务器接收方也是同样的逻辑),假设服务器一直在频繁发送数据,在recv函数中并不能保证每次接收的都是一个完整的包,当设置recv的缓冲区过大时,就会出现多个
-
Qt实现TCP客户端和服务器通讯程序
复习的心态过一遍之前基础的一些东西,Qt封装了QTcpServer和QTcpSocket两个类,其中QTcpServer继承自QObject,通过listen()函数监听传入的客户端连接,当Client连接上时,QTcpServer会发出newConnection的信号,在对应的槽函数中使用nextPendingConnection()拿到连接的客户端的句柄和信息. 而QTcpSocket则是读写数据的时候使用,过程很简单. 服务器流程:listen->newConnection->nextP
-
深入理解Golang channel的应用
目录 前言 整体结构 创建 发送 接收 关闭 前言 channel是用于 goroutine 之间的同步.通信的数据结构 channel 的底层是通过 mutex 来控制并发的,但它为程序员提供了更高一层次的抽象,封装了更多的功能,这样并发编程变得更加容易和安全,得以让程序员把注意力留到业务上去,提升开发效率 channel的用途包括但不限于以下几点: 协程间通信,同步 定时任务:和timer结合 解耦生产方和消费方,实现阻塞队列 控制并发数 本文将介绍channel的底层原理,包括数据结构,c
-
golang通过递归遍历生成树状结构的操作
业务场景: 一个机构查询科室信息的时候,希望返回树状结构的嵌套格式; 解决办法: 通过递归和指针,嵌套成对应的结构体; 借鉴了前人的代码,但是最后递归的指针调用自己也是调试了半天才出来,这里献上完整的示例代码. package main import ( "fmt" "encoding/json" ) type dept struct { DeptId string `json:"deptId"` FrameDeptStr string `jso
-
重构Javascript代码示例(重构前后对比)
今天有做了几个asp.net结合Javascript的教程文章.现回顾头来看看那些Javascript脚本,有写得不太理想,过于复杂.现抽取出来,重构它们. 之前一: 复制代码 代码如下: function SelectedAll(cb) { cb.checked = cb.checked ? false : true; var gv = document.getElementById('<%=GridViewCouplets.ClientID %>'); var rc = gv.rows.l
-
VBS教程:函数-UCase 函数
UCase 函数返回字符串的大写形式. UCase(string) string 参数是任意有效的字符串表达式.如果 string 参数中包含 Null,则返回 Null. 说明只有小写字母被转换成大写字母:所有大写字母和非字母字符均保持不变. 下面的示例利用 UCase 函数返回字符串的大写形式: Dim MyWordMyWord = UCase("Hello World") ' 返回"HELLO WORLD".
-
C语言断言函数assert()的学习笔记
在C语言库函数中提供了一个辅助调试程序的小型库,它是由assert()宏组成,接收一个整形表达式作为参数.如果表达式的值为假(非零),则assert()宏就在标准错误流(stderr)中写入一条错误信息,并调用abort()函数终止程序. 下面通过一个简单的例子来看一下assert()的用法. int main() { int n = 1; assert(n>=0); printf("%d \r\n",n); system("pause"); retu
-
vue resource post请求时遇到的坑
使用 post 请求 // global Vue object Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback); Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback); // in a Vue instance this.$http.get('/someUrl', [options]).th
-
C#实现批量下载图片到本地示例代码
一.概述 批量下载图片是我们在日常开发中经常会遇到的一个需求,这不,最近工作中就需要批量下载图片到本地,先是通过Excel拼接生成了所有链接地址,然后想到的是通过下载软件来批量下载.可是一想到又要花时间去查找.安装.研究软件,不如自己写个来的快. 以下是使用C#开发的控制台程序代码,通过循环读取文本文件中每一行地址字符串,执行下载并保存到本地文件夹中. 下面话不多说了,来一起看看详细的介绍吧 二.C#实例代码 //using System; //using System.Net; //using
-
golang基于websocket通信tcp keepalive研究记录
目录 为什么有tcp Keepalive? tcp Keepalive是否默认开启? 如何设置tcp keepalive? 在Linux内核设置 golang websocket 客户端默认怎么处理tcp keepalive? golang websocket 服务器默认怎么处理tcp keepalive? 为什么有tcp Keepalive? 服务器和客户端建立tcp连接以后,客户端/服务器如何知道对方是否挂掉了? 这时候TCP协议提出一个办法,当客户端端等待超过一定时间后自动给服务端发送一个
-
golang 实现菜单树的生成方式
golang 实现菜单树的生成,包括菜单节点的选中状态.半选中状态,菜单的搜索. 1 该包提供两个方法根接口 1.1 GenerateTree(nodes, selectedNodes []INode) (trees []Tree) GenerateTree 自定义的结构体实现 INode 接口后调用此方法生成树结构. 1.2 FindRelationNode(nodes, allNodes []INode) (respNodes []INode) FindRelationNode 在 allT
-
利用Angularjs和bootstrap实现购物车功能
先来看看效果图: 购物车 一.代码 如果看了这个效果有兴趣想知道怎么做出来的话,那就继续往下看吧.话不多少,直接上代码. html代码: <!DOCTYPE html> <html lang="en" ng-app="cart"> <head> <meta charset="UTF-8"> <title>购物车</title> <link rel="style
-
布隆过滤器面试如何快速判断元素是否在集合里
目录 1.什么叫布隆过滤器 2.实现原理 3.作用 4.具体实现 5.代码的实现 6.实战 7.小结 如何快速判断一个元素是不是在一个集合里?这个题目是我最近面试的时候常问的一个问题,这个问题不同人都有很多不同的回答. 今天想介绍一个很少有人会提及到的方案,那就是借助布隆过滤器. 1.什么叫布隆过滤器 布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于1970年提出的. 实际上可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构. 它的
-
易语言设置画板绘画时的画笔类型
画笔类型属性 数据类型:整数型: 可供选择的属性值: 0.空笔 1.直线 2.划线 3.点线 4.点划线 5.双点划线 6.内直线 例程 说明 本属性用于设置画板绘画时的画笔类型. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接
-
易语言设置在月历框架内是否显示今天的日期
不显示今天属性 所属对象:月历 操作系统支持:Windows,数据类型:逻辑型: 将逻辑型数据赋值到指定对象的不显示今天属性中 语法:对象.不显示今天 = 逻辑型 应用对象:月历 例程 说明: 本属性规定在月历框架内的下面,是否显示今天的日期. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接
-
GoFrame框架gredis优雅的取值和类型转换
目录 取值方法 不推荐 推荐 DoVar示例 ReceiveVar示例 HashSet示例 小技巧 总结 上一篇文章为大家介绍了 GoFrame gcache使用实践 | 缓存控制 淘汰策略 ,得到了大家积极的反馈. 后续几篇文章再接再厉,仍然为大家介绍GoFrame框架缓存相关的知识点,以及自己项目使用中的一些总结思考,GoFrame框架下文简称gf. 今天重点为大家介绍:GoFrame gredis 如何优雅的取值和类型转换 取值方法 不推荐 通过客户端方法Do/Receive获取的数据都是
-
mysql启动时出现ERROR 2003 (HY000)问题的解决方法
一.问题描述 在启动MYSQL时出现问题:"ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)",情况如图: 二.问题分析 从错误的提示中可以看出MySQL服务没有启动,因此只需要启动MySQL服务就可以了. 三.问题解决 直接采用net start MySQL 就可以启动MySQL服务,但是输入命令后仍然出现错误: 可以看到错误提示:"服务名无效",说明不存在MySQL服