- 博客(27)
- 收藏
- 关注
原创 程序员找工作靠关系就是不正经?
题主在问题中提到“正常合规”和“行业禁止”,这两个词多少是有些不妥。行业规则是谁制定的呢?题主为什么认为面试找工作才是合规,同理谁又规定过靠关系找工作是禁止行为,这只是题主一厢情愿而已。前不久OpenAI发生的一件大事,奥特曼被公司董事会给裁了,但是没过几天便通过自己的超级人脉关系让大家都支持他,最后能够战胜“资本”,这就是利用人脉的一个典型例子,那么他自己当然也是因为足够有能力才能做到这件事。作为程序员,技术是基础,人脉是加分。
2024-02-09 14:40:03
369
原创 让AI更“智能”的Agent,究竟是什么?
我相信对许多对AI感兴趣的读者来说,“Agent”是个听起来既熟悉又陌生的词汇,而由于ChatGPT引发的浪潮又将Agent的概念推上顶峰,正好借助这个机会我来好好解释一下这个词汇。
2024-02-09 14:37:31
499
原创 Nacos下载、启动与使用的保姆级教程!
tar.gz格式的Source code为linux上编译运行的源码,需要Java和Maven环境手动编译运行。zip格式的Source code为windows上编译运行的源码,需要Java和Maven环境手动编译运行。这里只展示windows下的启动,具体其他启动方式,包括集群启动、多集群启动请参考官网。然后输入默认用户名为nacos,密码为nacos登录成功。后缀为.tar.gz为linux系统上运行的压缩包。后缀为.zip为windows系统上运行的压缩包。然后选择需要的下载即可。
2023-12-07 18:49:06
791
原创 Java语法糖揭秘,让你秒懂Java的甜蜜之道
语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,非常利于操作。事实上听名字也能想到,加在语法中的糖让语法变得更”甜“
2023-12-07 18:45:51
1139
原创 ArrayList背后的黑科技:深度解析源码内幕
ArrayList其本质就是数据结构中的动态数组,是一个能够内部进行扩容的数组。所以它拥有数组所拥有的特性。在时间上,通过下标直接访问,速度极快。在空间上,在内存中占连续的一段空间且创建数组时必须指定确定的容量,因此指定的容量往往大于预期的容量,造成空间浪费。特性上数组在查找上效率高。在插入和删除时便会很麻烦且耗时,因为删除和插入需要移动目标元素之后的所有数组元素,才能使数组产生空隙供目标元素插入或消除目标元素删除产生的一个空隙。
2023-12-05 20:43:39
820
原创 35岁重启编程梦想:不是赛场的终点,而是起跑线
转眼间,你已经在人生的跑道上走过了三十五个春秋,看着互联网上程序员的高薪神话,或许会有一个微妙的想法悄然滋生:是否能重拾书本,敲起代码,加入那些穿梭于数字世界中的程序员行列?想象一下,如果一个35岁的律师决定投身编程世界,他的严谨思维、逻辑推理能力,再加上学习编程所带来的技术知识,他可能会成为一个擅长技术法规、数据合规或是软件授权方面的专家。摒弃焦虑,以平和的心态接受持续学习的挑战,你会发现35岁,其实可以是你职业道路上的一个宝贵转机。,对经验和成熟的思维模式有极高的需求,这正是有年岁所带来的优势。
2023-12-05 20:39:59
396
原创 Java集合框架之争:ArrayList vs LinkedList
由于ArrayList由动态数组实现,LinkedList由双向链表实现,这里将它们的对比归类于数组与链表的区别。
2023-12-04 21:22:48
778
原创 Java单例模式的这几种实现方法,你真的了解吗?
采取一定的方法,让软件系统一个类只能创建和使用一个实例对象,并提供一个取得对象的方法单例模式保证系统中这个类只有一个对象,节省了系统资源,适当使用可以提高系统性能使用场景:需要频繁的创建和销毁对象、创建对象耗时过多但需要经常用到的、业务要求只能有一个实例的对于饿汉式,实现比较简单易懂也线程安全,如果能保证类会至少使用一次完全是可以使用的对于懒汉式,主要的就是注意线程安全问题。
2023-12-04 21:05:58
1812
原创 解锁Java自动拆装箱的神秘面纱【字节码级别深度解析】
JDK 1.5开始增加了自动拆装箱机制,Java保留了一些原始的基本数据类型,但由于Java是强面向对象语言,数据类型当然也应该设置成对象才是,所以Java也推出了对于基本数据类型的对应的对象,将基本数据类型转换为对象就称为装箱,反之则是拆箱。
2023-12-03 20:47:32
850
原创 穿越微服务迷雾:揭秘一次微服务设计实战
最近学校课程要求做一个简单的微服务系统,正好借此机会拆解一下微服务系统的架构设计。系统要求如下:基于RBAC的系统权限管理功能,支持用户、角色和权限的可配置功能。在此基础上,实现基本的用户登录、注册等用户管理方面的功能。提供统一的系统安全、缓存、日志、异常处理等功能接口。提供统一的后台管理功能,可以对系统中的数据表进行后台管理。在基础框架上,设计一个简单的业务场景(应至少涉及两个不同的角色、两个不同的业务部门),实现基本的业务功能。
2023-12-01 20:41:30
457
原创 靠着这个Java路线,我大二就去了大厂
经历了充满波折与转变的四年大学生活,我也算是一位有故事的程序员。虽然我不是行业大佬,但也算是小有成就。我是运气好的人,记得我大一的时候,就听说了Java这门语言和互联网行业的高薪。就像在游戏中意外获得了加速buff,我开始了对大厂的冲刺。然而我也是运气坏的人,这条路并不是一帆风顺的,我没有找到学校的大神带飞,没有明确的学习路线图,一路摸爬滚打,踩坑无数,现在证明只需要花费最多一年的时间便能完成的事请我花费了两年!
2023-12-01 15:23:14
1020
原创 值传递还是引用传递?解密Java中的参数传递机制的神秘面纱
这段代码中,我们定义了一个List类型的变量list,一个String类型的变量a,和一个int类型的变量num,然后分别调用了add,append,和addNum三个方法,把这三个变量作为参数传递进去。对于引用类型,方法参数拷贝的副本存储的是对象的地址,当在方法中修改了该对象里的内容(对象的属性等),实际上是通过对象地址的副本找到了实际存储的数据位置,然后修改实际存储的数据(对象属性等),这就造成了一种。答案是,Java中的方法调用都是值传递,也就是说,只会传递参数的副本,而不会影响原来的参数。
2023-12-01 09:29:51
1151
原创 Java远程调用神器:@FeignClient揭秘,轻松搞定微服务通信!
是SpringCloud中的一个注解,用于声明一个对微服务中其他服务进行HTTP调用的客户端类。在使用该注解时,我们无需手动创建实现类,SpringCloud会在运行时自动为我们生成代理对象,简化了服务调用的过程。name属性指定了要调用的服务的名称。底层使用了动态代理技术,通过继承类实现。在运行时,SpringCloud会为每个注解的类生成一个动态代理对象替代原有类来处理实际的服务调用。如果你对动态代理有更详细的疑问,欢迎在下方进行留言。如果关注的朋友较多,我将为大家提供更深入的解释!
2023-11-18 16:35:24
253
原创 阿里美团暑期实习十一面面经
美团到店平台一面(1h)自我介绍对int和Integer的理解以及使用上的不同《深入理解Java虚拟机》印象深刻的地方对哪个区域进行GC,JVM内存区域介绍和作用这些区域在多线程情况下有什么不同举现实中见到的线程安全问题做项目或实习的时候见到的线程安全问题有收获的项目,balabala~~解决消息积压(并发手段和定时任务)解决消息处理失败线程池使用和作用分布式的理解,怎么样才算分布式慢SQL优化最左原则,为什么不满足就无
2022-04-18 23:20:04
800
原创 【日常实习】字节商业变现Java研发
一面基本数据类型有哪些,对应占字节数(可恶的short忘了)对应的数据类型的取值范围,比如int类型,对应的取值范围如何计算的Collection类的划分HashSet如何去重?HashMap的key如何做到唯一的链表和红黑树的时间复杂度,红黑树引入的目的红黑树的平衡和平衡二叉树的平衡区别,以及红黑树的平衡实现(红黑树直接送走)TCP的三次握手,标志位以及序列号的变化SYN为什么是随机值,有什么作用,SYN除了握手还有什么用TCP和UDP的区别Java如何并发控制(我直接AQS)可重
2021-12-06 09:31:20
983
原创 【日常实习】字节幸福里后台研发
一面自我介绍Redis使用场景Redis设计了解过吗哈希表本质,常用吗用的哪个MySQL引擎,为什么四种隔离级别作用RocketMQ使用场景RocketMQ架构RocketMQ实现事务性消息RocketMQ事务型消息ACK丢失怎么办(不太明白什么鬼=_=)多线程利弊多线程的同步机制(从操作系统角度…)算法:最小覆盖子串二面自我介绍项目登录怎么做的session和token区别分布式session解决方法系统权限怎么做的解决一个用户多个身份问题而且便于后续扩展解
2021-12-03 10:14:04
1268
原创 Redis数据结构
此文参考《Redis设计与实现》做出的总结底层数据结构SDS(简单动态字符串)在Redis也会有一些字符串字面量,也就是不会进行修改的字符串使用C语言的字符串,即以空字符串结尾的字符数组。但为了修改的方便,Redis自行构建了一种数据结构用来保存可修改的字符串。一个SDS结构体中,有三个变量分别是len用来记录当前保存的字符串长度,free用来记录未使用的字节量,buf字符数组用来保存字符串。这样做的优点是:以O(1)复杂度来获取字符串长度len杜绝缓冲区溢出,每次给字符串后添加字符.
2021-10-24 13:38:30
112
原创 建造者模式
介绍建造者模式又称生成器模式,顾名思义是用来建造或生成某个产品的,当然它与工厂模式的“生成”意义不同。工厂模式并没有考虑产品的生产细节,主要考虑的是多个产品如何生成;而建造者模式主要考虑某个产品具体如何实现,将一个复杂对象的构建与它的表示分离(将产品的创建细节与这个产品的使用分离),使得同样的构建过程可以创建不同的表示具体实现角色划分Builder:生成器接口,定义创建一个Product对象所需的各个部件的操作ConcreteBuilder:具体的生成器实现,实现各个部件的创建,同时还提供一个让用
2021-03-28 13:08:29
111
原创 【前缀和】和为k的连续子数组
题目给定一个整数数组和一个整数 **k,**你需要找到该数组中和为 k 的连续的子数组的个数。示例输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。暴力法此题暴力法则为求出每一段连续的子数组的和,然后遍历这些和求出和为k的数组个数一段连续的数必然有一个左边界和一个右边界,所以只要枚举所有的左右边界即可得出所有的连续子数组class Solution { public int subarraySum(int[] nums,
2021-03-22 23:09:10
3057
1
原创 抽象工厂模式
介绍抽象工厂可以看成是由于产品类又被抽象的结果,在工厂模式中工厂能生产一种产品类(产品簇)的一系列产品,但是如果每一个产品类又有着进一步的分类便需要进一步抽象,例如工厂能生产多种程序员,但是每个程序员又有了程序员主体和程序员细节的划分,便需要抽象工厂了具体实现角色划分ProductApi:生产者API,用于定义生产者的行为规范,即抽象接口ConcreteProduct:生产者角色,具体已经实现接口的生产者ProductFactory:抽象的工厂,创建不同产品类的工厂(字节类和阿里类)Concr
2021-03-22 23:05:49
187
原创 工厂模式
介绍工厂模式就是对简单工厂的再次抽象,主要功能是让父类在不知道具体实现的情况下,完成自身的功能调用;而具体的实现延迟到子类来实现,在简单工厂中factory承担了所有产品的加工细节,那么工厂模式不考虑具体加工的实现,而是将细节实现交给子类,而自身只负责对子类的管理具体实现角色划分ProductApi:生产者API,用于定义生产者的行为规范,即抽象接口ConcreteProduct:生产者角色,具体已经实现接口的生产者ProductFactory:抽象的工厂,根据参数创建具体的工厂Concret
2021-03-22 22:59:27
158
3
原创 简单工厂模式
介绍简单工厂模式事实上并不属于23种设计模式中的任何一个模式,但是它的工厂思想是有关工厂的基本思想,这个思想也是非常常用的,了解了它之后我们会对工厂模式有更深的理解具体实现工厂角色ProductApi:生产者API,用于定义生产者的行为规范,即抽象接口ConcreteProduct:具体的生产者角色,具体已经实现接口的生产者Factory:工厂,根据参数创建具体的生产者角色Client:消费者,需要使用具体的某个生产者代码实现以程序员的一天为例代码实现ProductApi类(程序员接口)
2021-03-22 22:56:32
99
原创 JMM模型
一、引言早期计算机处理多个任务时是一个一个任务处理的,这样很明显效率非常低。为什么效率低,后一个任务依赖前一个任务的完成,而且要知道计算机的运算能力是很强的,一个任务显然都不够玩,计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上(读写数据)。如果不希望处理器在大部分时间里都处于等待其他资源的状态,就应该充分利用处理器的能力。在许多情况下,我们希望计算机能同时处理多个任务,这在现代计算机中已经很常见了。二、充分利用处理器多任务处理及充分利用处理
2021-03-22 22:49:49
141
原创 volatile关键字
简介关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易被正确、完整地理解,以至于许多程序员都习惯去避免使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对后面理解多线程操作的其他特性很有意义volatile两个最最关键的特点:可见性与有序性两个特性可见性:这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。而普通变量并不能做到这一点,普通变量的值在线程间传递时均需
2021-03-22 22:44:37
179
原创 HashMap源码分析(JDK1.8)
一、介绍基本概念HashMap其实就是数据结构的哈希表,是一个为了快速查找定义的数据结构,旨在提高在一个数组中查找任意一个元素的时间复杂度。存储数据时给定(Key,Value),通过hash()函数得到hash作为表数组(table)的下标,查询时直接通过table[hash(key)]即可查到value,大幅提高查询效率而且这与数组元素的顺序无关哈希冲突(哈希碰撞)理想情况下是通过改造hash函数可以一次查询到想要的value,然而这必定是会有两个不同的key求出的hash值是一样的情况,
2021-01-23 00:28:40
133
1
原创 设计模式入门——初识及七大设计原则
设计模式的优点1、可扩展性:当客户提出新业务要求,程序可在较小的改动下进行功能扩展,也可视为可维护性2、可读性:代码具有编程规范性,便于阅读和理解,适合多人合作3、可靠性:添加新功能对原有功能无影响4、高内聚、低耦合:事实上这个特点是程序一直追求的七大设计原则1.单一职责原则介绍:一个类只负责一个职责应用:类A有职责1,职责2,职责1需求变更时,进行改动类A,由于职责2依赖于类A,就可能造成职责2执行错 误。将类A分解成类A 1,类A 2解决问题,即满足单一职责原则优点:降低类的复杂度
2021-01-05 18:30:54
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人