后端开发中大家肯定遇到过实现一个线程安全的计数器这种需求,根据经验你应该知道我们要在多线程中实现 共享变量 的原子性和可见性问题,于是锁成为一个不可避免的话题,今天我们讨论的是与之对应的无锁 CAS。本文会从怎么来的、是什么、怎么用、原理分析、遇到的问题等不同的角度带你真正搞懂 CAS。
继续阅读 »
<img data-src="/Source/images/post-content/post-example.png" class="lazyload" alt=" " />
作为组里的一名研一新生,跟着师兄们去南京参加第20届亚洲第一性原理电子结构计算会议(The 20th Asian Workshop on First-Principles
Electronic Structure Calculations)。作为小白,没有口头报告也没有Poster,抱着学习的态度去参加会议,收获颇多。
继续阅读 »
事实上我也不知道发生了什么,大概是几天前插了“小度Wifi”的缘故。没有任何征兆地,Wifi就用不了了。 其实我也不知道原理,大概是某个驱动被刷掉了。
下面是从网上找来的答案:
sh
sudo apt-get install wicd-daemon
做个记录。
继续阅读 »
content
{:toc}
百度前端学院的第一次任务笔记,HTML、CSS 基础。主要有 CSS 工作原理,选择器的使用,常用属性,行高属性,盒模型与定位,最后根据设计图实现4个页面。
任务
任务: HTML、CSS基础
继续阅读 »
算法原理
设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 n 的有序序列。
具体算法描述如下:
1. 从第一个元素开始,该元素可以认为已经被排序
2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
5. 将新元素插入到该位置后
6. 重
继续阅读 »
最近整理了一些常见的排序算法,资料基本上都来自网上,大部分参考了维基百科,分析了常见算法的原理,并举例分步说明,有的还给出了排序动画演示,但没有涉及算法复杂度等方面的概念,最后对每一种排序算法都给出了至少一种 JavaScript 的实现方法(因为我是做前端方面的,所以只给出了 JavaScript 代码)。
由于自己能力和经验有限,难免出现某些纰漏和错误,欢迎指正。
日本程序员 norahiko,写了一个排序算法的动画演示,非常有趣。另外,今天一同事告诉我有一个排序算法的舞蹈,请点击【程序员的艺术:排序算法舞蹈】。
常见排序算法 - 冒泡排序 (Bubble Sort)
常见排序算法 - 快速排序 (Quick Sort)
继续阅读 »
note of https://www.ichunqiu.com/course/56927
Hacking三步曲
理解系统(Understanding)
系统性的基础课程学习,深入理解计算机系统运作机制。
破坏系统(Breaking)
学习与创造漏洞挖掘与利用技巧
重构系统(Reconstruction)
设计与构建系统防护
基础课程学习
核心基础课程——计算机的工作原理
体系结构
CPU的设计与实现
机器指令与汇编语言
指令的解码、执行
内存管理
CMU 18-447 Introduction to Computer Architecture
https://www.ece.cmu.edu/~ece447/s15/dok
继续阅读 »
本文继上篇 ItemDecoration{:target="_blank"} 之后,是深入理解 RecyclerView 系列的第二篇,关注于 ItemAnimator,主要是分析 RecyclerView Animators{:target="_blank"} 这个库的原理,然后总结如何自己编写自定义的 ItemAnimator。本文涉及到的完整代码可以在 Github 获取{:target="_blank"}。
继续阅读 »
content
{:toc}
简单来说 Fisher–Yates shuffle 算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)。这个算法生成的随机排列是等概率的。同时这个算法非常高效。
本文主要介绍这个算法的来源、演变、原理。并举出一个例子为大家清晰的描述每次迭代过程。最后使用 JavaScript 代码将算法实现。
继续阅读 »
使用Token来做身份认证在目前的移动客户端上非常流行,Token这个概念来源于OAuth认证,主要是在服务端实现。关于相关的原理,同学们自行百度。在这里,我简单介绍一下我是怎么具体实现的,重点描述token生成、token识别及token缓存。
生成Token
服务端接收客户端传递的username和password等请求,在数据库中检查,如果用户名密码匹配的话,表示登录成功,服务端生成并返回一个token访问令牌。
```php
public function login()
{
$data = array_merge($this->request->post(), []);
//
继续阅读 »