有没有android或java高手帮忙看下是什么原因
娱乐之白开水希望头条高手们帮个忙,最近在android studio4.2中编译版本,gradle jdk为1.8版本时,项目编译正常,当修改成使用jdk11时,编译报某个jar包的一个类的符号找不到,但是这个类又存在,点击正常跳转。搞了一天,脑壳疼,都没有解决。
今日思考:什么叫“会编程”?
程序设计语言——这种工具有什么性质呢?或,究竟是什么决定了一种语言称为 Java,而另一种叫做 C#呢?它们之间存有何种不同, 又存有哪些渊源呢?有趣的是,通过分析现有的种种程序设计语言,(正因为这些语言是我们人类自己创造的,所以)我们发现如同人类的自然语言一样,程序设计语言也总是有着三种基本性质:语法、 语义与语用。正是这三种性质,使得它区别与其他语言,而又能从 其他语言那里有所借鉴以及沟通。

语法是指我们表达内容的形式。这一形式首先与不同的表达手段有关,例如同一个意思,我们的口头表达和书面表达是不同的。其次, 即使表达手段相同,也会因为介质的材料性质存有差异而导致形式不同,例如钟鼎文和白话文都用于书写,但显然钟鼎文不能像白话文那样冗长。类似地,在我们的程序设计语言中,早期的程序输入就是电子开关的开合,因此代码会是一些操作命令,而现在我们可以将之输入为接近自然语言的程序文本;早期的运行环境限制要求代码必须尽量精少,而现在我们则考虑通过规整而冗长的代码来降低工程整体的复杂性。所以,语法是对语言的表达手段,以及对该表达手段的条件限制加以综合考虑而设定的一种形式化的规则。
语义是指我们表达内容的逻辑含义。语义有两项基本性质:一,必须是一个含义①;二,该含义必须能够以某种基本的逻辑形式予以阐述。语义还有一项非必须的性质,即:三,上述的逻辑所表达的含义可以为语言的接受者所知。

略为讨论一下第二项性质。为何语义必须可以阐述为一种基本逻辑 呢?因为语义定义为内容的含义,而这种含义可以由多种形式来表 现,因此如果它不能用一种基本逻辑来表达,也就没有办法在多种 表现形式之间对它互作验证。例如不能用书写的方式来确定口头转述的正确性,或反之也不能通过口传心授来传播书本知识。自然语言中的这种性质(部分地)可以由基本逻辑的矛盾律来约束,即 “一概念不能既是该概念,而又非该概念”。正是我们的文字记录与对话交流等内容中存在着这样的一些基本逻辑,所以它才可能科学、严谨以及正确。
第三项性质对自然语言来说是非必须的——如果一个人自言自语, 那么他的言语可能仍然是有语义的,只是这语义不为他人所知。但这一点对于程序设计语言来说却是必须的,因为我们设计这样一门语言的目的,正是要让我们所要表达的含义为计算机所知。而正是这第三项性质,加入了对“语言的接受者的理解能力”的限制。出于语义的前两项基本性质,这种理解能力也必然由两个方面构成, 一是指含义,二是指逻辑。

我们回到了上一章所讨论的内容:计算系统的要素,包括数、数据和逻辑,以及在此基础上进行正确计算的方法的抽象,即计算范式。 只有通过这些组织起来的语义,才可能被(我们此前所述的)计算系统理解。这些语义与其表现形式(即语法)是无关的,有其基本逻辑存在。
我们所谓的“会编程”是指对这种语义的理解,而非对某种语法的 熟悉。正因如此,我们才可以在 Java 上实现某个程序,又在C#上同 样实现它,在(使用这些语言的)类似的仿制过程中,
不变的是语义。
--来源《程序原本》作者-周爱民
今天要聊的这本书叫《技术的本质》。这本书的作者布莱恩·阿瑟是著名的技术思想家,编程语言Java就是根据他的思想开发的。他在书里主要探讨了一个问题,技术是什么?
在词典里,我们对技术有明确的定义,简单来说,技术是一些方法,可以把已经有东西变成新的东西。但是,问题真的有这么简单吗?著名经济学家何帆老师就说过:我们对技术的认识水平,相当于进化论出现之前的生物学。你想想,进化论出现以前,生物学家已经懂得动物分类,了解动物的习性,但他们并不知道生命的起源,也不知道动物演化的方向。同样的,今天,历史学家、经济学家和社会学家也能告诉我们某一项技术的来龙去脉,还有它给人类社会带来的深远影响,但他们却说不清技术的起源和它的来龙去脉。

布莱恩·阿瑟写这本书,就是为了弄清楚有关技术更深层的问题。阿瑟认为,技术像生物一样,有基因,能突变,而且会不断进化。所有的技术,都脱胎于此前的技术。就像所有的生物,都能追根溯源地找到原始的祖先。
凯文·凯利把所有技术的总称为技术界。技术界和植物界、动物界等六个生物界并列,是生命的第七个界。技术进化和生物进化非常类似,都是从简单演化到复杂,从一般到特别,从一元化到多元化,从单打独斗到种群间合作共生如果说一个物种就是一堆基因的排列组合,那么,一项技术也是一组想法的排列组合。
技术是怎么诞生的呢?首先,人类捕捉到了一个现象。比如,在农业领域,人们发现,野生草籽可以充饥,人们主动利用这个现象来达到特定目的,于是就有了,从“天赐圣米”到人工播种,出现了一项技术叫农业。再举一个例子,含有 CRISPR-Cas9 基因片段的嗜热链球菌,可以切除病毒基因,抵御病毒的侵袭,人们又主动利用这个现象,用CRISPR-Cas9 来切除基因,这项技术叫基因编辑。接着,不同的技术组合、杂交、借用,催生了新的技术。比如,把基因编辑应用于农业。不打农药,也能减少病虫害,不影响产量,还能抵御土壤的金属污染。

技术就这样诞生了,诞生之后,技术还要进化。又有两件事加速了技术的进化:第一是模块化。假设,每只手表有 1000 个零件,第一个制表匠,一个零件一个零件地安装。如果他出了一个小错,或者是工作被打断,就得从头再来。第二个制表匠,把手表分为 10 个模块,每个模块中又有 10 个小模块,每个小模块中有 10 个标准化的零部件。那么,即使他装错了,或是工作被打断,损失的只是一小部分劳动。更重要的是,我们只需要对一个模块进行升级,对不同的模块进行组合,就可以得到一块新的手表。这就是模块化的价值。
第二个加速技术进化的是借用。真空管能从放大电话信号,借用到逻辑计算,就有了计算机。电池本来是用在手机上,把它借用到汽车,就有了特斯拉。GPU 最早只服务于小众的游戏,有人把它应用到人工智能,解决了算力问题。

所谓新技术,不过是此前已有技术的重新组合。没有什么技术是横空出世的。发明的核心是借用。你只要了解了技术的身世,就能发现它进化的轨迹。
过去,我们以为技术源自天才的创造。实际上,技术本身就在推动自己的进程。技术的进化不可阻挡。我们经常会说,在iPhone发明之前,很多技术都不知道有什么用途,直到乔布斯出现。其实这句话也可以反过来说,就算有乔布斯出现,没有那些已经准备好的新技术,iPhone也不会出现。
不是人类想要什么,就能研发出什么。技术不听我们的,我们得听技术的。低劣的科幻作品喜欢天马行空的想象,认为科技的发展是“一切皆有可能"”。但实际上,越是优秀的科幻作家越是明白,技术的可能性是十分有限的,不能随心所欲地编造一个东西。
我们都想要知道技术未来会怎么发展,因为新技术意味着下一个风口。但是,我们也要认清现实,人类或许无法预知技术的未来。

Java程序员面试薪资25k以上开发岗位必知必会的问题,基本上就以下几种:
1、内存泄露的问题,要明白内存泄露的本质是堆中的对象无法回收;
2、内存阶梯式稳步上升,会是什么问题,线上服务如何定位排查?
3、内存使用呈锯齿状,此时的堆会是哪种情况?会有什么问题?
4、程序启动后CPU逐步升高怎么排查?
5、Java进程假死会是什么情况?如何排查定位问题?
#程序员# #Java# #微头条日签# #职场达人炼成记#
世间最好的编程语言是什么?C,JAVA等等,抢答者很多,不同编程,语言的拥趸也非常之多。而谷歌公开了其内部最新编程语言——Carbon,剑指 C++,欲成为其实验性继任。有开发者表示,C++ 代码的性能和迁移需优先考虑,而Carbon 在安全方面做出了妥协。Carbon 出生于谷歌内部,开源意味着不仅仅是为谷歌自己用。

之前一个老领导做为面试官去面试候选人,我作为旁听记笔记,面试官问的一些问题,比如css3的3代表什么意思,Apache官网是什么,java每个版本的区别有哪些,你可以给公司无偿加班吗,你的优缺点是什么。听到这些问题,我看到面试者不可思议的表情,我赶紧把头低下来。有时候有些问题真的很难回答,而且回答了也不一定是处于真心。
就比如h5的5代表什么意思,这种问题的意义是什么呢,面试者如果回答和h5的5,c++的+是一个意思,不尴尬吗?
作为技术面试官,首先考察的肯定还是技术,从基础到深入,逐步引导面试者尽可能展开回答问题,其次还要消除面试者的紧张情绪,而不是带着情绪去面试候选人。
面试官代表的公司的形象,是选拔人才的门脸,我面过不少人,也被不少人面试过,遇见过很多和善的技术大佬,和他们交流起来甚至会忘记自己是来面试的,哪怕是面试失败也会把它当做一次学习的机会,心存感激的离开。从被面试到面试其他人,我也经历过很多挫折,遇到过很多各种风格的面试官和候选人,难免会有些遗憾。

今年找工作确实比较艰难,面试者为了得到一份工作会尽量放低姿态,避其锋芒,希望面试官也能多些包容,同样也希望面试者能将强学习,不要随便当炮灰,浪费面试机会。
#人邮荐书# #编程# #Java# 灵魂画风,却极其传神——出自《深入 Java 虚拟机:JVM G1GC 的算法与实现》作者中村成洋之手。问题来啦~下面漫画中的两句台词是什么梗,欢迎小伙伴们在评论区留言~抽奖详情
《深入Java虚拟机 JVM G1GC的算法与实现》90张图表+33段代码,轻松理解G1GC算法原理;HotSpotVM源码剖析,深入探讨G1GC具体实现。深入Java虚拟机底层原理,详细解读经典GC算法;理论结合实际,基于HotSpotVM源码探讨具体实现;图文并茂、深入浅出,辅以大量插图和代码细致讲解。
#转发抽奖# #转发赠书# 转发微头条并关注@人民邮电出版社 2月16日,抽3名#锦鲤幸运君# 送《深入java虚拟机》。@头条抽奖平台 #头条抽奖#

深入Java虚拟机
【Java 中的 ArrayList】在说 ArrayList 之前,我们先来理解一下 List 接口是什么。站在数据结构的角度来看,List 就是一个线性表,即 n 个具有相同类型元素的有限序列,在该序列上可以执行增删查改操作。网页链接
java程序员面试一家公司,面试官是一个四十多岁的部门总面试问题如下:
1、elastic search核心是什么?
2、Springcloud底层原理是什么,核心思想是什么?为什么不单独部署一个服务用hashmap 来存数据而
要用redis?
3、只要知道了原理写一个框架是很容易的那为什么不
自己写一个而要用别人的框架?
4、你学习这些技术的目的是什么研究它们主要是研究
什么?
当问到工资的时候,面试官说:我们这个岗位最多只能给到12k。
面试官:你还有什么问题问我的吗,我:下次记得提前把最后一句说出来,不要浪费大家时间

真的是想让人笑死,有的公司真的想“要想马儿跑,还想马儿不吃草。”
你们遇到过这种面试经历吗?
#程序员面试经历#
【java经典面试场景之Spring 知多少】
你知道如何注册注册一个Spring Bean吗?没有?那你知道Spring BeanDefinition是什么吗?不知道?回去等通知吧
如何注册一个Spring Bean?
通过BeanDefinition 和外部对象来注册。
什么是Spring BeanDefinition?
定义:BeanDefinition 是定义 Bean 的配置元信息接口,Spring根据 BeanDefinition 来定义 Bean 对象,简单说就是对 Bea n信息的定义
描述一个 bean 的全部信息,比如他的class类型、Bean 的作用域、是否懒加载…
spring中每一个被扫描到的bean都会生成一个BeanDefinition。
BeanDefinition的主要作用是为了在只解析一次类的情况下,最大程度的拿到这类的信息。防止重复解析导致效率变低。

spring采用ASM(字节码解析的工具)技术去得到BeanDefinition。
BeanDefinition中的常用属性
beanClass:表示 Bean 类型,未加载类的时候存放Bean的名字,加载类后存放Bean的class信息。
scope:表示 Bean 的作用域,一般值为单例或者原型。
lazyInit:表示 Bean 是否是懒加载。
initMethodName:Bean 初始化需要执行的方法。
destroyMethodName:Bean 销毁时要执行的方法。
factoryBeanName:创建当前 Bean 的工厂。
好未来Java社招,44道面试题分享,中等难度,经验3年+
1、自我介绍,项目介绍 ,项目主要技术栈?
2、Spring Boot 怎么做到自动装配,开箱即用的?starter 是什么?是怎么实现的?
3、IoC 与 DI 的关系,AOP 除了两个动态代理还用什么实现的?
4、Spring Bean 是怎么创建出来的,如果让你设计的话你会怎么做?

5、循环依赖的类型有哪些,怎么解决的?三级缓存具体是哪些,分别有什么作用?
6、项目中如何实现的限流和降级?
7、讲一下 ElasticSearch 的工作原理?
8、为什么选 Spring Cloud Alibaba?而不选 Spring Cloud和Dubbo?
9、Nacos 的工作原理、与 Eureka、Zookeeper、Apollo、Dubbo 的对比呢?
10、Nacos 有哪些功能?Nacos 支持 CP 还是 AP?为什么不能支持 CA?
11、什么是分布式事务?Seata 的工作方式是怎样的?
12、为什么 Seata 的数据库表就可以实现分布式事务呢?Seata 支持哪些分布式事务?
13、为什么选择 RabbitMQ?RabbitMQ 是如何实现的?如何避免消息积压、消息重复?
14、Redis 的基本数据结构?基本数据结构的底层实现?对应的时间复杂度?
15、ZSET 是怎么跳表是怎么实现的?quicklist是怎么实现的?
16、跳表是如何决定上一层结点的?如果让你来设计的话你会怎么设计?

17、redis大key有什么问题?redis查询百万博主的所有关注人怎么处理?
18、redis的key过期策略?redis的内存淘汰机制?
19、redis持久化,redis对AOF文件有哪些优化?
20、Object A = new Object(); 从 JVM 的角度发生了什么?
21、垃圾收集器有哪些?对比一下 CMS 与 G1?
22、关于MySQL 的索引,你知道哪些?
23、B+ 树与 B- 树、红黑树、AVL 树、Hash 的比较?
24、 MySQL 日志及主从复制?怎么提高数据库的查找速度?
25、水平切分、垂直切分是指什么?为什么要这么做?还有其他的方式吗?
26、TCP 四次挥手 CLOSE-WAIT、TIME-WAIT 分别都是发生在什么时候的?作用是什么?
27、TCP 和UDP 流量控制算法具体的
28、HashMap的底层实现原理,是线程安全的吗,怎么实现线程安全?
29、Nginx线上链接数配置,来了一个请求 nginx 的master和worker谁去处理?

30、设计题:现在有两个集合 A、B,每个集合都有超大量的 URL,其中每个 URL 一行,怎么用最快的速度求它们的交集?
31、在上题的基础上,现在只有 2G 内存,但是每个集合有 100 亿条数据,该怎么去查找它们的交集?
32、设计题:我现在有超大量的 IP 地址,其中的 IP 有的是有效地,有的是无效的,设计一个数据结构,包含 insert、del、randomGet 这三个操作,其中 randomGet 操作就是获取一个有效的 IP 地址。要求尽可能高效,并且 randomGet 需要是真正随机的。
33、逻辑题:25匹马,5条赛道,一匹马一个赛道,比赛只能得到5匹马之间的快慢程度,而不是速度,求前三名至少要比赛多少场,具体方案?
34、算法题:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断括号是否有效?
35、算法题:数组连续最大和?

36、编程题:循环100次,依次输出线程ABC名和序号?
37、算法题:数组[1,3,2,5,7],之和为target的所有组合
38、算法题:两个链表,求是否相交?
39、算法题:求一个字符串中,出现次数最多的10个字符?
40、你在进行技术学习的时候会使用什么的方式呢?
41、HR:你的离职原因是什么?你现在的薪资是多少?你的目标薪资是多少?
42、HR:你工作过程中遇到的最大的困难是什么?你是怎么评价自己的?
43、HR:你对于未来的工作机会看法是怎样的?投了哪些公司,有几个走完流程的?
44、反问:你有什么想问我的嘛?我简单地给你介绍一下我们这边的情况。
#有话职说# #职场达人说# #微头条日签# #直言职场# #职场达人炼成记# #职场微头条# #职场干货# #程序员#
JAVA开发必备工具之一
Eclipse IDE

如果咨询一些经验丰富的Java开发人员关于他们最喜欢的Java Integrated Development Environment(IDE)是什么,不少人会告诉你是Eclipse IDE。 Eclipse能提供关于代码完成、重构和语法检查这些急需的帮助。它还能提供JDT的一系列工具,包括各种插件工具来帮助开发各种Java应用。
此IDE的真正优势是它允许开发人员使用不同的语言支持,如它也可以提供C/ C++和PHP 的IDE。这使得它成为了Java开发的一个一站式资源。
官方网站:网页链接
JAVA线程:ThreadLocal 是什么?使用场景?
ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
ThreadLocal 的经典使用场景是数据库连接和 session 管理等。
Java试题解析(33)
什么是多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)?封装、继承和多态是什么?多态的实现原理是什么?对象封装的原则是什么?

多态性(polymorphism)是指一个生物或物种可以有许多不同的形式或阶段。这一原则也可以应用于面向对象编程和Java等语言。类的子类可以定义它们自己独特的行为,同时也可以共享父类的一些相同的功能。
Java中的封装(encapsulation)是一种将数据(变量)和作用于数据(方法)的代码包装成一个单元的机制。在封装中,类的变量对其他类是隐藏的,只能通过当前类的方法访问。因此,它也被称为数据隐藏。
内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。
耦合(Coupling)是模块之间依赖程度的度量。
封装是把客观事物封装成抽象的类,自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承是指让某个类型的对象获得另一个类型的对象的属性的方法。
多态是指同一个行为具有多个不同表现形式或形态的能力。比如,同一个接口的不同实例的同名操作的行为可能不同。

Java是通过动态绑定实现多态的。让我们先看下绑定的概念,绑定分为前期绑定和后期绑定,后期绑定由两个别名,动态绑定或运行时绑定。在程序执行之前进行绑定叫做前期绑定,由编译器和连接程序实现;动态绑定在程序运行时根据对象的类型进行绑定。JAVA中除了static方法、final方法之外,其他的方法都是动态绑定。动态绑定要在运行时确定对象类型,进而找到对应的方法,这一过程依赖JVM中的方法表,方法表以数组的形式记录当前类及其所有父类的可见方法字节码在内存中的直接地址。
对象封装的原则是:将属性和实现细节隐藏起来,对外提供访问某个属性的接口,控制访问级别。
以前都是用java,听朋友说uni-app开发效率高。最近准备用uni-app开发一个APP项目应用,第一次用边学边开发,先学一周应该可以上手。还好我有web前端开发经验不然还有点难,不过还好,很简单!有用UNI-app技术开发app的吗?性能怎么样,多多指教[给力][碰拳],开工吧!准备工作就绪!每天我会将学会的情况及知识点给朋友分享一下,有正在学app开发的吗?一起出发吧!也欢迎有兴趣的朋友!点赞祝我成功吧![碰拳][给力][碰拳][给力]#前端js的学习路线究竟是什么#

如果不看Console.WriteLine,你能看得出来是什么语言写的吗?Java和C#互相抄作业,最后语法就像双胞胎一样,不过这也好,以后程序员转换编程语言也就简单多了,大家互相山寨,多了也不见得是坏事,从硬件层面来看,应该只有一种语言,那就是二进制啊。
重复造轮子是牛人的天性,谁看到源码不想自己拿过来边学习边重建呢?次数多了,架构师也就出来了,只是大部分人觉得太难了,看不懂,于是编程界就出现三教九流的人了。
8月7号 腾讯一面 高级Java开发工程师
整个流程
1 自我介绍
2 问答环节
3 提问环节
问题
1 你觉得项目里给你最大的挑战是什么?遇到了什么问题?如何解决的?从中学到了什么?
linux
1 进程的调度算法有哪些?
2 僵尸进程产生的原因?

3 孤儿进程产生的原因?
4 select、pollicon 和 epollicon 的区别?epoll 的底层使用的数据结构。
5 fork 函数的作用?
6 讲一下用户态和内核态?所有的系统调用都会进入到内核态吗?
集合
1 ConcurrentHashMap 的底层实现
2 什么 ConcurrentHashMap 的读操作不需要加锁?
多线程
1 线程死锁,解除线程死锁有哪几种方式?
2 ThreadLocal 有什么缺陷?如果线程池的线程使用 ThreadLocal 会有什么问题?
redis
1 redis 大key怎么解决
2 redis 高级的三种数据结构有没有用过
3 redis 淘汰策略
4 redis LRU算法如果让你实现,你会怎么实现
mysql
1 sql优化思路
2 mongoDb可以替代mysql吗
业务
1 一个银行信贷系统由哪些组成
实际场景
1 在一个系统中,怎么控制系统单日总额度和客户的额度
2 如果你作为一个渠道,你怎么设置的路由策略,从哪些方面进行考量

时间 90分钟左右
总结:主要侧重设计方面,然后实操方面,然后需要有一点的业务知识
#35岁码农#
JVM参数配置您知多少?
不管你知道多少,反正,我知道的不多,因为我也记不住。
因为,每次系统搭建完之后,基本参数就不会改变过。
但是,面试官不会认为你记不住,偶尔会问问某个参数是什么含义?
如果你答不出来,不代表你不行;如果你回答上来,会认为这个小伙儿有两把刷子,可深聊。
所以,甭管这算不算八股文,知道的多总比知道的少要好。
回归正题,今天要说的是JVM参数配置都是什么含义?
-Xmx1024m -Xms1024m -Xmn512m
简单来说就是:
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn:年轻代大小
详细来讲:
-Xmx
JVM可申请的最大Heap值,默认值为物理内存的1/4但小于1G,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRation=来指定这个比列。最佳设值应该视物理内存大小及计算机内其他内存开销而定。(例如:-Xmx1024m)
-Xms
JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRation=来指定这个比列。Server端JVM最好将-Xms和-Xmx设为相同值,避免每次垃圾回收完成后JVM重新分配内存;开发测试机JVM可以保留默认值。(例如:-Xms1024m)
-Xmn
Java Heap Young区大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小(相对于HotSpot 类型的虚拟机来说)。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。(例如:-Xmn512m)
关注我,每天学一点,进步快一点。







