.Net Framework

在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

醉酒当歌 提交于 2020-08-15 03:01:56
1.APM工具的选取 Apm监测工具很多,这里选用网上比较火的一款Skywalking。 Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap、管理界面UI、以及嵌入到程序中的探针Agent部分,大概工作流程就是在程序中添加探针采集各种数据发送给服务端保存,然后在UI界面可以看到收集过来的各种监测数据,来完成它的核心使命:性能监控和分布式调用链追踪能力。下图是skywalking官方的一个图,也可以说明这三者之间的关联关系 2.服务端(OAP)和界面(UI)的安装 这里直接在apache地址: http://skywalking.apache.org/downloads/ 下载了一个6.6.0版本的zip文件,由于之前在本地的windows上安装过,发现安装包里面有两个启动文件,分别为:startup.bat和startup.sh,分别用于window上启动和linux启动,这里我直接将之前下载好的上传到linux上来安装。 上传后解压缩,就会得到以下截图的几个文件 进入到config配置目录下面,有一个名称叫application.yml的文件 对这个配置文件进行编辑 vim application.yml 我们直接定位到数据存储部分,也就是节点storage,官方文档里面也有说明,为了方便快速入门,配置文件默认采用的是H2存储

windows上的windbg,linux上的lldb

浪子不回头ぞ 提交于 2020-08-15 02:57:55
windows上的windbg,linux上的lldb 一:背景 1. 讲故事 前几天公众号里有位兄弟看了几篇文章之后,也准备用windbg试试看,结果这一配就花了好几天,(づ╥﹏╥)づ,我想也有很多跃跃欲试的朋友在配置的时候肯定会遇到这样和那样的问题,所以我觉得有必要整理一下,让大家少走弯路。 二:一些基础概念 1. 在哪下载 现在安装windbg越来越麻烦,还要安装Windows 10 SDK,很多人就栽在这里,其实大家可以直接在网上找一键打包的windbg 6.0版本即可,才30多M,调生产调本地都很方便,顺带还可以练练SOS命令。 云盘: https://pan.baidu.com/s/1VqXVIGVHxAZVPNds1525Jg 提取码:mahg 外网: http://www.33lc.com/soft/96743.html 2. 版本问题 解压打开会有一个x64和x86文件夹,很显然,32位的程序用x86下的windbg调试,64位的程序用x64的windbg调试,如下图: 3. 其他的问题 我比较喜欢用64bit程序,所以这里使用64位的windbg。 <1> 配置微软公有符号 符号其实就是pdb文件,我们在debug模式下编译项目都会看到这个,它的作用会对dll进行打标,这样在调试时通过pdb就能看到局部变量,全局变量,行号等等其他信息

PE文件格式偏移参考

岁酱吖の 提交于 2020-08-15 02:42:21
在进行PE文件格式病毒分析的时候,经常要使用到PE文件格式的解析,尤其是对LoadPE形式的病毒的分析,经常要查看PE文件格式的偏移,特地从博客《 PE文件格式的偏移参考 》中转载收录一份,之前在网上也看到比较不错的有关PE文件偏移的博客,但忘了收录。在进行PE文件格式的病毒分析时,还会经常参考这篇博客《 PE文件格式学习笔记 》,博主关于PE文件格式的学习笔记写的不错,其他的参考书籍《加密与解密(第3版)》、《黑客免杀攻防》,顺便提一句《黑客免杀攻防》这本书关于PE文件格式的解析比较不错,但是错误也不少,整体来说这本书对于学习PC上的逆向分析和内核攻防还是很不错的。 Complete PE Offset Reference While there is a lot of data and various parts of the structure are at varying positions there are still a lot of useful fixed and relative offsets that will help when disassembling/examining PE files. Resource information and the such like are omitted - there are good tools

Docker入门 第一课 --.Net Core 使用Docker全程记录

人盡茶涼 提交于 2020-08-15 01:58:16
微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的。 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Docker,成功部署运行Asp.NET core示例程序,算是基本入门。 这篇文章是自己总结的Docker入门篇,力求简洁,快速入门,以最短的时间看到学习成果,为深入学习Docker做基础。 学习前提:不要畏惧 面对未知,人们心里往往会产生恐惧,这是人与生俱来的,所以,我们在进入新的领域之前,首先要克服的是自己的畏难心理。不要因为困难,看几眼就放弃,那样你永远学不会。 面对新的未知领域,我们要把它当成一座灯塔,让它指引我们前进的方向。 第一:了解几个概念 镜像(Image) :相信大家看到这个词,都明白什么意思,我们可以把它理解为操作系统的安装盘,Ghost镜像。我给它个定义,就叫:Docker基础运行环境副本。 容器(Container) :运行中的Docker实例,称为容器。也就是一个镜像(Image)的运行时状态。 镜像仓库(Repository) :Docker为开发者提供了面向各种环境的已经打包好的镜像,这些镜像构成了一个镜像仓库。开发者只需找到自己需要的Docker镜像,下载到本地,添加自己的应用上去,运行即可,某些工具类的镜像,可无需修改,直接运行。 Docker 主机

女研究生该选择主攻后端还是前端

为君一笑 提交于 2020-08-15 01:47:38
  首先,从研究生教育的人才培养目标来看,研究生教育主要培养具有一定创新能力的创新型人才,而从软件技术体系结构来看,很多创新都集中在后端,所以更多的研究生都会把研究方向定在后端。   随着产业互联网时代的到来,基于技术平台(云计算平台、大数据平台、人工智能平台等等)来完成行业创新也是一个比较明显的发展趋势,而基于技术平台来完成行业创新往往会比较侧重于前端开发。未来更多的行业企业会需要高端应用型人才,来辅助企业借助工业互联网提升创新能力,所以研究生当前选择前端作为自己的主攻方向,也是不错的选择,尤其是专硕。   当前选择前端作为自己的主攻方向,一定要重视以下三件事:   第一:要重视技术平台的学习。前端开发全栈化是一个比较明显的发展趋势,之所以前端开发能够全栈化,一个重要的原因是技术平台的支撑,从当前的应用情况和发展趋势来看,当前云计算和大数据平台已经开始广泛落地了,此时掌握云计算和大数据平台,对于前端的创新还是非常重要的。   第二:要重视场景知识的学习。前端开发与场景的结合非常紧密,不同的场景往往需要有不同的前端解决方案,而且在不同的场景中,也有很多创新点可以挖掘。另外,场景知识的学习要尽量借助于导师和学校的资源。   第三:要紧跟技术发展趋势。前端知识的迭代速度是比较快的,所以一定要紧跟技术发展趋势,要能够站在技术的前沿,这样能够明显提升自身研究的应用价值

性能分析之TCP全连接队列占满问题分析及优化过程(转载)

十年热恋 提交于 2020-08-15 01:47:13
前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有两个队列: syns queue (半连接队列)和 accept queue (全连接队列),分别在第一次握手和第三次握手。 半连接队列: 保存 SYN_RECV 状态的连接。 控制参数: 半连接队列的大小:min(backlog, 内核参数 net.core.somaxconn,内核参数tcp_max_syn_backlog). net.ipv4.tcp_max_syn_backlog:能接受 SYN 同步包的最大客户端数量,即半连接上限; tcp_syncookies:当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; accept队列-全连接队列: 保存 ESTABLISHED 状态的连接。 控制参数: 全连接队列的大小:min(backlog, /proc/sys/net/core/somaxconn),意思是取backlog 与 somaxconn 两值的最小值, net.core.somaxconn 定义了系统级别的全连接队列最大长度,而 backlog 只是应用层传入的参数,所以 backlog 值尽量小于 net.core

Java Scoket实现双向通信(代码详解)

北城余情 提交于 2020-08-15 01:28:49
你好我是辰兮,很高兴你能来阅读,本篇总结了Java Scoket类的相关知识,并且整理了实现双向通信的相关代码也有案例实现截图,分享获取新知,大家一起进步。 JAVA基础面试常考问题 : JAVA面试基础常考题汇集 JAVA面试SSM框架常考 : JAVA框架面试题汇集 文章目录 一、网络通信 二、接受者(Receiver) 三、发送者(Sender) 四、案例截图 一、网络通信 网络通信,在网络中程序(发送者)与程序(接受者)之间的数据交互。 通信要素①ip + 端口号 ②传输协议 java.net包: 包含了Java用于网络通信所需的类。 ServerSocket类,用于表示网络服务 创建网络服务(创建ServerSocket对象) //构造器 public ServerSocket ( int port ) //创建网络服务 ServerSocket server = new ServerSocket ( 9999 ) ; 接收网络请求 //接收网络请求的方法 public Socket accept ( ) //网络服务接收请求(阻塞) Socket socket = server . accept ( ) ; Socket类,网络套接字,表示网络连接 发送网络请求 //构造器 public Socket ( String ip , int port ) /

ftp工具 下载,ftp工具如何使用?Linux定时备份文件至ftp服务器教程。

一世执手 提交于 2020-08-15 01:26:59
ftp工具简介 iis7服务管理工具是一款功能强大的FTP软件,具备极好的可控性及条理性。它支持ftp的 定时上传下载 、 定时备份 、 自动更新 、批量上传下载、ftp多站点管理,在线编辑等功能。同时它还支持批量管理操作多台服务器(Windows/vps),并且它还可以作为VNC客户端和Linux的连接工具,同样支持批量操作。非常适合机房管理、站长、运维工作人员、程序员使用。 1. ftp工具使用教程 **下载地址: IIS7服务器管理工具 添加ftp服务器信息 操作步骤 第一步:点击主程序图中“上传下载”键; 第二步:点击“ Ftp”; 第三步:点击“添加”; 第四步:在弹出服务器信息框中填写Ftp信息,注意:FIP ip端口、账号、密码为必填项; 第五步:选择需要打开的FTP服务器; 第六步:点击打开,即刻见FTP效果图。 上传文件 操作步骤 第一步:选择需要上传的多个文件(按ctrl键多选),右键点击上传。 第二步:等待文件上传完成。 第三步:上传完成后,右侧窗口就可以查看上传成功后的文件或文件夹。 2.Linux定时上传文件至ftp服务器教程 2.1. 脚本文件编写。 #!/bin/bash ftp -n<<!-- # 要备份到的主机IP open 192.168.220.129 # ls为要备份到的主机的用户名,toor为前边用户对应的密码 user ls toor #

win10 uwp 如何给 DropDownButton 一个很小的宽度

走远了吗. 提交于 2020-08-15 01:24:21
在 UWP 的 Microsoft.UI.Xaml 提供了一个带下箭头的按钮,这就是 DropDownButton 这个按钮继承 Button 按钮,基本表现相同,但是如果给这个按钮一个很小的宽度,将会看不到下箭头图片 原因是如果最小宽度那么下箭头将没有足够空间显示,虽然左边依然有空白地方,但是空白地方有最小宽度要求 解决方法是通过 Padding 属性,让整个按钮的内容移动,让空白地方移动到按钮外,让下箭头移动到可以显示的地方 <DropDownButton Margin="10,10,10,10" Width="17" Height="30" Padding="-15,0,0,0"></DropDownButton> 上面代码核心就是 Padding="-15,0,0,0" 通过 Padding 可以设置按钮的左上右下各个内容边距的值 现在看起来的效果如下图 更多关于 DropDownButton 请看 DropDownButton Class - Windows UWP applications 这是在堆栈网小伙伴问的问题,请看 c# - Change the width of DropDownButton in UWP - Stack Overflow 本文源代码放在 github 欢迎小伙伴访问 我搭建了自己的博客 https://blog.lindexi.com/

foreach 集合又抛经典异常了,这次一定要刨根问底

时光怂恿深爱的人放手 提交于 2020-08-15 01:08:39
一:背景 1. 讲故事 最近同事在写一段业务逻辑的时候,程序跑起来总是报: 集合已修改;可能无法执行枚举操作 ,硬是没有找到什么情况下会导致这个异常产生,就让我来找一下bug,其实这个异常在座的每个程序员几乎都遇到过,谁也不是一生下就是大牛,简单看了下代码,确实是多线程操作foreach,但并没有对foreach进行Add,Remove操作,扫完代码其实我也是有点懵,没撤只能调试了,在foreach里套一层trycatch,查看异常的线程堆栈从而找出了问题代码,代码简化如下: static void Main(string[] args) { var dict = new Dictionary<int, int>() { [1001] = 1, [1002] = 10, [1003] = 20 }; foreach (var userid in dict.Keys) { dict[userid] = dict[userid] + 1; } } 先寻找点安慰,说实话,凭肉眼你觉得这段代码会抛出异常吗? 反正我是被骗过了,大写的尴尬,结论如下,运行一下便知。 从图中看确实是异常,说明在foreach的过程中连迭代集合的 value 都不可以修改,这让我激起了强烈的探索欲,看看FCL中到底是怎么限制的。 二:源码探索 1. 从IL中寻找答案 C#已发展到 9.0 了,到处都充斥着语法糖