• 关于 文件子系统可以干啥 的搜索结果

问题

深入理解Magento - 第一章 - Magento强大的配置系统:报错 

kun坤 2020-06-04 21:14:35 5 浏览量 回答数 1

问题

深入理解Magento - 第一章 - Magento强大的配置系统 - 配置报错

montos 2020-06-04 15:18:56 4 浏览量 回答数 1

问题

[精品问答]Java一百问第一期

问问小秘 2019-12-01 21:51:20 791 浏览量 回答数 1

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

回答

怎么 没人来呀 @中山野鬼###### 1、如果想去掉while(true),可以考虑通知实现; 2、关于自动重连的问题,可以考虑重发送逻辑中抽离出来,采用心跳检测完成; 3、另外发送速率统计部分也应该抽离出来。 4、上多通道要考虑资源使用可控。 5、实在不行按照业务拆分成多模块,用redis 或mq类的扩展一下架构设计; ######回复 @OS小小小 : map =(Map)JSONObject.parse(SendMsgCMPP2ThredPoolByDB.ZhangYi.take()); 换成take,阻塞线程,试试。######回复 @OS小小小 : 1、通知只是告知队列里有新的数据需要处理了; 5、内存队列换成redis队列 实现成本增加,但是可扩展性增加;######1、通知实现的话 ,岂不是 无法保证 最少发送么,又会陷入另一个问题中 是吗? 或者是我的想法不对么? 2、嗯,这一块可以这样做。谢谢你 3、速率统计这里 我目前想不到怎么抽离、既可以控制到位,又可以保证不影响。。。 5、redis 是有的 但是 redis的队列的话 跟我这个 没啥区别吧,可能速度更快一点。######while(true) 里面 没数据最起码要休眠啊,不停死循环操作,又没有休眠cpu不高才怪######回复 @OS小小小 : 休眠是必须的,只是前面有数据进来,可以用wait notify 的思路通知,思路就是这样,CountDownLatch 之类多线程通讯也可以实现有数据来就能立即处理的功能######嗯,目前在测试 排除没有数据的情况,所以这一块没有去让他休眠,后面会加进去。 就针对于目前这种情况,有啥好办法吗###### 我的思路是:一个主线程,多个任务子线程。 主线程有一层while(true),这个循环是不断的扫描LinkedBlockingQueue是否有数据,有则交个任务子线程(也就是你这里定义的线程池)处理,而不是像你这样每个子任务线程都有一个while(true) ######这才是对的做法######嗯,这思路可以。谢谢哈###### 引用来自“K袁”的评论 我的思路是:一个主线程,多个任务子线程。 主线程有一层while(true),这个循环是不断的扫描LinkedBlockingQueue是否有数据,有则交个任务子线程(也就是你这里定义的线程池)处理,而不是像你这样每个子任务线程都有一个while(true) 正确做法. 还有就是 LinkedBlockingQueue 本身阻塞的,while(true)没问题,主要在于不需要每个发送线程都去block######while(true)不加休眠就会这样###### java 的线程数量大致要和cpu数量一致,并不是越多越快,线程调度是很消耗时间的。要用好多线程,就需要设计出好的多线程业务模型,不恰当的sleep和block是性能的噩梦。利用好LinkedBlockingQueue,队列空闲时读队列的线程会释放cpu。利用消息触发后续线程工作,就没必要使用while(true)来不停的扫描。 ######@蓝水晶飞机 看到你要比牛逼,我就没有兴趣跟你说话了######回复 @不日小鸡 : 我就是装逼怎么啦,特么的装逼装出样子来的,起码也比你牛逼啊。######回复 @蓝水晶飞机 : 你说这话不能掩盖你没有回复我的问题又来回复我导致装逼失败的事实。 那你不是楼主你回复我干什么,还不是回答我的问题。 不要装逼了好么,装多就成傻逼了######回复 @不日小鸡 : 此贴楼主不是你,装什么逼。######回复 @王斌_ : 这些我都知道,我的意思是你这样回复可能会误导其他看帖子的人或者新手,让他们以为线程数就等于CPU数###### 引用来自“OS小小小”的评论 怎么 没人来呀 @中山野鬼 抬举我了。c++ 我还敢对不知深浅的人说,“权当我不懂”,java真心只是学过,没有实际工程上的经验。哈。而且我是c的思维,面对c适合的应用开发,是反对使用线程的。基本思维是,执行模块的生命周期不以任务为决定,同类的执行模块,可根据物理硬核数量,形成对应独立多个进程,但绝对不会同类的任务独立对应多个线程。哈。所以java这类面向线程的设计,没办法参与讨论。设计应用目标不同,系统组织策略自然有异。 唯一的建议是:永远不要依赖工具,特别是所谓的垃圾资源处理回收机制,无论它做的再好,一旦你依赖,必然你的代码,在不久的将来会因为系统设计规模的变大,而变的垃圾。哈。 听不懂的随便喷,希望听懂的,能记得这个观点,这不是我一个人的观点。 ######给100万像素做插值运算进行染色特效,请问单线程怎么做比多线程快?###### @乌龟壳 : 几种方法都可以,第一是按照计算步骤,每个进程处理一个步骤,然后切换共享空间(这没有数据传递逻辑上的额外开销),就是流水思维。第二个是block的思维,同样的几个进程负责相同计算,但负责不同片区。同时存在另一类的进程是对前期并发处理完的工作进行边界处理。 你这个例子体现不出进程和线程的差异的。 如果非要考虑进程和线程在片内cache的差异,如果没记错(错了大家纠正哈),进程之间的共享是在二级缓存之间吧。即便线程能做到一级缓存之间的共享,但对于这种大批量像素的计算,用进程仍然是使用 dma,将数据成块载入一级缓存区域进行处理,而这个载入工作和计算工作是同步的。不会有额外太多的延迟。 你举的这个例子,还真好是我以前的老本行。再说了。像素计算,如今都用专用计算处理器了吧。还用x86或arm来处理,不累死啊。哈。 而且这种东西java不适合,同样的处理器,用c写,基本可以比java快1到2倍。因为c可以直接根据硬件特性和计算逻辑特点有效调度底层硬件驱动方式。而java即便你用了底层优化的官方库,仍然不能保证硬件与计算目标特性的高度整合。 ######回复 @中山野鬼 : 简单来说,你的多个进程处理结果进行汇总的时候,是不是要做内存复制操作?如果是多线程天然就不用,多进程用系统的共享内存机制也不用,问题是既然用了共享内存,和多线程就没区别了。######回复 @乌龟壳 : 两回事哦。共享空间是独立的,而线程如果我没记错,全局变量,包括文件内的(静态变量)是共享的。不同线程共享同一个进程内的变量嘛。这些和业务逻辑相关的东西,每个线程又是独立一套业务逻辑,针对c语言,这样去设计,不是没事找事嘛。面向对象语言,这块都帮你处理好了,自然没有关系。######既然有共享空间了,那你所说的进程和线程实际就是一回事了。###### @乌龟壳   ,数据分两种,一种和算法或处理相关的。一种是待处理的数据。 前者,不应该共享,后者属于数据加工流程,必然存在数据传递或流动,最低成本的传递/流动方式就是共享内存,交替使用权限的思路。 但这仅仅针对待加工的数据和辅助信息,而不针对程序本身。 进程不会搞混乱这些东西特别是(待加工数据的辅助信息),而线程,就各种乱吧。哈。 进程之间,虽然用共享空间,但它本质是数据传递/流动,当你采用多机(物理机器)并发处理时,进程移动到另外一个物理主机,则共享空间就是不能选择的传递/流动方式了。但线程就没有这些概念。 ######回复 @中山野鬼 : 是啊,java天然就不是像C一样对汇编的包装。######@乌龟壳 面向企业级的各种业务,java这些没问题的。而且更有优势,面向计算设备特性的设计开发,就不行了。哈。######回复 @中山野鬼 : 也算各有场景吧,java同样可以多进程可以分布式来降低多线程的风险。java也可以静态编译成目标机器码。总之事在人为。######回复 @乌龟壳 : 高手,啥都可以,低手,依赖这些,就是各种想当然。哈哈。######回复 @中山野鬼 : 那针对java的垃圾回收,这个东西是可以调节它算法的,不算依赖工具吧,哈。不然依赖C语言语法也算依赖工具咯。哈。;-p

kun坤 2020-05-31 13:04:51 0 浏览量 回答数 0

问题

搜索引擎背后的经典数据结构和算法 6月10日 【今日算法】

游客ih62co2qqq5ww 2020-06-15 07:32:11 0 浏览量 回答数 0

问题

第6篇 指针数组字符串(下):报错

kun坤 2020-06-08 11:01:44 4 浏览量 回答数 1

问题

Java技术1000问(3)【精品问答】

问问小秘 2020-06-02 14:27:10 42 浏览量 回答数 1

回答

感觉你根本没理解什么是maven。。。我使用中根本没遇到你提到的疑问 jsp编译class是什么鬼。。没看懂,JSP不需要什么编译,这是容器的事情。。就算是你编译好了,你也脱离不了servlet容器,没多大意义。 至于你说的,发布前要把js minify,请问用mvn怎么做? 这根本就不叫事儿。maven搭配NPM和最热的vue前端框架整合在一起搞事,也不算啥事。Java开发的系统和工具,如果连这点扩展性都不到,还配叫Java么,Java还配稳坐编程语言老大的位置么。。你说的东西maven当然支持啦!,看示例配置: <!-- yuicompressor --> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>yuicompressor-maven-plugin</artifactId> <version>1.3.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>compress</goal> </goals> <configuration> <includes> <include>js/*.js</include> <include>css/*.css</include> <include>activity/**/*.css</include> </includes> <excludes> <exclude>**/*.min.js</exclude> <exclude>**/*-min.js</exclude> </excludes> <encoding>utf8</encoding> <failOnWarning>false</failOnWarning> <nosuffix>true</nosuffix> <force>true</force> <removeIncluded>true</removeIncluded> <linebreakpos>-1</linebreakpos> </configuration> </execution> </executions> </plugin> ant转maven不是分分钟的事情么,这种事情我干的不少,传统的没有任何包管理的全扔lib下的项目,200多个jar,我一天时间就能搞定。maven和某个号称最好的语言的包管理不同,maven对代码没有任何侵入性,代码一行改动都不需要,唯一需要的就是目录结构做轻微调整(甚至不调整也可以)。不存在你说的什么“重写”,真正的0侵入,反正就是不涉及任何代码修改,只需要配置下maven的POM而已。 maven本来就支持自定义目录结构啥的,只不过约定在先,你要不按你约定来也可以啊。 <build> <sourceDirectory>${basedir}/src/main/java</sourceDirectory> <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory> <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory> <outputDirectory>${basedir}/target/classes</outputDirectory> <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory> ... </build> 如果系统中有很多jar已经招不到maven坐标了,自己给它安一个坐标,上传到私服就能搞定。我在12年之前写的Java代码都是传统方式,没有任何依赖管理。12年后,老项目转maven,轻轻松松毫无障碍。######无论js minify还是jsp编译成class,我都是举例子而已,真正想问的是mvn对编译流程的支持,除了写插件还有哪些?当然你说mvn可以嵌入ant,那我现在ant一套流程都下来了,只是没有mvn那么多功能,感觉没必要换。######你刻意没谈jsp编译成class,证明你不熟,你熟悉js minify,所以给了个插件的例子。我可不可以理解成mvn自定义编译流程必须学怎么写mvn插件?没法像Ant一样把编译流程也可以xml脚本化?######先不看具体内容,补充一下,我说的重写是重写build不是项目,现在项目用ivy管理依赖,并非放到lib什么的###### 要使用Maven最好还是搭建一个Nexus   这样也是为了长远考虑 当然增加dependency的时候也容易些  jsp编译class 这个问题  我感觉你对于JSP 以及 Servlet的生命周期理解的有问题  Maven管理子模块什么的  还是很方便的吧  无非就是多加一些 ######回复 @ManderSY : 我只是拿jsp做个例子而已,而且你这样回答算是逃避问题。如果你改的不是jsp而是controller呢?重启项目发布这个问题我不太想发散开来讨论。总之就是有办法自动化实现平滑重启发布。如果你纠结jsp,那我说个别的方便你理解,发布前要把js minify,请问用mvn怎么做?######回复 @乌龟壳 : 可以接受完全重写的话 完全可以采取前后端分离来做 就没这些问题了######回复 @乌龟壳 : 我个人觉着差别还是很大的 重启服务的成本 以及风险明显比那个高很多######回复 @ManderSY : 而且我只是拿jsp举例方便理解而已。项目的模板引擎不是jsp,而且要打包js那些东西,要干的事情很多。######回复 @ManderSY : 对于一个上线要走流程的环境,预编译jsp只能说影响不大。###### maven的哲学是Convention over Configuration ,建议还是按照maven的标准来,不然还不如就继续用ant,这样的成本还低一些######它的标准要遵守可以,但始终问题要解决,预编译jsp只是我抽象出来方便大家理解的场景而已,实际要做的是真正不预编译跑不起来的功能。###### @南湖船老大 ###### @南湖船老大 我想再明确地说一下场景,不是具体的jsp编译成class什么的,比如我手头上有一个自己开发的模板引擎,我需要 第一步把模板引擎编译出来 第二步用这个编译出来的模板引擎编译*.tmpl文件成java 第三步把java编译成class打包成jar 第四部把jar放到最终的目录 我想咨询的是,类似这些需要自定义化的逻辑,mvn大概是怎样支持的,我只需要一些关键字就好了。比如mvn是否支持直接调用jar,是否可以像ant一样配置一些简单的逻辑等。###### 引用来自“乌龟壳”的评论 @南湖船老大 我想再明确地说一下场景,不是具体的jsp编译成class什么的,比如我手头上有一个自己开发的模板引擎,我需要 第一步把模板引擎编译出来 第二步用这个编译出来的模板引擎编译*.tmpl文件成java 第三步把java编译成class打包成jar 第四部把jar放到最终的目录 我想咨询的是,类似这些需要自定义化的逻辑,mvn大概是怎样支持的,我只需要一些关键字就好了。比如mvn是否支持直接调用jar,是否可以像ant一样配置一些简单的逻辑等。 当然不是问题啦,maven是Java写的,当然有插件机制啦。写个maven插件又不复杂,套路都在那了###### @南湖船老大 通过你的举例,我特意看了mvn的plugin开发的文档,发现maven对自己的定义是 "Maven" is really just a core framework for a collection of Maven Plugins. 所以我想难怪各种自定义逻辑的工具在mvn文档里找不到,原来本来就是要开发的。 看来要考虑下是否值得把Ant那套编译逻辑用mvn插件的方式重构出来,这样就能用上mvn了。 说真的Ant和Ivy太老了,很多东西实现得不好,不知道maven怎样。 谢谢。######回复 @南湖船老大 : 好的######回复 @乌龟壳 : nexus,jfrog都可以的,都有web界面,很方便管理(主要是配置权限和代理仓库地址)。一次配置后后面就不用再管了######回复 @南湖船老大 : 就是你说的私有repo啊,mvn私源,公司内项目间共享的源,不能开放出去的######回复 @乌龟壳 : 不太理解你这个需求是什么###### @南湖船老大 对了,你知不知道maven是否有只需要http/ftp和文件目录结构就能部署出来的repo,我不需要web界面去管理,手工即可。

kun坤 2020-06-08 11:18:06 0 浏览量 回答数 0

回答

感觉你根本没理解什么是maven。。。我使用中根本没遇到你提到的疑问 jsp编译class是什么鬼。。没看懂,JSP不需要什么编译,这是容器的事情。。就算是你编译好了,你也脱离不了servlet容器,没多大意义。 至于你说的,发布前要把js minify,请问用mvn怎么做? 这根本就不叫事儿。maven搭配NPM和最热的vue前端框架整合在一起搞事,也不算啥事。Java开发的系统和工具,如果连这点扩展性都不到,还配叫Java么,Java还配稳坐编程语言老大的位置么。。你说的东西maven当然支持啦!,看示例配置: <!-- yuicompressor --> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>yuicompressor-maven-plugin</artifactId> <version>1.3.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>compress</goal> </goals> <configuration> <includes> <include>js/*.js</include> <include>css/*.css</include> <include>activity/**/*.css</include> </includes> <excludes> <exclude>**/*.min.js</exclude> <exclude>**/*-min.js</exclude> </excludes> <encoding>utf8</encoding> <failOnWarning>false</failOnWarning> <nosuffix>true</nosuffix> <force>true</force> <removeIncluded>true</removeIncluded> <linebreakpos>-1</linebreakpos> </configuration> </execution> </executions> </plugin> ant转maven不是分分钟的事情么,这种事情我干的不少,传统的没有任何包管理的全扔lib下的项目,200多个jar,我一天时间就能搞定。maven和某个号称最好的语言的包管理不同,maven对代码没有任何侵入性,代码一行改动都不需要,唯一需要的就是目录结构做轻微调整(甚至不调整也可以)。不存在你说的什么“重写”,真正的0侵入,反正就是不涉及任何代码修改,只需要配置下maven的POM而已。 maven本来就支持自定义目录结构啥的,只不过约定在先,你要不按你约定来也可以啊。 <build> <sourceDirectory>${basedir}/src/main/java</sourceDirectory> <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory> <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory> <outputDirectory>${basedir}/target/classes</outputDirectory> <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory> ... </build> 如果系统中有很多jar已经招不到maven坐标了,自己给它安一个坐标,上传到私服就能搞定。我在12年之前写的Java代码都是传统方式,没有任何依赖管理。12年后,老项目转maven,轻轻松松毫无障碍。######无论js minify还是jsp编译成class,我都是举例子而已,真正想问的是mvn对编译流程的支持,除了写插件还有哪些?当然你说mvn可以嵌入ant,那我现在ant一套流程都下来了,只是没有mvn那么多功能,感觉没必要换。######你刻意没谈jsp编译成class,证明你不熟,你熟悉js minify,所以给了个插件的例子。我可不可以理解成mvn自定义编译流程必须学怎么写mvn插件?没法像Ant一样把编译流程也可以xml脚本化?######先不看具体内容,补充一下,我说的重写是重写build不是项目,现在项目用ivy管理依赖,并非放到lib什么的###### 要使用Maven最好还是搭建一个Nexus   这样也是为了长远考虑 当然增加dependency的时候也容易些  jsp编译class 这个问题  我感觉你对于JSP 以及 Servlet的生命周期理解的有问题  Maven管理子模块什么的  还是很方便的吧  无非就是多加一些 ######回复 @ManderSY : 我只是拿jsp做个例子而已,而且你这样回答算是逃避问题。如果你改的不是jsp而是controller呢?重启项目发布这个问题我不太想发散开来讨论。总之就是有办法自动化实现平滑重启发布。如果你纠结jsp,那我说个别的方便你理解,发布前要把js minify,请问用mvn怎么做?######回复 @乌龟壳 : 可以接受完全重写的话 完全可以采取前后端分离来做 就没这些问题了######回复 @乌龟壳 : 我个人觉着差别还是很大的 重启服务的成本 以及风险明显比那个高很多######回复 @ManderSY : 而且我只是拿jsp举例方便理解而已。项目的模板引擎不是jsp,而且要打包js那些东西,要干的事情很多。######回复 @ManderSY : 对于一个上线要走流程的环境,预编译jsp只能说影响不大。###### maven的哲学是Convention over Configuration ,建议还是按照maven的标准来,不然还不如就继续用ant,这样的成本还低一些######它的标准要遵守可以,但始终问题要解决,预编译jsp只是我抽象出来方便大家理解的场景而已,实际要做的是真正不预编译跑不起来的功能。###### @南湖船老大 ###### @南湖船老大 我想再明确地说一下场景,不是具体的jsp编译成class什么的,比如我手头上有一个自己开发的模板引擎,我需要 第一步把模板引擎编译出来 第二步用这个编译出来的模板引擎编译*.tmpl文件成java 第三步把java编译成class打包成jar 第四部把jar放到最终的目录 我想咨询的是,类似这些需要自定义化的逻辑,mvn大概是怎样支持的,我只需要一些关键字就好了。比如mvn是否支持直接调用jar,是否可以像ant一样配置一些简单的逻辑等。###### 引用来自“乌龟壳”的评论 @南湖船老大 我想再明确地说一下场景,不是具体的jsp编译成class什么的,比如我手头上有一个自己开发的模板引擎,我需要 第一步把模板引擎编译出来 第二步用这个编译出来的模板引擎编译*.tmpl文件成java 第三步把java编译成class打包成jar 第四部把jar放到最终的目录 我想咨询的是,类似这些需要自定义化的逻辑,mvn大概是怎样支持的,我只需要一些关键字就好了。比如mvn是否支持直接调用jar,是否可以像ant一样配置一些简单的逻辑等。 当然不是问题啦,maven是Java写的,当然有插件机制啦。写个maven插件又不复杂,套路都在那了###### @南湖船老大 通过你的举例,我特意看了mvn的plugin开发的文档,发现maven对自己的定义是 "Maven" is really just a core framework for a collection of Maven Plugins. 所以我想难怪各种自定义逻辑的工具在mvn文档里找不到,原来本来就是要开发的。 看来要考虑下是否值得把Ant那套编译逻辑用mvn插件的方式重构出来,这样就能用上mvn了。 说真的Ant和Ivy太老了,很多东西实现得不好,不知道maven怎样。 谢谢。######回复 @南湖船老大 : 好的######回复 @乌龟壳 : nexus,jfrog都可以的,都有web界面,很方便管理(主要是配置权限和代理仓库地址)。一次配置后后面就不用再管了######回复 @南湖船老大 : 就是你说的私有repo啊,mvn私源,公司内项目间共享的源,不能开放出去的######回复 @乌龟壳 : 不太理解你这个需求是什么###### @南湖船老大 对了,你知不知道maven是否有只需要http/ftp和文件目录结构就能部署出来的repo,我不需要web界面去管理,手工即可。

montos 2020-06-01 09:50:12 0 浏览量 回答数 0

问题

MaxCompute百问集锦

yq传送门 2019-12-01 20:16:47 2404 浏览量 回答数 1

问题

荆门开诊断证明-scc

游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

回答

前言 这期我想写很久了,但是因为时间的原因一直拖到了现在,我以为一两天就写完了,结果从构思到整理资料,再到写出来用了差不多一周的时间吧。 你们也知道丙丙一直都是创作鬼才来的,所以我肯定不会一本正经的写,我想了好几个切入点,最后决定用一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料,暖男石锤啊,这期是呕心沥血之作,不要白嫖了。 正文 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你,傻瓜,肤浅。 我们可不能闭门造车,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,丙丙现在也是偶尔会开发一下我们的管理系统主要是VUE和React。 在这里我列举了我目前觉得比较简单和我们后端可以了解的技术栈,都是比较基础的。 作为一名后端了解部分前端知识还是很有必要的,在以后开发的时候,公司有前端那能帮助你前后端联调更顺畅,如果没前端你自己也能顶一下简单的页面。 HTML、CSS、JS、Ajax我觉得是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的,其他作为扩展有兴趣可以了解,反正入门简单,只是精通很难很难。 在这一层不光有这些还有Http协议和Servlet,request、response、cookie、session这些也会伴随你整个技术生涯,理解他们对后面的你肯定有不少好处。 Tip:我这里最后删除了JSP相关的技术,我个人觉得没必要学了,很多公司除了老项目之外,新项目都不会使用那些技术了。 前端在我看来比后端难,技术迭代比较快,知识好像也没特定的体系,所以面试大厂的前端很多朋友都说难,不是技术多难,而是知识多且复杂,找不到一个完整的体系,相比之下后端明朗很多,我后面就开始讲后端了。 网关层: 互联网发展到现在,涌现了很多互联网公司,技术更新迭代了很多个版本,从早期的单机时代,到现在超大规模的互联网时代,几亿人参与的春运,几千亿成交规模的双十一,无数互联网前辈的造就了现在互联网的辉煌。 微服务,分布式,负载均衡等我们经常提到的这些名词都是这些技术在场景背后支撑。 单机顶不住,我们就多找点服务器,但是怎么将流量均匀的打到这些服务器上呢? 负载均衡,LVS 我们机器都是IP访问的,那怎么通过我们申请的域名去请求到服务器呢? DNS 大家刷的抖音,B站,快手等等视频服务商,是怎么保证同时为全国的用户提供快速的体验? CDN 我们这么多系统和服务,还有这么多中间件的调度怎么去管理调度等等? zk 这么多的服务器,怎么对外统一访问呢,就可能需要知道反向代理的服务器。 Nginx 这一层做了反向负载、服务路由、服务治理、流量管理、安全隔离、服务容错等等都做了,大家公司的内外网隔离也是这一层做的。 我之前还接触过一些比较有意思的项目,所有对外的接口都是加密的,几十个服务会经过网关解密,找到真的路由再去请求。 这一层的知识点其实也不少,你往后面学会发现分布式事务,分布式锁,还有很多中间件都离不开zk这一层,我们继续往下看。 服务层: 这一层有点东西了,算是整个框架的核心,如果你跟我帅丙一样以后都是从事后端开发的话,我们基本上整个技术生涯,大部分时间都在跟这一层的技术栈打交道了,各种琳琅满目的中间件,计算机基础知识,Linux操作,算法数据结构,架构框架,研发工具等等。 我想在看这个文章的各位,计算机基础肯定都是学过的吧,如果大学的时候没好好学,我觉得还是有必要再看看的。 为什么我们网页能保证安全可靠的传输,你可能会了解到HTTP,TCP协议,什么三次握手,四次挥手。 还有进程、线程、协程,什么内存屏障,指令乱序,分支预测,CPU亲和性等等,在之后的编程生涯,如果你能掌握这些东西,会让你在遇到很多问题的时候瞬间get到点,而不是像个无头苍蝇一样乱撞(然而丙丙还做得不够)。 了解这些计算机知识后,你就需要接触编程语言了,大学的C语言基础会让你学什么语言入门都会快点,我选择了面向对象的JAVA,但是也不知道为啥现在还没对象。 JAVA的基础也一样重要,面向对象(包括类、对象、方法、继承、封装、抽象、 多态、消息解析等),常见API,数据结构,集合框架,设计模式(包括创建型、结构型、行为型),多线程和并发,I/O流,Stream,网络编程你都需要了解。 代码会写了,你就要开始学习一些能帮助你把系统变得更加规范的框架,SSM可以会让你的开发更加便捷,结构层次更加分明。 写代码的时候你会发现你大学用的Eclipse在公司看不到了,你跟大家一样去用了IDEA,第一天这是什么玩意,一周后,真香,但是这玩意收费有点贵,那免费的VSCode真的就是不错的选择了。 代码写的时候你会接触代码的仓库管理工具maven、Gradle,提交代码的时候会去写项目版本管理工具Git。 代码提交之后,发布之后你会发现很多东西需要自己去服务器亲自排查,那Linux的知识点就可以在里面灵活运用了,查看进程,查看文件,各种Vim操作等等。 系统的优化很多地方没优化的空间了,你可能会尝试从算法,或者优化数据结构去优化,你看到了HashMap的源码,想去了解红黑树,然后在算法网上看到了二叉树搜索树和各种常见的算法问题,刷多了,你也能总结出精华所在,什么贪心,分治,动态规划等。 这么多个服务,你发现HTTP请求已经开始有点不满足你的需求了,你想开发更便捷,像访问本地服务一样访问远程服务,所以我们去了解了Dubbo,Spring cloud。 了解Dubbo的过程中,你发现了RPC的精华所在,所以你去接触到了高性能的NIO框架,Netty。 代码写好了,服务也能通信了,但是你发现你的代码链路好长,都耦合在一起了,所以你接触了消息队列,这种异步的处理方式,真香。 他还可以帮你在突发流量的时候用队列做缓冲,但是你发现分布式的情况,事务就不好管理了,你就了解到了分布式事务,什么两段式,三段式,TCC,XA,阿里云的全局事务服务GTS等等。 分布式事务的时候你会想去了解RocketMQ,因为他自带了分布式事务的解决方案,大数据的场景你又看到了Kafka。 我上面提到过zk,像Dubbo、Kafka等中间件都是用它做注册中心的,所以很多技术栈最后都组成了一个知识体系,你先了解了体系中的每一员,你才能把它们联系起来。 服务的交互都从进程内通信变成了远程通信,所以性能必然会受到一些影响。 此外由于很多不确定性的因素,例如网络拥塞、Server 端服务器宕机、挖掘机铲断机房光纤等等,需要许多额外的功能和措施才能保证微服务流畅稳定的工作。 **Spring Cloud **中就有 Hystrix 熔断器、Ribbon客户端负载均衡器、Eureka注册中心等等都是用来解决这些问题的微服务组件。 你感觉学习得差不多了,你发现各大论坛博客出现了一些前沿技术,比如容器化,你可能就会去了解容器化的知识,像**Docker,Kubernetes(K8s)**等。 微服务之所以能够快速发展,很重要的一个原因就是:容器化技术的发展和容器管理系统的成熟。 这一层的东西呢其实远远不止这些的,我不过多赘述,写多了像个劝退师一样,但是大家也不用慌,大部分的技术都是慢慢接触了,工作中慢慢去了解,去深入的。 好啦我们继续沿着图往下看,那再往下是啥呢? 数据层: 数据库可能是整个系统中最值钱的部分了,在我码文字的前一天,刚好发生了微盟程序员删库跑路的操作,删库跑路其实是我们在网上最常用的笑话,没想到还是照进了现实。 这里也提一点点吧,36小时的故障,其实在互联网公司应该是个笑话了吧,权限控制没做好类似rm -rf 、fdisk、drop等等这样的高危命令是可以实时拦截掉的,备份,全量备份,增量备份,延迟备份,异地容灾全部都考虑一下应该也不至于这样,一家上市公司还是有点点不应该。 数据库基本的事务隔离级别,索引,SQL,主被同步,读写分离等都可能是你学的时候要了解到的。 上面我们提到了安全,不要把鸡蛋放一个篮子的道理大家应该都知道,那分库的意义就很明显了,然后你会发现时间久了表的数据大了,就会想到去接触分表,什么TDDL、Sharding-JDBC、DRDS这些插件都会接触到。 你发现流量大的时候,或者热点数据打到数据库还是有点顶不住,压力太大了,那非关系型数据库就进场了,Redis当然是首选,但是MongoDB、memcache也有各自的应用场景。 Redis使用后,真香,真快,但是你会开始担心最开始提到的安全问题,这玩意快是因为在内存中操作,那断点了数据丢了怎么办?你就开始阅读官方文档,了解RDB,AOF这些持久化机制,线上用的时候还会遇到缓存雪崩击穿、穿透等等问题。 单机不满足你就用了,他的集群模式,用了集群可能也担心集群的健康状态,所以就得去了解哨兵,他的主从同步,时间久了Key多了,就得了解内存淘汰机制…… 他的大容量存储有问题,你可能需要去了解Pika…. 其实远远没完,每个的点我都点到为止,但是其实要深究每个点都要学很久,我们接着往下看。 实时/离线/大数据 等你把几种关系型非关系型数据库的知识点,整理清楚后,你会发现数据还是大啊,而且数据的场景越来越多多样化了,那大数据的各种中间件你就得了解了。 你会发现很多场景,不需要实时的数据,比如你查你的支付宝去年的,上个月的账单,这些都是不会变化的数据,没必要实时,那你可能会接触像ODPS这样的中间件去做数据的离线分析。 然后你可能会接触Hadoop系列相关的东西,比如于Hadoop(HDFS)的一个数据仓库工具Hive,是建立在 Hadoop 文件系统之上的分布式面向列的数据库HBase 。 写多的场景,适合做一些简单查询,用他们又有点大材小用,那Cassandra就再合适不过了。 离线的数据分析没办法满足一些实时的常见,类似风控,那Flink你也得略知一二,他的窗口思想还是很有意思。 数据接触完了,计算引擎Spark你是不是也不能放过…… 搜索引擎: 传统关系型数据库和NoSQL非关系型数据都没办法解决一些问题,比如我们在百度,淘宝搜索东西的时候,往往都是几个关键字在一起一起搜索东西的,在数据库除非把几次的结果做交集,不然很难去实现。 那全文检索引擎就诞生了,解决了搜索的问题,你得思考怎么把数据库的东西实时同步到ES中去,那你可能会思考到logstash去定时跑脚本同步,又或者去接触伪装成一台MySQL从服务的Canal,他会去订阅MySQL主服务的binlog,然后自己解析了去操作Es中的数据。 这些都搞定了,那可视化的后台查询又怎么解决呢?Kibana,他他是一个可视化的平台,甚至对Es集群的健康管理都做了可视化,很多公司的日志查询系统都是用它做的。 学习路线 看了这么久你是不是发现,帅丙只是一直在介绍每个层级的技术栈,并没说到具体的一个路线,那是因为我想让大家先有个认知或者说是扫盲吧,我一样用脑图的方式汇总一下吧,如果图片被平台二压了。 资料/学习网站 Tip:本来这一栏有很多我准备的资料的,但是都是外链,或者不合适的分享方式,博客的运营小姐姐提醒了我,所以大家去公众号回复【路线】好了。 絮叨 如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。 如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。 丙丙发现在工作中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独(周末的歪哥)。 总结 我提到的技术栈你想全部了解,我觉得初步了解可能几个月就够了,这里的了解仅限于你知道它,知道他是干嘛的,知道怎么去使用它,并不是说深入了解他的底层原理,了解他的常见问题,熟悉问题的解决方案等等。 你想做到后者,基本上只能靠时间上的日积月累,或者不断的去尝试积累经验,也没什么速成的东西,欲速则不达大家也是知道的。 技术这条路,说实话很枯燥,很辛苦,但是待遇也会高于其他一些基础岗位。 所实话我大学学这个就是为了兴趣,我从小对电子,对计算机都比较热爱,但是现在打磨得,现在就是为了钱吧,是不是很现实?若家境殷实,谁愿颠沛流离。 但是至少丙丙因为做软件,改变了家庭的窘境,自己日子也向小康一步步迈过去。 说做程序员改变了我和我家人的一生可能夸张了,但是我总有一种下班辈子会因为我选择走这条路而改变的错觉。 我是敖丙,一个在互联网苟且偷生的工具人。 创作不易,本期硬核,不想被白嫖,各位的「三连」就是丙丙创作的最大动力,我们下次见! 本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。 该回答来自:敖丙

剑曼红尘 2020-03-06 11:35:37 0 浏览量 回答数 0

回答

金山毒霸+金山卫士。######+10086######回复 @xmut : 是的。金山的软件,装了瑞星防火墙的话,可以看到联网进程N个。当然,瑞星防火墙也不靠谱。免费后更是弹窗、弹游戏窗都来了,甚至很多时候都不拦程序。WPS就处理文字是不错,没用的联网进程真的不爽。######装个WPS默认安装金山快盘、金山卫士一家子,你要比谁更流氓吗?###### 引用来自“归海一刀”的答案 哎,主要是电脑老婆用得多,不像你我都是搞技术的,知道如何去优化电脑、防范病毒。其实,电脑小白是相当多的,如果人人都是做电脑技术出身的就好了。 我用的TX电脑管家一样有这玩意儿。既然你说是技术出身,那你也应该知道,只要内存里有不是你自己写的程序都不安全。你就不怕浏览器收集你的帐号密码?那把浏览器抵制了吧。然后你就不怕操作系统收集你密码?那就洗洗睡吧。虽然我从来不用360的任何软件,但是你这文章,也有些哗众取宠了。 ######+10086######确实有点这意思###### 你要是觉得它不靠谱,干啥要装它 裸奔多年一点事都没有 ######回复 @纵使有花兼明月何堪无酒亦无人 : 有王里######可能黑客一直帮你在杀毒。######也有另外一种可能:你早成为别人的肉鸡,别人在你的电脑上同样裸奔多年一点事也没有,这种事很常见######哎,主要是电脑老婆用得多,不像你我都是搞技术的,知道如何去优化电脑、防范病毒。其实,电脑小白是相当多的,如果人人都是做电脑技术出身的就好了。######国内的大部分软件都会对你电脑硬盘文件进行扫描。别说腾讯就不弹,一会弹拍拍,一会弹会员,一会弹QQ秀,百度就干净?一个竞价排名就能恶心死你,金山杀毒?come on...国内环境如此,商业竞争就是这么残酷,一个村长就能让你残废,还谈什么软件弹窗口..哎 偏激了点国内无干净软件,更无“干净”公司,一旦利益牵扯面过大,你想干净?很难。######回复 @ssn6 : 说得好!顶一下!######一边指责别人的免费软件强奸你,一边又主动去抱360大腿,什么你保护不了自己的老婆你老婆需要的是360, 你自己要用一边用一边骂?一个免费软件还不能在自己的平台推广自己的产品?你请了一个管家看家又整天疑神疑鬼怀疑管家偷你东西?360要你的银行账号有毛用,从你后面夸张的贬低360的回复,你根本就是一个360黑!###### 引用来自“归海一刀”的答案 哎,主要是电脑老婆用得多,不像你我都是搞技术的,知道如何去优化电脑、防范病毒。其实,电脑小白是相当多的,如果人人都是做电脑技术出身的就好了。 目前360的用户量已经锐减一半了, 你纵观整个互联网, 哪家网站会报360的软件更新消息? pcbeta 肯定第一封锁360, cnbeta 那更不用说. 太平洋电脑, 最好在上面不要提360, 否则被喷死. 天空下载, 也仅仅是放了个链接, 不在推荐之列. .......................... 当整个互联网都封杀360时, 流氓也就可以洗洗睡了. ######回复 @ssn6 : 世界上只有两种网站;世界上只有两种软件。。。。######360用户锐减一半的数据来自哪里?GFW还封锁呢,等于中国的人口也一下子就锐减一半?而且你列的这几个网站早就要死不断气了,原来的天空下载早就关了,现在的内容全面抄袭360软件宝库的内容,无非都是做不过360只好羡慕嫉妒恨搞封锁。国人就这样见不得别人好,越成功骂的人、贬低他的人就越多。######回复 @铂金小猪 : +1######这四个网站,除了第三个会偶尔上一下。其他都不上。###### 我也没装。真想不通你不放心干嘛还要安装。 记得N年前的时候,各大报刊评杀软的时候,除了杀毒效果,总是会提到占用内存的问题。而现在中国貌似不提杀毒效果(貌似选择杀软的时候没人会关心国外那个杀软测评,以及考虑360和tx、金山杀毒、防御效果哪个好),也不提占用内存,只关心几个人在用(使用量),好用不好用。 关于好用不好用,很难理解结论是怎么得出来的。装了360上网银安全,不装就不安全(或者没其他防御软件了?比如小红伞、MSE)?开机就报开机花费几秒钟很人性化? ######回复 @ssn6 : 这都是产品给用户惯得,记得之前看过一个比喻,说一个乞丐去一个人家要饭,年轻人给了他10块钱,后来乞丐每次去年轻人都给他10块钱,后来年轻人结婚了,乞丐又去要饭,年轻人给了他5块钱,乞丐问他为什么这次给5块,年轻人说我娶老婆啦,那五块钱给我老婆省下了,乞丐抽了年轻人一巴掌,说,你把本该属于我的钱给了你老婆。。。。我觉得这个故事就是在说360和如今的用户。。。######记得N年前的时候?N年前没有360的时候,杀毒软件还是老贵老贵的,自从有了360,杀毒软件不再要钱了,穷逼屌丝们也都可以一边用一边骂,不要钱可以免费装逼而已。######回复 @mark35 : U盾还只是天朝的发明产物,这个他们还真可以说是自主研发。别人没有的问题,我们有了,并且我们搞了一个根本不靠谱的方法出来解决,貌似很牛叉的样子。######回复 @地鼠特工队 : 国外网银没见谁必须要装插件的######是啊,国外网银都生活在水深火热之中。我现在生活用MAC,工作用Linux。Windows都是虚拟机的宠物,完全祼奔。######用linux######chrome + adblock plus,清净######禁止插件,妥妥的。###### IE11 + QQ电脑管家 管家重点不是安全工作, 而是给QQ升等级, 你懂的. 其次, 退一万步, 腾讯的道德品格还是给人一种放心. ######回复 @我不叫大脸猫 : 腾讯本来就有QQ医生。公司做大了,谁不想做自己的安全呢?明明是数字出了什么扣扣保镖,还诱惑别人把QQ好友备份到他的服务器,他是什么想法?######+1 腾讯系,还有腾讯的openid也挺方便,不用到处注册######回复 @William : 基本上都是TX软件, QQ音乐, QQ游戏, QQ管家, QQ五笔, QQ浏览器.######+1 反正要用QQ, 索性我也全部TX系, QQ管家, QQ输入法. QQ播放器...######跟tx谈道德啊……另外,你太虚荣了,装个QQ管家是为了升级。 我表示我会装360,但是不是开机启动,也不常用。为了表示支持下360,是360把互联网的一些市场格局打乱了……

kun坤 2020-06-08 11:28:08 0 浏览量 回答数 0

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 34170 浏览量 回答数 10

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播