首页 文章 精选 留言 我的

精选列表

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

追踪与合包,跨境物流系统的两道必答题

2026年夏天,红海航线的异常波动把跨境物流的脆弱性摊开了给人看。一艘叫Sea Majesty的油轮申报目的港为埃及艾因苏赫纳,实际却在沙特延布港装油,AIS信号关闭,靠吃水数据才被识破。这类绕过常规航道的操作,让原本经曼德海峡19天的航程,绕行好望角后拉长到48天。运费与时效双双失控,最终传导到终端消费者身上。跨境物流系统的选型,绕不开两个问题:货在哪,怎么合。

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

✊ Servlet 服务器国产化,道阻且长,行则将至!

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 容器。与此同时,smart-servlet 还是一款插件化容器,基于内置的沙箱环境确保 smart-servlet 拥有最精简的运行能力,用户还可以通过自定义插件扩展容器的服务能力。 一、架构设计 smart-servlet 在 smart-http 的基础之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。 产品特色 国产血统:核心技术 100% 全栈自研。 性能优越:搭载最新版通信微内核 smart-socket。 安全可靠:严格遵循协议规范;支持加密传输方式。 简洁易用:支持 War 包、springboot、maven-plugin等多种运行模式,使用体验100%兼容 Tomcat。 二、更新内容 【新特性】实现 servlet 3.1 的文件上传规范。 【新特性】实现 HttpServletRequest#getRemoteUser 接口规范。 【新特性】新增War包解压工具。 【优化】开辟三方依赖存放package,现已集成:bcel、commons-fileupload、commons-io。 【优化】Http响应报文头Server显示:smart-servlet 【优化】临时文件存放于系统参数 java.io.tmpdir 指定的路径。 【优化】springboot starter模块禁用 debug 模式。 三、快速上手 我们提供了三种方式启用 smart-servlet,您可根据实际情况选择其中适用的一种。 方式一:maven 插件 这是一种类似:tomcat-maven-plugin的使用方式,通常应用于 Java Web 工程的本地开发环境。 集成该插件只需在 pom.xml 中加入以下代码,便可以在 IDE 中启动 servlet 服务。 <build> <plugins> <plugin> <groupId>org.smartboot.servlet</groupId> <artifactId>smart-servlet-maven-plugin</artifactId> <version>0.1.9</version><!--最新版本 --> <configuration> <port>8080</port> <path>/portal</path> </configuration> </plugin> </plugins> </build> 插件的版本建议采用最新版本,另外主要的配置项包括: port:servlet服务启动的监听端口 path:Servlet容器上下文路径,即 ContextPath,通常以/表示。当然也支持自定义,但必须以/开头 完成配置后在控制台输入:mvn package smart-servlet:run即可。 方式二:smart-servlet-spring-boot-starter 用过 springboot 的 spring-boot-starter-tomcat 或者 spring-boot-starter-undertow 的朋友应该对此不陌生。 smart-servlet-spring-boot-starter 本质上就是 smart-servlet 对 spring-boot-starter-web 的另一种适配。 只需按照以下方式调整 springboot 工程中 pom.xml 文件的配置,便可将 springboot 的默认 Servlet 容器替换成 smart-servlet。 <dependencys> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- Exclude the Tomcat dependency --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- Use smart-servlet instead --> <dependency> <groupId>org.smartboot.servlet</groupId> <artifactId>smart-servlet-spring-boot-starter</artifactId> <version>0.1.9</version><!--最新版本 --> </dependency> </dependencys> 方式三:发行包 发行包适用于 War 包的部署方式,也是生产环境中常用的一种形式。 下载地址:https://gitee.com/smartboot/smart-servlet/releases 四、最后 smart-servlet 已经实现了比较常用的 Servlet 规范,绝大多数应用都可以无缝移植过来。有些细节部分也在持续完善,当下我们已经部署了两个应用运行在 smart-servlet 之上进行全网公测,欢迎广大社区用户前来体验。 文档地址:https://smartboot.gitee.io/smart-servlet/ 仓库地址:https://gitee.com/smartboot/smart-servlet

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

以“术”彰“道”,用匠心做技术—对话阿里云 MVP刘洪峰

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 一直以来,我们印象里的刘洪峰都是那个热衷布道的物联网老兵“刘老师”。可你是否知道,除了醉心技术以外,他还在艺术方面颇有造诣?今天,我们带你认识不一样的刘洪峰。 以下为刘洪峰的个人专访,推荐阅读(约4分钟)。 曲线救国,每一天都在接近梦想 最初做技术,其实来自我关于机器人的梦想。我们那个年代的孩子,大多数从小都想做个科学家,只不过我一路坚持了下来。从零开始太难了,不过我一直在一步步积淀基础。从一开始做软件开发,工控实施,再到后来的嵌入式开发,硬件设计,直到现在的Web开发、安卓开发等等,所以从物联网从业角度来看,我技术生涯的进阶其实还是比较平滑的。后来就已经不单单是为了做机器人而做机器人了,而是在实现这个梦想的过程中,对技术有了更深的理解,可以说深入到“骨子里”的一种理解。 现在大家都主张技术型公司需要由具备一定技术水准的人来领导,因为如果不懂很多流程和细节,其实是无法真正驾驭整个公司未来发展走向的。做一个机器人需要全方位的技能、海量的知识,我也一直向这个方向努力,比如机器人之“脑”—深度学习技能的研究和了解,比如机器人之“体”—“阿特拉斯”等类人形机器机械结构和运动技能的学习和研究,还有诸如机器人之“感”—各种“视觉”、“听觉”和“视觉”等相关传感器的评测和使用。其实现在市面上已经有了很多各种各样的机器人,像是办公机器人或者家政机器人,但我心目中的“机器人”和当前的这类还是有些区别的,也许是属于未来的那种机器人。 多年以来,我一直在积累美术、心理学、机械学等相关知识,希望自己有能力,尽量从零开始,从最初的创意、整体规划,到硬件PCB绘制、软件开发甚至外壳设计一条龙的去实现一个产品。希望在未来机器人技术发展到一定程度后,在我自身软实力的加持下,在其他各种技术平台和技术产品的支撑下,做出带有自己鲜明特质烙印的机器人。 放慢节奏,匠心出品 中国的传统文化,其实一直是“慢”文化,改革开放几十年,很多人享受了各种“红利”,快速实现了财富自由和成功,便以为“快”才是成功的秘诀,其实那只是一时的幸运而已,并且是一将功成万骨枯式的成功,一个个体的成功或一个企业的成功,建立在很多人和很多公司失败之上的。物联网是一个“慢热型”的产业,记得吴晓波在今年年终演讲中说,“2020 年中国会进入硬核创新的慢时代,我们要相信慢的力量。”是的,互联网相信「快」,天下武功,唯快不破,可是到了物联网,有了硬件实体,不再是简单的依赖流量,而需要依赖产品本身,想快,其实真快不起来。 事业、人生,概莫如此。 从业多年来,当前实施的智慧养殖项目是我印象最深的,环境偏远且脏乱,但我们一做就做了四年多,感觉这里面有让人和公司成长的机会。其实真正让一个相对复杂的、智能类的系统落地是不容易的,特别是在低价格、大批量的情况下,长期保证稳定可靠性很难。不仅仅需要个人和公司、甚至行业的努力,是需要整个社会、整个技术和行业生态的共同努力,才能真正去做好。我们一个合作伙伴50多岁了,依然坚持跟现场、做实验,曾因为爬梯子摔坏了腿,后来拄着拐来跟我谈进展。其实就是需要这类行业专家深入一线,不怕苦不怕累,长期坚持,才真正能做成事。 我个人很喜欢中国古典书籍,传统文化给我最大的影响就是相信时间的力量,要用“工匠之心”去做事。除了读书,平时我会挤出时间做一些琐碎的手工活,比如画肖像画、搭复杂的乐高积木,或者DIY各种精致的小房子。这些一做十多天的活计,一是用来磨练心性,二是用来减压,三是也可以提高自己内心深处的一些认知。 回归初心,成为你想成为的样子 现在年轻人的焦虑心态有些被过度放大了,每个人都总想走捷径快速成功,社交媒体的发达,让没有对比就没有伤害成为血淋淋的现实,大家一对比,难免心态失衡。我有时候也很怀疑我这样的坚持和努力是不是对的,是不是很傻的一种人生选择?不过也许受中国传统文化和一些西方典籍的影响,每到这个时候,我总问自己:最喜欢做的是什么?最想过的生活是什么样子?大家经常提要回归“初心”,其实这个初心,就是你最想要的,是你想成为的样子。如果被误导随了大流,我们都免不了“最终我们都活成了我们最讨厌的样子”。每想到这里,我的心就会渐渐平静下来,去做我一直认为对的事情了。 在这里给物联网从业人员支三招: 一招炼气,多关注一些物联网云平台,比如阿里物联网平台,未来做物联网这么繁杂的事,肯定是基于一个平台来做的。两招筑基,多关注一些嵌入式物联网系统,比如AliOS Things等等。同理,嵌入式物联网平台,天生就可以上对接物联网云平台,下连接各种传感器,基于一个嵌入式物联网系统学习,可以更快速,更系统的掌握物联网相关知识。三招化神,尝试学习一些AI相关的知识。有一个调查说,没有AI加持的物联网技术,是没有前景的技术。用AI技术去完善各种物联网场景。 对“嵌入式工程师”,还要加上以下两点:最起码的一点,要有耐心。因为硬件开发投入在调试上的时间还是非常多的,需要分析的事也很多,没有耐心很难做得深入。另外就是最好要非常熟练地掌握C/C++,这是一切的基础。 他可以很快,杭州在湖边“吐槽大会”上,两天时间就由内而外打破自我桎梏,接纳新思维;他也可以很慢,愿意用二十年的时间去接近自己的梦想。他是阿里云 MVP普惠精神的使者,以匠人之心,成就物联网的艺术品。 我要成为阿里云 MVP 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/live 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

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

醒醒吧,别瞎说八道了

乱象​ 当今数据库供应商风头正茂的,要数这三家公司,Amazon, Google, Microsoft. 没错,他们都是云计算提供者。火热的三款看家产品分别是: Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL. A厂CTO说,AWS最火的产品是什么呢?是 Aurora 数据库,它同时兼容 PostgreSQL 与 MySQL. 他还指出,Hadoop 也好,Spark, Kafka 也罢,都在极力推动 SQL 接口来让更多的服务 API 暴露给程序员。 从 A 厂产品的销量来说,企业比较青睐于这些有标准 SQL 接口的产品,而对于各类只能用编程语言,比如Java才能正常取数的产品,显得声音大,却雨点小,少有肯买帐的。 我举个 ElasticSearch 的例子,你感受下为什么 ES 的 DSL 会让人望而却步: POSTcrm_comment/_search { "size":0, “query":{ "term":{"accountName”:"apple"} }, "aggs":{ "count_over_time":{ "date_histogram":{ "field":"CREATED", "interval":"month" }, "aggs":{ "sum_of_sales":{ "sum":{"field":"salesamount"} } } } } } 当中一个括号少了,查询就运行不下去。一个 SQL, WHERE, GROUP BY 就能解决的问题,整出一堆 Json 表达式。你能看得下去? 再比如,我们存日志的 MongoDB, 它的官方语言是 javascript: 看上去,这比 ElasticSearch 好看一些,每个字段都加了一个 $ 符号,请问为什么 total 就不用加呢? 原本这些数据(搜索用的 ElasticSearch, 日志用的 MongoDB)都存在 SQL 数据库中,使用 SQL 一劳永逸的搞定所有查询。但现在呢, 要花点时间熟悉 ES 和 MongoDB 的古怪语法了,还要搞清楚,数据在流转过程中,是否有丢失。带来的复杂度不仅仅是一点点。 什么,你说程序员不就是应该 996,拼命学的嘛?这是福报。嗯,这样的福报谁爱要,谁拿去,反正我不! 历史 让我们一起回忆下SQL关系型数据库的起源。这要追溯到IBM发表关系型数据库论文的那个年代,1970年。 1970时,关系型数据计算已经非常火热了。但这种关系运算的查询,只掌握在少数天才人的手里。普通人只能看着眼馋。来,一起领略下当时的关系运算: 能看懂嘛?看懂举手,pingCAP,蚂蚁金服在召唤你! 事实证明,哪里有黑盒,那里就会产生魔法师。总有天才领袖为劳苦大众着想。Donald Chamberlin 和 Raymond Boyce 就是这样的天才!他们发明了 System R(关系型数据库原型),又在自然语言的研究方向上,发明了结构化英语查询语言(Structured English Query Lanuage, SEQUEL, 这也是为什么大家经常会把SQL读成 see-ku-er的原因), 后因商标之争,SEQUEL更名为 SQL. 那么SQL 相比上面的数学表达式有啥好处呢,感受下: 前后两个运算都是在找出薪水比自己经理还高的那些员工。前者是关系数据表达式,只有数学大师才懂的符号;后者是 SQL 表达式,任何人在1星期绝对可以掌握的技术。 后来的事情,相信只要你不是00后,应该都有所耳闻了。IBM DB2, Oracle, SQL Server, MySQL 都如雨后春笋般的出来了,有了 System R 这般的磐石,有了 SQL 这代新型武器,各自造就了兵工厂,开疆扩土。战争一直打到现在。 如果不是因为 ARPANET 这位默默在墙角自习的好青年,恐怕拉里森这位Oracle家长还要�N瑟个好多年。经过多年的沉寂修炼,ARPANET终于在我们这个时代成长成一个壮实的大小伙了。也就是今天的互联网! 来,见识下当年那一小撮默默地在加利福尼亚学习的小伙伴。 革命不成功,壮士不歇息。尽管有这么多人在兢兢业业的付出,但撼动关系型数据库的江山还远不够实力,不也到时候。直到这位哥们的出现。你看,任何历史性的转折都要依靠一位伟人来带动,说不定下一位就是你,努力吧,少年! 这位 Tim 老兄在1989年,发明了万维网,一下子把数据的洪荒世界之门给打开了。数据以前所未有的体量和速度冲了进来。此时的关系型数据库也就慢慢有了吃力和老态的迹象。 历史再一次证明, 不被人胖揍,永远不知道自己几斤几两。 怪兽冲了进来,总要有奥特曼来对付吧。没错,这时候两位英雄人物出场了,一位是 Google, 一位是 Amazon. Google 的 MapReduce(2004)和 BigTable(2006),打破了分布式计算和存储的瓶颈。这两篇论文可以在后台,回复“1024”得到。A厂在整个云计算时代都有它的份儿,闪亮的光芒甚是耀眼。它的 Dynamo 数据库,采用了键值对存储,集合了各种眼花缭乱的云计算技术,号称能保障高可用服务。 磐石有了,兵工厂就不会远了。跟 SQL 的发展很像,之后很快各个公司就有了 Hadoop, Hive, Cassandra, MongoDB也玩起了 MapR. 又是一番你追我赶的厮杀,历史是何等的相像。 而这一波厮杀,不仅仅是在堂兄弟,表兄弟之间展开,还要去抢叔叔伯伯们的地盘。这不,蚂蚁金服的OceanBase前两天还动了一下Oracle大叔的地盘,抢掉了它2010年打下的TCP-C排行榜榜首的位置。 现实 年轻人始终有着一股子血气方刚,认为凭着自己年富力强,无所畏惧就要去动大人的奶酪。打仗光靠蛮力怎么可以。它还需要致胜的最本质基础,那就是群众的支持。 每个年轻人都有自己的魅力,有自己的武器都很好,很酷。乾坤圈,金箍棒看着都炫酷。但在如来的眼里,他代表的可是天地万物,说一句代替苍生治治你,分分钟就把你给秒了。那可是群众的力量代表。 上面的 ElasticSearch, MongoDB给我们的感觉都很棒,全文搜索极快,日志存储不费劲,但要去拿起来用,你得好好的去顺顺他们的脾气,要不就给你枣子吃。就如现在很多年轻人,做事情是要哄着做,哪像那些无产阶级革命前辈,都是抢着做。 如果说 OLTP 产品,我们摸索一下 Redis, MongoDB, Kafka 也就算了,能忍就忍吧,毕竟一次投入,永久使用。但 OLAP 产品,Impala, Hive, Presto, Kylin 等都互不连通,还要整一套 ETL 来打通,这谁的脾气能好咯。我做一个报表,还要用 Spark 去每家每户报信,搞不好哪家那天脾气特别大,不待见,数据都取不出来。典型的就是 JOIN 信使,经常吃闭门羹。 当然,被群众(市场)教训过后,年轻人也开始反思。Cloudera 与 Hortonworks 就是典型代表,他俩选择联起手来一块干点事儿。推出了 SQL 级的方言,用来封装自己复杂的外表,原理就是 SQL ON Hadoop. Hadoop 负责存储,而 SQL 负责计算,存储引擎与计算引擎分离开来,拉拢了不少 SQL 群众,开始铺设广泛的群众基础。 王者归来 第一次小弟们像大佬妥协,就是推出自己的 SQL-On-Hadoop 产品。虽然嘴上说着是 Not Only SQL, 那也不过是年轻人在坚持他们最后的傲娇而已。 接着,历史又再一次重演。只要一个现象被认可,一群现象就跟风而来。H-Store, Spanner, CockroachDB. 最出众的还要数 Postgre, 在历经关系数据库,NoSQL之后,劲在旁边捡漏,好东西都往自己身上加。像 Json, FullText Search, MPP, JIT 等特性。 当然,整个历史的转变,总要有人总结陈词。NoSQL的运动者是谁?还记得嘛。没错就是 Google 的三驾马车。那么终结它也只能由Google来官宣。搬起石头砸自己的脚,疼不您咧? 看下 G 厂在2017年的 Spanner 论文中怎么说的: “While these systems provided some of the benefits of a database system, they lacked many traditional database features that application developers often rely on. A key example is a robust query language, meaning that developers had to write complex code to process and aggregate the data in their applications. As a result, we decided to turn Spanner into a full featured SQL system, with query execution tightly integrated with the other architectural features of Spanner (such as strong consistency and global replication).” The original API of Spanner provided NoSQL methods for point lookups and range scans of individual and interleaved tables. While NoSQL methods provided a simple path to launching Spanner, and continue to be useful in simple retrieval scenarios, SQL has provided significant additional value in expressing more complex data access patterns and pushing computation to the data. Spanner’s SQL engine shares a common SQL dialect, called “Standard SQL”, with several other systems at Google including internal systems such as F1 and Dremel (among others), and external systems such as BigQuery… For users within Google, this lowers the barrier of working across the systems. A developer or data analyst who writes SQL against a Spanner database can transfer their understanding of the language to Dremel without concern over subtle differences in syntax, NULL handling, etc. 那我来精简一下,“我们 Google 要从 Nosql 转到 SQL 阵营来,SQL 即将成为一切数据访问的基础,就酱”。

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

最新115道华为、京东、滴滴、美团精选Java面试题整理

京东面试题 一般sql注入怎么发现触点的,从源码阐述sqlmap如何测试注入点的。 masscan扫描端口时靠什么检测,为什么这么快? 请详述. 你写过哪些小工具,你为你使用过的工具做过什么修改. 如何提高采用python编写的扫描速度,谈谈对GIL锁的了解.5.你觉得你发现的那个漏洞影响比较大. 常见的web漏洞有哪些. 有没有玩过硬件安全,研究程度如何. 反爬虫,如果是你如何进行反爬虫,如何绕过反爬措施。使用无头浏览器被检测到了,如何绕过 nmap扫描如何进行扫描。发包与协议,握手和不握手,哪些协议握手,哪些不握手. 如何不直接接触目标服务器探测对方端口是否开放 有没有自己编写过yara扫描模块,如果要解决扫描{k1:v1, k2:v2, k3:v3} ,保证同时在k1中的v1里出现特定值,k2中出现v2特定值,以及k3,v3。怎么实现 xss什么原理,如何自己实现一个beef类似的xss平台. 既然这样实现,面临的跨域如何解决? ip 频率限制, ip信誉度模型? SCTP协议是什么?如何使用 SCTP 优化网络? 美团面试题 java虚拟机内存模型 内存溢出一般发生在哪个区?永久代会不会导致内存溢出? 动态加载类的框架了解哪些? 动态代理一般有哪几种实现方式?动态代理的应用场景有哪些?5.栈会不会溢出?栈溢出一般抛什么异常?jvm在哪里设置栈的大小?设置的参数是什么? 用过哪些命令查看jvm的状态、堆栈信息? jvm的垃圾回收机制? java类加载机制?如何实现自定义类加载器?findClass与loadClass的区别? String、StringBuffer、StringBuilder的区别?对应的使用场景? 如何实现不可变的类? 浅复制和深复制?怎样实现深复制?12.HashMap、HashTable、ConcurrentHashMap的区别? CAS是一种什么样的同步机制?14.NIO的原理,包括哪几个组件? 15.简单介绍一下java的反射机制?反射在哪些地方有应用场景? spring加载bean的流程?17.java线程池?线程池构造函数的几个参数含义?keepAliveTime解释一下? 一个接口,要去调用另外5个接口,每一个接口都会返回数据给这个调用接口,调用接口要对数据进行合并并返回给上层。这样一种场景可能用到并发包下的哪些类?你会怎么去实现这样的业务场景? CountDownLatch和CyclicBarrier的区别? 线程加锁有哪些方式?synchronized和lock的区别?21.volatile关键字的作用?为什么使用AtomicLong而不使用Long?AtomicLong的底层是怎么实现的? mysql的存储引擎有哪几种? sql优化有哪些着手点?组合索引的最左前缀原则的含义? springmvc处理请求的流程? spring的事务怎么使用?事务回滚?自定义异常? 脏读?幻读?27.tcp四次挥手的过程?TIME_WAIT为什么至少设置两倍的MSL时间? get和post请求的区别? cookie和session的请求?30.了解哪些开源的中间件?缓存?消息?分布式框架? 用到过哪些设计模式?单例模式的实现? 数据库的事务实现原理、操作过程、如何做到事物之间的独立性等问题 数据库的脏读,幻读,不可重复读出现的原因原理,解决办法 数据库的隔离级别、MVCC 乐观锁、悲观锁、互斥锁、读写锁的原理实现与区别36.线程的生命周期 一致性hash算法原理与应用 CAP原则 CAS操作 分布式raft算法欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。 滴滴面试题 1.B+树、B-树的区别? 数据库隔离级别,幻读和不可重复读的区别? 有hell, well, hello, world等字符串组,现在问能否拼接成helloworld,代码实现。 快排算法实现 线程安全的单例模式 25匹马赛跑,有一个赛场,只有五个赛道,没有计时器,只能通过目测来记录快慢,求出第三3快的马要多少场比赛? kmp算法next数组的求解思路 数组中有三个数字出现超过3/4,求这三个数字? 1到n+2个数组中缺了两个数,如何用O(n)时间,O(1)空间找到这两个数字。 一条线段长为1,随机选两个点,将改线段分为三段,三段能成三角形的概率是多少? 有一个教授,他三个学生,脑袋背后分别各写了一个数字,其中一个数字是另外两个数字的和,经过几轮后,有一个学生猜出了自己的数字请问是什么原因? B+树做索引时,B+树通常高度为多少层?要参考哪些条件? 华为面试题 static有什么用途?(请至少说明两种)2.引用与指针有什么区别? 3.描述实时系统的基本特性 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?5.什么是平衡二叉树? 6.堆栈溢出一般是由什么原因导致的? 什么函数不能声明为虚函数? 冒泡排序算法的时间复杂度是什么?9.写出float x 与“零值”比较的if语句 Internet采用哪种网络协议?该协议的主要层次结构?11.Internet物理地址和IP地址转换采用什么协议? IP地址的编码分为哪俩部分? 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 不能做switch()的参数类型是 int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。 写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数17.实现一个函数,把一个字符串中的字符从小写转为大写 18.随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数19.求2~2000的所有素数.有足够的内存,要求尽量快 A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。 将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次。 将二叉树的两个孩子换位置,即左变右,右变左。不能用递规。 以下属于物理层的设备是? 在以太网中,是根据()地址来区分不同的设备的?25.以下为传输层协议的是? 26.以下对MAC地址描述正确的是?27.以下属于数据链路层功能的是?28.IEEE802.3u标准是指?29.如果要将两计算机通过双绞线直接连接,正确的线序是?30.在V.35和V.24规程中,控制信号RTS表示?31.路由器作为网络互连设备,必须具备以下哪些特点?32.路由器的作用有?33.调用上一条历史命令的快捷键是?34.交换机工作在OSI七层的哪一层?35.以下对CSMA/CD描述正确的是?36.以下对STORE ANDFORWARD描述正确的是?37.以下对交换机工作方式描述正确的是?38.VLAN的主要作用有?39.在交换机中用户权限分为几个级别?40.在路由器的配置过程中查询以S开头所有命令的方法是?41.第一次配置路由器时可以使用的方法为?42.在何种状态下可以为路由器改名?43.某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26台计算机,每个子公司在一个网段中,则子网掩码应设为?44.与10.110.12.29mask 255.255.255.224属于同一网段的主机IP地址是?45.ARP协议的作用是?46.当路由器接收的IP报文的TTL值等于1时,采取的策略是?47.在NetWare 网络中,客户需要访问某个类型的服务器时,首先要发送一个 ()广播报文来寻找服务器?48.IPX地址网络地址有( )个字节?49.对于帧中继描述正确的是?50.对于INVERSE ARP的描述正确的是? 最后 欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

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

105道BAT最新Java面试题(MySQL+Redis+nginx+ookeeper+MongoDB)

MySQL面试题 主键 超键 候选键 外键2.数据库事务的四个特性及含义 视图的作用,视图可以更改么? drop,delete与truncate的区别 索引的工作原理及其种类 连接的种类 数据库范式 数据库优化的思路 存储过程与触发器的区别 Redis面试题 使用Redis有哪些好处? redis相比memcached有哪些优势? redis常见性能问题和解决方案4.MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据 5.Memcache与Redis的区别都有哪些? Redis 常见的性能问题都有哪些?如何解决? redis 最适合的场景 Redis的同步机制了解么? 是否使用过Redis集群,集群的原理是什么? redis集群如何保证一致性? nginx面试题 1.请解释一下什么是Nginx? 请列举Nginx的一些特性?3.请列举Nginx和Apache 之间的不同点? 请解释Nginx如何处理HTTP请求。 在Nginx中,如何使用未定义的服务器名称来阻止处理请求? 使用“反向代理服务器”的优点是什么? 请列举Nginx服务器的最佳用途。 请解释Nginx服务器上的Master和Worker进程分别是什么? 请解释你如何通过不同于80的端口开启Nginx?10.请解释是否有可能将Nginx的错误替换为502错误、503? 在Nginx中,解释如何在URL中保留双斜线? 请解释ngx_http_upstream_module的作用是什么?13.请解释什么是C10K问题,后来是怎么解决的? 14.请陈述stub_status和sub_filter指令的作用是什么?15.解释Nginx是否支持将请求压缩到上游?16.解释如何在Nginx中获得当前的时间? 用Nginx服务器解释-s的目的是什么?18.解释如何在Nginx服务器上添加模块? nginx中多个work进程是如何监听同一个端口的?如何处理客户连接的惊群问题?20.nginx程序的热更新是如何做的? 欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。 zookeeper面试题 zookeeper是什么? zookeeper提供了什么? zookeeper文件系统 zookeeper的四种类型的znode zookeeper通知机制 zookeeper有哪些应用场景? zk的命名服务 zk的配置管理服务 zk的集群管理 zk的分布式锁 zk队列管理 zk数据复制 zk的工作原理 zk是如何保证事物的顺序一致性 zk集群下server工作状态16.zk是如何选举Leader的? 17.zk同步流程 分布式通知和协调 zk的session机制 MongoDB面试题 什么是MongoDB? MongoDB是由哪种语言写的? MongoDB的优势有哪些? 什么是数据库? 什么是集合? 什么是文档?7.MongoDB和关系型数据库术语对比图 什么是“mongod”?9.“mongod”参数有什么? 10.什么是“mongo”?11.MongoDB哪个命令可以切换数据库? 什么是非关系型数据库? 非关系型数据库有哪些类型?14.为什么用MOngoDB? 在哪些场景使用MongoDB? MongoDB中的命名空间是什么意思? 哪些语言支持MongoDB? 在MongoDB中如何创建一个新的数据库? 在MongoDB中如何查看数据库列表? MongoDB中的分片是什么意思? 如何查看使用MongoDB的连接? 什么是复制? 在MongoDB中如何在集合中插入一个文档? 在MongoDB中如何除去一个数据库? 在MongoDB中如何创建一个集合? 在MongoDB中如何查看一个已经创建的集合?27.在MongoDB中如何删除一个集合? 28.为什么要在MongoDB中使用分析器? MongoDB支持主键外键关系吗? MongoDB支持哪些数据类型? 为什么要在MongoDB中用"Code"数据类型? 为什么要在MongoDB中用"Regular Expression"数据类型?33.为什么在MongoDB中使用"Object ID"数据类型? 如何在集合中插入一个文档? “ObjectID”有哪些部分组成? 在MongoDb中什么是索引? 如何添加索引? MongoDB有哪些可替代产品?39.如何查询集合中的文档? 40.用什么方法可以格式化输出结果? 如何使用"AND"或"OR"条件循环查询集合中的文档? 在MongoDB中如何更新数据? 如何删除文档? 在MongoDB中如何排序?45.什么是聚合? 在MongoDB中什么是副本集? Mongodb存储特性与内部原理? 最后欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

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

备战“金九银十”10道String高频面试题解析

前言 String 是我们实际开发中使用频率非常高的类,Java 可以通过 String 类来创建和操作字符串,使用频率越高的类,我们就越容易忽视它,因为见的多所以熟悉,因为熟悉所以认为它很简单,其实只是了解到皮毛,并没有真正掌握,而 String 又是面试的高频考点,所以我们有必要将 String 这个类深入研究,彻底搞定,本节课就为大家详细讲解 String 的核心机制以及实际使用。 String 三大核心:1、不变性:String 是只读字符串,是一个典型的 immutable 对象,对它进行任何操作,其实都是创建一个新的对象,再把引用指向该对象。不变模式的主要作用在于当一个对象需要被多线程共享并频繁访问时,可以保证数据的一致性。2、常量池优化:String 对象创建之后,会在字符串常量池中进行缓存,如果下次创建同样的对象时,会直接返回缓存的引用。3、final:使用 final 来定义 String 类,表示 String 类不能被继承,提高了系统的安全性。 String 不是基本数据类型 这是很基础的东西,但是很多初学者却容易忽视,Java 的 8 种基本数据类型中不包括 String,基本数据类型中用来描述文本数据的是 char,但是它只能表示单个字符,比如 'a','好' 之类的,如果要描述一段文本,就需要用多个 char 类型的变量,也就是一个 char 类型数组,比如“你好” 就是长度为2的数组 char[] chars = {'你','好'};但是使用数组过于麻烦,所以就有了 String,String 底层就是一个 char 类型的数组,只是使用的时候开发者不需要直接操作底层数组,用更加简便的方式即可完成对字符串的使用。欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。 高频面试题 1、== 和 equals 的区别?== 可以理解为是比较栈内存中的值,如果变量是基本数据类型,则栈内存中存放的就是具体数值,如果是引用类型,则栈中存放的是引用的内存地址。所以对于基本数据类型,== 是比较值是否相等,对于引用数据类型,比较的是引用的内存地址是否相等。 equals 是 Object 类提供的一个方法,其本质就是在用 == 进行判断。 public boolean equals(Object obj) { return (this == obj); } 同时 Java 中任意一个类都可以对其进行重写,根据具体需求重新定义其判断逻辑,比如我们自定义一个 Student 类,如下所示。 public class Student { private Integer id; private String name; public Student(Integer id, String name) { this.id = id; this.name = name; } } 创建两个成员变量值完全相等的实例化对象,并用 equals 方法判断是否相等。 Student student1 = new Student(1,"张三"); Student student2 = new Student(1,"张三"); System.out.println(student1.equals(student2)); 结果为 false,因为有两个实例化对象,就必然会在堆内存中开辟两块空间来存储,引用一定是不相同的。而在现实的逻辑中,如果两个学生的 id 和 name 都一样,我们就认为他们是同一个学生,用程序如何来实现呢?通过重写 equals 方法即可,如下所示。 public class Student { private Integer id; private String name; public Student(Integer id, String name) { this.id = id; this.name = name; } @Override public boolean equals(Object obj) { Student student = (Student) obj; if(id.equals(student.id) && name.equals(student.name)){ return true; } return false; } } 再次运行代码,返回值为 true。2、下面代码的运行结果是? String str1 = "Hello World"; String str2 = "Hello"+" World"; System.out.println(str1 == str2); true,"Hello" 和 " World" 都是字符串字面值,字符串字面值 + 字符串字面值的结果仍然保存在字符串常量池中,所以 str1 和 str2 相同。3、下面代码的运行结果是? String str1 = "Hello World"; String str2 = "Hello"; str2 += " World"; System.out.println(str1 == str2); false,这题看似与第 2 题一样,为什么结果完全不同呢?因为 str2 = "Hello"+" World" 是直接创建,str2 = "Hello"; str2 = "Hello"; 是先创建再修改,同时修改完成之后的字符串是放在堆内存中的,为什么呢?因为 str2 是一个字符串变量," World" 是字符串字面值,当字符串字面值与 String 类型变量拼接时,得到的新字符串不再保存在常量池中,而是在堆中开辟一块新的空间来存储,所以 str1 引用指向字符串常量池,str2 引用指向堆内存,肯定不相同。4、下面代码的运行结果是? String str1 = "Hello World"; String str2 = " World"; String str3 = "Hello"+str2; System.out.println(str1 == str3); false,str2 是变量,"Hello" 是字符串字面值,字符串字面值 + 变量会在堆内存中开辟新的空间来存储,所以 str1 和 str3 不同。5、下面代码的运行结果是? String str1 = "Hello World"; final String str2 = " World"; String str3 = "Hello"+str2; System.out.println(str1 == str3); true,"Hello" 是字符串字面值,str2 是常量,字符串字面值+常量的结果仍然保存在字符串常量池中,所以 str1 和 str3 相同。6、下面代码的运行结果是? String str1 = "Hello World"; final String str2 = new String(" World"); String str3 = "Hello"+str2; System.out.println(str1 == str3); false,str2 是常量,但是 new String(" World") 保存在堆内存中,所以即使使用 final 进行了修饰,str2 仍然保存在堆中,则 str3 也就保存在堆中,所以 str1 和 str3 不同。7、下面代码的运行结果是? String str1 = "Hello World"; String str2 = "Hello"; String str3 = " World"; String str4 = str2 + str3; System.out.println(str4.intern() == str1); true,当调用 str4 的 intern 方法时,如果字符串常量池已经包含一个等于 str4 的字符串,则返回该字符串,否则将 str4 添加到字符串常量池中,并返回其引用,所以 str4.intern() 与 str1 相同。8、什么是字符串常量池?字符串常量池位于堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空间存储相同的字符串,在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用。9、String 是线程安全的吗?String 是不可变类,一旦创建了String对象,我们就无法改变它的值。因此它是线程安全的,同一个字符串实例可以被多个线程共享,保证了多线程的安全性。10、在使用 HashMap 的时候,用 String 做 key 有什么好处?HashMap 内部实现是通过 key 的 hashcode 来确定 value 的存储位置,因为字符串是不可变的,所以当创建字符串时,它的 hashcode 被缓存下来,不需要再次计算,所以相比于其他对象更快。 最后欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

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

这10道springboot常见面试题你需要了解下

1、什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。 如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。 因此,开始一个新的spring项目需要很多努力,因为我们现在必须从头开始做所有事情。 Spring Boot是解决这个问题的方法。Spring Boot已经建立在现有spring框架之上。使用spring启动,我们避免了之前我们必须做的所有样板代码和配置。 因此,Spring Boot可以帮助我们以最少的工作量,更加健壮地使用现有的Spring功能。 2、Spring Boot有哪些优点? 减少开发,测试时间和努力。 使用JavaConfig有助于避免使用XML。 避免大量的Maven导入和各种版本冲突。 提供意见发展方法。 通过提供默认值快速开始开发。 没有单独的Web服务器需要。这意味着你不再需要启动Tomcat,Glassfish或其他任何东西。 需要更少的配置 因为没有web.xml文件。只需添加用@ Configuration注释的类,然后添加用@Bean注释的方法,Spring将自动加载对象并像以前一样对其进行管理。您甚至可以将@Autowired添加到bean方法中,以使Spring自动装入需要的依赖关系中。 基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序:-Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后,Spring将在(application{environment} .properties)中加载后续的应用程序属性文件。 3、什么是JavaConfig? Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法。因此它有助于避免使用XML配置。使用JavaConfig的优点在于: 面向对象的配置。由于配置被定义为JavaConfig中的类,因此用户可以充分利用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。 减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。 JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。 从技术角度来讲,只使用JavaConfig配置类来配置容器是可行的,但实际上很多人认为将JavaConfig与XML混合匹配是理想的。 类型安全和重构友好。JavaConfig提供了一种类型安全的方法来配置Spring容器。由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找。 4、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。 5、Spring Boot中的监视器是什么? Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。 6、如何在Spring Boot中禁用Actuator端点安全性? 默认情况下,所有敏感的HTTP端点都是安全的,只有具有ACTUATOR角色的用户才能访问它们。 安全性是使用标准的HttpServletRequest.isUserInRole方法实施的。 我们可以使用management.security.enabled = false 来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。 如何在自定义端口上运行Spring Boot应用程序? 为了在自定义端口上运行Spring Boot应用程序,您可以在application.properties中指定端口。 server.port = 8090 7、什么是YAML? YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。 8、如何实现Spring Boot应用程序的安全性? 为了实现Spring Boot的安全性,我们使用 spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。 9、如何集成Spring Boot和ActiveMQ? 对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq 依赖关系。 它只需要很少的配置,并且不需要样板代码。 10、如何使用Spring Boot实现分页和排序? 使用Spring Boot实现分页非常简单。使用Spring Data-JPA可以实现将可分页的org.springframework.data.domain.Pageable传递给存储库方法。

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

金九银十中,看看这31道Android面试题

阅读目录 1.如何对 Android 应用进行性能分析 2.什么情况下会导致内存泄露 3.如何避免 OOM 异常 4.Android 中如何捕获未捕获的异常 5.ANR 是什么?怎样避免和解决 ANR(重要) 6.Android 线程间通信有哪几种方式 7.Devik 进程,linux 进程,线程的区别 8.描述一下 android 的系统架构 9.android 应用对内存是如何限制的?我们应该如何合理使用内存? 10. 简述 android 应用程序结构是哪些 11.请解释下 Android 程序运行时权限与文件系统权限的区别 12.Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么 13.多线程间通信和多进程之间通信有什么不同,分别怎么实现 14.Android 屏幕适配 15.什么是 AIDL 以及如何使用 16.Handler 机制 17.事件分发机制 18.子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么 19.子线程中能不能 new handler?为什么 20.Android 中的动画有哪几类,它们的特点和区别是什么 21.如何修改 Activity 进入和退出动画 22.SurfaceView & View 的区别 23.开发中都使用过哪些框架、平台 24.使用过那些自定义View 25.自定义控件:绘制圆环的实现过程 26.自定义控件:摩天轮的实现过程 27.GridLayout的使用 28.流式布局的实现过程 29.第三方登陆 30.第三方支付 31.进程保活 一 性能优化 1.如何对 Android 应用进行性能分析 android 性能主要之响应速度 和UI刷新速度。 可以参考博客:Android系统性能调优工具介绍 首先从函数的耗时来说,有一个工具TraceView 这是androidsdk自带的工作,用于测量函数耗时的。 UI布局的分析,可以有2块,一块就是Hierarchy Viewer 可以看到View的布局层次,以及每个View刷新加载的时间。 这样可以很快定位到那块layout & View 耗时最长。 还有就是通过自定义View来减少view的层次。 浅谈App的性能优化 Android性能优化:手把手带你全面实现内存优化 Android性能优化 (1)—— 内存溢出和内存泄漏的介绍 2.什么情况下会导致内存泄露 内存泄露是个折腾的问题。 什么时候会发生内存泄露?内存泄露的根本原因:长生命周期的对象持有短生命周期的对象。短周期对象就无法及时释放。 I. 静态集合类引起内存泄露 主要是hashmap,Vector等,如果是静态集合 这些集合没有及时setnull的话,就会一直持有这些对象。 II.remove 方法无法删除set集 Objects.hash(firstName, lastName); 经过测试,hashcode修改后,就没有办法remove了。 III. observer 我们在使用监听器的时候,往往是addxxxlistener,但是当我们不需要的时候,忘记removexxxlistener,就容易内存leak。 广播没有unregisterrecevier IV.各种数据链接没有关闭,数据库contentprovider,io,sokect等。cursor V.内部类: java中的内部类(匿名内部类),会持有宿主类的强引用this。 所以如果是new Thread这种,后台线程的操作,当线程没有执行结束时,activity不会被回收。 Context的引用,当TextView 等等都会持有上下文的引用。如果有static drawable,就会导致该内存无法释放。 VI.单例 单例 是一个全局的静态对象,当持有某个复制的类A是,A无法被释放,内存leak。 3.如何避免 OOM 异常 首先OOM是什么? 当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后 这就会抛出 OutOfMemoryException 也就是OOM Android的OOM怎么样? 为了减少单个APP对整个系统的影响,android为每个app设置了一个内存上限。 publicvoidgetMemoryLimited(Activity context) { ActivityManager activityManager =(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); System.out.println(activityManager.getMemoryClass()); System.out.println(activityManager.getLargeMemoryClass()); System.out.println(Runtime.getRuntime().maxMemory()/(1024*1024)); } HTC M7实测,192M上限。512M 一般情况下,192M就是上限,但是由于某些特殊情况,android允许使用一个更大的RAM。 如何避免OOM 减少内存对象的占用 I.ArrayMap/SparseArray代替hashmap II.避免在android里面使用Enum III.减少bitmap的内存占用 inSampleSize:缩放比例,在把图片载入内存之前,我们需要先计算出一个合适的缩放比例,避免不必要的大图载入。 decode format:解码格式,选择ARGB_8888/RBG_565/ARGB_4444/ALPHA_8,存在很大差异。 IV.减少资源图片的大小,过大的图片可以考虑分段加载 内存对象的重复利用 大多数对象的复用,都是利用对象池的技术。 I.listview/gridview/recycleview contentview的复用 II.inBitmap 属性对于内存对象的复用ARGB_8888/RBG_565/ARGB_4444/ALPHA_8 这个方法在某些条件下非常有用,比如要加载上千张图片的时候。 III.避免在ondraw方法里面 new对象 IV.StringBuilder 代替+ 4.Android 中如何捕获未捕获的异常 CrashHandler 关键是实现Thread.UncaughtExceptionHandler 然后是在application的oncreate里面注册。 5.ANR 是什么?怎样避免和解决 ANR(重要) ANR->Application Not Responding 也就是在规定的时间内,没有响应。 三种类型: 1). KeyDispatchTimeout(5 seconds) —主要类型按键或触摸事件在特定时间内无响应 2). BroadcastTimeout(10 seconds) —BroadcastReceiver在特定时间内无法处理完成 3). ServiceTimeout(20 seconds) —小概率类型 Service在特定的时间内无法处理完成 为什么会超时:事件没有机会处理 & 事件处理超时 怎么避免ANR ANR的关键 是处理超时,所以应该避免在UI线程,BroadcastReceiver 还有service主线程中,处理复杂的逻辑和计算 而交给work thread操作。 1)避免在activity里面做耗时操作,oncreate & onresume 2)避免在onReceiver里面做过多操作 3)避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。 4)尽量使用handler来处理UI thread & workthread的交互。 如何解决ANR 首先定位ANR发生的log: 04-0113:12:11.572I/InputDispatcher(220): Applicationisnot responding:Window{2b263310com.android.email/com.android.email.activity.SplitScreenActivitypaused=false}. 5009.8ms since event,5009.5ms since waitstartedCPUusage from4361msto699ms ago ----CPU在ANR发生前的使用情况04-0113:12:15.872E/ActivityManager( 220):100%TOTAL:4.8% user +7.6% kernel +87% iowait04-0113:12:15.872E/ActivityManager( 220): CPUusage from3697msto4223mslater:-- ANR后CPU的使用量 从log可以看出,cpu在做大量的io操作。 所以可以查看io操作的地方。 当然,也有可能cpu占用不高,那就是 主线程被block住了。 6.Android 线程间通信有哪几种方式 1)共享变量(内存) 2)管道 3)handle机制 runOnUiThread(Runnable) view.post(Runnable) 7.Devik 进程,linux 进程,线程的区别 Dalvik进程。 每一个android app都会独立占用一个dvm虚拟机,运行在linux系统中。 所以dalvik进程和linux进程是可以理解为一个概念。 你真正了解Java虚拟机吗—高级开发必备《深入了解Java虚拟机》 8.描述一下 android 的系统架构 从小到上就是: linux kernel,lib dalvik vm ,application framework, app 9.android 应用对内存是如何限制的?我们应该如何合理使用内存? activitymanager.getMemoryClass() 获取内存限制。 关于合理使用内存,其实就是避免OOM & 内存泄露中已经说明。 10. 简述 android 应用程序结构是哪些 1)main code 2) unit test 3)mianifest 4)res->drawable,drawable-xxhdpi,layout,value,mipmap mipmap 是一种很早就有的技术了,翻译过来就是纹理映射技术. google建议只把启动图片放入。 5)lib 6)color 11.请解释下 Android 程序运行时权限与文件系统权限的区别 文件的系统权限是由linux系统规定的,只读,读写等。 运行时权限,是对于某个系统上的app的访问权限,允许,拒绝,询问。该功能可以防止非法的程序访问敏感的信息。 12.Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么 Framework是android 系统对 linux kernel,lib库等封装,提供WMS,AMS,bind机制,handler-message机制等方式,供app使用。 简单来说framework就是提供app生存的环境。 1)Activity在attch方法的时候,会创建一个phonewindow(window的子类) 2)onCreate中的setContentView方法,会创建DecorView 3)DecorView 的addview方法,会把layout中的布局加载进来。 13.多线程间通信和多进程之间通信有什么不同,分别怎么实现 线程间的通信可以参考第6点。 进程间的通信:bind机制(IPC->AIDL),linux级共享内存,boradcast, Activity 之间,activity & serview之间的通信,无论他们是否在一个进程内。 14.Android 屏幕适配 屏幕适配的方式:xxxdpi, wrap_content,match_parent. 获取屏幕大小,做处理。 dp来适配屏幕,sp来确定字体大小 drawable-xxdpi, values-1280*1920等 这些就是资源的适配。 wrap_content,match_parent, 这些是view的自适应 weight,这是权重的适配。 Android屏幕适配框架-(今日头条终极适配方案) 15.什么是 AIDL 以及如何使用 Android Interface Definition Language AIDL是使用bind机制来工作。 参数: java原生参数 String parcelable list & map 元素 需要支持AIDL 16.Handler 机制 参考:android 进程/线程管理(一)——消息机制的框架这个系类。 17.事件分发机制 android 事件分发机制 带你一起探究Android事件分发机制, 让面试提问不在畏惧! Android触摸事件分发机制完全解析《一》 18.子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么 EventBus,广播,view.post, runinUiThread 但是无论各种花样,本质上就2种:handler机制 + 广播 你真正了解UI线程更新的几种方式吗,面试必备之深度揭秘 19.子线程中能不能 new handler?为什么 必须可以。子线程 可以new 一个mainHandler,然后发送消息到UI Thread。 带你一步一步深入Handler源码,拿下面试官不在话下 Handler消息机制完全解析(三)—Handler解析 Handler消息机制完全解析(二)MessageQueue的队列管理 Handler消息机制完全解析(一)Message中obtain()与recycle()的来龙去脉 20.Android 中的动画有哪几类,它们的特点和区别是什么 视图动画,或者说补间动画。只是视觉上的一个效果,实际view属性没有变化,性能好,但是支持方式少。 属性动画,通过变化属性来达到动画的效果,性能略差,支持点击等事件。android 3.0 帧动画,通过drawable一帧帧画出来。 Gif动画,原理同上,canvas画出来。 具体可参考:https://i.cnblogs.com/posts?categoryid=672052 21.如何修改 Activity 进入和退出动画 overridePendingTransition 22.SurfaceView & View 的区别 view的更新必须在UI thread中进行 surfaceview会单独有一个线程做ui的更新。 surfaceview 支持open GL绘制。 二项目框架的使用 23.开发中都使用过哪些框架、平台 I.EventBus 事件分发机制,由handler实现,线程间通信 II.xUtils->DbUtils,ViewUtils,HttpUtils,BitmapUtils III.百度地图 IV.volley V.fastjson VI.picciso VII.友盟 VIII.zxing IX.Gson 24.使用过那些自定义View pull2RefreshListView 25.自定义控件:绘制圆环的实现过程 publicclassCycleViewextendsView{ Paint mPaint =newPaint();publicCycleView(Context context){this(context,null); }publicCycleView(Context context, AttributeSet attrs){super(context, attrs); initView(); }privatevoidinitView(){ mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(20); } @OverrideprotectedvoidonDraw(Canvas canvas){super.onDraw(canvas); canvas.drawCircle(100,100,50,mPaint); }} 关键是canvas.drawCycle & paint.setsytle(stoken) 26.自定义控件:摩天轮的实现过程 参考链接 https://github.com/danylovolokh/LondonEyeLayoutManager 27.GridLayout的使用 参考链接 https://blog.csdn.net/k316378085/article/details/52316633 28.流式布局的实现过程 参考链接 https://blog.csdn.net/sz237812861/article/details/78383484?locationNum=4&fps=1 29.第三方登陆 参考链接 https://blog.csdn.net/alpha58/article/details/75210753 30.第三方支付 参考链接 https://blog.csdn.net/androidstarjack/article/details/72669394 【干货】微信支付,银联支付,支付宝支付——三大支付总结你get到了吗 31.进程保活 参考链接 2018年Android的保活方案效果统计 阅读更多 火车上编码是一种怎样的体验? android高级页面效果集锦 做后台是选择Java 、Go ,还是 PHP? 美团面试题:Java-线程池 ThreadPool 专题详解 (Android)面试题级答案(精选版) 相信自己,没有做不到的,只有想不到的 在这里获得的不仅仅是技术!欢迎交流学习

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

elasticsearch function_score Query——文档排序结果的最后一道墙

function_score Query Thefunction_scorequeryis the ultimate tool for taking control of the scoring process.It allows you to apply a function to each document that matches the main query in order to alter or completely replace the original query_score. In fact, you can apply different functions tosubsetsof the main result set by using filters, which gives you the best of both worlds: efficient scoring with cacheable filters. It supports several predefined functions out of the box: weight Apply a simple boost to each document without the boost being normalized: a weightof 2results in 2 * _score. field_value_factor Use the value of a field in the document to alter the _score, such as factoring in a popularitycount or number of votes. random_score Use consistently random scoring to sort results differently for every user, while maintaining the same sort order for a single user. Decay functions—linear,exp,gauss Incorporate sliding-scale values like publish_date, geo_location, or priceinto the _scoreto prefer recently published documents, documents near a latitude/longitude (lat/lon) point, or documents near a specified price point. script_score Use a custom script to take complete control of the scoring logic. If your needs extend beyond those of the functions in this list, write a custom script to implement the logic that you need. Without thefunction_scorequery, we would not be able to combine the score from a full-text query with a factor like recency. We would have to sort either by_scoreor bydate; the effect of one would obliterate the effect of the other. This query allows you to blend the two together: to still sort by full-text relevance, but giving extra weight to recently published documents, or popular documents, or products that are near the user’s price point. As you can imagine, a query that supports all of this can look fairly complex. We’ll start with a simple use case and work our way up the complexity ladder. 转自:https://www.elastic.co/guide/en/elasticsearch/guide/current/function-score-query.html 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6480761.html,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

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部分的功能。

用户登录
用户注册