开发者头条

Latest articles

JVM 进阶之路(九):性能监控工具(可视化工具篇)

在前面已经学习了JVM性能监控的命令行工具,接下来学习JVM性能监控的命令行工具,通过可视化工具可以更直观地监控JVM性能、处理JVM相关问题。1、JConsoleJConsole( Java Monitoring and Management Console),是一款基于 JMX( Java Manage-ment Extensions) 的可视化监视管理工具。它的功能主要是对系统进行收集和参数调整,不仅可以用在虚拟机本身的管理上,还可以用于运行于虚拟机之上的软件中。1.1、JConsole连接Java程序JConsole程序位于%JAVA_HOME%bin目录下,直接通过命令启动。JConsole启动和连接在新建连接对话框中,罗列了所有的本地Java应用程序,选择需要连接的程序即可。下面还有一个用于连接远程进程的文本框,输入正确的远程地址即可连接。如果一个程序需要使用JConsole与那成连接,则需要在启动Java程序时,加上以下参数:JAVA_OPTS="-Dfile.encoding=UTF-8" JAVA_OPTS="$JAVA_OPTS -Dlog.dir=$LOG_PATH" JAVA_OPTS="$JAVA_OPTS ...

一文读懂,DDD 落地数据库设计实战

作者范钢,曾任航天信息首席架构师,《大话重构》一书的作者。本文根据具体实例详细描述了DDD 落实到数据库设计的整个过程阅读本文之前建议先阅读上一篇文章《万字长文,结合电商支付业务一文搞懂DDD》过去,系统的软件设计是以数据库设计为核心,当需求确定下来以后,团队首先开始进行数据库设计。因为数据库是各个模块唯一的接口,当整个团队将数据库设计确定下来以后,就可以按照模块各自独立地进行开发了,如下图所示。在上面的过程中,为了提高团队开发速度,尽量让各个模块不要交互,从而达到各自独立开发的效果。但是,随着系统规模越来越大,业务逻辑越来越复杂,我们越来越难于保证各个模块独立不交互了。随着软件业的不断发展,软件系统变得越来越复杂,各个模块间的交互也越来越频繁,这时,原有的设计过程已经不能满足我们的需要了。因为如果要先进行数据库设计,但数据库设计只能描述数据结构,而不能描述系统对这些数据结构的处理。因此,在第一次对整个系统的梳理过程中,只能梳理系统的所有数据结构,形成数据库设计;接着,又要再次梳理整个系统,分析系统对这些数据结构的处理过程,形成程序设计。为什么不能一次性地把整个系统的设计梳理到位呢?现如今,我们已经按照面向对象的软件设计过程来分析设计...

两次被裁之后,我终于解决了数据库缓存一致性问题

我是一名毕业两年的程序员。算上实习,工作三年了,正是一个程序员的黄金时代,这让我普通而自信。但是从实习期,我就被辞退两次了。今天是我的又一场面试,而且是大厂面试。我要一洗前耻,证明自己。好了,我要赶紧出发,不然通往美好生活的996路公交车又堵了。经历过西二旗的人潮人涌之后,我按时来到了面试官面前。和面试官寒暄了几句,他直接问了一个技术问题"如果网站流量太高,我们通常会加缓存来减轻数据库压力,读缓存很简单,如下图关于写缓存,你知道怎么设计这个方案,保证缓存与数据库的数据一致性吗?"一刹那,往事涌上心头,因为我在这个问题上,已经栽了两次了。二第一次是在实习期。那年二十,刚刚工作,每日如喽啰。实习的公司是一家外包公司,没有什么技术规范,按时上线是大家最重要的诺言。我的第一个任务就是增加缓存,降低Mysql的压力。这个任务最核心的就是写缓存时怎么保证缓存和数据库的一致性,当年还是实习生的我显然没有意识到这个需求的复杂性,直接采用的方案就是先更新数据库,再更新缓存上线第二天,网站就出了Bug,我就被甲方爸爸投诉了。后来,在复盘中我才发现,网站挂了的原因是:如果同时有请求A和请求B进行更新操作,那么会出现请求B是最后请求的,那么应该是他最后更新缓...

JVM进阶之路(九):性能监控工具(可视化工具篇)

在前面已经学习了JVM性能监控的命令行工具,接下来学习JVM性能监控的命令行工具,通过可视化工具可以更直观地监控JVM性能、处理JVM相关问题。1、JConsoleJConsole( Java Monitoring and Management Console),是一款基于 JMX( Java Manage-ment Extensions) 的可视化监视管理工具。它的功能主要是对系统进行收集和参数调整,不仅可以用在虚拟机本身的管理上,还可以用于运行于虚拟机之上的软件中。1.1、JConsole连接Java程序JConsole程序位于%JAVA_HOME%bin目录下,直接通过命令启动。JConsole启动和连接在新建连接对话框中,罗列了所有的本地Java应用程序,选择需要连接的程序即可。下面还有一个用于连接远程进程的文本框,输入正确的远程地址即可连接。如果一个程序需要使用JConsole与那成连接,则需要在启动Java程序时,加上以下参数:JAVA_OPTS="-Dfile.encoding=UTF-8" JAVA_OPTS="$JAVA_OPTS -Dlog.dir=$LOG_PATH" JAVA_OPTS="$JAVA_OPTS ...

Docker 常用命令

       整理了一些 Docker 常用的基础命令。搜索镜像        使用 search 命令可以搜索存放在 docker hub 上的镜像。        命令格式如下:% docker search --helpUsage: docker search [OPTIONS] TERMSearch the Docker Hub for imagesOptions: -f, --filter filter Filter output based on conditions provided --format string Pretty-print search using a Go template --limit int Max number...

ZooKeeper 设计原理

▲ 点击上方"多颗糖"关注公众号本周学习 ZooKeeper,主要讨论以下两个问题:由于网上讨论 ZooKeeper 的内容已经非常多了,本文尽量避免重复,但一些关键的内容还是需要反复讨论:ZooKeeper 的架构和两个保证,本文还讨论一些细节的问题,但不展开讨论如何使用 ZooKeeper 进行开发。注:本文根据 6.824 教学视频和讲义整理,以论文 ZooKeeper: Wait-free coordination for Internet-scale systems 的内容为主,不讨论 Apache ZooKeeper 源码。ZooKeeper 是什么?ZooKeeper 是一个分布式协调服务,什么叫协调服务好像也比较抽象,具体来说,ZooKeeper 提供:统一命名服务配置管理成员管理Leader...

Prometheus 2.25 新特性讲解

前言Prometheus作为第二个从CNCF毕业的顶级项目,其成熟程度是毋庸置疑的,甚至推出了另一个CNCF项目OpenMetrics,希望将Prometheus的指标格式演进成为一个行业规范。更新总览在Prometheus-v2.25.0版本中更新一览:[实验性功能]支持remote_write请求,默认不启用,启用需要启动参数指定--enable-feature = remote-write-receiver  [实验性功能]新增'@'修饰符,默认不启用,启用需要启动参数指定--enable-feature = promql-at-modifier[增强]完善测试案例testgroup添加name属性  [增强]UI界面上添加警告相关信息[增强]加大压缩Histogram类型metrics的存储存储桶数,由512增大到8192...

Android 逆向之逆向工具

Android逆向可能会用到的的工具整理,包括root、hook、apk反编译、脱壳、网络分析、反汇编、Magisk模块、Xposed模块等方面。 root root具有系统中的最高权限,能够帮助用户越过手机制造商的限制,得以卸载本身预装的程序,或运行需要系统权限的动作。因为Android的内核为Linux,安卓root实际上就是取得Linux的root用户权限。 一般出厂机器会禁用常规Bootloader的直接刷机功能,因此实现root一般都要先解锁BL,每个厂商解锁BL方式和难度都不同,小米官方提供了解锁BL工具。 是台湾学生topjohnwu开发的一套用于定制Android的开源工具,涵盖了root、引导脚本、SELinux 修补、移除 AVB2.0、强制加密等功能,支持版本为Android4.2...

商业银行安全架构设计实践

本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作!欢迎各位添加微信号:asj-jacky加入安世加 交流群 和大佬们一起交流安全技术一、重申以业务为中心的安全目标安全架构设计人员首先要了解银行业务,尽管银行业务不断推陈出新,但基本的业务流程变化不大,比如我们从客户旅程的角度针对零售类业务总结了以下流程: 如上图所示,其中交易包括存款类、贷款类、汇款类和中间业务类等交易,可以说我们日常安全需求分析和设计申请多数来源于上述这些类型的业务需求。安全架构设计的目标并不是要求业务零风险上线,而是通过引入领先的安全技术能力和构建灵活的纵深防御体系,帮助业务在机会和风险中间取得平衡,最终赢得客户和市场。二、应用系统风险生命周期管理线上应用系统的安全事件除可能对银行自身及客户造成损失外,处理安全事件的过程同样费时费力,成本高昂。为了减少生产事件数量,我们自然很希望在系统上线前即保证其对风险免疫。应用系统的建设过程如同养娃,而系统上线则是将娃养大成人后推向社会,最终成为能够修身,齐家,治国,平天下的有用之人,当然这一切...

5 分钟搞定 B 站答题成为正式会员,每天自动刷经验值升级账号

苏生不惑第225 篇原创文章,将本公众号设为星标,第一时间看最新文章。文章开始前说下之前文章2021 微信运动一键刷步数,让你成功占领封面 有人问为什么修改后不生效,注意解压后有个txt文件不能删。关于b站之前已经写过很多文章了:b 站账号快速升级到 Lv6:每天自动签到,观看,分享,投币视频bilibili(b站)升级到BV号了,还想用av号怎么办?如何更优雅地使用 bilibili(b站)想方便快捷的分享/收藏图片?试试免费好用的微博/b站图床如何找回bilibili(b站)收藏夹里失效的视频?如何免登陆观看b站大会员番剧借用 potplayer 播放器,在本地播放 b 站视频也能看弹幕了下载b站外挂字幕,用 potplayer 播放视频也能看字幕了建了个微信交流群,和我一起在 b 站学...

Discover, share and read the best on the web

Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!