首页 文章 精选 留言 我的

精选列表

搜索[java],共10000篇文章
优秀的个人博客,低调大师

SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下

文章标题的incident含义:在企业级软件领域里,当客户使用软件提供商的软件,遇到各种问题或故障,可以使用专门的工具,向软件供应商寻求帮助。我们通常称这种工具创建的帮助请求(Support Request)为incident. 今天这篇文章无关具体的技术。Jerry最近使用微软Azure云平台时遇到一个问题,通过Azure提供的Support工具向微软提交incident的过程中,感叹自己十多年来一直是修bug的命,这次终于翻身了,由我给另一家软件公司报bug,体验了一回当上帝的感觉。 我在SAP这些年,一共处理过317个客户incidents(当然并不是所有的都是Jerry修复的,包括我分析后转手到其他部分的也算). 我们Commerce Cloud团队使用Azure提供的Function create API在Azure上创建Lambda Function,过程中遇到一些问题,详见Jerry之前的文章:SAP ABAP应用服务器的HTTP响应状态码(Status Code). 在排除了问题不是我们消费端代码引起之后,我开始给Azure报incident. 虽然Azure的字面意思是天蓝色,但Jerry打开的Azure页面全是下图这种纯黑色背景,只是因为我换了一个黑色主题。 新建一个支持请求(Support Request),类型选择为Technical: 选中之后,Subscription就自动填充为我当前这个用户的订阅ID了。大家可以把Azure Subscription的作用类比成SAP Cloud Platform的Global Account. 然后指定遇到问题的Service类型,和具体的Resource名称。Subscription,Service,Resource这三个字段都是联动的下拉菜单。 Service,Problem type和Problem subtype这三个联动的下拉菜单,共同扮演的角色,类似给SAP产品报incident时需要维护的Application Component. 下图是SAP Application Component的树状关系图。 Jerry个人觉得Azure这种多层级联式下拉菜单的做法,为用户免去了记忆component ID的负担;但作为程序员,我个人还是更喜欢SAP这种通过树形结构维护component的方式。 回到Azure Portal,维护好了问题类型和描述信息后,Azure根据这些信息自动从其后台检索出相关的推荐解决方案。我浏览了一下,发现并不能解决我遇到的问题,于是点Next继续: 这里可以维护明细信息和上传附件。我当时将重现问题的步骤,Postman请求的payload,我的分析,包括我搭建的jMeter等信息全部写到一个PDF文件里了,总共8页,添加到附件里。 然后是选择故障的紧急程度,Azure有四档紧急程度可选:Critical,Urgent,Moderate和Minimal. 而对应的SAP里的术语叫Priority(优先级),SAP incident的优先级也分四档:Very High,High,Medium和Low. Jerry处理过的317个客户incidents中也不乏Very High的,当时处理时承担的压力,至今思之仍觉得后怕。 尽管明白“程序员何苦为难程序员”的道理,我还是选择了最高级别的Critical impact,享受一次7×24小时的服务。留下自己的手机以供联系。 最后点击Next就能成功创建Support Request. 因为我们享受的Support Plan级别是Premier,在这个级别之下,理论上15分钟之内就会收到响应。 果然,几分钟之后Jerry就收到了一个用Teams发起的会议请求: 我心想,微软真是动作神速啊,这么快就派出工程师准备和我一起在线调试了吗?本来我正在吃饭,只得放下碗筷回到电脑面前。 登入Microsoft Teams参加了会议我才知道,这个会的目的首先是,Azure Support工程师确认他们对我附件PDF里描述信息的理解是否正确,然后讨论这个incident的Severity是否应该从Critical降成Urgent. 工程师们详细询问了我们组对这个API的使用场景,以及当前Azure上是否存在已经上线的应用。最终我也同意了这个降级请求,毕竟微软这套衡量incident优先级的标准和SAP类似,都是按照Business Impact来界定的。 这个会刚结束,我手机又接到一个号码显示为美国的来电,一位自称是微软Critical Situation Manager的女士,询问我对刚才和Azure Support工程师开会的体验,以及对这个incident优先级的降低是否有异议。 整体来讲,我对这次向Azure提交incident的体验很满意,无论是响应速度还是同Azure Support工程师及Critical Situation Manager交谈下来感受到的专业程度,都给我留下了深刻的印象。 最后还是再来回顾一下SAP从业者们最熟悉的如何给SAP产品报incident的工具吧。 在SAP Cloud for Customer about菜单里集成了提交incident的功能: 提交界面比较简洁,维护标题和问题详细描述,上传附件。 当然也能使用最统一最通用的SAP One Support Launchpad: https://launchpad.support.sap.com 同Azure一样,SAP Support Launchpad也鼓励用户,在实际提交incident之前,首先去Knowledge Base里查询有无相关线索和解决方案。 不搜不知道,一搜吓一跳,原来HTTP 400 bad request确实是一个普遍问题,在SAP领域也一共存在1400多个相关note和讨论: 如果觉得这些搜索结果没有帮助,点击Submit an Incident. SAP incident也分4档不同的优先级: 关于上图的必填字段Component,如果是基于ABAP的SAP产品,很容易在开发包的Application Component字段找到这个值: 如果是SAP Cloud Platform的某个模块遇到了问题,对应的Application Component在SAP Help上能查到: https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/08d1103928fb42f3a73b3f425e00e13c.html?scp-env=Cloud%20Foundry 回到Jerry给Azure报的那个incident,目前还在处理过程中。对此我也非常能理解,这种不能100%重现的故障是最让程序员头疼的。 我想起之前处理过的一个SAP CRM IBASE问题,应用运行时有一定概率会出现运行时Dump,但不是总能重现。 当年Jerry还在SAP成都研究院CRM开发团队工作,负责SAP CRM IBASE的维护。 当时给我报bug的同事也坦言,这个Dump不能稳定重现。如果试一次是正常工作的话......那就多试几次,直到出现Dump为止...... 最让我抓狂的是,如果单步调试,这个故障100%无法重现。换句话说,我多年积累下来的在文章SAP错误消息调试之七种武器:让所有的错误消息都能被定位里介绍的ABAP单步调试经验,在这个问题的分析上完全派不上用场。 幸运的是我最终通过自己的分析,写了一个脚手架程序,通过该测试程序能够100%重现Dump. 既然能稳定重现,剩下的任务就轻松了,通过单步调试就能找到问题根源。 这个问题折腾了我整整两天,解决完问题之后,我也做了复盘,分析自己为什么会花掉这么多时间。我把我的经验教训,以及最终通过分析找到能够稳定重现问题的突破口,写成了一篇SAP社区博客: My Tips about how to handle complex and tricky issues https://blogs.sap.com/2014/05/01/my-tips-about-how-to-handle-complex-and-tricky-issues/ 我把自己采取的问题定位方式归纳命名为“最小系统法”。本世纪初,国内电脑界流行DIY,大家分别购买自己中意品牌的电脑零配件,自己动手组装,运行时经常出现无法开机(俗称“点不亮”)的情况。电脑发烧友们习惯通过“最小系统法”去逐一排查,最终找到出故障的配件。 我处理那个IBASE bug因为无法单步调试,仅能通过ST22 Dump里的静态信息进行分析,所以我也使用了“最小系统法”,分析出可能引起故障的子模块,再写测试程序运行这些模块,逐一验证我的猜想。 关于我提交的这个不能稳定重现的Azure incident,我也会持续关注。最后祝我的同行,处理这个incident的微软工程师好运。感谢阅读。 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

优秀的个人博客,低调大师

O2OA V4.3763 稳定版发布,Java 办公开发平台迎来大量更新

O2OA团队于2020-03-16发布了新的软件版本 V4.3367,该版本除了修复了大量的系统BUG之外,也提供了几个较有看点的新功能: 一、通用办公系统首页 这个是协同办公平台的默认首页,它提供待办事项,需要参加的会议,日程管理等等,让员工更能关注自己的工作。 通用办公首页 待办已办的展现、信息的展现、会议、云文件以及日程的展现,主要是展现用户自己关心的办公信息数据 左铡系统应用列表 当然,用户也可以根据企业自身的需求,定义自己符合要求的首页,这个只是默认的页面样式 门户效果一 门户效果二 二、国标版式公文编辑器 版式文件也是平台在公文业务上的一个特色,公司自研了完全符合《党政机关公文格式》(GB/T 9704-2012)标准的版式文件组件,也是一种在线正文编辑的组件。它支持IE10+以及其他主流浏览器,支持移动端直接展现,脱离控件安装,展现效率高,展现效果好。 版式公文编辑器特点: 完全符合《党政机关公文格式》(GB/T 9704-2012)标准 支持公文要素排版软件,实现文档显示、版式文件生成、打印、印刷的效果完全一致 纯HTML编辑,无需加载任何插件和控件 支持所有主流浏览器(IE10+) 智能排版、版面整体自动调优、自动格式化 编辑展现格式一致,速度快。 支持移动端直接查看和编辑 表单和正文数据动态绑定 支持从Word和WPS等文档编辑工具中复制,并自动格式化 支持导出Word文件 移动端展现效果 版式公文编辑器原理: 版式公文编辑器优点: 1、展现效果完全符合《党政机关公文格式》(GB/T 9704-2012)标准,用户不需要再进行样式调整; 2、完全基于HTML实现,不依赖任何控件安装,有效降低使用安装难度; 3、展现速度快,效果好,支持主流浏览器以及各类移动端直接使用。 三、更加精准的流程流转记录 O2OA团队对流程引擎进行了大量的优化,可以提供更加精准备的流程流转过程记录,可追溯流程的真实流转情况。 四、流程表单一键下载功能 新版本O2OA支持一键将表单页面,公文正文以及所有附件打包成一个zip包提供下载,为用户下载流程内容提供了更为方便的操作方式 O2OA是基于J2EE架构,集成移动办公、智能办公,支持私有化部署,自适应负载能力的,能够很大程度上节约企业软件开发成本的基于AGPL协议开放源代码的企业信息化系统需求定制开发解决方案,对外提供专业的开发运维等技术服务。 最新版本 O2OA V4.3763 O2OA平台主要能力介绍: 流程管理:全功能流程引擎。基于任务驱动,开放式服务驱动,高灵活性、扩展性,事件定义丰富。包含人工、自动、拆分、合并、并行、定时、服务调用、子流程等功能。应用场景丰富,可轻松实现公文、合同、项目管理等复杂工作流应用。 信息管理:具有权限控制能力的内容管理平台。支持自定义栏目、分类,表格,表单,多级权限系统,能轻松实现知识管理、通知公司、规章制度、文件管理等内容发布系统。 门户管理:具体可视化表单编辑的,支持HTML直接导入的,支持各类数据源,外部应用集成能力的,所见即所得的门户管理平台。适用于实现企业信息化门户系统,可以轻松结合O2OA提供的认证设置与其他系统进行单点认证集成。 服务管理:可以在前端脚本的形式,开发和自定义web服务,实现与后端服务数据交互的能力。 数据中心:可以通过配置轻松实现数据透视图展示,数据统计、数据可视化图表开发等等功能。 智能办公:拥有语音办公、人脸识别、指纹认证、智能文档纠错、智能填表推荐等智能办公特色 移动办公:支持安卓\IOS手机APP办公,支持与企业微信和钉钉集成,支持企业私有化微信部署 开箱即用:O2OA还提供如考勤管理、日程管理、会议管理、脑图管理、便签、云文件、企业社区、执行力管理等开箱即用的应用供企业选择 最新版本服务器安装包下载[o2server_V4.3763]: windows 64Bit : http://download.o2oa.net/download/o2server_20200316073520_windows.zip Linux 64Bit : http://download.o2oa.net/download/o2server_20200316073520_linux.zip MacOS : http://download.o2oa.net/download/o2server_20200316073520_macos.zip AIX : http://download.o2oa.net/download/o2server_20200316073520_aix.zip 中标麒麟(龙芯):http://download.o2oa.net/download/o2server_20200316073520_neokylin_loongson.zip 银河麒麟(飞腾):http://download.o2oa.net/download/o2server_20200316073520_kylinos_phytium.zip raspberrypi(树莓派):http://download.o2oa.net/download/o2server_20200316073520_raspberrypi.zip 官方网盘下载: 百度云盘:https://pan.baidu.com/s/1oBQ1atXGyXdLaYE5uAqF1w 提取码: pnk9 腾讯微云:https://share.weiyun.com/5krUMjj 此版本还包含以下更新内容: 新增功能: [平台能力]新增平台首页相关配置。 [平台能力]新增全新主题模式,10种配色,更快的速度,更少的内存占用。 [平台能力]新增平台默认为扁平风格新版本系统首页。 [平台能力]新增管理员切换用户的功能。 [系统架构]新增静态web资源通过接口上传并分发到各集群环境功能。 [系统架构]新增资源上传分发通过socket分发以保证单独的web服务器节点也能上传资源。 [流程引擎]新增待办、已办、待阅、已阅分页列表。 [流程引擎]新增回退路由相关能力。 [流程表单]流程表单上增加正文、附件一键打包下载功能。 [流程引擎]新增功能:根据路由上的“优先路由”设置,给提交框设置“默认决策”。 [流程引擎]新增管理员上传附件到指定用户。 [流程引擎]流程会签新增分支功能在查找分支节点的时候增加选择节点的过滤。 [流程表单]手写板组件新增保存图片大小的参数、内容管理增加新建界面检查草稿、是否填写标题的配置。 [流程表单]新增国标版式公文编辑器文件版本控制能力。 [流程表单]增加流程附件修改名称功能。 [流程表单]新增导出工单的表单信息为Html、Word或者Pdf功能。 [内容管理]新增打印表单相关功能。 [内容管理]新增新的自定义按钮,增加打印功能。 [数据中心]新增视图操作条信息存储。 [数据中心]增加单独运行映射功能。 [服务平台]新增企业邮件解决方案:腾讯企业邮。 [服务平台]新增服务脚本预编译。 [云文件]新增Office预览功能(预览需要连到O2云)。 [消息提醒]新增管理员对待办进行提醒接口,可用于时效提醒。 [移动办公]新版移动端云盘功能升级。 [移动办公]新增企业微信扫码登录功能。 [移动办公]新增钉钉扫码登录功能。 [移动办公]新增企业微信待办消息可点击链接消息打开待办信息。 [移动办公]新增钉钉待办消息可点击超链接消息打开待办信息。 系统优化: [系统能力]优化了前端资源载入方式,提升平台页面展现效率。 [系统架构]默认开启NodeAgent的Socket服务。 [系统架构]默认安装包中不再自带Informix驱动包。 [流程引擎]通过jobid打开流程文档,提供多个work时会显示work列表供用户选择。 [流程引擎]让流程调度可以指定处理人。 [流程引擎]优化流程日志记录方式——Record对象。 [流程引擎]优化重置处理人功能。 [流程引擎]调度功能优化,调度可以选择人员。 [流程引擎]回滚功能优化。可以选择回滚到任意节点。 [流程引擎]召回功能优化。可以召回到指定的已处理人员。 [流程表单]修改checkClose方法,适配Chrome浏览器信标。 [内容管理]优化二级页面中显示列表的时候会两次加载数据的问题。 [内容管理]优化二级页面中复制文档的操作。 [组织同步]钉钉和企业微信组织和人员同步过程优化。 [移动办公]流程管理IOS流程发布去掉了必填标题的表单。 [移动办公]流程管理Android流程发布去掉了必填标题的表单。 [移动办公]钉钉工作表单操作按钮UI相关优化(钉钉UI规范)。 问题修复: [系统认证]OAUTH设置Info返回属性的问题。 [系统功能]修复了打开页面时出现空标签的问题。 [系统功能]修复了Chrome上检查新建时同步请求报错的问题。 [系统架构]修复了集群下流程起草数组越界问题:CRC32计算值可能为负数,需要取绝对值 [流程平台]通过管理接口无法删除已完成工作的问题。 [流程引擎]修复了某些情况下流程授权不生效的问题。 [流程引擎]修复了某些情况下流程转交错误的问题。 [流程引擎]修复了因授权引起的无法判断当前处理人是否存在的错误。 [流程表单]修复了版式文件在编辑模式下,保存文档时,正文内容偶尔不会被保存下来的问题。 [流程表单]修复了人员属性的组织类型判断错误的问题 [流程表单]修复了表单打印不分页的问题。 [流程表单]修复了视图导出为Excel和搜索内容不匹配问题。 [流程表单]修复了某些情况下Ntko控件打开附件不正常的问题。 [流程表单]修复了表单数据网格、单选按钮、人员组织的问题。 [流程表单]修复了版式文件编辑器编辑状态下不能保存内容的问题。 [流程表单]修复了表单信息转为Pdf后展现格式错误的问题。 [流程表单]修复了流程附件批量下载允许指定名称并可以指定site下载。 [流程表单]修复了日期组件格式化的时候使用中文显示不正常的问题。 [样式模板]修复了某些情况下样式模板Html中少了mouseover事件绑定,导致无法显示刷新按钮的问题。 [内容管理]修复了文档列表分页向前翻页数据不准确的问题。 [内容管理]修复了在IE下附件上传存储的名称带路径问题处理。 [内容管理]修复了内容管理和信息平台栏目分类数量不正确的问题。 [内容管理]修复了某些情况下文档权限失效的问题。 [内容管理]修复了取消分类导入视图设定报错的问题。 [内容管理]修复了设置导入导出视图分类出现错误的问题。 [内容管理]修复了Chrome浏览器中栏目配置首页显示不正常的问题。 [内容管理]修复了信息列表分页查询报错的问题。 [内容管理]修复了内容管理无法从Excel导入数据的问题。 [内容管理]修复了Cipher身份发布内容在某些情况下权限失效的问题。 [内容管理]修复了内容管理publishConent接口无法保存的问题。 [数据中心]修复了数据中心自建表和查询语句不能拷贝的问题。 [数据中心]修复了数据中心标题显示错误的问题 [个人设置]修复了个人设置中某些情况下常用意见配置不正常的问题。 [应用管理]修复了某些情况下应用导出导致系统错误的问题。 [考勤管理]修复了考勤管理中请假信息修改不生效的相关问题。 [移动办公]修复了流程管理App待阅查看后不会转为已阅的问题。 [移动办公]修复了某些情况下IOS有些机器首次安装启动的时候在启动界面没反应的问题。 [移动办公]修复了某些情况下移动端App内容管理编辑和保存无法使用的问题。 [移动办公]修复了某些情况下移动端App内容管理关联流程发起后服务调用出错的问题。 [移动办公]修复了企业微信上无法查看附件的问题。 [移动办公]修复了某些情况下移动端提交框没有覆盖的问题。 [移动办公]修复了某些情况下移动端信息平台打开不正常的问题。

优秀的个人博客,低调大师

4种Java线程池用法以及线程池的作用和优点,你都知道了没?

一、如下方式存在的问题 new Thread() { @Override public void run() { // 业务逻辑 } }.start(); 1、首先频繁的创建、销毁对象是一个很消耗性能的事情;2、如果用户量比较大,导致占用过多的资源,可能会导致我们的服务由于资源不足而宕机;3、综上所述,在实际的开发中,这种操作其实是不可取的一种方式。 二、使用线程池有什么优点 1、线程池中线程的使用率提升,减少对象的创建、销毁;2、线程池可以控制线程数,有效的提升服务器的使用资源,避免由于资源不足而发生宕机等问题; 三、线程池的四种使用方式 1、newCachedThreadPool创建一个线程池,如果线程池中的线程数量过大,它可以有效的回收多余的线程,如果线程数不足,那么它可以创建新的线程。 public static void method() throws Exception { ExecutorService executor = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i++) { final int index = i; Thread.sleep(1000); executor.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + " " + index); } }); } } 执行结果 通过分析我看可以看到,至始至终都由一个线程执行,实现了线程的复用,并没有创建多余的线程。如果当我们的业务需要一定的时间进行处理,那么将会出现什么结果。我们来模拟一下。 可以明显的看出,现在就需要几条线程来交替执行。不足:这种方式虽然可以根据业务场景自动的扩展线程数来处理我们的业务,但是最多需要多少个线程同时处理缺是我们无法控制的;优点:如果当第二个任务开始,第一个任务已经执行结束,那么第二个任务会复用第一个任务创建的线程,并不会重新创建新的线程,提高了线程的复用率;2、newFixedThreadPool这种方式可以指定线程池中的线程数。举个栗子,如果一间澡堂子最大只能容纳20个人同时洗澡,那么后面来的人只能在外面排队等待。如果硬往里冲,那么只会出现一种情景,摩擦摩擦...首先测试一下最大容量为一个线程,那么会不会是我们预测的结果。 public static void method_01() throws InterruptedException { ExecutorService executor = Executors.newFixedThreadPool(1); for (int i = 0; i < 10; i++) { Thread.sleep(1000); final int index = i; executor.execute(() -> { try { Thread.sleep(2 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " " + index); }); } executor.shutdown(); } 执行结果 我们改为3条线程再来看下结果 优点:两个结果综合说明,newFixedThreadPool的线程数是可以进行控制的,因此我们可以通过控制最大线程来使我们的服务器打到最大的使用率,同事又可以保证及时流量突然增大也不会占用服务器过多的资源。3、newScheduledThreadPool该线程池支持定时,以及周期性的任务执行,我们可以延迟任务的执行时间,也可以设置一个周期性的时间让任务重复执行。 该线程池中有以下两种延迟的方法。scheduleAtFixedRate测试一 public static void method_02() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(5); executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { long start = new Date().getTime(); System.out.println("scheduleAtFixedRate 开始执行时间:" + DateFormat.getTimeInstance().format(new Date())); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } long end = new Date().getTime(); System.out.println("scheduleAtFixedRate 执行花费时间=" + (end - start) / 1000 + "m"); System.out.println("scheduleAtFixedRate 执行完成时间:" + DateFormat.getTimeInstance().format(new Date())); System.out.println("======================================"); } }, 1, 5, TimeUnit.SECONDS); } 执行结果 测试二 总结:以上两种方式不同的地方是任务的执行时间,如果间隔时间大于任务的执行时间,任务不受执行时间的影响。如果间隔时间小于任务的执行时间,那么任务执行结束之后,会立马执行,至此间隔时间就会被打乱。scheduleWithFixedDelay测试一 public static void method_03() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); executor.scheduleWithFixedDelay(new Runnable() { @Override public void run() { long start = new Date().getTime(); System.out.println("scheduleWithFixedDelay 开始执行时间:" + DateFormat.getTimeInstance().format(new Date())); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } long end = new Date().getTime(); System.out.println("scheduleWithFixedDelay执行花费时间=" + (end - start) / 1000 + "m"); System.out.println("scheduleWithFixedDelay执行完成时间:" + DateFormat.getTimeInstance().format(new Date())); System.out.println("======================================"); } }, 1, 2, TimeUnit.SECONDS); } 执行结果 测试二 public static void method_03() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); executor.scheduleWithFixedDelay(new Runnable() { @Override public void run() { long start = new Date().getTime(); System.out.println("scheduleWithFixedDelay 开始执行时间:" + DateFormat.getTimeInstance().format(new Date())); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } long end = new Date().getTime(); System.out.println("scheduleWithFixedDelay执行花费时间=" + (end - start) / 1000 + "m"); System.out.println("scheduleWithFixedDelay执行完成时间:" + DateFormat.getTimeInstance().format(new Date())); System.out.println("======================================"); } }, 1, 2, TimeUnit.SECONDS); } 执行结果 总结:同样的,跟scheduleWithFixedDelay测试方法一样,可以测出scheduleWithFixedDelay的间隔时间不会受任务执行时间长短的影响。4、newSingleThreadExecutor这是一个单线程池,至始至终都由一个线程来执行。 public static void method_04() { ExecutorService executor = Executors.newSingleThreadExecutor(); for (int i = 0; i < 5; i++) { final int index = i; executor.execute(() -> { try { Thread.sleep(2 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " " + index); }); } executor.shutdown(); } 执行结果 四、线程池的作用 线程池的作用主要是为了提升系统的性能以及使用率。文章刚开始就提到,如果我们使用最简单的方式创建线程,如果用户量比较大,那么就会产生很多创建和销毁线程的动作,这会导致服务器在创建和销毁线程上消耗的性能可能要比处理实际业务花费的时间和性能更多。线程池就是为了解决这种这种问题而出现的。 欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。同样思想的设计还有很多,比如数据库连接池,由于频繁的连接数据库,然而创建连接是一个很消耗性能的事情,所有数据库连接池就出现了。 最后 欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

优秀的个人博客,低调大师

从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

1 下载安装包 1.1 压缩包 https://dev.mysql.com/downloads/mysql/ [外链图片转存失败(img-oesO8K09-1566652568838)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 1.2 安装包 使用安装包安装则无需后续步骤 https://dev.mysql.com/downloads/file/?id=488055 [外链图片转存失败(img-Y3x59iO4-1566652568839)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 2 配置环境变量 [外链图片转存失败(img-RBgnyR9U-1566652568840)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 3 初始化MySQL [外链图片转存失败(img-pVrsH1g4-1566652568841)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 在MySQL路径下输入命令mysqld --initialize --user=mysql --console [外链图片转存失败(img-4a4YX8nO-1566652568842)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 3.1 记住你的初始密码 [外链图片转存失败(img-IQFQj1kT-1566652568842)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 2019-08-24T11:55:10.299750Z 0 [System] [MY-013169] [Server] F:DEVenvmysql-8.0.17-winx64binmysqld.exe (mysqld 8.0.17) initializing of server in progress as process 27232 2019-08-24T11:55:10.355861Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. 2019-08-24T11:55:33.531673Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: k;k;w6OJEZ#Q 2019-08-24T11:55:45.353166Z 0 [System] [MY-013170] [Server] F:DEVenvmysql-8.0.17-winx64binmysqld.exe (mysqld 8.0.17) initializing of server has completed 4 启动服务 [外链图片转存失败(img-LVA4VR9p-1566652568842)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 接着就是输入mysqld -install进行服务的添加 输入net start mysql启动服务 输入mysql -u root -p进行登录数据库,这时提示需要密码,然后就是用你上面的密码登录 修改密码语句:ALTER USER root@localhost IDENTIFIED BY '123456'; 修改密码为:123456 如果控制台乱码,可以改编码为utf-8 如果用git bash遇到问题,可以使用Windows自带的cmd或者powershell

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册