- 博客(38)
- 收藏
- 关注
原创 你真的懂Redis的5种基本数据结构吗?这些知识点或许你还需要看看(图文并茂,浅显易懂,建议收藏)
1.1 list(列表)的内部结构Redis的列表相当于Java语言中的LinkedList,它是一个双向链表数据结构(但是这个结构设计比较巧妙,后面会介绍),支持前后顺序遍历。链表结构插入和删除操作快,时间复杂度O(1),查询慢,时间复杂度O(n)。1.2 list(列表)的使用场景根据Redis双向列表的特性,因此其也被用于异步队列的使用。实际开发中将需要延后处理的任务结构体序列化成字符串,放入Redis的队列中,另一个线程从这个列表中获取数据进行后续处理。其流程类似如下的图:。
2025-02-10 12:27:10
868
原创 作为Java程序员,你整天都在讨论使用SpringBoot,可居然连缓存都不清楚?
大家看完有什么不懂的可以在下方留言讨论.有一个参数:key=参数的值如果有多个参数:key=new SimpleKey(params);大家看完有什么不懂的可以在下方留言讨论.
2025-02-10 12:18:04
738
原创 企业级SpringBoot应用多个子项目配置文件规划、多环境支持(二)
我们把配置文件分离出来了就好办了,在生产环境的时候,真实的配置文件在运维手上,运维会替换掉maven构建出来的config配置文件。第二:配置文件也打进了jar包中,不方便我们进行查看配置,而且不能够修改配置,这个也太难受了,要修改配置,需要重新打包。第一:jar包比较大,这是因为这个jar包含了第三方依赖的jar包,所以很大,给运维带来一些麻烦,这个还不是太重要。分离lib中,需要把config子项目中的配置文件解压里面,也一起放到当前项目的config中。一般我们配置的方式就是外部化配置,什么意思呢?
2025-02-10 12:11:50
443
原创 从面试官角度再论面试前准备项目描述和介绍项目的要点
1 小A,3本学校毕业,计算机系,2年相关经验,之前的公司是一个名不见经传的公司,也就叫xx科技公司,但描述的项目却很高大上,是xx ERP项目。1 工作年限比较少的同学,未必会开发完成一个模块或参与一个项目的开发,更多场景下是参与一个维护项目,比如公司一个项目已经上线了,这个项目是历史项目,所以用的技术未必最新,但在维护项目里,其实也会开发一些功能点,该用的技术一个不会少,针对每个模块维护的时间周期也不会太长,比如每个月,针对某个模块上线3个功能点,这样也是合情合理的。1 项目的背景,多少人做?
2025-02-10 12:09:47
864
原创 从零开始学Mysql - 字符集和编码
编码==简单介绍 关于编码和解码,简单来讲编码就是把字符转变为二进制数据,解码就是把二进制的数据按照一定的规则翻译成字符,关于编解码的定义只需要了解两个重点:字符是如何映射成为二进制数据的那些字符需要映射二进制的数据。
2025-02-10 12:05:39
684
原创 从源码角度搞懂 Ribbon 的负载策略
Ribbon 是 Netflix公司的一个开源项目,现已被收录到 SpringCloud ,是一个基于 HTTP 和 TCP 的客户端负载均衡器,当我们将 Ribbon 与 Eureka一起使用时,Ribbon会从Eureka注册中心去获取服务端列表,通过轮询方式达到负载均衡的作用,客户端负载均衡中用心跳机制去维护服务端清单的有效性,这个过程需要配合服务注册中心一起完成。初始化时,启动一个定时器,每隔 30s 根据服务的响应时间分配一次权重,响应时间越长,权重越低,被选择到的概率也越低。
2025-02-10 11:59:25
457
原创 从单体到微服务:使用Spring Boot构建事件驱动的Java应用程序_springboot单体应用和
Spring Boot是Pivotal团队设计的一种微服务框架,基于Spring开发,用于简化新Spring应用的初始搭建及开发过程,提升Spring开发者的体验。新增功能,如支持特定版本的Java SE、使用JUnit 5进行测试、更新的Spring Cloud工具用于服务发现和负载均衡、使用云原生构建包构建Docker映像、提供基本的集中式日志解决方案、使用Sleuth实现端到端追溯性、使用Consul进行集中式配置、依赖项升级以及支持Spring Data Neumann等。
2025-02-10 11:57:24
644
原创 从SpringBoot源码看资源映射原理
其实SpringBoot的资源映射也是一脉相承的,当我们初始化一个SpringBoot项目后,静态资源会默认存在resource/static目录中,那么SpringBoot的底层是怎么实现的呢,接下来我们就去源码里探索一下。在这里我们看到了四个值,static就是其中一个,到这里我们就明白了SpringBoot的静态资源为什么会存在resource/static这个目录下,而且放在以上4个目录中是都可以读取到的。源码我们就看到这里。上边的注释写的很清楚,重写这个方法来增加一个静态资源的映射。
2025-02-10 11:55:24
890
原创 京东java研发岗二面:Tomcat是如何做到热加载和热部署的?
热加载其实我们在开发过程中经常使用,例如我们使用Idea开发时,我们在设置页面可以进行设置,当修改文件时,我们可以选择不重启项目,选择重新加载此文件。Context在重启的过程中也会创建新的类加载器来加载我们新建的文件。那么接下来我们来验证我们的结论,看一下在Tomcat中是如何实现热加载的。我们可以看到在Tomcat运行的情况下,直接替换class文件是能够直接生效的。那么Tomcat是如何做到的呢?我们发现上面动图中在Tomcat运行时,我们修改了War包的信息,它就会将原来的删除然后重新生成一份。
2025-02-10 11:51:18
499
原创 五分钟解决Java线程池 面试所有问题
一图剩千言,上一张图概括线程池的基本运作流程。关于线程池的状态,有5种,RUNNING, 运行状态,值也是最小的,刚创建的线程池就是此状态。SHUTDOWN,停工状态,不再接收新任务,已经接收的会继续执行STOP,停止状态,不再接收新任务,已经接收正在执行的,也会中断清空状态,所有任务都停止了,工作的线程也全部结束了TERMINATED,终止状态,线程池已销毁。二、ThreadPoolExecutor线程池类七大参数详解| 参数 | 说明 || — | — |
2025-02-10 11:49:18
842
原创 互联网寒冬!阿里架构师的Java知识地图(28个知识点),让我成了offer收割机
在目前流行的互联网架构中,对一个应用来说,Tomcat是首,SSM是中,JVM是尾,我们通常对于SSM是比较了解的,而忽略了首尾,而Tomcat在目前的网络编程中是举足轻重的,但是我们其实对Tomcat中很多原理性的东西不太了解,如果能够掌握Tomcat的原理,那么是非常有用的。SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统,也是Java程序员必须要掌握的技术。
2025-02-10 11:47:17
494
原创 互联网公司常用MySQL分库分表方案
*场景:**系统绝对并发量并没有上来,表的记录并不多,但是字段多,并且热点数据和非热点数据在一起,单行数据所需的存储空间较大。**场景:**系统绝对并发量并没有上来,只是单表的数据量太多,影响了SQL效率,加重了CPU负担,以至于成为瓶颈。**概念:**以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。**概念:**以字段为依据,按照字段的活跃性,将表中字段拆到不同的表(主表和扩展表)中。**概念:**以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。
2025-02-10 11:45:17
614
原创 android 解决asset下面文件太大报错问题
2)在读出文件是 文件顺序是乱的 需要对文件进行排序,下面的比较器我是将分割文件名称都设定为数字 1,2,3,4…1.assets 是什么样的情况会报这个错误,哪个版本以下的sdk会出错.我现在用的4.4sdk 直接放进去一个50M的文件 读取写入sd卡并没有报错。1)最好将你分割的文件 拷贝到 assets的子文件夹中 在assets下面建一个子文件夹,避免读出很多 其它文件。分割文件 java读写操作 把一个10M的文件变成10个1M的文件。//需要分割的文件的文件名称。
2025-02-06 15:02:08
693
原创 字写的不好没关系,还好我会python,轻轻一点就生成了艺术签名
filename = QFileDialog.getSaveFileName(self, ‘保存’, ‘./sign.%s’ % self.show_image_ext, ‘所有文件(*)’)self.color_label = QLabel(‘艺术签名颜色:’)self.color_label = QLabel(‘艺术签名颜色:’)‘一笔艺术签’: [‘901’, ‘15’],‘连笔商务签’: [‘904’, ‘15’],‘一笔商务签’: [‘905’, ‘14’],
2025-02-05 21:19:45
1582
原创 婚礼邀请函微信小程序_微信小程序婚礼邀请函
个元素是一个标签按钮对象,通过该对象的属性可以配置标签栏中的每个标签按钮。在每一个标签页打开时,导航栏的标题也需要随之发生变化。下面在每个页面的 json文件中配置页面标题,以 pages/index/index.json文件为例,具体代码如下:{“navigationBarTitleText”: “邀请函”} 完成配置文件的编写后,在 app.wxss文件中定义公共样式,具体代码如下:/app.wxss/page {font-family: Helvetica Neue, Helvetic
2025-02-05 21:18:04
1521
原创 夜来风雨声,Python协程知多少
my_coro之所以yield可以放右边,是因为协程可以接收调用方使用.send()推送的值。yield放在右边以后,它的右边还能再放个表达式,请看下面这个例子:执行过程是:调用next(my_coro2),执行yield a,产出14。调用my_coro2.send(28),把28赋值给b,然后执行yield a + b,产出42。调用my_coro2.send(99),把99赋值给c,协程终止。由此得出结论,对于b = yield a这行代码来说,= 右边的代码在赋值之前执行。
2025-02-05 17:49:59
593
原创 四、docker 仓库(让我们的镜像有处可存)
上面我们只是配置了docker(host),这个相当于我们的私有仓库,但是我们现在使用docker login 我们自己的仓库,如果我们需要的镜像我们仓库没有,就会很麻烦,需要重新登录到共有仓库上下载下来,再上传到我们的私有仓库,那有没有办法可以一步到位呢?证明我们创建的私服是可以用的,但是有没有感觉有点别扭,不能想dockerhub 那样直观的查看我们私有仓库的镜像,没有可视化界面。所以接下来我们用另一个镜像来搭建我们私有仓库。可以看到我们的 nexus3的镜像已经启动成了,我们需要登录才能进行配置。
2025-02-05 14:34:36
1756
原创 啃完这689道Spring知识笔记 我竟吊打字节面试官
,关于源码这个问题,确实很多人感到苦恼,实际上只要肯花心思,活学活用,也没有什么知识是掌握不了的。进阶架构师,是很多Java程序员的目标,但这个目标的实现是漫长的,是辛苦的,是需要耗费大量时间和精力的,要通过不断的学习,提升自己,才能够让自己快速成长。关于Spring实战系列,一定要着重标记,因为面试对于实战要求也是有一定水准的,尤其是大厂,非常考察实战经验和思考。由于Spring相关的面试训练题的题量比较多,一共有69道题,文章篇幅有限,所以只展示了25道题,需要完整版以及详细的答案解析,
2025-02-05 14:31:00
492
原创 可对前端打包器所构建的网站进行一键扫描的Packer Fuzzer_packerfuzzer
var cmd = 'cd ’ + config[“Packer Fuzzer路径”][“default”] + ’ && ’ + config[“Python3命令名”][“default”] + ’ PackerFuzzer.py -u ’ + targetURL + ’ -l zh -r html -s ’ + taskID + ‘_’ + hostIP + ‘_’ + hostPort + ‘_’ + webProtocol;
2025-02-04 18:06:32
517
原创 双目视觉——打造室外避障的“最优解”_视觉避障
最重要的是,常见的红外和超声波目前都是单点测距,只能获得特定方向上的距离数据,而双目视觉可以在小体积、低功耗的前提下,获得眼前场景的比较高分辨率的深度图,这就让避障功能有了更多的发展空间,比如避障之后的路径规划等。目前的双目视觉主要分为两类:被动的双目和主动红外双目,二者区别是主动红外带有红外光源,可解决白墙、玻璃等无纹理信息场景中,双目匹配的问题,但由于红外光源功率有限,超过一定距离,其效果等同于被动双目。所以,基于中科慧眼在自动驾驶上的沉淀,在进入工业领域,他们首先将目光放在了室外场景的避障上。
2025-02-04 17:55:51
485
原创 关于对OKHttp的简单使用
/button按钮的监听事件,当点击按钮时,实现progressbar进度条消失并下载图片。//通过位图加工厂,将所下载的图片转换为字节发送到主线程。//创建call对象,请求网络,并且将数据返回。android:text=“点击下载” />//声明Handler对象,进行对ui的更改。//获取读取流的长度,表示获取数据的总的大小。//通过body对象获取网络数据。//网络请求成功时的反应对象。//调用查找控件的方法。//进度条消失的方法。//请求失败时的方法。//请求成功时的方法。
2025-02-04 14:04:26
261
原创 使用 Nginx 实现平滑升级
旧进程处理没有完成的请求,但不再接收新的处理请求,而是由新进程负责接收请求并进行处理;| 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程 |最后通过关闭旧进程的 PID,使新的进程完全兼容。2)安装新版本(需要注意新版本是否需要安装依赖包)| 逐步关闭工作进程及工作进程支持的信息 || 启动新的主进程,实现热升级 || 等工作进程结束后再退出 |在旧进程运行时,启动新的进程;| 重新打开日志文件 || 信号 | 作用 || 强制终止进程 |4)使用信号实现热升级。1.主进程支持的信号。
2025-02-04 11:09:18
819
原创 使用 MVI 编写响应式 APP — 第六部分 — 状态恢复
我们在这篇博客中将要关注两种场景: 在内存中恢复状态(例如屏幕的方向发生改变)和恢复一个「持续状态」(从先前存储在 Activity.onSaveInstanceState() 的 Bundle 中恢复)。
2025-02-04 11:07:34
323
原创 五分钟带你读懂!Spring Cloud构建微服务分布式云平台
例如,开发人员可以只启用由Pivotal的SaaS合作伙伴提供的服务。口 Pivotal Cloud Foundry:这是一个功能齐全的云原生平台,可在任何主要的公共laaS上运行,包括AWS、Azure 和Google Cloud Platform,或者基于OpenStack或VMware vSphere的私有云。我们决定使用Pivotal平台提供的所有Spring Cloud 功能,因此,我们的微服务将获取配置服务器的属性,在Eureka中注册它们,并使用Hystrix命令包装服务间通信。
2025-02-04 08:05:54
899
原创 五个常见的JavaScript内存错误
一看,好像没啥问题。不急,我们再创建一个触发这个定时器的组件,并分析其内存性能。): (Retry)}在 Retry 按钮上单击几次后,这是使用Chrome Dev Tools获取内存使用的结果:当我们点击重试按钮时,可以看到分配的内存越来越多。这说明之前分配的内存没有被释放。计时器仍然在运行而不是被替换。怎么解决这个问题?setInterval 的返回值是一个间隔 ID,我们可以用它来取消这个间隔。
2025-02-04 08:04:10
630
原创 一文带你吃透Vue生命周期(结合案例通俗易懂)
目的: 头部的标题, 颜色, 背景色可以随便修改, props类型的校验思路在MyHeader.vue中准备props里变量, 然后使用在使用MyHeader.vue组件时, 传入相应的值 (color和backgroundColor)App.vue传入相应自定义的值总结:props: [] - 只能声明变量和接收, 不能类型校验props: {} - 声明变量和校验类型规则 - 外部传入值不对则报错。
2025-02-04 04:36:29
613
原创 一、Jquery入门(超详)
/使用JavaScript中的属性innerHTML。//获取id为syl的元素内的html代码,html()是jQuery中的方法。//jQuery 对象。//jQuery 对象。//jQuery 对象。
2025-02-03 19:49:51
305
原创 webpack深入浅出实战系列
是webpack为了处理各种类型文件的一个中间层,webpack本质上就是一个node模块,它不能处理js以外的文件,那么loader就帮助webpack做了一层转换,将所有文件都转成字符串,你可以对字符串进行任意操作/修改,然后返回给webpack一个包含这个字符串的对象,让webpack进行后面的处理。如果把webpack当成一个垃圾工厂的话,那么loader就是这个工厂的垃圾分类!这里并不是纯粹意义上的可选链,因为babel跟ts都已经支持了,我们也没有必要去写一个完整的可选链,只是来加深一下对。
2025-02-03 18:51:59
567
原创 Sysver论文复现3--source2lice切片_sysevr复现
再再然后,删除这个元素再再再然后重新获取运行joern。重新这一步的开始2.生成pdg图首先创建文件夹其次, 执行。
2025-02-03 14:46:57
160
1
原创 Python真的可以赚钱吗?_学python能赚钱吗
最好是数学或计算机相关专业,编程能力还可以的话,稍微看一下爬虫知识,主要涉及一门语言的爬虫库、html解析、内容存储等,复杂的还需要了解URL排重、模拟登录、验证码识别、多线程、代理、移动端抓取等。由于在校学生的工程经验比较少,建议找一些少量数据抓取的项目,而不要去接一些监控类的项目、或大规模抓取的项目。慢慢来,步子不要迈太大。如果你本身就是爬虫工程师,挣钱很简单。如果你不是,也不要紧。只要是做IT的,稍微学习一下爬虫应该不难。
2025-02-03 05:50:36
844
原创 Java笔记 —— lambda
/找出所有年龄超过30岁的学生//找出所有成绩大于50分的学生运行测试show方法后完成了年龄的筛选,选出了年龄大于30的学生对象完成了成绩的筛选,选出了成绩大于50的学生对象方式二,用接口的方式,将判断集合是否满足某个条件,这个功能放入接口中。再用不同的具体实现类实现不同的筛选条件接口实现接口的类具体的方法和测试方法//将实现类作为参数传进方法中,然后里面实现类中的方法完成筛选//测试方法@Test。
2025-02-01 21:08:57
729
原创 Java程序设计(面向对象)- 基本概念
Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JAVA应用程序开发。使用异步方式接收消息的话,消息订阅者需注册一个消息监听者,类似于事件监听器,只要消息到达,JMS服务提供者会通过调用监听器的onMessage()递送消息。注:属性有称成员变量,是声明在类中的变量,在方法体中声明的变量称为局部变量或临时变量。异步:JMS天生就是异步的,客户端获取消息的时候,不需要主动发送请求,消息会自动发送给可用的客户端。
2025-02-01 21:07:13
702
原创 Android模块化面向接口编程,附小技巧_安卓面向接口编程教程
阿里P8大佬每天熬夜到凌晨一两点,花了将近半个月时间将Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架整合成了一套系统知识笔记PDF,长达1042页!相信看完这份文档,你将会对这些Android第三方框架有着更深入、更系统的理解。
2025-01-31 06:05:34
815
原创 Android杂货摊:Handler-post和View-post的区别
}});// 代码2rootBtn.post(new Runnable() {@Overridepublic void run() {System.out.println(“View.post===”);}});}你曾经有没有想过这两者到底有什么区别?我该使用哪种呢?Handler的工作机制,网上介绍的文章太多了,这里我就不赘述了,想继续了解的同学可以参考下这篇文章:Handler源码分析。一句话总结就是通过Handler对象,不论是post Msg还是Runnable,最终都是构造了一个
2025-01-31 06:03:50
878
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人