Archived
「 265 」
-
十一月 2024
-
十一月 17, 2024Maven 配置中的仓库和镜像
一些概念仓库(Repository)Maven 中,仓库(Repository)是指存放 pom 和 jar 等文件的地方,分为本地仓库和远程仓库。 本地仓库(Local Repository)本地仓库是 Maven 在本地文件系统中的一个目录,用于存储 Maven 项目的构建输出、依赖库、插件等。默认情况下,本地仓库位于用户目录下的 .m2 目录。可以在 settings.xml 配置文件...
-
十一月 10, 2024【译】Spring Boot 配置绑定
原文地址:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding Spring Boot 配置绑定本页面的目的是详细描述配置项如何绑定到实际对象。它主要面向 IDE 开发人员,但任何对了解绑定工作原理感兴趣的人都可以在本文档中找到有价值的资源。 注意:IDE 对配置绑定的...
-
十一月 03, 2024【转】解析 Spring 计划任务执行多次之谜及解决方案
原文地址:https://wyiyi.github.io/amber/2024/11/01/Scheduled/ 在Spring项目中,@Scheduled注解配置的计划任务(Scheduled Tasks)可能会出现执行多次的情况,尤其是在以下场景中: 一个父类定义了@Scheduled注解的方法,且被多个子类继承。 父类或子类被Spring容器错误地实例化为多个Bean实例。 本文将...
-
十月 2024
-
十月 27, 2024【译】Spring Boot 2.0 中的属性绑定
原文地址:Property Binding in Spring Boot 2.0 原文作者:Phil Webb 自 Spring Boot 的第一个版本发布以来,就可以使用 @ConfigurationProperties 注解将属性绑定到类。还可以用不同的形式指定属性名称。例如,person.first-name、person.firstName 和 PERSON_FIRSTNAME ...
-
十月 20, 2024Spring Cloud 的 Release Train 和版本兼容性
Spring Cloud 发布列车(Release Train)命名规范https://github.com/spring-cloud/spring-cloud-release/wiki/Release-Train-Naming-Convention 介绍Spring Cloud 是一个包含多个独立项目的总项目,这些项目原则上有不同的发布节奏。为了管理这个组合项目,会发布一个 BOM(材料清...
-
十月 13, 2024Java 正则表达式的灾难性回溯
现象重现新建一个 Backtracking.java 文件,内容如下: public class Backtracking { public static void main(String[] args) { System.out.println(System.getProperty("java.version")); System...
-
十月 06, 2024【转】《非暴力沟通》书摘
原文地址:https://wyiyi.github.io/amber/2024/10/01/nonviolent/ 豆瓣评分 7.8 使用暴力的人其实是因为他们内心的宁静遭到了破坏,所以他们才会用暴力的方式维护或寻求心灵的和平。这或许是暴力的蝴蝶效应吧。” 非暴力沟通提醒我们人性是相通的——虽然每个人的价值观和生活方式或许不同,但作为人却有着共同的感受和需要。这样,在发生矛盾和冲突的时...
-
九月 2024
-
九月 28, 2024比较两个相似 PDF 文件的内容差异
本文给出两个比较相似 PDF 文件内容差异的方法,以 《Understanding DeepLearning (5 August 2024)》和 《Understanding DeepLearning (28 August 2024)》为例进行对比。 PyMuPDF + difflib此方法引自 Python对比PDF文件并生成对比文件。 先用 PyMuPDF 提取 PDF 文件中的文字内容...
-
九月 22, 2024领域驱动设计实战
需求概述需求为一个简化的外卖平台,包括下订单、支付、取消、商家接单、准备、派送等功能。 架构风格选择采用领域驱动设计方法进行问题空间分析及解空间设计。划分顾客、商家、骑手、订单、通知五个限界上下文,每个上下文成为一个微服务。服务内部采用分层架构。服务之间以开放主机服务及事件驱动架构。数据库逻辑隔离,通过事件机制保证最终一致性。 统一建模语言 商家(Merchant) 注册 顾客(Consum...
-
九月 15, 2024使用 Arthur Bench 评估本地领域模型
Arthur Bench 简介Arthur Bench 是一个评估大模型的开源工具。 使用 Arthur Bench 评估 LLM,需编写少量代码,即测试套件(TestSuite),在套件中选择内置评分方法(也可自定义评分方法),对 LLM 的相应内容进行评估打分。 内置的评分方法 分为四类: 基于提示词评分,如问答正确性(qa_correctness)、摘要质量(summary_qual...
-
九月 08, 2024【转】掌握 Java 反射机制
原文地址:https://wyiyi.github.io/amber/2024/09/01/Reflection/ 反射机制概述Java 反射机制允许程序在运行时取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 反射机制常用的类 java.lang.Class:代表类和接口,提供了获取类信息的方法。 java.lang.reflect.Constructor:代表类的构造函数。 ...
-
九月 01, 2024【译】如何使用文件标志修改 macOS 中的文件行为
原文地址:https://www.maketecheasier.com/use-file-flags-modify-file-behavior-macos/ 原文作者:Alexander Fox 在 macOS 中,可以使用文件标志(flags)来限制文件被修改的方式。它们与文件权限不同,并且与 chown 和 chmod 等命令并行运行。您将使用 chflags 来更改标志,以及使用...
-
八月 2024
-
八月 25, 2024《解构领域驱动设计》书摘
豆瓣评分 7.3 第一篇 开篇第1章 软件复杂度剖析第2章 领域驱动设计概览第3章 领域驱动设计统一过程第二篇 全局分析第4章 问题空间探索 商业模式画布由9个板块构成。 客户细分(customer segments):企业所服务的一个或多个客户分类群体,可以是企业组织、最终用户等。 价值主张(value propositions):通过价值主张来解决客户难题和满足客户需求,为客户...
-
八月 18, 2024典型智能体框架介绍及实战
对于智能体框架的理解什么是智能体?智能体,英文名称为 Agent,原意为代理人,当前语境下特指基于大语言模型的人工智能代理(LLM-powered agents、LLM based agents)。 关于智能体,目前还没有一个被广泛接受的定义。 “An autonomous agent is a system situated within and a part of an environ...
-
八月 11, 2024Java 后端自动化测试
自动化测试相关概念测试用例测试用例是一组输入、执行条件和预期结果的集合,用于验证软件系统的正确性。 自动化测试自动化测试是指使用自动化工具或脚本来执行测试用例,以减少人工测试的工作量,提高测试效率和准确性。 测试金字塔测试金字塔 是一种指导自动化测试策略的框架,它建议在不同层次上分配不同数量和类型的测试,以确保成本效益、减轻团队负担并提高测试准确性。这个概念最初由 Mike Cohn 提出,...
-
八月 04, 2024构造 ApacheBench 可用的 postfile
摘要在 Web 开发过程中,文件上传功能是常见的需求。对于开发者而言,确保上传功能的稳定性和性能至关重要。 本文将带你了解如何使用ApacheBench性能测试工具对文件上传功能进行性能测试,特别是如何按照规范构造上传文件的请求体,以便评估和提高服务器在高并发情况下的处理能力。 ApacheBench 简介ApacheBench(简称ab)是 Apache 服务器自带的一个性能测试工具,它能...
-
七月 2024
-
七月 28, 2024Maven 实用技巧
Maven WrapperMaven Wrapper 借鉴了 Gradle Wrapper 的思想,可以在工程源码中提交 Wrapper 的脚本和配置,之后在工程目录中使用 mvnw 或 mvnw.cmd 命令代替 mvn 命令,从而保证了各个开发及持续集成环境在构建时使用的 Maven 版本是一致的。 主要文件Maven Wrapper 最主要的是下面三个文件,可以使用 mvn wrapp...
-
七月 21, 2024GitLab Merge Request 的 merge 引用
merge 引用及用途10.3 Git 内部原理 - Git 引用 及 10.5 Git 内部原理 - 引用规范 中介绍了 Git 的引用(references,或简写为 refs)及其规范,可在本地 Git 仓库的 .git/refs 路径下查看已经 fetch 到本地的引用文件。 当我们在 GitLab 中创建一个 MergeRequest 时,remote 仓库中会自动创建 refs/...
-
七月 14, 202410.5 Git 内部原理 - 引用规范
原文地址:https://git-scm.com/book/zh/v2/Git-内部原理-引用规范 源码:https://github.com/progit/progit2-zh/blob/master/book/10-git-internals/sections/refspec.asc 引用规范纵观全书,我们已经使用过一些诸如远程分支到本地引用的简单映射方式,但这种映射可以更复杂。假设...
-
七月 07, 2024【转】Java 8 In Action Lambda
原文地址:https://wyiyi.github.io/amber/ 引言在优化代码的过程中,通过使用Java 8 lambda表达式,减少代码量,提高代码可读性。 lambda 表达式简介Lambda 表达式可以理解为一种匿名函数,它没有名称,但有参数列表、函数体、返回类型,并且可能还有一个可能抛出的异常列表。Lambda 表达式可以作为参数传递给方法,也可以存储在变量中。与匿名内部类相...
-
六月 2024
-
六月 30, 2024【转】10.3 Git 内部原理 - Git 引用
原文地址:https://git-scm.com/book/zh/v2/Git-内部原理-Git-引用 源码:https://github.com/progit/progit2-zh/blob/master/book/10-git-internals/sections/refs.asc Git 引用如果你对仓库中从一个提交(比如 1a410e)开始往前的历史感兴趣,那么可以运行 git ...
-
六月 23, 2024Web Speech API 之 Speech Synthesis
Speech synthesisSpeech synthesis(语音合成,也被称作是文本转为语音,英语简写是 TTS)包括接收 app 中需要语音合成的文本,再在设备扬声器或音频输出连接中播放出来这两个过程。 Web Speech API 对此有一个主要控制接口 —— SpeechSynthesis ,外加一些处理如何表示要被合成的文本 (也被称为 utterances),用什么声音来播出...
-
六月 16, 2024【译】向量搜索的相似度度量
英文原文:Similarity Metrics for Vector Search 原文作者:Yujian Tang 你不能比较苹果和橙子。或者你可以吗?像 Milvus 这样的向量数据库允许你比较任何你可以向量化的数据。你甚至可以在你的 Jupyter Notebook 中做到这一点。但是 向量相似性搜索 是如何工作的呢? 向量搜索有两个关键的概念组成部分:索引和距离度量。一些流...
-
六月 09, 2024《实现领域驱动设计》书摘
豆瓣评分 8.4 如何使用本书 一种能够支撑限界上下文的架构是六边形(Hexagonal)架构,它可以辅助其他架构风格,比如面向服务(Service-Oriented)架构、REST和事件驱动(Event-Driven)等。六边形架构如图G.3所示 在领域模型中,有些业务操作并不能自然地放在实体或值对象上,此时我们可以使用无状态的领域服务(Domain Service,7),如图G.5...
-
六月 02, 2024Vanna 离线环境部署
Vanna 简介Vanna 是一个 MIT 许可的开源 Python RAG(Retrieval-Augmented Generation)框架,可以用来以对话形式与 SQL 数据库交互。 Vanna 提供两种使用方式: 代码调用,如 vn.ask("What are the top 10 customers by sales?") 基于 Flash 的 Web 应用 ...
-
五月 2024
-
五月 26, 2024给 Mac 上一个保险
如果你体会过在 Mac 上手残 rm -f 了一个重要的文件的痛苦,可以试试 trash。 TL;DR安装 trash 命令: brew install trash 然后将下面的命令添加到 ~/.bashrc 或 ~/.zshrc 文件中: alias rm='/usr/local/bin/trash -F' 这样,以后使用 rm 命令删除文件时,文件会被移动到回收站(并且可...
-
五月 19, 2024使用 modelscope 在离线环境部署模型服务关键点
在 ModelScope 的 本地启动服务 文档中,介绍了使用 modelscope server 发布模型服务的方法。简单来说,就是执行如下命令: modelscope server --model_id=qwen/Qwen-7B-Chat --revision=v1.0.5 但在离线环境中使用上述命令时,可能会遇到各种问题。本文以使用 modelscope 最近的(2024-04-27)...
-
五月 12, 2024识别旋转验证码图片角度
代码库简单聊聊旋转验证码攻防 中介绍了一些旋转验证码的攻防思路,并提供了 rotate-captcha-crack 实现。 README 文档的 Prepare 部分提到需要支持 CUDA10+ 的设备(GPU),经实测,在 Windows CPU 环境下也可使用,且性能基本满足需求。 调整为 CPU 版本为在 Windows CPU 环境执行 test_captcha.py 脚本验证旋转角...
-
五月 05, 2024MacOS 实现自动切换鼠标滚动方向
实现效果想在 macOS 上实现如下效果: 连接了(非 Magic Mouse)鼠标时,系统自动切换鼠标滚动方向为“非自然”; 断开鼠标连接时(使用触控板),系统自动切换鼠标滚动方向为“自然”。 注:本文使用的脚本在 macOS Monterey 12.7.4 上测试通过,其他系统版本可能存在一些差异。 实现方式使用 AppleScript 实现切换滚动方向切换滚动方向为 “自然”s...
-
四月 2024
-
四月 27, 2024【译】如何在 Spring 中将 @RequestParam 绑定到对象
原文地址:How to bind @RequestParam to object in Spring 原文作者:Daniel Olszewski 你的请求映射方法中是否有多个用 @RequestParam 注解的参数?是否感觉它们影响了易读性? 当请求只有一两个入参时,这个注解看起来非常直观,但是当参数列表变长时,你可能会感到不知所措。 你不能在对象内部使用 @RequestParam ...
-
四月 21, 2024《Learning Domain-Driven Design》书摘
https://book.douban.com/subject/35470134/ Introduction Domain-driven design (DDD) proposes to attack the root cause for failed software projects from a different angle. Effective communication is t...
-
四月 14, 2024无外网环境部署 AgentFabric 及使用 AgentFabric 构建的 Agent
目标:在纯内网环境完成基于 ModelScope-Agent 的可定制化的 Agent 的构建和发布 前提:需在有外网环境提前下载好所需内容 一、外网环境中下载所需内容在可以访问外网的环境中,准备一个工作目录(如:/data/work),在这个目录下进行后续操作。 1. 拉取镜像拉取 ModelScope-Agent 镜像,镜像中已经安装好所需依赖。 docker pull regist...
-
四月 06, 2024iTerm2 冷启动提速
iTerm2 在升级系统之后,冷启动(开机后第一次启动)的速度异常的慢,需要几十秒才能进入可用状态。之后无论是开新窗口还是退出重进的速度都还挺正常的。 虽然升级系统之前冷启动速度也不快,但并没有慢到这么令人难以忍受。 经过几轮较量,最终恢复了秒级冷启动。将过程和尝试的办法记录如下。 TL;DR: Final Round —— git效果最明显的改动:将系统自带的 Apple Git 替换为 ...
-
三月 2024
-
三月 31, 2024Git Commit Tree Browser
原文地址:https://wyiyi.github.io/amber/2024/04/01/git-commit-tree/ 痛点在Git项目中,代码的频繁迭代会使得追踪项目文件结构变化的过程异常艰难,尤其是历史 commit 中存在、当前最新版本中已经不存在的文件/文件夹。 为了解决这个问题,Git Commit Tree Browser 提供了一个高效的解决方案。 简介Git Commi...
-
三月 24, 2024Lottie in Action
Lottie 是什么?Lottie 是什么? 简单来说,它是一种使用 JSON 表示的动画格式,由 Airbnb 推出。 具有更小的文件尺寸 无限缩放 跨平台、易使用 动画元素可响应交互事件 相关资料 LottieDocs 是关于 Lottie 格式的指南文档站点。 LottieFiles 是一个让动画制作者和开发者即时创作、测试、分享及展示 Lottie...
-
三月 17, 2024焊接是容易的
ANNOUNCING THE “SOLDERING IS EASY” COMPLETE COMIC BOOK! 英文版 中文版 英文版备用地址 中文版备用地址
-
三月 10, 2024全国中小学信息技术创新与实践大赛(NOC)Python 在线练习
收集到的一些 NOC Python 真题和模拟题 在线练习地址:https://alphahinex.github.io/NOC 欢迎纠错和补充习题 题库文件 noc.js,题目格式: { "question":"[多选]下面哪些代码可以往列表 ls 中添加元素?", "image":"noc/mock27...
-
三月 03, 2024《程序员的README》书摘
豆瓣评分 8.7 无论你处于职业生涯的哪个阶段,这本书都非常实用。请保持开放的心态,好学深思,渴望提高,不惧破旧习,不惧提问题。 本书第1~2章讲解当你在公司开启你的职业生涯时会发生什么; 第3~11章会扩展你的工作技能,教你如何使用现有代码库、解决和防止技术债、编写生产级软件、管理依赖关系、有效地测试、评审代码、交付软件、处理On-Call时的事故和构建可演进的架构等; 剩余章节涵...
-
二月 2024
-
二月 25, 2024小米 4A 千兆版路由器禁 ping
小米路由器的官方固件中并不支持设置禁 ping。 本文借助 OpenWRTInvasion 利用 Root Shell 漏洞实现小米4A千兆版路由器禁 ping。 OpenWRTInvasionOpenWRTInvasion 是一个可以获得小米路由器 Root Shell 权限的工具,支持多种路由型号和固件版本,也有一些写明 不支持的型号和固件版本。 以小米4A千兆版路由器为例,分为国内版、...
-
二月 18, 2024《蛤蟆先生去看心理医生》书摘
豆瓣评分 8.4 第五章 成长的寓言 老师不同于咨询师的一个地方就是,老师用讲解模式,而咨询师用倾听模式。 如果我能成功教会你理解‘儿童自我状态’,你就能用这些概念来探索自我和你个人的经验了。记住,能实践的理论才是好的理论! 我们的某些基本情感是与生俱来的,就好像红黄蓝三原色,对所有婴儿来说都是类似的。然而当我们作为个体开始发展的时候,我们的情绪和反应都变得越来越个人化,就好像几种...
-
二月 11, 2024MacBook Pro (Retina, 15-inch, Mid 2015) 风扇清灰及重涂导热硅脂
服役 8 年多的 MacBook Pro (Retina, 15-inch, Mid 2015) 几乎只在刚开机时稍微安静一些 一旦起飞,风扇就一直满速旋转,直到关机才能再次安静下来: 年前进行了风扇清灰和重涂导热硅脂的操作,简要记录一下过程和效果。 准备工作Macbook Pro Retina 15’A1398(2013年末,i7,GT 750M)拆卸、清洁、重新组装 .bv...
-
二月 03, 2024基于 MyBatis 拦截器机制实现一个敏感数据处理组件
引言MyBatis 作为一个流行的持久层框架,提供了拦截器 Interceptor 机制,允许开发者在 SQL 执行过程中插入自定义逻辑。本文将深入探讨 MyBatis 拦截器的用法和使用场景,并以处理敏感数据场景为例实现了一个自定义拦截器。 Interceptor 介绍MyBatis 官网中 Interceptor 的介绍: MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用...
-
一月 2024
-
一月 28, 2024HumanEval-X
HumanEval-X 是 清华大学 KEG 实验室 THUDM 在 CodeGeeX 系列多语言代码生成模型中提供的一套评价标准。 使用了与 HumanEval 相似的评价方式,不同的是,除 Python 外还包含了 C++、Java、JavaScript、Go 及 Rust 语言的手写样本,可对上述语言的代码生成能力进行评价: 接下来,我们以评估 StarCoderBase-7B 模型...
-
一月 19, 2024正确管理kubernetes有状态应用之nacos
介绍本文旨在分享 kubernetes 环境下如何管理 nacos,阅读本文需要一定 kubernetes 基础。 nacos介绍nacos 是阿里开源的一款注册中心、配置中心软件。更多信息移步:https://nacos.io/zh-cn/docs/what-is-nacos.html 有状态应用管理方式Kubernetes 有状态应用管理方式,通常有三种:手动、helm、operator...
-
一月 14, 2024JupyterLab 实战
Project Jupyter (/ˈdʒuːpɪtər/) 是一个旨在开发跨多种编程语言的交互式计算的开源软件、开放标准和服务的项目。 Project Jupyter 已经开发和支持了交互式计算产品 Jupyter Notebook 和 JupyterLab。 Jupyter Notebook 是经典的 Notebook 交互界面,JupyterLab 是下一代的 Notebook 交互界...
-
一月 07, 2024《只有偏执狂才能生存》书摘
豆瓣评分 7.8 前言 计划的制订应该仿效消防部门。谁也不能预料下一次火灾将在何处发生,因而要做的事就是组建一支精力充沛、效率很高的队伍,使之能够像处理普通事件一样处理意外事件。 第二章 10倍速变化 既然回顾往事的时候还不能说清何时出现了战略转折点,那么身处其中的时候又怎么能回答这个问题呢?经历转折点的人感觉到转折点的时间并不一致,就像队伍中的人感觉到迷路的时刻有先有后。 第三...
-
十二月 2023
-
十二月 31, 2023HumanEval
HumanEval 是 OpenAI 用来评估大语言模型生成代码能力的工具,包括手写的 164 个 python 编程问题及解答的 jsonl 格式数据,以及执行评估的脚本。 数据集先来看下数据集,下面是 HumanEval.jsonl.gz 中的一条数据: { "task_id": "HumanEval/0", "promp...
-
十二月 24, 2023离线环境下 Maven 编译打包
背景某些离线场景下我们可能无法连接 Maven 中央库或其他内网私服,又想通过 Maven 对源码进行编译打包。 本文给出了在离线环境下使用 Maven 编译打包的方案。 前置条件假设目标环境已经安装好了 JDK 和 Maven,并且将要编译的源码工程 demo-project 放置在了 /maven-offline/build 路径下。 解决方案准备编译所需依赖先在联网环境成功执行一次编...
-
十二月 17, 2023《芯片战争》书摘
https://book.douban.com/subject/36350632/ 8.4 推荐序 国运升级点 我们整天说创新,殊不知谈创新不谈风险、不谈颠覆的,都是伪创新。 引言 中国台湾地区的芯片每年提供全球37%的新计算能力。两家韩国公司生产的存储芯片占全球的44%。荷兰公司阿斯麦制造了全世界100%的EUV光刻机 第一部分 冷战时期的筹码 如果不是因为飞蛾的话,这就是计算领域的...
-
十二月 10, 2023SonarQube 项目总览状态导出工具
随着 SonarQube 上的项目越来越多,我们希望能够对这些项目按照一定的指标进行筛选,比如: Size 为 L 且 Duplications 在 5% - 10% 之间的项目 Coverage 在 60% 以上的项目 Sonar 界面中提供的筛选功能,只能按照指定的范围进行筛选,并且每个指标除了第一个和最后一个范围,中间的范围都是包含下面范围的。例如 Coverage 指标提供的范围...
-
十二月 03, 2023MyBatis-Plus 中的 IService 和 BaseMapper
原文地址:https://wyiyi.github.io/amber/2023/12/01/mybatis-plus/ MyBatis-Plus 作为一个优秀的 ORM 框架,致力于简化和提高 Java 应用程序对数据库访问的效率。 在使用的过程中,发现 MyBatis-Plus 提供了 BaseMapper 和 IService 两个核心接口,但有些相似之处:它们如何使用及使用场景分别是什...
-
十一月 2023
-
十一月 26, 2023Windows Git Bash 中使用 sshd 服务
Windows 环境下,可以通过 Git 中的 Git Bash 启动 sshd 服务。 进入 Git Bash 后,先生成 ssh_host_rsa_key: ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 之后会在 Git 安装路径下的 /etc/ssh 中生成 ssh_host_rsa_key、ssh_host_rsa_key.pub 两个...
-
十一月 19, 2023【转】由 System.gc() 频繁引起 Full GC 的问题排查
原文地址:https://mp.weixin.qq.com/s/IHMHP9b-k0XwKPE1KjpLoQ 早上服务频繁出现 Full GC 报警(由于昨晚下掉了 -XX:+DisableExplicitGC 参数,其实会有 Full GC 产生已经在意料之中,但属实没想到会触发的这么频繁), 这里 JVM 总共运行了 4531.278 s,可以看到差不多半分钟一次 Full GC,单次...
-
十一月 12, 2023《机器学习实战》书摘
第一部分 机器学习的基础知识第1章 机器学习概览1.2 为什么使用机器学习 使用机器学习方法挖掘大量数据来帮助发现不太明显的规律。这称作数据挖掘。 1.4 机器学习系统的类型 根据训练期间接受的监督数量和监督类型,可以将机器学习系统分为以下四个主要类别:有监督学习、无监督学习、半监督学习和强化学习。 在机器学习里,属性是一种数据类型(例如“里程”),而特征取决于上下文,可能有多个含义,...
-
十一月 05, 2023DB-GPT v0.4.0 使用通义千问 API Chat Excel
DB-GPTDB-GPT 是一个使用本地大模型(或在线 API)与数据交互的开源项目,Demo 中使用 ChatGPT 3.5 的接口,效果很吸引人。 让我们以 通义千问 为例,试试使用国产大模型在 DB-GPT 中能否达到类似的效果。 通义千问 API要通过 API 使用通义千问模型,需要在阿里云灵积模型服务中 开通DashScope并创建API-KEY,获得 sk-xxxxx 格式的 ...
-
十月 2023
-
十月 29, 2023Redis 5 集群断电故障处理指北
现象 Redis 版本:5.0.9 Redis 集群使用 Bitnami Redis Cluster Chart(appVersion: 5.0.9, version: 2.0.14)部署在 K8s 中 集群配置:三主三从六节点 集群断电后重启出现故障节点,报错日志 Unrecoverable error: corrupted cluster config file.。 故障时集群各节点状...
-
十月 22, 2023隐藏 Tomcat 版本信息
访问 Tomcat 发布的应用中不存在的页面或 URL 中包含特殊字符时,会看到下面这样的界面: http://localhost:8080/not-exist http://localhost:8080/([%5E 如遇安全扫描等场景希望不暴露 Tomcat 版本信息时,可以在其配置文件 conf/server.xml 中的 Host 元素内添加如下内容: <Valve clas...
-
十月 14, 2023一种从 🤗HuggingFace 下载模型的方法
无法直接从 HuggingFace 下载模型时,可借助此仓库,使用 GitHub Actions 构建一个 Docker 镜像,在镜像中用 huggingface_hub 下载好所需模型,再将镜像推送至 Docker Hub,最后以下载镜像方式曲线下载模型。 可用模型(tags)当前可用模型可见仓库 tags,仓库 tag 对应镜像 tag,如: 下载 codet5-small tag 对...
-
十月 07, 2023【转】查看依赖树的利器
原文地址:https://wyiyi.github.io/amber/2023/10/01/Dependency%20Tree/ 依赖树(Dependency Tree)工具,可以查看和分析项目的依赖关系。 本文将介绍 maven 和 gradle 两种构建如何查看依赖树。 使用命令行查看 命令行工具来查看项目的依赖树,执行命令: mvn dependency:tree gradle d...
-
十月 01, 2023Linux 中前台进程转后台,并重定向输出
有时候我们直接在终端中执行了命令,等待很长时间后发现还需要很久才能执行完,又不想一直开着终端等待结果,可以按照下面的方式,将前台进程转至后台,并重定向输出内容至文件,以便随时连接回来查看执行状态。 示例程序假设我们需要执行很久的任务是下面这段脚本:每隔五秒打印一段内容至控制台。 $ cat > test.sh << EOF > while true; do > ...
-
九月 2023
-
九月 24, 2023Sonar Quality Gates
Sonar Quality GatesSonarQube 简称 Sonar,是一个能够帮助我们编写整洁、安全代码的平台。通过 SonarScanner 对代码进行扫描,之后将扫描结果展现,如 https://next.sonarqube.com/sonarqube/projects : Quality Gates 可译为质量门禁,能够检查新增代码是否满足其中的规则要求,以判断新代码是否达到...
-
九月 17, 2023【译】可视化神经机器翻译模型(Seq2seq 模型的注意力机制)
原文地址:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/ 作者:Jay Alammar .encoder{ color:#70BF41 } .decoder{ color:#B36AE2 } .conte...
-
九月 10, 2023PS3 HDMI 芯片损坏低成本修复
很久没开机的 PS3,开机时发现没有图像,绿灯常亮。 换 HDMI 线、口、电视,分别出现无图像、雪花、只能输出 480p 分辨率情况。 480p 分辨率下虽然能凑合玩,但游戏中文字等内容辨识困难。 基本确诊为 HDMI 芯片损坏。 在看了 hdmi端口坏了的替代品 帖子中内容后,觉得可以一试,某宝等平台上搜 ps2色差转hdmi 感觉是跟帖子里一样的转换器,但问卖家,都说 PS3 不能用,...
-
九月 03, 2023【转】探索前端的 this 指向
原文地址:https://wyiyi.github.io/amber/2023/09/01/this/ 在前端开发中,this 是一个常见的概念。它代表了当前执行上下文中的对象或函数,并且在不同的情况下,this 的指向也会有所不同。 本文将深入探讨 this 在前端开发中的应用场景以及不同情况下的指向规则,更好地理解和运用 this 指向。 小试牛刀1、普通函数、箭头函数组合使用var n...
-
八月 2023
-
八月 27, 2023马桶实用技术
事情要从家里马桶水封慢慢下降说起…… 水封,指的是冲过马桶之后,马桶内可以看到的留下的水。一旦水封失效,就可能会造成卫生间返臭和滋生生物进入卫生间的情况。 我这的现象是:水封高度会慢慢下降,直至水封效果完全失效。水箱中的补水管如果插入排水阀边上的溢水管,则水封能够留存更长时间,但水箱中水位会下降,导致一段时间后水箱开始持续发出响声进水,除非手动去按压一下进水阀的浮筒,才会停止响声并补满水。...
-
八月 20, 2023《Python 神经网络编程》书摘
第 1 章 神经网络如何工作1.2 一台简单的预测机 更多又去的问题是没有一个简单的数学公式将输出和输入关联起来的。这就是我们需要诸如神经网络这样相对成熟而复杂的方法的原因。 关键点 当我哦们不能精确知道一些事情如何运作时,我们可以尝试使用模型来估计其运作方式,在模型中,包括了我们可以调整的参数。 改进这些模型的一种好方法是,基于模型和已知真实示例之间的比较,得到模型偏移的误差值,调整参...
-
八月 13, 2023Thymeleaf —— 简化 Java Web 开发的强大模板引擎
原文地址:https://wyiyi.github.io/amber/2023/08/01/thymeleaf/ Thymeleaf 是一种用于在服务器端和客户端之间渲染 HTML、XML、JavaScript、CSS 和文本的 Java 模板引擎。 模板引擎在 Web 领域的主要作用:让网站实现界面和数据分离,这样大大提高了开发效率,提供自然、灵活的模板处理功能,让代码重用更加容易。 Sp...
-
八月 06, 2023kubelet 架构设计解析之 Memory Manager
作者:@weiliang-ms 1. Memory Manager介绍说明Memory Manager(译为内存管理器)是 kubelet 内部的一个组件,旨在为 Guaranteed QoS 类型 pod 提供保证内存(和大页内存)分配功能,该特性提供了几种分配策略: 单 NUMA 策略:用于高性能和性能敏感的应用程序 多 NUMA 策略:补充完善单 NUMA 策略无法管理的情况 也...
-
七月 2023
-
七月 30, 2023kubelet 架构设计解析之 CPU Manager
作者:@weiliang-ms CPU Manager 介绍说明CPU Manager 是 kubelet 的一个组件,能够让用户给容器分配独占 CPU。CPU Manager 从 Kubernetes v1.10 进入 Beta 阶段, 在 Kubernetes v1.26 中,它进阶至正式发布(GA)状态。 注:本文涉及源码基于 kubernetes v1.23 CPU Manager ...
-
七月 23, 2023让 AI 辅助编写内部代码
在 用 PaddleNLP 结合 CodeGen 实现离线 GitHub Copilot 和 GitHub Copilot 开源替代品 —— FauxPilot 中,我们分别使用 PaddleNLP 和 FauxPilot 将 CodeGen 模型代理为可通过 HTTP 请求访问的接口,并通过 VS Code 插件在 IDE 中获得与 GitHub Copilot 类似的 AI 辅助编码能力...
-
七月 16, 2023处理大数据集的灵活格式 —— JSON Lines
JSON Lines,顾名思义,就是每行都是一个 JSON,是一种文本格式。 在处理和分析大型数据集时,JSON Lines 格式成为了一种受欢迎的选择。JSON Lines 通过将每个 JSON 对象放在独立的一行中,使得逐行读取和处理数据变得简单,易于处理大型数据集、容易与现有工具集成,具有灵活性和可扩展性、易于阅读和维护等特点。 与传统的 JSON 格式相比,JSON Lines 不需...
-
七月 09, 2023《自然语言处理实战》书摘
第 1 章 自然语言处理介绍1.1 什么是自然语言处理 自然语言通常所指的不仅是文本数据,还包括语音和声音数据。 1.1.1 热门应用 自然语言生成的一个流行的商业应用是“数据到文本”的软件系统,它生成数据库和数据集的文本摘要。 自然语言处理的一个主要挑战是从非结构化或半结构化的文档集合中创建结构化的数据。例如,命名实体识别软件能够从主流新闻等长篇文本中提取任务、组织、地点、日期和货币...
-
七月 02, 2023scp 用法
scp 是 Linux 上两个网络主机之间传输文件的命令行工具。 基本用法scp [options] source ... target options 有很多,可通过 man scp 查看 source 为传输的源文件或路径,可以多个 target 为传输目标路径 source 或 target 为本地路径时,直接使用文件系统绝对路径即可;当为远程路径时,可使用如下两种格式: use...
-
六月 2023
-
六月 24, 2023【转】CPU飙升排查
原文地址:https://softleadergy.github.io/CPU%E9%A3%99%E5%8D%87%E6%8E%92%E6%9F%A5/ CPU飙升线上资源cpu飙升是我们工作中常见的问题,一篇文章搞定排查方法 一、问题复现现在我有两个接口,代码如下 @RestController public class CPUCheck { @RequestMapping("...
-
六月 18, 2023GitHub Copilot 开源替代品 —— FauxPilot
用 PaddleNLP 结合 CodeGen 实现离线 GitHub Copilot 介绍了使用 PaddleNLP + CodeGen 实现类似 GitHub Copilot 服务端的方式,客户端在 VSCode 中使用了 FauxPilot 插件。 FauxPilot 插件原本是对接 FauxPilot Server 的,通过 FauxPilot Server 也可以实现 GitHub ...
-
六月 11, 2023用 PaddleNLP 结合 CodeGen 实现离线 GitHub Copilot
代码生成:写代码的AI助理 中给出了用 PaddleNLP 结合 CodeGen 实现代码 AI 助理的例子。 文档内容比较简略,实操下来可能会遇到不少问题。本文以离线环境部署为前提,给出一个实际案例。 效果展示先上最终效果: Prerequisite为避免各种组件版本的兼容性问题,本文使用 Docker 方式部署,并需装好显卡驱动等。可按下述方式检查所需组件状态。 显卡驱动$ nvidi...
-
六月 04, 2023《领导力》书摘
推荐序一 领导者应该干什么?怎样干才能事业成功?才能在组织中成就卓越? … 任何一个普普通通的人,只要养成以身作则、共启愿景、挑战现状、使众人行和激励人心这五种习惯行为,成为卓越领导者将是大概率时间,形成的卓越领导力将是真实可信的。 毛泽东认为领导工作千头万绪,但只有两件大事,一是出主意,二是用干部。换言之,决策行为和用人行为就是卓越领导不可或缺的两大行为。决策行为就是要共启愿景、挑战现...
-
五月 2023
-
五月 28, 2023用 IDEA 写更整洁的 Java 代码
Tools | Actions on Save新版本 IDEA 支持设置保存时的动作,在 Preferences 下的 Tools | Actions on Save 中: 支持如下动作: Reformat code: 根据当前代码风格设置执行格式化代码动作,可设置生效的文件类型及范围(整个文件、变更部分) Optimize imports: 根据当前代码风格设置执行移除无用 impor...
-
五月 21, 2023《A Survey of Large Language Models》论文 v4 中文版摘抄
摘要 有趣的是,当参数规模超过一定水平时,这些规模扩大的语言模型的性能不仅得到了显著提升,而且还表现出一些小规模语言模型(如 BERT)所不具备的特殊能力(如上下文学习)。 1 引言 语言建模是提高机器语言智能的主要方法之一 可以分为四个主要发展阶段 统计语言模型(SLM) 神经语言模型(NLM) 预训练语言模型(PLM) 大语言模型(LLM) 本综述从四个主要方面对 LLM ...
-
五月 14, 2023PaddleNLP 离线使用已下载好的社区模型
TL;DR使用 PaddleNLP 加载社区模型时,因为社区模型需联网下载,可先从在线环境进行模型下载,再将下载好的模型传输到离线环境中。此时在离线环境下可能会遇到 https://github.com/PaddlePaddle/PaddleNLP/pull/5817 中描述的问题,可参照该 PR files 中内容修改,以支持离线环境的正常使用。 PaddleNLP PaddleNLP是一...
-
五月 07, 2023《增长结构》书摘
豆瓣评分:8.5 推荐序二 全面地思考企业的增长问题 优秀的公司赚取利润,伟大的公司赢得人心。亚马逊的创始人杰夫·贝佐斯甚至提出:“不要关心你的竞争对手,他们又不给你钱。”企业应该把关注点放在用户身上,洞察他们的需求,跟他们建立紧密连接——包括情感连接,成为他们心中的“不二之选”。这些忠诚用户才是企业的基石。 业务结构 撤退线+成长底线+增长线+爆发线+天际线 防守线:护城河+客户资...
-
四月 2023
-
四月 30, 2023分析 Gitlab 提交记录的命令行工具
是什么GitLab Analyser 是一个使用 Golang 编写的跨平台命令行工具。 通过调用 GitLab REST API ,可分析指定项目和分支在某时间范围内的 Commit 情况,包括: 统计每个提交中修改的所有文件 统计新增代码行数、减少代码行数 —— 相当于 git diff 统计有效新增代码行数(忽略空格和换行的新增代码行数)、有效减少代码行数 —— 相当于 git di...
-
四月 22, 2023《GraphQL in Action》书摘
Chapter 1: Introduction to GraphQL1.1 What is GraphQL?1.1.2 GraphQL is a specification GraphQL operationsQueries represent READ operations. Mutations represent WRITE-then-READ opera- tions. You can...
-
四月 16, 2023借助 Data File 实现请求数据与 Postman 脚本的分离
Why:问题背景在 使用 Postman 进行系统可接受性测试 中,我们介绍了使用 Postman 进行持续测试的方法。实际使用中,我们遇到了这样一个问题: 某个请求的请求体(Request Body)异常的大,JSON 格式,80KB+,占整个 Postman 脚本的近 40% ,格式如下: { "roleId": "{{role_id}}", ...
-
四月 09, 2023OpenVidu —— 可在内网环境使用的开源 WebRTC 视频会议平台
OpenViduOpenVidu 是一个基于 Apache 2.0 协议的开源 WebRTC 视频会议平台,主仓库地址:https://github.com/OpenVidu/openvidu 。 OpenVidu 提供一套简单、高效、易于使用的 API 接口,将 WebRTC 的底层操作进行了封装及屏蔽,只需引入 OpenVidu 的服务端和客户端处理媒体流,兼容多种平台、前后端框架,并...
-
四月 02, 2023Builder Pattern
原文地址:https://wyiyi.github.io/amber/2023/04/01/builderPattern/ Builder PatternBuilder Pattern ?Builder 设计模式是一种创建型设计模式,旨在处理相对复杂的对象的构造。也称 建造者模式。 Builder 模式可以通过使用另一个对象(生成器)来构造对象来分离实例化过程。 这样就可以使用相同的构建过程...
-
三月 2023
-
三月 26, 2023GitHub Actions 再战
接续 GitHub Actions 实战 ,继续介绍一些持续集成环境常用功能的实现方式: CD构建命令中,可能有切换路径的需要。 每次使用 jobs..steps[*].run 的 run 关键字时,会在 runner 环境中使用一个新的进程和 shell。所以当需要切换路径时,可以通过如下三种方式: 单行命令: - name: Install Dependencies - run: c...
-
三月 19, 2023HTTrack 克隆网站至本地
可能有时我们会希望将整个静态网站克隆至本地,比如在一个纯内网或离线环境中阅读当前最新的 Spring Framework v6.0.6 的 官方文档。 HTTrackHTTrack 就是这样一个工具,能够以一个 URL 为入口,将其中包含的几乎全部(深度 9999)静态资源都抓取回来,并将包含该站点的链接修改为相对链接,以便于在本地进行导航浏览。 完成首次克隆后,还可以再次执行进行更新,实现...
-
三月 12, 2023《定位》书摘
序二 从营销和战略的角度,我们把美国企业主流的经营哲学称为A(America)模式,把日本企业主流经营哲学称为J(Japan)模式。总体而言,A模式最为显著的特点就是聚焦,狭窄而深入;J模式则宽泛而浅显。 第1章 定位的本质传播过度的社会极度简化的心智极度简化的信息第2章 心智遭受信息轰炸传播渠道堵塞布朗、康纳利和雪佛兰媒体暴增产品暴增广告暴增第3章 进入心智容易进入心智的做法 “第一胜过...
-
三月 05, 2023openEuler 社区人才认证考试
原文地址:https://wyiyi.github.io/amber/2023/03/01/openEuler/ 学习资料及随堂测磨题帮导入数据下载地址:https://github.com/AlphaHinex/AlphaHinex.github.io/tree/develop/source/contents/openEuler openEuler 社区人才认证考试01 系统安装概述 通常...
-
二月 2023
-
二月 26, 2023镜像 Git 仓库,并保持同步
有 A、B 两个 git 仓库,想实现类似主从数据库的效果: A 库作为主库提交 Commit 记录 B 库作为备份库,同步 A 库内容,并在不影响 A 库的情况下提供读取、分析等操作 假设 A 库地址为 http://git/repo/source.git B 库地址为:http://another/git/sourcemirror.git TL;DR全量镜像,执行一次: rm -...
-
二月 19, 2023使 nip.io 域名在纯内网环境可用
在 简单,却伟大 中,我们介绍了几个非常简单,但又非常强大的 DNS 解析服务,如 nip.io、sslip.io、localtest.me 等。 然而在 K8s 集群内部,或没有 DNS 服务的纯内网环境中,我们却无法直接使用这些服务。 那就只能回归到挨个域名配置 host 的原始方式了吗?不!有一个能解析这类域名的 DNS 服务就可以了。 CoreDNSCoreDNS 是一个用 Go 编...
-
二月 12, 2023数据不直观?试试 RAWGraphs
大大小小的决策离不开数据的支撑,然而从数据的海洋中挖掘或分析出有价值的信息,没有好的工具几乎是不可能完成的任务。 比如下面的数据: 这是一份来自 www.gov.uk 的关于英国 2050 年能源流动的预测数据。 从二维的数据表格中,很难直观的看到数据想要说明的内容。但如果这份数据是以下面这种形式展示的呢: 相同的空间,相同的数据,适当的图表,能够比数据表格传递出更多更有价值的信息。 那...
-
二月 05, 2023批量上传 Jar 包至 Maven 仓库
如果你有一些只有 Jar 包没有 pom 文件的类库需要上传至 Maven 仓库(如 Nexus),或 Jar 和 pom 都有,但需要通过离线方式从一个 Maven 仓库迁移至另一个 Maven 仓库,可以试试下面这个命令行工具。 Upload Jars:https://github.com/AlphaHinex/go-toolkit/tree/main/upload-jars 简介批量上...
-
一月 2023
-
一月 29, 2023想知道你的公众号昨日都有哪些文章被阅读了吗?
在微信公众平台中,提供了前一日 00:00 ~ 24:00 的阅读、分享、关注数统计,如: 但当我们想知道这个昨日阅读的次数,分别是由哪些文章产生的,每篇文章新增了多少阅读量时,无论桌面端的微信公众平台还是移动端的订阅号助手,都无法给出我们这个明细数据。 如果能有这样一个统计每天推送过来就好了: 快速体验加入钉钉群使用钉钉扫描下方二维码,申请加入钉钉群,以便接收阅读量统计消息。 向 周...
-
一月 15, 2023《大教堂与集市》书摘
豆瓣评分 8.4:https://book.douban.com/subject/25881855/ 译者序 Eric在本书中向大家展示了两种最为经典且截然不同的模式:大教堂模式和集市模式。传统大型软件公司的开发模式就像是艰难而缓慢的大教堂建造工程,它有着严密的管理和封闭的集中式结构,但在创新上、生产力上和Bug控制上却落后于集市模式。集市模式是一种并行的、对等的扁平化开发结构,其参与者大多...
-
一月 08, 2023markdown 写微信公众号,排版交给 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, 2022TiDB 数据库管理 [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, 2022K8s 中的 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, 2022TiDB 数据库核心原理与架构 [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, 2022MapStruct - 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, 2022GitBook 本地使用排雷,及导出基本可用的 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, 2022Java 线程状态介绍
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, 2022ApacheBench 简介
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, 2022FastDFS 性能测试
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, 2022Kafka 性能测试
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, 2022MySQL 脚本转 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, 2022JavaCC 实战
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, 202224 个沟通套路,让你一开口就大受欢迎
【认知天赋】这个世界,还要误解内向者多久?内向的你,令人垂涎的 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, 2022JS 中的四舍五入
由于 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, 2022macOS 路由设置
经常会有需要连接多个网络环境的需求,比如通过网线连接内网,通过无线连接外网,想要同时连接内外网时,需要进行路由的配置,以通过不同的网卡访问不同的地址。 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, 2022Spring 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, 2021ThreadLocal 泄露实例
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, 2021iTerm2 快速通过跳板机 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, 2021GMT+8 和 Asia/Shanghai 的区别
时区 现今全球共分为24个时区。实际上,常常1个国家或1个省份同时跨着2个或更多时区,为了照顾到行政上的方便,常将1个国家或1个省份划在一起。所以时区并不严格按南北直线来划分,而是按自然条件来划分。例如,中国幅员宽广,差不多跨5个时区,但为了使用方便简单,实际上在只用东八时区的标准时即北京时间为准。 —— 引自百度百科 时区 时区可以使用名称(如:东八区、西五区)、偏移量(如:UTC+8、...
-
十月 24, 2021Cloud Native Healthcare Security Application Management Platform
首先进行个简单的介绍: 东软医保云应用管理平台,这个名字比较长,所以我们内部起了个代号,即 Code Name —— CHAMP,意为:Cloud Native Healthcare Security Application Management Platform,是一个 面向多云微服务架构新医保应用的 / 云原生应用管理平台,之后我会简称为云平台或 CHAMP。 再来介绍一下 面向多云微服...
-
十月 17, 2021Servlet 之 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, 2021Real-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, 2021Real-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, 2021HTML <form> 只支持 GET 和 POST!
HTML form method在 Web 开发中,常规的提交数据方式为使用 form 表单,例如: <form action="" method="get" class="form-example"> <div class="form-example"> <label ...
-
八月 15, 2021Go text tempate
text/template 是 Go 的标准库,提供数据驱动的文本模板生成功能。 Quick start先来快速感受一下,将下面代码保存为 template.go: package main import ( "os" "text/template" ) func main() { text := `START [Actio...
-
八月 08, 2021Flyway 实战
Using Liquibase with Gradle in Spring Project 中,介绍了数据库版本控制工具 Liquibase,并且总结到 面向 SQL,选择 Flyway 不面向 SQL,选择 Liquibase 如果你还在单独分发数据库变动脚本,甚至简单粗暴的将开发库直接导出并导入生产环境,建议一起来了解一下 Flyway 的用法。 Flyway 中的常用概念Flywa...
-
八月 01, 2021Ingress 定制配置
K8s Ingress、Ingress Controller 和 Ingress Class 中介绍了 Ingress 相关的概念,接下来让我们看看如何对 Ingress 进行更加灵活的配置。 Ingress 本身支持的配置Ingress 的特性至 Kubernetes v1.19 进入了稳定状态,不论使用哪个具体的 Ingress Controller,这些配置都是生效的。 Path ty...
-
七月 2021
-
七月 25, 2021JavaScript 中的 Truthy 和 Falsy
Truthy在 JavaScript 中,Truthy 是指在一个需要 Boolean 值的上下文中,会被认为是 true 的值,例如: > Boolean(true) true > Boolean({}) true > Boolean([]) true > Boolean(42) true > Boolean('0') true > Bo...
-
七月 18, 2021医保开发内外兼修之内功
在线导图
-
七月 11, 2021K8s 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, 2021Kong 实战
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, 2021Cookie 的同源和同站
存储在浏览器中的数据,如 localStorage 和 IndexedDB,是以 源(origin) 进行分割的。每个源都拥有自己单独的存储空间,一个源中的 JavaScript 脚本不能对属于其它源的数据进行读写操作,即所谓的 同源策略(SOP)。 Cookie 的同源然而 Cookie 在受同源策略约束时,使用不同的源的定义方式。 通常来讲: 同源(Same origin),意味着 s...
-
五月 23, 2021SOP、CORS 和 CSRF、XSS
在 Origin 和 Site 中,我们介绍了 源 和 站 的概念,这两个概念在浏览器的安全策略中有着广泛的应用,接下来再介绍几个与之相关的概念。 SOPSame Origin Policy(SOP),同源策略,是浏览器的一个重要安全机制,用来限制从某一 Origin(源)加载的文档或脚本,如何与其他源中的资源进行交互。它能帮助隔离潜在的恶意文档,减少被攻击的可能。 跨源网络访问跨源网络访问...
-
五月 16, 2021Origin 和 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, 2021Spring Boot 配置文件拾遗
说到 Spring Boot 的配置文件,大家应该都不陌生,Spring Boot 也为其外部配置文件提供了一些参数,使我们能够更加灵活的对其中的参数进行设定及覆盖,一起来查缺补漏吧。 spring.config.name默认情况下,Spring Boot 的配置文件为 application.properties 或 application.yml,而这个配置文件的文件名(不包括扩展名),...
-
五月 02, 2021K8s 存储资源回收策略
在 Volume、PersistentVolume、PersistentVolumeClaim 和 StorageClass 中,我们介绍了 K8s 存储资源的相关概念。持久卷(PersistentVolume)通过卷插件对位于外部基础设施中的存储资产进行操作,并可通过 回收策略,控制持久卷回收时会对外部存储数据产生的影响。 回收策略目前支持的回收策略有三种: Retain:手动创建的 P...
-
四月 2021
-
四月 25, 2021东软医保 & 华为鲲鹏生态适配经验分享
在线查看
-
四月 18, 2021Volume、PersistentVolume、PersistentVolumeClaim 和 StorageClass
Volume - 卷K8s 中的 卷,是指包含可被 Pod 中容器访问的数据的目录。 Docker 也有 卷(Volume) 的概念,但对它只有少量且松散的管理。 Docker 卷是磁盘上或者另外一个容器内的一个目录。 Docker 提供卷驱动程序,但是其功能非常有限。 K8s 支持 很多类型的卷,比如:cephfs、configMap、emptyDir、hostPath、local、nfs...
-
四月 11, 2021Java 应用远程调试
软件开发会时经常会遇到这样的场景: 现场反馈的问题,在本地环境无法重现,可能需要将现场数据库导回来才能重现问题 生产环境中的服务无法直接从本地开发环境进行连接,进而无法使用本地代码进行调试 在上面的场景中,无论是将现场库导出,还是开通生产环境服务的访问权限,都是非常困难且不安全的。 本文将介绍一种由 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, 2021K8s subPath
定义在 K8s 中,VolumeMount 是用来挂载定义好的存储卷的。 其中有个属性 subPath 是这样描述的: Field Description subPathstring Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’...
-
一月 24, 2021v2ray
干啥的引用 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, 2021MacOS 制作 USB 启动盘
安装操作系统时,当前常用的方式是获取操作系统对应的 ISO 文件,并制作 U 盘启动盘,使用 U 盘引导系统进行安装。 当使用 MacOS 时,可以很方便的利用系统自带工具,完成上述工作,具体步骤如下。 获得操作系统镜像推荐从官方进行下载,如: Windows 10 Ubuntu CentOS 下载到的文件名如 Win10_20H2_v2_Chinese(Simplified)_x64....
-
一月 03, 2021程序员对程序员的承诺
开公众号至今已达到了一年,每周发一篇文章也坚持了一年,不容易,但成年人的世界,没有容易二字。 过去几年立了一些 flag: 每天在 GitHub 上有 contribution 每两个月读一本书并进行分享 每周写一篇博客并发公众号 虽然新的 flag 会接替之前的 flag 填充满主要的时间,但坚持做这些事的初衷都没有变:不断的改变自己,并尽可能的给他人带来积极的影响。 静态网站访问统计...
-
十二月 2020
-
十二月 27, 2020Override same class
实际 Java Web 项目中经常会遇到这样的场景:希望对依赖的某个三方库中的行为进行覆盖式的定制(修改三方库中的某些行为),但并不希望发布定制的版本至私服。 通常在使用 WAR 包发布应用时,可将定制的类编译成 class 文件,放入 WEB-INF/classes 路径中,即可覆盖放置在 WEB-INF/lib 路径下的三方库中同名类,达到定制的目的。 那么为什么可以这样? 在两个相同的...
-
十二月 20, 2020TeamCity Kotlin DSL
将持续集成环境的配置代码化(Configuration as code)有很多好处: 可借助版本控制系统(VCS)对配置进行管理 很容易对配置变更进行审查(review) 提高配置的可移植性 不同的分支可以执行不同的构建,甚至是未合并的请求分支以及历史构建 目前常见的持续集成服务都提供(甚至仅有)代码化配置方式,如: Travis CI 的 .travis.yml GitHub Act...
-
十二月 13, 2020zsh
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, 2020K8s ConfigMap
在 k8s 集群中部署第一个应用 中,完成了一个基本的 NGINX 服务的部署,但在真实环境中使用 NGINX 时,一般都需要定制其配置文件,使满足实际代理需求。K8s 提供了一个 ConfigMap 的概念,允许将配置文件与镜像文件分离,以使容器化的应用程序具有可移植性。 什么是 ConfigMap可以按字面方式,将 ConfigMap,理解为一个 Config 的 Map: Map 的...
-
十一月 15, 2020K8s 命名空间
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 命令用法。 新版本的 dubbo 默认...
-
十月 18, 2020在 k8s 集群中部署第一个应用
在 使用 kubeasz 离线安装 k8s 集群 中,我们完成了 k8s 集群的搭建,接下来,可以开始在集群中部署第一个应用了。 目标在集群中启动一个最简单的 nginx 服务,并能够通过 http 进行访问。 预热回忆 docker 环境下,要实现这个目标,需要做的事情很简单,一行命令即可: $ docker run --name some-nginx -d -p 8080:80 ngin...
-
十月 11, 2020macOS 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, 2020VS 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, 2020SSH 免密登录
假设 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, 2020Alibaba 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, 2020Tomcat 是怎么找到用来处理请求的 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, 2020JitPack 真香 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, 2020Gradle 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, 2020SSH Port Forwarding, aka SSH Tunneling
SSH(Secure Shell)端口转发(SSH Port Forwarding),也叫 SSH 隧道(SSH Tunneling),是 SSH 中的一种机制,可以在 SSH 客户端与服务端之间,建立一条隧道,将客户端端口转发至服务端,也可将服务端端口转发至客户端。利用这种机制,可以为老式应用,提供加密通讯的途径,以及其他一些更广泛的用途。 怎么端口转发/创建隧道?利用 SSH 客户端,...
-
六月 05, 2020Why 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, 2020JitPack 真香
在 GitHub Packages in Action 中,我们介绍了 GitHub Packages Registry(GPR)的用法。GPR 有其应用场景,但也经常会有蹩手的感觉,尤其是在传错了包,需要邮件联系客服进行删除,而客服又迟迟没有回复的时候…… 直到发现了 JitPack,除了真香,找不到别的词来形容了。 如何接入 JitPack只要代码仓库是使用 GitHub,或者 其他几种...
-
五月 22, 2020Git 三招脱坑指南
第一招:六脉神剑 —— 分支 孔子云:知之为知之,不知为不知 —— 用分支!分支的使用方针 一次只做一件事 用后即弃 为分支起一个有意义的名字 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, 2020Servlet 注册到了哪?
按 还在给每个请求加前缀避免模块间接口冲突呢? 中内容,我们可以通过 ServletRegistrationBean 注册多个 DispatcherServlet,那么 Servlet 被注册到哪了呢? 简单的回答:Servlet 容器。 没毛病!但马达马达大内!注册到了 Servlet 容器里的哪?存在什么结构里? 让我们以 Tomcat 容器为例,刨根问底。 addRegistratio...
-
四月 24, 2020还在给每个请求加前缀避免模块间接口冲突呢?
场景Spring MVC 按模块开发时,可能经常会遇到这个场景:一个模块由一个开发人员负责开发,模块内能较好的保证 RequestMapping 的 path 不重复,但模块间就很难有效的方式保证唯一。 通常有两种处理方式: 对开发进行规范或约定,为每个模块起一个前缀,要求在模块内开发的所有 controller 都带上前缀,这样就只要保证模块内唯一即可。 每个模块部署为单独的服务,通过 ...
-
四月 17, 2020Spring 中如何根据请求调用对应方法
需求假设能够获得到一个 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, 2020CSS3 动画还不够香
现象页面加载完毕静置一小会之后,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, 2020GitHub Actions 实战
GitHub Actions 是什么?与 Jenkins、TeamCity、Travis CI 类似,GitHub Actions 是 GitHub 提供的一个持续集成平台。 与三方持续集成平台的对比 GitHub Actions Jenkins TeamCity Travis CI 代码仓库平台无关性 × √ √ √ 构建配置即源码 √ × × √ 无需单独部署 √ ×...
-
三月 20, 2020Mac 录播推流 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, 2020Mac 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, 2020How 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, 2020GitHub Packages in Action
GitHub Packages 可以用来当做 Release 版本 jar 包的 Maven 仓库。 与 Maven 中央库比,没有繁琐的申请流程,可以快速的将 jar 包发布出去供他人使用。 与 Nexus 私服相比,无需架设公网访问环境。 缺点 是只支持 Release 版本的发布和下载,Snapshot 版本虽然可以发布上去,但无法被其他项目依赖。目前尚不支持自行删除已上传的 jar ...
-
一月 05, 2020Using Gradle Behind Proxy
在网络代理环境下使用 Gradle 时,可能会遇到以下三个问题: gradlew 下载对应 Gradle 发布版时无法下载 下载依赖时,提示连接超时 SSL 证书无效 gradlew 下载对应 Gradle 发布版时无法下载错误提示Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authoriz...
-
五月 2018
-
五月 15, 2018Using Liquibase with Gradle in Spring Project
Spring 项目通过 Gradle 插件使用 Liquibase 的简易说明 Liquibase 是什么引用 Liquibase 官网 的一张图片: 类似的工具还有 Flyway。 为什么选择 LiquibaseFlyway 官网 上有一个同类工具特性的对比,详见 Feature Comparison 部分或下图: 看图的话,Flyway 完胜,不过 等等!看完下面内容再做决定: L...
-
六月 2016
-
六月 15, 2016TeamCity for Java Project on GitHub
GitHub 上 Java 项目使用 TeamCity 和 Codecov 的简易说明 目标 利用 TeamCity 构建 GitHub 上的 Java 项目 构建时进行静态代码质量检查及单元测试,并生成测试覆盖率报告 确保每个 PR 和 master 分支的每次提交都能触发构建 将构建结果和覆盖率情况可视化展现 环境准备使用 Docker 镜像搭建基础环境: $ docker pull ...
-
二月 2016
-
二月 02, 2016Web 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, 2015docker-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, 2014MongoDB GridFS 读写性能提升关键点
提升 GridFS 读写性能的关键,就在于分散对 GridFS 的读写请求至集群内的所有分片上,即不能使用 {files_id:1} 来分片。这与官方文档内容完全相悖的矛盾如何能调和呢? MongoDB(v2.6 current) 官方文档中关于 Shard GridFS Data Store 有如下说明: IMPORTANT { files_id : 1 , n : 1 } and { ...