- 博客(62)
- 收藏
- 关注
原创 FutureTask的使用方法及实现原理,Java后端路线图
this.state = NEW; // ensure visibility of callable } 在FutureTask的构造函数中,对声明为volatile的state变量进行赋值操作后,callable变量也会变得对于其他线程可见。 2. 用一个Treiber栈保存等待线程 Treiber栈是一个无锁数据结构,FutureTask中的waiters变量指向这个栈的栈顶。名字有点吓人,其实很简单,就是一个无锁的线程安全的栈。入栈操作只通过一步CAS操作实现,即修改栈顶指针waiters;出栈和在栈
2022-04-22 16:47:28
983
原创 C语言的三子棋,用22天总结了一份完美的SQL学习笔记
} else { printf(“该输入的坐标已经被占用\n”); } } else { printf(“输入坐标错误\n”); } } } [](()电脑下棋 电脑设置两个随机值,再将进行条件判断 void ComputerMove(char board[ROW][COL], int row, int col) { printf(“电脑走>\n”); while (1) { int x = rand() % row; int y = rand() % col; if (board[x][y] ==
2022-04-22 16:45:43
1497
原创 Ceph实战(一)-分布式存储介绍与原理架构概述
Libradio:为 Rados 提供库,因为 RADOS 是协议很难直接访问,因此上层的 RBD、RGW 和 CephFS 都是通过 librados 访问的,目前提供 PHP、Ruby、Java、Python、C和C++支持。 CRUSH:Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。 RBD:全称 RADOS block device,是 Ceph 对外提供的块设备服务。 RGW:全称 RADOS gateway,是 Ceph 对外提供的对象存储服务,接口与 S3 和 Swif
2022-04-21 13:04:29
512
原创 Alibaba内部流行的“Java突击宝典”
1.JVM基础调优 2.常见框架源码(Spring+SpringMVC+Mybatis) 3.消息中间件(MQ+Kafka) 4.微服务 5.Netty 4-5年:提升技术广度与深度 ============== 1.性能调优 2.微服务 3.分布式场景问题 4.项目实战 高仿小米商城项目 Java开源项目【ali1024.coding.net/public/P7/Java/git】 Alibaba订单管理系统项目 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上
2022-04-21 13:00:25
744
原创 2021最新最全Java基础高频面试题汇总(1W字详细解析)
LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于 ArrayList.当然,这些对比都是指数据量很大或者操作很频繁。 12、 HashMap和HashTable的区别 (1)两者父类不同 HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。 (2)对外提供的接口不同 Hashtable比
2022-04-21 12:51:54
235
原创 2020年4面美团(多线程+redis
[](()美团Java岗三面(技术面,约60分钟) ======================================================================================= 项目介绍。 最有技术难度的项目,介绍下相关核心设计流程。 分布式下redis如何保证线程安全? redis持久化的方式以及区别? zookeeper如何实现分布式锁、其他分布式锁怎么实现? kafka的架构,如何用kafka保证消息的有序性? 数据库的优.
2022-04-21 12:49:42
2051
原创 Docker下,两分钟极速体验Nacos配置中心
下面是《Spring Cloud Alibaba实战系列》的所有文章地址: [《Docker下,两分钟极速体验Nacos》]((); [《Docker下的Nacos环境开发》]((); [《Docker下,两分钟极速体验Nacos配置中心》]((); [《Docker下Nacos配置应用开发》]((); [](()关于Nacos的动态配置服务 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置,Nacos 提供了一个简洁易用的UI 帮助您管理所有的服务和应
2022-04-20 13:47:54
220
原创 CDH+Kylin三部曲之三:Kylin官方demo
SSH登录CDH服务器 切换到hdfs账号:su - hdfs 执行导入命令:${KYLIN_HOME}/bin/sample.sh 导入成功,控制台输出如下: [](()检查数据 检查数据,执行beeline进入会话模式(hive官方推荐用beeline取代Hive CLI): 在beeline会话模式输入链接URL:!connect jdbc:hive2://localhost:10000,按照提示输入账号hdfs,密码直接回车: 用命令show tables查看当前..
2022-04-20 13:46:21
127
原创 CAT客户端如何从Apollo中读取配置?
JDK 8 spring boot 2.0.7.RELEASE cat-client 3.0.0 apollo-client 1.3.0 [](()去除Apollo对CAT的依赖 众所周知,Apollo对CAT是有依赖的,但不是强依赖,而是使用了SPI技术,只有项目里引用了cat-client才会生效。目前我们想把CAT客户端配置放在Apollo里,也就是在CAT客户端初始化之前从Apollo读取相应配置,这就形成了循环依赖,所以首先要去除A 《一线大厂Java面试题解析+后端开发学习笔..
2022-04-20 13:44:51
339
原创 BS-GX-016基于SSM实现教材管理系统
教材入库: 付款记录管理: 教材统计: 教师角色登陆: 教师领取教材: 教师领取的教材:  ======== MySQL(83道) ========== Redis(50道) ========== MongoDB(95道) ============ Spring(131道) ============ 面试题实在太多了,如果您看到这里懒得往下看的话,需要免费获取这套面试的同学麻烦帮忙点赞+转发文章后,然后私信我【面试】获取! Spring Boot(92道) ================ Spring Cloud(135道) ================== ..
2022-04-20 13:41:23
1931
原创 985应届进大厂,后端开发两年被裁,对前路迷茫的我
后果可想而知,在这家公司待了2年,自身技术更新不及时,加上恰巧碰到互联网环境遇冷,被裁了。公司伙食很好,待遇也不错,行业内口碑也非常nice,公司以生产精品为荣,但最终还是败给了资本,连最值钱的电商业务也卖掉了。 离开是新的开始? ======== 被裁之后,算是对杭州心灰意冷,离开的那天,天也灰蒙蒙的,我非常清楚自己在这座城市生存的自信力已经被摧毁掉了,唯一的解决办法,就是换一个城市生活。没有太多犹豫的,毅然决然买了高铁票去了深圳,或许这座生命力旺盛的一线城市能够给我带来不一样的开始。..
2022-04-20 13:39:06
718
原创 2021年最新基于Spring Cloud的微服务架构分析
在客户端负载均衡中,所有客户端节点都维护着自己要访问的服务端清单,而这些服务端的清单来自于服务注册中心(比如Eureka)。在客户端负载均衡中也需要心跳去维护服务端清单的健康性,只是这个步骤需要与服务注册中心配合完成。 通过Spring Cloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用只需要如下两步: 服务提供者只需要启动多个服务实例并且注册到一个注册中心或是多个相关联的服务注册中心 服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现
2022-04-20 13:32:56
281
原创 10年Java开发经验,超过500人面试阿里的同学,总结出这108道面试题
2. innodb和myisam存储引擎的区别 3. 索引分类(主键、唯一索引、全文索引、覆盖索引等等),最左前缀原则,哪些条件无法使用索引 4. B树、B+树区别,索引为何使用B+树 5. 聚集索引与非聚集索引(使用非聚集索引的查询过程) 6. 事务的ACID(原子性、一致性、隔离性、持久性) 7. 事务隔离级别和各自存在的问题(脏读、不可重复读、幻读)和解决方式(间隙锁及MVCC) 8. 乐观锁和悲观锁、行锁与表锁、共享锁与排他锁(inndob如何手动加共享锁与排他锁) 9. MVCC(增加两个版本号)
2022-04-20 13:30:41
950
原创 10 个冷门但又非常实用的 Docker 使用技巧
5. docker update 当你 docker run 了之后却发现里面有一些参数并不是你想要的状态比如你设置的 nginx 容器 cpu 或者内存太小,这个时候你就可以使用 docker update 去修改这些参数。 ~ docker update nginx --cpus 2 6. docker history 当你修改了一个镜像,但是忘记了每一层的修改命令,或者你想查看一个镜像是怎么构建的时候就可以使用这个命令,比如: ~ docke
2022-04-20 13:28:30
377
原创 69-个经典-Spring-面试题和答案详解(下)
类型用于注入一组值,不允许有相同的值。 类型用于注入一组键值对,键和值都可以为任意类型。 类型用于注入一组键值对,键和值都只能为String类型。 31. 什么是bean装配? 装配,或bean 装配是指在Spring 容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起。 32. 什么是bean的自动装配? Spring 容器能够自动装配相互合作的bean,这意味着容器不需要和配置,能通过Bean工厂自动处理bean之间的协作。 33. ...
2022-04-19 12:54:55
491
原创 30 网站架构师职场攻略
是公司里如果有个吃人的怪兽,悄悄地把此类架构师都吃光了,也没人会发现。 [](()3 按职责角色划分架构师 产品架构师 负责具体互联网产品的技术架构。当产品业务规划确定后,产品架构师就要开始产 品的架构设计了,和运营团队确定pv数、用户数、商品数等产品运营目标、发展规划、 非功能指标;和产品经理确定功能需求、模块划分等功能目标;和项目经理确定各种开 发资源。获得必要的信息后进行整体架构设计,参与项目开发。产品架构师一般会参与 产品的整个生命周期。 基础服务架构师 有时候也被称为平台架构师,负责开发基
2022-04-19 12:51:14
157
原创 2021最新最全Java基础高频面试题汇总(1W字详细解析)
} public void sayHello() { System.out.println(“Hello”); } } class Son extends Father{ @Override public void sayHello() { // TODO Auto-generated method stub System.out.println("hello by "); } }复制代码 重写 总结: ( 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 1)发生在
2022-04-19 12:48:53
487
原创 2021最新Spring Boot 面试题
public void setConnectionRequestTimeout(Integer connectionRequestTimeout) { this.connectionRequestTimeout = connectionRequestTimeout; } public Integer getSocketTimeout() { return socketTimeout; } public void setSocketTimeout(Integer socketTimeout) { this.s
2022-04-19 12:46:38
155
原创 eclispe的快捷键大全
全局 恢复上一个选择 Alt+Shift+↓ 全局 剪切 Ctrl+X 全局 快速修正 Ctrl1+1 全局 内容辅助 Alt+/ 全局 全部选中 C 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 trl+A 全局 删除 Delete 全局 上下文信息 Alt+? Alt+Shift+? Ctrl+Shift+Space Java编辑器 显示工具提示描述 F2 Java编辑器 选择封装元素 Alt+Shift+↑ Java编辑器 选择上一个元素 Alt+Shift
2022-04-18 13:21:51
156
原创 echart之全国地图切换省级地图
这是在基础地图地图的基础上结合echarts2的改进版本,echarts2中的版本只有左上角的全国地图的比较简单的实例代码。 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 现在的比较完善(点击全国地图上的省显示对应省内各市的热力分布,对应的全国地图和省级地图的位置大小都会相应的变化,然后再点击右上角的返回全国按钮的时候,隐藏省级地图,全国地图回复原来的大小的位置。) 首先定义几个数据变量: province_data:全国地图对应的各省的地图数据。 city_d.
2022-04-18 13:19:55
2356
原创 Docker系列(2)--容器和镜像的使用
我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。 [](()三、启动容器(后台模式) docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done” 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63 这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什
2022-04-18 13:17:33
160
原创 Docker入门简介
一次构建,随处运行 更快速的应用交付和部署 更便捷的升级和扩缩容 更简单的系统运维 更高效的计算资源利用 [](()3.相关资源 ===================================================================== 官网: http://www.docker.com 仓库: https://hub.docker.com [](()4.docker安装的前提环境 =====================================
2022-04-18 13:15:18
290
原创 HashMap + 软引用进行缓存
二、软引用(SoftReference)与弱引用(WeakReference) 软引用:如果一个对象只具有软引用,而当前虚拟机堆内存空间足够,那么垃圾回收器就不会回收它,反之就会回收这些软引用指向的对象。 弱引用:垃圾回收器一旦发现某块内存上只有弱引用(一定请注意只有弱引用,没强引用),不管当前内存空间是否足够,那么都会回收这块内存。 三、代码实例(强引用VS软引用) 现在的管理系统里,为了提升性能,往往会加入缓存,将部分常用的数据缓存到内存中,这样用于在访问时,会直接从内存中取出,降低数据库的访问量,
2022-04-17 12:43:47
551
原创 git(7)自定义 Git
这里举一个简单的例子:在暂存前,用indent(缩进)程序过滤所有C源代码。在.gitattributes文件中设置"indent"过滤器过滤*.c文件: *.c filter=indent 然后,通过以下配置,让 Git 知道"indent"过滤器在遇到"smudge"和"clean"时分别该做什么: $ git config --global filter.indent.clean indent $ git config --global filter.indent.smudge cat 于是,当你..
2022-04-17 12:42:17
970
原创 Flink处理函数实战之三:KeyedProcessFunction类
最后是整个逻辑功能的主体:ProcessTime.java,这里面有自定义的KeyedProcessFunction子类,还有程序入口的main方法,代码在下面列出来之后,还会对关键部分做介绍: package com.bolingcavalry.keyedprocessfunction; import com.bolingcavalry.Splitter; import org.apache.flink.api.common.state.ValueState; import org.apache.fl.
2022-04-17 12:40:39
401
原创 ELK + Filebeat + Kafka 分布式日志管理平台搭建
log_source: authorization type: log enabled: true paths: /var/logs/springboot/sparksys-gateway.log fields: log_source: gateway type: log enabled: true paths: /var/logs/springboot/sparksys-file.log fields: log_source: file type: log enabled: true
2022-04-17 12:39:01
1996
原创 Elasticsearch Query DSL概述与查询、过滤上下文
从本节开始,先详细介绍Elasticsearch Query DSL语法,该部分是SearchAPI的核心基础之一。 Elasticsearch提供了一个基于JSON的完整查询DSL(领域特定语言)来定义查询。把查询DSL看作是查询的AST(抽象语法树),由两种类型的子句组成: Leaf query clauses(叶查询字句) 叶子查询子句指在特定的字段中寻找特定的值,例如匹配、范围查询或term(完全匹配)。这些查询 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义
2022-04-17 12:36:44
259
原创 DDD领域驱动设计实战-分层架构及代码目录结构
[](()1.1 分层架构的基本原则 每层只与位于其下方的层发生耦合。 [](()1.2 分层架构的分类 严格分层架构(Strict Layers Architecture) 某层只能与其直接下层耦合,即我的奴隶的奴隶,不是我的奴隶。 松散分层架构(Relaxed Layers Architecture) 允许任意上层与任意下层耦合。由于用户接口层和应用服务通常需要与基础设施打交道,许多系统都是该架构。 较低层有时也可与较高层耦合,但只限于采用观察者 (Observer)模式或者调停者(Med
2022-04-17 12:33:35
4098
1
原创 Canal 如何实现数据库库事务的一致性
在 Canal 中关于事务 Event 的环形缓存区实现类为 EventTransactionBuffer。 [](()1.1 类图 EventTransactionBuffer 的类图如下: 根据类图我们可以到其存储结构还是比较简单的。 int bufferSize环形缓存区的长度,默认为 1024,该长度必须为 2 的幂次方,因为对位运算非常友好。 int indexMask环形缓存区下标掩码,其值为 bufferSize - 1 ,sequence * indexMask 能快速定位序号 s
2022-04-17 12:31:47
810
原创 ActiveMQ详细入门教程系列(一)
可以使用消息优先级来指示JMS Provider首先提交紧急的消息。优先级分10个级别,从0(最低)到9(最高)。如果不指定优先级,默认级别是4。需要注意的是,JMS Pro 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 vider并不一定保证按照优先级的顺序提交消息。 [](()6.2 消息过期 可以设置消息在一定时间后过期,默认是永不过期。 [](()6.3 临时目的地 可以通过会话上的createTemporaryQueue方法和createTemporar
2022-04-17 12:27:14
644
原创 SpringBoot+WebSocket实时监控异常
项目结构是这样子的,后面的代码关键注释都有,就不重复描述了 1、新建SpringBoot工程,选择web和WebSocket依赖 2、配置application.yml 1 2 3 4 5 实时监控 6 7 8 .item { 9 display: flex; 10 border-bottom: 1px solid #000000; 11 justif
2022-04-15 16:56:11
712
原创 Spring Cloud入门教程-使用Hystrix Dashboard 监控熔断器的状态
注意:这里用到的项目都是在之前几篇文章讲解用到的项目工程基础上进行的,在这一系列博客写完后会提供源码地址。 项目源码及相关说明请查看此文:[Spring Cloud入门教程-简介](() 在微服务架构中,为了保证服务实例的可用性,防止服务实例出现故障导致线程阻塞,而出现了熔断器模型。熔断器的状况反映了一个程序的可用性和健壮性,它是一个重要指标Hystrix Dashboard是监控 Hystriⅸx的熔断器状况的一个组件,提供了数据监控和友好的图形化展示界面。本节在上一节的基础上,以案例的形式讲述如何使用
2022-04-15 16:54:42
720
原创 Spring Cloud Gateway过滤器精确控制异常返回(实战,控制http返回码和message字段)
| git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 | 这个git项目中有多个文件夹,本篇的源码在spring-cloud-tutorials文件夹下,如下图红框所示: spring-cloud-tutorials文件夹下有多个子工程,本篇的代码是gateway-change-body,如下图红框所示: [](()第一种:抛出ResponseStatusException异常 打开gateway-ch
2022-04-15 16:52:53
770
原创 Redis高可用之主从复制实践
如果master有密码 masterauth 2021 启动从服务器时开启 redis-server启动命令后加入参数 --slaveof ,如果master有密码,则需要加入密码参数。 --requirepass 最终的启动命令如下: redis-server.exe ./redis.conf --slaveof 127.0.0.1 6379 --masterauth 2021 客户端处执行命令开启 在Redis客户端如redis-cli 中执行命令 slaveof 来指定主服务器,如果m
2022-04-15 16:51:15
242
原创 Redis开发常用规范
[](()3.规范Key的格式 合适的key,便于查看,统计,排错。 比如: | 网关 | GW | | :-- | :-- | | 平台名 | 平台缩写 | “平台缩写“+“:”+“项目名”+“:”+“业务含义” 例如:GW:TRADE:USERID GW是新网关,TRADE是交易项目,USERID为业务ID。 “:”-作为key分隔符,方便客户端工具作为目录分级 [](()4.存储的Key一定要设置超时时间 如果应用将Redis定位为缓存Cache使用,对于存放的Key一定要设置超时时间!因为若不设
2022-04-15 16:48:59
291
原创 Nginx主要功能及使用
location / { proxy_pass http://localhost:8080; proxy_set_header Host host:host:host:server_port; } } 保存配置文件后启动 Nginx,这样当我们访问 localhost 的时候,就相当于访问 localhost:8080 了。 [](()二、负载均衡 负载均衡也是 Nginx 常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如:Web服务器、[FTP服务器](()、企业关键应用服务器和其
2022-04-15 16:47:16
972
原创 MySQL最全整理(面试题+笔记
1.3 MySQL 面试题(高级进阶部分): 请解释关系型数据库概念及主要特点? 请说出关系型数据库的典型产品、特点及应用场景? 请解释非关系型数据库概念及主要特点? 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 请说出非关系型数据库的典型产品、特点及应用场景? 请详细描述 SQL 语句分类及对应代表性关键字。 请详细描述 char(4)和 varchar(4)的差别。 如何授权 oldboy 用户从 172.16.1.0/24
2022-04-15 16:45:21
750
原创 mysql sql语句大全
12、说明:使用外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包
2022-04-15 16:43:01
530
原创 MyCat教程【简单介绍】
Mycat 是阿里原应用 corba 转型而来的. [](()3.3 市场应用 MyCat 在互联网应用中占比非常高. [](()二、MyCat中的概念介绍 ============================================================================ [](()1. 切分 逻辑上的切分. 在物理层面,是使用多库[database],多表[table]实现的切分. [](()1.1 纵向切分/垂直切分 就是把原本存储于一个库的数据存储到多个库上.
2022-04-15 16:40:47
133
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅