- 博客(121)
- 收藏
- 关注
原创 C#线上问题排查汇总:cpu飙高、内存飙高、程序未知异常、远程调试,程序运行缓慢、程序崩溃、APM
C#线上问题排查汇总:cpu飙高、内存飙高、远程调试,程序运行缓慢
2020-04-01 10:54:07 8276 1
原创 Java线上问题排查汇总:cpu飙高、内存飙高、程序未知异常、远程调试、程序运行缓慢、链路追踪、APM
一、cpu和内存飙高。内存飙高问题可以使用MAT查看原因,CPU飙高可以使用jstack查看原因,我把具体的方法单独写到了我的这篇博客里:https://blog.csdn.net/dap769815768/article/details/104942720二、开启远程调试。很多问题我们都是采用打印日志的方式,但是日志毕竟不是很完善的,很多细节看不到,这个时候如果开启远程调试,效率会高...
2020-04-01 10:28:00 797
原创 java使用AbstractProcessor、编译时注解和JCTree实现编译时织入代码(类似lombok)并实现Debug自己的Processor和编译后的代码
Java架构师交流群:793825326java版本:jdk1.8IDE:idea2019先说怎么用,现在我们想写一个注解HelloWorld,让所有使用了这个注解的类,在编译的时候都打印“Hello World!”,注意,是在编译的时候,不是运行的时候。那么该怎么做呢,这就要用到AbstractProcessor这个东西了。1.先创建一个maven项目abstractproces...
2019-06-03 17:48:25 11114 29
原创 C#调用C++的dll
PDWORD是指向DWORD的指针类型,DWORD是双WORD类型,每个WORD占两个字节,因此DWORD占四个字节,和Int类型对应。这里StringBuilder类型本身在c#里面传递的就是引用地址,所以不需要加ref或者out关键字。
2023-06-07 14:00:22 486
原创 Golang开发汇总
go版本:go1.17.4 windows/amd641.windows下交叉编译Linux环境下的可执行文件。不管是用powershell还是cmd,都需要使用管理员打开,才能正常编译。如果你是使用visual studio code,vs code终端默认使用的是powershell,如下:需要使用下面的命令先设置环境变量:// 要带上$$Env:GOOS = "linux"; $Env:GOARCH = "amd64"然后在项目目录下执行:go build就会.
2021-12-09 17:09:41 855
原创 web前端开发大杂烩
react版本:^17.0.2typescript版本:^4.5.21.单行文本超出部分用省略号代替:div{ white-space: nowrap; text-overflow: ellipsis; overflow: hidden; width: 200px;}该方法只有在单行情况下才会生效,也就是white-space: nowrap;时。针对多行文本,相对比较复杂,需要计算每个文字在当前样式下的宽度,然后再根据所在div的实际宽度进行针对性处理。
2021-11-26 14:12:42 1046
原创 使用脚手架创建React项目以及解决ant design pro v5开发过程中的相关问题
1.设置淘宝npm仓库,vs code打开指定目录,切换到控制台,执行:npm config set registry https://registry.npm.taobao.org这样的话就不需要下cnpm了。如图:可以使用下面的命令查看设置是否生效:npm config get registry2.本地安装脚手架create-react-app:npm install create-react-app --save-dev;3.使用脚手架创建项目:./node
2021-09-24 11:29:14 1546
原创 echarts相关
1.富文本使用,以下示例将标题1和标题2分开控制,同时利用padding和height属性控制两段文本的内容label: { position: "center", fontWeight: '500', color: '#909dff', formatter:[ '{value|' + 标题1 + '%}', '{name|' + 标题2 + '}' ].join('\n'), rich: {
2021-07-30 11:14:07 103
原创 Vue开发相关
vue cli 版本:Vue CLI v4.5.131.使用Vue Cli创建项目。使用vs code打开一个空文件夹,在该目录下执行命令:# 我习惯安装到本地,如果想全局安装使用-gnpm install @vue/cli --dev-save安装好后,当前目录下会出现一个node_modules目录,然后使用命令创建一个项目,项目名称为big-screen:.\node_modules\.bin\vue create big-screen使用该命令后会出现下面的创建步骤,选
2021-07-07 10:54:37 391
原创 iptables操作
系统:Ubuntu 20.04iptables生效的顺序:排在前面的会覆盖掉后面的。比如先增加一条REJECT规则,又增加了一个ACCEPT规则,如果这两个规则是对同一个条件设置的,那么后者会覆盖前者。1.给filter表增加一条drop规则:# -t表示table,默认是filter表,因此这里可以省略掉-t这个参数# -A表示Add,-j表示操作类型,-p表示协议,--dport表示目的端口# 如果本地收到一个tcp数据包,数据包的访问端口是8081的话,那么直接丢弃掉iptable
2021-03-28 11:41:10 495 3
原创 lxc/lxd容器使用
lxd版本:4.0.5Liunux:Ubuntu 20.04.1 LTSlxc/lxd和docker容器相比,更接近虚拟机的环境,docker容器是面向服务器的,而lxc/lxd是面向系统的,它提供了一个完整的系统。但它和虚拟机的区别是虚拟机是硬件隔离,在独立的硬件上启动独立的pc内核,而它仍然是使用系统内核的东西。lxd是lxc的升级版,简化了许多操作。在使用上,网上的资料不像docker那么丰富,但是官方的文档其实还算详细。这里列出一些比较有用的操作。1.安装2.配置镜像仓库代理:
2021-03-09 13:11:03 4583
原创 解决ubuntu环境下报apparmor=“DENIED“ operation=“exec“之类的错误
apparmor的权限规则一般默认放在/etc/apparmor.d/目录下,比如tcpdump的规则存放在该目录下的usr.sbin.tcpdump下,其内容有固定的格式,它相当于白名单,规定了该应用对于目录的访问权限。应用要想访问某个目录,则必须在这个文件里加上权限,否则就会报错,比如使用下面的命令:# 重启某个服务,这里以docker为例systemctl restart snap.docker.dockerd# 查看日志journalctl -xe会查到报错信息如下:Mar 04
2021-03-04 15:37:02 4050 2
原创 visual studio code中c++报未定义标识符 “nullptr“
这个是版本导致的,在vs code中,找到.vscode文件夹下c_cpp_properties.json,将cppStandard的属性值改为c++11:
2021-02-24 10:32:36 5942 1
原创 mysql大杂烩
1.mysql设置最大连接数:show variables like'%max_connections%';set global max_connections=150;2.springboot的mybatis(mybatis 3.5版本)默认用的是连接池是hikari,其中最大连接数,默认值是10,一般并发量比较大的场景下,这个数是处理不过来的,需要增加,配置方式在application.properties中增加:spring.datasource.hikari.maximum-poo
2021-01-08 13:55:29 334
原创 Linux编译c++(gcc、g++、gdb)以及Windows环境下使用vs code和cmake进行跨平台c++开发、编译32位程序
环境:Ubuntu 16.041.安装编译环境:// 以下语句一句一句执行sudo apt update// 该句执行后同时安装gcc g++ gdbsudo apt install build-essential gdb// 安装完成后分辨输入下面的命令查看版本gcc --versiong++ --versiongdb --version// 安装cmakesudo apt install cmake// 安装成功后,输入下面的命令查看版本cmake --version
2020-12-23 20:43:55 2198 3
原创 使用visual studio 2019进行c++跨平台开发
如果是只针对linux的开发,那么只需要创建一个linux系统环境,然后使用vs连接上就可以了,具体可以参考官方文档:https://docs.microsoft.com/zh-cn/cpp/linux/configure-a-linux-project?view=msvc-160如果是针对跨平台开发,那么使用CMake项目进行开发,官方文档:https://docs.microsoft.com/zh-cn/cpp/build/cmake-projects-in-visual-studio?view=m
2020-12-23 16:54:09 1520
原创 windows 虚拟Linux环境的几种方案(虚拟机和wsl)
windows虚拟linux环境可采用虚拟机方式和子系统方式。虚拟机方式有很多种:1.win10自带虚拟机hyper-v:https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/about/2.其他虚拟机软件,比如VMware:https://www.vmware.com/子系统方式叫做wsl:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10它
2020-12-23 16:08:33 7609
原创 Ubuntu汇总
1.将整个test1目录复制到test2目录中:cp -r /test1/ /test2/2.将磁盘sdb1挂载到文件夹mnt下:mount /dev/sdb1 /mnt如果mnt目录不存在,要先创建:mkdir /mnt取消挂载:amount /mnt
2020-12-21 21:39:45 293
原创 Idea 2020添加全局远程maven仓库
打开idea,找到File=》Settings,搜索“maven”:找到Maven Home Directory,复制该地址:进入该目录,找到conf/settings.xml,使用文本编辑器打开,这里我用的是vs code打开的,找到mirrors标签,添加仓库地址:地址是阿里云的maven仓库地址: <mirror> <id>alimaven</id> <name>aliyun maven</nam
2020-12-19 16:16:54 1371 1
原创 Windows10使用diskpart分区
1.点击开始菜单,输入cmd,回车,打开命令提示符,在命令提示符输入diskpart,会看到下面的界面:2.输入list disk查看硬盘列表:3.这里我以我的57G的移动硬盘为例进行操纵。使用命令select disk 2,就选中了这个移动硬盘,后续的操作指令都是在这个移动硬盘上进行:4.使用命令list partition查看分区:5.使用命令clean可以清除所有的分区,这样,这个硬盘里的资料也会被清空:6.使用命令create partition primar
2020-12-17 13:34:44 2554
原创 Windows增加端口映射
1.查看已经有的端口映射:netsh interface portproxy show all2.添加端口映射:netsh interface portproxy add v4tov4 listenport=3306 listenaddress=192.168.20.200 connectport=3306 connectaddress=192.168.137.150前面的listenport是负责监听的机器的端口,后面的connectport是最终接收的机器的端口。3.删除端口映
2020-12-09 14:19:55 767
原创 React-Native App开发流程
1.设置淘宝npm仓库,vs code打开指定目录,切换到控制台,执行:npm config set registry https://registry.npm.taobao.org这样的话就不需要下cnpm了。如图:2.初始化app项目,执行:npx react-native init myapp如图:3.初始化npm:要在myapp目录里面执行。4.本地安装yarn:npm install yarn --save-dev5.运行项目:.
2020-09-29 13:59:34 738
原创 K8S集群环境搭建
环境,三台2核2G的服务器CentOS 8.2 2核2GDocker-CE:19.03.9k8s:1.19.01.关闭防火墙systemctl stop firewalldsystemctl disable firewalld2.关闭selinuxvi /etc/sysconfig/selinux修改配置文件为:SELINUX=disabled3.关闭swap:vi /etc/fstab注释掉:/dev/mapper/cl-swap s
2020-09-15 09:06:23 500
原创 Nginx搭建文件下载服务器、配置网页、配置接口转发
Linux版本:CentOS 8.2Nginx版本:1.18.01.在官方下载rpm包:http://nginx.org/packages/centos/。2.下载好之后,将包上传到home目录下,然后使用yum安装:yum install -y /home/nginx-1.18.0-1.el8.ngx.x86_64.rpm安装好之后,一般如果你的80端口不被占用,那么就可以通过输入你的Linux系统的ip,打开nginx主页了,比如我的ip:http://192.168.208.10
2020-08-28 17:09:45 8148 2
原创 Wpf中Dispatcher.Invoke和Dispatcher.BeginInvoke的区别
看下面的代码: new Thread(()=> { Application.Current.Dispatcher.BeginInvoke(new Action(() => { while (true) { Thread.Sleep(1000); }
2020-07-13 09:18:48 4549
原创 Java使用JNI自定义native方法(C++方法)
IDE版本:IntelliJ Idea 2019、Visual Studio 2019JDK版本:JDK 1.81)使用idea创建一个简单的java项目NativeTest。如下:Main类的代码如下:package com.native_test;public class Main { private static native int multiply(in...
2020-05-07 16:04:05 1176 3
原创 MySql监控(普通日志、慢查询日志、Dashboard、Performance Reports等)
MySql版本:Server version: 8.0.19 MySQL Community Server图形化界面工具:MySql Workbeach 8.0 CE测试在Docker环境下进行,如何使用Docker安装Mysql,请参考我的另外一篇博客:https://blog.csdn.net/dap769815768/article/details/99588480一、普通日志记...
2020-04-28 10:42:41 1827
原创 Java的JMC和飞行记录器FlightRecord
JRE版本:oracle jre8Docker版本:docker-ce 19.03.08CentOS版本:centos8从oracle的官网来看,飞行记录器是官方很重视的一个性能分析工具,这个工具也比MAT这种东西要实用得多,也方便得多。如果你想深入研究,可以研究下官方文档:https://docs.oracle.com/javacomponents/index.html。这里需要...
2020-04-16 11:27:11 2176
原创 使用Visual Studio 19调试.net程序的dump文件
应用程序如果运行期间崩溃了,大概率是来不及记录日志的,大部分情况下,进程并不会立即退出,而是弹出一个错误的弹窗。如果错误弹窗里面的信息有限,这个时候可以利用小型转储文件进行调试,查看崩溃那一刻,程序正在干什么。转储文件就相当于快照,记录的是程序某一个时刻的状态,当程序抛出异常的时候,就会停留在抛异常的那个时刻,这个时候你如果创建转储文件,快照记录的正好是抛异常的时刻。快照有点像我们平时debug的...
2020-04-14 13:57:18 3344 6
原创 使用Oracle官方的JRE8和CentOS8镜像构建Oracle JRE镜像
Docker版本:docker-ce 19.03.08CentOS版本:centos8JRE版本:oraclejre81.到Oracle官网下载JRE8的压缩包:https://www.oracle.com/java/technologies/javase-downloads.html2.下载下来之后:选择Linux-64位的版本下载。3.下载好之后,把它解压缩...
2020-04-09 17:17:42 1168
原创 解决CentOS8安装Docker-ce报错,yum安装指定的rpm文件
按照官方的步骤尝试在CentOS8里面安装Docker-ce(https://docs.docker.com/install/linux/docker-ce/centos/),会报下面的错误:错误: 问题: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of ...
2020-04-07 14:30:48 2830 1
原创 Wireshark抓包工具的使用
对于网络请求相关的异常,抓包是一个很有效的方法,要习惯于抓包,而不是单纯地打印日志。日志能看到的是我们预想的,抓包抓到的则是意外的我们预想不到的。比如在实际生产中,常常出现程序异常崩溃的情况,这个时候往往日志是来不及记录的,如果这个崩溃是网络请求导致的,这个时候你用抓包工具,就很容易定位到问题原因。比如之前我一个同事写的程序总是在服务器停止几秒钟后崩溃,我们看了所有的日志,研究了windows的日...
2020-04-01 10:49:54 894
原创 .net core和.net framework的比较,.NET Standard
这里是官方针对这两个框架给出大方向的区别:https://docs.microsoft.com/zh-cn/dotnet/standard/choosing-core-framework-server?toc=%2Faspnet%2Fcore%2Ftoc.json&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json&view=aspnetco...
2020-04-01 09:57:53 2280
原创 C#多线程汇总
一、Thread Console.WriteLine($"主线程{Thread.CurrentThread.ManagedThreadId}start"); Thread thread1 = new Thread(() => { Console.WriteLine($"线程{Threa...
2020-04-01 09:57:35 494
原创 c#四种线程安全的懒加载单例模式(Lazy、静态内部类、CAS、双重校验)
public class SingleTon1 { private SingleTon1() { } public static SingleTon1 getInstance() { return Inner.single; } private...
2020-04-01 09:56:34 1768
原创 常见算法
实现语言:C++1.数组倒置:计算数组的首位索引start和最后一位索引end,进行循环=》交换start和end两个位置的数据=》start++,end--=》如果start>=end,循环结束,实现代码:2.冒泡排序,实现代码如下:3.链表倒置。一个单向链表,将其方向反转,然后返回新的链表的首节点。实现代码如下:4....
2020-04-01 09:56:04 155
原创 mac环境下配置VMware Fusion的CentOS网络
VMware Fusion版本:11.1.1MacOS版本:10.14.5虚拟机版本:CentOS7虚拟机的安装过程省略,安装好之后,如果网络不能正常上网,那么选择虚拟机,右键,设置,网络适配器,选择自动检测。如果这种方式无法修改,则进入到VMware Fusion界面,选择虚拟机=》网络适配器=〉桥接模式(自动检测)。然后选中虚拟机,右键,Connect to SSH。就连接上了,...
2020-03-27 22:52:04 685
原创 Java分析工具MemoryAnalyzer和JStack的使用,定位服务器内存飚高和CPU飚高的问题
1.在官网下载MemoryAnalyzer:https://www.eclipse.org/mat/2.创建一个java测试程序mat-test,写如下代码:public class CarModel { public boolean run() { try { Thread.sleep(5000); Sys...
2020-03-18 15:16:01 928
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人