共 67 条数据

代码补全工具介绍-通义灵码
技术杂谈

代码补全工具介绍-通义灵码

106次浏览 0条评论

体验地址:https://developer.aliyun.com/topic/lingma/activities/202403?taskCode=14508&recordId=6ace83c7df66cccc7163789fecf43c6e#/?utm_content=m_fission_1 体验有礼体验即可参与开盲盒,奖品内容:iphone手机、Switch、机械键盘、拉杆箱、智能手环、手办、视频平台年卡、日历等。通义灵码,是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优,助力开发者高效、流畅的编码。核心场景代码智能生成经过海量优秀开源代码数据训练,可根据当前代码文件及跨文件的上下文,为你生成行级/函数级代码、单元测试、代码优化建议等。沉浸式编码心流,秒级生成速度,让你更专注在技术设计,高质高效地完成编码工作。研发智能问答基于海量研发文档、产品文档、通用研发知识、阿里云的云服务文档和 SDK/OpenAPI 文档等进行问答训练

元宇宙/数字孪生工具链
技术杂谈

元宇宙/数字孪生工具链

1991次浏览 1条评论

AIGC/Gen-AI:OpenAI API:官方APIChatARKit:基于ChatGPT的AR开发包Point-E:3D点云生成式AIReplicate API:提供数千种云端AI模型,包括扩散模型、图像修复等Unity AI Command:在Unity编辑器中使用自然语言创建场景,基于chatgptDatabricks Dolly:Dtabricks的开源chatgpt替代品Stanford Alpaca:斯坦福基于Llama微调的指令型大模型。Code Alpaca:代码生成指令跟随模型,基于alpacallama.cpp:C++版本的Llama LLM推理器。simple-llama-finetuner:llama 7b LLM微调工具peft:大模型微调方法库llm-security:大模型安全问题汇编pyllama:hacked version of llama llmchatllama:基于llama和RLHF的chatbot开发库gpt4all:基于llama的gpt4平替,可以在个人PC上运行推理,webuipromptable:AI应用全栈开发库,支持LLM、

Oracle字符集修改
技术杂谈

Oracle字符集修改

1347次浏览 0条评论

提示Oracle数据库默认的字符集编码为US7ASCII,这个编码是不支持中文的,如果想要在数据库存储中文,就需要修改编码为ZHS16GBK或UTF-8编码和字符集是一个意思,只是叫法不一样而已前置条件修改字符集的前提是知道我们现在用的是什么字符集查询数据库字符集SELECT * FROM NLS_DATABASE_PARAMETERS where PARAMETER='NLS_CHARACTERSET';一般情况下我们都是将字符集修改为UTF-8或ZHS16GBK(GB18030)修改编码    1. 首先以SYSDBA的身份登录上去    sqlplus / as sysdba    2. 关闭数据库    shutdown immediate    3. 以mount(挂载方式)打开数据库    startup mount    4. 设置session    -- 设置Oracle数据库为限制访问状态     ALTER SYSTEM ENABLE RESTRICTED SESSION;           -- 关闭Oracle数据库的Job Queue进程     ALTE

常用正则表达式
技术杂谈

常用正则表达式

1511次浏览 0条评论

字母^[A-Za-z]*$字母数字^[A-Za-z0-9]*$数字^\d*$大写字母^[A-Z]*$小写字母^[a-z]*$6个字母^\w{6}$6位数字^\d{6}$邮政编码^\d{4,6}$IP地址^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$链接^https?:\/\/\w+\.\w+\.\w+.*$车牌号^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]\w{4,9}$身份证号^\d{17}[\dX]$中国护照(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)

零基础ChatGPT注册教程
技术杂谈

零基础ChatGPT注册教程

2444次浏览 0条评论

ChatGPT注册教程最近爆火的ChatGPT你玩了吗?ChatGPT是将海量的数据结合表达能力很强的Transformer模型结合,从而对自然语言进行了一个非常深度的建模。可以应用在图像,QA,文本,Chat等场景,本次我们将讲述如何进行ChatGPT的注册,实现和当前最牛的人工智能对话。准备网络ChatGPT这个东西它在国外,所以我们要科学上网🪜据测试,香港的无法使用,新加坡是可以正常使用的(最好美国)注册邮箱网络准备好之后,我们就可以进入到注册页面了注册地址:https://chat.openai.com/auth/login首先是邮件认证,输入邮箱并设置密码,邮箱会收到验证邮件,我们点击邮件的Verify email address按钮就验证成功了验证手机号邮箱验证成功之后会进入绑定手机号的界面,但你会发现选了我们的county之后。。。无法使用这里必须要有一个国外的手机号才行...在座的各位,有国外手机号的不多吧这里推荐一个接码平台:https://sms-activate.org接码平台使用第一步、注册平台,很简单,只需要使用邮箱注册,这里就不列出来了第二步、充值,接码平

Java菜市场网站声明(非常重要!)
技术杂谈

Java菜市场网站声明(非常重要!)

1572次浏览 2条评论

1. 本网站为公益网站,不做盈利用途。2. 所有广告收入仅用于对服务器和网站的维护和支撑。3. 所有资料仅供个人学习,不能用于商业用途,请您自觉于下载后24小时内删除,请勿复制传播。4. 本站分享的文章、资源等均收集于互联网,仅供读者学习交流使用,版权归原作者所有。如有侵权,请您与站长联系,我们将及时处理!

Android 使用 Kotlin 连接 MQTT
技术杂谈

Android 使用 Kotlin 连接 MQTT

7691次浏览 0条评论

MQTT 是一种轻量级的、灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡。 Kotlin 是一门由 JetBrains 公司开发的编程语言,Kotlin 是基于 JVM 的,所以开发者可以很方便地用它来进行Android 开发,并且支持 Kotlin 和 Java 的混合编写。而早在 2017 年,Google 就宣布 Kotlin 成为官方开发语言。 本文主要介绍使用 Kotlin 语言在 Android 平台上使用 MQTT。 新建 Kotlin 项目 打开 Android Studio 新建一个项目,选择语言为 Kotlin,Android Studio 会自动创建 Kotlin 相关配置。若要配置现有项目,则可以参考 将 Kotlin 添加到现有应用。 添加依赖 打开项目的 build.gradle,添加 Eclipse Paho Java Client 和 Eclipse Paho Android Service 依赖到 dependencies 部分。 dependencies { implementation 'or

Spring Boot毕业设计 - 个人理财系统(2020新版)源码免费下载
技术杂谈

Spring Boot毕业设计 - 个人理财系统(2020新版)源码免费下载

6780次浏览 6条评论

1. 使用技术Spring bootSpringSpring mvcMybatisPagehelpershirothymeleaflyear2. 系统功能用户信息管理理财产品管理网贷管理权限管理3. 项目截图4. 系统运行说明1、导入压缩包的sql文件2、修改finance/src/main/resources/application.yml配置文件中的数据库用户名和密码3、启动com.bjpowernode.finance.FinanceApplication4、启动后通过localhost:8080访问系统5、管理员用户为admin/123456

升级到最新版本的Chrome后,开发者工具JS代码无法高亮的解决办法
技术杂谈

升级到最新版本的Chrome后,开发者工具JS代码无法高亮的解决办法

4238次浏览 0条评论

升级到最新版本的Chrome(79.0)版本,发现开发者工具中Sources栏的JS代码,不高亮了,一片黑白。debugger时,鼠标移动到变量上,也不显示变量值,用起来非常不方便。站长几经折腾,以为是哪里的配置出了问题,后来google后发现升级Chrome后都有这问题。目前最好的解决版本,如果不想换浏览器的话,可以下载Chrome开发者版本使用,开发者版本下载链接:https://www.google.com/intl/zh-CN/chrome/dev/安装完成后再使用开发者工具,熟悉的味道回来了...

导致JVM进行Full GC的情况及解决办法
技术杂谈

导致JVM进行Full GC的情况及解决办法

2951次浏览 0条评论

堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:对年轻代(包括 Eden 和 Survivor 区域)进行GC被称为 Minor GC,对老年代进行GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但非绝对的。Major GC的速度一般会比Minor GC慢10倍以上。下边看看有那种情况会导致JVM进行Full GC及解决办法。1、System.gc()方法的调用 此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full GC的频率,也即增加了间歇性停顿的次数。建议能不使用此方法就别使用,让虚拟机自己去管理它的内存,可通过通过-XX:+ DisableExplicitGC来禁止RMI调用System.gc()。2、老年代空间不足老年代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足

SpringBoot自动装配原理解析
技术杂谈

SpringBoot自动装配原理解析

4547次浏览 1条评论

自动装配是SpringBoot中一大特性,SpringBoot在程序初始化时可以根据classpath、property属性、context中实例、以及运行容器特征等各种动态条件,来按需初始化相应的bean,并注册到IOC容器中。Spring Boot四大核心:    1、自动配置:针对很多Spring应用程序和常见的应用功能,Spring Boot能自动提供相关配置。    2、起步依赖:告诉Spring Boot需要什么功能, 它就能引入需要的依赖库    3、Actuator:让你能够深入运行中的Spring Boot应用程序,一探Spring Boot程序的内部信息。    4、命令行界面:这是Spring Boot的可选特性,主要针对Groovy语言使用。本文将对自动装配的原理进行分析。@EnableAutoConfiguration讲解该注解表示开启Spring Boot自动配置功能,实现自动装配功能。@EnableAutoConfiguration 定义:在这个注解中,最重要的是它导入了一个类EnableAutoConfigurationImportSelector它是一

面试题:如何解决分布式事务问题
技术杂谈

面试题:如何解决分布式事务问题

2976次浏览 0条评论

面试题1、分布式事务了解吗?2、你们是如何解决分布式事务问题的?面试官心理分析只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧。先不说你搞过没有,起码你得明白有哪几种方案,每种方案可能有啥坑?比如 TCC 方案的网络问题、XA 方案的一致性问题。面试题剖析分布式事务的实现主要有以下 5 种方案:XA 方案TCC 方案本地消息表可靠消息最终一致性方案最大努力通知方案两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率

Spring Cloud深入系列 PDF合集下载
技术杂谈

Spring Cloud深入系列 PDF合集下载

11065次浏览 0条评论

《Spring Cloud微服务架构进阶》朱荣鑫等著《Spring Cloud微服务实战》翟永超著《Spring Cloud与Docker微服务架构实战(第2版)》周立著《Spring Cloud微服务:全栈技术与案例解析》 尹吉欢著

java实现多张图片和文字合并 java图片合成示例代码
技术杂谈

java实现多张图片和文字合并 java图片合成示例代码

6074次浏览 0条评论

我们通过java把下面的背景图和二维码以及文字“java菜市场-专注于技术干货的免费分享”合并成一张新的图片背景图片二维码图片public class Main {     /**      * 合成图片      *      * @param backgroundPath      * @param qrCodePath      * @param message      * @param outPutPath      * @throws IOException      */     public static void overlapImage(String backgroundPath, String qrCodePath, String message, String outPutPath) throws IOException {         // 设置背景图片大小         BufferedImage backgroundImage = resizeImage(566, 230, ImageIO.read(new File(backgroundPat

【福利】找不到资源?没有CSDN积分?在这里留言,java菜市场帮你找!
技术杂谈

【福利】找不到资源?没有CSDN积分?在这里留言,java菜市场帮你找!

5676次浏览 97条评论

如果你想找的资源,在java菜市场中没有搜到,如IT相关的电子书、视频教程、考研资料等。都可以在这里留言,java菜市场帮你找。留言的电子邮箱请填写真实邮箱,以便接收回复通知!声明:java菜市场也是在网络上搜集资源,不代表所有留言的资源都能被找到。如果是19年、20年新出的书,基本上没有资源,感谢大家的理解和支持。可通过手机QQ扫描下方二维码加入java菜市场官方QQ群,期待你的加入。

2019最全java面试题 题库大全800题 含答案(面试宝典)
技术杂谈

2019最全java面试题 题库大全800题 含答案(面试宝典)

3804次浏览 0条评论

1、 meta标签的作用是什么2、 ReenTrantLock可重入锁(和synchronized的区别)总结3、 Spring中的自动装配有哪些限制?4、 什么是可变参数?5、 什么是领域模型(domain model)?贫血模型(anaemic domain model)和充血模型(rich domain model)有什么区别?6、 说说http,https协议7、"= ="和equals方法究竟有什么区别?8、&和&&的区别?9、.super.getClass()方法调用?10、10条SQL优化技巧11、10道经典java面试题_实习生必问!12、15个Java线程并发面试题和答案13、15个高级Java多线程面试题及回答14、2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据15、2018年java分布式相关最新面试题16、2018最新java技术面试题与答案17、23种经典设计模式都有哪些,如何分类?18、4个Spring常见面试题及答案解析19、58到家MySQL数据库开发规范20、9条改善Java性能的小建议21、9道常见的java笔试

高级开发必须理解的Java中SPI机制
技术杂谈

高级开发必须理解的Java中SPI机制

2516次浏览 0条评论

本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。1 SPI是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。整体机制图如下:Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。Java SPI就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。所以SPI的核心思想就是解耦。2 使用场景概括地说,适用于:调用者根据实际使用需要,启用、扩展、或者替换框架的实现策略比较常见的例子:数据库驱动加载接口实现类的加载J

别在 Java 代码里乱打日志了,这才是正确的打日志姿势!
技术杂谈

别在 Java 代码里乱打日志了,这才是正确的打日志姿势!

2661次浏览 0条评论

1.使用 slf4j使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。实现方式统一使用: Logback 框架2.打日志的正确方式什么时候应该打日志?当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程2.1 基本格式必须使用参数化信息的方式:logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol);对于 debug 日志,必须判断是否为 debug 级别后,才进行使用:if (logger.isDebugEnabled()) {    logger.debug("Processing trade with id: " +id + " symbol: " + symbol);}不要进行字符串拼接,那样会产生很多 String 对象,占用空间,

阿里云CentOS安装SVN、Redis、MySQL、Nexus等,安装成功后外网连接失败的通用解决方案
技术杂谈

阿里云CentOS安装SVN、Redis、MySQL、Nexus等,安装成功后外网连接失败的通用解决方案

2836次浏览 1条评论

站长之前整理了如何在阿里云CentOS服务器下安装SVN、Redis、MySQL、Nexus,都是站长一步步亲自安装,自测通过的。CentOS7下搭建配置SVN服务器CentOS7使用yum安装MySQLCentOS7安装Redis4.0.2及常见报错解决CentOS7安装maven私服Nexus有些小伙伴反映能安装成功,但是本机程序或浏览器访问会出现无法连接的情况,一般这种情况很多都是因为阿里云ECS服务器的安全组配置和服务器的防火墙原因导致。站长以SVN服务器的3690端口为例,介绍一下解决方案。1、打开阿里云控制台首页,打开云服务器管理控制台 -->网络与安全-->安全组2、点击安全组列表中的配置规则3、点击添加安全组规则4、在端口范围加入你要添加的端口,确定提交。可以同时添加多个端口,如果3690/3692,即可同时添加3690、3691、3692 3个端口5、配置服务器防火墙通过 firewall-cmd --list-all 命令,查询防火墙配置如果提示"FirewallD is not running",说明防火墙没有开启,可以通过 systemctl sta

MybatisPlus 多租户架构(Multi-tenancy)实现
技术杂谈

MybatisPlus 多租户架构(Multi-tenancy)实现

3993次浏览 0条评论

在进行多租户架构(Multi-tenancy)实现之前,先了解一下相关的定义吧:什么是多租户多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。那么重点就很浅显易懂了,多租户的重点就是同一套程序下实现多用户数据的隔离。数据隔离方案多租户在数据存储上存在三种主要的方案,分别是:独立数据库即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高。优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。缺点:增多了数据库的安装数量,随之带来维护成本和购置成本的增加。共享数据库,独立 Schema多个或所有租户共享Database,但是每个租户一个Schema(也可叫做一个user)。底层库比如是:DB2、ORACL

推荐一款阿里开源的 Java 诊断工具 Arthas(阿尔萨斯)  好用到爆!
技术杂谈

推荐一款阿里开源的 Java 诊断工具 Arthas(阿尔萨斯) 好用到爆!

2994次浏览 0条评论

Arthas是什么鬼?Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题。Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux、Mac、Windows 操作系统,命令还支持使用 tab 键对各种信息的自动补全,诊断起来非常利索。这是它的官方网站:https://alibaba.github.io/arthas/index.htmlGithub地址:https://github.com/alibaba/arthasArthas能解决什么问题?让我们来看下 Arthas 的官方解释。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1、这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 2、我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 3、遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 4、线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!5、是否有一个全局视角来查看系统的运行状况? 6、有什么办法可以监控到JVM的实

CentOS7安装maven3.3.9 及常见报错解决
技术杂谈

CentOS7安装maven3.3.9 及常见报错解决

3876次浏览 0条评论

1、进入要安装maven的目录,以/usr/local为例 cd /usr/local 2、下载maven3.3.9tar包 wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz 3、解压tar包 tar -zxvf apache-maven-3.3.9-bin.tar.gz 4、当前maven安装包所在目录为 /usr/local/apache-maven-3.3.9,可以根据需要移动到自己想要的位置 5、设置环境变量 vim /etc/profile 在profile文件末尾添加一下内容: export M2_HOME=/usr/local/apache-maven-3.3.9 export PATH=$M2_HOME/bin:$PATH 6、使修改的profile文件立即生效: source /etc/profile 7、输入mvn -v命令,显示一下内容,安装成功 Apache Maven 3.3.9 (bb52d8502b

你是一直认为MySQL count(1) 比 count(*) 效率高么?
技术杂谈

你是一直认为MySQL count(1) 比 count(*) 效率高么?

2433次浏览 0条评论

MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么?有 Where 条件的 count,会根据扫码结果count 一下所有的行数,其性能更依赖于你的 Where 条件,所以文章我们仅针对没有 Where 的情况进行说明。MyISAM 引擎会把一个表的总行数记录了下来,所以在执行 count(*) 的时候会直接返回数量,执行效率很高。在 MySQL 5.5 以后默认引擎切换为 InnoDB,InnoDB 因为增加了版本控制(MVCC)的原因,同时有多个事务访问数据并且有更新操作的时候,每个事务需要维护自己的可见性,那么每个事务查询到的行数也是不同的,所以不能缓存具体的行数,他每次都需要 count 一下所有的行数。那么 count(1) 和 count(*)有区别么?InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance diffe

这些年,阿里巴巴技术大牛们曾经写过的那些书籍!附下载地址!
技术杂谈

这些年,阿里巴巴技术大牛们曾经写过的那些书籍!附下载地址!

9783次浏览 0条评论

阿里巴巴,一直都是程序员们非常向往的企业,这里汇聚了全国最顶尖的程序员,这里的技术大牛也一直很愿意和外界分享他们的经验心得,撰写了一系列技术博客、书籍等,本文,猿哥整理了近年来阿里巴巴技术大牛们撰写的那些书籍,涵盖Java、大数据、面试企业架构等方面Java系列1、《阿里巴巴Java开发手册》作者:杨冠宝,阿里巴巴集团高级技术专家,在阿里历任技术研发、架构师、部门主管等不同的角色本手册以开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约七个维度,每个条目下有相应的扩展解释和说明,正例和反例,全面、立体、形象地帮助到开发者的成长和团队代码规约文化的形成。2、《码出高效:Java开发手册》作者:杨冠宝,阿里巴巴集团高级技术专家,在阿里历任技术研发、架构师、部门主管等不同的角色;高海慧,阿里云资深开发工程师,先后在阿里巴巴集团B2B技术部和阿里云任职源于影响了全球250万名开发工程师的《阿里巴巴Java开发手册》,作者静心沉淀,对Java规约的来龙去脉进行了全面而彻底的内容梳理。《码出高效:Java 开发手册》以实战为中心,以新颖的角度全面阐

阿里程序员常用的 15 款开发者工具(建议收藏)
技术杂谈

阿里程序员常用的 15 款开发者工具(建议收藏)

7870次浏览 0条评论

从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。 由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:1. 工具名称和简介2. 使用场景一、Java 线上诊断工具 ArthasArthas 阿里巴巴2018年9月开源的一款Java线上诊断工具。工具的使用场景:1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!5. 是否有一个全局视角来查看系统的运行状况?6. 有什么办法可以监控到JVM的实时运行状态?Arthas支持JDK 6 ,支持Linux/Mac/Window

为什么项目中用了JOOQ后大家都不愿再用Mybatis?
技术杂谈

为什么项目中用了JOOQ后大家都不愿再用Mybatis?

4129次浏览 0条评论

前言今天给大家介绍一个新的ORM框架->JOOQ,可能很多朋友还没有听说过这个框架,码农哥之前也是一直在使用Mybatis框架作为Java工程中的持久层访问框架,但是最近的一些项目采用JOOQ框架开发后,码农哥表示再也不想用Mybatis了!为什么这么说呢?因为JOOQ在代码层面要比Mybatis简洁得多,而且性能也非常优异。相信大家都有过这样的体会,我们在项目工程中使用Mybatis进行数据库相关代码的编写时,为了提高工程效率,一般会在数据库模型设计完成后,一次性使用Mybatis代码插件(如:mybatis-generator),来生成Mybatis数据库访问的实体类代码以及XML、Mapper等映射代码,从而尽量以面向对象的方式来操作和访问数据库。而通过这样的方式,虽然在工程效率上提高了很多,但是从代码的简洁和优雅性上来说就会让人感觉特别的啰嗦,因为自动生成的代码并不完全都是你在项目中能够用得到的。所以,有些对代码有追求的同学就会以比较简洁的方式来手写SQL代码。如在@Mapper接口中编写这样的代码:@Select("select max(t.balance_id) fr

Spring中如何使用设计模式
技术杂谈

Spring中如何使用设计模式

3896次浏览 0条评论

关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。1.策略模式关于策略模式的使用方式,在Spring中其实比较简单,从本质上讲,策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。我们以发奖励为例进行讲解,比如我们在抽奖系统中,有多种奖励方式可供选择,比如积分,虚拟币和现金等。在存储时,我们必然会使用一个类似于type的字段用于表征这几种发放奖励的,那么这里我们就可以使用多态的方式进行奖励的发放。比如我们抽象出一个PrizeSender的接口,其声明如下:public interface PrizeSender {  /**   * 用于判断当前实例是否支持当前奖励的发放   */  boolean support(SendPrizeRequest request);  /**   * 发放奖励   */  void sendPrize(SendPrizeRequest request);}该接口中主要有两个方法:support()和sendPrize(),其中suppor

图解 Java垃圾回收机制,写得非常好!
技术杂谈

图解 Java垃圾回收机制,写得非常好!

2734次浏览 0条评论

什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文接下来将介绍垃圾回收机制的基本过程。第一步:标记垃圾回收的第一步是标记。垃圾回收器此时会找出哪些内存在使用中,还有哪些不是。上图中,蓝色表示已引用对象,橙色表示未引用对象。垃圾回收器要检查完所有的对象,才能知道哪些有被引用,哪些没。如果系统里所有的对象都要检查,那这一步可能会相当耗时间。关注Java技术栈微信公众号,回复:JVM46,可以获取一份超全 JVM 调优攻略。第二步:清除这一步会删掉标记出的未引用对象。内存分配器会保留指向可用内存的引用,以供分配新对象。压缩为了提升性能,删除了未引用对象后,还可以将剩下的已引用对象放在一起(压缩),这样就能更简单快捷地分配新对象了。为什么需要分代垃圾收集?之前说