操作系统篇之Linux命令操作和redis安装以及基本使用
- 电脑操作系统 : windows7,8,10,xp,win98
- 操作系统 : linux ax unix
- 以后开发项目是部署在服务器上,服务器一般采用linux.
- linux的优点:系统稳定,操作速度快,系统安全..
- linux可以部署 : 数据库 tomcat 缓存(redis).....
- 1.如果安装虚拟机,必须把金山毒霸,360防护退出(禁用vmware程序)
- 指令:
- 通用语法:
- 命令后面不接 ./ 或者 ../ 表示是当前目录.
- ./ 表示当前目录
- ../表示上一层目录
- /表示根目录
- clear清屏
- 磁盘管理:
- ls list 显示目录下的数据:
- -l : 详细列别
- -r : 反序
- -t : 日期
- 需要记住的是 ll
- ll -a
- -a : 表示所有文件都显示.
- cd change 切换目录:
- 路径满足通用语法.
- ~ 表示 : 当前用户的目录,cd~回到用户目录 cd 跟 cd~一样.
- cd - : 回调刚才所在目录.
- pwd : 显示当前所在目录.
- mkdir -p : 批量创建文件夹
- 文件浏览:
- cat : 显示所有的内容,如果内容过多,没办法看完.
- cat 文件名.
- more : 查询文件的内容.
- more 文件
- 空格 下一页
- b 上一页
- 回车 一行
- q 退出
- less 查看文件内容
- less 文件
- 空格 下一页
- b 上一页
- 回车 一行
- q 退出
- 进入以后可以进行 在翻页的时候 进行(/字符串 向下搜索,?字符串 向上搜索) ?字符串 向上搜索 /字符串 向下搜索
- 参数:
- -m 百分比
- -N 行号
- tail 查看文件末尾内容:
- tail-数字 文件名 查看最后指定的条数.
- 参数 -f循环读取.
- (重要 可以动态查看文件末尾的内容,开发中往日志里写数据)
- 此处模拟过程
- 往一个文件动态循环写数据,使用tail指令动态查看数据.
- ping 用来测试连通性.
- ping 127.0.0.1>ip.log 将ping的命令打印内容输出到文件中去
- 例如: 127.0.0.1>ip.log & : 表示后台运行
- tail -f ip.log : 循环读取文件ip.log里面的内容,并显示在控制台上
- 文件操作:
- cp 复制 复制并重命名 copy
- cp 文件 路径 表示复制
- cp 文件 路径/新文件名称 表示复制并重命名
- -r : 表示递归
- mv move
- mv 文件 路径 表示 移动.
- mv 文件 路径/新文件名称 表示移动并重命名.
- -f表示强制
- rm remove 删除
- rm-fr 文件名 可以删除一切
- find 查找
- find 路径 -name 文件名称
- find 路径 -name '*...'
- 文档编辑:
- vi vim 命令一摸一样
- vi 相当于txt
- vim 相当于 note++
- vim : 有三种模式
- 一般模式 : 能看不能输入内容,进入文件默认是一般默认,按i或者a或者o切换,到编辑默认 按:切换到行底模式.
- 编辑模式 : 可以输入内容 如果编写完了,按esc表示退回到一般模式.
- 行底模式 : 可以输入 registry-zookeeper:wq 退出保存 :q! 退出不保存.
- 退出,先按esc ,再按 Shift+: ,q! 或者wq
- 一般模式有特点:
- yy复制 p 粘贴 dd 删除一行.
- nyy 复制多行 ndd删除多行.
- gg 第一行 shift + g 最多一行.
- 管道 |
- 作用 : 将两个命令合成一个命令 命令1|命令2
- grep 正则匹配 过滤
- 语法 1: grep-i 过滤的字符 文件名称
- 语法 2: 命令1|grep-i 过滤的字符 需要匹配不同内容 输出不同的值
- 前面命令1的内容 作为了后面过滤的依据.
- 系统命令:
- ps-ef 查看所有的进程
- 以后的用法:
- ps-ef|grep-i 过滤的字符
- kill 杀死
- kill pid 终止进程
- kill-9 pid 杀死进程
- ifconfig 查看当前ip
- ping 测试连通性
- 备份压缩:
- 参数不可以改变顺序:
- tar -zcvf 文档名 文件 压缩
- tar -zxvf 文档名 解压缩
- 关机重启(忽略)
- 重启 reboot
- 关机 halt
- shutdown -r 时间 重启
- shutdonw -h 时间 关机
- 文件权限
- chmod 接上数字 文件
- chmod 000 删除所有权限
- comod 777 添加所有权限
- 一个7 表示三个权限
- 4 2 1
- r 可读 2的2次方 4
- w 可写 2的1次方 2
- x 可执行 2的0次方 1
- 例如:
- drwxr-xr-x. 2 root root 4096 8月 11 04:23 a : 第一个字母代表是文件夹或者文件, d代表文件夹,-代表文件
- -rw-r--r--. : rw- 表示用户 ; r-- 表示用户名组 ; r-- 表示其他
- 官方文档解释 : -rwxrw-r--
- 第一位 : 文件类型(d目录,-普通文件 ,| 链接文件(桌面快捷方式));
- 第2-4位: 所属用户权限,用u(user)表示;
- 第5-7位: 所属组权限,用g(group)表示;
- 第8-10位: 其他用户权限,用o(other)表示;
- 第2-10位: 表示所有的权限,用a(all)表示;
- r 可读权限
- w 可写权限
- x 可执行权限
- 修改权限:- 表示去除权限
- chmod u-rwx aaa.tar;表示把用户权限变成---
- chmod g-rwx aaa.tar;表示把用户组权限变成---
- chmod o-rwx aaa.tar;表示把其他用户权限变成---
- chmod ugo+rwx aaa.tar : 表示给这个文件加上应有权限
- chmod 000 aaa.tar ; 表示去除文件所有权限
- chmod 777 aaa.tar; 表示给文件加上应有权限
- 安装过程注意事项 : 使用CRT连接不上linux,存在以下几种情况:
- vim/etc/sysconfig/netword-scripts/ifcfg-eth0
- 1 . 配置网络,自动连接勾选.
- 2 . 360或金山毒霸没关.
- 3 . 本地虚拟机服务器没开启.
- 4 . 本地适配没有打开.
- 5 . Linux配置环境 网卡没有开机自动启动.
- ONBOOT = yes : 开机自动启动网卡
- Linux环境可以按照服务器,应用服务器,tomcat ,需要jdk,mysql,缓存redis
- 统一步骤:
- 1.需要上传压缩包.
- 2.解压.
- 3.安装.
- rpm -qa 查看.
- rpm -ivh 程序名称 安装.
- rpm -Uvh 程序名称 更新.
- rpm -e 删除 --nodeps 不删除依赖.
- 例子:
- 查看系统中是否安装有jdk : rpm -qa | grep -i jdk
- 如果有就删除jdk,删除了以后再安装
- rpm -e 上面查到的jdk全称
- yum remove 联网自动删除数据
- yum install 联网自动安装数据
- cm95DvStxaqflMVE : 自动生成的秘密 每个人都不一样
- gPKufF50DIn720ua 我的MySql秘密
- NoSql :
- NoSql 特点:
- 在大数据存取上具备关系型数据库无法比拟的性能优势:
- 1.易扩展:
- NoSql 数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性.数据之间
- 无关系,这样就非常容易扩展.也无形之间,在架构的层面上带来了可扩展的能力.
- 2.大数据量,高性能
- NoSql 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀.这得益于它的
- 无关系性,数据库的结果简单.
- 3.灵活的数据模型
- NoSql 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式.而在关系数
- 据库里,增删字段是一件非常麻烦的事情.如果是非常大数据量的表,增加字段简直就是
- 一个噩梦.这点在大数据量的Web2.0时代尤其明显.
- 4.高可用
- NoSql 在不太影响性能的情况,就可以方便的实现高可用的架构.比如Cassandra,HBase
- 模型,通过复制模型也能实现高可用.
- MySql 关系型数据库 : 泛指数据库中数据表,具有一定关系.
- Redis 非关系性数据库 : 数据库中数据是没有关系(用作缓存,缓存服务器)
- db4o 文件数据库 : 数据是保存在文件中.
- 短链接 : 打开一次连接 关闭.
- 长链接 : 连接池 打卡一次不关闭.
- Redis : 用来存储数据 将数据存到内存中 用于处理大数据.
- Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提高多种键值数据类型来适应不同
- 场景下的存储需求,目前为止Redis支持的键值数据类型如下:
- 1.字符串类型 2.散列类型 3.列表类型 4.集合类型 5.有序集合类型
- hibernate : 一级缓存 内置缓存.
- hibernate : 二级缓存(需要其他配置) 使用redis替换.
- redis 安装
- 需要C的编译环境.
- Redis的后台启动方式:
- 1.如果需要后台启动 需要从redis配置目录中 copy一个文件 redis.conf
- cp redis.conf /usr/local/src/redis
- 2.修改配置文件
- daemonize yes(修改成yes)
- 以后开发中命名有规范的,项目名称_业务名称_表名称_字段名称_0 1
- Constant 常量池 一个项目需要有自己的常量池.
- public static final 项目名称_业务名称_表名称_字段名称_=""
- 数据结构:
- redis 是一种高级的key-value的存储系统,其中value支持五中数据类型.
- 1.字符串(String) 2.哈希(hash) 3.字符串列表(list)
- 4.字符串集合(set) 5.有序字符串集合(sorted set)
- 而关于key的定义呢,需要大家注意的几点:
- 1:key不要太长,最好不要超过1024个字节,这不仅会消耗内存还会降低查找效率
- 2.key不要太短,如果太短会降低key的可读性.
- 3.在项目中,key最好有一个统一的命名规范.
- String
- 赋值 set key value
- 取值 get key
- getset key value 获得并赋值
- 删除 del key
- 其他
- 递增 incr key
- 递减 decr key
- 增加多少 incrby key 数字
- 减少多少 decrby key 数字
- 追加 append key 拼接的字符
- Hash
- 赋值:
- hset 集合名称 字段的名称 字段的值 只能赋值一个
- hmset 集合名称 字段的名称 字段的值 字段的名称 赋值多个
- 取值
- hget 集合的名称 字段名称 获得一个字段值
- hmget 集合的名称 字段名称 [字段名称 字段名称]... 获得指定多个字段值
- hgetall 集合名称 获得所有的字段值
- 删除
- del 集合名称 删除集合 通用语法(其他集合一样可以使用)
- hdel 集合名称 字段名称[....]
- 其他
- 增加指定数字
- hincrby 集合名称 字段名称 增加的数字
- 判断集合中是否含有某个字段
- hexists 集合 字段
- 长度
- hlen 集合
- 获得所有的key
- hkeys 集合
- 获得所有的value
- hvals 集合
- 显示集合中的key和value
- hgetall 集合
- 类加载器的作用 : 将类加载到内存中形成class对象 , 保证虚拟机中就只有一个对象.
- 三个类加载器 : 应用加载器(主要加载tomcat的jar包和自己放的一些jar包,加载自己创建的类的class文件) , 扩展加载器(加载一些特殊的jar包,如果公司需要放jar包也放在这里面) , 引导类加载器(主要是把环境加载进来).
- 应用类加载器继承扩展类加载器继承引导类加载器.
- 加载机制 : 全盘负责机制 , 父类委托机制
- System.out.println(ClassLoaderDemo.class.getClassLoader());
- System.out.println(ClassLoaderDemo.class.getClassLoader().getParent());
- System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent());
- rt.jar 表示运行时 , 加载不同位置的东西.
- String parths = System.getProperty("sun.boot.class.path");
- String[] arr = parths.split(";");
- for(String string : arr) {
- System.out.println(string);
- }
- System.out.println(String.class.getClassLoader());
- public class ClassLoaderDemo {
- /*public static void main(String[] args) {
- //类加载器的作用: 将类加载到内存中形成class对象 保证虚拟机中就只有一个对象
- //三个类加载器 : 应用类加载器 扩展类加载器 引导类加载器(不是类 C 调用批处理 加载我们数据Class对象)
- //加载机制:全盘负责 委托机制
- //System.out.println(ClassLoaderDemo.class.getClassLoader());
- //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent());
- //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent());
- //System.out.println(DNSNameService.class.getClassLoader());
- //rt.jar 表示运行时 加载不同位置的东西
- String parths = System.getProperty("sun.boot.class.path");
- String [] arr = parths.split(";");
- for (String string : arr) {
- System.out.println(string);
- }
- System.out.println(String.class.getClassLoader());
- }*/
- /*public static void main(String[] args) {
- //类加载器的作用: 将类加载到内存中形成class对象 保证虚拟机中就只有一个对象
- //三个类加载器 : 应用类加载器 扩展类加载器 引导类加载器(不是类 C 调用批处理 加载我们数据Class对象)
- //加载机制:全盘负责 委托机制
- //System.out.println(ClassLoaderDemo.class.getClassLoader());
- //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent());
- //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent());
- //System.out.println(DNSNameService.class.getClassLoader());
- //rt.jar 表示运行时 加载不同位置的东西
- String parths = System.getProperty("java.ext.dirs");
- String [] arr = parths.split(";");
- for (String string : arr) {
- System.out.println(string);
- }
- //扩展类加载器 一般公司使用
- System.out.println(DNSNameService.class.getClassLoader());
- }*/
- public static void main(String[] args) {
- //类加载器的作用: 将类加载到内存中形成class对象 保证虚拟机中就只有一个对象
- //三个类加载器 : 应用类加载器 扩展类加载器 引导类加载器(不是类 C 调用批处理 加载我们数据Class对象)
- //加载机制:全盘负责 委托机制
- //System.out.println(ClassLoaderDemo.class.getClassLoader());
- //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent());
- //System.out.println(ClassLoaderDemo.class.getClassLoader().getParent().getParent());
- //System.out.println(DNSNameService.class.getClassLoader());
- //rt.jar 表示运行时 加载不同位置的东西
- String parths = System.getProperty("java.class.path");
- String [] arr = parths.split(";");
- for (String string : arr) {
- System.out.println(string);
- }
- //应用加载器 负责加载tomcat的路径jar 还有下面两个
- //E:\Users\hzb\workspace\ee66_day48\build\classes
- //E:\Users\hzb\workspace\ee66_day48\WebContent\WEB-INF\lib\jedis-2.7.0.jar
- System.out.println(ClassLoaderDemo.class.getClassLoader());
- }
- }
- List
- 赋值:lpush key value1[value2......] 从链表的左边添加 如果key不存在就创建
- rpush key value1[value2......] 从链表的右边添加 如果key不存在就创建
- 取值
- lrange key start end 查询数据 start表示开始索引 end表示结束索引 默认情况.
- end 可以为负数 负数表示 从右边开始数
- 删除
- lpop key 从左边弹出
- rpop key 从右边弹出
- 其他
- llen key 集合长度大小
- lpushx key value1 添加链表的左边 如果key不存在 不会进行创建
- rpushx key value1 添加链表的右边 如果key不存在 不会进行创建
- lrem key count value 删除集合中多少个元素
- count > 0 从左往右删除count个
- count = 0 删除所有指定的value值
- count < 0 从右往左删除count个
- lset key index value 设置索引值为index 的value值
- linsert key before | after 指定的元素 添加的值 在指定元素前后添加值
- rpoplpush 集合1 集合2 将集合 1 的右边弹出 添加到集合 2 的左边 (队列 先进先出)
- Set
- 赋值 :
- sadd key value [value...] 添加
- 取值 :
- smembers key 获得集合的成员
- 删除
- srem key value [value...] 删除指定的成员
- 其他
- sismember key member 判断集合中是否存在这个成员
- 集合的运算
- 差集 将集合 1 减去集合 2 剩下的是集合 1 的元素.
- sdiff key1 key2
- 交集 取两个集合共有的一部分元素
- sinter key1 key2
- 并集 取两个集合所有的元素 但需要去重
- sunion key1 key2
- 集合的运算并存储
- 差集 将集合 1 减去集合 2 剩下的是集合 1 的元素 将结果存到newkey中
- sdiffstore newkey key1 key2
- 交集 取两个集合共有的一部分元素 将结果存到newkey中
- sinterstore newkey key1 key2
- 并集 取两个集合所有的元素 但需要去重 将结果存到newkey中
- sunionstore newkey key1 key2
- scard key 查看集合中多少个成员
- srandmember key 随机返回一个成员
- Sortset
- 赋值 :
- zadd key sore1 member1 sore2 member2 ...
- 取值 :
- zrange key start end [withscores] 返回指定返回的数据 默认升序
- start 表示开始索引 end表示结束索引 默认情况
- end 可以为负数 负数表示 从右边开始数
- zrevrange key start end [withscores] 返回指定返回的数据 降序
- 删除
- zrem key member
- 其他
- zscore key member 返回对应成员的分数
- zcard key 返回集合的长度
- 删除一定返回内的数据 按照排名
- zremrangebyrank key start end
- 删除一定返回内的数据 start end
- zremrangebyscore key minscore maxscore
- 按照分数查询一定返回内的数据
- zrangebyscore key minscore maxscore [withscores] [limit startindex pagesize]
- 给指定成员添加分数
- zincrby key 分数 value 值
- 获得区间分数内的个数
- zcount key minscore maxscore
- 返回成员在排名的中的位置
- zrank key value 升序
- zrevrank key value 降序
- 通用操作
- keys * 表示查看所有的key ? 表示占位符
- Del key 删除指定的key
- Exists key 查看key是否存在
- Rename key newKey 修改名称
- Type key 查看类型
- Expire key 设置过期时间
- Ttl 查看过期时间
- -2 已结失效
- -1 永不失效
- >0 还有多少秒之后失效
- Jedis
- Jedis java 中访问redis 环境 操作命令对象 如果需要在java环境中使用redis 必须导入jar包
- commons-pool-2.3.jar
- jedis-2.7.0.jar
- jedis 操作:
- public static void main(String[] args) {
- //创建redis对象 java表示的是jedis对象
- Jedis jedis = new Jedis("192.168.40.199",6379);
- String nickname = jedis.get("nickname");
- System.out.println(nickname);
- //重写设置
- jedis.set("nickname","吉吉");//以后设置都是json字符串
- nickname = jedis.get("nickname");
- System.out.println(nickname);
- jedis.close();
- }
- Jedis 连接池:
- public static void main(String[] args) {
- //需要增加配置
- JedisPoolConfig poolConfig = new JedisPoolConfig();
- //设置其他配置
- //最小空闲数 (例如在访问数据库高分期的时候,会创建很多连接给予使用,当连接池连接数量用完了以后,会继续产生连接,保证连接池有三个空闲连接,以备不时只需)
- poolConfig.setMinIdle(3);
- //最大空闲数 (例如在访问数据库低分期的时候,连接池会有很多闲置的连接,这时会保证闲置连接不能超过30个,如果超过去30个,超过的会销毁)
- poolConfig.setMaxIdle(30);
- //获得连接池
- JedisPool jedisPool = new JedisPool(poolConfig,"192.168.40.199",6379);
- //通过连接池 可以获得jedis对象
- Jedis jedis = jedisPool.getResource();
- String nickname = jedis.get("nickname");
- System.out.println(nickname);
- jedis.close();
- }
- 1.8Redis特性
- 1.8.1多数据库概念
- 默认情况下 我们操作时操作第一个
- Select 索引 选择数据库
- Move key 索引 将key 移动到对应的数据库下
- 退出 quit exit ctrl + c
- Dbsize key的数量
- Info 信息
- Flushdb 删除当前数据库的所有key
- Flushall 删除所有数据库的key
- 1.8.2消息订阅和发布
- Subscribe 频道名称 表示 订阅某个频道
- Psubscribe 频道名称 表示订阅多个频道
- Publish 频道名称 内容 往频道内发布内容
- 1.8.3事务(批量处理)
- Multi 开启事务
- Exec 提交
- Discard 回滚事务
- 提交事务时 如果中间报错 不会回滚 继续操作
- 1.9持久化
- Redis的数据是在内存中 持久化就是将数据保存在磁盘上(序列化 钝化)
- Redis中提供了两种持久化机制 : 将数据持久化起来
- 为什么要有数据库? 数据库能保存数据
- RDB : 快照 redis默认机制 我们不处理
- 优点:恢复速度快
- 缺点:存在数据库丢失情况
- AOF : 记录日志 将命令行保存起来
- 优点:不存在数据丢失
- 缺点:恢复速度太慢
- 如果想要使用AOF 需要手动配置
- 检查AOF机制是否存在
- 1.配置AOF
- 2.打开客户端 进行操作数据
- 3.清空数据库
- 4.将redis 服务器线程关闭(看日志文件 修改日志文件)
- 5.启动redis 看数据是否能恢复
- 如果需要修改修改端口号进行对外开放进入:vim /etc/sysconfig/iptables
- 重新启动服务器 : service iptables restart
- 进入redis安装目录下
- cd /usr/local/redis
- /usr/local/src/redis install
- 进入bin目录下的批处理进行登录
- ./bin/redis-cli
- ./redis-server ../redis.conf
- 9.进入redis目录
- cd /root/baidu/redis/redis-3.0.0
- 10.将redis下的conf文件拷贝到redis下
- cp redis.conf /usr/local/redis
- 11.进入redis的bin目录下
- cd /usr/local/src/redis/bin
- 12.启动
- ./redis-server ../redis.conf
- 后端启动
- vim /usr/local/redis/redis.conf
- 1.找到一下代码 修改成yes
- daemonize no ==>>daemonize yes
- 2.启动时,指定配置文件
- cd /usr/local/redis/
- ./bin/redis-server ./redis.conf
操作系统篇之Linux命令操作和redis安装以及基本使用的更多相关文章
- linux命令-jdk及mysql安装操作
1. VMware虚拟机 VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows.DOS.LINUX系统. 1.1. vmware15安装配置 Work ...
- 几个常用的linux命令(操作服务器时会用到)
目录 tmux 背景 安装 使用 启动一个tmux session 暂时离开当前session 回到之前的session 重命名session 创建window 创建pane ps scp 参考 tm ...
- Linux & Windows 环境下 Redis 安装与基本配置
索引: 目录索引 参看代码 GitHub: redis.txt 一.Linux (DeepinOS) 环境 .安装Redis服务 sudo apt-get install redis-server . ...
- Linux命令行模式下安装VMware Tools详细步骤
在Linux命令行模式安装VMware Tools 方法/步骤1: 首先启动CentOS 7,在VMware中点击上方"VM",点击"Install VMware Too ...
- Linux命令操作
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大. 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制到目标文件 ...
- 【Python Learning第一篇】Linux命令学习及Vim命令的使用
学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了♪(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多多包涵 以下是我上课做的一些笔记,非常的 ...
- python第四篇:linux命令行总结 + 自动备份Python程序
由于最近需要学习Python爬虫相关的知识,所以就先从Python基础.Linux基础开始进行了学习,下面主要是总结了常见的Linux的命令行.最后为了巩固学到的东西,尝试写了个自动备份的Python ...
- (第四篇)Linux命令初识之常用系统管理命令
1.hostname [命令作用]用于显示和设置系统的主机名称(但是不会永久保存,重启后会恢复) [命令语法]hostname(选项)(参数) [常用选项] -a:显示主机别名(alias name) ...
- centos下面基本的linux命令操作
参考视频: 1.如何打开命令窗口 鼠标点击右键,选择open Terminal就可以打开命令行窗口了. 现在我们可以调整这个窗口的大小,增大窗口大小使用ctrl+shif+加号,缩小窗口ctrl+减号 ...
随机推荐
- Java 匿名类和lambda表达式
一.匿名内部类 一个匿名内部类是一个没有名字的内部类.它将进一步定义一个内部类以及创建一个内部类的实例. 内部类处理器可以使用匿名内部类进行代码简化. 匿名内部类的语法如下所示: new SuperC ...
- C#线程学习笔记三:线程池中的I/O线程
本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/20/MultiThreads.html,记录一下学习过程以备后续查用. 一.I/O线 ...
- (办公)记事本_Linux权限
参考谷粒学院Linux教程:http://www.gulixueyuan.com/course/300/task/7084/show# linux权限,什么用户可以操作什么. 1.基本权限的作用: 1 ...
- Gemini.Workflow 双子工作流高级教程:对外API控制引擎:总述
前言: 双子工作流提供了一套对外的API,用于控制整体系统运转,下面就来看看介绍,其实很简单的. 对外API控制引擎总介: Gemini.Workflow 双子工作流,对外提供的API,都在Gemin ...
- 实战Netty集群
疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -25[ 博客园 总入口 ] 1.写在前面 1.1 实战Netty集群的理由 Java基础练习中,一个重要的实战练习是: java的聊天程序 ...
- 记一个AbstractMethodError
如下,引入FastJsonHttpMessageConverter 之后,导致了新的错误: @Override public void configureMessageConverters( List ...
- java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.解决方案
解决方案: 首先查看数据库的版本号,删除旧的jar包,将mysql-connector-java.jar更换成对应版本号 同时在连接数据库的url后加上?useUnicode=true&cha ...
- MySql数据库之数据库基础命令
继续上篇博客所说到的,使用命令玩转MySql数据库. 在连接数据库时,我们需要确定数据库所在的服务器IP,用户名以及密码.当然,我们一般练习都会使用本地数据库,那么本地数据库的连接命令如下: mysq ...
- Koa 本地搭建 HTTPS 环境
openssl 首先本地需要安装 openssl,用于生成自签名证书. $ brew install openssl 检查安装: $ openssl version LibreSSL 2.6.5 生成 ...
- 挑选(pick)
挑选(pick) 1s/128MB [题目背景] NOIP2017 马上就要到了,丁爷爷想要从他的小朋友里挑选出一些厉害的来参加NOIP. [题目描述] 丁爷爷共有 n 个小朋友,按编号 1 . . ...