SHADOW

一个爱钻研的技术工作者, 一个可靠的技术Leader 轻微强迫症患者 对技术始终保持着追求,全栈型技术人员 ,细节控。 拒绝务虚,追求完美。注释与缩进必须正确

📍 Shanghai
Clickhouse适配arm64环境

Clickhouse适配arm64环境

前言 官方目前有arm64版本的镜像,但是放到xc环境上跑都跑不起来,连报错都没有.... 没办法,只能自己折腾 适配 参考资料 How to Build ClickHouse on Linux | ClickHouse Docs 还有百度到的一些前辈的编译构建资料,源作者不清楚,N个网站都是一样的内容.... 环境准备 本机环境: ​ Macbook Pro M2 , macOS 15.0.1,Docker 24+ x86环境支持交叉编译,下文会给出参数 服务器环境: ​ Kunpeng 920,UOS Server V20, Docker 21+ clickhouse版本: ​ git master版本,2024年11月的版本为 24.11.1.1 编译步骤 克隆源码

交互与体验
开发技能

交互与体验

序 在平常做项目中经常会发现一个问题,就是很多前端不太注重用户体验,不知道如何提升交互。 不管三七二十一,先把功能实现了再说,不考虑如何设计,如何提升用户体验。 有的人会说:用户体验是产品的事,项目管那么多干嘛,做完拉倒,功能实现就行了。 但是你要知道:所有的产品都是从项目中积累出来的,也就是从经验中积累,从经验中积累就需要大量的思考与实践。 纵观(不要脸一点的说)现在整个互联网,基本你常用的应用都是用户体验做到极致的。 微信打败了飞信、支付宝打败了一众银行APP、抖音横空出世。这都是在不断完善用户体验,增加用户粘性的情况所带来的。 如果一个产品抛开用户体验,天天只盯着资源分配就是一件很搞笑的事情了。 很多时候我会说写代码是一门艺术,艺术是给人欣赏的,不是让人吐槽的,也不是让人诟病的。 在可能的条件下,把项目当成产品做是对自己提升最快捷且有利的捷径。 今天就探讨下什么是交互与体验,也算是个思考回顾的过程。 什么是交互 交互,指替换着;互相;彼此。语出《京氏易传·震》:“震分阴阳,交互用事。” 不知道咋开头,装个逼吧 在个人看来,交互主要有两点

技术人员的设计能力
开发技能

技术人员的设计能力

首 我一直觉得,写代码是一门艺术,一个将世间万物与开发语言建立桥梁的艺术。 既然做为艺术家,那工作自然要有序且优雅。 经常碰到同事会想我咨询问题,比如这个该怎么实现,那个怎么做比较好。承蒙厚爱,尽力解答。 不过在交流的过程中,我发现他们没有“套路”。不是考虑的太少没有设计,就是考虑的太多过度设计。 SHADOW的套路是《分析》=> 《抽象》 =>《效率最大化》。 核心思想是保持不变应对万变。 下面聊聊我对这三步的理解 分析与选型 一天,一个同事问我,客户想平均的分配工单。但是他现在感觉写的特别麻烦,而且容易出问题。那我就问需求是啥,现在是怎么做的。 同事目前在做的是一个工单调派系统,主要的用户是工单处理人员。用户的工作时间为轮班制。 有一天用户提出希望将需要处理的工单平均分配给在线的用户,比如50张工单,5个用户,每人10条。然后工单为实时生成。 原始方案 同事在最初做的时候采用双数组+定时任务的方式,一个数组保存工单,一个数组保存在线用户。 定时任务将数据库内没有分配的工单,在线用户分别存入数组,然后做遍历。 伪代码如下 // 遍历工单

MYSQL安全加固
数据库

MYSQL安全加固

设置口令过期时限 alter user 'root'@'%' PASSWORD expire interval 180 day; 增加密码复杂度 登录mysql 安装插件并配置 -- 检查是否安装 show variables like 'validate_password%'; -- 如果没有安装启用插件 INSTALL PLUGIN validate_password SONAME 'validate_password.so'; -- 查看默认配置 show variables like 'validate_password%'; 设置登录失败 登录mysql 安装插件并配置 -- 启用插件 INSTALL PLUGIN CONNECTION_CONTROL SONAME

Spring-Cache扩展
SpringBoot

Spring-Cache扩展

SPRING-CHACE 微服务协作 由于出色的易用性,Spring-Cache 在各种项目中使用非常广泛,并且各种缓存组件也有这良好的支持,从老牌的Ehcache到Redis,本达到开箱即用的程度。只需要简单的几个注解就可以开启缓存来提升性能。 本文并不介绍SpringCache的使用,主要记录在微服务环境下遇到的实际问题,与一种解决思路 背景 SHADOW最近的在做的项目由于各种配置类的数据较多,并且可能需要跨库查询, 显然从数据库查询显然不是很好的方式。并且多库多表代码量多且重复度高。 考虑到性能与开发的效率,而且数据的变更频率其实不高,预估1小时的同步周期就可以满足业务需求,所以打算把配置类数据和部分业务数据整合抽取到Redis。 很显然,Spring-Cache是一个非常不错的选择,业务模块通过@Cacheable 从Redis中获取数据,数据模块同样通过@Cacheable定时将数据同步到Redis。各个模块各区所需。 大致示意图如下: 问题 想法很好,写了两个例子开始测试,把部分数据同步到redis,然后应用再写一个缓存接口,方法打上@Cacheable,例如同步和模块都是 // 数据模块Bean package com.shadow.data; class Ticket { private String field1; ... private String

开发规范1.0
Java

开发规范1.0

开发规范 所有的类,方法都必须有完整的注释 说明类的用途,内部方法的使用方法,出入参的返回 代码是给人看的,机器执行是次要的 不变的变量做常量,常量放在常量类 共用的方法做工具,工具放在工具类 不会不懂的先抽象,设计模式往里套 MVC有三宝,控制、逻辑、数据库 遇事不决先自问,做啥,有啥,还缺啥 开发基本流程 请严格按照开发的步骤提交到指定的分支 开发功能 提交dev 开发分支 准备测试 合并dev到test测试 测试通过 test分支合并到master主分支。准备发布上线 发布完成后经过观察没有问题,打tag封版 重复第一步 基本规范 驼峰命名规则,除特殊情况应当遵守 使用 static final 修饰的变量为全大写 所有注释应当完备,注释与代码的比例为1:4 包路径规范 统一路径为xxx.xxx.{模块名称}.{功能包}

SpringBoot项目推送Docker私服脚本
Docker

SpringBoot项目推送Docker私服脚本

本地Docker配置"insecure-registries": ["xxx.xxx.xxx.xxx:xxx"]insecure-registries 配置私有域的信任地址,上传镜像必须配置此参数Liunx #!/usr/bin/env bash # 应用名称 appname=perception-data # 引用版本 version=1.4 # 当前环境,与应用名称拼接,区分所在环境 env=product # 拼接 fullname=${appname}:${version}-${env} # 目标服务器 registry=xxx.xxx.xxx.xxx:xxx # 打包 mvn clean mvn package # 构建镜像 docker build -t ${fullname} . # 标签

Linux运维命令大全
Linux

Linux运维命令大全

系统信息 配置信息 arch # 显示机器的处理器架构(1) uname -m # 显示机器的处理器架构(2) uname -r # 显示正在使用的内核版本 dmidecode -q # 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda # 罗列一个磁盘的架构特性 hdparm -tT /dev/sda # 在磁盘上执行测试性读取操作 cat /proc/cpuinfo # 显示CPU info的信息 cat /proc/interrupts # 显示中断 cat /proc/meminfo # 校验内存使用 cat /proc/swaps # 显示哪些swap被使用 cat /proc/version # 显示内核的版本 cat