- 博客(27)
- 收藏
- 关注
原创 【034期】美团面试题:JVM 堆内存溢出后,其他线程是否可继续工作?
上图是JVM堆空间的变化。这代表这一点,当一个线程抛出OOM异常后,它所占据的内存资源会全部被释放掉,从而不会影响其他线程的运行!总结:其实发生OOM的线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用的heap都会被gc了,释放内存。因为发生OOM之前要进行gc,就算其他线程能够正常工作,也会因为频繁gc产生较大的影响。讲到这里大家应该懂了,此题的答案为一个线程溢出后,进程里的其他线程还能照常运行。注意了,这个例子我只演示了堆溢出的情况。如果是栈溢出,结论也是一样的,大家可自行通过代码测试。
2025-01-13 22:35:47
538
原创 「刷起来」Go必看的进阶面试题详解_golang 进阶面试题
这两个defer语句的执行顺序是先进后出的,也就是说后定义的defer语句先执行,先定义的defer语句后执行。在实际的程序中,大量的逃逸会导致内存分配和垃圾回收的开销增加,从而影响程序的性能。逃逸分析是Go语言的一项优化技术,可以在编译期间分析代码,确定变量的生命周期和分配位置,从而避免不必要的内存分配和垃圾回收。在上面的代码中,我们使用make函数创建了一个map,然后向其中添加了两个键值对,分别是1:“a"和2:“b”。需要提醒的是,**map是一种引用类型的数据结构,它的底层实现是一个哈希表。
2025-01-13 22:32:06
1016
原创 SQL 优化极简法则,还有谁不会?
执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。关于各种主流数据库中执行计划的查看和解释,可以参考:https://tonydong.blog.youkuaiyun.com/article/details/103579177 https://blog.youkuaiyun.com/horses/article/details/106905110。否则,可以引用 FROM 和 JOIN 表中的任何字段。
2025-01-12 22:43:47
927
原创 Spring(十八):AOP——寻找匹配的增强器
continue;//判断普通增强是否适用//适用的话也添加进结果集中//返回结果集从这里看到,原来增强器引介增强器、普通增强器之分拓展:什么是引介增强器,对应我们常用的一些增强器的注解@Before、@After、@Around、@AfterThrowing、@AfterReturing,这些增强的对象都是针对方法级别的,当然我们可以将类的所有方法都被增强到,这也能达到类级别(这也是我们一般的方法,在方法规则式拦截里使用通配符来拦截所有的方法,但这也是一种不太完整的类级别),而。
2025-01-12 22:40:05
1002
原创 Spring(十一):bean的加载——检测循环依赖
name:指定的beanNamerequiredType:指定的beanTypeargs:实例化bean时使用的参数typeCheckOnly:实例化bean是否开启类型检查//将name转化为beanName,因为进来的name可能是别名//beanName就会从aliasMap中获取,aliasMap就是存放别名的容器//这一步是避免循环依赖的问题//假设A中有B的属性,而B中有A的属性//当依赖注入时,就会产生A还没创建完,就会因为去注入B,导致去创建B。
2025-01-12 22:36:24
914
原创 SpringCloud Alibaba学习笔记 ——(四、Nacos 集群部署实现)
四、Nacos 集群部署实现原理Nacos 核心帮助我们做的事情注册中心分布式配置中心注册中心:没有必要将数据持久化到数据库中,可以持久化到本地硬盘。(需要在 注册中心的 server-addr 指定 nacos 的服务,可以指定多个)分布式配置中心:默认是将数据持久化到本地嵌入式数据库,改为 mysql 数据库本地搭建伪集群,开启三个不同端口的 nacos 服务,然后在 cluster.conf 中加入三个 nacos 服务的路径 + 端口Nacos 在不同版本下运行集群是不一样的。
2025-01-12 20:34:42
617
原创 SpringCloud Alibaba学习笔记 ——(七、负载均衡专题)
什么是本地负载均衡器:我们的消费者从我们的注册中心上获取接口调用地址列表。本地实现负载均衡算法(轮询,随机、hash一致性、权重)等原理:获取接口地址列表,采用算法获取选择一个接口地址实现本地 rpc 远程调用本地负载均衡器:自己写ribbon (SpringCloud 第一代 Netifix旗下)loadbalancer(SpringCloud 自己研发)ribbon?SpringCloud Rest 或者 Openfeign 都是默认支持 ribbon。
2025-01-12 20:31:01
911
原创 springboot高级功能(八)访问成功或异常(excetion)返回指定的错误编码和信息
return Result.error(“接口异常,错误信息为” + e.getMessage());SC_INTERNAL_SERVER_ERROR_500(500, “接口异常”);SC_NO_JURISDICTION(401, “没有权限,请联系管理员授权”),3.定义一个ExceptionHandle 在异常时会进行逻辑处理。SC_SUCCESS(200, “成功”),如果不进行处理 直接输出200和成功码。exception异常处理。2.定义一个返回实体类。
2025-01-12 20:27:21
801
原创 JavaWeb:Filter和Listener
OverrideSystem.out.println(“filterDemo1被执行了…”);//放行@Overridedemo1demo1拦截路径/*① 执行过滤器② 执行放行后的资源③ 回来执行过滤器放行代码下边的代码//对request对象请求消息增强System.out.println(“filterDemo2执行了…”);//放行//对response对象的响应消息增强System.out.println(“filterDemo2回来了…”);①init。
2025-01-11 13:18:03
766
原创 JavaWeb学习笔记一 --- Tomcat服务器部署Eclipse项目
就是使用Java和web网站进行交互,Java负责处理数据,web页面负责显示数据。右击项目名 —> Run as --> Run on Server。关闭后再次访问,无法访问,表示关闭服务器成功。出现以上页面表示Tomcat服务器启动成功。Eclipse下部署Tomcat服务器。完成之后出现以下信息则部署服务器成功。在项目下新建一个文件在浏览器访问。Tomcat启动与关闭服务器。JavaWeb项目创建成功。将web工程部署至服务器。配置Tomcat服务器。启动Tomcat服务器。关闭Tomcat服务器。
2025-01-11 13:14:22
308
原创 JavaWeb~创建一个maven项目使用HttpServlet在Tomcat服务器上实现一个动态页面
使用IDEA创建一个maven项目main文件配置pom.xml文件配置3.1.0providedmysql5.1.4920200712warlisten3.1.03.0.23.8.02.22.13.2.22.5.22.8.2写实现代码在main文件里创建java文件继承HttpServlet按请求报文方法重写doXX方法(不如请求是get方法 就重写doGet方法)@Override//获取请求中的数据//将结果写回到响应报文中。
2025-01-11 13:10:41
817
原创 118道 Android 经典基础面试题整理,你能否全部答上?
面试官面什么,完全是看他们个人的(性格,心情,天气,你的面相)。以上只是一些我觉得重要的点,当然还有很多深层的东西不是一时半日可以补上来的,还是要看自己平时的经验积累。PS:如果面试官说,还有什么想问的,千万不要给自己挖坑,说今天自己表现怎样,能不能被录取。89、Fragment 在 ViewPager 里面的生命周期,滑动 ViewPager 的页面时Fragment 的生命周期的变化。32、ViewPager使用细节,如何设置成每次只初始化当前的Fragment,其他的不。以及它们的原理和区别?
2025-01-09 21:32:19
428
原创 10行Python代码写1个USB病毒!把室友的小电影都黑掉
如果目标U盘中有很多电影,音乐,这些我们并不需要的文件,我们的程序就应该能跳过它们,仅仅选择一些重要的比如.docx比如.ppt文件,或者仅仅复制最近修改过的那些文件,或者排除所有大小大于5M的文件。首先我们打开电脑终端,进入/Volumes目录,这时候插入U盘,可以发现它被挂载在了这个目录之下,也就是说,我们只要在固定时间扫描这个目录,当这个目录有新文件夹出现的时候,很可能有U盘被插入了。好了,我们现在需要递归usb文件夹,找到所有的file,查看大小,如果小于,比如3M,就拷贝进home,大于就舍去。
2025-01-09 21:28:38
268
原创 10个省时间的 PyCharm 技巧
如果你不记得全名了,只需要输入首字母,Pycharm 就会提示你。在需要选择某个函数的时候,只需要把光标放在最前面,然后点击 Command + Option + Shift + [ ,就可以选择对当前代码块, 使用 Command + /注释。在写前端页面的时候,经常要更改一大段代码的缩进,这时候可以先用 Shift + 上下键 来选择你要缩进的代码块,然后使用 Tab 就能缩进啦。调用库时,你可以在你好奇的几乎任何地方点击 Command+B,就可以很方便的跳转到源码里的类,方法,函数,变量的定义。
2025-01-09 21:24:56
404
原创 2019最新Android中级面试题目汇总解答
首先要了解Java四种引用类型的场景和使用(强引用、软引用、弱引用、虛引用)举个场景例子:SoftReference对象是用来保存软引用的,但它同时也是一个Java对象,所以当软引用对象被回收之后,虽然这个SoftReference对象的get方法返回null,但SoftReference对象本身并不是null,而此时这个SoftReference对象已经不再具有存在的价值,需要一个适当的清除机制,避免大量SoftReference对象带来的内存泄露。
2025-01-09 14:24:37
771
原创 15分钟,教你用Python爬网站数据,并用BI可视化分析!_招聘网站信息抓取可视化分析
一番惆怅之后,别再问路在何方了,于是抄起自己的“家伙”,花了一小会时间爬了智联招聘上BI岗位的数据信息,做了个分析。PS:所用工具为Python+BI数据分析的过程如同烧一顿饭,先要数据采集(买菜),然后数据建模(配菜)、数据清洗(洗菜)、数据分析(做菜)、数据可视化(摆盘上菜)。所以第一步,要采集/选择数据。选择智联招聘,通过Python来进行“BI工程师”的关键数据信息的爬取,这里大家也可以试着爬取自己岗位的关键词,如“数据分析师”、“java开发工程师 ”等。
2025-01-09 14:09:44
1274
原创 Android热修复原理热修复框架对比和代码修复
这说明应用中引用的方法数超过了最大数65536个。产生这一问题的原因就是系统的65536限制,65536限制的主要原因是DVM Bytecode的限制,DVM指令集的方法调用指令invoke-kind索引为16bits,最多能引用 65535个方法。在安装时可能会提示INSTALL_FAILED_DEXOPT。产生的原因就是LinearAlloc限制,DVM中的LinearAlloc是一个固定的缓存区,当方法数过多超出了缓存区的大小时会报错。
2024-12-17 02:38:02
866
原创 Android案例:图标名称设置+用户登录界面+宝宝装备与技能选择
扩展:第一个参数:一个Intent对象,用于携带将跳转至下一个界面中使用的数据,使用putExtra(A,B)方法,此处存储的数据类型特别多,基本类型全部支持。第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回,用来标识目标activity。与下面的resultCode功能一致,感觉Android就是为了保证数据的严格一致性特地设置了两把锁,来保证数据的发送,目的地的严格一致性。
2024-12-17 02:34:21
823
原创 Android快速获取当前Activity类名的三种方法
在程序猿的世界里,大部分都是接手的别人的项目,而对于一些项目文档全面,项目代码规范,在阅读代码的时候相对轻松些,不至于当前是哪个Activity都不知道。所以我建议下面的这个方法,优点是简单,是单独的一个app,点击开启打印activity的类名信息的服务,不想要是,点击stop service即可。这个主要是利用的adb命令去打印当前的Activity的信息,包括栈名,栈内Activity的信息,类名,所在线程名等信息。但是输入之后,信息还是太多,我只关心的是Activity名!主要用到的是下面的方法。
2024-12-17 02:23:26
741
原创 Android开发规范:APP打包规范
app -> Tasks -> andresguard -> resguardProductDebug表示在AndResGuard模式下只打包product环境下的debug包;100-199表示正式服APP提测包;如果开启混淆, 可以直接启用Gradle->:app->Tasks->andresguard下的打包脚本, 此脚本同步增加AndResGuard功能;:app -> Tasks -> build -> assembleDebug表示同时打包所有环境(product和uat)的debug包;
2024-12-17 02:19:33
323
原创 Android开发者福音-史上最快模拟器genymotion
Genymotion是一套完整的工具,它提供了Android虚拟环境。它简直就是开发者、测试人员、推销者甚至是游戏玩家的福音。Genymotion支持Windows、Linux和Mac OS等操作系统,容易安装和使用:按简单的安装过程,选择一款Android虚拟设备,开启后就体验Genymotion带来的快感吧。
2024-12-17 02:15:52
863
原创 Android开发者如何高效上手Flutter开发?
走进和认识它掌握它的语言掌握它的Widget熟悉它的状态机制调试技巧深入原理合理利用工具认识FlutterFlutter 是由;叫它UI开发工具包主要是因为它的事情,对于本台本身的一些功能:比如调用蓝牙、摄像头,一般还是需要原生代码去操作。但现在也会有一些。
2024-12-17 02:12:11
323
原创 Android开发经验的有效总结,复习指南_学习android程序设计获得的知识与经验总结
近期这里搜集了近 100 套阿里、腾讯、美团、网易等公司2019 年的面试题,把技术点梳理成一份大而全的“Android 架构师”面试题(实际上比预期多花了不少精力),包含知识脉络 + 分支细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
2024-12-17 02:08:31
352
原创 Android开发环境搭建
下载完成之后,直接双击安装即可,默认安装在C:\Program Files\Java\jdk1.8.0_151\目录下,可以自己修改安装路径,这里我修改为D:\jdk1.8.0_151.之后再选择我们的应用支持的最低手机系统,可以看到google最低支持到Android 4.0,那么4.0以下的手机是使用不了我们的应用的,但是现在基本上也不会有4.0以下的手机了。选择开发语言,Android Studio 3.2以上的默认选择kotlin语言,我们根据自己需要选择java或kotlin进行开发。
2024-12-17 02:04:50
1079
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人