自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

从前有座无庙山

一切伟大的行动和思想,都有一个微不足道的开始。

  • 博客(93)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 [跬步]只有不怕死的人,才有活下去的权利

      第一次看到这句话,是《亮剑》里面楚云飞的一句台词。虽然这句话现在看起来过于夸张,但那是个视生命如草芥的年代,即使现在仔细去想,却也独有一分韵味。      我自认是一个没什么野心的人,从小时候开始就如此。在小学那种人人争着做班长的年代,我却连一个学习组长都不愿意做。...

2019-11-08 21:53:00 1779

原创 【算法】搜索插入位置

二分查找

2023-02-08 17:42:59 116

原创 [微信小程序]小程序配置

其实微信官方文档已经讲的比较详细,此处主要是笔者针对自己接触常用的框架结构进行整理。全局配置app.json文件用来对当前开发微信小程序进行全局配置。内容大致如下面代码所示:{ "pages": [ "pages/login/login", "pages/search/search", "pages/production/production" ], "window": { "backgroundTextStyle": "light", "na.

2021-11-27 11:23:37 534

原创 [docker]Docker安装MYSQL并挂载外部配置和数据

文章目录下载最新版mysql创建挂载目录创建my.cnf启动容器参数解释下载最新版mysql[root@iZwz9bpj7oo7xbzsrq86kmZ app]# docker pull mysql:latestlatest: Pulling from library/mysqlb380bbd43752: Pull complete f23cbf2ecc5d: Pull complete 30cfc6c29c0a: Pull complete b38609286cbe: Pull comple

2021-11-15 15:45:09 1537

原创 [设计模式]Adapter设计模式

简介《设计模式》一书对于Adapter设计模式的意图的描述:将一个类的接口转换成客户需要的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。问题描述客户要求实现圆,为此需要创建一个从Shape类中派生的Circle类,需要为其编写display、fill和undisplay方法。此时有软件工程师已经编写了一个处理圆形的类,名为XXCircle,但他的方法命名与设计不符。不能直接使用XXCircle,因为需要保持Shape类的多态行为,主要原因为:名称和

2021-10-14 10:53:40 233

原创 [设计模式] Facade设计模式

中文音译为外观设计模式。其实我们在开发中经常会使用到这种设计模式。比如我们项目中需要使用到一个中间件Elasticsearch,领导会让所有人都去学习如何使用它提供的复杂API,还是只需要让其中一个人学习并封装我们用得到的API呢?简介《设计模式》一书对于Facade模式的意图是这样描述的:为子系统中的一组接口提供一个统计接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。大多数工作依旧需要由子系统完成,但Facade模式提供了一组更容易理解的方法,这些方法使用底层系统来实.

2021-10-13 10:22:08 371

原创 [Java]代理

文章目录代理静态代理动态代理JDK动态代理Cglib动态代理代理Java中有一个经典的设计模式叫做代理模式(Proxy),在我们平时开发和框架源码中无处不在。这里可以看到,代理模式并没有改变对象A,而是换了一种方式访问对象A的方法,通过代理对象ProxyA来访问对象A,这样做的好处是——在A的基础上拓展,实现它的额外附加功能。静态代理创建一个接口ICar,里面有一个run方法,然后定义宝马的实现类来实现它:public interface ICar { void run();}

2021-09-17 21:46:10 103

原创 [JDK8]Optional和空指针不得不说的故事

java发展至今,从大学时期jdk1.6发展到如今jdk11,新的特性层出不穷,它们或是解决bug,比如Hashmap导致的DOS;或是性能优化,比如垃圾回收机制的改造;或是解决某些痛点,例如本文将提到的JDK1.8增加的Optional类。关于空指针判断的历史这个应该都不是很陌生,以前对于null的判断,最开始我们可能是这么判断:String s = "Hello World";if (s == null) { System.out.println("字符串为空!");} else { .

2021-08-19 14:28:44 89

原创 [python]需求来源于生活而高于生活

作为一个不甘心做打工仔的打工仔,本着财不理我,我理财的想法,一年前迷上了基金。曾经最惨的时候一度亏4000,没错,我是个韭菜。但是我并不甘心做韭菜,我觉得某些东西虽然现在看起来是交学费,一旦学会以后会是伴随你这辈子的财富。文章目录前言需求程序设计数据来源基金存储程序实现概述功能描述基金当日营收情况各基金信息详情基金汇总刷新开始/停止刷新手动刷新基金份额更新新增基金修改基金删除基金代码仓库地址前言作为一颗韭菜,晒晒我被割的最狠的基金收益情况:排名倒数第一的是华夏军工,当初上了这趟贼车,涨的时候比.

2021-07-16 22:14:49 221 7

原创 [Java]用servlet实现文件上传功能

由于我老婆这边需要用到文件上传,然后这任务不知道怎么就到了我头上。她的框架是比较老的struts2(说实话我一度连struts2都拼写不对。。。)文章目录背景介绍代码引入依赖tomcat依赖配置jar包依赖代码编写UploadServletindex.jspprint.jsp效果背景介绍从毕业以来最早接触的是SpringMVC,到后面用的是SpringBoot,struts2只出现在我大学课程里面毕竟这么重的框架又都是漏洞早就已经被踢出历史洪流。让我去回顾struts2是不可能的,接到的任务又只.

2021-06-22 17:13:08 1311

原创 [springboot]记一个学习中遇到的诡异的错误

今天在新电脑上面准备系统学习spring-security时,发现一个诡异的现象——使用maven打包是成功的,但是运行springboot的main方法就报错,提示找不到程序包,报错如下:在网上找了下,大多数不知所云,后面看到一篇文章,大概意思是说需要在idea中进行相关配置:该项的意思是将build/run 动作委托给 maven,之前工程没有进行过相关配置却可正常运行,有时间需要深究一下。...

2021-06-08 23:37:48 91

原创 [Angular]模板语法

文章目录前置工作在welcome中新增链接创建一个grammar的组件添加grammar的路由模板语法遍历插值属性绑定*ngIf添加一个按钮总结前置工作为了方便学习与理解,我们通过一个示例对模板语法展开学习。在welcome中新增链接书接上篇文章,此处在welcome.component.html中增加一个<a>标签:<li><a routerLink="/grammar-component" routerLinkActive="active">模板语法&l

2021-05-11 16:27:27 310 1

原创 [Angular]先搞定路由

文章目录工程创建为路由添加组件创建名为welcome的组件创建名为first的组件定义路由创建404界面定义路由嵌套路由效果工程创建创建一个名为learn-project的工程,这里使用的是ng new命令:ng new learn-project注意,这里选择生成的是一个支持路由的应用。创建后的应用结构如下图所示:删除app.component.html中的内容,增加如下内容:<router-outlet></router-outlet>这个是最外层应用的标

2021-05-08 18:09:24 204 3

原创 [MySQL]聊一聊索引

文章目录索引的选择离散性联合索引最左匹配原则索引的选择例如,此处有一个User表,表的字段及类型如下表所示:字段类型idintnamevarchar(32)ageintgendertinyintmobilevarchar(20)假设创建单列索引,以哪列作为索引比较合适?离散性count distinct col :count col即当前列去除重复的数据的个数:当前列的总数,该值越大代表离散性越好。举个例子,如果在gender列上面创

2021-04-11 15:59:11 134

原创 [MySQL]InnoDB引擎和MyIsam引擎索引存储结构

文章目录MyIsam主键索引非主键索引InnoDB主键索引非主键索引聚集索引与稀疏索引聚集索引稀疏索引MyIsam主键索引①user.myi文件中存储的是USER表的主键索引结构,最终的叶子节点中存储的是数据在磁盘中的地址;②user.myd文件中存储的是磁盘地址对应的数据信息。非主键索引此处可以看到,user.myi文件中除了存储了主键索引的树装结构外,还存储了我们的另一个索引NAME的索引树结构,查找时根据name找到在磁盘中的位置后再去user.myd中找到相应的数据。结论:在MyI

2021-04-05 15:41:13 364

原创 [MySQL]为什么MySQL不推荐使用uuid作为主键

笔者之前的公司在设计表时,公司设计表优先使用UUID作为主键,当初讲这个的好处是因为可以方便迁移数据,但是了解了MySQL中索引的结构后我们发现,主键尽量能使用递增时还是选择递增。B+Tree数据结构决定了我们发现,使用递增作为主键时,叶子节点的数据是天然有序的!如果此时插入的数据是93,94,95…时,数据只需要继续往后跟即可;若插入的数据是11,12这种数据时,为保证连续性,就需要将数据左右“挪一下”,也就是页的分裂和合并”。int和varchar的大小问题int的大小为4byte,如果使.

2021-04-05 14:29:36 487 2

原创 [SpringBoot]手写一个内嵌tomcat

SpringBoot相对于SpringMvc,除了我们常讲到的“零配置”,其实还有一个特点就是集成了内嵌的tomcat,这就使得我们不再需要去每台虚拟机上面安装一个tomcat。文章目录工程结构pom.xml编码IndexServletMainTest效果工程结构整体比较简单,使用idea创建一个maven工程,包结构如图所示。pom.xml此处引入的依赖其实最主要的就是tomcat的jar包:<dependency> <groupId>org.apac.

2021-03-28 22:30:03 388

原创 [MySQL]MySQL中索引数据结构

MySQL一般是很多公司目前工作中用的最多的关系型数据库。如果对MySQL不够熟悉,会导致很多时候我们知其然不知其所以然,孔子云,学而不思则罔,因此博主准备对自己过往学习的MySQL知识进行总结,也分享给有需要学习的大家。索引我们初学数据库时,很多书上面都有描述索引的概念。很多书上面将索引比喻为一本书的目录,我们通过目录去迅速找到我们所需的章节内容。这里对索引的概念做一个总结:索引是帮助MySQL高效获取数据的数据结构。(在MySQL中,数据最终存储在磁盘中)在MySQL中,其索引的数据结构使.

2021-03-28 16:12:13 175 1

原创 [Java]HashMap相关

数据结构JDK1.8之前,HashMap使用的是数组+链表的形式;JDK1.8以后,HashMap使用的是数组+链表+红黑树的数据结构。HashMap之所以会使用红黑树有两方面原因:(1)查询性能。这个比较容易理解,因为链表检索的时间为O(n),而红黑树的检索时间为O(logn);(2)DOS攻击。HashMap在1.8以前单纯只使用链表,容易被黑客攻击,在同一个hash冲突的数组中放入N个对象,导致构造的这个链表很长,查询时将导致CPU飙升到100%。算法重写hashcodeHashMap

2021-03-17 15:10:43 171

原创 [shardingsphere] 源码解读(2) 从sharding-proxy的请求接入

源码解读请求接入流程PacketCodec(编解码)FrontendChannelInboundHandler(业务处理器)是完成这个流程的关键环节。PacketCodecpublic final class PacketCodec extends ByteToMessageCodec<DatabasePacket> { private final DatabasePacketCodecEngine databasePacketCodecEngine;

2021-02-25 17:40:36 425

原创 [shardingsphere] 源码解读(1) 从sharding-proxy的启动讲起

文章目录源码解读包结构启动流程BootstrapShardingSphereProxyDatabaseProtocolFrontendEngine源码解读包结构shardingsphere-proxy ├── shardingsphere-proxy-backend 负责与底层mysql通信 ├── shardingsphere-proxy-bootstrap 启动sharding-proxy ├── shardingsphere-proxy-common yaml配置文件

2021-02-25 11:33:08 968 1

原创 [Java]SequenceDiagram

由于工作需要,阅读shardingsphere源码,但是shardingsphere模块众多,且调用复杂,阅读源码是一件很困难的事情。自己本准备阅读代码中画一个时序图加强源码阅读,突发奇想会不会有工具可以帮我们生成代码调用时序,百度了一下发现了SequenceDiagram这个神器。效果图安装File > Settings > Plugins 搜索该插件并安装。使用(1)找到要查看的方法,右键找到该菜单“SequenceDiagram”:(2)配置从上到下从左到右,大.

2021-02-24 17:35:58 361

原创 [Java]JVM基础

打工人996,最近实在没时间没精力写文档。最近在排查elasticsearch的一些诡异现象,因此贴该篇文档以回顾JVM相关内容。

2021-01-28 16:40:31 77

原创 [操作系统] elementary os系统美化插件

文章目录效果图安装安装tweaks图标包安装ATK+老婆电脑比较老了,放在那里沾灰很久了。本来想装一个黑苹果,却发现型号实在太老(E460),且bios好像有个什么锁。算了,折腾一下网上评价尚可的elementary os。效果图安装对于安装比较简单,只要会安装windows的,安装这个基本没有什么难度,官网有安装教程。对于装系统,我认为比较重要的事情是划分区,其他没有难度。交换空间保证和内存一样大:安装tweaks这一步是所有步骤的前提,网上的资料都是一模一样的,反正我没成功过。我

2020-10-31 17:49:04 3317

原创 [MySQL] 根据物理备份恢复单表

文章目录模拟单表数据丢失删除数据库中某张表恢复单表数据建表恢复数据数据误删是一个线上常见的灾难问题。想起当年公司小伙伴在上线前一天删除了用户表的数据,打电话给经理的手都是颤抖的。经理绞尽脑汁,凌晨从别的表找到人员数据拼凑恢复到用户表,但最后还是丢了部分用户数据。模拟单表数据丢失如果是执行了delete,可以通过解析binlog日志为“undo语句”,反向将数据恢复回来;但是如果执行的语句是drop,那么…尽快买一张机票,离开这个是非之地。上篇讲到使用xtrabackup可以进行物理备份,优点是

2020-10-13 20:19:59 443

原创 [MySQL] 日志刷盘机制

概念MySQL的InnoDB日志管理机制中,有一个概念叫MTR(mini-transaction)。MySQL中把对底层页面的一次原子访问的过程称之为一个Mini-Transaction,这里的原子操作,指的是要么全部成功,要么全部失败,不存在中间状态。向底层页面插入一个新的record,至少会产生两个MTR。首先对page的修改要持久化,需要redo log,这里是一个MTR。InnoDB为了支持MVCC和事务回滚,会产生一个undo log,undo log写入undo page,这需要一个MTR

2020-10-13 14:25:35 1355

原创 [MySQL]物理备份xtrabackup

为保障数据库的可靠性,我们会对数据库进行备份,一般用的最多的是逻辑备份,常用的备份工具为“mysqldump”或者“mydumper”。但是逻辑备份有较明显的缺陷——恢复较慢,物理备份则满足了运维人员对于“快速恢复数据”的要求,该工具就是MySQL数据库物理备份的佼佼者。文章目录xtrabackup与innobackupex常用命令备份普通备份压缩备份innobackupex自带备份命令利用管道、gzip压缩的备份xtrabackup与innobackupex在搜xtrabackup的相关资料时,.

2020-10-10 17:03:52 231

原创 [idea] git提交记录乱码

问题描述换了个新电脑,在idea中提交时对代码进行了备注:在gitlab中查看提交记录发现备注变成了乱码:问题解决修改git中的编码集:git config --global i18n.commitencoding utf-8 git config --global gui.encoding utf-8 git config --global i18n.logoutputencoding utf-8...

2020-09-02 16:43:31 1543

原创 [Java] ganymed-ssh2实现ssh连接工具

文章目录pom.xml依赖代码效果之所以会用到这个,是因为工作中有需要连接到服务器执行python脚本的需求,因此简单看了一下。该示例实现了用户密码形式连接服务器执行shell命令。pom.xml依赖主要是ganymed-ssh2,之所以用lombok是因为简化开发(使用lombok不需要写get/set方法)<!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --> <depend

2020-08-14 11:11:33 1708

原创 [Python] 脚本解放双手

我这人比较懒,懒也体现在平时工作中了。像是可以用脚本用程序解决的事情,不喜欢自己动手。以前用java写爬虫,现在项目组有个同事专攻python,发现python提供了很多类库,且构建代码更快,于是准备将其作为自己的第二门语言扩展自己的武器库。系统的学习一遍python,需要大量时间,所以现在学习python就是遇到问题解决问题,慢慢让自己学会这门语言。以下是一个简单的程序,目标是增加指定博主的文档访问量:访问指定博主的文档列表,抠出其中的url列表并顺序访问指定的次数。import timefr.

2020-07-29 22:44:14 567

原创 [MyCAT]配置文件指定列值映射数据节点

文章目录需求rule.xmlschema.xml测试关于mycat全局序列需求可绑定数据源;通过配置文件指定。建表语句:create table cz_dept(id int auto_increment primary key , dept_no varchar(16) not null,dept_name varchar(32));为演示mycat根据列值绑定数据源功能,以该表为例做演示,拆分键为dept_no。rule.xml这个配置文件主要是进行规则信息的配置。1.funct

2020-07-29 10:20:40 722

原创 [MyCAT]于无声处听惊雷

说到分表分库,现在几乎已经是业内的标准了。比如阿里的PolarDB-X,腾讯的TDSQL,华为的ddm等。分表分库的好处是,在不入侵业务的前提下,解决大表导致的性能问题,目前分表分库还或多或少存在一些局限性,导致使用者在一开始就要考虑到这些问题,并进行合理规划。文章目录shardingspheremycat于无声处听惊雷shardingsphere之前看过一段时间的shardingsphere,源码包的架构如下:看过一些它的源码,源码写的较为层次分明,又合理利用了SPI技术解耦,但是缺点是.

2020-07-21 09:25:15 1243

原创 [ssh]Web版的ssh工具 gateone

最近公司筹备上市,很多软件不让用了。这次把xshell和xftp都禁用了。找了很多替代的软件,但总会有这样那样的问题。刚发现一个web版的ssh工具,其中有些功能倒是让人耳目一新。GateOne是一个开源的WEB端的SSH工具。看了很多网上安装教程,发现其依赖python,然而自己并不想装各种依赖,可能还要解决各种冲突。因此选择了使用docker安装镜像。文章目录安装docker拉取镜像运行镜像界面安装docker安装docker这部分内容已经写在其他文章里面,点击这里跳转。拉取镜像doc.

2020-07-20 17:14:36 1647

原创 [Git]活用Git栈暂存你的代码

如果你的代码没有提交,去远端拉取代码时,经常会碰到"Your local changes would be overwritten by merge"这个提示。但是问题在于,这时候你的代码并没有开发完,不太想去去提交代码。这些事情在git里面都想到了,这篇文章就来介绍一下git stash的用法。概述我们开了一个分支,在这个分支上面写自己代码,这时候发现别的分支有一个bug,于是先commit自己未完成的代码,切到别的分支,把那个分支的代码修复完成后,再切换回自己的分支继续开发。这很明显导致了一个问.

2020-06-27 12:47:33 1211

原创 [数据库]基本概念笔记

一、数据、数据库、数据库管理系统和数据库系统1.数据(Data)描述事物的符号记录称为数据。2.数据库(DB)存放数据的仓库,长期存储在计算机内的、有组织的、可共享的数据集合。3.数据库管理系统(DBMS)位于用户与操作系统间的一层数据管理软件,主要功能包括数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立和维护功能。4.数据库系统(DBS)计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员和用户构成二、数据库系统特点1.数据结构化数据结构化是

2020-06-20 17:21:42 516

原创 [跬步]说一下最近在做什么

看了一下,我的个人博客距离上次更新已经一个月了,并不是因为把这个习惯摒弃了,而是最近也实在抽不出时间继续写博客。2020年伊始就给新的一年蒙上了一层灰色,病毒夺去了我们的自由,也夺去了一些人的生命。新的一年也带给我了新的挑战:事业上角色的转变。项目经理生涯使我也不再是一个单纯热衷于技术沉溺在技术中的掘金者,这也使我不断挑战自己熟悉领域之外的东西。以前我是不屑于做管理、写文档的,后来随着人生经验的累积,我发现管理者比起那些技术人员更有难度。讲一个简单的道理,我们看中国历史时,痴醉于张良诸葛的计谋、赵云韩信

2020-06-04 20:48:32 499

原创 [ShardingSphere] sharding-proxy——MySQL伪装者(一)

本文章基于最新版5.0.0-SNAPSHOT。伪装这个词比较有意思。记得看过这么一个电影,电影名称不记得了,但是电影场景大概是讲的男主角为了盗宝,需要潜入一个全副武装的大楼。这个大楼有着非常先进的门禁系统,通过ID卡和人脸识别才能进入。男主角偷取到一个工作人员的ID卡,找到黑客帮他造了一张ID卡,完美的骗过门禁系统进入到大楼偷到秘宝。这里就需要伪装,满足系统的某些协议才能通过验证系统。shar...

2020-04-26 17:33:39 1254

原创 [git] git删除远端分支

远端分支被删除或者合并后,还是可以在自己的仓库看到git的远端分支,这篇文章主要讲如何将这些分支删除。查看分支命令查看远端分支$ git branch -r origin/10- origin/11-insert-longsql-slow origin/23-update-to-5.0.0 origin/26-powersql-shardingrule-yyyymm ...

2020-04-24 16:21:01 980

转载 [虚拟化]宿主机挂载共享文件夹

文章目录设置共享文件夹挂载设置共享文件夹windows端选择需要共享的文件夹:挂载注意:要在主机与虚拟机中设置共享文件夹,需要安装VMware Tools或open-vm-tools工具。open-vm-tools可能不能自动挂载共享文件夹。自动挂载点是“/mnt/hgfs”。1、进入VMware菜单栏中的虚拟机设置选项——共享文件夹设置中添加主机中用来给客户机共享的目录。2、启动虚...

2020-04-21 10:55:17 781

原创 [gitlab] release功能

因为项目需要用到发布版本管理,看到github上面别人玩的很6,觉得应该属于业界规范,国内局域网对于release的内容比较少,不过看官方文档也足够了,因此针对release功能进行了简单探索。文章目录需要你提前了解的东西access tokenproject idtagAPI介绍查看release信息查看所有release信息查看指定release信息创建release修改release删...

2020-04-09 10:47:34 22583 6

清晰解读GroupBy

一直模糊理解Group By。看了这个你就清晰多了。

2016-10-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除