java
文章平均质量分 80
代码还是烂到家
每天都要问自己,你比别人多什么。
展开
-
ElasticSearch
倒排索引:正排索引和倒排索引倒排索引的核心组成:两个部分:1.单词词典(Term Dictionary) ,记录所有文档的单词,记录单词到倒排列表的关联关系。单词词典一般比较大,可以通过B+树或者Hash链表法来实现,以满足高性能的插入与查询。2.倒排列表(Posting List) :记录了单词对应的文档结合,由倒排索引项组成倒排索引项(posting)文档ID词频TF-该单词在文档中出现的次数,用于相关性的评分位置(position) 单词在文档中分词的位置。用于语句的搜索偏移原创 2023-03-11 14:49:27 · 580 阅读 · 0 评论 -
java堆外内存
堆外内存申请和释放:堆外内存时不受jvm管理,gc算法不能被回收的。如何申请和释放?1. unsafe类我们可以使用unsafe类来进行申请和释放:申请:// 分配 10M 堆外内存long address = unsafe.allocateMemory(10 * 1024 * 1024);释放:unsafe.freeMemory()使用:private static Unsafe unsafe = null;static { try { Field getU原创 2022-03-14 00:37:29 · 1687 阅读 · 0 评论 -
快速学习mysql inndb底层存储原理
首先来看看mysql的体系架构:从图中来开,主要分为了几大部分网络层连接服务层 mysql server存储引擎层系统文件层我们来看一下 msyql运行的机制再看一下mysql官网给出的inndb存储架构图看了很多我们可以通过查询和更新来将这些组件串联起来查询:查询进入server端,依次进入 连接器 分析器 优化器 执行器a. 连接器: 进行管理连接,权限验证b. 分析器:i. 词法解析:sql语句,识别出里面的字符是干什么的ii. 语法解析:输入的sql语句是否原创 2022-02-27 16:56:03 · 1166 阅读 · 0 评论 -
快速学习垃圾收集器
serial收集器:最古老的收集器,单线程,收集工作的时候需要暂停其他所有的工作线程(stop the world)。老年代版本:serial old新生代复制,老年代标记-整理parallel scavenge:serial多线程版本。 关注点是吞吐量老年代版本:parallel old新生代复制,老年代标记整理ParNew收集器:serial多线程版本,主要为了减少stw,不是提升吞吐量(cpu利用率)4核CPU就可以支持4个垃圾回收线程并行执行,可以提升4倍的性能通常和CMS原创 2022-02-27 12:12:03 · 418 阅读 · 0 评论 -
ThreadLocal
ThreadLocal为每隔使用该变量的线程提供独立的变量副本。并发环境下 我们使用simpledataformat。我们可以封装一下用threadlocal来保存。为什么这么做呢?simpledateformat是不安全的simpledateformate中的calendar线程是不安全的calendar是线程不安全,为什么不安全?类中存放日期数据变量是线程不安全的,比如里面的time等属性public class TestSimpleDateFormat2 { // (1)创建原创 2022-02-26 13:13:33 · 403 阅读 · 0 评论 -
SpringMVC
springmvc:三层 本质是对sevlet的封装,只用一个dispatcherServlet, 执行handler<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <原创 2021-12-16 05:18:08 · 413 阅读 · 0 评论 -
CPU缓存一致性和伪共享
多核cpu的好处在不提升cpu主频之后,多核cpu提升吞吐率。CPU:寄存器:cpu cache: L1 L2 L3 使用SRAM(SRAM(Static Random-Access Memory,静态随机存取存储器))存储,SRAM一旦断电,数据就会丢失了。L1 嵌入在CPU内部L1 L2 L3 访问的速度递减cpu cache高速缓存分成了指令缓存(Instruction Cache)和数据缓存(Data Cache)两部分。内存:内存使用DRAM(DRAM(Dynamic Rando原创 2021-12-04 10:28:34 · 591 阅读 · 0 评论 -
eureka和nacos注册中心缓存高并发读写比较
eureka和nacos ap模式下为了高并发读写,都在内存中修改,但是分别采用了不同的策略。nacos 使用的是CopyOnWrite思想防止并发冲突。eureka使用的是3级缓存。注册中心支持大量provider和consumer,所以有高并发的读写。引用一个dubbo的图,大体上nacos和eureka也是大致的逻辑。nacosprovider向注册中心注册,将服务器相关信息写入内存。consumer拉取,读取注册中心服务信息。eureka为了增加读写并发,在内存中运用读写分离的思想。原创 2021-09-01 23:59:46 · 1671 阅读 · 0 评论 -
Zookeeper集群搭建
zookeeper官网内容其实已经很详细了。本文以官网为行文路线:https://zookeeper.apache.org/doc/current/zookeeperStarted.htmlzookeeper事先需要安装jdk,然后下载一个稳定的版本。具体在:https://zookeeper.apache.org/releases.html目前已经是3.7了。但是本文搭建还是以3.4.6版本。下载地址:https://archive.apache.org/dist/zookeeper/zoo原创 2021-05-03 01:36:34 · 242 阅读 · 1 评论 -
【转】JVM 故障排查shell脚本
线程引起cpu问题:top 命令,查找到使用 CPUtoptop -Hp $pidprintf %x $tid## jstack 命令,查看 Java 进程的线程栈jstack $pid >$pid.logless $pid.log相关信息保留:(1)系统当前网络连接ss -antp > $DUMP_DIR/ss.dump 2>&1ss 命令将系统的所有网络连接输出到 ss.dump 文件中,netstat 在网络连接非常多的情况下,执行非常缓慢,所以使用原创 2021-02-15 14:08:21 · 409 阅读 · 0 评论 -
快速了解数据中台
数据中台,看到这个词,很迷茫。快速了解的话,先看看数据发展的历史把。在互联网初期,可能就是一个公司的一个部门里面就有着一个后台系统,互不畅通,每个系统数据量相对较少。为了实现业务共享,出现SOA架构,将各个系统串联了起来,解决了信息的孤岛,数据量开始变多。在后期的互联网的高并发场景里面,数据库不再是一个,而是数据库集群,而且为了解决用户的查询操作,出现了数据库读写分离。数据库读写分离,有两种,一种是横向切分,一种是纵向切分。横向切分:通常通过hash取余算法来分散数据。纵向切分:按照功能模块进行原创 2020-09-04 00:16:37 · 235 阅读 · 0 评论 -
订单系统设计
订单是如何生成的,又是如何推送到下游的各个系统的。订单系统的低延迟,高可用的,不丢单问题。万级和千万级架构是不一样的。思路:首先,设计一个简单的订单系统。分析那几个环节会丢单。日万级如何优化。日千万如何升级改造。简单系统:只有前台和后台,前台结算页提供用户去结算。当后台收到前台用户点击去结算的操作时,就会处理下单服务。起初,订单会被处理到后台的数据库中,然后异构数据到缓存...原创 2020-05-21 23:52:54 · 4279 阅读 · 0 评论 -
BIO NIO AIO
首先我们看一下在操作系统中有几种I/O模型。在《Unix 网络编程》中归纳了5种I/O模型:Unix下可用的I/O模型为5种blocking I/O (BIO):阻塞IOnonblocking I/O (NIO):非阻塞IOI/O mutiplexing(select ,poll):IO多路复用signal driven I/O(SIGIO): 信号驱动式IOasynchronou...原创 2020-03-28 19:52:26 · 426 阅读 · 1 评论 -
Tomcat调优参数
tomcat的整体结构:tomcat主要有两个核心的功能:1.处理socket连接,字节流的request responese转换2.加载管理servlet所以 tomcat设计了两个组件:connector和container容器在xml中是这样呈现的tomcat的启动流程我们纵向观察一下启动流程回到正题默认的tomcat配置主要有:server.tomcat.ac...原创 2020-03-19 15:34:35 · 2314 阅读 · 0 评论 -
Redis分布式锁思路
对于线程安全问题,传统的而方案是对线程资源操作加锁。线程锁通常使用synchronized 或者lock关键字来进行加锁。但是这个是对于同一个jvm内存的。分布式锁如果在多个进程中保证任务同一时刻执行,那么这个就是分布式锁了。分布式锁实现有很多方式,常见的有zookeeper实现,缓存实现,数据库实现。但是这些锁都有如下的特征:多个进程可见互斥的,也就是在同一时刻只有一个进程获得...原创 2020-02-29 19:49:13 · 341 阅读 · 0 评论 -
Redis哨兵
当主数据库遇到异常中断服务后,我们需要将宕机的master下线,然后找一个slave作为master,并且通知所有点的slave连接新的master。之后启动就可以了。哨兵上面的操作,通过哨兵就可以解决。哨兵是一个用于对主从结构中每台服务器的监控,当出现故障的时候通过投票机制来选择新的master并且将所有的slave连接到新的master。通过上面的理解,我们知道哨兵主要就是监控通...原创 2020-01-19 12:58:45 · 271 阅读 · 0 评论 -
Redis主从复制
互联网三高架构高并发高性能高可用高可用H.A.(High Availability):指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。比如一年有三次宕机,宕机时间分别是:4小时27分15秒,11分36秒,2分16秒。则3此总和为866467秒。1年= 3652460*60 = 31536000秒可用性= 315360...原创 2020-01-19 06:59:43 · 880 阅读 · 0 评论 -
Redis事务
定义redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令事务的基本操作Redis事务以multi为开始,之后跟着用户传入多个命令,最后以exec为结束。开启事务:multi:设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中。执行事务:exec:设定事务的结束位置,同时执行事务。与multi成对出现成对使用。当加入事务的命令暂时进入到任务队列中,并没有立...原创 2020-01-18 08:27:58 · 158 阅读 · 0 评论 -
Redis 持久化RDB AOF
持久化简介每次我们使用word的时候,会发现在其目录下还会生成一个隐藏文件。其实这个也是防止word意外关闭而造成忘记保存。我们平时写文件都是操作内存,生成的隐藏word是保存在硬盘中,保证了持久化。Redis同样也是这样。Redis持久化的概念:利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制叫做持久化。持久化是为了保障数据安全的。持久化保存的是什么?...原创 2020-01-18 06:45:56 · 142 阅读 · 0 评论 -
分布式事务2PC,3PC
事务的ACID特性分布式事务是多个事务的组合,务的特征 ACID,也是分布式事务的基本特征。原子性(Atomicity)事务最终的状态只有两种,全部执行成功和全部不执行。多线程中也有原子性这个概念,某个线程执行操作,其他的线程是无法看中间的这个结果。而ACID中描述的是客户端发起的一个包含多个写操作的请求时候发生的情况。例如写了一部分,系统发生故障。这些写操作纳入到一个原子事务,出现状...原创 2020-01-14 14:34:56 · 373 阅读 · 0 评论 -
mysql视图
1.视图视图(View)是一种虚拟存在的表。视图就是一条SELECT语句执行后返回的结果集。视图相对于普通的表的优势:简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。数据独立:一旦视图的结构确定了...原创 2020-01-03 18:50:19 · 846 阅读 · 0 评论 -
Mysql存储过程和函数
文章目录存储过程和函数1.1.创建存储过程1.2 调用1.3 查看存储过程1.4 删除存储过程1.5存储过程编程语法:1.5.1 变量1.5.2 if条件判断1.5.3 传递参数1.5.4 case结构1.5.5 while循环1.5.6 repeat结构1.5.7 loop语句1.5.8 leave语句1.5.9 游标/光标1.6 存储函数存储过程和函数存储过程和函数是 事先经过编译并存储在...原创 2020-01-03 18:48:29 · 118 阅读 · 0 评论 -
Mysql子查询练习
本数据来源于网络如有侵权,请联系。用到的数据库:github用于保存员工的信息。employees表departments表jobs表locations表工资级别表前置知识:分类:按子查询出现的位置进行分类:select后面要求:子查询的结果为单行单列(标量子查询)from后面要求:子查询的结果可以为多行多列where或having后面 ★要求:子查...原创 2020-01-03 08:55:54 · 1024 阅读 · 0 评论 -
hashCode和equals方法:自定义HashMap的key时需要注意什么?
使用当我们需要自定义HashMap这种散列数据结构(HashSet,HashMap,LinkedHashMap,LinkedHashSet)的Key时候:需要重写hashCode()和equals(Object o)方法。使用方法public class Key { private Integer id; public Integer getId(){ re...原创 2019-12-29 02:39:15 · 381 阅读 · 0 评论 -
MySql索引
1.索引1.1介绍索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构。左边的是数据记录的物理地址。右边所示的二叉查找树从图中可以看出,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速获取到相应数据。目的:快速查找数据1.2 优势劣势:优势劣势提...原创 2019-12-11 15:52:19 · 183 阅读 · 0 评论 -
分布式概念
集群与分布式区别集群:复制模式,每台机器做一样的事。分布式:两台机器分工合作,每台机器做的不一样。分布式好处:独立开发,部署,测试易于扩展复用性高,例如:所有的产品都可以使用该系统作为用户系统,无需重复开发。架构演进架构演进一: 早期雏形特征:应用程序主要做静态文件读取,返回内容给浏览器。架构演进二: 数据库开发(LAMP特长)特征:应用程序主要主要读取数据表值,填充h...原创 2019-12-11 15:43:12 · 7250 阅读 · 0 评论 -
SQLyog远程登录mysql
文章目录写在前面环境实现远程登陆1.阿里云设置3306端口2.关闭防火墙,开放3306端口2.1. 关闭firewall2.2. 安装iptables防火墙2.3. 启动设置防火墙2.4查看状态2.5 添加端口2.6 重启配置,重启系统2.7. 调试3306端口是否能登陆上去3 sqlyog新建连接navicat也是相同的规则写在前面mysql安装请看mysql安装环境阿里云 cento...原创 2019-11-17 23:29:35 · 687 阅读 · 0 评论 -
Mysql基础
什么是SQLStructured Query Language 结构化查询语言SQL分类1.DDL(Data Definition Language)数据定义语言操作数据库,表,列等2.DML(Data Manipulation Language)数据操作语言增删改表中的数据3.DQL(Data Query Language)数据查询语言用来查询表的记录(数据)。关键字:selec...原创 2019-11-17 22:34:15 · 160 阅读 · 0 评论 -
linux安装mysql5.7
环境:环境阿里云centos7.2 安装mysql5.7步骤1.下载MySQL源wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm下载完成:2.安装源yum localinstall mysql57-community-release-el7-11.noarch.rpm遇到是...原创 2019-11-17 22:31:24 · 216 阅读 · 0 评论 -
java中的锁
总结自不可不说的Java“锁”事原创 2019-05-08 08:04:48 · 147 阅读 · 0 评论 -
删除ArrayList集合中的元素(方法剖析)
我们要删除ArrayList集合中的元素有2种方法:#1,普通for循环 #2,迭代器删除 下面通过代码来演示一下:package com.lianxi2;import java.util.ArrayList;public class Demo1 {public static void main(String[] args) { ArrayList<String> list = n原创 2016-03-24 22:28:35 · 1430 阅读 · 0 评论 -
ArrayList去除集合中自定义对象元素的重复值
/** * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同) * B:注意事项 * 重写equals()方法的 contains方法判断是否包含,底层依赖的是equals方法 remove方法判断是否删除,底层依赖的是equals方法 */public原创 2016-03-24 21:44:58 · 2800 阅读 · 1 评论