2020版CORE怎么在另一页显示图片?

29.事务的7种传播行为

使用场景:当事务方法A调用事务方法B时,会将A的事务传播给B,B对于事务的处理方式就是事务的传播行为。因此,必须在被调用者B方法中指定事务的传播行为

(1)required   如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择(默认事务)
(2)supports   支持当前事务,如果当前没有事务,就以非事务方式执行。

31.(1)数组在创建时需要指定数组大小,ArrayList不需要
ArrayList具有动态扩容的机制,每次在添加元素时,都会判断容量是否够用,如果不够用,则需要扩容。
JDK1.8中,ArrayList的初始容量为0,第一次添加元素时,会将容量设置为10,如果容量不够,则每次会扩大50%

1.抽象类中可以有普通成员变量,接口中没有普通成员变量

2.抽象类可以有构造方法,接口中不能有构造方法

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4.抽象类中可以包含静态方法,接口中不能包含静态方法

6.一个类可以实现多个接口,但只能继承一个抽象类

7.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只是public static final 类型,并且默认即为 public static final 类型。

33.(1)字符串String    应用场景:统计网站访问数量,当前在线人数等

4、电商网站信息  大型电商平台初始化页面数据的缓存。比如去哪儿网购买机票的时候首页的价格和你点进去的价格会有差异。

5、热点数据   比如新闻网站实时热点、微博热搜等,需要频繁更新。总数据量比较大的时候直接从数据库查询会影响性能

35.Redis是单线程模型,指的是执行Redis命令的核心模块是单线程的,而不是整个Redis实例就一个线程,Redis其他模块还有各自的线程的

37. spring的事务是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序。最大的好处是大大减少了代码量

原子性(Atomicity):事务中的所有数据库操作要么都执行成功,要么都执行失败。

一致性(Consistency):事务执行前后,数据都是正确的。数据库状态与业务规则保持一致。

隔离性(Isolation):多个事务并发执行时,事务间互不干扰。

持久性(Durability):已提交的事务对数据库数据的修改,应永久保存在数据库。

(1)编程式     使用原生JDBC API进行事务管理,在核心业务代码中嵌入事务管理代码,容易造成代码冗余,增加代码间的耦合度。

(2)声明式     把事务管理代码从业务代码中分离,借助spring aop,在不同的事务管理api中抽象出一套事务管理机制,实现声明式事务管理。

3.怎么进行事务控制?

数据库系统必须具备隔离并发运行各个事务的能力,事务间的隔离程度就称为隔离级别。级别越高,数据一致性越好,但并发性越弱。

3.隔离级别解决并发问题能力表

4.数据库产品对隔离级别支持程度

即一个操作(有可能包含有多个子操作)要么全部执行(生效),要么全部都不执行(都不生效)

使用场景:银行转账问题,比如A和B同时向C转账10万元。如果转账操作不具有原子性,A在向C转账时,读取了C的余额为20万,然后加上转账的10万,计算出此时应该有30万,但还未来及将30万写回C的账户,此时B的转账请求过来了,B发现C的余额为20万,然后将其加10万并写回。然后A的转账操作继续——将30万写回C的余额。这种情况下C的最终余额为30万,而非预期的40万。

指当多个线程并发访问共享变量时,一个线程对共享变量的修改,其它线程能够立即看到

CPU从主内存中读数据的效率相对来说不高,现在主流的计算机中,都有几级缓存。每个线程读取共享变量时,都会将该变量加载进其对应CPU的高速缓存里,修改该变量后,CPU会立即更新该缓存,但并不一定会立即将其写回主内存(实际上写回主内存的时间不可预期)。此时其它线程(尤其是不在同一个CPU上执行的线程)访问该变量时,从主内存中读到的就是旧的数据,而非第一个线程更新后的数据。

指程序执行的顺序按照代码的先后顺序执行

常用的保证Java操作原子性的工具是锁和同步方法(或者同步代码块)。

使用锁,可以保证同一时间只有一个线程能拿到锁,也就保证了同一时间只有一个线程能执行申请锁和释放锁之间的代码。

与锁类似的是同步方法或者同步代码块。使用非静态同步方法时,锁住的是当前实例;使用静态同步方法时,锁住的是该类的Class对象;使用静态代码块时,锁住的是synchronized关键字后面括号内的对象。

Java提供了volatile关键字来保证可见性。当使用volatile修饰某个变量时,它会保证对该变量的修改会立即被更新到内存中,并且将其它缓存中对该变量的缓存设置成无效,因此其它线程需要读取该值时必须从主内存中读取,从而得到最新的值。

Java中可通过volatile在一定程序上保证顺序性,另外还可以通过synchronized和锁来保证顺序性。

synchronized和锁保证顺序性的原理和保证原子性一样,都是通过保证同一时间只会有一个线程执行目标代码段来实现的。

线程是非独立的,同一个进程里线程是数据共享,当各个线程访问数据资源时会出现竞争的状态即:数据几乎同步会被多个进程占用, 造成数据混乱 ,即所谓的线程不安全
那么怎么解决多线程竞争问题 – 锁

确保了某段代码(共享数据资源)只能由一个线程从头到尾完整地执行能解决多线程支援竞争下的原子操作问题
阻止了多线程并发执行,包含锁的某段代码实际上只能以单线程模式执行,线程就大大地下降了

锁 是python 提供的对线程控制的对象。有互斥锁,可重入锁,死锁。

可缓存线程池newCachedThreadPool(),其中创建的都是非核心线程,创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

单线程newSingleThreadExecutor(),创建一个单线程化的Executor,即只创建唯一的工作者线程来执行任务,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。如果这个线程异常结束,会有另一个取代它,保证顺序执行。单工作线程最大的特点是可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。

固定线程池newFixedThreadPool(),创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中。

定时线程池newScheduleThreadPool,创建一个定长的线程池,而且支持定时的以及周期性的任务执行,支持定时及周期性任务执行。

start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,

  当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动;

  start()方法才会启动新的线程

1)线程池有哪些重要的参数?

a.数据库的数据分析(待分析的数据太多),数据迁移

c.FTP下载,多线程操作文件

4)死锁:多个线程互相占用对方资源的锁,又相互等待对方释放锁,若无外力干涉,这些线程则一直处于阻塞你的假死状态,形成死锁
活锁:指拿到资源却又相互释放不执行,这个资源在多个线程之间跳动又得不到执行
饥饿:指优先级高的线程一直占着优先级低的资源,导致优先级低的线程无法得到执行,处于长久等待中


41.索引就是数据库目录,比如:字典上面的字母目录 (适用于大数据量)

缺点:增删改慢,因为数据库要同步去维护索引文件,所以速度慢

42.普通索引、唯一索引、主键索引、组合索引

43.在一个或一些字段需要频繁用作查询条件,并且表数据较多的时候

44.通过explain查询sql执行计划,主要是看key使用的是哪个索引

46.(1)List 以索引来存取元素,有序的,元素是允许重复的,可以插入多个null

47.(1)组合索引,不是使用第一列索引,索引就会失效

     (3)or语句前后没有同时使用索引。当or左右查询字段只有一个是索引,该索引失效;当or左右查询字段均为索引时,才会生效

     (4)数据类型出现隐式转化。如varchar不加单引号会自动转化为int型,使索引无效,产生全表查询

48.(1)查询语句中不要使用*

     (4)对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页再JOIN,否则逻辑读会很高,性能很差

     (5)合理的增加冗余的字段(减少表的关联查询)

     (6)增加中间表进行优化(这个主要是在统计报表的场景,后台开定时任务将数据先统计好,尽量不要在查询的时候去统计)

     (7)建表的时候能使用数字类型的字段就使用数字类型(type,status…),数字类型的字段作为条件查询比字符串快。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了

     (8)那些可以过滤掉最大数量记录的条件必须写在where字句的最末尾

     (9)索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要

     (10)尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些

      (11)对查询进行优化,应尽量避免全表扫描,首先应考虑在where以及order by涉及的列上建立索引

   rdb持久化:Redis为我们提供了一个rdb的持久化方式具体每隔一定时间,或者当key的改变达到一定的数量的时候,就会自动往磁盘保存一次

aof持久化:Redis还为我们提供了一个aof的持久化方式,这种方式是通过记录用户的操作过程(用户每执行一次命令,就会被Redis记录在XXX.aof文件里,如果突然断电了,Redis的数据就会通过重新读取并执行XXX.aof里的命令记录来恢复数据)来恢复数据

    由于Redis是一个基于内存的数据库,因此数据容易丢失,为了解决数据丢失的问题,于是Redis就设计了持久化

50.JVM内存结构包括PC寄存器、Java虚拟栈、本地方法栈、Java堆、方法区

    PC寄存器:当前线程所执行的字节码的行号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有

   Java虚拟栈:存放基本数据类型、对象的引用、方法出口等,线程私有

   本地方法栈:和虚拟栈相似,只不过它服务于Native方法,线程私有

  Java堆:java内存最大的一块,所有对象实例、数组都存放在java堆,GC回收的地方,线程共享

  方法区:存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据等。(即永久带),回收目标主要是常量池的回收和类型的卸载,各线程共享

AOP : 面向切面编程,通过切面可以轻松实现拦截请求,初始化参数,销毁对象等操作

53.(1)为什么会有线程安全问题?

     当多个线程同时共享同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读的操作不会发生线程安全问题。

  (2)如何解决多线程之间线程安全问题?

     使用多线程之间同步synchronized或使用锁(lock),将可能会发生数据冲突问题(线程不安全问题),只能让当前一个线程进行执行。代码执行完成后释放锁,然后才能让其他线程进行执行。这样的话,就可以解决线程不安全问题

第一种,解决setter对象的依赖,就是说在A类需要设置B类,B类需要设置C类,C类需要设置A类,这时就出现一个死循环,

spring的解决方案是,初始化A类时把A类的初始化Bean放到缓存中,然后set B类,再把B类的初始化Bean放到缓存中,

然后set  C类,初始化C类需要A类和B类的Bean,这时不需要初始化,只需要从缓存中取出即可.

第二种,解决构造器中对其它类的依赖,创建A类需要构造器中初始化B类,创建B类需要构造器中初始化C类,创建C类需要构造器中又要初始化A类,因而形成一个死循环,Spring的解决方案是,把创建中的Bean放入到一个“当前创建Bean池”中,在初始化类的过程中,如果发现Bean类已存在,就抛出一个“BeanCurrentInCreationException”的异常

55.在Spring使用中,本地接口和实现都是在一个jvm实例中来启动并且进行bean注入的。dubbo就是透明化地把接口和实现分别部署到不同的jvm上。但是对于客户端来说,dubbo底层使用动态代理来给接口注入代理bean,然后客户端在调用过程中就像调用本地实现一样来使用。这个过程,其实dubbo通过代理进行了远程通信来跟另外一个jvm上面的实现来进行方法调用。

57.(1)Git是分布式的,而SVN不是分布式的

     (4)Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏

58.缓存处理流程:接收到查询数据请求时,优先从缓存中查询,若缓存中有数据,则直接返回,若缓存中查不到则从DB中查询,将查询的结果更新到缓存中,并返回查询结果,若DB中查不到,则返回空数据

    解决方案:1)通过synchronized+双重检查机制:某个key只让一个线程查询,阻塞其它线

穿透:当缓存跟数据库都不存在该条数据时,由于数据库查询不到数据就不会写入到缓存中,如果用户不断恶意发起请求,就会导致每次请求查询数据库,请求量大的时候,数据库压力过大而挂掉

解决方案:1)当查询返回一个空数据时,直接将这个空数据存到缓存中,过期时间不宜设置过长,建议不超过5分钟

                  2)采用布隆过滤器:将所有可能存在数据,分别通过多个哈希函数生成多个哈希值,然后将这些哈希值存到一个足够大的bitmap中,此时一个一定不存在的数据就会被这个bitmap拦截,从而减少了数据库的查询压力

雪崩:在高并发条件下,多个key查询,缓存中失效或查不到,就会去数据库查询,导致数据库压力过大而崩溃

解决方案:1)设置热点数据永不过期

* redis实现分布式事务锁 尝试获取锁

     5)get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留

60.1)请求转发是1次请求;重定向是2次请求;

     5)请求转发的路径是内部路径;重定向的路径是绝对路径

    6)若访问站外资源,需要使用重定向

61.默认引擎是innodb,最大的优点就是支持事务

1、利用注解AOP解决后台管理系统用户操作日志记录;
接口请求响应参数打印、参数校验、统一异常处理

项目配置:常量池的String对象、缓存、数据库连接池、线程池

利用Mybatis的Interceptor接口,来实现读写分离的时候,将某个语句对应某个库缓存到ConcurrentHashMap中,如果存在则直接取,不存在则保存

coreldraw graphics suite 2020是一款非常专业且强大的矢量绘图软件,可为用户提供矢量动画、页面设计、网站制作、位图编辑和网页动画等多种功能,coreldraw graphics suite 2020可用于矢量图及页面设计和图像编辑,并可用于创作出多种富裕动感的特殊效果及点阵图像即时效果

使用此款全能型图形设计程序,通过全新高标准功能实现无可比拟的超高生产效率。有了行业标准的 PDF/X-4 支持,以及改进后的内容浏览体验,您将享受到无比顺畅的工作流程。再加上全新的 work 4.6

DVD驱动器(需要安装盒子)

为网页制作原始插图,标识和标志。使用一系列专业文档样式、页面布局和矢量工具创建自己的样式。此外,当添加效果到矢量和位图对象时,体验无损编辑。个性化用户界面、工具、模板等,使其成为您自己的。这个强大的应用程序系列包括直观的工具、学习材料和示例项目,以确保您可以轻松开始并尽可能快地取得成功。通过选择几个高质量的模板之一,您可以快速创建小册子、海报、卡片、社交媒体图像等,而不是从头开始。

创意无限:CorelDRAW 2020 重在创新,通过智能工具解放您的创意
专业品质:可以找到在几乎任何设备上创建和完成设计项目所需工具
高效工作:使用专业工具管理您的创作流程,大大提高生产效率

微软已经敲定了Windows 10 May 2020功能更新的开发进度,并向Release Preview通道用户提供了RTM版本。目前尚不清楚该功能更新何时正式发布,不过有消息称会在本月最后一周开始推出。

在这次Windows 10 5月2020更新版的更新Build中,有四个主要方面的改进

首先最重要的是,微软表示终于修复了Windows Mixed Reality中的性能问题,这个问题已经困扰了很多年。

微软在存储设置中添加了用户清理推荐(Cleanup Recommendations)功能。通过这项新功能和更新后的用户界面,微软表示,它可以帮助你找出大文件,让你快速释放空间,存储更重要的文件。

不过微软警告称,这项功能并非基于人工智能,因此它只是将所有的内容收集到“建议”下,具体还需用户根据需求进行调整。通过清理推荐功能,你可以删除个人文件,卸载不使用的应用,删除本地同步到云端的文件副本,还可以找出 "最近的文件"。

在20H2的更新中,Windows会将所有的大文件集中在一个页面中,让你只需点击几下就可以删除。如果你在安装更新时释放空间,删除已经存储在云端的文件,或者卸载不使用的应用,就可以提高Windows的性能,减少出现问题的几率。

● 摩洛哥王国的夏令时日期为2020年

这是一个只限于摩洛哥的问题,但它仍然是一个值得欢迎的改进。

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

新浪科技为你带来最新鲜的科技资讯

苹果汇为你带来最新鲜的苹果产品新闻

新酷产品第一时间免费试玩

提供最新的科学家新闻,精彩的震撼图片

我要回帖

更多关于 2020年来到的图片 的文章

 

随机推荐