首页 文章 精选 留言 我的

精选列表

搜索[高DPI],共10000篇文章
优秀的个人博客,低调大师

PrettyZoo V1.7.0,高颜值 Zookeeper 桌面工具

PrettyZoo 是一款基于 JavaFX 实现的 Zookeeper 桌面图形化工具,不仅颜值极高,而且功能齐全,支持 Windows / Mac / Linux 等主流平台。 这次更新增加了期待已久的节点数据高亮功能。 v1.7.0 发布记录 feature: 自动检测节点数据语法并高亮显示(支持 xml / Json / properties 等语法) feature: 支持放大、缩小节点数据区域(通过双击菜单栏) bug fix: 创建新的 server 以后已连接的 server 会丢失连接状态 bug fix: 调整系统字体大小时有可能导致 server 列表项背景色透明 下载地址:https://github.com/vran-dev/PrettyZoo/releases/tag/v1.7.0 项目地址:https://github.com/vran-dev/PrettyZoo Gitee 地址:https://gitee.com/ox7c00/PrettyZoo 更多特性 支持 SSH-Tunnel 连接 支持节点 CRUD (增删改查) 支持节点数据 Pretty Format (JSON 、XML) 支持 4-Letter command 监控命令 ..... 更多详细内容请查看项目主页

优秀的个人博客,低调大师

Solus 4.2 发布,高颜值 Linux 发行版

Solus 4 “Fortitude” 系列发布了第二个重要版本更新——Solus 4.2。此版本提供了新的桌面环境更新、软件栈和硬件支持。 Solus 4.2 采用了 Linux Kernel 5.10.12,提供了许多新的和改进过的硬件支持,例如支持较新的 AMD Ryzen 第 5 代处理器(从 5600X 到 5950X);支持较新的 Intel Comet Lake CPU(如 Intel Core i9-10850K)。 除了升级内核以改进对硬件的支持,Solus 4.2 还对软件包进行了升级,以提升用户体验: Firefox 85.0 LibreOffice 7.0.4.2 Thunderbird 78.6.1 FFmpeg 4.3.1 Mesa 20.3.3 GStreamer 1.18.2 Pulseaudio 14.1 桌面环境方面,Solus 4.2 提供了最新版本的 Budgie / GNOME / MATE / KDE Plasma,并针对这些桌面环境提供了许多更新,例如为 Budgie 桌面重写了 System Tray 的实现,可更好地支持桌面图标。 详细更新内容和下载地址查看https://getsol.us/2021/02/03/solus-4-2-released/。 Solus 是从无到有创建的 Linux 发行版,可选择自产的 Budgie 桌面环境,或者 GNOME、MATE、KDE Plasma 作为桌面环境。它的包管理器 eopkg 基于来自 Pardus Linux 的 PiSi 包管理系统,并有着准滚动发行模式。 延伸阅读 Solus Linux 作者正在打造“真正现代化的 Linux 发行版”,不依赖 GNU

优秀的个人博客,低调大师

Jumpserver高可用集群部署:(三)MariaDB Galera 集群部署

MariaDB 数据库保存了Jumpserver的用户、资产、运维授权等重要配置信息,其高可靠性直接关系集群的可用性。Jumpserver官方文档要求Mariadb Server ≥ 5.5.56,由于MariaDB Galera 集群5.5.x版本Galera Server配套存在问题,实际测试10.2.x以上版本与Jumpserver存在兼容问题,故选择部署MariaDB Galera 集群10.1.x版本。 1、配置防火墙 3306:MariaDB/MySQL的服务端口4567:Galera做数据复制的通讯和数据传输端口,需要在防火墙放开TCP和UDP 4568:Galera做增量数据传输使用的端口(Incremental State Transfer, IST),需要防火墙放开TCP 4444:Galera做快照状态传输使用的端口(State Snapshot Transfer, SST),需要防火墙放开TCP firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="3306" accept" firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="4567" accept" firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="udp" port="4567" accept" firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="4568" accept" firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="4444" accept" firewall-cmd --reload 2、安装 Mariadb # 配置Yum源 vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64 gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 # 更新Yum源缓存 yum makecache fast # 安装mariadb yum install MariaDB-server MariaDB-client MariaDB-devel -y 3、修改数据存放目录至SSD磁盘 # 创建数据目录 mkdir /ssd/mariadb # 修改数据目录相关配置,datadir配置项的值设为ssd磁盘对应的目录 vi /etc/my.cnf.d/server.cnf # this is only for the mysqld standalone daemon [mysqld] datadir=/ssd/mariadb # 在新的数据目录重装安装初始化数据库 mysql_install_db # 修复相关目录权限 chown -R mysql:mysql /ssd/mariadb 4、对数据服务安全初始化配置 # 启动服务 systemctl start mariadb # 安全初始化,设置 root 密码,其他选项全部 Yes mysql_secure_installation # 停止服务 systemctl stop mariadb 5、配置启动mariadb集群 # 修改mariadb配置,启用galera相关必填的配置项 vi /etc/my.cnf.d/server.cnf [galera] # Mandatory settings wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://10.255.200.1,10.255.200.2,10.255.200.3 binlog_format=row default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 # 以下为选配选项,可根据需要配置 ,IP地址应修改为集群中各节点的实际IP地址 # 由于生产环境业务网和存储网使用2个不同的网络,服务器重启后因网卡顺序变化,会出现集群同步报错,所以通过wsrep_node_address配置指定网卡IP地址,避免使用存储网访问前面配置的业务网集群IP不通出错。 bind-address=10.255.200.1 wsrep_node_address=10.255.200.1 # 启动集群第一个节点 galera_new_cluster systemctl status mariadb systemctl enable mariadb # 启动集群其它2个节点 systemctl start mariadb systemctl status mariadb systemctl enable mariadb 6、检查集群状态 # 使用mysql客户端连接数据库 mysql -uroot -p # 显示集群里有3个节点 show status like 'wsrep_cluster_size'; # 显示连接状态ON show status like 'wsrep_connected'; # 显示集群中3个节点IP show status like 'wsrep_incoming_addresses'; # 显示节点的同步状态 show status like 'wsrep_local_state_comment'; # 显示集群同步相关所有信息 show global status like 'wsrep_%'; 7、创建Jumpserver数据库及配置授权 mysql -uroot -p # 创建jumpserver数据库 create database jumpserver default charset 'utf8' collate 'utf8_bin'; # xxxxxxxx 表示数据库密码,授权相应的IP地址及hostname访问数据库 grant all on jumpserver.* to 'jumpserver'@'10.255.200.%' identified by 'xxxxxxxx'; grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'xxxxxxxx'; grant all on jumpserver.* to 'jumpserver'@'devops01' identified by 'xxxxxxxx'; grant all on jumpserver.* to 'jumpserver'@'devops02' identified by 'xxxxxxxx'; grant all on jumpserver.* to 'jumpserver'@'devops03' identified by 'xxxxxxxx'; # 保存权限 flush privileges; 8、集群关机冷启动或者意外中断后的集群恢复 mariadb galera 集群中只要有一个节点正常运行,其它节点可正常重启。但如果集群关机冷动或者意外中断后的集群恢复时,第一个启用的节点需手动运行galera_new_cluster命令启动。 第一个启动的节点应为最后存活的主节点,方可保证数据为最新数据,不丢失数据,否则会有错误提示:[ERROR] WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 . # 通过查看状态同步日志,找出最后存活节点(也是数据最新节点) # 对比global state后的数字,数字最大的为最新节点,eg:7098 cat /var/log/message | grep "New cluster view" Oct 16 20:12:37 devops01 mysqld[4105]: 2020-10-16 20:12:37 139817132648192 [Note] WSREP: New cluster view: global state: 3c299e2c-0a33-11eb-b468-f6044560426e:7098, view# 3: Primary, number of nodes: 3, my index: 1, protocol version 3 # 在最后存活节点上修改galera状态记录文件,将safe_to_bootstrap设置为1 vi /ssd/mariadb/grastate.dat safe_to_bootstrap: 1 # 在最后存活节点上启动集群第一个节点mariadb服务 galera_new_cluster # 在另外2个节点上启动mariadb服务 systemctl start mariadb

优秀的个人博客,低调大师

每日一博 | 利用 VisualVM 分析高并发项目性能

前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择VisualVM来分析JVM性能,这篇文章就介绍一下如何利用VisualVM进行性能分析,以及在分析之前需要知道一些GC优化的原则,GC优化的目的,以及遇到问题时怎么去解决问题的方法。 1 为什么需要 开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。 VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度。 2 如何安装 这里有两种方式: 没有按照IDEA插件 如果没有按照IDEA插件的话,我们需要找到JDK的按照目录bin下找到如下执行程序。 然后双击执行,就会出现界面,如下; 但是,我们一般使用IDEA,所以会使用插件,就是下面这种方式。 按照IDEA插件 先在插件中找到VisualVM安装; 安装了之后,在运行的地方就会多出现两个VisualVM的运行按钮; 这样运行程序之后,就可以自动打开VisualVM程序了。 3 基本介绍 这一部分先对这个工具做一个简要的介绍,看看基本有哪些我们会用到的功能。 在没有添加其他插件的时候,是只有下面几个功能的。 3.1 概述 如上图所示,概述基本上都是我们的系统属性、运行程序时设置的JVM参数等信息的展示,所以,这一部分可以让我们查看这些信息。 3.2 监视 监视这个界面的功能还是很有作用的,可以看到cup运行情况、堆的使用情况、类的情况以及线程的动态情况。 因此,我们可以利用这个界面查看cpu情况好不好,更重要的是,我们可以查看堆的使用情况,这对于我们分析JVM还是非常重要的。 3.3 线程 如上图所以,可以看到所有的线程的情况,是运行、休眠、等待、驻留、监视等情况。 注意, 以上这些都不是关键,关键是VisualVM中还有一个很重要的功能,可以添加插件获取更多的功能。 3.4 插件添加 正是因为有了插件的扩展功能,所以这个工具才如此强大,VisualVM可以做到以下: 显示虚拟机进程以及进程的配置、环境信息、jps、jinfo。 监视应用程序的cpu、GC、堆、方法区以及线程的信息(jstat、jstack)。 dump以及分析堆转存储快照(jmap、jhat)。 还有很多其他的功能。 在工具->找到可用插件,安装即可。 下一部分我们就利用已经安装的插件Visual GC进行分析。 4 利用Visual GC分析虚拟机内存区域 这部分会用到一些Java虚拟机的一些基础知识,所以,查看这部分之前,请先查看这篇文章:。 在这个界面分为以下几个部分。 space(Metaspace(元数据)、Old老年代、新生代(Eden、S0、S1)) Graphs(Compile Time(编译时间)、Class Loader Time(类加载时间)、GC Time(垃圾收集时间)、Eden Space、Survivor 0、Survivor 1、Old Gen、Metaspace) Histogram(Parameters参数设置) 那么知道这些参数之后,怎么去分析虚拟机到底运行是好是坏呢,这个时候,我们需要了解一些Java虚拟机基础的优化知识。 首先,需要了解一些GC优化的原则。 多数的Java应用不需要在服务器上进行GC优化; 多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题; 在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合); 减少创建对象的数量; 减少使用全局变量和大对象; GC优化是到最后不得已才采用的手段; 在实际使用中,分析GC情况优化代码比优化GC参数要多得多; 另外,我们需要知道我们GC优化的目的。 将转移到老年代的对象数量降低到最小; 减少full GC的执行时间; 一般,我们需要执行的有以下几点; 减少使用全局变量和大对象; 调整新生代的大小到最合适; 设置老年代的大小为最合适; 选择合适的GC收集器; 至于怎么算合适,后面我会通过一个实例讲解。 其实,如果想要知道更多JVM内存分配和回收策略的原理,可以查看这篇文章:JVM内存分配和回收策略的原理。 一般我们执行了我们的程序之后,接下来就是需要查看GC的状态了,接着分析结果,判断是否需要进行优化。 一般如果达到以下的指标,就不需要进行GC了。 Minor GC执行时间不到50ms,Minor GC执行不频繁,约10秒一次; Full GC执行时间不到1s,Full GC执行频率不算频繁,不低于10分钟1次; 实例 1 我们先看一个GC状态需要优化的例子,在这个实例中,我们给堆分配的最大最小的值都是64M(很小的堆大小)。 GC状态差情况分析 /** * VM Args:-Xms64m -Xmx64m -XX:+HeapDumpOnOutOfMemoryError * @author 欧阳思海 */ public class HeapTest { static class StaticObject { } public static void main(String[] args) { List<StaticObject> list = new ArrayList<StaticObject>(); int i = 1; //不断的向堆中添加对象 while (true) { list.add(new StaticObject()); i++; System.out.println(i); System.out.println(list.size()); } } } 由于分配的堆内存太小,所以导致,堆溢出。 接着我们查看一下Visual GC的监视情况。 监视界面情况 我们可以从堆的使用情况看出,基本已经使用完。 Visual GC监视情况 从上图可知,在短短的运行时间中,Eden进行了49次GC,虽然时间短,但是能说明一个问题,新生代堆内存分配的空间太小,导致频繁GC。 同时,Old老年代也进行了33次GC,虽然运行时间也在不需要优化的范围内,而且从Survivor可以看出,基本没有GC,说明这些都是大对象,直接进入到了Old老年代,导致GC频繁。 所以,我们需要进行的优化就是加大新生代和老年代堆内存的大小,同时减少大对象的产生。 参数优化分析 我们将VM参数改为:-Xms512m -Xmx512m -Xmn128m -XX:+HeapDumpOnOutOfMemoryError,运行大概5分钟再次查看结果。 首先没有出现堆内存溢出。 监视情况 加大了堆内存,所以堆内存没有出现问题。 Visual GC监视情况 加大了堆内存之后,Eden新生代进行了66次GC,使用时间3.381s基本满足要求(执行时间不到50ms,Minor GC执行不频繁,约10秒一次),同时老年代old进行了2次GC,使用时间4.127s,这里还是有待优化的,不太满足优化要求。 dump文件分析 点击堆 dump这个按钮就会生成 dump文件,我们可以分析类及对象的一些情况。 分析之后发现,StaticObject对象大多,没有进行GC,问题主要在这里,所以,下一步需要解决这个问题。 通过以上分析可以说明一个问题,加大了堆内存之后,新生代和老年代的GC情况大大的改善了,但是还有大对象的问题,所以还有待优化。 修改大对象,进行GC 修改程序,如下: /** * VM Args:-Xms512m -Xmx512m -Xmn128m -XX:+HeapDumpOnOutOfMemoryError * * @author 欧阳思海 */ public class HeapTest { /* static class StaticObject { }*/ public static void main(String[] args) { int i = 1; while (true) { i++; System.out.println(i); } } } 监视情况 堆一直运行良好。 Visual GC监视情况 这次相对于上次相比,老年代的情况已经改善了,没有GC,说明大对象不存在了。 通过上面的分析跟优化,就满足GC的需求了,不需要再优化了。 5 总结 通过上面的分析及使用,VisualVM基本的使用以及如何利用VisualVM进行Java虚拟机优化相信你已经掌握了,如果还想了解更过关于Java虚拟机的知识及优化文章,请看本系列的其他文章。 1、原创不易,老铁,文章需要你的 点赞 让更多的人看到,希望能够帮助到大家! 2、文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,公众号已有 6W 粉丝,回复:1024,获取公众号的大礼包,公众号长期发布 Java 优质系列文章,关注我们一定会让你收获很多!

优秀的个人博客,低调大师

账户系统如何应对高并发、热点账户等问题

互联网金融系统的核心是支付结算,而支付结算的基础又是账户系统。金融账户系统的特点是并发量大、响应快、交易金额大,热点账户问题突出。一个合格的账户系统既要解决上述问题,又必须绝对保证资金安全。作为宜信这家互联网金融公司的支付结算中心,其账户系统也必须具备上述特征。 一、账户体系 1.1 账户结构 宜信支付结算账户体系是客户、用户、账户三层结构,证件号和证件类型唯一确定一个客户,客户号和机构号确定一个用户,一个用户下可开多个不同类型的账户。如图: 1.2 账户属性 账户系统的基础是账户,所有的操作都围绕着账户进行,账户包含以下一些属性: 会计科目:每个账户金额的变动要体现一些会计的属性,以便会计核算。 账户类别:分为个人账户、企业账户、平台类账户。 账户明细:账户的明细是反映账户余额变动的每笔详情,采用复式记账法,包含本对方账号、账户等信息、摘要、借

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册