34 天前 / java金融
点击上方“Java 金融”,选择“设为星标” 后台回复"888"获取 bat 面试题集 引言上一篇文章我们介绍了 AQS 的信号量 Semaphore《Java 高并发编程基础三大利器之 Semaphore》,接下来应该轮到 CountDownLatch 了。 什么是 CountDownLatchCountDownLatch 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就减 1,当计数器的值为 0 时,表示所有线程都执行完毕,然后在闭锁上(调用 await 方法的线程)等待的线程就可以恢复工作了。
35 天前 / Silently9527
前言现在大部分的 CPU 都是多核,我们都知道想要提升我们应用程序的运行效率,就必须得充分利用多核 CPU 的计算能力;Java 早已经为我们提供了多线程的 API,但是实现方式略微麻烦,今天我们就来看看 Java8 在这方面提供的改善。 假设场景现在你需要为在线教育平台提供一个查询用户详情的 API,该接口需要返回用户的基本信息,标签信息,这两个信息存放在不同位置,需要远程调用来获取这两个信息;为了模拟远程调用,我们需要在代码里面延迟 1s; publicinterfaceRemoteLoader{ Stringload(); defaultvoiddelay(){ try{ Thread.sleep(1000L); }catch(Interr...
35 天前 / 知了一笑
一、时间和日期在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分析,集群节点统一时间避免超时等。 在时间和日期中有几个关键概念: 日期:通常年月日的组合表示当前日期。 时间:通常时分秒的组合表示当前时间。 时区:世界各国家与地区经度不同,划分 24 个标准时区,相邻时区的时间相差一个小时。 时间戳:从 UTC 时间的 1970-1-1 00:00:00 起到现在的总秒数。
36 天前 / realpdai
关于数据库基础和原理 数据库基础和 SQL 知识体系详解SQL DB - 关系型数据库是如何工作的 SQL DB - 关系型数据库设计理论 SQL DB - 关系型数据库设计流程 SQL DB - 数据库系统核心知识点 SQL 语言 SQL 语言 - SQL 语法基础 SQL 语言 - SQL 语句练习 SQL 语言 - SQL 题目进阶 SQL 语言 - SQL 语句优化 SQL - MySQL MySQL 知识体系详解MySQL - 数据类型 MySQL - 存储引擎 MySQL - 索引 (B+ 树)MySQL - 性能优化 MySQL - 分表分库 MySQL - 主从复制与读写分离 MySQL - 一条 SQL 的执行过程详解 NoSQL - Redis Redis 教程 - Redis 知识体系详解Redis 入门 ...
37 天前 / u128287
本文字数:5036字 预计阅读时间:30 分钟 Java 并发是一个很大的主题,包含很多方面的知识。本文从内存模型的角度分析,从概念理论上尽量精确理解 Java 内存模型,及其对并发的影响。 文章目录一。 引入 1. 并发的概念二。 内存模型的理解 1. 什么叫内存模型 2. 顺序一致性模型 3. happens-before 模型 4. Java 内存模型 及 “因果关系”(Causality)三。 提炼理念 1. 技术层次观念与思想方法的互通 2. executed 和 exhibit 的区别,及双向视图 一。
38 天前 / Dunizb
原文:https://suzdalnitski.medium.com/oop-will-make-you-suffer-846d072b4dce 作者:Ilya Suzdalnitski C++ 和 Java 可能是计算机科学中最严重的错误。两者都受到了 OOP 创始人 Alan Kay 本人以及其他许多著名计算机科学家的严厉批评。然而,C++ 和 Java 为最臭名昭著的编程范式 -- 现代 OOP 铺平了道路。 它的普及是非常不幸的,它对现代经济造成了极大的破坏,造成了数万亿美元至数万亿美元的间接损失。成千上万人的生命因 OOP 而丧失。在过去的三十年里,没有一个行业不受潜伏的 OO 危机的影响,它就在我们眼前展开。
39 天前 / 四猿外
经常有读者在微信上问我: “在学编程的过程中,看了不少书、视频课程,但是看完、听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找? ”类似的问题,有不少读者问,估计是大部分人的困惑。 练手项目那肯定是去 github 找啊! 之前我在知乎上回答过这种问题,分享了一些 github 的项目,点赞还不错。 所以,这次我又重新整理了一下,分享出来。以下项目排名不分先后: 1. litemallhttps://github.com/linlinjava/litemall Star: 15.5k 这是一个小商城系统。
39 天前 / OverWrite
在数据结构中,队列与栈的产生主要是为了满足某些特殊的编程运算,数据结构最大的一个特点就是为算法提供基础,使用不用的数据结构甚至能直接影响算法的好坏,多数情况下,数据结构与算法是一种相辅相成的关系。 栈:和我们上节说到的一样,栈也是一种线性的存储结构。但是它限制了只能在线性表的尾部进行数据插入和删除操作,根据一张图示来进行形象说明。栈的数据存放原则遵循先进后出的数据存放原则,因为它的数据出口只有一个,那就是栈顶,也就是上面所说的栈尾。
41 天前 / OverWrite
在 Java 语言众多的关键字中,final 关键字无疑是被提到最多的,也是在面试过程中经常被问到的知识点。今天,老王查找了很多材料,最后终于收集了关于 final 关键字比较全的知识点。首先,final 关键字可以修饰的对象有三个:一是修饰变量、二是修饰方法、三是修饰类,下面我们来看经过 final 关键字修饰的这三种对象会有着怎样的不同。 1,final 关键字修饰变量在使用 final 关键字修饰变量时,又可以分为两种情况:一种是基本数据类型的变量、另一种是引用类型的变量。
44 天前 / java金融
点击上方“Java 金融”,选择“设为星标” 后台回复"888"获取 bat 面试题集 引言最近可以进行个税申报了,还没有申报的同学可以赶紧去试试哦。不过我反正是从上午到下午 (3 月 1 日)一直都没有成功的进行申报,一进行申报就返回“当前访问人数过多,请稍后再试”。为什么有些人就能够申报成功,有些人就直接返回失败。这很明显申报处理资源是有限的,只能等别人处理完了在来处理你的,你如果运气好可能重试几次就轮到你了,如果运气不好可能重试一天也可能轮不到你。我反正已经是放弃了,等到夜深人静的时候再来试试。
44 天前 / Yu_Hao
不少人应该都见过 Java 里的这种“双括号初始化”的代码,比如下面这段用来初始化 HashSet 的代码: Setcountries=newHashSet(){{ add("India"); add("China"); add("USA");}};作为对比,和等价的标准初始化代码相比: Set countries = new HashSet(); countries.add("India");countries.add("China");countries.add("USA");“双括号初始化”的代码大概可以算是更简洁吧,但是它其实并不是 Java 的原生语法。
46 天前 / u553041
陈述事实现象 foreach 循环 从 JDK 5 开始,Java 可以使用 foreach 对数组或者实现了 Iterator 的集合进行遍历。 对上述代码进行反编译,可以得出如下字节码: 可以看出,在编译时期 Java 编译器对 foreach 语法进行的字节码优化 -- 使用 Iterator 对其进行转换。因此上述 Java 代码等同于如下代码: 注:foreach 实际上是一种语法糖,所谓语法糖就是通过编译器或者其它手段对代码进行优化,让开发人员更加方便使用。 透过现象看本质 foreach 循环 foreach 确实在一定程度上,方便了对集合的遍历操作。但是在实际使用过程中,也是有坑存在的。
47 天前 / Inputing
一 背景 1 目的 欲善其事,先利其器。对于研发同学,在日常的开发工作中,我们与之打交道最多的便是编程的 IDE。能否高效和灵活的使用 IDE,将对我们的工作效率起着举足轻重的作用。 研发同学在开发中最主要做的两件事分别是架构设计和编码,前者主要取决于大量的项目经验积累和个人的思考深度,也是作为研发的核心竞争力,短时间内很难快速求成;后者主要取决于日常的编码练习和一定程度的 IDE 信息差,能够通过下文中介绍的一系列技巧进行能力的快速补齐和巩固加强。
47 天前 / flyer0126
SnowFlake 算法是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。给大家举个例子吧,比如下面那个 64 bit 的 long 型数字:第一个部分,是 1 个 bit:0,这个是无意义的。 第二个部分是 41 个 bit:表示的是时间戳。 第三个部分是 5 个 bit:表示的是机房 id,10001。
47 天前 / Silently9527
在 Java7 之前想要并行处理大量数据是很困难的,首先把数据拆分成很多个部分,然后把这这些子部分放入到每个线程中去执行计算逻辑,最后在把每个线程返回的计算结果进行合并操作;在 Java7 中提供了一个处理大数据的 fork/join 框架,屏蔽掉了线程之间交互的处理,更加专注于数据的处理。 Fork/Join 框架 Fork/Join 框架采用的是思想就是分而治之,把大的任务拆分成小的任务,然后放入到独立的线程中去计算,同时为了最大限度的利用多核 CPU,采用了一个种工作窃取的算法来运行任务,也就是说当某个线程处理完自己工作队列中的任务后...