“绝版”!来自美团架构师架构师手打Java并发实现原理:JDK源码剖析,看完我直接给跪了

JAVA并发编程——源码原理全面剖析与重点梳理 帧与帧栈 每个线程有一块栈内存 每个栈由多个栈帧组成,每个栈帧对应每次方法调用占用的内存 每个线程只能有一个活动栈帧,对应当前正在执行的那个方法 线程上下文切换 线程的CPU时间片用完 垃圾回收 有更高优先级的线程需要运行 线程自己调用了sleep、yield、wait、join、park、synchronized、lock等方法 其中程序计数器的作用 操作系统保存当前线程的状态,记住下一条jvm指令的执行地址,用于恢复线程的状态 PS:状态:程序计数器、栈中每个帧栈的信息 线程状态 阅读详情

对于人脑的认知来说,“代码一行行串行”当然最容易理解。但在多线程下,多个线程的代码交叉并行,要访问互斥资源,要互相通信。作为开发者,需要仔细设计线程之间的互斥与同步,稍不留心,就会写出非线程安全的代码。正因此,多线程编程一直是一个被广泛而深入讨论的领域!

今天就来分享一份美团架构师纯手打的Java并发实现原理:JDK源码剖析,由于这份笔记的内容过多,小编没办法全部为大家展示出来,有不尽完美之处,还望大家多多海涵,同时小编已经整理成PDF蓝光版,需要免费获取的朋友麻烦私信我【333】或者【666】即可!

第1篇:多线程基础

  • 线程的优雅关闭
  • InterruptedException () 函数与interrupt ()函数
  • synchronized关键字
  • wait () 与notify ()
  • volatile关键字
  • JMM与happen-before
  • 内存屏障
  • final关键字
  • 综合应用:无锁编程

饿了么架构师发布“绝版”Java并发实现原理:JDK源码剖析

 

饿了么架构师发布“绝版”Java并发实现原理:JDK源码剖析

 

饿了么架构师发布“绝版”Java并发实现原理:JDK源码剖析

 

饿了么架构师发布“绝版”Java并发实现原理:JDK源码剖析

 

第2篇:Atomic类

  • AtomicInteger和AtomicLong
  • AtomicBoolean和AtomicReference
  • AtomicStampedReference和AtomicMarkableReference
  • AtomicI
美团架构师探秘Java生态系统,介绍JDK、JVM、JEP OpenJDK OpenJDK原是Sun MicroSystems公司(下面简称Sun公司)为Java平台构建的Java开发环境,于2009年4月15日由Sun公司正式发布。后来Oracle公司在2010年收购Sun公司,接管了这项工作。 随着OpenJDK的发布,越来越多的公司和组织都基于OpenJDK深度定制了一些独具特色的JDK分支,为用户提供更多选择。例如,国内厂商阿里巴巴的Dragonwell支持JWarmup,可以让代码在灰度环境预热编译后供生产环境直接使用;腾讯的Kona 8将高版 阅读详情

相关推荐

Java线程池实现原理及其在美团业务中的实践

随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。一、写在前面1.1 线程池是什么线程池(Thread Pool)是一种

JavaShark的博客 555

膜拜~ 终于拿到了美团老大哥分享的 Netty 源码剖析与应用 PDF

前言 Netty 是一款基于 NIO(非阻塞 I/O)开发的网络框架,与传统 BIO 相比,它的并发性能得到了很大的提高,而且更加节省资源。Netty 不仅封装了 NIO 操作的很多细节;在设计上还基于灵活、可扩展的事件驱动模型与高度可定制的线程模型,让 Netty 的应用更加灵活。 作为一个被广泛使用的 Java 网络编程框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、物联网行业等都得到了广泛的应用。很多流行的大数据框架的核心通信模块也都使用的是 Netty,如 Elasticsea..

SharingOfficer的博客 981

5年Java面试阿里P6经验总结

这里写篇日记总结一下我最近面试经历吧。 2019年6月1日办理了离职手续,离开了万通中心,也算是和我的第二个东家正式说了再见,其实还是很喜欢国贸的, 这是个美妙的地方,容纳着很多金融界人才们的梦想,每每晚上走到这里你会感叹帝都的夜景好美,只可惜这里的多数人都顾不上欣赏这里的风景, 每个人都生活在压力下,成为了金钱的奴隶,但这并不是什么坏事,因为他们上有老下有小,身上背负着责任,也正是他们的身...

csdn鲲鹏号 1万+

字节跳动2面、美团2面Java面试真题总结

11.常用设计模式,策略模式的原理和应用之后的话就是聊项目,做了哪些,遇到了哪些问题代码题:两个链表代表的大数进行相加,我用两个栈分别保存链表,然后出栈的时候用头插法生成新链表,感觉时间复杂度没有最优,但是也过了面试官介绍部门和业务的时候很热情也很详细,然后说等HR通知~总的来讲,比起字节跳动,美团的面试稍微简单一丢丢,因为不会问的太底层,太发散,然后两家公司的面试官都很赞,很有耐心也很热情!4.Mysql中有哪些索引,你能想到哪些作为索引的数据结构,HashMap,B+树,前缀树,面试官提示跳表。

m0_74825074的博客 1059

美团社招Java后端三面面经:高并发与系统设计实战复盘

在大厂技术面试中,高并发场景下的系统设计能力与分布式一致性方案的边界思考,往往是决定候选人能否脱颖而出的关键。从Java基础到并发编程,从MySQL索引到缓存穿透,再到秒杀系统的层层防护,每一环节都在考察工程师对原理的理解深度与工程实践的沉淀。面试官通过连环追问,验证候选人能否在极端流量下做出合理取舍,在消息重复、数据不一致等边界问题中保持逻辑清晰。这种考察方式不仅适用于美团,也适用于所有重视技术深度的互联网团队。本文以一位三年Java后端经验的候选人视角,完整复盘美团到店业务三轮技术面的考察逻辑、典型题目

weixin_33508411的博客 285

Java八股文一周突击攻略:从背题到架构师思维

在Java后端开发与面试准备中,八股文常被视为死记硬背的代名词,但本质上它是一份浓缩了高频考点与工程经验的知识地图。理解其背后的原理与设计权衡,比单纯背诵答案更能体现技术深度。从JVM内存模型、垃圾回收机制到并发编程中的synchronized、volatile与AQS,再到HashMap的哈希冲突处理与Spring事务失效场景,这些基础概念构成了大厂面试的核心筛选维度。掌握这些知识不仅能帮助求职者应对面试中的连环追问,更能为实际项目中排查性能瓶颈、设计高并发系统提供理论支撑。当开发者学会用“为什么”串联起

weixin_29758911的博客 321

春招结束,费时三个月成功拿下美团3-1offer,分享一下我的面经希望帮助到大家!

前言 前置:事业群填的都喜欢 笔试是3.27下午16:00-18:00,笔试成绩(490/500) 4.1上午美团11点一面 45min左右 自我介绍 + 项目介绍 面试官挑项目中的难点进行提问 JVM垃圾回收 先问jdk版本(本人jdk8) 说一下CMS和G1的区别以及各自特点 一道多线程编程的题 三个线程,分别打印1-10,11-20,21-30,要求同时进行,同时最后需要这些数的和全部加起来打印。即在主线程中进行打印(1-30的和) 我还没写完,面试官就说可以了,说我之前写的join方法是没问题的(我

weixin_49494194的博客 4102

工作4年从美团、360、陌陌、百度、阿里、京东面试回来感想

已经凌晨2点多了,看来今天是失眠了,反正睡不着,写篇日记总结一下我最近面试经历吧。 2019年5月1日办理了离职手续,离开了万通中心,也算是和我的第二个东家正式说了再见,其实还是很喜欢国贸的, 这是个美妙的地方,容纳着很多金融界人才们的梦想,每每晚上走到这里你会感叹帝都的夜景好美,只可惜这里的多数人都顾不上欣赏这里的风景, 每个人都生活在压力下,成为了金钱的奴隶,但这并不是什么坏事,因为他们...

Java_q705127209的博客 787

花168大洋买来的「阿里P8Java成长笔记」,看完才知道我就是lj

花168大洋买来的「阿里P8Java成长笔记」,看完才知道我就是菜鸡

weixin_71682097的博客 1493

美团一面面经及详细答案

文章目录1.自我介绍2.Spring AOP底层原理3.HashMap的底层数据结构,如何进行扩容的?4.ConcurrentHashMap如何实现线程安全?size()方法是加锁的吗?如何实现的?5.线程池参数6.线程池大小如何设置7.IO密集=Ncpu*2是怎么计算出来8.synchronized的锁优化锁的升级偏向锁轻量级锁自旋锁9.常用垃圾回收器10.G1有哪些特点11.MySQL事务隔离级别12.可重复读解决了哪些问题13.脏读 不可重复读 幻读14.聚集索引 非聚集索引15.慢查询优化,会考虑哪

weixin_70730532的博客 1850

美团开源监控框架CAT服务端配置

在美团的官方部署文档完善之前,先写下自己部署CAT的过程,因为靠现有的官方文档和网上的资料,容易又并没有那么容易。 一.部署环境 Linux+Java JDK1.8+Maven3.5.4+Tomcat 8+Mysql 5.7 二.部署流程 1.安装jdk+maven+tomcat+mysql 这部分没有什么特殊的。 2.下载CAT 地址:https://github.com/dianping/ca...

生活没有if-else 4513

Java大厂面试300道核心真题解析:从基础到架构,吃透直接拿25K+

核心考点:Java基础(集合/字符串)、JVM(内存/GC)、并发(锁/线程池)、Spring(IOC/AOP)、分布式(锁/缓存/MQ)、性能优化(MySQL/JVM)是25K+面试的核心;答题技巧:不仅要答出答案,还要讲底层原理、实战案例、优化方案,体现深度和广度;实战导向:所有真题解析都结合大厂实战场景,吃透后能直接应对面试,同时落地到实际工作中;薪资关键:突出并发/分布式/性能优化的实战经验,这是大厂给25K+薪资的核心依据。

2601_94871597的博客 481

Java面试高频考点:集合框架、JVM调优与并发编程深度解析

Java集合框架是开发者必须掌握的核心技术之一,其底层实现原理直接关系到系统性能与线程安全。以HashMap为例,通过数组+链表+红黑树的数据结构实现高效键值存储,但在多线程环境下可能出现数据覆盖或死循环问题。JVM调优则是保障应用稳定运行的关键,通过分析GC日志可以快速定位内存泄漏或不当的对象晋升问题。并发编程中,正确使用synchronized和ThreadLocal能有效提升系统吞吐量,但需注意避免内存泄漏。这些技术不仅是面试高频考点,更是大型分布式系统开发的工程实践基础,掌握它们能帮助开发者在高并发

weixin_34253126的博客 368

GDAL 源码剖析 李老师

李老师的GDAL源码剖析书籍,包含C++、C、Pyhton、java数据读写代码。

GDAL源码剖析(李民录).pdf

前言:一直在使用 GDAL 及其相关的库,发现网上对 GDAL的内容倒是不少,但是很少有系统的介绍说明, 以及 GDAL 内部的一些结构说明。基于这些原因,将本人的一些粗浅的理解放在此处,形成一个系列,暂时名 为《GDAL源码剖析》(名称有点大言不惭,欢迎大家口水吐之,板砖拍之),供大家交流参考,有什么错误之处, 望大家不吝指正。本系列对于 GDAL的使用均是在Windows 平台下,对于 Linux平台下的不在此系列讨论范围 之内。此外,转载本博客内容,请注明出处,强烈鄙视转载后不注明出处的 类剽窃 行为。

STM32 CubeMX实战:手把手教你用I2C驱动IST8310磁力计(附完整代码)

本文详细介绍了如何使用STM32 CubeMX和I2C驱动IST8310磁力计,从硬件连接到代码实现的完整流程。重点讲解了I2C通信异常处理、传感器初始化序列优化以及中断驱动数据采集方案,帮助开发者快速搭建可靠的地磁场数据采集系统。

weixin_42531163的博客 189

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7124

李大勇matlab密码,基于MatlabSimulink的太阳能热水系统仿真研究 沈超.doc

基于MatlabSimulink的太阳能热水系统仿真研究 沈超中国工程热物理学会 工程热力学与能源利用 编号:141090基于Matlab/Simulink的太阳能热水系统仿真研究沈 超1 1 余 鹏1 李洪欣1 魏新利2郑州大学土木工程学院,郑州 450001郑州大学化工与能源学院,郑州 45...

weixin_42298437的博客 1343

AI赋能合同审查:构建租赁合同智能审核系统的全流程解析

在商业地产、设备租赁等场景中,合同审核效率直接影响业务流转速度。传统人工审核存在三大痛点:审核周期长(平均2-3个工作日)、合规风险高(条款遗漏率约15%)、人力成本居高不下。智能审核系统可将审核时间压缩至秒级,风险识别准确率提升至98%以上。

理论都是虚的,代码才是王道。 1356

UNet改进(47):Deformable Convolution在UNet中的集成与应用

本文提出了一种可变形U-Net(DeformableUNet)结构,通过在U-Net的双卷积模块中集成可变形卷积(DeformConv2d)来提升模型对物体形变和复杂结构的建模能力。传统卷积受限于固定感受野,而可变形卷积通过动态调整采样位置,能更好地适应不规则形状。实现中,在DoubleConv模块的第二个卷积层替换为可变形卷积,同时保持第一层为标准卷积以确保稳定性。实验表明,该方法在保持参数量基本不变的情况下,显著提升了分割精度(mIoU从0.712提升到0.743)。

2501_91516851的博客 202

IEC 104电力规约详细解读(一) - 报文结构、报文分类、ASDU

比如,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧,当然也可以不要求(S帧内容示例参考例1)。所以U帧格式的控制欲第一个字节就只有6种情况,分别是0x83(TESTER确认)、0x43(TESTER命令)、0x23(STOPDT确认)、0x13(STOPDT命令)、0x0B(START确认)、0x07(START命令)ASDU(应用服务数据单元),协议原文格式最好去101协议去看看,会比较详细。遥信、遥测、遥控、遥调、总召、对时等都需要使用I格式传送。

张二狗的博客 1万+

SPICE仿真软件:HSPICE_(20).HSPICE仿真结果的后处理

HSPICE仿真结果的后处理是一个多步骤的过程,包括读取结果文件、可视化、分析和导出。通过使用命令行工具、Python脚本和HSPICE内置工具,可以高效、准确地完成这些任务。Python脚本的灵活性和强大的数据分析能力使其成为后处理的理想选择。自动化处理可以显著提高工作效率,减少人为错误,而高级分析方法可以更深入地理解仿真结果,为电路设计提供有力支持。

kkchenjj的博客 1382

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 最快最强?腾讯高级技术专家深入浅出整理Java性能优化全栈笔记,强了不止一点
下一篇: 五面阿里余额宝成功入职,定级P6+!高达98%提问率的面试题,你都会了么?
Java奥利给
博客等级 码龄6年 150粉丝 154原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值