1 Alt__

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 12w+

多线程面试总结一

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

2020-10-13 15:42:29

Java面试题2

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

2020-09-20 12:48:44

八大排序算法总结

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

2020-09-04 10:07:26

数组和链表的区别

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

2020-08-11 18:01:47

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

整合支付引入支付宝配置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

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

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

2020-08-06 18:04:45

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

订单中心主要包括物流信息,用户信息,支付信息,订单信息,促销信息,商品信息订单服务-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

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

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

2020-08-04 09:32:43

购物车

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

2020-08-03 11:48:16

单点登录

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

2020-07-30 08:40:56

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

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

2020-07-29 23:00:22

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

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

2020-07-28 15:47:21

异步

一、线程回顾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

面包屑导航

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

2020-07-27 07:25:36

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

分布式缓存一致性解决

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

2020-07-24 07:10:31

分布式锁-Redisson

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

2020-07-23 18:12:21

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

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

2020-07-23 07:09:54

项目性能压测

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

2020-07-20 16:30:15

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

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取