轻量级

如何快速搭建自己的网站:阿里云+宝塔+wordpress

孤街浪徒 提交于 2020-01-31 17:24:21
自媒体快速发展的时代,很多人都有搭建自己网站的想法,这里我就教大家一种简单的搭建方法。 搭建自己的网站,可以使用网上的免费资源,当然免费的资源需要你花时间去找,而且有些资源不是很稳定。 本教程是基于阿里云的教程,我是花钱买了阿里云的轻量级的服务器和域名,然后就可以搭建自己的网站了。 使用的软件是宝塔和Wordpress。 这就是本人搭建的网站: http://wuxiaolong.tech/ ;有兴趣的朋友可以和我交流学习,我的微信公众号是:吴晓龙 一、准备工作 1、服务器(必须) 在阿里云上买了阿里云的轻量级服务器。大家也可以使用其他的商业云。如果有自己的公网服务器,也可以。 在阿里云上买相关的服务器和域名需要先注册阿里云的账号,登陆账号后,进入控制台,就可以看到自己买的产品了;如果没有开通任何产品,需要现在阿里云买 轻量应用服务器 ;我买的阿里云的产品比较多,所以显示的比较多。 下面就是我买的轻量应用服务器,一年609元,相关的配置如下: 如果您也要买,建议根据自己的情况买相关的配置就好了,需要注意的是,需要选系统镜像-centos7.3,因为后面需要安装宝塔面板要求cengtos7以上;下面是购买的地址: https://s.click.taobao.com/t?e=m%3D2%26s

如何编写轻量级 CSS 框架

元气小坏坏 提交于 2020-01-31 02:31:10
Github: https://github.com/nzbin/snack Docs: https://nzbin.github.io/snack 前言 这篇文章我已经酝酿了半年之久,或者说拖沓了这么久吧。想说的东西很多,却又无从说起。如今轻量级框架如雨后春笋,层出不穷。我想每个人都应该归纳总结工作中的常见需求,编写一套适合自己的 CSS 框架。在之前的文章中,我提到了面向对象的 CSS(比如 BEM、OOCSS、SMACSS ,详见 http://vanseodesign.com/css/dry-principles/ )。这是一种思想,并不涉及具体的 CSS 问题,主要是类命名的策略!现在仍然有很多人对于前端框架的认识还停留在表面,认为 Bootstrap 是后端人员专用,前端没必要等等。我不知道这种说法从何而来,我最开始也不喜欢使用框架,或许和很多人的想法一样,畏惧新知识、害怕难以驾驭、遇到问题的时候无法解决等等。最关键的一点是很多人认为框架的样式是固定的,修改起来太麻烦,还不如自己根据设计图写起来方便。 为什么使用框架 为什么使用框架?答案显而易见,效率。除此之外,使用框架或者研究框架的意义还有很多,比如面向对象思想的具体实现。在上一家公司工作的时候,开始的几个项目我也是用最原始的方法书写 CSS 。项目之中最让我头疼的就是类的命名。我想大多数人都是根据功能去命名

偏向锁,轻量级锁

你说的曾经没有我的故事 提交于 2020-01-30 08:00:40
偏向锁 偏向锁也是JDK 1.6中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。如果说轻量级锁是在无竞争的情况下使用CAS操作去消除同步使用的互斥量,那偏向锁就是在无竞争的情况下把整个同步都消除掉,连CAS操作都不做了。 当锁对象第一次被线程获取的时候,虚拟机将会把对象头中的标志位设为“01”,即偏向模式。同时使用CAS操作把获取到这个锁的线程的ID记录在对象的Mark Word之中,如果CAS操作成功,持有偏向锁的线程以后每次进入这个锁相关的同步块时,虚拟机都可以不再进行任何同步操作(例如Locking、Unlocking及对Mark Word的Update等)。 当有另外一个线程去尝试获取这个锁时,偏向模式就宣告结束。根据锁对象目前是否处于被锁定的状态,撤销偏向(Revoke Bias)后恢复到未锁定(标志位为“01”)或轻量级锁定(标志位为“00”)的状态,后续的同步操作就如上面介绍的轻量级锁那样执行。 偏向锁、轻量级锁的状态转化及对象Mark Word的关系如图13-5所示。 偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(TradeOff)性质的优化,也就是说,它并不一定总是对程序运行有利, 如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的 。 轻量级锁 轻量级锁是JDK 1

偏向锁,轻量级锁,重量级锁

元气小坏坏 提交于 2020-01-30 02:54:55
先引入几个概念 1. 对象头 Java中,每个对象都含有一个对象头,用于保存一些额外信息,以32位JDK为例,对象头长度为4byte,其结构如下 锁状态 25 bit 4bit 1bit 2bit 23bit 2bit 是否是偏向锁 锁标志位 轻量级锁 指向栈中锁记录的指针 00 重量级锁 指向互斥量(重量级锁)的指针 10 GC标记 空 11 偏向锁 线程ID Epoch 对象分代年龄 1 01 无锁 对象的hashCode 对象分代年龄 0 01 参见 hotspot\src\share\vm\oops\markOop.hpp 2. lock record 参见 hotspot\src\share\vm\runtime\basicLock.hpp 其关键代码如下 class BasicLock VALUE_OBJ_CLASS_SPEC { friend class VMStructs; private: volatile markOop _displaced_header;//对象头 ......................... } class BasicObjectLock VALUE_OBJ_CLASS_SPEC { friend class VMStructs; private: BasicLock _lock; // the lock, must be

值得学习的C语言开源项目

纵饮孤独 提交于 2020-01-29 12:26:18
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接: http://home.tiscali.cz/~cz210552/webbench.html - 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。 下载链接: http://sourceforge.net/projects/tinyhttpd/ - 3. cJSON cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。 cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。 项目主页: http://sourceforge.net/projects/cjson/ - 4. CMockery

Java内存模型与线程

假如想象 提交于 2020-01-29 07:32:02
Java内存模型与线程 每秒事务处理数(Transactions Per Second,TPS)、 Java语言和虚拟机提供了许多工具,把并发编程的门槛降低了不少。另外,各种中间件服务器、各类框架 12.2 硬件的效率与一致性 现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲: 为了解决一致性的问题,需要各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作,这类协议有MSI、MESI(IllinoisProtocol)、MOSI、Synapse、Firefly及Dragon Protocol,等等 为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果是一致的,类似,Java虚拟机的即时编译器中也有类似的指令重排序(Instruction Reorder)优化。 12.3 Java内存模型 用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。 12.3.1 主内存与工作内存 此处的变量包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的[插图],不会被共享

推荐 C/C++ 人工智能 框架和库

自作多情 提交于 2020-01-28 23:49:54
2018年10月22日 22:59:58 yangminggg 阅读数:2217 值得推荐的C/C++框架和库 C++资源大全 关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库 C++标准库 ,包括了STL容器,算法和函数等。 C++ Standard Library :是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library :标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committe e :C++标准委员会 C++通用框架和库 Apache C++ Standard Library :是一系列算法,容器,迭代器和其他基本组件的集合 ASL :Adobe源代码库提供了同行的评审和可移植的C++源代码库。 Boost :大量通用C++库的集合。 BDE :来自于彭博资讯实验室的开发环境。 Cinder :提供专业品质创造性编码的开源开发社区。 Cxxomfort :轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。 Dlib :使用契约式编程和现代C++科技设计的通用的跨平台的C++库。 EASTL :EA-STL公共部分

java锁优化

为君一笑 提交于 2020-01-28 21:18:53
一、锁优化的思路和方法 锁优化是指:在多线程的并发中当用到锁时,尽可能让性能有所提高。一般并发中用到锁,就是阻塞的并发,前面讲到一般并发级别分为阻塞的和非阻塞的(非阻塞的包含:无障碍的,无等待的,无锁的等等),一旦用到锁,就是阻塞的,也就是一般最糟糕的并发,因此锁优化就是在堵塞的情况下去提高性能;所以所锁的优化就是让性能尽可能提高,不管怎么提高,堵塞的也没有无锁的并发底。让锁定的障碍降到最低,锁优化并不是说就能解决锁堵塞造成的性能问题。这是做不到的。 方法如下:  减少锁持有时间  减小锁粒度  锁分离  锁粗化  锁消除 二、减少锁持有时间 举例: public synchronized void syncMethod(){ othercode1(); mutextMethod(); othercode2(); } 使用这个锁会造成其他线程进行等待,因此让锁的的持有时间减少和锁的范围,锁的零界点就会降低,其他线程就会很快获取锁,尽可能减少了冲突时间。 改进优化如下: public void syncMethod2(){ othercode1(); synchronized(this){ mutextMethod(); } othercode2(); } 三、减小锁粒度  将大对象,拆成小对象,好处是:大大增加并行度,降低锁竞争(同时偏向锁,轻量级锁成功率提高) 

java中常用的锁机制

*爱你&永不变心* 提交于 2020-01-28 20:44:38
基础知识 基础知识之一:锁的类型 锁就那么几个,只是根据特性,分为不同的类型 锁的概念 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。 锁通常需要硬件支持才能有效实施。这种支持通常采取一个或多个原子指令的形式,如"test-and-set", "fetch-and-add" or "compare-and-swap"”。这些指令允许单个进程测试锁是否空闲,如果空闲,则通过单个原子操作获取锁。 锁的三个概念 1、锁开销 lock overhead 锁占用内存空间、 cpu初始化和销毁锁、获取和释放锁的时间。程序使用的锁越多,相应的锁开销越大 2、锁竞争 lock contention 一个进程或线程试图获取另一个进程或线程持有的锁,就会发生锁竞争。锁粒度越小,发生锁竞争的可能性就越小 3、死锁 deadlock 至少两个任务中的每一个都等待另一个任务持有的锁的情况锁粒度是衡量锁保护的数据量大小,通常选择粗粒度的锁(锁的数量少,每个锁保护大量的数据),在当单进程访问受保护的数据时锁开销小,但是当多个进程同时访问时性能很差。因为增大了锁的竞争。相反,使用细粒度的锁(锁数量多,每个锁保护少量的数据)增加了锁的开销但是减少了锁竞争。例如数据库中,锁的粒度有表锁、页锁、行锁、字段锁

轻量级微服务架构【读书笔记4】

混江龙づ霸主 提交于 2020-01-28 18:27:33
  在第一篇 读书笔记 中,了解到了 Service Registry ,它是整个“微服务架构”中的核心,不仅提供了 Service Registry(服务注册)功能,同时也为 Service Discovery (服务发现)提供了支持。    服务注册 ,指的是在服务启动后,将服务的相关配置信息注册到服务注册表中。    服务发现 ,可以理解为当客户调用这些服务时,将通过 Service GateWay (服务网关)从服务注册表中获取这些服务配置,然后通过反向代理的方式去调用具体的服务接口,从服务注册表中获取服务配置的过程。   同时,服务注册表会定期检查已经注册的服务,若发现某服务无法访问了,将其从服务注册表中移除掉,这种定期检测的过程叫作 “心跳检测” 。因此,服务注册表对 “分布式数据一致性” 的要求相当高,即,服务注册表中的服务配置一旦变更了,通知机制必须要做到高性能,且服务注册表本身还需要具备高可用。   那么,谁才能担当服务注册表的重任呢?我们认为 ZooKeeper 是服务注册表的最近解决方案之一。 目标 : 认识 ZooKeeper,并学会使用 Zookeeper,最后基于 ZooKeeper 实现服务注册表的核心功能,同时,我们将使用 Node.js 搭建一个高可用的服务网关。 1. 什么是 ZooKeeper(What)   ZooKeeper