使用 ReentrantLock 和 Condition 实现一个阻塞队列
前言 从之前的阻塞队列的源码分析中,我们知道,JDK 中的阻塞队列是使用 ReentrantLock 和 Condition 实现了,我们今天来个简易版的。代码如下: 代码 public class BoundedBuffer {
final ReentrantLock lock = new ReentrantLock();
final ConditionObject notFull = (ConditionObject) lock.newCondition();
final C
kafka server.properties配置文件详解
0.9.0 ############################# Server Basics ############################# # 节点的ID,必须与其它节点不同 broker.id=0 ############################# Socket Server Settings ############################# listeners=PLAINTEXT://:9092 # 监听端口 #port=9092 # 节点需要绑定的主
Vue中父子组件通讯——组件todolist
一、todolist功能开发 <div id="root">
<div>
<input type="text" v-model="inputValue">
<button @click="handleSubmit">提交</button>
</div>
<ul>
<li v-for="(item, index ) of list" :key="index">{{i
并发编程之 CyclicBarrier 源码分析
前言 在之前的介绍 CountDownLatch 的文章中,CountDown 可以实现多个线程协调,在所有指定线程完成后,主线程才执行任务。 但是,CountDownLatch 有个缺陷,这点 JDK 的文档中也说了:他只能使用一次。在有些场合,似乎有些浪费,需要不停的创建 CountDownLatch 实例,JDK 在 CountDownLatch 的文档中向我们介绍了 CyclicBarrier——循环栅栏。具体使用参见文章 并发编程之 线程协作工具类。 源码分析 该类结构如下: 有一个
ASP.NET设置母版页
母版页允许开发人员创建具有指定的可编辑区域的站点级模板。随后,此模板可应用到网站中的 ASP.NET 页面上。这些 ASP.NET 页面只需为母版页中指定的可编辑区域提供相应内容 – 在使用母版页的所有 ASP.NET 页面中,母版页中的所有其它标记都相同。此模型允许开发人员定义并集中实现站点级页面布局。 因此,开发人员可以方便地为所有页面创建一致的外观,并进行轻松的更新。 简而言之:在一个网站上会有很多页面,并且有可能有的页面都有相同的部分,这样的话我们就可以将相同的部分制作成一个母版页,在
并发编程 —— 源码分析公平锁和非公平锁
前言 ReentrantLock 提供了公平锁和非公平锁,只需要在构造方法中使用一个 boolean 参数即可。默认非公平锁。 今天从源码层面看看区别和具体实现。 1. 类 UML 图 ReentrantLock 内部有一个抽象类 Sync,继承了 AQS。 而公平锁的实现就是 FairSync,非公平锁的实现就是 NodFairSync。 两把锁的区别在于lock 方法的实现。 2. 公平锁 lock 方法实现 final void lock() {
acquire(1);
} 调用
并发编程 —— ConcurrentHashMap size 方法原理分析
前言 ConcurrentHashMap 博大精深,从他的 50 多个内部类就能看出来,似乎 JDK 的并发精髓都在里面了。但他依然拥有体验良好的 API 给我们使用,程序员根本感觉不到他内部的复杂。但,他内部的每一个方法都复杂无比,就连 size 方法,都挺复杂的。 今天就一起来看看这个 size 方法。 size 方法 代码如下: public int size() {
long n = sumCount();
return ((n < 0L) ? 0 : (n > (lo
PLL到底是个啥么东西呢?
PLL的出现是为了解决这样一个问题的:就是外部输入的信号实际上与内部时钟振荡信号是完全不同步的,为了解决这个问题,我们想到了用改进工艺的方法,但实际上晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,有相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时脉冲讯号。 功能:锁相实际上是为了实现相位同步自动控制,能够完成两个电信号相位同步的自动控制闭环系统叫做锁相环,简称PLL。 应用:广泛应用于广播通信、频率合成、自动控制及时钟同步等技术领域。 一个典型
MySQL 5.7 解压版安装配置
测试环境 系统:Windows 10专业版 版本:MySQL Server 5.7.14 提纲 修改配置文件 初始化 安装服务、启动服务 修改root密码 步骤 1、解压安装包 在MySQL官网上下载zip包,解压后内容如图所示。 (注意:在解压的目录中默认不存在“data”目录,需要手动添加或者执行初始化命令后自动生成。) 2、修改配置文件 在解压后的目录中,my-default.ini是默认配置文件,MySQL运行时首先会在bin目录下寻找my.ini文件。复制my-default.ini
Nginx 反向代理配置
没啥好说的,直接上配置
server {
listen 80;
server_name test.domain.com;
# 默认路径访问前台网站
location / {
proxy_pass http://backend1.domain.com;
proxy_redirect off;
...
Redis 与 Memcached 的比较
文章转载自:https://www.sojson.com/blog/108.html
Redis 和 Memcached 在选型上一直是个热门的话题。好多人想都不想,选用 Redis,认为 Redis 的高 IO 性能。其实不然,还是得看在什么应用场景上。那么我们来探讨一下他们的相同点和不同点,然后再进行分析。
一、Redis 和 Memcached 的相同点
让...
Windows 下手动配置 Nginx 及 PHP-CGI 多进程开机自启方法
强迫症福利,像我这样的人除非懒到极致才会用 phpStudy 这样的一键式集成环境,但是用的时候也会去更换 MySQL/Nginx/PHP 版本,因为 PHP 和 MySQL 在集成环境里面大多是 x86 版,换成 x64 可以更科学的运行在 64 位系统上。另外手动配置可以让你能更了解这些组件的配置,至少为以后的优化、调整等有了一点基础。
OK,先入手这些玩意儿的压缩包
Ngin...
Linux 之 vi vim 常用快捷方式
vivim常用快捷方式0回到行首$回到行尾gg回到文本首行G回到文本尾行setnu显示行数行号+gg跳到某行dd删除当前行/字符查找字符yypp复制当前行o在当前行下的插入一行:wq保存退出:q!不保存退出
Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案
这是结果
检查端口是否被占用
修改 Windows 服务里的 Redis 服务为本地系统服务(修改方式见下文)
这是分析
看系统日志
桌面计算机/此电脑(Win10名称)右键打开管理,或 Win+R 输入 compmgmt.msc 打开计算机管理
在事件查看器下打开 Windows 日志里面的应用程序,找到来源为 redis 的日志,双击打开一条:
# 不出意外内容如下
sy...
Mac HomeBrew 自 18-03-31 起弃用 homebrew/php 后安装 Xdebug 方法
详见:https://brew.sh/2018/01/19/homebrew-1.5.0/
By 31st March 2018 we will deprecate and archive the Homebrew/php tap. Unfortunately we have been unable to maintain an acceptable, consistent user or...
jQuery DataTables 的几个坑,异步加载(服务器)、监听、重载等等
今天真的被这破插件气疯了,于是有了下面的截图。此文不定期更新,要是有新坑欢迎来填。
jQuery DataTables 的几个坑,监听、重载等等
看看截图娱乐娱乐
好了,正事儿要紧,先来说说这玩意儿的加载过程
首先必不可少的 jQuery、DataTables.js、DataTables.css 的引入略过
我们先手写好一张 table 表格,大概...
Laravel 5.3+ 在控制器和模型的构造函数 __construct 使用 Session 方法
这个问题有点坑,如果不按照规则来操作,很有可能取出来是一个 null,或空数组。
当我看到这句话时才明白:
In Laravel 5.3, you can’t access the session or authenticated user in your controller’s constructor because the middleware has not run ...
功夫不负有心人,小米 Note 3 进 EDL 模式方法。可修复传感器、相机启动贼慢问题
翻阅 XDA 和海外 MIUI 论坛许久,国内 MIUI 论坛也看了个遍,没找到可靠的解决办法,于是自己瞎 J8 折腾,还真弄出来了
先说一下,我在看 XDA 论坛时,RedMi Note 3(红米3)板块有网友提到 fastboot erase psersist 和 fastboot flash persist persist.img 的修复方法。
还有进入 EDL 模式,然后修改 ...
今日推荐
周排行