日语学习指南
日语
日语电台
阿飞老师的课+叶子老师的课
综艺+脱口秀
背单词
沪江开心词场一天30个
刷题
刷真题
红宝书+蓝宝书
课外读物
初心日语联盟(天声人语)
公众号(日语阅读进阶
八股文骚套路之实习拷打
介绍一下你的实习我在实习期间做的工作主要是使用python整合现有的美术资源脚本,搭建可拓展的框架,实现美术资源的批量crud
美术资源的信息保存在一个个svn仓库中,每个svn仓库中有一个repository.resouce的索引文件,是xml格式的,里面的每一行为一个object,对应着仓库中的一个美术资源在这一行里面记录了仓库的基本信息,例如<虚拟地址><实际地址的映射><资源依赖>等一些信息,美术人员只能看到/只关注这个文件每一个美术资源对应着仓库某个文件夹下面的具体的配置文件,这个文件是xml格式的,可以通过基本信息通过一定的处理映射到,里面存储了这个美术资源的具体信息,比如这样的信息,本质上就是根据条件来对这个文件里的标签内文本进行crud
原先的脚本是零散的,有很多复用的逻辑,重复代码很多,给我安排的任务就是搭建一个基本框架出来,将现有的脚本整合进来,并且在新需求来的时候能够基于这个框架快速开发,实现需求
实习期间遇到的最大的困难是什么,你是怎么解决的问题主要是美术资源整合脚本的框架设计上,面对单个明确的需求,去编写单独一条脚 ...
八股文骚套路之Spring
谈谈对ioc的理解
将手动创建对象的控制权交由外部环境Spring框架处理
什么是Bean?
代指被IoC容器管理的对象
将一个类声明为Bean的注解有哪些?
@Component
@Repository
@Service
@Controller
@Component 和 @Bean 的区别是什么?
@Component 注解作用于类,而@Bean注解作用于方法
@Component通常是通过类路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用@ComponentScan 注解定义要扫描的路径,从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean告诉了 Spring 这是某个类的实例,当我需要用它的时候还给我。
@Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring容器时,则只能通过 @Bean来实现
@Autowired 和 @Resou ...
八股文骚套路之Java并发
线程什么是线程和进程进程:是程序一次执行的过程,是系统运行程序的基本单位。系统一个程序的运行就是一个程序从创建、运行到消亡的过程
线程:在Java中,启动一个main函数就是启动了一个JVM进程,而main函数所在的线程就是这个进程中的一个线程,也称为主线程
[!TIP]用户线程和内核线程的区别和特点主要体现在:1.创建线程和切换线程的成本 2.能否利用多核
线程和进程的区别
进程是独立的,但是线程之间则不一定,同意进程中的多个线程极有可能会相互影响(共享堆和方法区)。
进程开销大,线程开销小,但是线程不利于资源的管理和保护
程序计数器的作用,为什么要私有?
进行代码的流程控制
记录当前线程执行的位置
所以计数器的私有化主要是为了保证线程切换后能恢复到正确的执行位置
虚拟机栈和本地方法栈为什么是私有的?为了保证线程中的局部变量不被别的线程访问到
如何创建线程严格来说 Java中只有 new Thread.().start能创建线程
线程的生命周期
new 创建了还没start
runnable 运行 被start等待运行的状态
blocked 阻塞 等待释放
waiting 等 ...
八股文骚套路之python基础
讲讲python中的装饰器
Python中的装饰器,本质上就是一个高阶函数,就是函数的函数,一个返回值是函数的函数(类似二阶导)
在函数中再嵌套一个函数,并且引用外部函数的变量,也就是一个闭包
不用更改原函数的代码前提下给函数增加新的功能。它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,相当于一个语法糖。使用时,再需要的函数前加上@demo即可。
sleep和wait有什么区别?
两者都可以使当前线程进入阻塞状态
两者所属的类不同,sleep()是Thread类中的方法,wait()是Object类中的方法
两者的使用范围不一样,sleep()可以使用在任何有需要的场景下,而wait()方法只能使用在同步代码块和同步方法中
是否释放锁:sleep()方法不会释放锁,而wait()方法会释放锁
用法不同:使用sleep()方法,睡眠时间到了以后线程会自动苏醒;而使用wait()方法必须通过调用对象的notify()或notifyAll()方法唤醒
作用不同:sleep()方法是用来暂停线程的,而wait()方法是用来进行线程间交互的
python中有关的自动化测试的?
U ...
八股文骚套路之python3算法常用方法总结
遍历
enumerate() 函数用于同时获取字符的索引 j 和字符值 c。
set(nums) 可以将数组直接转化为集合,做到去重获取其中所有元素
交换数组中的两个元素,不需要像java那样使用temp,直接写在一行中交换即可
123nums[cur], nums[index] = nums[index], nums[cur]
map() 是一个内置函数,用于将函数应用于可迭代对象(如列表、元组等)的每个元素,并返回一个迭代器。它的基本语法如下:
map(function, iterable)
例如:
123# 注意 因为返回的是一个迭代器,因此注意使用的时候要进行类型转换nums_ = list(map(int, nums))
八股文骚套路之项目拷打
介绍一下项目
功能:这是一个集校园美食、美景分享、店铺搜索、店家优惠券秒杀等功能于一体的生活分享平台。
项目框架:由springboot开发的前后端分类项目,使用了redis集群、tomcat集群、mysql集群来提高服务器的性能
项目的技术栈: springboot+nginx+mysql+lombok+mybatis+hutool+redis
集成第三方登录
短信登录功能初次登录注册之后,校验用户登陆的手机号和验证码,然后根据手机号查询用户信息,不存在则创建,然后将用户信息保存到redis,以生成的token作为redis的key
为什么用redis?因为使用了负载均衡有许多服务器,而不同的服务器之间session无法共享,所以用redis代替session
校验登录状态用户携带token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。
[!TIP]因为不同服务器之间的session无法共享,使用redis可以实现数据共享将部分可展示属性封装成dto单独传递是为了实现数 ...
八股文骚套路之设计模式
jdk中常见的设计模式
单例
工厂模式(简单工厂、抽象工厂)
装饰器模式
你是否在你的代码里使用过设计模式?
面向对象编程中,使用工厂模式来创建对象
Java中什么叫单例设计模式?请写出Java中线程安全的单例模式
一个类只有一个实例,主要有懒汉式和饿汉式两种创建方式,懒汉式仅初始化类,但是仅在调用getInstance方法时才创建对象;饿汉式则在初始化类的时候一并创建对象
懒汉式,线程不安全
123456789101112public class Singleton{ private static Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(instance == null){ instance = new Singleton(); } return instance; }}
懒汉式,线程安全(使用synchronized来保证线程安全) ...
八股文骚套路之Redis
缓存雪崩的解决方案缓存在同一时间大面积的失效,导致大量的请求都直接落到了数据库上,对数据库造成了巨大的压力
缓存服务宕机也会导致缓存雪崩现象
解决方法针对redis服务不可用的情况
Redis 集群:采用 Redis 集群,避免单机出现问题整个缓存服务都没办法使用
多级缓存
针对大量缓存同时失效的情况
设置随机失效时间:避免大量缓存同时到期
提前预热:针对热点数据提前预热,将其存入缓存中并设置合理的过期时间 (比如秒杀场景下的数据在秒杀结束之前不过期(逻辑过期))。
缓存预热的常见实现方式:定时任务和消息队列,Kafka可以异步的进行缓存预热
如何保证缓存和数据库中数据的一致性
让缓存失效的时间变短,这样缓存就会很快从数据库从加载数据。(不推荐)
增加缓存更新重试机制:针对缓存不可用导致的缓存删除失败,可以引入消息队列实现异步重试,将删除缓存重试的消息投递到消息队列,然后由专门的消费者来重试,直到成功。
缓存击穿(热点key问题)请求的 key 对应的是热点数据 ,该数据存在于数据库中,但不存在于缓存中,瞬时大量的请求直接打到了数据库上
举个例子:秒杀进行过程中,缓存中的某个 ...