Archived

「 171 」

  • 一月 2023

  • 一月 29, 2023
    想知道你的公众号昨日都有哪些文章被阅读了吗?

    在微信公众平台中,提供了前一日 00:00 ~ 24:00 的阅读、分享、关注数统计,如: 但当我们想知道这个昨日阅读的次数,分别是由哪些文章产生的,每篇文章新增了多少阅读量时,无论桌面端的微信公众平台还是移动端的订阅号助手,都无法给出我们这个明细数据。 如果能有这样一个统计每天推送过来就好了: 快速体验加入钉钉群使用钉钉扫描下方二维码,申请加入钉钉群,以便接收阅读量统计消息。 向 周...

  • 一月 15, 2023
    《大教堂与集市》书摘

    豆瓣评分 8.4:https://book.douban.com/subject/25881855/ 译者序 Eric在本书中向大家展示了两种最为经典且截然不同的模式:大教堂模式和集市模式。传统大型软件公司的开发模式就像是艰难而缓慢的大教堂建造工程,它有着严密的管理和封闭的集中式结构,但在创新上、生产力上和Bug控制上却落后于集市模式。集市模式是一种并行的、对等的扁平化开发结构,其参与者大多...

  • 一月 08, 2023
    markdown 写微信公众号,排版交给 mdnice

    mdnice墨滴软件( https://product.mdnice.com/ ),提供了以面向微信公众号内容排版为主的辅助工具 Markdown Nice,效果堪称完美,极大的提升了发布微信公众号文章的效率。 使用其在线编辑器( https://editor.mdnice.com/ ),可在左侧编辑 markdown 内容时,右侧实时预览发布到公众号的效果,并包含多种主题可供选择和切换。 ...

  • 一月 01, 2023
    《Linux in Action》书摘

    Chapter 1: Welcome to Linux1.2 Basic survival skills1.2.1 The Linux file system UNIX Filesystem Hierarchy Standard (FHS) Figure 1.2 Common top-level directories as defined by the UNIX FHS 1.2.3 Ge...

  • 十二月 2022

  • 十二月 25, 2022
    TiDB 数据库管理 [TiDB v6](303)笔记

    在线学习地址:https://learn.pingcap.com/learner/course/1110001 软件包下载地址:https://cn.pingcap.com/product-community/ Lesson 01 TiDB Cluster 部署 TiUP 是从 TiDB 4.0 引入的包管理器 TiUP 在执行时,命令 和组件 < component > 可以...

  • 十二月 18, 2022
    基于 KubeSphere 的运管系统落地实践

    作者:任建伟 @weiliang-ms 首发于:https://mp.weixin.qq.com/s/d5a9uGpdM4sAdCQ461FbYg 背景介绍接触容器化之前,我们应用一直基于虚拟机运管,由开发人员自行维护。 由于面向多开发部门服务,而开发人员运维能力参差不齐,导致了每次部署新的环境时往往耗费大量时间。 针对部署难的问题,我们将部分组件、服务容器化,采用 Docker 发布管理解...

  • 十二月 11, 2022
    用 Go 构建全平台命令行工具

    Write once, run anywhere 是 Sun 1995 年为宣传 Java 语言的跨平台特性而提出的口号。 然而了解 Java 的人都知道,这个 run anywhere 是以目标环境存在 JVM 为前提的。当我们希望构建一个可以 run anywhere 的命令行工具时,Java 显然不是最好的选择。 Golang作为一个更加简洁、现代的编程语言,Golang 可以通过指定...

  • 十二月 04, 2022
    为非全局路径配置 Filter 的两种方法

    原文地址:https://wyiyi.github.io/amber/2022/12/01/filter-note/ 一、@WebFilterFilter 上加 @WebFilter (javax.servlet.annotation.WebFilter),指定 value,启动类加 @ServletComponentScan 【注意】:@ServletComponentScan 这个注解仅...

  • 十一月 2022

  • 十一月 27, 2022
    【转】理解inode

    原文地址:https://ruanyifeng.com/blog/2011/12/inode.html 作者:阮一峰 一、inode是什么?理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”...

  • 十一月 20, 2022
    K8s 中的 MySQL 频繁重启问题调查

    现象K8s 集群中部署了一个 MySQL 实例,使用过程中发现,由于配置了健康检查,健康检查频繁失败,导致容器被频繁重启,无法提供稳定的 MySQL 服务。 MySQL 日志中的相关报错信息如下: [ERROR] Can't create thread to handle new connection(errno= 11) 在重新启动后,能够正常使用一小段时间,之后就会报出这个错误,...

  • 十一月 13, 2022
    【转】Linux Cgroup系列(03):限制cgroup的进程数(subsystem之pids)

    原文地址:https://segmentfault.com/a/1190000007468509 作者:public0821 上一篇文章中介绍了如何管理cgroup,从这篇开始将介绍具体的subsystem。 本篇将介绍一个简单的subsystem,名字叫pids,功能是限制cgroup及其所有子孙cgroup里面能创建的总的task数量。 注意:这里的task指通过fork和clone函...

  • 十一月 06, 2022
    TiDB 数据库核心原理与架构 [TiDB v6](101)笔记

    在线学习地址:https://learn.pingcap.com/learner/course/960001 TiDB 数据库架构Lesson 01 TiDB 数据库架构概述 TiDB 整体架构:TiDB Server、TiKV、TiFlash、PD TiFlash 是 TiKV 的列存版本,并参与复制,保持数据一致 PD(Placement Driver) 节点记录数据在哪些 TiKV ...

  • 十月 2022

  • 十月 30, 2022
    《Istio in Action》书摘

    Chapter 1. Introducing Istio Service Mesh1.4 Pushing these concerns to the infrastructure1.4.3 Meet Envoy proxy Envoy gives us networking capabilities like retries, timeouts, circuit breaking, clie...

  • 十月 23, 2022
    《Kubernetes Patterns》书摘

    Chapter 1. IntroductionDistributed Primitives Local and distributed primitives Annotations Another primitive very similar to labels is called annotations. Like labels, annotations are organized as...

  • 十月 15, 2022
    黑客松云原生赛道初赛程序设计分享

    题目2Core / 4GB 的总资源限制内,在容器中运行一个基于文本日志文件的统计分析程序,统计发表评论最多的前10位用户,并按顺序返回用户名、该用户的评论次数、该用户不重复的评论数量以及最近发表评论的时间。 按照评论次数由多到少进行排序 当用户评论次数相同时,将内容不重复的评论数量较多的用户排在前面 当“用户评论次数”与“不重复的评论次数”均相同时,以“最近发表评论的时间”排序,内容较新...

  • 十月 09, 2022
    MapStruct - Java bean 映射,简单的方法!

    应用程序通常需要在不同的对象模型(例如实体和 DTO)之间进行映射,如:在前后台传输过程中,持久层定义的实体类经常需要映射到其它的对象模型进行相互转换。 MapStructMapStruct 是一个代码生成器,在不同的对象模型(例如 实体 和 DTO)之间进行映射,它基于约定优于配置的方法,极大地简化了 Java bean 类型之间的映射实现。 MapStruct 是一个 Java 注释处...

  • 十月 02, 2022
    【转】跨域(CORS)问题分析与解决方案

    原文地址:跨域(CORS)问题分析与解决方案 复现场景新创建一个 VUE 工程,使用 fetch 函数(如下所示) 调用后台 GET 接口,希望能够在后台获得到响应。 fetch('http://127.0.0.1:8080/api/amber/userinfo/hello') .then(response => response) 当浏览器访问:http://12...

  • 九月 2022

  • 九月 25, 2022
    【转】bpmn和cmmn与dmn结合举例

    原文出处已无从考证,流传的比较广的是 csdn 上这个版本,应该是 盘古BPM 翻译的 Camunda 的文章。 上图出自:http://www.bpm-guide.de/wp-content/uploads/2016/07/camunda_poster_en.pdf 我们演示这三个标准的场景来自保险行业。它被简化了,但它代表了我们反复遇到的各种现实生活情况。注意,这里使用的模型不仅仅...

  • 九月 18, 2022
    GitBook 本地使用排雷,及导出基本可用的 PDF 版本

    GitBook 简介GitBook 是一个现代的文档平台,提供了基于 Markdown 等方式的在线协作编辑文档方式,并可以方便的通过浏览器阅读文档内容。 有大量的公司、开源项目等,都在使用,如 GitBook 自己的文档、Fluent Bit 等。 GitBook 团队曾经还提供过一个离线的命令行工具和 Node.js 类库 - gitbook,用来在本地离线环境使用 Markdown 或...

  • 九月 11, 2022
    【转】Java 线程状态之 TIMED_WAITING

    原文地址:https://xiaogd.net/md/java-线程状态之-timed_waiting 目录 定义 timed_waiting 的场景 虚假唤醒(spurious wakeup) sleep 时的线程状态 BLOCKED 和 WAITING 状态的区别和联系 总结 在上一篇章中我们谈论了 WAITING 状态,在这一篇章里,我们来看剩余的最后的一个状态:TIMED_WAI...

  • 九月 04, 2022
    【转】Java 线程状态之 WAITING

    原文地址:https://xiaogd.net/md/java-线程状态之-wating 在上一篇里我们讲了一个重要状态:BLOCKED,在这一篇章里,我们来看另一个重要的状态:WAITING(等待)。 定义一个正在无限期等待另一个线程执行一个特别的动作的线程处于这一状态。 A thread that is waiting indefinitely for another thread ...

  • 八月 2022

  • 八月 28, 2022
    【转】Java 线程状态之 BLOCKED

    原文地址:https://xiaogd.net/md/java-线程状态之-blocked 目录 BLOCKED 状态的定义 进入(enter)同步块时阻塞 wait 之后重进入(reenter)同步块时阻塞 总结 在上一篇中,我们强调了 BLOCKED 状态跟 I/O 的阻塞是不同的,它不是一般意义上的阻塞,而是特指被 synchronized 块阻塞,即是跟线程同步有关的一个状态。 ...

  • 八月 21, 2022
    【转】Java 线程状态之 RUNNABLE

    原文地址:https://xiaogd.net/md/java-线程状态之-runnable 目录 什么是 RUNNABLE? 与传统的 ready 状态的区别 与传统的 running 状态的区别 当 I/O 阻塞时 如何看待 RUNNABLE 状态? 在上一篇我们粗略谈到了 Java 的 6 种线程状态,并对其中较为简单的 NEW 和 TERMINATED 做了分析,现在我们具体来看...

  • 八月 14, 2022
    《Go in Action》书摘

    1 Introducing Go1.1 Solving modern programming challenges with Go1.1.2 Concurrency Channels help to enforce the pattern that only one goroutine should modify the data at any time. … channels are us...

  • 八月 07, 2022
    解决Mybatis-Plus更新对象时字段更新为空值的问题

    问题mybatis-plus(简称:mp)执行更新操作,将某些字段值置为 空 或者 null,持久层执行后,需要更新为空值的字段仍然保持原本的值。显然和我们预期的结果不一致。 我们可以参照以下三种方案处理 mp 执行更新操作空值的情况。 方案一:注解方式针对实体类中字段的注解,在 mybatis-plus 的 @TableField有 FieldStrategy-字段验证策略 和 Field...

  • 七月 2022

  • 七月 31, 2022
    态马商战复盘

    态马商战简介 TechMark是一种形式新颖的创新的管理培训课程,它凭借强大的计算机系统创造了一个仿真度极高的商业竞争环境,为学员带来集知识性、趣味性、仿真性和实践性为以一体的商战训练。 —— TechMark是什么 在态马商战(TechMark)的世界里,有三种虚拟产品,三个模拟地区,参与者分组成立临时公司,以相同的起点起步,在两天一晚的时间里,根据已知的信息和 TechMark 系统计...

  • 七月 24, 2022
    Java 线程状态介绍

    JVM 中的线程,有六种状态,定义在 java.lang.Thread.State 枚举类中,从 1.5 版本开始,至目前最新的 17、18,基本没有变化。 先来看一下 Java Doc 中对这六种状态的描述: 注意下面那句话: A thread can be in only one state at a given point in time. These states are vir...

  • 七月 17, 2022
    ApacheBench 简介

    ApacheBench 简称 ab,是 Apache HTTP Server 中的一个性能测试工具,可单独安装,在命令行中直接使用,可基于 HTTP 接口对任意 HTTP 服务器进行性能测试,得到每秒请求数(RPS)、平均请求响应时间等性能指标。 安装Ubuntu/Debian$ sudo apt-get update $ sudo apt-get install -y apache2-u...

  • 七月 10, 2022
    【转】Spring 之 Interceptor

    原文地址:https://wyiyi.github.io/amber/2022/07/01/interceptor/ 什么是拦截器在 Spring Web MVC 中,拦截器(Interceptor)同 Servlet 中的过滤器(Filter) 类似,都可以实现对用户的请求做出相应的处理。 所有 HandlerMapping 的实现都支持处理程序拦截器,当想将特定功能应用于某些请求时很有用...

  • 七月 03, 2022
    FastDFS 性能测试

    FastDFS 简介FastDFS 是一个开源的分布式文件存储系统。 FastDFS 类似 Google FS,属于应用级文件系统,不是通用的文件系统,只能通过专有 API 访问。 —— FastDFS架构及特点介绍 代码库中相关文档并不是很多,可以关注上面链接中的作者公众号(FastDFS分享与交流)或微信(fastdfs)了解更多信息。本节大部分内容也摘自作者公众号中的文章 Fast...

  • 六月 2022

  • 六月 26, 2022
    《Kubernetes in Action 中文版》书摘

    译者序 现在,我们在七牛内部全面推广和应用 Kubernetes,不仅把无状态服务运行在 Kubernetes 中,也把有状态服务比如数据库运行在 Kubernetes 中,正如使用 GoLang 提高了我们的开发效率一样,使用 Kubernetes 大大提高了我们的部署和运维效率。 1 Kubernetes 介绍1.2.1 什么是容器 如果多个进程运行在同一个操作系统上,那容器到底是怎样...

  • 六月 19, 2022
    Kafka 性能测试

    Kafka 自带脚本简介在 Apache Kafka 安装目录的 bin 路径下,包括启停服务在内的很多脚本。这些脚本能够帮助我们完成对 Kafka 的各类操作,其中就有对生产者和消费者进行性能测试的工具。 脚本分为两个版本:Linux 下执行的 Shell 脚本,以及 Windows 下执行的 bat 脚本。 以 Shell 脚本为例,可以查看脚本内容,除了停止 ZooKeeper 和 K...

  • 六月 12, 2022
    【译】深入了解 Apache Kafka 存储内部

    英文原文:Deep dive into Apache Kafka storage internals: segments, rolling and retention 作者:Paolo Patierno Apache Kafka 采用类似提交日志的方式处理消息的存储。消息一个接一个的追加在每个日志的末尾,每个日志也会被分成段。分段有助于删除较旧的消息记录及提高性能等。所以,日志是一个由段(文...

  • 六月 05, 2022
    用好 App Store

    苹果的应用通常都需要通过 App Store 下载,使用 App Store 需要 Apple ID。 如果你还没有 Apple ID,或是从一个国家或地区到了另一个,需要登录当地的应用商店下载符合当地法律法规的应用,可以通过 https://appleid.apple.com/account 来创建您的 Apple ID。 创建账号创建账号时,需要使用未注册过 Apple ID 的有效电...

  • 五月 2022

  • 五月 29, 2022
    异常识体验 —— 一次联通宽带故障触发的感受

    背景某日家中使用的联通宽带突然无法上网,在故障排查和维修的过程中,体会了一下联通所谓 “百倍用心,10分满意” 的服务。 古人云:以人为镜,可以明得失。希望作为用户时体会到的痛,能够给我们以警示,使用户使用我们设计的系统时,不会有类似的糟糕感受。 经验先说几个为了解决这次故障所获得的经验吧,可能会对遇到类似问题的朋友有帮助: 路由器中可能会带有故障检测工具,里面提供的故障信息有助于问题定位...

  • 五月 22, 2022
    使用 Postman 进行系统可接受性测试

    在微服务架构盛行的今天,一套系统涉及到的组件数量是非常庞大的,这不仅增大了系统部署的难度,也提出了一个在系统部署完成后如何进行基本的可用性检查这样一个问题。 有人可能会说我们有完善的测试用例,有专门的测试团队,这完全不是问题,那么问题来了: 人工执行的测试用例,通常需要执行人具备一定的专业测试技能及责任心;自动化测试用例则不仅有更高的技能要求,对测试工具及环境也有依赖; 测试团队的资源是有...

  • 五月 15, 2022
    使用 Alibaba Druid 进行 SQL 翻译

    Alibaba Druid Alibaba Druid 是阿里云计算平台 DataWorks 团队出品,为监控而生的数据库连接池。 Apache 旗下也有一个 Apache Druid,是一个高性能的实时分析数据库。 本文提到的 Druid,指 Alibaba Druid。 Druid 其实是一个 JDBC 组件库,不仅包含数据库连接池组件,还有 SQL Parser 等组件,被大量业务和技...

  • 五月 08, 2022
    MySQL 脚本转 H2

    MySQL引用 MySQL 官网 的介绍: The world’s most popular open source database 只要接触过数据库,应该就知道 MySQL,现行的两个主要版本为 5.7 和 8.0,本文主要关注通常所说的 SQL 脚本,即 SQL Statements,两个版本的文档链接如下: SQL Statements version 5.7 SQL Stat...

  • 五月 01, 2022
    JavaCC 实战

    JavaCCJava Compiler Compiler (JavaCC) 是一个语法解释器生成工具,可以读取语法规则,并将其转换为能够识别这些语法的 Java 程序。 比如通过 Java 程序解析 Structured Query Language (SQL)。 语法规则使用类似 如何描述一种语言? 中介绍的 EBNF 规范进行描述,组织为 .jj 格式的文件。 JavaCC 发布包是 J...

  • 四月 2022

  • 四月 24, 2022
    如何描述一种语言?

    如何描述一种语言当我们需要定义一种语言的规范或语法时,需要将这种语言通过一种形式描述出来,用普通的文字来描述,会非常的繁琐,那么有什么工具来帮助我们描述这种语言的规范呢? BNFBNF 就是一种描述语法的规范,是 Backus–Naur form 或 Backus normal form 的缩写,其形式非常简单: <symbol> ::= __expression__ 在这里:...

  • 四月 17, 2022
    写测试用例都这么简单了,你不来试试?

    测试用例提到测试,所有人都知道它的重要性,但大部分开发人员都会觉得测试应该交给测试人员来做,或者直接到环境上执行一下、点一点看看没有问题就可以了。 究其原因,个人觉得是因为写单元测试的成本太高了,尤其是对外部环境依赖较多的项目,开发环境想运行起来都要依赖特定的组件,就更别提测试用例的运行了。 一个好的测试用例,应该是自动化的、可重复执行的,容易理解、容易运行的,且有明确的断言,以便在代码出现...

  • 四月 10, 2022
    24 个沟通套路,让你一开口就大受欢迎

    【认知天赋】这个世界,还要误解内向者多久?内向的你,令人垂涎的 6 大特质!产品力:解决问题、创造价值的能力 高感性特质 结构整理力 共情力 领导力:与人沟通协作的能力 专注力 倾听能力 意义感 如何运用自己的特质,在人群中脱颖而出两个方法: 用 升维打击 去发挥 解决问题 —— 挖掘自己的特质,最重要的方法 为什么成功的人里,超过七成的都是内向者 因为他们总是能洞察人性,设计出...

  • 四月 03, 2022
    微信公众号功能介绍

    公众号里积累了一些由用户主动发送消息触发的实用功能,因为都需要特定关键词触发,对记忆力有一定的考验,汇总如下,以便使用。 源远流长字帖关键字:字帖、字帖1 发送关键字 + 空格 + 文字内容,可将文字内容(去标点符号)生成一个楷体的 pdf 字帖,可用来临摹或描红使用。 关键字 字帖1 与 字帖 的区别是会隔行输出一行文字内容。 字帖由 https://tools.yunzitie.cn...

  • 三月 2022

  • 三月 27, 2022
    新医保系统开发常见问题自助搜索

    新医保系统开发常见问题自助搜索功能上线了,欢迎大家贡献内容,及提出意见。 干什么的? 从上面的图标可以看出,这是一个类似 Stack Overflow 的问答服务,面向的是新医保系统的开发人员,内容是新医保系统建设过程中遇到的各类问题及解决办法,目前共包含 24 个类别: druid dubbo java mbs mybatis mysql oceanbase plc pmd redis ...

  • 三月 20, 2022
    JS 中的四舍五入

    由于 JS 中 Number 对象的 toFixed 方法在对某些值进行四舍五入计算时 存在误差,而这种误差在进行货币金额计算时是不能接受的,那么在 JS 中我们应该如何正确的进行四舍五入呢? 以保留两位小数为例,选取几种典型的方法,其中 n 为要进行四舍五入运算的浮点数。 方法 A为 n 添加一个小的偏移量,再进行四舍五入: (n + Number.EPSILON).toFixed(2) ...

  • 三月 13, 2022
    简书阅读量报告

    博客 上的文章,会同步发布到 公众号 和 简书 平台上,简书对 markdown 格式的支持、展现效果,以及文章的 SEO 和阅读量都非常不错,在有点赞和评论时,app 也会有即时通知。但当我们想知道自己的哪些文章阅读量最多,哪些文章阅读量增长较快以及近期哪些文章的阅读量有增加时,无论官网还是官方 app 上都缺少可用的工具。 我们可以借助一些简单的、免费的工具和脚本,来实现一个《简书阅读量...

  • 三月 06, 2022
    钉钉自定义机器人

    聊天机器人从 hubot 起接触到聊天机器人,其使用场景还是非常丰富的: 群管理:新人入群欢迎、关键字自动回复、同类消息汇总 …… 结合 SaaS 服务:翻译、生成二维码、编解码、智能客服 …… 定时通知:天气预报、股市行情、监控信息 …… 简单归纳一下,需要机器人具备的能力主要包括:主动发送消息(单聊、群聊)和 被动响应消息(单聊、群聊)。 相关的开源实现也有很多,如上面提到的 hub...

  • 二月 2022

  • 二月 27, 2022
    macOS 路由设置

    经常会有需要连接多个网络环境的需求,比如通过网线连接内网,通过无线连接外网,想要同时连接内外网时,需要进行路由的配置,以通过不同的网卡访问不同的地址。 macOS 下可通过如下方式,配置临时(重启后失效)或永久(重启仍有效)路由。 注意网络顺序在配置路由之前,先说一下网络顺序的问题。在同时连接内外网时,可能会有能上内网不能上外网的情况,也可能会有能上外网不能上内网的情况,这是什么原因呢? 在...

  • 二月 20, 2022
    《成就》书摘

    要成为优秀的管理者,必须先得是优秀的教练。说到底,一个人的职位越高,他的成功就越取决于能否让别人取得成功。从本质上讲,这也恰恰是教练的责任。 坎贝尔认为,IT 企业需要新型经理人,他们是通过下属对他们的信任,而非公司赋予的权威来管理团队的。 在商界,越来越多的证据表明,同情心是取得成功的关键因素。事实证明,让同情心融入团队的想法在商界的作用比在橄榄球场上大得多。 当下成功的关键,就在于快速...

  • 二月 13, 2022
    覆盖 MyBatis Mapper 文件

    在 通过 -Xbootclasspath/a 参数修改 Spring Boot 应用行为实例 的 场景2 中,我们通过 -Xbootclasspath/a 参数,对 Spring Boot 应用 JAR 包中的 Mapper 文件进行了覆盖,但美中不足的是需要将未修改的 Mapper 文件也重新附加进去。 本文将演示两种仅需将改动的 Mapper 文件覆盖进去的方式。 不全部替换会怎么样?先...

  • 二月 06, 2022
    《一本书读懂财报》书摘

    在会计看来,企业一辈子其实只做了三件事:经营、投资和融资。 所以说,无论是什么行业的企业,无论它从事什么业务,无论它处在什么样的发展阶段,都可以把它的日常经济活动抽象成这样一个过程,一个从现金开始,转了一圈又回到现金的过程。这个过程周而复始,循环往复,在整个过程当中,经营、投资、融资三项活动始终在不断地交替进行。 我们必须要知道,本金现在都成了什么,它们现在的价值如何,是不是还保持着原来的...

  • 一月 2022

  • 一月 30, 2022
    微信红包封面

    微信红包今年开放了红包封面的定制玩法,针对去年符合条件的公众号或视频号,官方会发放一些红包封面兑换卡,目前也已开启了针对今年视频号的限时活动: 相信今年的红包封面会异常的丰富,比如下面这个定制红包: 在 微信红包封面开放平台 注册登录后,即可进行微信红包封面的定制。 封面素材和封面故事的图片及视频,均有一定的格式要求,官方贴心的提供了 psd 和 sketch 格式的设计模板(链接为当前...

  • 一月 23, 2022
    通过 -Xbootclasspath/a 参数修改 Spring Boot 应用行为实例

    在 Spring boot 应用不重新打包,添加新类 中简单介绍了 -Xbootclasspath/a 参数的用法,下面用两个实例来进行实际使用场景的说明。 演示项目bootclasspath 为本文使用的演示项目,可通过 mvn clean package -DskipTests 命令获得 Spring Boot 应用 JAR 包,并在项目根路径通过 java -jar app/targe...

  • 一月 16, 2022
    《认知觉醒》书摘

    每天有事情做不代表觉醒,每天都努力也不代表觉醒,真正的觉醒是一种发自内心的渴望,立足长远,保持耐心,运用认知的力量与时间做朋友;我发现人与人之间的根本差异是认知能力上的差异,因为认知影响选择,而选择改变命运,所以成长的本质就是让大脑的认知变得更加清晰 焦虑的原因就两条:想同时做很多事,又想立即看到效果 人生是一场消除模糊的比赛 那些一眼就能看出答案的题目,不用理它;一眼看过去就...

  • 一月 09, 2022
    Spring boot 应用不重新打包,添加新类

    问题描述因为某些约束,我们可能不希望对 Spring Boot 应用重新打包,却又需要调整其中的某些行为(如:添加新类),有没有办法? 解决方案1. PropertiesLauncher修改启动命令,不再是使用 java -jar 方式启动,而是使用传统的 Java 应用启动方式,先通过 -cp 参数将 Fat Jar (example.jar)加入 classpath,然后指定运行的主类 ...

  • 一月 02, 2022
    使用 easyctl 在多主机上并行执行脚本

    当有大批量主机,需要进行类似的操作时,推荐一个不需要配置 SSH 免密登录 的简单工具 —— easyctl。 easyctl上面这个场景,主要使用到了 easyctl 中的 执行指令集 - 跨主机并行执行shell,easyctl 提供的其他功能及使用方式,可见 源码 或文档中的其他部分。 因为 跨主机并行执行 shell 这个功能实际就是通过 ssh 连接到各主机,并行执行指定命令,并将...

  • 十二月 2021

  • 十二月 26, 2021
    ThreadLocal 泄露实例

    ThreadLocal 是什么Java 中,ThreadLocal 是线程本地变量,可用来在多线程环境,为每个线程保存一份独立的变量,不会被其他线程所操作。 关于 ThreadLocal 详细的介绍及用法,可以查阅 An Introduction to ThreadLocal in Java 。 为什么会出现泄漏线程的创建和销毁是很昂贵的操作,需多线程执行时,一般会使用线程池。当线程池和 T...

  • 十二月 19, 2021
    无法动态附加到 Java 进程?

    现象找出 Java 应用频繁 Full GC 的原因 中介绍了一些 JDK 中自带的命令,如:jmap、jstat 等,但在实际使用时,可能会遇到类似如下的问题: $ jmap -histo 2867 2867: Unable to open socket file: target process not responding or HotSpot VM not loaded The -F ...

  • 十二月 12, 2021
    找出 Java 应用频繁 Full GC 的原因

    现象一个线上的 Java 应用(JDK1.8,默认 Parallel GC)在运行几天之后,出现频繁 Full GC 的现象,使用 jstat -gcutil <pid> 2s 观察,状态大致如下: $ jstat -gcutil 23426 2s S0 S1 E O M CCS YGC YGCT FGC ...

  • 十二月 05, 2021
    使用 Java 8 Stream 优雅的找出重复数据

    原文地址:https://wyiyi.github.io/amber/2021/11/30/stream/ 最近经常遇到问题:要获取到集合中某一属性值重复的数据,除了for 循环,还有更简单得处理方式? 先来引入 Stream 流的概念。 Stream 阐述Stream API(java.util.stream.*) 是 Java 8 中新增重要特性。Stream 将要处理的元素集合看作一种...

  • 十一月 2021

  • 十一月 28, 2021
    iTerm2 快速通过跳板机 ssh 远程登录

    场景假设有 A、B、C …… 几批主机: a0 为跳板机,a1 ~ an 为实际要操作的目标远程主机 b0 为跳板机,b1 ~ bn 为实际要操作的目标远程主机 以此类推,共有 n 批。 客户端能联通各跳板机,但无法直接联通目标主机,每批主机之间网络隔离。 需通过 ssh 远程登录目标主机时,是比较痛苦的一件事,一堆 ip 和密码不便记忆,从文档里找又效率很低。 解决方案SSH 免密登录...

  • 十一月 21, 2021
    【转】kubernetes中静态pod学习笔记

    原文地址:https://www.jianshu.com/p/eac82da1a366 背景介绍最近翻看kubelet源码,看到配置项的时候,发现了静态pod这一概念。 而本人也是使用kubesphere对k8s进行管理的,其中kubesphere启动k8s控制节点服务(控制器、调度器、apiserver)也是通过静态pod进行管理的。 由此,想学习学习静态pod的概念。 静态pod 什么是...

  • 十一月 14, 2021
    是时候升级 MySQL Connector/J 到 8.0 了

    使用 JDBC 连接 MySQL 时,你是否也对 JDBC URL 连接串中的参数感到很神秘? 例如: jdbc:mysql://localhost:3306/hinex?useSSL=false&serverTimezone=UTC 连接串的通用格式为: protocol//[hosts][/database][?properties] 那么可用的 properties 都有哪些?...

  • 十一月 07, 2021
    【转】Linux CAP介绍与k8s下配置使用

    原文地址:https://www.jianshu.com/p/a7f6c4f420fa Linux CAP介绍与k8s下配置使用 关于capability 发音 美[keɪpəˈbɪləti] 英[keɪpə'bɪləti]译为能力或功能,一般缩写CAP,以下我们简称Capabilities为CAP CAP历史回溯从内核2.2开始,Linux将传统上与超级用户root关联的特权划分...

  • 十月 2021

  • 十月 31, 2021
    GMT+8 和 Asia/Shanghai 的区别

    时区 现今全球共分为24个时区。实际上,常常1个国家或1个省份同时跨着2个或更多时区,为了照顾到行政上的方便,常将1个国家或1个省份划在一起。所以时区并不严格按南北直线来划分,而是按自然条件来划分。例如,中国幅员宽广,差不多跨5个时区,但为了使用方便简单,实际上在只用东八时区的标准时即北京时间为准。 —— 引自百度百科 时区 时区可以使用名称(如:东八区、西五区)、偏移量(如:UTC+8、...

  • 十月 24, 2021
    Cloud Native Healthcare Security Application Management Platform

    首先进行个简单的介绍: 东软医保云应用管理平台,这个名字比较长,所以我们内部起了个代号,即 Code Name —— CHAMP,意为:Cloud Native Healthcare Security Application Management Platform,是一个 面向多云微服务架构新医保应用的 / 云原生应用管理平台,之后我会简称为云平台或 CHAMP。 再来介绍一下 面向多云微服...

  • 十月 17, 2021
    Servlet 之 Filter

    原文地址:https://wyiyi.github.io/amber/2021/10/01/filter/ Servlet 作为Java Web 的基础,在 Servlet API 中提供了一个 Filter 接口,Filter,又称过滤器。所谓过滤器顾名思义是用来过滤的,可以从客户端向服务端发送请求进行过滤,也可以对服务器返回响应进行处理。 根据上面的流程可以看出,Filter的作用就是...

  • 十月 10, 2021
    【转】使用Finalizers控制k8s资源删除

    原文地址:https://www.jianshu.com/p/c46f449d5bf2 文章引用 using-finalizers-to-control-deletion 你有没有在使用k8s过程中遇到过这种情况: 通过kubectl delete指令删除一些资源时,一直处于Terminating状态。这是为什么呢? 本文将介绍当你执行kubectl delete语句时,K8s内部都...

  • 十月 03, 2021
    使用 Sentinel 进行 Dubbo 服务治理

    服务治理服务治理是一个比较宏观的概念,包括的内容也比较多,就像 《当我们在说微服务治理的时候究竟在说什么》 里所说,可以用治理城市交通的方式,来类比服务的治理,例如: 前方道路拥堵时,即使绿灯,交警也会让原地等待,直至缓解后才能通行,即为 熔断 路面出现裂缝,临时铺盖铁板,即为 降级 道路施工或查酒驾,车道变少,即为 限流 人行道、非机动车道、机动车道等,均为 路由 限号、限行,即为 访问...

  • 九月 2021

  • 九月 25, 2021
    【转】如何写一个operator

    原文地址:https://www.jianshu.com/p/79476712575e 如何写一个operator文章源地址请移步writing-a-controller-for-pod-labels 样例代码 k8s中的operator是什么?operator旨在简化基于k8s部署有状态服务(例如:ceph集群、skywalking集群) 可以利用Operator SDK 构建一个oper...

  • 九月 19, 2021
    连接池如何固定住 MySQL 的连接数

    连接池为什么要用连接池相比于 SQL 执行的时间(不考虑慢 SQL),创建数据库连接的操作可谓相当昂贵,频繁的打开和关闭数据库连接,会导致系统性能非常低下。连接池可以缓存已经创建的连接,在需要连接时,从连接池中获取一个空闲连接,在使用过后将连接归还连接池。 关于连接池的大小应该如何设置,可以参考 关于数据库连接池,你可能做错了。 使用连接池时期望的行为 配置固定数目连接池后,数据库中连接数目...

  • 九月 12, 2021
    关于数据库连接池,你可能做错了

    误区1:动态连接池Real-World Performance - 13 - Large Dynamic Connection Pools - Part 1Oracle RWP(Real World Performance) 团队: 不能添加无数个连接至数据库 数据库的连接数在理想情况下应该是静态的,无论何时都应该是相同的值 不幸的是,如今的应用大多数建立在中间件之上,这些中间件倾向于指...

  • 九月 05, 2021
    ​Real-World Performance - 14 - Large Dynamic Connection Pools - Part 2

    https://mp.weixin.qq.com/s/y_AYQvGUvpSBtewbGEvqcQ Okay, so now having rendered the systemcompletely unstable and unproductive, we got to rescue thesituation. At this point in time is usually a lot ...

  • 八月 2021

  • 八月 29, 2021
    ​Real-World Performance - 13 - Large Dynamic Connection Pools - Part 1

    https://mp.weixin.qq.com/s/D2PUOwAE93eHJpfYXARoXA Today we are going to talk about connecting to the database and how we choose connect to the database. In previous YouTube videos, we’ve shownhow d...

  • 八月 22, 2021
    HTML <form> 只支持 GET 和 POST!

    HTML form method在 Web 开发中,常规的提交数据方式为使用 form 表单,例如: <form action="" method="get" class="form-example"> <div class="form-example"> <label ...

  • 八月 15, 2021
    Go text tempate

    text/template 是 Go 的标准库,提供数据驱动的文本模板生成功能。 Quick start先来快速感受一下,将下面代码保存为 template.go: package main import ( "os" "text/template" ) func main() { text := `START [Actio...

  • 八月 08, 2021
    Flyway 实战

    Using Liquibase with Gradle in Spring Project 中,介绍了数据库版本控制工具 Liquibase,并且总结到 面向 SQL,选择 Flyway 不面向 SQL,选择 Liquibase 如果你还在单独分发数据库变动脚本,甚至简单粗暴的将开发库直接导出并导入生产环境,建议一起来了解一下 Flyway 的用法。 Flyway 中的常用概念Flywa...

  • 八月 01, 2021
    Ingress 定制配置

    K8s Ingress、Ingress Controller 和 Ingress Class 中介绍了 Ingress 相关的概念,接下来让我们看看如何对 Ingress 进行更加灵活的配置。 Ingress 本身支持的配置Ingress 的特性至 Kubernetes v1.19 进入了稳定状态,不论使用哪个具体的 Ingress Controller,这些配置都是生效的。 Path ty...

  • 七月 2021

  • 七月 25, 2021
    JavaScript 中的 Truthy 和 Falsy

    Truthy在 JavaScript 中,Truthy 是指在一个需要 Boolean 值的上下文中,会被认为是 true 的值,例如: > Boolean(true) true > Boolean({}) true > Boolean([]) true > Boolean(42) true > Boolean('0') true > Bo...

  • 七月 18, 2021
  • 七月 11, 2021
    K8s Ingress、Ingress Controller 和 Ingress Class

    将 k8s 集群中服务暴露给集群外访问,最简单的方式莫过于使用 NodePort,好比在 docker 环境下为容器的服务端口绑定宿主机的端口,定义 NodePort 类型的 Service 后,即可通过集群中任意节点的 IP 加 nodePort 指定的端口访问到 k8s 集群中的服务。 但随着服务的增多,使用 NodePort 访问的问题也会逐渐显现出来:可用作 NodePort 的端口...

  • 七月 04, 2021
    【转】为什么 toFixed 会存在误差?

    原文地址:https://wyiyi.github.io/amber/2021/03/25/number-precision/ 在保留有效数字的时候我们经常会使用到 toFixed() 函数,但发现这个方法会存在一些奇怪的问题。 toFixed() 的值错误?在JS中会有如下的现象,我们需要对最后的结果值进行保留固定位数且四舍五入处理,但发现结果不是所期望的。 1.5.toFixed(0) ...

  • 六月 2021

  • 六月 27, 2021
    玩转 @ConditionalOnMissingBean

    在 男人,不能说不行! 中,留了两个问题: 为什么名为 testServiceImpl 的 Bean 会被注册? 为什么无法注入 TestService 的实例? 先从可运行环境 https://github.com/AlphaHinex/conditional-on-missing-bean-demo 看下结果。 在测试用例中,通过 @Autowired 注解注入了 TestServi...

  • 六月 20, 2021
    男人,不能说不行!

    在这个特别的日子里,我第一个想到的,是 李健 在 我是歌手 中演唱的《父亲写的散文诗》,又让我想起了参加我是歌手的每一位歌手,对待自己所热爱的事业的坚持和执着。 歌手,是一个职业,但每一个好的歌手,都不会仅仅把它当做一个职业。 拥有坚定的信念时,一切阻碍都能想办法克服;否则,任何理由都可以成为失败的借口。 就像父亲为了孩子,会竭尽全力一样。 借此机会,致敬每一位为了信念,不轻言放弃,拼命坚持...

  • 六月 13, 2021
    Kong 实战

    Kong简介Kong Gateway 是一个 API 网关,有开源(OSS)和企业版(Enterprise)两个版本。 Kong 构建在 Nginx 之上,更明确点说,Kong 是一个运行在 Nginx 中的 Lua 应用,从其 github 仓库的语言中也可以看出来。 基本概念除了与 Nginx 类似的一些概念(如 Load Balancing,Upstream)外,要使用 Kong,还需...

  • 六月 06, 2021
    简单,却伟大

    Web 开发时,会有需要使用域名的时候,比如以下两个场景: 需要模拟跨域访问 由于网络等限制只能有一个可以访问的 ip 和端口,却需要提供多个相同 context path 的服务 使用 127.0.0.1 和 localhost 可以解决第一个场景的一部分问题,但需要多个域的时候,或者第二个场景,就无能为力了。 虽说可以修改本地的 hosts 文件,将不同域名映射到指定 ip 上,但麻...

  • 五月 2021

  • 五月 30, 2021
    Cookie 的同源和同站

    存储在浏览器中的数据,如 localStorage 和 IndexedDB,是以 源(origin) 进行分割的。每个源都拥有自己单独的存储空间,一个源中的 JavaScript 脚本不能对属于其它源的数据进行读写操作,即所谓的 同源策略(SOP)。 Cookie 的同源然而 Cookie 在受同源策略约束时,使用不同的源的定义方式。 通常来讲: 同源(Same origin),意味着 s...

  • 五月 23, 2021
    SOP、CORS 和 CSRF、XSS

    在 Origin 和 Site 中,我们介绍了 源 和 站 的概念,这两个概念在浏览器的安全策略中有着广泛的应用,接下来再介绍几个与之相关的概念。 SOPSame Origin Policy(SOP),同源策略,是浏览器的一个重要安全机制,用来限制从某一 Origin(源)加载的文档或脚本,如何与其他源中的资源进行交互。它能帮助隔离潜在的恶意文档,减少被攻击的可能。 跨源网络访问跨源网络访问...

  • 五月 16, 2021
    Origin 和 Site

    Origin在 Web 中,origin(源)是指 协议(scheme)+ 主机名(host)+ 端口号(port)。 如:https://alphahinex.github.io/2021/05/16/origin-and-site/ 源即为:https://alphahinex.github.io 同源(Same origin),意味着 scheme/host/port 三元组完全相同...

  • 五月 09, 2021
    Spring Boot 配置文件拾遗

    说到 Spring Boot 的配置文件,大家应该都不陌生,Spring Boot 也为其外部配置文件提供了一些参数,使我们能够更加灵活的对其中的参数进行设定及覆盖,一起来查缺补漏吧。 spring.config.name默认情况下,Spring Boot 的配置文件为 application.properties 或 application.yml,而这个配置文件的文件名(不包括扩展名),...

  • 五月 02, 2021
    K8s 存储资源回收策略

    在 Volume、PersistentVolume、PersistentVolumeClaim 和 StorageClass 中,我们介绍了 K8s 存储资源的相关概念。持久卷(PersistentVolume)通过卷插件对位于外部基础设施中的存储资产进行操作,并可通过 回收策略,控制持久卷回收时会对外部存储数据产生的影响。 回收策略目前支持的回收策略有三种: Retain:手动创建的 P...

  • 四月 2021

  • 四月 25, 2021
  • 四月 18, 2021
    Volume、PersistentVolume、PersistentVolumeClaim 和 StorageClass

    Volume - 卷K8s 中的 卷,是指包含可被 Pod 中容器访问的数据的目录。 Docker 也有 卷(Volume) 的概念,但对它只有少量且松散的管理。 Docker 卷是磁盘上或者另外一个容器内的一个目录。 Docker 提供卷驱动程序,但是其功能非常有限。 K8s 支持 很多类型的卷,比如:cephfs、configMap、emptyDir、hostPath、local、nfs...

  • 四月 11, 2021
    Java 应用远程调试

    软件开发会时经常会遇到这样的场景: 现场反馈的问题,在本地环境无法重现,可能需要将现场数据库导回来才能重现问题 生产环境中的服务无法直接从本地开发环境进行连接,进而无法使用本地代码进行调试 在上面的场景中,无论是将现场库导出,还是开通生产环境服务的访问权限,都是非常困难且不安全的。 本文将介绍一种由 Java 平台提供的,远程调试 Java 应用的方法。 JPDAJPDA(Java Pl...

  • 四月 04, 2021
    二进制算术运算

    总体来讲,二进制算术运算可以采用竖式计算的方式,与十进制竖式计算的区别是,逢十进一变为了逢二进一。 整数以 8 和 4 为例,可参照 十进制整数与二进制数转换 中方法,分别计算出二进制形式: 8 (10) = 1000 (2) 4 (10) = 0100 (2) 加 1000 + 0100 ------ 1100 1100 (2) = 12 (10) 减 1000 - 0100 -...

  • 三月 2021

  • 三月 28, 2021
    十进制浮点数与二进制数转换

    什么是浮点数 在计算机科学中,浮点(英语:floating point,缩写为FP)是一种对于实数的近似值数值表现法,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次指数得到。以这种表示法表示的数值,称为浮点数(floating-point number)。利用浮点进行运算,称为浮点计算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。 —— 维基百科 可以简单的将...

  • 三月 21, 2021
    十进制整数与二进制数转换

    因为人类有十根手指,所以十进制计数法,是目前使用范围最广泛的计数方式。 但在计算机中,只有 0 和 1 两个数,所以需要进行转换。 本文主要介绍一下十进制 整数 与二进制数的转换方法。 十进制转二进制方法一十进制整数转二进制时,可将十进制整数除以 2(因为需转换为二进制数),得到余数,填入二进制低位,直至商为 0 时结束。 以 156 为例: 除数 被除数 余数 2 156 0 ...

  • 三月 14, 2021
    如何给 Spring Boot 外挂 classpath?

    场景假设使用 Spring Boot 开发了一个可使用不同数据库的应用,每个数据库的 jdbc 驱动包都不同,不想在 Fat Jar 中打入所有的数据库驱动 jar,又不想为每一个确定了具体数据库的场景都打一个对应的 Fat Jar 包,有没有优雅的方式来实现这个需求呢? 我们先来看下 Spring Boot 的 Fat Jar(Executable Jar)是如何运行的。 Launcher...

  • 三月 07, 2021
    【转】你看到的事实,不一定是事实

    原文地址:https://wyiyi.github.io/amber/2021/03/06/zero-width-space/ 大家都熟悉的 Unicode(万国码)几乎包含 所有符号: 常用的 Emoji: 😂 😸 ✌ 颜文字: (๑•̀ㅂ•́) ٩(͡๏̯͡๏)۶ $_$ 表意文字:𠁀 𡮘 𠆳 国际象棋图案:♕ ♛ ♙ 扑克牌: 🂡 🃁 🂳 麻将牌: 🀄 🀝...

  • 二月 2021

  • 二月 28, 2021
    【转】都是 “编码格式” 惹得祸

    原文地址:https://wyiyi.github.io/amber/2021/01/13/unicode/ 遇到的问题:在单元测试中执行sql文件,sql的内容是正确的,但是执行报错。扎心。 重现该场景,关键代码如下:完整实例可见仓库 @SpringBootTest class DemoTest { @BeforeEach @Sql("/com/amber/d...

  • 二月 21, 2021
    微信机器人的曲线实现

    在知道了 Hubot 之后,就一直想在微信里也有一个类似的机器人。虽然也有不少微信的 hubot adapter,但基本都是基于网页版微信实现的,而微信对网页版微信的态度,让人深刻的感受到,作为国内的超级 App 所承担的责任。 之后在 Slack 中用了一段 Hubot,还是挺不错的,但是在国内使用 Slack,无论是桌面端还是移动端,还都是有些难度和不稳定的。 微信公众平台,给出了一个微...

  • 二月 14, 2021
    微信公众号服务

    辛丑年大年初三(2021年2月14日)抽支付宝口令红包活动已开启,仅此一天! 发送带 牛 字的四字消息,根据关注时间,抽取随机金额支付宝口令红包。 除了抽奖功能外,公众号自动回复服务还包括一些其他功能哟,比如: 能够正确响应微信公众平台发送的 Token 验证(此处仅正确响应,并未对 Token 进行验证) 关注时回复欢迎消息 回声功能:对任何发送给公众号的文本消息,回复 <发送内容...

  • 二月 06, 2021
    内网穿透?试试 ngrok

    提到内网穿透,首先想到的可能是花生壳,但很多年前的一次使用经历,感觉不是一般的费劲。 如果有类似的需求,可以试试 ngrok 。 到 下载页面 下载客户端压缩包,并解压,如 unzip /path/to/ngrok.zip 启动服务,转发到本地端口(如 8888) ./ngrok http 8888 ngrok by @inconshreveable ...

  • 一月 2021

  • 一月 31, 2021
    K8s subPath

    定义在 K8s 中,VolumeMount 是用来挂载定义好的存储卷的。 其中有个属性 subPath 是这样描述的: Field Description subPathstring Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’...

  • 一月 24, 2021
    v2ray

    干啥的引用 v2ray 官网中的 说明: 制作 V2Ray 的目的是什么对于已公开的合法信息,人民有自由获取的权利。同时,人民也有言论自由的权利。 是否反对管制不反对管制。事实上任何事物都需要管制,以减少大众的生活成本,比如奶粉。但监管需要有法可依、有据可循。民众都认可的监管方式也是合理的,可接受的。 Project V 由谁主导开发我们是一群爱好自由的人们。由于政策压力,我们倾向于保持匿...

  • 一月 17, 2021
    薅 AWS 羊毛

    AWS,即 Amazon Web Services,是由 Amazon 提供的云服务。在 Gartner 新的 2020 年云基础设施和平台服务 (CIPS) 魔力象限 中,Gartner Research 将 AWS 定位在“领导者象限”中。在此魔力象限中,CIPS(Cloud Infrastructure and Platform Services)被定义为“标准化、高度自动化的产品,其...

  • 一月 10, 2021
    MacOS 制作 USB 启动盘

    安装操作系统时,当前常用的方式是获取操作系统对应的 ISO 文件,并制作 U 盘启动盘,使用 U 盘引导系统进行安装。 当使用 MacOS 时,可以很方便的利用系统自带工具,完成上述工作,具体步骤如下。 获得操作系统镜像推荐从官方进行下载,如: Windows 10 Ubuntu CentOS 下载到的文件名如 Win10_20H2_v2_Chinese(Simplified)_x64....

  • 一月 03, 2021
    程序员对程序员的承诺

    开公众号至今已达到了一年,每周发一篇文章也坚持了一年,不容易,但成年人的世界,没有容易二字。 过去几年立了一些 flag: 每天在 GitHub 上有 contribution 每两个月读一本书并进行分享 每周写一篇博客并发公众号 虽然新的 flag 会接替之前的 flag 填充满主要的时间,但坚持做这些事的初衷都没有变:不断的改变自己,并尽可能的给他人带来积极的影响。 静态网站访问统计...

  • 十二月 2020

  • 十二月 27, 2020
    Override same class

    实际 Java Web 项目中经常会遇到这样的场景:希望对依赖的某个三方库中的行为进行覆盖式的定制(修改三方库中的某些行为),但并不希望发布定制的版本至私服。 通常在使用 WAR 包发布应用时,可将定制的类编译成 class 文件,放入 WEB-INF/classes 路径中,即可覆盖放置在 WEB-INF/lib 路径下的三方库中同名类,达到定制的目的。 那么为什么可以这样? 在两个相同的...

  • 十二月 20, 2020
    TeamCity Kotlin DSL

    将持续集成环境的配置代码化(Configuration as code)有很多好处: 可借助版本控制系统(VCS)对配置进行管理 很容易对配置变更进行审查(review) 提高配置的可移植性 不同的分支可以执行不同的构建,甚至是未合并的请求分支以及历史构建 目前常见的持续集成服务都提供(甚至仅有)代码化配置方式,如: Travis CI 的 .travis.yml GitHub Act...

  • 十二月 13, 2020
    zsh

    macOS Catalina 飞起来了 之后,发现打开终端时会提示 The default interactive shell is now zsh.从 macOS Catalina 版开始,Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell。 默认情况下,Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器: 从 macOS ...

  • 十二月 06, 2020
    如何确定装载了哪个类

    某些时候,我们可能希望知道 ClassLoader 里到底装载的是哪个 class,比如当两个 jar 包中存在 package 和 Class 名完全相同的两个类时。 java -verbose在 java 命令的帮助信息中,有如下内容(部分): $ java -help 用法: java [-options] class [args...] (执行类) 或 ...

  • 十一月 2020

  • 十一月 29, 2020
    腾讯云架构高级工程师

    考试形式疫情期间采用线上考试的方式。考试时间 120 分钟,总分 100 分,共 65 题(30 单选 + 15 多选 + 20 案例分析),均为单选及多选形式,多选不提示选项个数。通过条件 70 分以上。线上考试可提前进入考场,开始考试 30 分钟后不得登录系统。 考试过程中浏览器会进入全屏,离开作答界面或退出全屏可能将引发疑似作弊告警。各类违规行为累计出现5次及以上,将视为作弊,取消考试...

  • 十一月 22, 2020
    K8s ConfigMap

    在 k8s 集群中部署第一个应用 中,完成了一个基本的 NGINX 服务的部署,但在真实环境中使用 NGINX 时,一般都需要定制其配置文件,使满足实际代理需求。K8s 提供了一个 ConfigMap 的概念,允许将配置文件与镜像文件分离,以使容器化的应用程序具有可移植性。 什么是 ConfigMap可以按字面方式,将 ConfigMap,理解为一个 Config 的 Map: Map 的...

  • 十一月 15, 2020
    K8s 命名空间

    Kubernetes 支持在一个物理集群上划分多个虚拟集群,这些虚拟集群即 命名空间。 约束 在同一个命名空间中,资源名称须保持唯一。但在不同命名空间中,可以存在相同名称的资源。 每一个资源只能隶属于一个命名空间。 但命名空间本身不能属于另一个命名空间。 可以通过如下命令查看哪些资源在或不在命名空间中: # In a namespace $ kubectl api-resources --...

  • 十一月 08, 2020
    在 Mac 的 Docker Desktop 中运行 K8s

    Docker Desktop for Mac 从 Docker Community Edition 18.06.0-ce-mac70 2018-07-25 版本起,添加了对 Kubernetes 的支持,可以方便的在 Mac 上运行一个单节点的 K8s 集群。 在 Docker Desktop 的 Preferences 中的 Kubernetes 页面里,提供了一个 Enable Kube...

  • 十一月 01, 2020
    危险!不要打开!

    使用 Chrome 访问某些网站时可能会遇到上面的情况。 点击 高级 按钮,有些场景下会有继续访问该网站的链接,点击后即可继续访问;但有些时候会出现如下界面,无法继续访问: 安全提示除非你知道自己要访问的网站里面都包含什么,也清楚进去之后会产生什么后果,否则请立刻关闭此页面。 除非你知道自己要访问的网站里面都包含什么,也清楚进去之后会产生什么后果,否则请立刻关闭此页面。 除非你知道自己要...

  • 十月 2020

  • 十月 25, 2020
    使用 Telnet 调用 Dubbo 服务

    当使用 Dubbo 作为 RPC 框架时,有时会希望验证 provider 提供的服务是否好用,比起开发一个 consumer,可以使用自带工具来进行更快速的验证。 本文以使用 ZooKeeper v3.6.1 为注册中心,dubbo-samples-zookeeper 示例代码为例,介绍一下自 dubbo v2.0.5 版本开始支持的 telnet 命令用法。 环境准备启动注册中心先在本地...

  • 十月 18, 2020
    在 k8s 集群中部署第一个应用

    在 使用 kubeasz 离线安装 k8s 集群 中,我们完成了 k8s 集群的搭建,接下来,可以开始在集群中部署第一个应用了。 目标在集群中启动一个最简单的 nginx 服务,并能够通过 http 进行访问。 预热回忆 docker 环境下,要实现这个目标,需要做的事情很简单,一行命令即可: $ docker run --name some-nginx -d -p 8080:80 ngin...

  • 十月 11, 2020
    macOS Catalina 飞不起来了?

    自 macOS Catalina(10.15)发布之日(2019.10.08)起,便听到了不少负面反馈,迟迟没敢进行升级。 一年之后 Catalina 已经迎来了 10.15.7 版本,心想也差不多稳定了,就趁国庆假期更新了一下,没想到还是 翻车了!升级过程还算顺利,但升级完之后,明显的感到了系统的卡顿,不再有起飞的感觉了,仿佛眼前的 Mac 已不再是 Mac …… 虽然我的 Mac 已经服...

  • 十月 04, 2020
    使用 kubeasz 离线安装 k8s 集群

    kubeasz 将 k8s 集群的部署难度降低到了傻瓜相机的级别。本文以 kubeasz v2.2.1 为例,介绍一下使用 kubeasz 离线安装 k8s 集群的方式。 下载离线安装所需内容在一个可联网的环境,按 离线安装集群 文档中内容,将所需文件都下载到本地: # 下载工具脚本 easzup,举例使用 kubeasz 版本 2.2.1 $ export release=2.2.1 $ ...

  • 九月 2020

  • 九月 26, 2020
    VS Code Remote - SSH 插件

    在需要到服务器上编辑文件的时候,如果遇到有较多文件分散在不同目录时,使用终端工具其实挺繁琐的。 在 VS Code 中,有一个插件 Remote - SSH,可以配置好 SSH 连接后,打开远程主机上的任意路径,之后就像使用 VS Code 操作本地文件夹一样。 官方对此插件的简介为: Open any folder on a remote machine using SSH and ta...

  • 九月 20, 2020
    纳尼?休眠不能?!

    现象CentOS 7,systemctl hibernate 休眠失败,按照提示使用 journalctl -xe 查看具体原因,得到类似如下内容的日志: Feb 09 14:18:14 pike systemd[1]: Starting Sleep. Feb 09 14:18:14 pike systemd[1]: Reached target Sleep. Feb 09 14:18:14...

  • 九月 13, 2020
    SSH 免密登录

    假设 local 需要 ssh 连接到 remote,且不希望每次连接的时候都输入密码(比如从服务器 A 连到 服务器 B)。 本地生成公钥私钥对# 在本地(local 主机).ssh 路径生成公钥和私钥文件 $ ssh-keygen -t rsa # 一路回车即可 将公钥复制到远程主机scplocal $ cd ~/.ssh # 查看该路径下是否有 authorized_keys 文件,如...

  • 九月 06, 2020
    华为鲲鹏下可用的 Redis docker 镜像

    在华为鲲鹏服务器下,使用 Docker 时,因鲲鹏服务器使用的芯片为 ARM 架构,镜像也需要使用 ARM 版本的。 从 x86 架构拉取的镜像直接导出导入到鲲鹏服务器上是不可以直接使用的。 可以通过 docker inspect IMAGE_NAME 查看镜像的架构类型。 在鲲鹏服务器上重新拉取镜像,会自动下载 ARM 架构的镜像,前提是需要有提供 ARM 架构的版本,如: 但在鲲鹏服务...

  • 八月 2020

  • 八月 30, 2020
    联通 4G 访问 GitHub Pages 受阻肿么办?

    联通 4G 抽风性的无法正常访问 GitHub Pages,GitHub 有时候也抽,哥俩抽的频率还不同步。 这时候有域名和主机的朋友可以考虑架个 Nginx 反向代理一下,那没有条件的朋友们如何创造条件也要上呢? Gitee(https://gitee.com/),是一个不错的选择,可以同步 GitHub Pages 仓库,并提供 Gitee Pages 功能。 注册账号后新建仓库,选择 ...

  • 八月 23, 2020
    子网掩码是神马

    在手动配置 IPv4 地址时,需要配置子网掩码,一般会是 255.255.255.0 这样的形式,或者在 ifconfig 中表示为 netmask 0xffffff00。那么什么是子网掩码?子网掩码为什么一般都是这样的呢? 先来说说 IP 地址目前所说的 IP 地址,一般还是指 IPv4 地址。IPv4 是指长度为 32 位(4个字节)的一组数字,为方便记忆及描述,使用十进制表示,并在每个...

  • 八月 16, 2020
    Alibaba Cloud Certified Expert

    2020年7月 105分 截屏 在线练习 在线练习代码仓库 Base on Bobby Black’s Fork of jrue’s JavaScript-Quiz 做了如下改动: 支持多选题 对已掌握的题可以去除,循环答题是不会再次出现。刷新页面时题库重置 每次刷新页面随机出题顺序 增加不蒜子统计 将题目内容抽取为了单独的 js 文件,方便切换 当前在线版本为 ACE 内容,可在 i...

  • 八月 09, 2020
    通过 rsync 和 cron 实现日志文件的准实时同步

    需求服务器中日志文件希望即时同步到另一个服务器中,并且能够 tail。 准备 通过 rsync 进行文件的同步 通过计划任务完成准实时的同步 rsyncrsync 是一个 开源 的工具,提供了快速的增量文件同步功能。包含在了 Linux 各主流发行版中。 基本用法为:rsync [options] src dest,支持本地及远程文件的拷贝(但不支持 src 和 dest 同时为远程地址)...

  • 八月 02, 2020
    Tomcat 是怎么找到用来处理请求的 Servlet 的?

    在 Servlet 注册到了哪? 中,我们找到了配置的 Servlet 被包装成了一个 StandardWrapper,以注册的 Servlet name 为 key 放入了其父容器(Context)一个 HashMap 里。那么当 Tomcat 收到一个请求的时候,是怎么找到对应的 Servlet 以对请求进行处理的呢? 先放一张图: 总的来说,这个过程分为两部分: 读取所有 Serv...

  • 七月 2020

  • 七月 26, 2020
    为什么应该设置 com.sun.management.jmxremote.rmi.port?

    在使用 JMX 对 Java 应用进行监控时,一般会在启动时添加如下参数: java \ -Djava.rmi.server.hostname=192.168.16.237 \ -Dcom.sun.management.jmxremote.rmi.port=2909 \ -Dcom.sun.management.jmxremote.port=9009 \ -Dcom.sun.manageme...

  • 七月 19, 2020
    谁动了我的异常 Plus

    书接上文,在 谁动了我的异常? 中,有几个问题没说清楚,本文将继续进行说明。为了方便,相关示例代码上传至了 https://github.com/AlphaHinex/proxy-in-spring 。 前情回顾示例代码中,定义了如下内容: 一个检查型异常:CheckedException 一个统一的异常处理:UnifyHandlerExceptionResolver 一个切面 Contr...

  • 七月 12, 2020
    为什么不建议使用双括号初始化?

    什么是双括号初始化?Map<String, Object> map = new HashMap<String, Object>() {{ put("name", "Alpha"); put("age", 8); }}; 为什么能这样写?以下内容引自 The Java™ Tutorials - Initializing Fields: Initiali...

  • 七月 04, 2020
    JitPack 真香 Plus

    在 JitPack 真香 中,介绍了 JitPack 的基本用法。 当一个仓库中对应多个模块,每个模块需发布成一个独立 jar 包时,依赖的坐标有略微调整: 单模块 多模块 groupId com.github.User com.github.User.Repo artifactId Repo Module version Tag Tag 多模块时,依然可以通过单...

  • 六月 2020

  • 六月 26, 2020
    谁动了我的异常?

    场景描述通常来讲,为方便开发,我们会对异常进行统一的处理。会定义一个异常基类,针对基于这个基类的自定义异常进行统一处理。 当异常基类为检查型异常(Checked Exception)时,如果自定义异常是通过切面等代理抛出的,被代理的方法本身并未抛出且也未声明此异常时,就会遇到这个问题: 统一异常处理方法中,捕获到的异常,已不是代理类中抛出的自定义异常,而是一个将自定义异常包装在内的 java...

  • 六月 19, 2020
    Gradle HTTP 超时设置

    在使用 Nexus 时,很罕见的遇到了超时问题: > Unable to load Maven meta-data from http://localhost:8081/repository/test/io/github/alphahinex/example/0.1.2-SNAPSHOT/maven-metadata.xml. > Could not HEAD 'h...

  • 六月 12, 2020
    SSH Port Forwarding, aka SSH Tunneling

    SSH(Secure Shell)端口转发(SSH Port Forwarding),也叫 SSH 隧道(SSH Tunneling),是 SSH 中的一种机制,可以在 SSH 客户端与服务端之间,建立一条隧道,将客户端端口转发至服务端,也可将服务端端口转发至客户端。利用这种机制,可以为老式应用,提供加密通讯的途径,以及其他一些更广泛的用途。 怎么端口转发/创建隧道?利用 SSH 客户端,...

  • 六月 05, 2020
    Why was '~' chosen to represent the home directory?

    Why was ‘~’ chosen to represent the home directory? Quoting Wikipedia: On Unix-like operating systems (including BSD, GNU/Linux and Mac OS X), tilde often indicates the current user’s home directo...

  • 五月 2020

  • 五月 29, 2020
    JitPack 真香

    在 GitHub Packages in Action 中,我们介绍了 GitHub Packages Registry(GPR)的用法。GPR 有其应用场景,但也经常会有蹩手的感觉,尤其是在传错了包,需要邮件联系客服进行删除,而客服又迟迟没有回复的时候…… 直到发现了 JitPack,除了真香,找不到别的词来形容了。 如何接入 JitPack只要代码仓库是使用 GitHub,或者 其他几种...

  • 五月 22, 2020
    Git 三招脱坑指南

    第一招:六脉神剑 —— 分支 孔子云:知之为知之,不知为不知 —— 用分支!分支的使用方针 一次只做一件事 用后即弃 为分支起一个有意义的名字 alias~/.gitconfig [alias] st = status -sb cm = commit -m co = checkout cam = commit -a -m onelog = log ...

  • 五月 15, 2020
    神油!WD-40

    用了几年的雷蛇黑寡妇竞技版,对其尺寸及没有令人眼花缭乱的键盘灯甚是满意。 不想突然开始频繁出现按键失灵及双击的现象,非常影响输入效率。 千方百计与雷蛇客服联系上了,却被告知“俺们雷蛇只换不修,如果没过保可以直接给你换一个”。 这个馅饼落到我头上了的话也就没有下边的故事了。 不能免费以旧换新,花钱修一下也行啊,雷蛇依旧高冷的回复:没地方修,新买一个吧。 那就死马当活马医吧。 雷蛇黑寡妇蜘蛛竞技...

  • 五月 08, 2020
    使用 Nginx 作为 HTTP 文件服务

    伺服文件路径ngx_http_autoindex_module 模块可处理请求并生成目录列表。启用后当 ngx_http_index_module 模块无法找到 index 文件时,会将请求交给 ngx_http_autoindex_module 模块处理。 配置示例: location / { autoindex on; } 其他相关指令可查看 官方文档。 另外,需要配合 ngx_...

  • 四月 2020

  • 四月 30, 2020
    Servlet 注册到了哪?

    按 还在给每个请求加前缀避免模块间接口冲突呢? 中内容,我们可以通过 ServletRegistrationBean 注册多个 DispatcherServlet,那么 Servlet 被注册到哪了呢? 简单的回答:Servlet 容器。 没毛病!但马达马达大内!注册到了 Servlet 容器里的哪?存在什么结构里? 让我们以 Tomcat 容器为例,刨根问底。 addRegistratio...

  • 四月 24, 2020
    还在给每个请求加前缀避免模块间接口冲突呢?

    场景Spring MVC 按模块开发时,可能经常会遇到这个场景:一个模块由一个开发人员负责开发,模块内能较好的保证 RequestMapping 的 path 不重复,但模块间就很难有效的方式保证唯一。 通常有两种处理方式: 对开发进行规范或约定,为每个模块起一个前缀,要求在模块内开发的所有 controller 都带上前缀,这样就只要保证模块内唯一即可。 每个模块部署为单独的服务,通过 ...

  • 四月 17, 2020
    Spring 中如何根据请求调用对应方法

    需求假设能够获得到一个 HttpServletRequest,需要根据这个请求内的具体信息,找到其所对应的 Spring Controller 中的方法,并对方法进行调用,获得该方法的返回值。 分析这个需求,与 DispatcherServlet 的作用非常类似。先看一下请求到达 DispatcherServlet 之后的处理流程: 因为最终目标是获得请求对应的 Controller 方法...

  • 四月 10, 2020
    《Netty in Action》书摘

    Start at: 2020-01-05End at: 2020-03-28Process: 298/298 https://www.manning.com/books/netty-in-action https://github.com/normanmaurer/netty-in-action 3 Netty components and design3.1 Channel, Even...

  • 四月 03, 2020
    CSS3 动画还不够香

    现象页面加载完毕静置一小会之后,CPU 使用率居高不下,风扇巨响,发热严重。关闭页面后现象消失。 重现方式$ git clone https://github.com/AlphaHinex/AlphaHinex.github.io.git $ cd AlphaHinex.github.io $ git checkout cdf1d11 $ npm install $ npm audit fi...

  • 三月 2020

  • 三月 27, 2020
    GitHub Actions 实战

    GitHub Actions 是什么?与 Jenkins、TeamCity、Travis CI 类似,GitHub Actions 是 GitHub 提供的一个持续集成平台。 与三方持续集成平台的对比 GitHub Actions Jenkins TeamCity Travis CI 代码仓库平台无关性 × √ √ √ 构建配置即源码 √ × × √ 无需单独部署 √ ×...

  • 三月 20, 2020
    Mac 录播推流 RTMP 方案

    有时我们可能希望提前录制一些内容,在进行直播时推流至 RTMP 服务。本文提供了一个在 Mac 环境上实现此需求的方案。 屏幕录制屏幕录制可以利用 Mac RTMP 直播方案 中提到的 OBS,也可以直接使用系统自带的 QuickTime Player,占用的资源(主要是 CPU)更少,还提供了鼠标点击的可视化效果。 选择 新建屏幕录制,并选择 内置麦克风 即可,完成录制后,保存为 .mov...

  • 三月 12, 2020
    视频容器介绍

    以下内容节选自 使用 HTML5 技术播放视频,图片有更新。 视频容器我们常见的视频格式有 avi 或 mp4 等,这些所谓的视频格式,实际上指的只是视频容器的格式。就像 zip 格式的压缩包里面可以放置任意类型的文件一样,视频容器格式可以简单理解为只定义了如何将视频及音频流数据存储在容器文件中。实际情况会比这更复杂一些,因为不是所有的视频流都可以兼容存入任意视频容器中。 一个视频文件通常包...

  • 三月 04, 2020
    敏捷之我见

    实施敏捷的要点 团队以一个恒定的效率进行输出:敏捷不是一把梭,重要的是持之以恒 考核团队的绩效,而非个人的绩效:一个人可以走的很快,但一群人能走得更远 任务可视化:进度及工作饱和度的直观反馈 基于 TDD 及 CI/CD:灵魂 明确的目标:遵循 SMART 原则的目标,才能得到尽可能小的偏差 上层的支持:统一思想,某个环节敏捷没有用 具体实践形式两周一个 Sprint 每月 2~3 个迭代...

  • 二月 2020

  • 二月 26, 2020
  • 二月 20, 2020
    Mac RTMP 直播方案

    Mac 直播软件OBS 为 Mac 下可用的直播软件。上手简单,网上教程也很多。不过因为 RMBP 的分辨率太高,直播画面必须进行缩小,否则 Mac 不一定能吃得消。MacBook Pro (Retina, 15-inch, Mid 2015) 播一会就提示资源不足,需降低分辨率之类的了。最后使用的如下配置,观看直播的分辨率基本可接受,录制起来也不会提示需要降低输出质量。 不过风扇还是会疯...

  • 二月 14, 2020
    集成 Spring Roll 的通用导出列表数据为 Excel 功能

    Spring Roll 中提供了一个基于业务 REST Controller 实现的通用 Excel 导出功能,可将列表页查询结果直接导出为 Excel 文件。 本文描述如何集成 roll-export 模块,获得通用导出功能。 添加依赖Spring Roll 的包目前发布在 GitHub Packages 中,可参照 GitHub Packages in Action 或官方文档,对构建工...

  • 二月 05, 2020
    微服务的自动化集成测试实战

    场景利用 How to integrate SEATA AT mode with Spring Cloud 中定义好的微服务,进行集成测试。 包含以下服务: 库存服务(storage) 用户账户服务(account) 订单服务(order) 业务服务(business) 业务服务作为直接被调用的接口,组织关联其他三个服务。下订单时,服务的调用顺序如下: 1. 减库存(storage) 2...

  • 一月 2020

  • 一月 29, 2020
    利用 Gooreplacer 科学访问 Codecov

    Codecov 是一个测试覆盖率结果可视化展现网站,并与 GitHub 和 Pull Request 有较好的集成,可以在 Pull Request 中展现覆盖率变化结果,协助保证代码质量。 不过在 GFW 环境下访问 Codecov 不是很稳定,因为网站使用了一些 Google 的 CDN 资源(主要是 js 和 css)。利用 Gooreplacer 可以将这些资源重定向到可访问的地址,...

  • 一月 22, 2020
    How to integrate SEATA AT mode with Spring Cloud

    本文基于一个 Spring Cloud 业务实例,说明如何集成 SEATA AT 模式,进行分布式事务控制。 背景介绍SEATA 是什么?Seata: Simple Extensible Autonomous Transaction Architecture Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、S...

  • 一月 17, 2020
    GitHub Packages in Action

    GitHub Packages 可以用来当做 Release 版本 jar 包的 Maven 仓库。 与 Maven 中央库比,没有繁琐的申请流程,可以快速的将 jar 包发布出去供他人使用。 与 Nexus 私服相比,无需架设公网访问环境。 缺点 是只支持 Release 版本的发布和下载,Snapshot 版本虽然可以发布上去,但无法被其他项目依赖。目前尚不支持自行删除已上传的 jar ...

  • 一月 05, 2020
    Using Gradle Behind Proxy

    在网络代理环境下使用 Gradle 时,可能会遇到以下三个问题: gradlew 下载对应 Gradle 发布版时无法下载 下载依赖时,提示连接超时 SSL 证书无效 gradlew 下载对应 Gradle 发布版时无法下载错误提示Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authoriz...

  • 五月 2018

  • 五月 15, 2018
    Using Liquibase with Gradle in Spring Project

    Spring 项目通过 Gradle 插件使用 Liquibase 的简易说明 Liquibase 是什么引用 Liquibase 官网 的一张图片: 类似的工具还有 Flyway。 为什么选择 LiquibaseFlyway 官网 上有一个同类工具特性的对比,详见 Feature Comparison 部分或下图: 看图的话,Flyway 完胜,不过 等等!看完下面内容再做决定: L...

  • 六月 2016

  • 六月 15, 2016
    TeamCity for Java Project on GitHub

    GitHub 上 Java 项目使用 TeamCity 和 Codecov 的简易说明 目标 利用 TeamCity 构建 GitHub 上的 Java 项目 构建时进行静态代码质量检查及单元测试,并生成测试覆盖率报告 确保每个 PR 和 master 分支的每次提交都能触发构建 将构建结果和覆盖率情况可视化展现 环境准备使用 Docker 镜像搭建基础环境: $ docker pull ...

  • 二月 2016

  • 二月 02, 2016
    Web Resource Optimizer for Java (wro4j) Demo

    wro4j 代码仓库 wro4j 文档 运行时编译在 web 项目中配置一个 Filter,页面上需要 css 或 js 资源时,将请求发送至 Filter,Filter 将按照 wro.xml 配置文件中配置的 group 将资源编译后返回。 步骤 1:添加 WroFilter<filter> <filter-name>WebResourceOptimize...

  • 十二月 2015

  • 十二月 31, 2015
    使用 Clear Key 加密 MP4 视频并播放

    使用 HTML5 技术播放视频简单方便,但同时也将视频源直接暴露了出去。针对一些需要保护以避免用户随意下载的视频,有没有鱼和熊掌兼得之策呢? 在现代浏览器中,使用 HTML5 技术在线播放视频已不是难事,只需浏览器支持和视频格式兼容即可(参见 使用 HTML5 技术播放视频)。<video> 标签带给我们便利的同时,也将视频源地址直接暴露了出去。虽然 开放 是互联网精神之一,但总...

  • 十二月 11, 2015
    使用 HTML5 技术播放视频

    HTML5 定义了通过 video 元素在网页中嵌入视频的标准方式。尽管这种方式仍在不断进化中,也暂时不能做到在任何浏览器下都运转良好,但现代浏览器对其支持的趋势及程度还是很值得期待的,即便在一些不支持的环境下,也有替代方案可供选择。本文主要基于 Dive Into HTML5 # Video on the Web,并对一些内容有更新和补充。 随着 HTML5 标准 的定稿以及在线视频巨头 ...

  • 十二月 01, 2015
    《把时间当作朋友》书摘

    Start at: 2015-09-02 End at: 2015-10-21 Process: 270/270 所有人的困境 所有人共有的弱点:懒惰 “既勤奋又懒惰”的怪异现象来自于他们的“时间压力”感受。“没有时间了”,或者“时间不够了”的感受和恐惧,使得他们超乎寻常地勤奋,哪怕是虚假的“勤奋”,恨不能废寝忘食。而同样的感受,也使得他们终日寻找捷径,美其名曰“提高效率”,而实际上却想...

  • 十一月 2015

  • 十一月 26, 2015
    一步一步将 d3.js Calendar View 转变成 GitHub Contributions

    GitHub Contributions 日历热图表述力强,容易上瘾,并且引发了多种玩法:涂满或涂成名字、万圣节颜色……,让我们使用 d3.js 提供的 Calendar View 示例,一步一步将其修改成 GitHub 的样式,Let’s go! 先将 d3.js 提供的 Calendar View 做一个 快照,以免示例代码更新对本文中的修改造成影响。 修改前的文件为: before...

  • 十一月 12, 2015
    docker-machine 设置代理

    随着 Docker 1.8 的发布,docker-machine 将 boot2docker 封装了起来。docker-machine 在需要通过代理访问网络时需要特殊的配置,配置方式如下: docker-machine 实际是运行在 OS X 上的 VirtualBox 虚拟机内,将之前的 boot2docker 进行了封装,配置代理的方式与之前在 boot2docker 中的设置方式不同...

  • 十月 2015

  • 十月 28, 2015
    使用 AppleScript 切换 OSX 鼠标/触控板 滚动方向

    OSX 的鼠标和触控板共享相同的滚动方向设置。假设这样一个场景:在工作时给 MacBook 接上鼠标,休闲时直接使用触控板,通过系统偏好设置界面来调整滚动方向在切换频繁时很麻烦且低效,有没有更便捷的方式? 使用 AppleScript 脚本可以通过命令行方式来切换滚动方向。 以 OS X EI Capitan 为例,其他系统版本脚本可能会有差异 tell application "...

  • 十月 22, 2015
    在 Spring 项目中配置多个 property-placeholder

    使用 context:property-placeholder 的默认配置,在 Spring 项目中设置多处时会遇到其中某些配置的占位符不能正确替换的情况,如何解决? 提供两个方案: 只设置一处 context:property-placeholder <context:property-placeholder location="classpath*:path/to/*...

  • 十月 14, 2015
    调试跟进 tomcat 源码

    调试 web 应用时,有时需要跟进 tomcat 的源码。下载 tomcat 源码并编译运行是一种方式,不过太麻烦,有没有简单点的办法呢? 给项目加上 tomcat 的 jar 包作为运行时依赖,并附加源码,就可以在调试的时候跟进 tomcat 的源码了。 以 Gradle 和 tomcat 7.0.63 为例,只需在 build.gradle 的 dependencies 中加入如下代码即...

  • 十月 27, 2014
    MongoDB GridFS 读写性能提升关键点

    提升 GridFS 读写性能的关键,就在于分散对 GridFS 的读写请求至集群内的所有分片上,即不能使用 {files_id:1} 来分片。这与官方文档内容完全相悖的矛盾如何能调和呢? MongoDB(v2.6 current) 官方文档中关于 Shard GridFS Data Store 有如下说明: IMPORTANT { files_id : 1 , n : 1 } and { ...

0%