Redis 的 3 种用法 内存缓存 定量数据指标 发布/订阅模型 作为内存环境数据结构1. 字符串 string 1234567891011121314// 设置字符串类型set mystr "hello world!"// 读取字符串类型get mystr// 通过字符串类型进行数值操作 在遇到数值操作时,redis 会将字符串类型转换成数值。127.0.0.1:6379> set mynum "2"OK127.0.0.1:6379> get mynum"2"127.0.0.1:6379> incr mynum(integer) 3127.0.0.1:6379> get mynum"3" INCR 等指令本身就具有原子操作的特性,所以我们完全可以利用 redis 的 INCR、INCRBY、DECR、DECRBY 等指令来实现原子计数的效果,假如,在某种场景下有 3 个客户端同时读取了 mynum 的值(值为 2),然后对其同时进行了加 1 的操作,那么, ...
1. 下载 & 安装MongoDB 3.0 正式版本发布! 这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大、灵活而且易于管理的数据库管理系统。MongoDB 宣称,3.0 新版本不只提升 7 到 10 倍的写入效率以及增加 80% 的数据压缩率,还能减少 95% 的运维成本。 MongoDB 3.0 主要新特性包括: · 可插入式的存储引擎 API · 支持 WiredTiger 存储引擎 ·MMAPv1 提升 · 复制集全面提升 · 集群方面的改进 · 提升了安全性 · 工具的提升 WiredTiger 存储引擎是一项难以置信的技术实现,提供无门闩、非堵塞算法来利用先进的硬件平台 (如大容量芯片缓存和线程化架构) 来提升性能。通过 WiredTiger,MongoDB 3.0 实现了文档级别的并发控制,因此大幅提升了大并发下的写负载。 MongoDB 提供了 centos yum 安装方式。 vi /etc/yum.repos.d/mongodb-org-3.0.repo ...
使用 root 用户登录,下面的操作基本都没有 root 的困扰,如果非 root 用户请切换至 root 用户操作。 1、查看系统当前的 shell 1echo $SHELL 返回结果如下: 1/bin/bash PS. 默认的 shell 一般都是 bash 2、查看 bin 下是否有 zsh 包 1cat /etc/shells 返回结果如下: 123456/bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh PS. 默认没有安装 zsh 3、安装 zsh 包 1yum -y install zsh 安装完成后查看 shell 列表: 1cat /etc/shells 返回结果如下: 1234567/bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh/bin/zsh 现在 zsh 已经安装完成了,需要把系统默认的 shell 由 bash 切换为 zsh 3、切换 shell 至 zsh,代码如下: 1chsh -s /bin/zsh ...
简述使用 linux 就离不开 shell,那么也就是说也离不开 shell 编程。很多时候服务器都需要编写一些计划任务来定时运行的,所以掌握一些基本的 shell 编程基础很有必要。 本文是我在网上收集的一些资料,主要目的是帮助自己更好的了解掌握 shell 编程的一些基础知识。 什么是 Shell 脚本示例看个例子吧: 123456789#!/bin/shcd ~mkdir shell_tutcd shell_tutfor ((i=0; i<10; i++)); do touch test_$i.txtdone 示例解释: 第 1 行:指定脚本解释器,这里是用/bin/sh 做解释器的 第 2 行:切换到当前用户的 home 目录 第 3 行:创建一个目录 shell_tut 第 4 行:切换到 shell_tut 目录 第 5 行:循环条件,一共循环 10 次 第 6 行:创建一个 test_1…10.txt 文件 第 7 行:循环体结束 123cd, mkdir, touch 都是系统自带的程序,一般在/bin或者/usr/bin目 ...
新时代码农
未读定义变量1234567891011#!/bin/bash# 定义 变量名和等号之间不能有空格your_name="dong4j"# 使用echo ${your_name}# 循环输出for skill in Ada Coffe Action Javado echo "I am good at ${skill} Script"done 只读变量readonly 变量名 删除变量unset 变量名 特殊变量1234567891011121314$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数。$*传递给脚本或函数的所有参数。$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。$?上个命令的退出状态,或函数的返回值。$$当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。 shell 替换命令替换123 ...
最近在做一个社交化的在线商店, 有 Android 和 iOS 客户端, 后台使用 java, 我主要负责接口设计和实现.目前产品已经上线, 现在主要是前端的业务流程优化, 后台的优化和需求更改. 客户端使用 Web app + Native app 的形式.对于菜鸟级我的来说, 以前的小项目都是 10 多张表就搞定了, 现在这个项目有 170 多张表, 想来要完全熟悉全部的业务流程需要花写功夫了.以前都是写的 Java Web 项目, 现在一下来写 Web app 项目有点不习惯, 主要是测试有点麻烦. 接下来, 我将写写来对项目的总体认识以及 Web app 开发和 Java Web 开发的区别 (其实也没多大区别), 算是做一个总结吧. Web app 和 Native app 的区别Native App: 开发成本非常大。一般使用的开发语言为 Java、C++、Objective-C。 更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包,且需要用户手动更新(有些应用程序即使不需要用户手动更新,但是也需要有一个恶心的提示)。 非常酷。因为 Native ...
相关特征方法区特征 同 Java 堆一样,方法区也是全局共享的一块内存区域 方法区的作用是存储 Java 类的结构信息,当我们创建对象实例后, 对象的类型信息存储在方法堆之中,实例数据存放在堆中;实例数据指的是在 Java 中创建的各种实例对象以及它们的值,类型信息指的是定义在 Java 代码中的常量、静态变量、以及在类中声明的各种方法、方法字段等等;同事可能包括即时编译器编译后产生的代码数据。 JVMS 不要求该区域实现自动的内存管理,但是商用 JVM 一般都已实现该区域的自动内存管理。 方法区分配内存可以不连续,可以动态扩展。 该区域并非像 JMM 规范描述的那样数据一旦放进去就属于 “永久代”; 在该区域进行内存回收的主要目的是对常量池的回收和对内存数据的卸载;一般来说这个区域的内存回收效率比起 Java 堆要低得多。 当方法区无法满足内存需求时,将抛出 OutOfMemoryError 异常。 运行时常量池的特征 运行时常量池是方法区的一部分, 所以也是全局共享的。 其作用是存储 Java 类文件常量池中的符号信息。 class 文件中存在常量池 (非运行时常量池), ...
final、finally 和 finalize 虽然长得像孪生三兄弟一样,但是它们的含义和用法却是大相径庭。这一次我们就一起来回顾一下这方面的知识。 final 关键字 我们首先来说说 final。它可以用于以下四个地方: 定义变量,包括静态的和非静态的。 定义方法的参数。 定义方法。 定义类。 我们依次来回顾一下每种情况下 final 的作用。首先来看第一种情况,如果 final 修饰的是一个基本类型,就表示这个变量被赋予的值是不可变 的,即它是个常量;如果 final 修饰的是一个对象,就表示这个变量被赋予的引用是不可变的,这里需要提醒大家注意的是,不可改变的只是这个变量所保存的 引用,并不是这个引用所指向的对象。在第二种情况下,final 的含义与第一种情况相同。实际上对于前两种情况,有一种更贴切的表述 final 的含义的描 述,那就是,如果一个变量或方法参数被 final 修饰,就表示它只能被赋值一次,但是 JAVA 虚拟机为变量设定的默认值不记作一次赋值。 被 final 修饰的变量必须被初始化。初始化的方式有以下几种: 在定义的时候初始化。 final 变 ...
聚合函数 count 返回结果集中行的数目 sum 返回结果集中所有值得总和 avg 返回结果集中所有值得平均值 max 返回结果集中所有值中最大值 min 返回结果集中所有值中最小值 count select count([* | all | distinct] expr) from 表名; : 计算所有选择的行, 包括 null all : 计算指定列所有的非空行, 默认选项 distinct : 计算指定列所有唯一非空值 sum select sum([all | distinct] expr) as 别名 from 表名; avg select avg(mark) as ‘平均成绩’ from sutdentwhere studentID = 10;输出表 student 中 studentID 为 10 的所有 mark 的平均值 最大值和最小值123select max(mark) as '最高成绩', min(mark) as '最低成绩'from studentwhere examID = 6; ...
操作表结构 create (创建) 创建表 12345create table [if not exists] 表名( 列名 列类型, 列名 列类型, ...); 创建表并从其他表中复制数据 123create table 表名asselect * from 表名 alter (修改) 添加列定义 (列名必须是原表中不存在的) 1234alter table 表名 add( 列名 数据类型 , ...); 修改列定义 (列名必须是原表中存在的) 1alter table 表名 modify 列名 数据类型; MySQL 中 一次只能修改一个列定义 如果修改数据列的默认值, 只会对以后插入操作有作用, 对以前已经存在的数据不会有任何影响 删除列 1alter table 表名 drop 列名; 重命名数据表 1alter table 旧表名 rename to/as 新表名; 改列名 1alter table 表名 change 旧列名 新列名 type; 改列名并修改数据类型 1alter table 表名 ...
表头 (header): 每一列的名称; 列 (row): 具有相同数据类型的数据的集合; 行 (col): 每一行用来描述某个人 / 物的具体信息; 值 (value): 行的具体信息, 每个值必须与该列的数据类型相同; 键 (key): 表中用来识别某个特定的人或物的方法, 键的值在当前列中具有唯一性 SQL 语句的分类 DQL 查询语句 select DML 操作语句 insert update delete DDL 定义语句 create alter drop truncate DCL 控制语句 grant revoke 实务控制语句 commit rollback savepoint MySQL 服务的启动、停止与卸载在 Windows 命令提示符下运行:启动: net start MySQL停止: net stop MySQL卸载: sc delete MySQL MySQL 的登录MySQL 参数 参数 描述 -D, –fatabase = name 打开指定数据库 –delimiter = name 指定分隔符 ...
public class Propertiesextends Hashtable<Object,Object>Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。新建一个文件内容为键 1 = 值 1键 2 = 值 2… 使用此类可以对文件数据进行持久化保存 方法的使用 load(InputStream inStream); 从输入流中读取属性列表(键和元素对)。 12Properties pro = new Properties();pro.load(new FileInputStream(相对路径或绝对路径));//此方法将抛出FileNotFoundException getPropertiy(String key) 使用指定的键在此属性列表中搜索属性, 返回 String getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。返回 String setProperty(String ...
Java Conllection Frame 在集合框架中,分为两种 API: 装载数据的集合类 HashSet 类 ArrayList 类 LinkedList 类 HashMap 类 …. 操作集合的工具类 Arrays 类 Collections 类 Iterator 接口java.utilpublic interface IteratorIterator 模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构 12345public interface Iterator{ boolean hasNext();//如果仍有元素可以迭代,则返回 true Object next();//返回迭代的下一个元素。 NoSuchElementException - 没有元素可以迭代。 void remove();//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。} Iterable 接口java.langpublic inte ...
看代码说结果: 1234567public static void main(String[] args){ char x = ‘b’; int i = 0;1. System.out.println(true?x:0); //这个0是short类型2. System.out.println(true?x:1111111110);3. System.out.println(false?i:x);} 要类型转换直接写出的 0 是 short 类型 b9898 解释:条件运算符的 3 个核心要点 如果第二个和第三个操作数具有相同的类型, 那么他就是条件表达式的类型. 如果一个操作数的类型是 byte,shotr 或 char, 而另一个操作数类型是 int 的常量表达式, 条件表达式的值是可以用类型 byte,short 或 char 表示的, 否则, 将操作数类型运用二进制数字提升 (向上转型), 二表达式的类型就是第二个和第三个操作数提升后的类型 System.out.println(true?x:0);对于语句 1 中的条 ...