Linux Mount    2019-02-20 22:48:43    9    0    0

Linux硬盘挂载从入门到跑路:

关于文件系统

centos6文件系统是ext4,因为设计较早,对于现今动辄上T的海量数据处理,性能较低。
centos7文件系统是xfs,适用于海量数据。这两种文件系统都是日志文件系统。
使用该文件系统的磁盘,空间包括两部分:日志空间和存储空间。
写入的数据是先暂存在日志空间,然后刷入存储空间,这样有利于恢复数据。
另外,xfs文件系统还支持将一块儿固态硬盘用作单独的日志空间盘,数据先写入固态硬盘,然后再刷入硬盘。
对于操作系统来说,数据写入了日志空间盘,就算完成了I/O,因此这种方式提高了系统性能。

使用命令

使用命令
fdisk -l 查看所有硬盘扇区大小,分区详情
lsblk -af 查看所有硬盘及分区文件系统,挂载点
mount /dev/vdb /disk 为分区制定挂载点
df -h 显示已挂载的文件系统的磁盘使用情况

删库流程

以/dev/vdb为例。
vdb是一块尚未挂载和格式化的空磁盘,没有文件系统。

fdisk -l 查看硬盘使用情况

  1. [root@iZwz9avipe1jdw1wbokzc5Z dev]# fdisk -l
  2. Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors
  3. Units = sectors of 1 * 512 = 512 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disk label type: dos
  7. Disk identifier: 0x000d2717
  8. Device Boot Start End Blocks Id System
  9. /dev/vda1 * 2048 209713151 104855552 83 Linux
  10. Disk /dev/vdb
MySQL    2019-02-20 22:47:04    5    0    0

1 一主三从数据库分布

外网IP 内网IP 数据库编号 功能 数据库端口 数据库连接信息 数据库主从连接信息
123.4.5.6 123.4.5.6 Mysql01 写(主) 3306 User:root PW:** User:slave PW:**
123.4.5.6 123.4.5.6 Mysql02 读(从1) 3307 User:root PW:** User:slave PW:**
123.4.5.6 123.4.5.6 Mysql03 读(从2) 3308 User:root PW:** User:slave PW:**
123.4.5.6 123.4.5.6 Mysql04 读(从3) 3309 User:root PW:** User:slave PW:**

四台数据库服务器访问用户名密码信息密码问谷建峰:

用户名:root

密码:**

2 主从数据库部署图

2.1 数据库主从原理图

2.2 数据库主从方案


解决读写分离的方案有两种:应用层解决和中间件解决
应用层解决:
优点:
1. 多数据源切换方便,由程序自动完成;
2. 不需要引入中间件;
3. 理论上支持任何数据库;
缺点:
1. 由程序员完成,运维参与不到;
2. 不能做到动态增加数据源;
中间件:
优缺点:
优点:
1. 源程序不需要做任何改动就可以实现读写分离;
2. 动态添加数据源不需要重启程序;
缺点:
1. 程序依赖于中间件,会导致切换

MySQL    2019-02-20 22:47:00    3    0    0

sql_mode=only_full_group_by错误处理办法

一:修正版(不影响数据库最佳方法)

1:5.7官方推荐利用ANY_VALUE()这个函数

MYSQL 5.7 官方文档:
  1. SELECT
  2. ANY_VALUE(id)as id,
  3. ANY_VALUE(uid) as uid ,
  4. ANY_VALUE(username) as username,ANY_VALUE(title) as title,
  5. ANY_VALUE(author) as author,
  6. ANY_VALUE(thumb) as thumb,
  7. ANY_VALUE(description) as description,
  8. ANY_VALUE(content) as content,
  9. ANY_VALUE(linkurl) as linkurl,ANY_VALUE(url) as url,
  10. ANY_VALUE(group_id) as group_id,ANY_VALUE(inputtime) as inputtime,
  11. count(id) as count
  12. FROM `news`
  13. GROUP BY `group_id`
  14. ORDER BY ANY_VALUE(inputtime
  15. DESC LIMIT 20

2:不去ONLY_FULL_GROUP_BY, 时 select字段必须都在group by分组条件内(含有函数的字段除外)。(如果遇到order by也出现这个问题,同理,order by字段也都要在group by内)。

二:改MYSQL 5.7 SQL_MODE约束

参考文章https://blog.csdn.net/yalishadaa/article/details/72861737

某些使用group by的sql语句会因为sql_mode=only full group by问题导致错误,所以需要修改MySQL数据库配

Spring Websocket Java    2019-02-20 22:46:59    7    0    0

Spring集成WebSocket即时推送

一、后端

1.代码部分

(1) 新建WebSocketHandler,实现WebSocketHandler接口或继承TextWebSocketHandler类

​ 若实现WebSocketHandler则需实现其中方法

  1. // 建立连接
  2. @Override
  3. public void afterConnectionEstablished(WebSocketSession session) throws Exception
  4. {}
  5. // 从客户端获取消息
  6. @Override
  7. public void handleMessage(WebSocketSession session, WebSocketMessage<?> message)
  8. throws Exception
  9. {}
  10. // 连接异常
  11. @Override
  12. public void handleTransportError(WebSocketSession session, Throwable exception)
  13. throws Exception
  14. {}
  15. // 连接关闭
  16. @Override
  17. public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus)
  18. throws Exception
  19. {}
  20. // 消息是否分片
  21. @Override
  22. public boolean supportsPartialMessages()
  23. {
  24. return false;
  25. }

​ 若继承TextWebSocketHandler则重写其中方法

  1. // 从客户端接收到文本消息
  2. @Override
  3. protected void handleTextMessage(WebSocketSession session, TextMessage message)
  4. throws Exception
  5. {}

(2) 新建WebSocketInterceptor,实现HandshakeInterceptor接口或继承HttpSessionHandshakeIn

Shiro Java CORS 跨域    2019-02-20 22:46:57    3    0    0

shiro前后分离跨域预检不带cookies处理办法

解决参考网站地址:

前端配置:

  1. //(必备)此配置允许跨域请求带上Cookie
  2. withCredentials: true

后台配置:

第一步: web.xml Filter过滤器调整顺序: CORSFilter在shiroFilter 之前

  1. <!--解决跨域访问 -->
  2. <filter>
  3. <filter-name>crossorigin</filter-name>
  4. <filter-class>com.woke.util.CORSFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>crossorigin</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>
  10. <!-- 配置shiro过滤器 -->
  11. <filter>
  12. <filter-name>shiroFilter</filter-name>
  13. <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  14. <init-param>
  15. <param-name>targetFilterLifecycle</param-name>
  16. <param-value>true</param-value>
  17. </init-param>
  18. <init-param>
  19. <param-name>targetBeanName</param-name>
  20. <param-value>shiroFilter</param-value>
  21. </init-param>
  22. </filter>
  23. <filter-mapping>
  24. <filt
Elastic Stack    2019-02-20 22:46:56    4    0    0
Elastic Stack    2019-02-20 22:46:54    28    0    0

Elasticsearch(单机, For SkyWalking)从安装到删库

TODO: 写此安装过程时还没有仔细研究elasticsearch的各项配置参数意义, 因此修改的配置详细解释还需补充完善

CentOS

TAR 安装

  1. # 进入对应目录
  2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.14.tar.gz
  3. # 解压下载的TAR包
  4. tar zxvf elasticsearch-5.6.14.tar.gz
  5. groupadd elastic
  6. useradd elastic
  7. passwd elastic
  8. -> ******
  9. chown -R elastic:elastic elasticsearch-5.6.14
  10. cd elasticsearch-5.6.14/config/
  11. vi jvm.options
  12. # 修改最小虚拟机大小和最大虚拟机大小, 建议修改成同样大小, 避免jvm调整堆内存时导致程序暂停运行或不可预测的问题
  13. -Xms2g -> -Xms512m
  14. -Xmx2g -> -Xmx512m
  15. # 退出vi编辑器
  16. # 再修改elasticsearch.yml配置
  17. vi elasticsearch.yml
  18. # 修改以下属性, 对应SkyWalking中的配置
  19. cluster.name: CollectorDBCluster
  20. network.host: 0.0.0.0
  21. thread_pool.bulk.queue_size: 1000
  22. cd ../bin/
  23. # 强迫症发作
  24. rm -f *.bat
  25. rm -f *.exe
  26. su elastic
  27. ./elasticsearch
  1. # Download and install the public signing key
  2. rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  3. # We sign all of our package
leanote    2015-06-15 18:46:51    14    0    0

About Leanote

1. Introduction

Leanote, not just a notepad!
leanote

Some Features

  • Knowledge: Manage your knowledge in leanote. leanote contains the tinymce editor and a markdown editor, just enjoy yourself writing.
  • Share: Share your knowledge with your friends in leanote. You can invite your friends to join your notepad in the cloud so you can share knowledge.
  • Cooperation: Collaborate with friends to improve your skills.
  • Blog: Publish your knowledge and make leanote your blog.

2. Why we created leanote

To be honest, our inspiration comes from Evernote. We use Evernote to manage our knowledge everyday. But we find that:
* Evernote’s editor can’t meet our needs, it does not have document navigation, it does not render code properly (as a programmer, syntax highlighted code rendering is a basic need), it cannot resize images and so forth
* We like markdown, but Evernote does not support it.
* We want to share our knowle

2/2