- 博客(449)
- 资源 (3)
- 收藏
- 关注
原创 【Mysql实战45讲】14 count(*)
count(*)如果有个页面经常要显示交易系统的操作记录总数,如何计数?如果用redis来保存这个表的总行数,可能存在一些问题,比如在数据表中插入一行数据后,准备将redis中的计数+1时,redis异常重启了,那刚刚这个+1的操作就丢失了,这个场景下是有解的,就是redis异常重启后,到数据库里单独执行一次 count(*) 来获取真实的行数,并写回到redis即可,由于异常重启不是经常出现的状况,所以这一次全表扫描的成本是可以接受的。但还有个问题是,redis所计数的值是不精确的,比如在执行新增记
2021-12-22 17:27:29 759
原创 【Mysql实战45讲】11 给字符串加索引
前缀索引如果给邮箱加索引,可以考虑用前缀索引:alter table testTable add index prefix_index(email(6));如果定义好长度,使用前缀索引可以做到既节省空间,又不额外增加太多查询成本的作用通过 select count(distinct targetField) as L from targetTable; 计算表中某个字段不重的个数通过 select count(distinct left (targetField, 5)) from targetT
2021-12-21 20:44:02 926
原创 【Mysql实战45讲】09 普通索引和唯一索引的选择
change buffer当更新一个数据页时,如果数据页在内存中,就直接更新,如果不在内存中,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了,然后在下次查询需要访问该数据页时,再将数据页读入内存,然后执行 change buffer 中与这个数据页有关的操作。change buffer 的好处是减少了读磁盘,所以可以提升执行速度,而且数据读入内存中需要占用 buffer pool,所以还提高了内存利用率change
2021-12-21 19:23:41 565
原创 【Mysql实战45讲】06 全局锁、表锁
根据加锁范围,Mysql中的锁可以分为全局锁、表级锁、行锁1、全局锁指对整个数据库实例加锁,mysql提供了一个加全局读锁的方法,命令是:flush tables with read lock (FTWRL),执行后整个库会处于只读的状态使用场景:对全库进行逻辑备份。但它存在风险,比如用这种方式在主库进行备份,那业务功能将暂时不可用;在从库进行备份,备份期间从库不能执行主库同步过来的binlog,从而导致主从延迟。所以比较好的备份方案是在可重复读的隔离级别下开启一个事务,mysql官方自带的备份工具
2021-12-17 09:43:48 450
原创 【Mysql实战45讲】04-05 索引
事务隔离Mysql 是一个支持多引擎的系统,事务是在引擎层实现的,但 MyISAM 引擎不支持事务,InnoDB 引擎支持事务索引二叉树的搜索效率很高,但索引之所以不用二叉树,是因为索引不仅存在内存中,还要写到磁盘上,使用二叉树的话,树的高度会比较高,假设有一棵100万节点的平衡二叉树,那它的树高就为20,一次查询可能需要访问20个数据块,如果从磁盘随机读取一个数据块需要10ms左右的寻址时间,那么对于这个100万行的表,使用二叉树存储时单独访问一个行可能需要20个10ms的时间了,查询耗时较长。希
2021-12-09 17:25:17 207
原创 linux shell脚本
来源:鸟哥私房菜1、计算乘法#!/bin/bashread -p "num1:" num1read -p "num2:" num2# 注意 ${num1}*${num2} 外面要套一层括号total=$((${num1}*${num2}))echo -e "\n result of ${num1} x ${num2} is ==> ${total}"2、计算含有小数点的数据时,使用 bc 指令3、计算π#!/bin/bashread -p "pai保留几位小数:" check
2021-12-07 15:27:52 714
原创 k8s官方文档学习
文章目录节点1. Addresses:2. conditions 块描述了所有 Running 节点的状态:3. Capacity 块描述节点上的可用资源:CPU、内存(memory)、Pod的个数上限(pods)4. Allocatable 块指示节点上可供普通 Pod 消耗的资源量节点kubectl describe node <节点名称> 查看节点状态和细节信息1. Addresses:HostName:即节点名称ExternalIP:通常是节点的可外部路由(从集群外可访问)的
2021-11-18 21:44:43 1581
原创 EasyExcel
一、成员变量上的注解@ExcelPropertyvalue:标题名、列头(如果不指定,就将成员变量名作为列头;如果要设置复杂的头,可以为value指定多个值,value = {“aaa”, “bbb”})index:指定标题字段在哪一列,设置的从0开始,默认为-1(如果不指定,则按成员变量的位置排序)@DateTimeFormat标注在成员变量上进行日期的转换,比如:@DateTimeFormat(“yyyy-MM-dd HH:mm:ss”)二、ReadWorkbook、ReadSheet里
2021-09-20 14:18:30 2367
原创 linux笔记
一、文件和目录etc:系统中的配置文件var:/var/log 程序运行日志的存放目录~:默认所在的home目录/ :根目录。通过在home目录输入 cd / 来进入二、top指令top:实时监控进程的状态,按q停止pid:进程iduser:进程所属用户pr:进程优先级ni:进程优先级,为负数,表示高优先级;为正数,表示低优先级virt:进程使用虚拟内存的总量command:表示输入命令的名字top -pid pid 实时显示指定进程的信息三、psps:显示当前时刻正在
2021-09-19 14:51:13 209
原创 一、docker概念
一、基本概念镜像(image):docker镜像相当于是一个root文件系统,来源于远程仓库容器(container):镜像和容器的关系好比类和对象的关系,容器可以看做是由静态的镜像文件所创建出来的动态实例。二、docker指令mac电脑启动docker客户端后,在 iterm2 中输入 docker images 就可以查看本地所有的镜像docker images -q 查看本地所有镜像的id如果想要拉取redis镜像,命令为:docker pull redis:5.0 , 注意这
2021-09-14 23:58:29 127
原创 mac安装docker+k8s
一、安装Docker for Desktop官网地址:https://www.docker.com/products/docker-desktop镜像地址:http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/先打开运行docker后再进行第二步k8s集群的安装二、安装k8s集群安装k8s-for-docker-desktopgit clone git://github.com/AliyunContainerService
2021-09-14 01:09:59 1042 1
原创 十三、es集群
一、集群、分布式的概念和作用三个红框彼此构成集群每个红框内部构成分布式合起来就是集群分布式架构二、es集群的特点es天然支持分布式es的设计隐藏了分布式本身的复杂性三、es集群分布式架构的相关概念集群(cluster):一组拥有共同的 cluster name 的节点节点(node):集群中的一个es实例索引(index):es存放数据的地方,相当于关系数据库中database的概念分片(shard):索引可以被拆分为不同的部分进行存储,称为分片。在集群环境下,一个索引的不
2021-09-12 15:56:09 524
原创 十二、重建索引、索引别名
一、重建索引es的索引一旦创建,只允许添加字段,不允许更改字段,因为改变字段需要重建倒排索引,影响内部缓存结构,性能太低。# 使用reindex拷贝数据POST _reindex{ "source": { "index": "index_v1" }, "dest": { "index": "index_v2" }}完整脚本为:# 重建索引# 新建索引:index_v1,注意:索引名称必须全部小写PUT index_v1{ "mappings":
2021-09-12 15:32:01 1266
原创 十一、聚合查询
聚合查询指标聚合:相当于mysql的聚合函数,比如max、min、avg、sum等桶聚合:相当于mysql的group by操作。注意:不要对text类型的数据进行分组,会失败,因为text类型会进行分词,分完词之后就是不同的词条进行存储了,而分组希望的是一个整体和其他的进行比对,所以text类型的不要使用分组,keyword的可以。1、指标聚合(聚合函数)# 指标聚合 聚合函数GET goods/_search{ "query": { "match": { "tit
2021-09-12 13:30:31 304
原创 十、布尔查询
布尔查询boolQuery:对多个查询条件进行连接。连接方式有:must(and):条件必须成立must_not(not):条件必须不成立should(or):条件可以成立filter:条件必须成立。性能比must高,因为不会计算得分查询的脚本格式:GET 索引名称/_search{ "query": { "bool": { "must": [ {}, {}, {} ], "filter": [ {}, {}
2021-09-11 23:17:35 854
原创 九、多字段查询:queryString
queryString查询会对查询条件进行分词然后将分词后的查询条件和词条进行等值匹配默认取并集(or)可以指定多个查询字段GET goods/_search{ "query": { "query_string": { "fields": ["字段1","字段2"...], "query": "查询条件1 or 查询条件2" } }}如果查询字段中有三个字段,而query只有「华为手机」,那么会先自动将「华为手机」分为两个词:华为、手机
2021-09-11 22:08:13 1408
原创 八、范围查询
范围查询:rangees中任何查询都能排序gte:设置下限lte:设置上限GET goods/_search{ "query": { "range": { "price": { "gte": 100, "lte": 500 } } }}也可以设置排序规则:GET goods/_search{ "query": { "range": { "price": { "gte
2021-09-11 21:41:56 428
原创 八、模糊查询
模糊查询wildcard查询:通配符查询,?(任意单个字符),*(0个或多个字符);会进行分词regexp查询:正则查询prefix查询:前缀查询一、通配符查询(wildcard)GET goods/_search{ "query": { "wildcard": { "title": { "value": "title?" } } }}GET goods/_search{ "query": { "wildca
2021-09-11 18:30:03 269
原创 七、term查询、match查询
一、term查询不会对查询字段进行分词,也就是如果es中的数据为「华为5g手机」,那通过term指定查询条件为「华为手机」时,是查不到该条数据的。一般用term查询es中字段类型为keyword的字段,因为keyword不会分词GET 索引名称/_search{ "query": { "term": { "字段名称": { "value": "查询条件" } } }} /** * termQuery 词
2021-09-11 18:11:55 873
原创 六、bulk批量查询、bulk批量导入、match_all
一、bulk批量查询# 批量操作# 删除5号记录# 添加8号记录# 修改2号的名词为二号POST _bulk{"delete":{"_index":"person","_id":"5"}}{"create":{"_index":"person","_id":"8"}}{"name":"八号","age":80,"address":"北京"}{"update":{"_index":"person","_id":"2"}}{"doc":{"name":"二号"}} @Test
2021-09-11 14:48:59 859
原创 mac安装mysql(2021)
1、官网下载mysql官网地址:https://www.mysql.com/downloads/选择下方的社区版(GPL)点击:MySQL Community Server非m1芯片的mac选择x86,下载dmg注意:安装时选择传统密码2、环境配置vim .bash_profile加上:PATH=$PATH:/usr/local/mysql/bin使配置生效:source .bash_profile测试能否连上mysql: mysql -uroot -p3、配置 .zsh
2021-09-04 17:00:26 421
原创 抓包工具:Charles
下载证书2、电脑通过switchhosts配置ip地址和端口号(Charles会弹出)3、浏览器输入:http://chls.pro/ssl 下载证书文件4、证书文件传给手机,保存到手机中的我的文件里,然后在通用——描述文件里进行安装,安装后到 关于本机——证书信任设置 里打开对证书的完全信任5、手机和电脑连到同一wifi下,手机对此wifi进行配置代理的设置,选为手动,服务器地址通过电脑中输入hostname来获取,端口号为刚Charles提示的端口号,保存即可。6、手机请求地址,电脑上的抓
2021-09-02 00:10:28 151
原创 五、pom依赖,对索引和文档的添加、查询、删除、判断
一、pom依赖 <!--引入es的坐标--> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.6.2</version>
2021-08-30 23:04:13 497
原创 四、查询文档(term和match)
查询文档词条查询 term:不会分析查询条件,只有当词条和查询字符串完全匹配时才匹配搜索全文查询 match:会分析查询条件,先将查询条件进行分词,然后查询,最后求并集# term 词条查询。查询的条件字符串和词条要完全匹配# field指要查询的字段,value指查询的条件字符串GET person/_search{ "query": { "term": { "address": { "value": "北京" } } }}
2021-08-29 16:29:03 350
原创 三、es分词器
一、内置分词器es内置分词器对中文很不友好,处理方式为:一个字一个词。es的内置分词器:Standard Analyzer:默认分词器,按词切分,小写处理Simple Analyzer:按照非字母切分(符号被过滤),小写处理Stop Analyzer:停用词过滤(the,a,is),小写处理Whitespace Analyzer:按照空格切分,不转小写Keyword Analyzer:直接将输入当做输出,不分词Patter Analyzer:正则表达式,默认 \W+(非字符分割)Lan
2021-08-29 15:40:57 3102
原创 mac配置java和maven环境
配置javavim .bash_profile# javaexport JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Homeexport PATH=$PATH:${JAVA_HOME}/bin# mavenexport M2_HOME=/Users/xxxxx/Downloads/settingfile/apache-maven-3.8.1export PATH=$PATH:$M2_HOME/
2021-08-29 15:18:46 208
原创 二、es的可视化工具:Kibana及练习
安装Kibanaes官方地址:elastic.co/cn重要:这里进去后一定要选择es对应的版本点击kibana,照着安装:curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-darwin-x86_64.tar.gztar xzvf kibana-7.6.2-linux-x86_64.tar.gzcd kibana-7.6.2-linux-x86_64/进入config文件夹,对kiban
2021-08-28 17:30:04 1210
原创 一、概念及字段含义
一、基本概念mysql支持事务,而es不支持事务,所以es中的数据删除后是无法恢复的。es没有物理外键这个特性,如果要求数据具有强一致性,建议慎用es。mysql复杂存储数据,es负责搜索数据。目前在企业级应用的场景中,es的作用是:先将mysql中的数据同步到es中,以后如果进行查找的话,就查es以提升查询效率;但mysql依然有用,比如增删改的时候,作用的是mysql,编辑完后再同步到es中。所以es并不是用来替换mysql的,而是用来提升查询性能的。二、核心概念索引(index):es
2021-08-28 16:18:38 605
原创 极客kafka学习——kafka核心技术与实战
1、kafka概念Kafka 的三层消息架构:第一层是主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。第二层是分区层,每个分区的 N 个副本中只能有一个充当领导者角色,对外提供服务;其他 N-1 个副本是追随者副本,只是提供数据冗余之用。第三层是消息层,分区中包含若干条消息,每条消息的位移从 0 开始,依次递增。最后,客户端程序只能与分区的领导者副本进行交互。...
2021-07-22 09:40:00 1781
原创 mac安装brew、maven
/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
2021-07-20 22:21:50 627
原创 创建list(asList和Stream.of)、合并list
1、asList的方式来创建listList<Integer> integers = asList(1, 2, 3);asList 返回的是一个由指定数组生成的固定大小的 List,所以它不支持插入和删除,也就是不支持动态扩容。原因:它在创建list时,里面有一个也叫做ArrayList的内部类,这个内部类中有一个被声明为final的数组,所有传入的的元素都会保留到这个final数组中,所以其实它内部的这个ArrayList并不是java.util.ArrayList,而是java.ut
2021-05-11 15:31:47 2049
原创 拉取项目代码到本地
git --version如果没有git,执行:jumbo install gitgit config --global user.email xxx@baidu.comgit config --global user.name xxx接下来配置ssh公钥ssh-keygen -t rsacat ~/.ssh/id_rsa.xxx.pub将密钥复制进code平台的ssh中
2021-01-20 23:52:52 403
原创 idea设置
idea右边无maven选项选择 pom.xml 文件,右键,选择 Add as Maven Project,就可以看到maven选项了。调用一个类中的方法时,方法报红尝试安装lombok插件
2021-01-20 23:48:13 514
原创 如何快速写参考文献?
1. 复制文献标题,在谷歌学术里直接搜索点击“, ,”复制 GB/T7714 中的内容粘贴到论文中将[C]//修改为[C].2. 继续复制文献标题,在ACM中直接搜索ACM链接:https://dl.acm.org/action/doSearch在ACM搜索的目的是获取论文 出版地和出版者同样是点击“, ,”然后选择ACM Ref,找出出版地和出版者...
2020-12-15 21:54:21 1329
原创 手写LFUCache
LFU概念:最少频率使用算法(LFU):它为每个页面设计了一个访问频次计数器,页面每次被访问时,频次加一,优先淘汰频次最小的页面。import java.util.HashMap;import java.util.LinkedHashSet;import java.util.Map;public class LFUCache { class Node { int key; int value; int freq; // 封装
2020-10-06 17:52:41 307
原创 手写hashMap(排序版)
手写的 HashMap 里,链表元素按value降序排列public interface MyMap2 { //接口中的方法默认使用的 public abstract 修饰 int put(Integer key, Integer value); int get(Integer key); int size(); interface Entry { int getKey(); int getValue(); }}
2020-09-28 16:10:57 196
原创 手写工厂模式
手写工厂模式public class 手写工厂方法模式 { public interface Shape { void draw(); } public interface Factory { Shape getShape(); } public static class Circle implements Shape { public Circle() { System.out.print
2020-09-28 16:07:14 1346
原创 手写LinkedList
手写LinkedListclass Node { Object obj; Node pre; Node next; public Node() { } public void setObj(Object obj) { this.obj = obj; } public void setPre(Node pre) { this.pre = pre; } public void setNext
2020-09-28 15:36:06 221
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人