
技术随笔
佐杰
这个作者很懒,什么都没留下…
展开
-
Docker镜像瘦身:从1.43G到22.4MB
从 DockerHub(官方 Docker 镜像注册表)中我们可以看到,基于 alpine-based 的 Node 镜像比基于 Ubuntu 的镜像小得多,而且它们的依赖程度非常低。因此,现在我们将引入多级构建的概念,以减少不必要的代码和依赖于我们的最终镜像。我们尝试使用 Nginx 这类更高效、更轻量级的服务器来运行资源应用程序,也可以尽可能提高其性能,并且减少镜像的量。在查询结果列表的顶部,是我们新创建的图像,在最右边,我们可以看到图像的大小。这样我们在最终的镜像中就不会有不必要的依赖和代码。原创 2024-12-30 22:07:29 · 912 阅读 · 0 评论 -
单库单表到多库多表的全量复制方案
公司最近业务发展比较快速,数据库里面表的数据量猛增,当前单库单表的模型已经无法满足后续业务的发展,需要从单库单表切换到多库多表的模型。原创 2022-09-30 21:47:00 · 374 阅读 · 0 评论 -
Java 代码性能基准测试
JMH的全名是JavaMicrobenchmarkHarness,它是由Java虚拟机团队开发的一款用于Java微基准测试工具。用自己开发的工具测试自己开发的另一款工具,使用JMH可以让你方便快速的进行一次严格的代码基准测试,并且有多种测试模式,多种测试维度可供选择;而且使用简单、增加注解便可启动测试。...原创 2022-07-31 23:01:23 · 1746 阅读 · 0 评论 -
linux卸载python
python卸载原创 2022-06-19 21:12:09 · 2297 阅读 · 0 评论 -
cemtos安装宝塔面板
python -m pip install -U --force-reinstall pip原创 2022-06-19 16:52:08 · 153 阅读 · 0 评论 -
安装第三方包出现AttributeError: ‘NoneType‘ object has no attribute ‘bytes‘情况
python -m pip install -U --force-reinstall pip原创 2022-06-03 18:25:01 · 262 阅读 · 0 评论 -
python的内存划分
1、pythonpython 在定义变量时,变量名和变量值都是需要存储的,分别对应内存的两块区域:堆区和栈区1、变量名与变量值内存地址 的关联关系存在于栈区2、变量值存在堆区,内存管理回收的则是堆区的内容定义变量 x=10 ,y=202、直接引用和间接引用直接引用是指从栈区出发直接引用到的内存地址间接引用是从栈区出发引用到堆后,再进一步引用才能到达的内存地址3、循环引用...原创 2022-03-13 13:08:19 · 3420 阅读 · 0 评论 -
harbor安装
harbor安装第一步下载安装包harbor-online-installer-v1.7.1.tgz解压tar -axvf harbor-online-installer-v1.7.1.tgz cd harbor运行sh install.sh原创 2021-12-22 23:36:23 · 153 阅读 · 0 评论 -
docker-compose安装
docker-compose安装$curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose$chmod +x /usr/local/bin/docker-compose#查看版本$docker-compose version原创 2021-12-22 22:03:44 · 381 阅读 · 0 评论 -
EMQX Broker性能测试
1、工具安装使用yum进行安装yum install -y yum-utils device manager-persistent-data lvm2yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repoyum install emqx-4.3.5常用命令启动:systmctl start emqx.service状态:systmctl status emqx.servi原创 2021-12-18 22:24:10 · 2345 阅读 · 3 评论 -
emqx的安装
第一步 下载wget https://www.emqx.cn/downloads/broker/v4.2.8/emqx-centos7-4.2.8-x86_64.rpm第二步 安装rpm -ivh emqx-centos7-4.2.8-x86_64.rpm 第三步 运行sudo emqx start第四步验证原创 2021-12-18 17:33:46 · 1467 阅读 · 0 评论 -
接口幂等性,一般常见方案
接口幂等性,一般常见方案业务表内唯一索引 (举例 创建订单给订单id创建一个唯一索引)业务表内状态机(举例 update order set states=“待发货” where id=1 and states=’'待付款")基于版本号更新 (举例 id name age version 1原创 2021-12-08 22:45:11 · 330 阅读 · 0 评论 -
设计模式之模板方法模式
场景:1)我们有多种优惠策略2)不同的优惠策略在计算价格的时候,有一些通用的基础逻辑。3) 每种优惠策略还有一些自己特殊的价格计算。package cn.haochen.designpattern.templatemethod;/** * 使用设计模式 * @author 浩宸 */public class TemplateMethodPatterDemo { public static void main(String[] args) { DiscountCa原创 2021-09-24 23:17:17 · 120 阅读 · 0 评论 -
takin部署
Takin的部署步骤第一步 下载镜像docker pull registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1第二部 运行镜像docker run -e APPIP=your ip address -p 80:80 -p 2181:2181 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1 参数解释:原创 2021-09-07 22:39:33 · 1027 阅读 · 1 评论 -
/bin/bash^M: 坏的解释器: 没有那个文件或目录
问题描述window上编译nacos 在 llinux上运行报错/bin/bash^M: 坏的解释器: 没有那个文件或目录错误原因这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r。修改错误使用指令sed -i ‘s/\r$//’ xxxxxxx.sh(文件的名字),上面的指令会把 xxxxxxx.sh 中的\r 替换成空白!...原创 2021-07-26 21:29:13 · 424 阅读 · 0 评论 -
性能测试工具表
原创 2021-05-24 22:38:58 · 166 阅读 · 0 评论 -
计算机组成原理常见的指令
CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS 解:全面的回答应分英文全称、中文名、中文解释三部分。 CPU——Central Processing Unit,中央处理机(器),见7题; PC——Program Counter,程序计数器,存放当前欲执行指令的地址,并可自动计数形成下一条指令地址的计数器; IR——Instruction Register, 指令寄存器,存放当前正在执行的指令的寄存器; CU——Control原创 2021-04-27 23:09:32 · 1258 阅读 · 0 评论 -
CAS存在的三大问题及解决方案
CAS存在的三大问题及解决方案1.ABA问题1.ABA问题的解决方案2.无限循环问题(自旋)2.无限循环问题(自旋)的解决方案3.多变量原子问题3.多原子变量问题的解决方案1.ABA问题如果变量V初次读取的时候值是A,后来变成了B,然后又变成了A,你本来期望的值是第一个A才会设置新值,第二个A跟期望不符合,但却也能设置新值。1.ABA问题的解决方案java并发包中提供了一个带有标记的原子引用类AtomicStampedReference,它可以通过控制变量值的版本号来保证CAS的正确性,比较两个值的原创 2021-02-23 15:29:15 · 3053 阅读 · 1 评论 -
mac下安装jd-gui
1、输入如下命令brew cask install jd-gui如果提示 brew 不是。。。命令,则需要安装brew,输入下面命令即可安装 brew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 回车(这里有提示目录不存在,要创建需要按return 回车键 即可安装)...原创 2021-01-27 23:55:32 · 676 阅读 · 0 评论 -
yongGC和FullGC多长时间执行一次比较好
1.yongGC 执行时间不超过50ms 执行频率不小于10s每次2.FullGC 执行时间不超过1s执行频率不低于10分钟原创 2021-01-06 17:42:42 · 7010 阅读 · 0 评论 -
tomcat和Springboot在启动的时候如何设置jvm的参数
tomcat设置参数需要在tomcat/bin目录下的catalina.sh中添加jvm的参数springboot 在启动jar的时候添加jvm参数即可原创 2021-01-06 10:43:13 · 2058 阅读 · 0 评论 -
什么是DO,DTO,VO,PO,AO?
1)DO:Data object 数据对象,一个DO 通常来说 对应一张表,或者是Mapper查询接口中的返回类型 Mapper和dao返回的都是DO2)DTO:Data Transfer Object,数据传输对象,service组件需要将dao组件返回的DO对象给封装成DTO对象,再返回给controller组件,或者是别的service组件。service必须将数据封装为DTO,返回给其他的controller或者是service来使用3)VO:view object,其实就是将页面中需要展示的原创 2020-11-02 23:36:09 · 1795 阅读 · 1 评论 -
Hi 浩宸! You‘ve successfully authenticated, but GITEE.COM does not provide shell access.
解决方案:第一步:git pull origin master --allow-unrelated-histories第二步:git push原创 2020-07-31 15:19:55 · 5114 阅读 · 0 评论 -
误操作git add 之后如何恢复
解决方案:git rm -r --cached .原创 2020-07-30 23:33:17 · 2223 阅读 · 2 评论 -
TypeError: “_vm.onetopic is not a function“
解决方案:函数需要写在methods里面原创 2020-07-30 10:56:53 · 1345 阅读 · 0 评论 -
VisuaVM插件安装
存在问题 使用默认的安装路径会出现 网络错误 请重试的问题解决方案:第一步第一步 https://visualvm.github.io/pluginscenters.html第二步选择你对应的jdk版本我这里是java8 的版本 然后点击进入第三步复制 https://visualvm.github.io/archive/uc/8u20/updates.xml.gz第四步选择 设置url 填入 复制的地址 然后点击确定 第四步就完成了第五步选择对应的可安装插件 安装即可原创 2020-07-19 12:28:40 · 319 阅读 · 0 评论 -
初次写vue项目并一键生成.vue模版
1.安装vscode官网地址:https://code.visualstudio.com/2.安装一个插件,识别vue文件插件库中搜索Vetur,下图中的第一个,点击安装,安装完成之后点击重新加载3.新建代码片段文件-->首选项-->用户代码片段-->点击新建代码片段--取名vue.json 确定4.删除不要的代码5.粘入自己写的.vue模板{ "Print to console": { "prefix": "vue", "b原创 2020-07-13 23:53:57 · 421 阅读 · 0 评论 -
vue模块化开发
操作步骤如下:1.npm install webpack -g全局安装webpack2.npm install -g @vue/cli-init全局安装vue手脚架3.初始化vue项目vue init webpack appname 解释如下:vue手脚架使用webpack模版初始化一个appname项目项目名称如果不变 可以使用默认的名称如下图所示:安装完成启动:http://localhost:8081/#/...原创 2020-07-13 23:04:34 · 368 阅读 · 0 评论 -
jad for mac
下载地址:https://varaneckas.com/jad/原创 2020-07-13 16:46:50 · 788 阅读 · 0 评论 -
跨域问题解决方案
java后端解决corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用corsConfiguration.addAllowedHeader("*"); // 允许任何头corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)corsConfiguration.setAllowCredentials(true);// 是否允许请求带有验证信息前端解决withCredentials.原创 2020-06-23 18:21:57 · 211 阅读 · 0 评论 -
Tomcat部署应用三种方式
tomcat部署应用的三种方式查看部署方式的文件—HostConfig查看部署方式的文件—HostConfig1.描述符部署2.war包部署3.文件夹部署原创 2020-06-07 15:26:44 · 247 阅读 · 0 评论 -
撤销git init命令
取消 git init 命令:rm -rf .git原创 2020-06-03 19:35:21 · 7339 阅读 · 0 评论 -
git删除远程文件
1.删除远程库文件,但本地保留该文件git rm --cached xxxgit commit -m "remove file from remote"git push -u origin master2.删除远程库文件夹,但本地保留该文件夹git rm --cached -r xxxgit commit -m "remove file from remote"git push -u origin master3.git rm与git rm --cached 的区别git rm 是删除原创 2020-05-18 21:12:04 · 1582 阅读 · 0 评论 -
git常见冲突的解决方法
![rejected]master -> master (non-fast-forward)解决方法: git pull origin master --allow-unrelated-histories可能会出现vim编辑不用管直接保存退出就行然后建议做完上一步之后再重新:git add .git commit -m '提交说明'git push origin master...原创 2020-05-18 09:21:49 · 523 阅读 · 0 评论 -
安利好用的idea查看日志的插件Grep Consol
安装后重启效果如下:根据需要选择对应的颜色原创 2020-05-16 16:32:13 · 679 阅读 · 0 评论 -
Error: unable to connect to node rabbit@zuojie005: nodedown
解决方案:service rabbitmq-server restartrabbitmq-server -detached原创 2020-05-07 21:10:31 · 179 阅读 · 0 评论 -
1071 - Specified key was too long; max key length is 767 bytes, Time: 0.001000s
数据如下CREATE TABLE `user_innodb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `gender` tinyint(1) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL, PRIMARY KEY (`id...原创 2020-04-21 20:16:02 · 958 阅读 · 0 评论 -
Mac下NATAPP将内网映射到外网
在做微信开发的时候,调用微信接口成功之后,微信会回调我们事先配置好的一个接口。由于微信的服务是在外网的,所以这个回调接口也只能是外网,而且微信要求回调接口只能是通过ICP备案的域名,不能使用IP。所以在开发调试的时候,需要把代码部署到线上的服务器,通过打log来跟踪接口调用情况,很明显这样开发效率非常低。本来qq浏览器有一个微信调试工具。该工具很方便使用,特别适合这种内网映射外网工作。但是现在下架...原创 2020-04-11 22:18:46 · 341 阅读 · 0 评论 -
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method
问题描述Caused by: java.io.IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:126) ~[amqp-client-5.1.2.jar:5.1.2] at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:...原创 2020-04-03 18:11:25 · 710 阅读 · 0 评论 -
[Vue warn]: Error in created hook: "TypeError: handler.call is not a function"
此问题为调用中生命周期钩子函数引起来的错误,解决办法为 生命周期钩子函数 是否有未定义方法 还是 声名了空的钩子函数;检查顺序—>单词有没有写错—>函数的方法又没写错 我这里就是函数的方法错了。...原创 2020-03-09 15:24:14 · 2893 阅读 · 0 评论