自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (4)

原创 多线程面试总结一

1.在Java程序中怎么保证多线程的运行安全?出现线程安全问题的原因:线程切换带来的原子性问题 缓存导致的可见性问题 编译优化带来的有序性问题解决方案:JDK Atomic开头的原子类,synchronized,LOCK,可以解决原子性问题 synchronized,volatile,LOCK可以解决可见性问题 Happens-Before规则可以解决有序性问题2.线程与进程的区别根本区别:进程是操作系统资源分配的基本单位,线程是处理器任务调度和执行的基本单位资源开销:进程之

2020-10-13 15:42:29 23

原创 Java面试题2

1.数组与集合的互相转换数组转 List:使用 Arrays. asList(array) 进行转换。 List 转数组:使用 List 自带的 toArray() 方法。2.创建线程的四种方式继承 Thread 类; 实现 Runnable 接口; 实现 Callable 接口; 使用 Executors 工具类创建线程池3.数据库的乐观锁和悲观锁是什么?怎么实现的?数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及

2020-09-20 12:48:44 20

转载 八大排序算法总结

原文地址:http://blog.csdn.net/hguisu/article/details/7776068概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机...

2020-09-04 10:07:26 48

转载 数组和链表的区别

谈到链表与数组的区别,可以从几个不同的角度来谈,首先从逻辑结构上说,两者都是数据结构的一种,但存在区别,数组是申请的一块连续的内存空间,并且是在编译阶段就要确定空间大小的,同时在运行阶段是不允许改变的,所以它不能够随着需要的改变而增加或减少空间大小,所以当数据量大的时候,有可能超出了已申请好的数组上限,产生数据越界,或者是数据量很小,对于没有使用的数组空间,造成内存浪费。链表则是动态申请的内存空间,并不像数组一样需要事先申请好大小,链表是现用现申请就OK,根据需求动态的申请或删除内存空间,对于的

2020-08-11 18:01:47 39

原创 支付相关概念和项目中整合支付

整合支付引入支付宝配置import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.DefaultAlipayClient;import com.alipay.api.request.AlipayTradePagePayRequest;import com.xhh.greymall.order.vo.PayVo;import lom...

2020-08-07 22:21:51 351

原创 分布式事务及相关问题的解决

本地事务在分布式下的问题创建订单锁库存过程中出现两个问题:本地事务在分布式系统中,只能控制住自己的回滚,控制不了其他服务的回滚分布式事务最大的原因就是网络问题+分布式机器 不操作一个数据库本地事务隔离级别&传播行为等复习一个事务开始代表下面的所有操作都在同一个连接里面本地事务失效的问题:同一个对象内事务方法互调默认失效,原因是绕过了代理对象,事务是使用代理对象来控制的解决:使用代理对象来调用事务方法1、引入AOP模块,引入了

2020-08-06 18:04:45 63

原创 订单服务以及相关问题的解决

订单中心主要包括物流信息,用户信息,支付信息,订单信息,促销信息,商品信息订单服务-Feign远程调用丢失请求头问题:解决:加一个feign远程调用的拦截器import feign.RequestInterceptor;import feign.RequestTemplate;import org.springframework.context.annotation.Bean;import org.springframework.context.ann..

2020-08-05 22:54:31 78

原创 消息队列-RabbitMQ以及在项目中的应用

一、MQ应用场景1、异步处理2、应用解耦 比如订单服务3、流量控制 比如秒杀系统二、MQ概述三、RabbitMQ相关概念RabbitMQ操作流程:四、RabbitMQ运行机制Exchange类型:五、spring boot整合RabbitMQ1、引入依赖...

2020-08-04 09:32:43 70

原创 购物车

登录以后,会将临时购物车的数据合并过来。并清空临时购物车,没登陆的情况下,及时关闭浏览器,下次进入,临时购物车数据都在

2020-08-03 11:48:16 48

原创 单点登录

单点登录:核心:几个系统即使域名不一样,想办法给几个系统同步一个统一的票据1、中央认证服务器 xxx.com2、其它系统想要登录去xxx.com登录,登陆成功就跳转回来3、只要一个登录,其他都不用登陆4、全系统统一一个sessionid,所有系统可能域名都不一样代码实现:server:@Controllerpublic class LoginController { @Autowired StringRedisTemplate redisTemplate

2020-07-30 08:40:56 37

原创 分布式session不共享不同步问题

session共享问题:session原理:存在的问题:1、不同服务,不能跨不同域名进行共享,2、同一个服务,复制多分,session不能同步的问题解决方案的原理:针对问题2:可以采用session复制(同步)方案优点:web-server原生支持,只需要修改配置文件缺点:1、session同步需要数据传输,占用大量网络带宽,降低了服务器群的业务处理能力2、任意一台web-server保存的数据都是所有web-server的session综合,受到内存限制无法

2020-07-29 23:00:22 123

原创 密码的加密存储和社交登录

MD5:是一种信息摘要算法压缩性:任意长度的数据算出的MD5值长度都是一样的容易计算:从原数据计算出MD5的值很容易抗修改性:对原数据进行任何改动哪怕是一个字节,所得到的MD5值都有很大区别强抗碰撞:想找到两个不同的数据有相同的MD5值是非常困难的不可逆:无法根据MD5值推算出原来的数据盐值加密:MD5升级版,加一个随机值,更安全@SpringBootTestclass GreymallMemberApplicationTests { @Test void

2020-07-28 15:47:21 42

原创 异步

一、线程回顾1、初始化线程的4种方式1. 继承ThreadThread01 thread = new Thread01();thread.start(); //启动线程```2. 实现Runnable接口Runnable01 runnable01 = new Runnable01();new Thread(runnable01).start();3. 实现Callable接口+FutureTaskFutureTask<Integer> futureTask

2020-07-28 11:31:29 24

原创 面包屑导航

一、网站面包屑导航有哪几种类型?1、路径型:路径型面包屑是一个动态显示用户到达页面经过的途径;2、位置型:位置型面包屑是固定的,显示了页面在网站结构中的位置;3、属性型:属性型面包屑给出的当前页面的分类信息。面包屑导航一般都在导航的下面,形式一般为 首页 > 一级目录名称 > 二级目录名称 > 目前位置,尽量要把面包屑导航的层次控制在四层以内,这样也有利与搜索引擎蜘蛛一层层往下爬,到了四层以下就很难爬到了。二、作用分别是什么?1、让用户了解目前所处位置,以及当前

2020-07-27 07:25:36 55

原创 SpringCache简单应用

一,整合1,引入依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>org.sp

2020-07-24 08:35:27 29

原创 分布式缓存一致性解决

双写模式:会产生脏数据,解决方案有两种:1,加锁,让一个线程执行完所有内容其他线程在执行2,如果业务允许暂时性的数据不一致问题,可以不用管失效模式:读写并发的脏数据:解决方法:1,加锁2,频繁修改,且实时性要求较高的数据不应放缓存,直接读数据库小总结:虽然二者都有脏数据问题,但是数据稳定,在缓存过期以后又可以得到最新的正确数据缓存一致性的最终解决方案;1,如果是用户维度的数据(订单,用户),这种并发几率较小,不用考虑这个问题,缓存加上过期时间,每隔一段时间触发

2020-07-24 07:10:31 52

原创 分布式锁-Redisson

一,整合Redisson1,导入依赖<!--以后使用redisson作为所有分布式锁,分布式对象等功能框架--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.0</version&g

2020-07-23 18:12:21 39

原创 缓存使用-本地缓存与分布式缓存

一,缓存的使用1,那些数据适合放入缓存?及时性,数据一致性要求不高的数据;访问量大且更新频率不高的数据(读多写少)2,本地缓存(Map): 存在的问题:1,分布式系统中还是存在需要多次查询数据库的问题 2,数据一致性问题,就是其中一台服务器的数据被修改,其他服务器缓存中的数据不变,查询到的数据就会不一 致 3,分布式缓存-缓存中间件(这里采用Red...

2020-07-23 07:09:54 144

原创 项目性能压测

1.性能指标:测试实例:JMeter Address Already in use 错误解决性能监控:首先考虑应用是属于CPU密集型还是IO密集型1.JVM内存模型两个检控工具2.中间件对性能的影响nginx:网关 ;中间件越多,性能损失越大,大都损失在网络交互上业务方面:数据库的响应速度(优化SQL,加索引),页面渲染(thymeleaf)的速度(开缓存),获取静态资源的速度(动静分离)优化:一,动静分离:1,所有

2020-07-20 16:30:15 45

原创 nginx+windows搭建域名访问环境

1.修改Windows的hosts文件,添加映射规则:2.nginx做反向代理,所有来自gulimall.com的请求都转到商品服务修改nginx配置:访问gulimall.com先访问到虚拟机的nginx,nginx监听80端口,然后将请求代理到本机10000端口由于是分布式服务,可能需要多次修改nginx配置,可以让nginx代理带网关,再有网关到注册中心发现有哪些服务然后分发请求nginx配置网关在网关配置域名映射:(一定要放在最后,否则就会把其他匹配规则截掉)

2020-07-20 08:50:07 58 1

原创 商品上架-sku在es中存储模型分析

1,为什么采用ES做全文检索?ES的全文检索功能比MySQL强大,且ES的数据都是存在内存中的,总体性能上强于MySQL2.数据在ES中的存储模型:ES数组的扁平化处理:扁平化处理会带来一些问题,可能会检索到原本没有的数据,为解决这个问题,可以使用嵌入式的属性...

2020-07-19 23:17:07 126

原创 通过JAVA操作ES

1.导入依赖;<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.8.0</version></dependency>2.编写配置,给容器中注入一个RestHighLeve

2020-07-15 17:28:29 46

原创 ​​​​Elastic search对数据的分析

聚合分析:复杂聚合:子聚合复杂查询进阶:最终结果:Mapping映射:首先创建索引指定映射规则:

2020-07-14 22:59:33 44

转载 浪潮之巅

近一百多年来,总有一些公司很幸运地、有意识或者无意识地站在技术革命的浪尖之上。一旦处在了那个位置,即使不做任何事,也可以随着波浪顺顺当当地向前漂个十年甚至更长的时间。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。从一百年前算起,AT&T 公司、IBM 公司、苹果公司 (Apple)、英特尔 (Intel) 公司、微软 (Microsoft) 公司、思科公司 (Cisco) 公司、雅虎 (Yahoo) 公司和谷歌 (Google) 公司都先后被幸运地推到了浪尖。虽然,它们来自不同的领域.

2020-07-14 06:58:36 438

原创 Elasticsearch对文档的查询操作

查询文档中个字段的含义:“-index”: 表示在那个索引(相当于数据库中位于那个库)“-type”: 表示是那个类型(相当于数据库中位于哪个表)“-id”: 记录的ID“-version”: 版本号“-seq_no”: 并发控制字段,每次更新就会加一,用来做乐观锁“-primary_term”: 同上。主分片重新分配,如重启就会变化“-found”: 表示是否找到数据查询文档中个字段的含义“-source”:真正查找的内容更新文档:POST更新会对比原来...

2020-07-14 00:07:04 62

原创 SpringMVC无法访问静态资源的解决办法

1.激活Tomcat的defaultServlet来处理静态文件在SpringMVC的配置文件里添加<mvc:default-servlet-handler/>在web.xml里配置不需要被拦截的内容: <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern

2020-07-13 22:33:41 90

原创 Docker 启动 Elasticsearch 7.4.2闪退问题的解决

问题:启动之后,在docker ps 命令下面找不到我们的启动的容器只有在docker ps -a才看的到我们启动的容器可能的原因:虚拟机内存不足。可通过-e ES_JAVA_OPTS限制占用内存大小具体配置:docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \-v /mydata/elas

2020-07-11 01:00:56 240

原创 Java面试(一)

1.面向对象的三大特征:多态,封装,继承2.什么是多态,JAVA语言是如何实现多态?所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时

2020-07-09 09:30:03 59

原创 最短超串-滑动窗口

class Solution { public int[] shortestSeq(int[] big, int[] small) { //左右双指针表示滑动窗口,start和min用来保存最优解 int left = 0,right = 0,start = 0; int min = Integer.MAX_VALUE; //window用来记录当前窗口包含的字符和出现的次数 //needs用来记录small当中出现的.

2020-07-01 12:51:23 62

原创 消息中间件Active MQ

消息中间件Active MQ:解决了耦合调用的问题;异步模型;抵御洪峰流量,达到保护主要业务的目的,削峰JMS编码总体架构类比JDBC消息两大模式:Topic:消息队列的详细比较:消息体;事务偏生产者,签收偏消费者开启事务容错能力大大加强,消息如果出错可以回滚Session.rollback();手动签收:...

2020-06-16 17:49:39 64

原创 Docker:容器虚拟化技术

理念:一次构建处处运行Docker是什么:解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术Docker与虚拟机虚拟机:带环境安装的一种解决方案,能够使应用程序,操作系统和硬件三者之间的逻辑不变 容器虚拟化技术:Linux容器,不是模拟一个完整的操作系统,只需要软件工作所需的库资源和设置Docker架构图:Docker的三大要素:镜像,容器,仓库镜像:容器 :仓库:小总结:Docker命令中Ru...

2020-06-16 17:21:31 76

原创 集合类不安全之并发修改异常:java.util.ConcurrentModificationException,高并发多线程访问下的常见异常

ArrayList线程不安全的原因是其中的add方法没有加锁故障现象:java.util.ConcurrentModificationException 导致原因:并发争抢修改导致,参考花名册签名情况,一个人正在写,另一个同学过来抢夺,导致数据不一致异常。并发修改异常。 解决方案: 用Vector Collections.synchronizedList(new ArrayList<>(); new CopyOnWriteArrayList<>(); ...

2020-06-16 17:05:05 39

原创 CAS及其引起的ABA问题

CAS是什么也就是比较并交换(compareAndSet)CAS全称为Compare-And-Swap,它是一条CPU并发原语。调用Unsafe类中的CAS方法,JVM发出CAS汇编指令,这是偏硬件的功能。而原语的执行必须是连续的,在执行过程中不允许被终端。也就说CAS是一条CPU的原子指令。CAS底层原理: AtomicInteger类下:private static final Unsafe unsafe=Unsafe.getUnsafe(); private static...

2020-06-16 17:00:14 68

原创 JAVA反射机制及其应用场景

JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能:(1)在运行时判断任意一个对象所属的类;(2)在运行时构造任意一个类的对象;(3)在运行时判断任意一个类所具有的成员变量和方法;(4)在运行时调用任意一个对象的方法;生成动态代理。实现Java反射机制的API在Java.la...

2020-06-16 16:51:14 142

转载 HashMap、HashTable和ConcurrentHashMap的区别?

HashMap和HashTable的区别一种比较简单的回答是:(1)HashMap是非线程安全的,HashTable是线程安全的。(2)HashMap的键和值都允许有null存在,而HashTable则都不行。(3)因为线程安全、哈希效率的问题,HashMap效率比HashTable的要高。但是如果继续追问:Java中的另一个线程安全的与HashMap功能极其类似的类是什么?同样是线程安全,它与HashTable在线程同步上有什么不同?带着这些问题,开始今天的文章。1.HashM..

2020-06-16 16:30:55 45

转载 Java基础总结

超详细总结:https://blog.csdn.net/Song_JiangTao/article/details/80642188

2020-06-02 10:11:33 53

原创 如何使用nacos作为配置中心统一管理配置

1.引入依赖* <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> 2.创建一个bootstrap.properties spring.application..

2020-05-22 14:36:35 196

原创 使用YML配置文件链接Docker上的mysql报错java.sql.SQLException: Access denied for user ‘’@‘192.168.0.106’

只需修改一下配置文件就好了原配置:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://192.168.0.103:3306/tensquare_base?characterEncoding=utf8data-username: rootdata-password: 123456修改后的配置datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc

2020-05-19 23:33:36 86

转载 Martin Fowler关于微服务的原文翻译

https://blog.csdn.net/u013970991/article/details/53333921

2020-05-05 09:58:33 74

原创 Spring boot缓存

Cache的自动配置类:缓存的原理及运行流程:将方法的运行结果进行缓存,以后再要相同的数据直接从缓存中获取,不用调用方法* CacheManager管理多个缓存组件的,对缓存的真正CRUD操作在cache组件中,每个组件都有自己唯一一个名字* 几个属性:* cacheNames/value:指定缓存的名字* key:缓存数据时使用的key,可以用它来指定,默认使用方法参数的...

2020-04-25 22:20:32 57

Spring AOP源码分析.mmap

有关于Spring,我们最常用的两个功能就是IOC和AOP,前几篇文章从源码级别介绍了Spring容器如何为我们生成bean及bean之间的依赖关系 下面我们接着来看AOP的源码实现。 有关于AOP,我们在面试中也被无数次问到,AOP是什么?AOP有什么作用与优势?AOP在项目中是如何用到的? 这些还都是比较简单的,有些可能会问你AOP的实现是怎样的? 哪怕没有看过源码的同学也应该知道,AOP是通过动态代理实现的,动态代理又分为两个部分:JDK动态代理和CGLIB动态代理 确实,Spring也就是通过这两种方式来实现AOP相关功能,下面就通过源码来简单求证下

2020-08-18

Git-2.26.1-64-bit.exe

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper。

2020-04-16

jdk1.8.0_191.rar

jdk-1.8的jar包,普遍使用较多的一个jdk版本,可以适配大部分版本的eclipse。 “JDK 是Java开发工具包 (Java Development Kit ) 的缩写。 它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。其中包括了Java编译器、JVM、大量的Java工具以及Java基础API里面是Java类库和Java的语言规范...

2020-04-10

ssm-crud.zip

项目功能点: • 1、分页 • 2、数据校验 • jquery前端校验+JSR303后端校验 • 3、ajax • 4、Rest风格的URI;使用HTTP协议请求方式的动词,来表示对资 源的操作(GET(查询),POST(新增),PUT(修改),DELETE (删除)) 所需技术: • 基础框架-ssm(SpringMVC+Spring+MyBatis) • 数据库-MySQL • 前端框架-bootstrap快速搭建简洁美观的界面 • 项目的依赖管理-Maven • 分页-pagehelper • 逆向工程-MyBatis Generator

2020-04-10

空空如也

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