- 博客(745)
- 资源 (57)
- 问答 (5)
- 收藏
- 关注
原创 知识学习之道
1、看懂了和能自己写下来不是一回事,看懂了未必能写下来,写下来和能和别人讲述清楚又不是一回事,能自己写下来未必能跟别人讲明白,能跟别人讲明白是最高境界;2、书读百遍,其意自现,无论是书籍还是技术文档,一定要多读,并且学而时习,每一次学习一般都会有新的理解。...
2020-10-06 10:36:53 308
原创 软件开发之道
1.务必仔仔细细看清该技术的技术文档,切忌概览;2.对于较难理解的,一定要多看,这个多看不仅仅指一遍遍的阅读技术文档或代码,而且也可以理解为不止某一天看,因为有些知识需要消化,当时看过之后未必能够消化掉,因为需要多看几次、多看几天,还有一个原因就是,在学习时有时会陷进去,而此时可以先放下,理清思绪,或者暂时先不理,等到有时间再处理;3.对于某些难以理解的算法,借助画图来理解是一种有效的辅助...
2019-09-10 10:37:46 567
原创 软件开发准则
数据库1.数据表、数据字段一定一定一定要加注释;2.严禁使用数据库保留字段(user、name、type就是保留字段),如果要使用,必须加上符号`,例如:`user`(英文状态下Esc下面的键即可打出符号`);Java1.接口中要打印前端传入的参数和返回的数据,方便查看日志、恢复数据。2.日志打印用日志工具类打印,不要用System.out.println()打印,因为在服务...
2019-05-08 14:58:47 654
原创 springcloudalibaba
Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云-阿里云Spring Cloud Alibaba官网
2024-09-06 13:31:27 78
原创 docker compose入门
https://www.cnblogs.com/crazymakercircle/p/15505199.html
2024-09-03 08:02:47 424
原创 Golang Gin 获取Restful参数、URL查询参数,Form 表单参数,JSON格式参数
https://www.cnblogs.com/shuiche/p/17812266.html
2024-08-19 20:38:49 94
原创 go语言中map、slice、chan底层数据结构是怎样的
slice:runtime包下的slice中的slice。chan: runtime包下的chan中的hchan。map:rutime包下的map中的hmap。
2024-08-18 20:53:05 345
原创 go语言中new和make的区别
也就是说,make是用来初始化go中map、slice、chan的特有方法,它既会给对象分配内存,也会初始化对象。但是new不会,new只会单纯给对象分配内存。我自定义了一个MyMap,通过new初始化后,往这个map的SingleMap里添加元素的时候报错了,因为SingleMap还没有初始化。可以看到,执行make map的时候,底层会调用makemap方法(slice和chan也有各自的make方法)找到map源码,找到makemap方法。
2024-08-18 20:48:05 394
原创 go语言中new和make的区别
在 Go 语言中,new函数不能用来创建通道(chan),这是因为new只分配内存并返回指向该内存的指针,而不负责初始化内存。
2024-08-18 18:31:14 300
原创 如何搭建redis哨兵集群
进到master(6380)容器,连接redis,使用info replication命令查看集群状态。redissentinel.conf配置模板。6381,6382,6383节点配置方式同。redis.conf配置模板。
2024-08-18 15:29:15 232
原创 Dockerfile常用指令详解
Dockerfile 是一个用于定义 Docker 镜像构建过程的脚本文件,其中包含了一系列指令,用于指定如何构建和配置镜像。
2024-08-18 12:27:18 449
原创 Linux设置yum源为阿里云镜像源
如果ping不通,则找一台可以连接外网的电脑,ping一下mirrors.aliyun.com,找到mirrors.aliyun.com对应的ip。五、查看yum源信息,已经更换为了阿里云镜像源。三、下载阿里云Centos-7.repo文件。一、验证网络是否可以连接阿里云镜像。
2024-08-17 10:07:22 807
原创 prometheus数据如何清理
除了数据块,Prometheus 还使用 Write-Ahead Log (WAL) 文件来临时存储最近的数据,在wal目录下,必须选择删除这些文件,但要谨慎操作,Prometheus 将数据分块存储,每个块对应一个时间段。你可以通过查看目录中的时间戳来找到需要删除的数据块。2. 进到prometheus数据目录。1. 停止prometheus服务。3.1 删除持久化的数据块。
2024-08-16 20:18:58 357
原创 生产环境jvm oom问题如何排查
通过这些步骤,可以有效排查和解决生产环境中的 OOM 问题,确保应用程序在高负载下的稳定性。: 如果 JVM 仍然在运行,可以使用。
2024-08-16 07:34:30 454
原创 envoy xds有哪些类型,分别表示什么意思
Envoy 使用 XDS(eXtensible Discovery Service)来动态配置代理的各种方面。XDS 配置通过不同类型的资源来管理 Envoy 的行为。
2024-08-15 20:43:25 357
原创 生产环境Java应用有哪些必须要设置的jvm参数
在生产环境中运行 Java 应用时,设置合适的 JVM 参数对于性能、稳定性和可维护性至关重要。
2024-08-15 08:08:29 330
原创 tcpdump入门——四次挥手
你抓到的包显示了一个优化的四次挥手。在这种情况下,客户端和服务器各自的FIN包和对前一个FIN包的ACK一同发送,导致你看到的包中包含了[F.]标志位而不是单独的F或标志位。这是一种常见的 TCP 优化,减少了需要发送的包的数量,同时仍然遵循了 TCP 的协议要求。这种优化是在客户端和服务器都没有更多数据要发送时发生的,因此它们的FIN和ACK包可以合并,节省了一个数据包的传输。这种优化仍然符合 TCP 的四次挥手过程,只是减少了一个数据包。
2024-08-14 08:07:03 531
原创 tcpdump入门——基本功能概述
tcpdump是一个强大的命令行抓包工具,广泛用于网络流量的捕获和分析。以下是详细的入门级讲解,帮助你理解如何使用tcpdump。
2024-08-14 07:01:28 388
原创 tcpdump入门——抓取三次握手数据包
使用 nsenter 命令进入容器的网络命名空间。在 ip link 命令的输出中,容器的网络接口名称通常是以 eth 开头的,例如 eth0。使用 ip link 命令列出主机上的所有网络接口,并找到 veth 开头的接口即为容器在主机上的网络接口。首先,你需要获得容器的进程 ID(PID)。这个命令会列出容器内部的所有网络接口信息。lo 是容器的回环接口,不用于外部通信。eth0 是容器内的网络接口名称。这个命令将返回容器的 PID。
2024-08-13 22:40:14 553
原创 文件描述符是什么,线程个数为什么受文件描述符限制?
文件描述符是操作系统用于管理文件和I/O资源的重要机制,线程本身不直接消耗文件描述符,但线程执行的任务(如文件操作、网络连接)会消耗文件描述符。在高并发场景下,大量线程可能间接导致文件描述符的耗尽,从而影响系统性能和稳定性。文件描述符(File Descriptor,FD)是操作系统用于访问和管理文件的一个抽象概念。每个打开的文件、网络连接、管道、设备等,都对应一个唯一的文件描述符。文件描述符是一个整数,用于标识一个已经打开的文件或输入/输出资源。操作系统对每个进程能够打开的文件描述符数量通常是有限制的。
2024-08-10 19:50:28 409
原创 synchronized如果没有实现偏向锁,直接使用重量级锁,会怎么样?
如果 JVM 没有实现偏向锁,并且增加锁开销: 在所有情况下使用重量级锁会增加线程的阻塞和唤醒开销,尤其是在低竞争的情况下。资源浪费: 在没有竞争的情况下,重量级锁的开销是冗余的,会浪费系统资源。性能退化: 高负载情况下,频繁的锁操作会导致系统性能退化,降低应用的吞吐量。偏向锁的引入主要是为了优化在没有竞争的情况下的锁开销,提高系统的整体性能。它通过减少锁操作的开销,减少了上下文切换和资源浪费,从而在多线程环境中提高了应用的效率。
2024-08-10 19:11:15 390
原创 synchronzed为什么要升级为重量级锁,轻量级锁不好吗?
轻量级锁: 主要用于减少在没有竞争的情况下的锁开销,通过自旋机制快速获取锁。适用于锁竞争较少的情况。重量级锁: 主要用于处理高竞争情况,通过操作系统的线程调度机制管理锁的获取和释放。适用于锁竞争激烈的场景。轻量级锁和重量级锁各自有其优点和适用场景。JVM 通过动态调整锁的级别(从轻量级锁升级到重量级锁),以适应不同的竞争情况,从而在不同的应用场景中实现最佳的性能。
2024-08-10 19:04:15 260
原创 synchronized重量级锁的实现原理是怎样的
重量级锁: 用于在高竞争情况下确保线程同步,涉及线程的阻塞和唤醒。操作系统同步机制: 使用互斥量、信号量等操作系统原语来实现锁的获取和释放。上下文切换: 当线程被阻塞时,操作系统会进行上下文切换,带来较大的开销。锁的升级和降级: 锁可以从轻量级锁升级为重量级锁,也可以在竞争减少时降级为轻量级锁。重量级锁通过操作系统层面的线程调度机制来处理高竞争的同步问题,但会带来相对较大的性能开销。
2024-08-10 19:02:30 786
原创 synchronized自旋时间是多久呢?什么情况下会升级为重量级锁
自旋时间: 自旋时间由自旋次数决定,通常为短时间内的多次自旋,JVM 可以根据实际运行情况动态调整。锁升级: 轻量级锁会在自旋超时、线程竞争激烈或锁持有时间较长时升级为重量级锁。
2024-08-10 18:59:38 763
原创 Java中synchronized的轻量级锁是如何减少锁开销的
轻量级锁: 旨在减少线程之间的锁开销,特别是在锁竞争不激烈的情况下。自旋机制: 通过自旋等待锁的释放来避免线程上下文切换的开销。锁记录: 通过锁记录数据结构来管理锁的状态和竞争信息。性能优化: 适用于短时间锁竞争的场景,通过减少上下文切换和系统调用开销来提高性能。轻量级锁通过在竞争不激烈的情况下优化锁的获取和释放,从而提高程序的整体性能和效率。
2024-08-10 18:58:26 881
原创 Java中synchronized的偏向锁是如何减少锁开销的
偏向锁: 主要用于减少在没有锁竞争时的开销。对象头中的 Mark Word: 用于记录持有锁的线程 ID,从而优化锁的获取和释放。锁竞争和撤销: 当检测到锁竞争时,偏向锁会被撤销并升级为轻量级锁,优化锁的性能。偏向锁通过在没有竞争的情况下减少同步开销,从而提高程序的执行效率。
2024-08-10 18:52:04 950
原创 Java中synchronized的锁升级是什么?
锁升级的目标: 提高同步的性能,减少开销,适应不同的锁竞争情况。主要应用: 锁升级机制主要是针对关键字的,优化其在多线程环境中的同步操作。优化效果: 锁升级机制使得 JVM 能够在不同的竞争条件下选择最合适的锁类型,从而提高程序的性能和吞吐量。
2024-08-10 18:48:31 303
原创 Java对象头里有哪些信息
Java 对象的对象头包含了用于对象管理和同步的各种信息。它主要包括Mark Word和。Mark Word用于存储对象的状态信息,如哈希码、锁信息和 GC 信息,而指向对象所属的Class对象。这些信息是 JVM 内部实现对象管理、同步和垃圾回收等功能的基础。
2024-08-10 18:33:06 455
原创 Java中synchronized支持重入吗?
Java 的关键字支持重入性。通过使用内置的锁机制,确保同一个线程可以多次获得同一把锁,从而允许在同一个锁保护下进行递归调用和方法嵌套。这种特性是线程安全的重要保障,使得在实现多线程程序时,能够简化代码并避免死锁问题。
2024-08-10 18:15:16 354
原创 ReentrantLock的可重入体现在哪方面?
的可重入性是其一个重要特性,它允许线程在持有锁的情况下,重复获取同一把锁,而不会导致死锁。这个特性在多线程编程中非常有用,尤其是在递归调用和分层方法调用的场景下。
2024-08-10 18:08:41 390
FiddlerSetup.zip
2019-07-16
OBS-Studio
2018-12-22
kibana-6.4.2-x86_64
2018-10-22
kibana-6.4.2-windows-x86_64
2018-10-22
kibana-6.4.2-linux-x86_64
2018-10-22
centos7修改语言环境支持中文总失败
2018-03-24
struts2 Session生命周期
2017-12-14
php创建类的方法 php菜鸟一枚 请问这行代码是什么意思?
2017-05-01
Android中如何无损保存BitMap文件?
2017-03-10
Java如何调用打印机打印本地文档
2016-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人