Java NIO 中的 Channel 分类: FileChannel SocketChannel ServerSocketChannel DatagramChannel FileChannel: 主要用于文件的读写,可以从磁盘上读取文件,也可以向磁盘上写入文件。 SocketChannel:用于 Socket 的 TCP 连接的数据读写,既可以从 Channel 读数据,也可以向 Channle 中写入数据 ServerSocketChannel:通过 ServerSocketChannel 可以监听 TCP 连接,服务端监听到连接之后,会为每个请求创建一个 SocketCha...
之前的文章已经把 Java 中 NIO 的 Buffer、Channel 讲解完了,不太了解的可以先回过头去看看。这篇文章我们就来聊聊 Selector —— 选择器。 首先 Selector 是用来干嘛的呢?不熟悉这个概念的话我们其实可以这么理解: 把它当作 SQL 中的 select 语句,在 SQL 中无非就是筛选出符合条件的结果集合。而 NIO 中的 Selector 用途类似,只不过它选择出来的是有就绪 IO 事件的 Channel。 IO 事件代表了 Channel 对于不同的 IO 操作所处的不同的状态,而不是对 Channel 进行 IO 操作。总共有 4 种 IO 事件的定义…
前言 首先,synchronized 是什么?我们需要明确的给个定义——同步锁,没错,它就是把锁。 可以用来干嘛?锁,当然当然是用于线程间的同步,以及保护临界区内的资源。我们知道,锁是个非常笼统的概念,像生活中有指纹锁、密码锁等等多个种类,那 synchronized 代表的锁具体是把什么锁呢? 答案是—— Java 内置锁。在 Java 中,每个对象中都隐藏着一把锁,而 synchronized 关键字就是激活这把隐式锁的把手(开关)。 先来简单了解一下 synchronized,我们知道其共有 3 种使用方式: 修饰静态方法:锁住当前 class,作用于该 class 的所有实例 修饰非静…
前言 事情是这样的,在某乎的邀请回答中看到了这个问题: – 然后当时我没多想就啪一下写下来这样的答案: 这个其实要通过 MySQL 后台线程来刷的,在 Buffer Pool 中被修改的过的 Page(页)都会被标记成脏页,放到一个链表(Flush 链表)里。 然后 MySQL 通过启动后台线程,在满足条件时将 Flush 链表中的脏页刷入磁盘。 满足的条件是:脏页的数量达到了 Buffer Pool 中页数量的 **10%,当然 10% 这个值是可变的,通过配置项 innodb_max_dirty_pages_pct_lwm 来配置的,其默认值为 10%,并且这个值...
一、前言 大家如果看过我之前发过的文章就知道,我写过很多篇关于 MySQL 的文章,从我的 Github 汇总仓库 中可以看出来: 可能还不是很全,算是对 MySQL 有一个浅显但较为全面的理解。之前跟朋友聊天也会聊到,基于现有的微服务架构,绝大多数的性能瓶颈都不在服务,因为我们的服务是可以横向扩展的。 在很多的 case 下,这个瓶颈就是「数据库」。例如,我们为了减轻 MySQL 的负担,会引入消息队列来对流量进行削峰;再例如会引入 Redis 来缓存一些不太常变的数据,来减少对 MySQL 的请求。 另一方面,如果业务往 MySQL 中灌入了海量的数据,不做优化的话,会影响 MySQL 的…
关闭Mac的Microsoft AutoUpdate 最近使用Office 发现AutoUpdate一直会启动。我也不需要里面的更新。每次还要把它推出。 网上看到有两种方法,一种是暴力删除,另一种是通过权限限制。 暴力可不是我喜欢的方式,所以选择后者。 方法: 打开终端 两行命令后,输入密码就可以了。
Linux curl遇到错误curl: (3) Illegal characters found in URL
最近公司测试限速,搜集软件发现两款,iperf,LANSpeedTest. iperf,多平台. LANSpeedTest,读写显示,操作简单. 局域网测试传输,优先考虑UDP. iperf Iperf可以报告带宽,延迟抖动和数据包丢失. 官方文档 安装不写了.跳过 iperf常用参数介绍 UDP测试 TCP测试 测试结果 结果中可以看到: 30秒(-t)的测试,传递数据 70+ (-b参数), 监...
管理Hosts工具 SwitchHosts 地址: SwitchHosts 开发工程中,针对不同项目设置不同的域名. 办法很多,例如直接编辑hosts文件,通过环境工具提供的功能设置等. 现在要安利一款便捷实用的工具. SwitchHosts!! 为什么,首先这工具是多平台支持的,我们可以在不同系统中使用.如果之前是靠编辑hosts文件的话,那不同的hosts位置还需要记忆一下,当然这也算不了什么难事. 他的有点不在于能简单编辑hosts文件,也有之前的记录,还可以通过url来读取云端的hosts信息.导入导出功能等. 总之又可以偷懒了. 主界面: 我们可以编辑不同host 分组,使用时打开开…
启用组策略gpedit.msc 家庭版很多功能不能使用,凑巧用的就是家庭版. 还想使用gpedit.msc来关闭windows10的更新. 找到一个可行的方法. 需要创建一个脚本. 如果你没有编辑器,那么可以创建一个文本文档. 复制下面一段到本文中. 如果编辑器直接复制一个文档另存到XX.cmd 即可. 如果是文本文档那么就是把后缀的.txt改成.cmd. 管理员身份运行这个脚本.等他走完会退出,win+r 即可使用gpedit.msc了. 美滋滋!~ 禁用windows10更新 win+r 输入gp...
可视化图表 Grafana是一个通用的可视化工具。通过Grafana可以管理用户权限,数据分析,查看,导出,设置告警等。 仪表盘Dashboard 通过数据源定义好可视化的数据来源之后,对于用户而言最重要的事情就是实现数据的可视化。 面板 Panel Panel是Grafana中最基本的可视化单元。每一种类型的面板都提供了相应的查询编辑器(Query Editor),让用户可以从不同的数据源(如Prometheus)中查询出相应的监控数据,并且以可视化的方式展现。 Grafana中所有的面板均以插件的形式进行使用,当前内置了5种类型的面板,分别是:Graph,Singlestat,Heatma…
示例Github地址 汉化三方插件 前面说过汉化Grafana的工作。目前在7.2.1上面,大部分已经完成。细节继续完善。 今天考虑在第三方插件上做一些汉化。点到插件一看全是英文感觉很突出。领导看到了也不爽啊-.-!。 找个软的捏 饼图在展示方面比较直观。Grafana上有一个插件Pie Chart 。这个现象比较少,同时在一些模版上使用中。就拿这个热热身。 具体步骤 下载项目 项目地址:piechart-panel 文件结构: 我直接把项目clone到grafana存放插件的位置,我的grafana...