使用 ReentrantLock 和 Condition 实现一个阻塞队列

前言 从之前的阻塞队列的源码分析中,我们知道,JDK 中的阻塞队列是使用 ReentrantLock 和 Condition 实现了,我们今天来个简易版的。代码如下: 代码 public class BoundedBuffer { final ReentrantLock lock = new ReentrantLock(); final ConditionObject notFull = (ConditionObject) lock.newCondition(); final C
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

kafka server.properties配置文件详解

0.9.0 ############################# Server Basics ############################# # 节点的ID,必须与其它节点不同 broker.id=0 ############################# Socket Server Settings ############################# listeners=PLAINTEXT://:9092 # 监听端口 #port=9092 # 节点需要绑定的主
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

Vue基础语法

一、挂载点,模版和实例 二、Vue实例中的数据,事件和方法 1、v-html指令和v-text指令 v-html :不转义 v-text :转义过后的内容 <div id="root"> <div v-html="content"></div> <div v-text="content"></div> </div> <script> new Vue({ el:"#root", data
分类: 其他 发布时间: 05-19 23:41 阅读次数: 4

PyCharm-缩进 格式化代码

格式化代码   Ctrl + Alt + l 缩进代码   Tab        向右缩进4格   Shift + Tab    向左缩进4格
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

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
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

并发编程之 CyclicBarrier 源码分析

前言 在之前的介绍 CountDownLatch 的文章中,CountDown 可以实现多个线程协调,在所有指定线程完成后,主线程才执行任务。 但是,CountDownLatch 有个缺陷,这点 JDK 的文档中也说了:他只能使用一次。在有些场合,似乎有些浪费,需要不停的创建 CountDownLatch 实例,JDK 在 CountDownLatch 的文档中向我们介绍了 CyclicBarrier——循环栅栏。具体使用参见文章 并发编程之 线程协作工具类。 源码分析 该类结构如下: 有一个
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

ASP.NET设置母版页

母版页允许开发人员创建具有指定的可编辑区域的站点级模板。随后,此模板可应用到网站中的 ASP.NET 页面上。这些 ASP.NET 页面只需为母版页中指定的可编辑区域提供相应内容 – 在使用母版页的所有 ASP.NET 页面中,母版页中的所有其它标记都相同。此模型允许开发人员定义并集中实现站点级页面布局。 因此,开发人员可以方便地为所有页面创建一致的外观,并进行轻松的更新。 简而言之:在一个网站上会有很多页面,并且有可能有的页面都有相同的部分,这样的话我们就可以将相同的部分制作成一个母版页,在
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

并发编程 —— 源码分析公平锁和非公平锁

前言 ReentrantLock 提供了公平锁和非公平锁,只需要在构造方法中使用一个 boolean 参数即可。默认非公平锁。 今天从源码层面看看区别和具体实现。 1. 类 UML 图 ReentrantLock 内部有一个抽象类 Sync,继承了 AQS。 而公平锁的实现就是 FairSync,非公平锁的实现就是 NodFairSync。 两把锁的区别在于lock 方法的实现。 2. 公平锁 lock 方法实现 final void lock() { acquire(1); } 调用
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

并发编程 —— ConcurrentHashMap size 方法原理分析

前言 ConcurrentHashMap 博大精深,从他的 50 多个内部类就能看出来,似乎 JDK 的并发精髓都在里面了。但他依然拥有体验良好的 API 给我们使用,程序员根本感觉不到他内部的复杂。但,他内部的每一个方法都复杂无比,就连 size 方法,都挺复杂的。 今天就一起来看看这个 size 方法。 size 方法 代码如下: public int size() { long n = sumCount(); return ((n < 0L) ? 0 : (n > (lo
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

PLL到底是个啥么东西呢?

PLL的出现是为了解决这样一个问题的:就是外部输入的信号实际上与内部时钟振荡信号是完全不同步的,为了解决这个问题,我们想到了用改进工艺的方法,但实际上晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,有相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时脉冲讯号。 功能:锁相实际上是为了实现相位同步自动控制,能够完成两个电信号相位同步的自动控制闭环系统叫做锁相环,简称PLL。 应用:广泛应用于广播通信、频率合成、自动控制及时钟同步等技术领域。 一个典型
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

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
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

Nginx 反向代理配置

没啥好说的,直接上配置 server { listen 80; server_name test.domain.com; # 默认路径访问前台网站 location / { proxy_pass http://backend1.domain.com; proxy_redirect off; ...
分类: 其他 发布时间: 05-19 23:41 阅读次数: 4

Redis 与 Memcached 的比较

文章转载自:https://www.sojson.com/blog/108.html   Redis 和 Memcached 在选型上一直是个热门的话题。好多人想都不想,选用 Redis,认为 Redis 的高 IO 性能。其实不然,还是得看在什么应用场景上。那么我们来探讨一下他们的相同点和不同点,然后再进行分析。 一、Redis 和 Memcached 的相同点   让...
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

Windows 下手动配置 Nginx 及 PHP-CGI 多进程开机自启方法

  强迫症福利,像我这样的人除非懒到极致才会用 phpStudy 这样的一键式集成环境,但是用的时候也会去更换 MySQL/Nginx/PHP 版本,因为 PHP 和 MySQL 在集成环境里面大多是 x86 版,换成 x64 可以更科学的运行在 64 位系统上。另外手动配置可以让你能更了解这些组件的配置,至少为以后的优化、调整等有了一点基础。 OK,先入手这些玩意儿的压缩包 Ngin...
分类: 其他 发布时间: 05-19 23:41 阅读次数: 5

Linux 之 vi vim 常用快捷方式

vivim常用快捷方式0回到行首$回到行尾gg回到文本首行G回到文本尾行setnu显示行数行号+gg跳到某行dd删除当前行/字符查找字符yypp复制当前行o在当前行下的插入一行:wq保存退出:q!不保存退出
分类: 企业开发 发布时间: 05-19 23:41 阅读次数: 5

Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案

这是结果 检查端口是否被占用 修改 Windows 服务里的 Redis 服务为本地系统服务(修改方式见下文) 这是分析 看系统日志 桌面计算机/此电脑(Win10名称)右键打开管理,或 Win+R 输入 compmgmt.msc 打开计算机管理 在事件查看器下打开 Windows 日志里面的应用程序,找到来源为 redis 的日志,双击打开一条: # 不出意外内容如下 sy...
分类: 其他 发布时间: 05-19 23:40 阅读次数: 5

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...
分类: 其他 发布时间: 05-19 23:40 阅读次数: 4

jQuery DataTables 的几个坑,异步加载(服务器)、监听、重载等等

  今天真的被这破插件气疯了,于是有了下面的截图。此文不定期更新,要是有新坑欢迎来填。 jQuery DataTables 的几个坑,监听、重载等等 看看截图娱乐娱乐 好了,正事儿要紧,先来说说这玩意儿的加载过程 首先必不可少的 jQuery、DataTables.js、DataTables.css 的引入略过 我们先手写好一张 table 表格,大概...
分类: 其他 发布时间: 05-19 23:40 阅读次数: 7

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 ...
分类: 其他 发布时间: 05-19 23:40 阅读次数: 5

功夫不负有心人,小米 Note 3 进 EDL 模式方法。可修复传感器、相机启动贼慢问题

翻阅 XDA 和海外 MIUI 论坛许久,国内 MIUI 论坛也看了个遍,没找到可靠的解决办法,于是自己瞎 J8 折腾,还真弄出来了 先说一下,我在看 XDA 论坛时,RedMi Note 3(红米3)板块有网友提到 fastboot erase psersist 和 fastboot flash persist persist.img 的修复方法。 还有进入 EDL 模式,然后修改 ...
分类: 其他 发布时间: 05-19 23:39 阅读次数: 8