能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
能力说明:
熟悉微服务常用开放框架,理解Spring、Spring Boot,以及Spring Cloud的概念和不同,对Spring Cloud Alibaba有较为全面的认知。对Istio具备基础运维能力,掌握基本组件的知识。
能力说明:
可对MySQL数据库进行备份与恢复,可较为熟练的使用SQL语句进行单表多表查询等操作,可快速上手阿里云RDS MySQL数据库,可进行MySQL云数据库的创建、设置、数据迁移等工作。了解常见NOSQL数据库,如MongoDB、Redis、Memcached的概念、安装、配置等相关基础知识。
始终相信技术改变一切,分享自己的工作经验
2024年05月
2024年04月
2024年03月
2024年02月
2024年01月
1、GPT-4o相比前代有哪些显著的技术提升?
性能提升了,反应速度更快了;回答的质量更高了;更能够以人类的情感去回应用户;多模态的支持向更多用户免费开放了;基于GPT-4o的应用推出了不少。
2、OpenAI发完GTP-4o,国内大模型行业还有哪些机会?
其实我一直认为大模型在国内会发展的比国外好,机会会更多。就拿这个基于GPT-4o推出了一些应用,其实国内有些大厂已经在做了,也推出来了不少的优质应用。至于性能,准确度方面也在缓慢的提升。可以说这一波的发布并没有对国内厂商造成太大的冲击。我还是认为我们需要在核心基础上有更多的原创技术推出来,让我们引领国际上0-1的潮流。
不管是AI换脸软件还是“AI黏土人”,这些应用作为C端的应用,带给人的仅仅是AI给人的一种新鲜体验而已。互联网用户三分钟热度体验以后,就不会对这种类型的应用产生太大依赖,甚至体验完了以后觉得这个东西不过如此,不是心理预期上的多么惊艳。
我认为要想让AI生成图像对人类生活和工作带来长久的依赖效应,首先要让这样的应用是人类工作和生活中经常能想起来使用的东西。
拿工作来讲,如果是个设计师,我每天都要使用设计图像,那么我是用AI生成图像是我的刚性需求,并且AI生成图像给我带来了高效和便利。
对于生活上,我需要通过AI生成图像给我的生活带来实质性的改善的应用到没想到,但是对于穿着化妆上面有需求的能否通过AI生成图像给我们带来一些感官上的建设性影响呢,可以通过市场调查取获悉,可能是个突破。
总之,一个技术出现是否昙花一现,首先要真的有用,其次是真的需要用。
程序员其实害怕的不是修改需求,而是需求的合理性和实用性。做了那么久的项目,虽然大多数的项目或者产品需求是合理的,但是偶尔会遇到一些奇葩的需求,例子就不举例了。反正就是对界面的要求改成这样也不行改成那样也不行。最后上面领导一句话又回到最初方案了。
程序员害怕改需求还是因为担心需求的变更带来技术实现上的畏惧,主要是技术学习成本。
程序员害怕改需求的另一个原因那可能是工期问题了,比如时间紧迫,马上就要。这本身不是需求的问题,是紧迫感带给人的心理问题。为啥会有这样紧迫感,一方面是项目确实紧张上线,另一方面是人性使然,不多说了。
总之,程序员害怕改需求肯定有原因,但是有原因也得改
初学者可以根据现在大厂提供的平台进行快速的搭建,比如云上的serverless,主要是部署推理模型,然后从使用上面直观的感受一下深度学习的应用带来的魅力。
如果能力还行,可以在本地部署推理模型,有财力的话,买一块卡,效果会更好,因为很多深度学习框架的部署使用在没有说明对硬件要求的情况下,让使用者本地部署时常会报各种错误,很是打击学习者的积极性。财力不足,可以网上找一些对硬件要求不高,比如不需要gpu卡的,能在cpu上跑起来的模型。
上述阶段主要是作为深度学习框架的使用者。
如果希望学习如何去训练出一个深度学习框架,这个难度有点大。需要学习的知识很多,而且知识点比较难。(难得是理解,比如微积分,线性代数在深度学习的应用)。很多教材都是先讲数学理论基础,会让初学者望而却步。可以跟着视频学习,教材要反复看,坚持回味。当然最重要的不是跟着视频学习,只是看书。最重要的是我们计算机上的practice,practice,practice。可以学一点练一点,不要急着一上来能写出很厉害的模型网络。那是不可能的。可能学习一段时间能基于预训练模型在自己的数据集上训练出新模型已经很了不起了。
总之,循序渐进,坚持,会有收获的。
AI面试作为AI在人力资源方面的应用,的确可以给人力资源的工作减少强度,提高效率。但是让AI代替人类面试官去面试应聘者能带来的效果值得商榷。
众所周知,面试过程其实是一个复杂的过程,需要很强的心理交流,不单单是面试题目和技巧方面的体现。一个好的面试官可以在数分钟之内确定当前面试者是否是企业所需要的人才。而AI面试可能仅仅通过训练的问题与面试者进行提问,通过获取到的答案作为主要的考量,可能会让滥竽充数者顺利过关,也可能会让千里马从眼前一跳而过。纵然加上对面试者表情,语气,眼神等等细化的AI分析。也很难去琢磨面试者的真实心理。
因此我认为,AI面试还需要通过真实的心理训练,感情上的培养才能胜任合格的面试官。当然,现在很多真实面试官不管是本身的业务水平,还是人力资源方面的专业性,也是属于半吊子的样子,AI替换他们绰绰有余。
最常见的是查询数据库的时候,尤其是关联查询,po里的list没有返回,这个时候该属性是null,如果没有做空指针判断的话,直接使用就会报NPE的错误。处理方式就是判断是否为空。
最好使用一些第三方库对空指针的判断统一处理,尤其是动态数据填充或者api接收参数的入参校验的时候,空指针会影响代码的业务逻辑处理,甚至会让程序退出。
JDK源码的注释可以说是我们学习的榜样,很多的代码注释都配有例子说明,这点对我们国内程序员来讲是很独特的,希望每个程序员学习一下,相当于测试用例,不要嫌麻烦,这样的代码才是强壮的。
主要是设计方面,代码上用一些设计模式会让扩展性更好,但是这也是设计方面的考量。
模块化设计:将系统分解为多个小型、相互独立的模块,每个模块负责特定的功能。这样可以降低模块之间的耦合性,使得系统更加易于扩展和维护。在设计过程中,应遵循“单一职责原则”和“开闭原则”,确保每个模块只负责一个功能,并且在需求变化时不需要修改已有的代码,只需新增模块或者对现有模块进行扩展。
接口抽象:为系统的各个组件提供抽象层,通过定义明确的接口,降低模块之间的依赖程度。在未来需求变化时,只需修改接口的实现,而无需改动整个系统。
松耦合设计:通过使用标准化的接口和数据格式,降低系统各个组件之间的耦合度。这可以减少模块间的相互影响,使系统更易于扩展。
可扩展的架构:在架构设计层面,应遵循开闭原则,即对扩展开放,对修改关闭。这意味着在增加新功能时,不需要对现有系统的结构和代码进行修改。此外,采用分布式算法、负载均衡算法等技术也有助于提高系统的可扩展性。
JS编程中暂时没有什么套路和习惯。JS这门解释型的弱类型语言,上手很快,使用上比较灵活,初期使用在浏览器环境,现在可以在服务器端使用它,算是它的一大创举式的突破。从它的语言发展标准来看,后期增加了很多新的语法,很多现代浏览器也会跟着新的语法进行更新迭代,主要是增强浏览器端的渲染效果以及富客户端的开发效率。
对于开发者而言,如果不是开发JS的库,使用上没啥技巧,就是函数调用,按照约定的方式书写代码。也不会涉及很复杂的算法逻辑实现。一些著名的JS开源库中的实现用到了很多的编程技巧诸如回调,Promise等等。
作为一个经典架构模式,事件驱动一直都很流行,不管是之前的时代,还是现在的云时代。而且流行程度不会降低。因为事件驱动可以帮助程序快速响应,提高效率,节约资源。云时代大家都开始使用云端的资源,云上的服务对事件驱动这种架构模式应该使用的更加活跃,可以说云时代会让事件驱动更加流行。
在我做程序员的道路上,我掌握了面向对象,IOC,AOP,设计模式,系统架构等概念,让我感到自身技能有了显著的飞跃。
其实现在很多重复性的模板代码已经可以通过代码生成代码的方式实现了,目前占用程序员的大部分时间就是业务代码,业务代码本身是一直变化无常的,这块也是AI编程助手无法涉足的方面。未来程序员的作用就是把变化无常的代码,分析出来恒常不变的部分,交给AI助手让其完成。换句话说尽量让变化无常的业务代码变得量少,期待未来更多的AI编程助手成为程序员的好帮手。
线程死循环是指线程在执行过程中无法正常结束,一直处于循环中。处理线程死循环的方法取决于具体情况,以下是一些可能的解决方案:
检查循环条件:首先,检查线程死循环的原因。可能是由于循环条件不正确或不完整导致的。确保循环条件在适当的时候终止循环,避免死循环的发生。
添加超时机制:在循环中添加超时机制,限制线程执行时间。如果线程在超时时间内没有完成,就终止线程或者采取其他适当的处理方式,以防止线程一直处于循环中。
检查资源泄漏:检查循环内部是否存在资源泄漏问题,如未关闭的文件、未释放的内存等。这些资源泄漏可能导致线程无法正常结束。
使用监控工具:使用监控工具来检测线程状态,查看线程是否处于死循环。例如,可以使用操作系统提供的工具或者第三方监控工具来监视线程的执行情况。
手动终止线程:如果线程处于死循环且无法通过其他方式终止,可以考虑手动终止线程。但需要注意,手动终止线程可能会导致资源未正确释放,因此应谨慎使用,并在终止线程前尽可能地释放资源。
总之,一定要让程序在特定的条件下退出死循环
在图像处理应用场景下,Serverless架构可以带来许多优势,其中一些包括:
弹性伸缩:Serverless架构可以根据负载自动扩展或收缩,无需手动配置或管理服务器。在图像处理应用中,可能会有不同程度的负载波动,使用Serverless可以确保系统在高负载时仍然保持高可用性,同时在低负载时不会浪费资源。
按需付费:Serverless架构通常按照函数执行时间和资源使用量计费,因此您只需为实际使用的资源付费,无需支付固定的服务器成本。在图像处理应用中,可能会有间歇性的处理需求,使用Serverless可以大大降低成本,因为您只需在需要时支付费用。
无服务器功能:Serverless平台提供了许多现成的服务和功能,如阿里云存储,阿里云网络等,这些服务可以用于处理数据、存储、身份验证等常见需求。在图像处理应用中,您可以利用这些服务来简化开发和部署流程,减少开发成本和时间。
自动管理:使用Serverless架构,您无需担心服务器的管理和维护工作,如操作系统更新、负载均衡、容错等,这些都由云服务提供商自动管理。这使得开发团队可以将更多的精力专注于业务逻辑和功能开发,而不是基础设施管理。
快速部署和迭代:Serverless架构可以使部署过程变得非常简单和快速,您只需上传函数代码和配置,即可完成部署。这使得团队可以更快地推出新功能和更新,从而更好地响应用户需求和市场变化。
首先要保证并行程序中的资源正确的释放,否则并行程序把资源耗尽了,程序就挂了;其次是保证并行程序中临界资源数据的共享问题,这个是保证业务数据准确的必要条件。现在开源的第三方并行库可以满足大多数的系统要求,不需要自己实现并发程序中使用的多线程和锁之类的逻辑。
你认为一个优秀的技术PM应该具备什么样的能力?
1、良好的沟通能力
2、卓越的文档撰写能力
3、准确的需求分析能力
4、风险评估能力
如果只是需要在云端存储一些个人文件,并且希望能够轻松地在多台设备之间同步和访问这些文件,那么网盘可能是更简单、更便捷的选择。如果需要大容量的存储空间,并且希望在家庭或办公室网络中共享文件,并且更倾向于自己控制数据存储,那么NAS可能是更合适的选择。
通义千问升级后免费开放 1000 万字长文档处理功能以后,很多用户肯定会将更多的文字信息,比如长文档投喂给通义千问大模型,这样大模型的知识储备会增长很多。基于这些大量的知识储备,会使得通义千问大模型的上下文分析能力,文字处理能力大大的提高,可以说会对未来产生无限可能。现在各个厂家都在开放长Token的能力,可以说竞争很激烈。
集中式与分布式数据库的边界正在模糊,开发者如何看待这一变化?这种变化对数据库的设计和维护会带来哪些影响?
从数据库的设计角度来看,边界的模糊使得设计过程更加复杂。开发者需要更深入地理解数据的访问模式、查询性能、数据一致性等问题,以确保数据库能够满足业务需求。同时,由于分布式数据库涉及多个节点之间的通信和协调,因此还需要考虑网络延迟、容错性、负载均衡等因素。
在数据库维护方面,边界的模糊也带来了新的挑战。对于分布式数据库,节点之间的同步和一致性维护变得更加复杂。开发者需要设计有效的数据复制和故障恢复机制,以确保数据的可靠性和可用性。此外,随着数据量的增长和查询复杂性的提高,数据库的性能调优也变得更加重要。
1.在哪些场景下,你会进行入参数据校验的呢?
对外提供API以及给暴漏在互联网上的网站提供服务的时候会加强入参的数据校验,因为环境复杂,必须通过入参数据校验加强管理。
2.如何优雅的进行入参数据校验?你有哪些处理方式?欢迎分享~
平时使用Springboot做的服务端开发,入参的数据校验使用的是hibernate-validation,提供了常用的校验注解,还可以自定义参数校验规则,个人认为还是挺优雅的。