首页 文章 精选 留言 我的

精选列表

搜索[腾讯元宝],共8660篇文章
优秀的个人博客,低调大师

腾讯高工手写JDK源码笔记 带你飙向实战

灵魂一问,我们为什么要学习JDK源码? 当然不是为了装,毕竟谁没事找事虐自己 ... 1、面试跑不掉。现在只要面试Java相关的岗位,肯定或多或少会会涉及JDK源码相关的问题。 2、弄懂原理才不慌。我们作为JDK的使用者,虽然说天天用得很开心,但是有时候遇到问题还是得跟到底层源码去看看,才能帮助我们更好的弄懂原理, 3、学习优秀的代码、思想和模式。JDK毕竟是一个优秀的代码库,我们天天用,源码也就在里面,作为一个有志向的程序员,读一读源码也能让我们吸取到更多优秀的思想和模式。 那么源码难吗? 废话,当然有难度啦,不然我也不会到现在都还没看完,而且看了也经常忘,哭唧唧... 毕竟像JDK这种源码,和我们平常练手写小例子、写业务代码不一样,人家毕竟是类库,为了性能、稳定性、通用性,扩展性等因素考虑,加入了很多辅助代码、泛型、以及一些设计模式上的考量,所以看起来肯定没有那么轻松,没办法一眼看穿它。 所以这玩意儿肯定是一个长期的过程,但是我们一定要有足够的信心,我坚信“JDK源码笔记”人家都写出来了,我就不信我看不懂!接下来我们就一看究竟! 主要内容 第一章多线程基础 锁的本质是什么 第二章Atomic类 AtomicBoolean和AtomicReference Striped64与LongAdder 第三章Lock与Condition 互斥锁 读写锁 第4章同步工具类 CountDownLatch Exchanger Phaser 第5章并发容器 在Lock和Phaser的实现中,已经介绍了基于CAS实现的无锁队列和无锁栈。本章将全面介绍Concurrent包提供的各种并发容器。 BlockingQueue ConcurrentHashMap ConcurrentSkipListMap/Set 第6章线程池与Future 线程池与Future 线程池的类继承体系 ScheduledThreadPoolExecutor 第7章ForkJoinPool 工作窃取队列 ForkJoinTask的fork/join ForkJoinPool的优雅关闭 CompletableFuture CompletableFuture用法 任务的网状执行:有向无环图 共勉 看源码这东西不能急,慢一点才能更快!也希望这篇“JDK源码剖析”对各位大哥们也有所帮助!共勉。 最后,有兴趣想要学习的只需要【转发】+【关注】后添加小编vx:mxzFAFAFA即可免费获取!!

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

面试百度、阿里、腾讯,这134道Java面试题你会多少?

这里一共是134道Java面试题,看看你能对几道吧! Java 语言有哪些特点 面向对象和面向过程的区别 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 和 C++ 的区别6.什么是 Java 程序的主类 应用程序和小程序的主类有何不同 Java 应用程序与小程序之间有那些差别 字符型常量和字符串常量的区别 构造器 Constructor 是否可被 override 重载和重写的区别 Java 面向对象编程三大特性: 封装 继承 多态 String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的 自动装箱与拆箱 在一个静态方法内调用一个非静态成员为什么是非法的 在 Java 中定义一个不做事且没有参数的构造方法的作用 import java 和 和 javax 有什么区别 接口和抽象类的区别是什么 成员变量与局部变量的区别有那些 创建一个对象用什么运算符? 对象实体与对象引用有何不同? 一个类的构造方法的作用是什么 若一个类没有声明构造方法, 该程序能正确执行吗 ? 内存模型以及分区,需要详细到每个区放什么。 .堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。 对象创建方法,对象的内存分配,对象的访问定位。 GC 的两种判定方法: SafePoint 是什么 GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路? GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。 Minor GC 与 Full GC 分别在什么时候发生? 几种常用的内存调试工具:jmap、jstack、jconsole、jhat 类加载的几个过程:31.JVM 内存分哪几个区,每个区的作用是什么? 32.如和判断一个对象是否存活?(或者 GC 对象的判定方法)33.简述 java 垃圾回收机制?34.java 中垃圾收集的方法有哪些?35.java 内存模型36.java 类加载过程? 简述 java 类加载机制? 类加载器双亲委派模型机制?39.什么是类加载器,类加载器有哪些? 40.简述 java 内存分配与回收策率以及 Minor GC 和Major GC41、什么是 Redis?简述它的优缺点?42、Redis 与 memcached 相比有哪些优势?43、Redis 支持哪几种数据类型?44、Redis 主要消耗什么物理资源?45、Redis 有哪几种数据淘汰策略?46、Redis 官方为什么不提供 Windows 版本?47、一个字符串类型的值能存储最大容量是多少?48、为什么 Redis 需要把所有数据放到内存中?49、Redis 集群方案应该怎么做?都有哪些方案?50、Redis 集群方案什么情况下会导致整个集群不可用?51、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?52、Redis 有哪些适合的场景?53、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?54、Redis 和 Redisson 有什么关系?55、Jedis 与 Redisson 对比有什么优缺点?56、说说 Redis 哈希槽的概念?57、Redis 集群的主从复制模型是怎样的?58、Redis 集群会有写操作丢失吗?为什么?59、Redis 集群如何选择数据库?60、Redis 如何做内存优化?71 、什么是 Spring 框架?Spring 框架有哪些主要模块?72 、使用 Spring 框架能带来哪些好处?73 、什么是控制反转(IOC) ?什么是依赖注入?74 、请解释下 Spring 框架中的 IoC ?75 、BeanFactory 和 和 ApplicationContext 有什么区别?76 、Spring 有几种配置方式?77 、如何用基于 XML 配置的方式配置 Spring ?78 、如何用基于 Java 配置的方式配置 Spring ?79 、怎样用注解的方式配置 Spring ?80 、请解释 Spring Bean 的生命周期?81 、Spring Bean 的作用域之间有什么区别?82 、什么是 Spring inner beans ?83 、Spring 框架中的单例 Beans 是线程安全的么?84 、请举例说明如何在 Spring 中注入一个 Java Collection ?85 、如何向 Spring Bean 中注入一个 Java.util.Properties86 、请解释 Spring Bean 的自动装配?87 、请解释自动装配模式的区别?88 、如何开启基于注解的自动装配?89 、请举例解释@Required 注解?90 、请举例解释@Autowired 注解?91 、请举例说明@Qualifier 注解?92 、构造方法注入和设值注入有什么区别?93 、Spring 框架中有哪些不同类型的事件?94 、FileSystemResource 和 和 ClassPathResource 有何区别?95 、Spring 框架中都用到了哪些设计模式?96.RabbitMQ 中的 broker 是指什么?cluster 又是指什么?97.RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?98.什么是 ActiveMQ?99.Kafka 判断一个节点是否还活着有那两个条件?100、Kafka 消息是采用 Pull 模式,还是 Push 模式? 数据库三范式是什么? 有哪些数据库优化方面的经验? 请简述常用的索引有哪些种类? 以及在 mysql 数据库中索引的工作机制是什么?105.MySQL 的基础操作命令 106.mysql 的复制原理以及流程。107.mysql 支持的复制类型?108.mysql 中 中 varchar 与 与 char 的区别以及 varchar(50) 中的 50 代表的涵义? 表中有大字段 X (例如:text 类型),且字段 X 不会经常更新,以读为为主,将该字段拆成子表好处是什么?110.MySQL 中 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的? 111.分布式系统怎么做服务治理112.对分布式事务的理解113.如何实现负载均衡,有哪些算法可以实现?114.分布式集群下如何做到唯一序列号 什么是进程 什么是线程 线程和进程有什么区别 多线程的几种实现方式 多线程中忙循环是什么 为什么要用线程池?121.在java中守护线程和本地线程区别? 122.Java中用到的线程调度算法是什么?123.为什么使用Executor框架?124.什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?125.Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?126.什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?127.什么是并发容器的实现?128.多线程同步和互斥有几种实现方法,都是什么?129.为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?130.什么是不可变对象,它对写并发应用有什么帮助?131.Java中ConcurrentHashMap的并发度是什么?132.JVM中哪个参数是用来控制线程的栈堆栈小的?133.你如何在Java中获取线程堆栈?134.volatile 变量和 atomic 变量有什么不同?最后欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

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

微信小程序垄断和抄袭频发,问题不在腾讯而在开发者

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 8 月初,一篇名为《我们做了800个小程序,无一引爆》的文章让业界一片哗然,小程序表面上虽然火爆,但实际头部小程序已经建立了垄断地位,后入场者要实现分发背后依然困境重重。 除了分发困难之外,小程序的抄袭事件也层出不穷,例如流水破亿的游戏小程序《海盗来了》就被原作方《猪来了》的开发商诉诸法庭,而微信方面也不得不紧急下架一系列侵权小程序。 这一些列事件也在说明小程序的火爆,开发者们也想从中分羹,但在格局相当固定的当下,普通开发者无能为力,而不良开发者却凭借抄袭上位以此牟利。 不过另一面,微信小程序问题频出,原因或许并不仅仅在于微信平台的责任缺失等问题,而是在于开发者没有对小程序市场有足够的认识。微信固然是一个优质平台,但是这里的流量却似乎不适合所有开发者。 像百度这样日活早已突破1.5亿以及拥有8.5亿注册用户的支付宝,这样两大流量矿区,依然是开发者可以重点考虑的对象。 百度与支付宝的双双介入,对于开发者来说,可能是一件好事,其可以让开发者的小程序实现更多平台的分发,此外,由于这两大平台处于发展初期,也可以让开发者享受到***红利。 小程序问题频发 开发者必须重新审视三大问题 微信小程序的头部格局已经稳定,对于后入场的开发者更为需要思考流量,同质化竞争等诸多问题。 1)考虑获得更多的分发流量来源 在微信中一些最早入场的小程序诸如拼多多、京东购物、美团等等牢牢占据了头部,不可撼动。对于新入开发者而言,微信并没有一套完整的分发机制。 《我们做了800个小程序,无一引爆》一文中表示,此前原本以为微信开放了“附近”入口之后,其终于有了分发的机会,但结果却发现并没有太大的转化,可见小程序的分发甚至比公众号更为困难。 因此,小程序若想要发展,未来必须更为开放,并解决开发者的分发问题。 百度与支付宝则必然将会在这两方面提供支持,以百度为例,其有着高达1.5亿日活的百度APP,通过搜索+信息流两大场景为开发者提供小程序的分发流量,百度掌握着用户搜索以及信息流浏览数据,基于百度大脑的底层AI能力,可以实现精准的用户画像,继而为用户提供精准的服务。 2)利用第三方能力,打造差异化小程序的机会 目前小程序同质化的问题也同样严重,例如拼多多火爆之后,就出现了一大堆同类拼团产品,毫无创新,不断抄袭,而最近在微信中也已经很难看到爆款小程序的出现。 对于当前的开发者而言,如果再去抄袭同类产品,那么必然会面临无人问津的局面,这也是再正常不过,对于开发者而言,其需要考虑的是如何创造出差异化的产品。 就在此前谷歌的“猜画小歌”却突然爆火,这一现象其实说明,微信所提供的小程序技术能力,依然有所瓶颈,已经不足以支撑开发者的创新,而像谷歌这样的大公司拥有强大且成熟的AI技术能力,反而可以瞬间创造爆款。 这也说明了,如果开发者能够利用平台提供的技术能力,来与自身小程序进行结合,则同样有机会打造出爆款小程序。 在这点上,百度与支付宝都各有千秋,支付宝方面有着独家的芝麻信用,这类的风控产品,其已经用到了充电宝、共享单车的免押金租赁上,数据显示,大幅度降低了这类共享产品的获客成本。 而百度方面则能够提供与谷歌一样的AI能力,百度小程序的 “长隆AR动物园”,其运用到了百度的AR渲染、图像识别等多项AI技术,让用户可以直接通过手机观看到全方位立体的AR动物,仿佛近在咫尺,百度多年的AI开放平台能力,也将为小程序开发者提供更大的AI能力赋能,让其创造出更多的场景。 3)考虑对小程序版权的保护意识,尽量同时多家上线 微信游戏小程序,表面上是促进游戏生态的繁荣 ,但实际上却促进了侵权抄袭的泛滥。 真正优质的轻量级游戏必然都在苹果商城、安卓商城有所验证,不良开发者只需要将其进行一定程度的改编,改头换面之后上架微信小程序,则可以赚的盆满钵满,《海盗来了》等游戏小程序被原作方所告,以及诸多游戏小程序的下架,正说明了微信方面管理不严的问题所在。 对于开发者来说,目前这是一道无解的难题,但是其也必须将版权保护纳入保护范围。因此,如果自身小程序在微信上线之后,如果不尽快在支付宝以及百度同时上线,也有可能遭遇到其他创业者的剽窃并蒙受不必要的损失。 此外,接入其他平台并不是难事,开发者的接入也是轻而易举,并不需要花费太多精力,将自身小程序同时上线多家平台也是最明智之举。 结语 小程序已经伴随微信走过一年半的时间,走到今天已经形成了头部小程序绝对垄断的趋势,而后入场的开发者,则无法解决分发的问题,以及无法制造出更多差异化的能力,甚至无力应对版权保护问题。 作为开发者,不应当将眼光局限于微信之中,其更应当看到百度等平台带来的广阔市场,对流量分发,以及制造差异化小程序,版权保护等等进行更多的思考。

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

(牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)

假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa,aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx,yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 编写一个函数,输入是任意一个编码,输出这个编码对应的Index. 输入描述: 输入一个待编码的字符串,字符串长度小于等于100. 输出描述: 输出这个编码的index 示例1 输入 baca 输出 16331 题目解析点击进入 JAVA import java.util.*; public class Main { public static int number(String str) { int add = str.length()-1;//要考虑到字符串的长度 int mul1 = 1 + 25 + 25*25 + 25*25*25;//从左往右,第一位(进位所需要乘以的数值) int mul2 = 1 + 25 + 25*25;//第二位 int mul3 = 1 + 25;//第三位 int mul4 = 1;//第四位 int[] mul = new int[4];//把上面的四个数放到数组里,以便在下面的循环中使用 mul[0] = mul1; mul[1] = mul2; mul[2] = mul3; mul[3] = mul4; char[] ch = str.toCharArray(); int result = 0; for(int i = 0;i < ch.length;i++) { result += (ch[i] - 'a')*mul[i]; } result += add;//最后把长度考虑进去,不然会出现错误,比如a和aa都会返回0 return result; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); scanner.close(); int result = number(str); System.out.println(result); } } C /* * 五笔编码 * * 五笔的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把五笔的编码按字典序排序,形成一个数组如下: * a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy * 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。 * 编写一个函数,输入是任意一个编码,比如baca,输出这个编码对应的Index; * 编写一个函数,输入是任意一个Index,比如12345,输出这个Index对应的编码。 */ void WubiIndex(const string &input) { const int NUM = 25; const char* p = input.c_str(); int index = 0; int N = 3; int SUM[4] = {1}; for(int i = 1; i < 4; ++i) SUM[i] = NUM * (SUM[i-1]) + 1; while(*p) { int temp = 0; index += (*p -'a')*SUM[N--]; ++p; } cout<<"index is "<<index<<endl; } void WubiCoding(int index) { const int NUM = 25; int SUM[4] = {1}; for(int i = 1; i < 4; ++i) SUM[i] = NUM * (SUM[i-1]) + 1; char ch[5] = {'\0'}; int N = 3; int M = 0; while(index > 0) { ch[M++] = 'a' + (index - 1)/SUM[N]; index = (index - 1)%SUM[N--]; } cout<<"string is "<<ch<<endl; }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

WebStorm

WebStorm

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

用户登录
用户注册