自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)

原创 [云盘]Nginx集成FastCGI

NginxNgixn作为 web服务器具有简单部署,效率高,热部署等等优点,但是在Nginx上只能部署静态网页,对于动态网页需要调用CGI程序去处理spawn-fcgispawn-fcgi作为的是ngixn和fastcgi的代理实现两者之间通信使用编写fcgi程序spawn-fcgi -a IP -p 端口 -f fastcgi程序-a - IP: 服务器IP地址-p - port: 服务器将数据发送到的端口-f - cgi程序: spawn-fcgi启动的可执行fastcgi

2020-06-30 16:23:29 47

原创 [FastCGI]

FastCGICGI通用网关接口CGI使外部程序与Web服务器之间交互成为可能CGI程序运行在独立的进程中,并对每个Web请求建立一个进程,这种方法非常容易实现,但效率很差,难以扩展;大量请求,进程的大量建立和消亡使操作系统性能大大下降CGI处理流程web服务器与CGI通过环境变量、标准输入、标准输出、标准错误互相传递数据web服务器收到客户端(浏览器)的请求Http Request,启动CGI程序,并通过环境变量、标准输入传递数据CGI进程启动解析器、加载配置(如业务相关配置)、连

2020-06-30 15:53:27 35

原创 [http]

HTTP协议报文请求报文请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开常用请求方法GET当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端使用GET方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制,因此GET方法不适合用于上传数据通过GET方法来获取网页时,参数会显

2020-06-30 15:33:07 19

原创 [云盘]协议包和数据库表设计

协议登录用户注册用户我的文件我的文件展示页面服务器返回给前端秒传上传文件共享列表文件相关操作分享文件删除文件pv字段处理数据库表设计MySQL数据库用户信息表 user文件信息表 file_info用户文件列表user_file_list用户文件数量表user_file_count共享文件列表登录用户//====================登陆用户127.0.0.1:80/loginpost数据(json){ user:xxxx, pwd:xxx}注册用户//==========

2020-06-30 14:10:47 69

原创 [云盘]共享文件列表

共享文件操作变量定义读取配置文件cfg.hcfg.c/conf解析前端Json文件下载标志处理Main源码变量定义DEALSHAREFILE_LOG_MODULE—日志模块的输出到该模块DEALSHAREFILE_LOG_PROC —该日志模块输出的具体目录定义三个static静态字符数组存放MySQL登录用户名密码和具体使用的数据库定义两个static静态数组存放Redis的ip+port根据以上定义判断MySQL采用本地连接,Redis采用远程连接 #define D

2020-06-30 10:20:14 29

原创 [云盘]业务分析

登录注册界面我的文件展示当前登录用户在FastDFS中所有存储的文件下载榜传输列表在文件传输过程中会有条形框显示进度切换用户点击切换用户会直接跳转到登陆界面

2020-06-30 08:53:43 40

原创 [MySQL]读写分离

读写分离主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE)从数据库处理SELECT查询操作数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库作用数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。读写分离是为了防止数据库的写入影响了查询的效率主从复制与读写分离在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求,无论是在

2020-06-29 16:27:30 35

原创 [MySQL]日志系统

redo log日志模块redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来在实例和介质失败(media failure)时,redo log文件就能派上用场,如数据库掉电,InnoDB存储引擎会使用redo log恢复到掉电前的时刻,以此来保证数据的完整性在一条更新语句进行执行的时候,InnoDB引擎会把更新记录写到redo log日志中,然后更新内存,此时算是语句执行完了,然后在空闲的时候或者是按照设定的

2020-06-29 16:24:32 32

原创 [MySQL]主从复制

MySQL主从复制主从复制作用主从复制的原理主从复制步骤主从复制问题主库宕机后,数据可能丢失从库只有一个sql Thread,主库写压力大,复制很可能延时(slave DB 读延迟)复制架构异步复制同步复制半同步复制并行复制主从复制主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库主数据库一般是准实时的业务数据库mysql主从复制是mysql高可用性,高性能(负载均衡)的基础简单,灵活,部署方式多样,可以根据不同业务场景部署不同复制结构,复制过程中应该时刻监控复制状态,复制出错

2020-06-29 16:24:10 31

原创 [云盘]脚本解析

start.sh运行fasfdfs.sh,参数stop,先关闭fastdfs运行fasfdfs.sh,参数 all,启动storage和tracker运行 fcgi.sh,运行所有fastcgi程序运行nginx.sh,参数stop,先关闭nginx运行nginx.sh,参数start,开启nginx运行redis.sh,参数stop,关闭redis运行redis.sh,参数sart,重启redis #!/bin/bash echo echo =====

2020-06-29 16:19:36 50

原创 [Shell]脚本

ShellShellShell脚本Shell环境Shell脚本示例运行Shell变量定义变量使用变量只读变量删除变量变量类型Shell字符串单双引号区别拼接字符串获取字符串长度提取子字符串Shell数组定义数组读取数组Shell 注释Shell传参Shell基本运算符算数运算符关系运算符布尔运算符逻辑运算符字符串运算符文件测试运算符Shell echo命令Shell printf 命令Shell test命令Shell流程控制ifif elseif else-if elsefor循环whileShell函数

2020-06-29 11:33:13 65

原创 Ubuntu16.04MySQL安装和配置

MySQLMySQL安装官网安装源码安装MySQL安装 官网安装首先设置root权限sudo apt-get installmysql-serverapt isntallmysql-clientapt installlibmysqlclient-dev检查安装是否成功sudo netstat -tap |grep mysql 源码安装由于官网下载...

2020-06-29 09:08:59 42

原创 [前后端分离Blog]项目介绍

Blog项目项目介绍项目框架项目功能前端开发后端开发问题能不能介绍一下Vue开发的全过程工具准备页面开发路由中心配置什么是ajax请求介绍一下在Vue开发中使用的v标签介绍一下Vue开发过程中使用的生命周期函数介绍一下开发过程中使用的钩子函数开发过程中遇到的问题动态路由的设置项目介绍项目框架这是一个我在Github发掘的一个博客管理项目,前端采用Vue+ElementIu制作,后台框架由SpringBoot+Mybatis+MySQL搭建的一个前后端分离项目为了提高开发效率我添加了MybatisP

2020-06-26 19:37:05 119

原创 [JVM]配置常用参数和常用GC调优策略

JVM配置常用参数堆参数回收期参数大内存使用并发和并行两种,UseParallelGC和UseConcMarkSweepGC项目中常用的配置常用组合GC调优策略GC调优原则多数的 Java 应用不需要在服务器上进行 GC 优化; 多数导致 GC 问题的 Java 应用,都不是因为我们参数设置错误,而是代码问题在应用上线之前,先考虑将机器的 JVM 参数设置到最优(最适合); 减少创建对象的数量; 减少使用全局变量和大对象;GC 优化是到最后不得已才采用的手段; 在实际使用中

2020-06-26 19:36:40 68

原创 [Blog]后端代码分析

项目结构打包后的代码结构如图所示.idea目录.存放项目的配置信息,包括历史记录,版本控制信息等其中 libraries目录中存放的都是maven依赖src目录源码分析main目录java目录包com/markerhub下commondtoLoginDto.javaDTO(Data Transfer Object,数据传送对象)DTO是一个普通的Java类,它封装了要传送的批量的数据。当客户端需要读取服务器端的数据的时候,服务器端将数据封装在D

2020-06-25 21:12:48 61

原创 [Android]状态机与业务分析

司机状态机与业务逻辑IDLEIDLE状态的司机代表是空闲状态司机端不做任何处理会一直处于这个状态司机端每隔2s向前端更新自己的定位信息,但是不会有后台服务器不会由记录,会不断更新sessionid的生命周期,READYREADY状态的转变是司机点击”开始接单”,status由IDLE变为READY,页面按钮变为“停止接单”司机端每隔两秒调用底层JNI模块更新自己定位信息(向缓存中的GEO司机坐标池),协议数据包括sessionid,status,driver,位置信息有用户下单并且选中

2020-06-24 18:03:09 52

原创 [Android]数据库表设计

缓存表司机sessionid和临时信息映射表[HASH]司机临时状态表Key:online-driver-[sessionid]注意,orderid是在web应用服务器分配自动分配司机给一个用户给该司机,时生成一个订单号,格式为orderid-xxxx-xxx-xxx-xxx-xxxx乘客sessionid和临时信息映射表[HASH]乘客临时状态表Key:key: online-user-[sessionid]临时订单表[HASH]key:orderid-xxxx-xxx-xxx-

2020-06-24 18:02:51 66

原创 [Android]通讯协议设计

通讯协议Andoroid与Web登陆协议注册协议更新地理位置信息协议思考(难点)通信协议的设置状态机设计Andoroid与Web登陆协议登陆协议的设计包括与服务器通信协议和得到服务器相应数据格式定义与服务器通信协议主要是请求URL“/login”,协议数据格式为json对象,三个键值对响应数据分为成功,失败两种reslut字段,recode字段,sessionid,orderid,status失败时,result字段,reason字段=== =给服务端的协议====ht

2020-06-24 18:02:11 104

原创 [Android]数据服务器开发

server-datahttps-server.c unsigned short serverPort = COMMON_HTTPS_PORT; /* Instead of casting between these types, create a union with all of them, * to avoid -Wstrict-aliasing warnings. */ typedef union { struct sockaddr_storage ss;

2020-06-24 10:49:27 53

原创 [Android]web服务器开发

Web服务器服务器开发https_server.clogin.creg.cset_order.cfinish.order.clocation_changed.cremote_store.c服务器开发https_server.c这是用libevent搭建的https服务器,libevent搭建的服务器框架,通过创建创建一evhttp 句柄,去处理用户端的requests请求只需要写对应的URL和对应的http回调函数处理请求https-server的处理流程是:创建evhttp句柄

2020-06-23 21:40:52 58

原创 [Android]Android开发(三)

JNIJNI目录Android.mk设置LOCAL_PATH变量Application.mkData.cppLogin.cppReg.cppStartOrder.cppDriverLocationChanged.cppPassengerLocationChanged.cppCurl.cppcJson.cppJNI目录Android.mk类似于Makefile设置LOCAL_PATH变量LOCAL_PATH:=$(call my-dir)##### libcurl.so #########

2020-06-23 18:47:21 89

原创 [Android]Android开发(二)

界面开发登陆界面开发登陆按钮注册按钮界面源码注册界面开发注册按钮界面源码司机界面地图容器mapView搜索菜单栏接单按钮逻辑与司机状态机将代表司机的覆盖物加载地图上定位服务接口总结乘客界面开发搜索菜单栏定位服务总结OBOJni.java登陆界面开发两个EditText分别输入username和passwd两个Button一个login登陆,一个reg注册一个CheckBox判断是否为司机登陆按钮一个文本为“登陆”的Button,绑定了点击事件从两个text拿到useername和pas

2020-06-23 14:41:55 159

原创 [Android]Android开发(一)

AnodroidAndroid开发环境搭建配置JDK配置AndroidStudioADB真机调试调试minsdk(api 15) > devicesdk(api 10) 类似问题Android的快速建模开发调试信息的输出UI控件与代码关联Android生命周期函数常用控件NDK与JNINDKNDK配置JNILibcurlAndroid开发环境搭建选择在Linux下进行开发配置JDK下载安装 tar -zxvf jdk-8u101-linux-x64.tar.gz

2020-06-23 10:31:44 89

原创 [Android]关键技术

移动打车基于Android+ JNI + HTTPS + libevent + mysql/redis + 高德地图完成的实时热点定位的打车解决方案

2020-06-23 09:07:17 81

原创 [Blog]插件使用分析

插件

2020-06-22 19:34:46 27

原创 [JWT]

JWTJSON Web Token (JWT)是一种基于 token 的认证方案JWT就是一种Token的编码算法,服务器端负责根据一个密码和算法生成Token,然后发给客户端,客户端只负责后面每次请求都在HTTP header里面带上这个Token,服务器负责验证这个Token是不是合法的,有没有过期等,并可以解析出subject和claim里面的数据例子 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsIml

2020-06-22 15:57:12 30

原创 [Mapper]

通用mapper辅助mybatis极简单表开发的组件,提供极其方便的单表增删改查使用导包<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.1.2</version></dependency>配置 mybatis的config文件配置Mybatis-m

2020-06-22 13:51:56 28

原创 [Blog]前端Vue代码分析

Vue代码分析项目结构assets目录components目录Header.vue代码分析代码分析router目录index.js$route$routes$router代码分析store目录localStorage和sessionStoragestore属性代码分析views目录代码分析Login.vueBlogs.vueBlogsDetails.vueBlogdEdit.vuemain.jsApp.vueaxios.jspermission.js项目结构打包完后的项目结构如图所示/pub

2020-06-21 22:04:42 47

原创 [Vue]路由配置

概念路由:控制组件之间的跳转,不是先请求不用刷新页面,直接跳转/切换组件配置/src/router/index.js引入 import Vue from 'vue' import Router from 'vue-router'注册 Vue.use(Router)引入路由对应的组件地址 import component from '@/components/Home' import Home from '@/components/Content’

2020-06-21 15:37:58 65

原创 [Vue]必知必会

Vue的作者尤溪水惩治为渐进式框架选择VueVue遵循建进增量的设计原则,其核心库专注于用户界面,现有项目更方便集成Vue可以构建小型或者复杂的大型页面应用易于上手遵循MVVM原则Vue常见标签v-on绑定事件,如实现按钮单击事件v-bind 绑定属性v-for显示列表v-if条件判断钩子函数bind-只调用一次,指令第一次绑定到元素时调用。insert-被绑定元素插入父节点时调用。update-所在组件的 VNode 更新时调用,但是可能发生在其子元素的 VNo.

2020-06-21 15:24:31 34

原创 [后端开发]配置Redis集群并整合SpringBoot

Redis集群redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制如果集群中=超=过半数的节点==投票认为某个节点挂了,那么这个节点就挂了(fail),这是判断节点是否挂了的方法如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这

2020-06-20 21:49:10 43

原创 [后端开发]二Session共享实现

Session共享Blog项目采用的是Shiro+Redis实现Session共享因为Shiro中本身就提供了sessionManager和sessionDAO,我们可以把shiro和redis集成起来,把session缓存到Redis中,然后需要使用的时候从Redis中获取对应的sessionSession共享思路会话共享的实现思路其实就是1.配置Redis连接信息并在启动类上开启缓存2.自定义Redis的配置类RedisConfig继承CachingConfigurerSupport拿到

2020-06-20 16:56:21 79

原创 [JAVA]Shiro

ShiroShiroApache Shiro FeaturesShiro整体架构认证过程认证流程项目中实现流程密码的比对密码加密成MD5MD5盐值加密Shiro授权过程Shiro权限URL配置Realm自定义Realm多Realm验证认证策略AuthenticationStrategyRealms配置给SecurityManager授权ShiroShiro是基于Apache开源的强大灵活的开源安全框架Shiro提供了 认证,授权,企业会话管理、安全加密、缓存管理易于使用——易用性是项目的最终目标。

2020-06-20 15:01:18 25

原创 [单点登录]

单系统登录机制http无状态协议http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联但是这样可能会导致频繁的请求,以及任何用户都能访问服务器资源导致一定的风险需要鉴别服务器请求就必须维持服务器和浏览器的状态会话机制浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,并在后续第二次和第三次请求中带上会话id,服务器取得请求中的会话id就知道是不是同一个用户了cookie和session机制登录状

2020-06-20 15:00:45 50

原创 [会话共享实现]Shiro+Session+Redis+Nginx[CAS参考版代码]

使用springboot+shiro+session+redis+nginx实现博客系统的会话共享集成Redis先集成单机版的Redis(后续修改为集群)配置application.properties#cache指定缓存类型spring.cache.type=REDIS#data-redisspring.redis.database=15spring.redis.host=192.168.**.**spring.redis.password=spring.redis.port=637

2020-06-20 14:40:37 48

原创 [Session]会话共享

session会话共享存储原理1.用户在浏览器输入用户密码登录进系统。2.由负载均衡代理到后端web013.web01将session存储在redis中,同时下发给用户一个session id存储到浏览器的cookie中4.用户进行其他操作5.负载均衡(LB)代理到web02上面6.web02去读取redis中的session并验证采用Redis存储session会话采用的是分布式结构,分布式的好处是通过负载均衡(LB)分发请求,让多个服务器各自处理请求,来减少单一服务器的压力,并且提高执

2020-06-20 13:42:50 38

原创 [Blog]ShiroSessiosn创建

SecurityManager安全管理器,所有与安全相关的操作都会与SecurityManager交互(负责与shiro的其他组件进行交互,类似与SpringMVC中的DispatcherServlet)管理着所有Subject,所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManagerShiro使用时会先初始化SecurityManager再往里面注入shiro其他组件spring-boot-shiro中初始化的是DefaultW

2020-06-20 12:35:24 21

原创 [后端开发]一

Java后端接口新建SpringBoot项目IDEA中Spring Initializer(JDK1.8)新建项目groupid:com.markerhubArtifact:vueblogPacka在ge:com.markerhub选择jar包Developper ToolsSpringBoot DevToolsLombokwebSpring webSQLMySQL DriverProject name : vue blog P

2020-06-19 23:48:30 91

原创 [前端开发]

搭建环境node.js搭建node.js官网(https://nodejs.org/zh-cn/),下载最新的长期版本,直接运行安装完成之后,即具备node和npm的环境下载完成后,在cmd 输入 node -v npm -v安装vue在node.js的安装盘符安装淘宝npmnpm install -g cnpm - -registry = https://registry.npm.taobao.orgvue-cli 安装依赖包cnpm install - -g vue-cl

2020-06-19 23:37:04 51

原创 [企业权限管理项目]项目介绍

项目介绍项目框架这是一个旅游网站的后台权限管理项目,前端采用了AdminLTE制作,后台框架采用Spring+SpringMVC+Mybatis搭建的一个AllinOne架构的项目,,在IDEA下进行多模块项目开发,数据库选用Oracle项目功能功能方面主要分为产品操作,订单操作,权限管理,产品操作作为旅游产品后台 开发,旅游产品是指一次旅游的出发城市,时间,价格等,在页面(上点击/基础数据/产品管理)就会进行展示所有产品(这是一个查询数据库findAll操作),展示页面上可以进行产品的添加(

2020-06-19 21:37:12 510 1

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除