Docker中安装数据库,建议日常开发使用,不建议生产使用。
1、Linux中安装Docker
1、如何安装docker呢
centos操作系统要采取yum install docker。。。。。
debian操作系统要采取apt install docker。。。。。
以上这种方式太麻烦,有甚者还要卸载掉以前老版本,有没有一键安装的操作方式呢,当然有的请参考:https://www.runoob.com/docker/ubuntu-docker-install.html
Docker中安装数据库,建议日常开发使用,不建议生产使用。
1、如何安装docker呢
centos操作系统要采取yum install docker。。。。。
debian操作系统要采取apt install docker。。。。。
以上这种方式太麻烦,有甚者还要卸载掉以前老版本,有没有一键安装的操作方式呢,当然有的请参考:https://www.runoob.com/docker/ubuntu-docker-install.html
直接下载下来jar采用本地压缩软件(7z)直接打开,讲编译好要替换的文件直接拖进去压缩即可。
这种方法应对class文件替换,楼主试过均可以成果启动,如果出现莫名其妙其他问题请采用方法二进行处理
此方法亲测有效,楼主采用方法一,修改yml文件总是出现莫名其妙的问题,无法正常启动。
采用以下方法成功上岸,方法如下,尽情参考。
1 | 1、使用命令 jar xvf xxxx.jar |
根据官方文档发现RuleBasedIpFilter,进行IP过滤实现黑白名单处理。
官方文档地址如下:https://netty.io/4.1/api/io/netty/handler/ipfilter/IpFilterRule.html
1 | public class IpFilterRuleHandler extends RuleBasedIpFilter { |
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
根据一系列搜索后,据别人吹水说axios性能会比jquery…其他请求框架要好,最重要的是它支持过滤器功能。方便前端分离项目使用。
1 | # 当然想了解更多axios请戳这里: |
前端JS内容
文件的上传和下载是Web系统中的一个很普通的功能,实现的方式也有很多种,如利用 java.io 下面的各种IO类自己实现,或者利用 Commons IO 包中的 FileUtils 、 IOUtils 类中封装好的方法直接调用。
1 | //此处省略N行代码 |
我们大部分情况均会采用以上的方式进行处理。
FileUtil.readBytes 这句代码会将文件之间一次性读取到内存中。如果配置内存不能满足文件大小,结果如下👇👇👇
1 | java.lang.OutOfMemoryError: Java heap space //这个很熟悉吧 |
通常我们解决此问题方式均是
1 | set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m -XX:MaxPermSize=256m |
但即使按照把上面的参数配置都扩大一倍,在下载更大的文件时还是会遇到 java.lang.OutOfMemoryError: Java heap space 这个错误,上面的解决方法治标不治本。分析下异常堆栈可以发现问题产生的根源在于 FileUtil.readBytes这行代码,FileUtil.readBytes 会把文件一次性读入内存中,要下载的文件越大,需要占用的内存也越大,当文件的大小超过JVM和Tomcat的内存配置时,OutOfMemoryError 这个问题就会不可避免的发生。
基于Redis的分布式限流器(RateLimiter)可以用来在分布式环境下现在请求方的调用频率。既适用于不同Redisson实例下的多线程限流,也适用于相同Redisson实例下的多线程限流。该算法不保证公平性。除了同步接口外,还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。
本地缓存显然不能满足,只能考虑redis当然redis中采用lua脚本也是可以实现的。今天文中的redisson中RateLimiter也是可以的
官方例子看一下 https://github.com/redisson/redisson/wiki/6.-%E5%88%86%E5%B8%83%E5%BC%8F%E5%AF%B9%E8%B1%A1
1 | RRateLimiter rateLimiter = redisson.getRateLimiter("myRateLimiter"); |
Redisson底层采用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。
1、pom中maven配置
1 | <dependency> |
2、yml配置集成Redisson
1 | spring: #redisson 配置信息 |
FEDERATED是什么呢?
通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中。就是说,这种建表方式只会在数据库A中创建一个表B的表结构文件,表的索引、数据等文件还是在机器B上的数据库B中,相当于只是在数据库A中创建了表B的一个快捷方式。
1、是否支持FEDERATED引擎

Nginx是一个以高性能、高并发著称的HTTP服务器,它支持HTTP(HyperText Transfer Protocol,超文本传输协议)反向代理、TCP(Transmission Control Protocol,传输控制协议)代理、负载均衡、HTTP缓存及Web开发等。
HTTP请求报文
1、请求行,包括请求方法、请求URL(Uniform Resource Locator,统一资源定位符)、HTTP及其版本号。
2、请求头、指客户端向服务器传输请求时附加的一些信息,有key/value组成,使用:隔开。常见key(Cookie、User_Agent、Accept-Encoding)等。
3、请求体、一般由POST请求方法进行提交,可以传输图片、文件或者字符串等。
HTTP相应报文
1、响应行、包含HTTP版本号、状态码、状态码描述。
GitHub 地址:https://github.com/lionsoul2014/ip2region
ip2region - 最自由的ip地址查询库,ip到地区的映射库,提供Binary,B树和纯内存三种查询算法,妈妈再也不用担心我的ip地址定位。
今天的主角是lua_c模块,我们要使用Openresty调用lua查询IP地址定位。
安装Openresty等环境
安装环境套件请移步 https://oneinstack.com/
Openresty安装目录/usr/local/openresty
这里介绍下Openresty采用LuaJit,目前套件中使用的LuaJit2.1对应的Lua5.1版本,固然ip2region的Lua(Ip2region模块的位运算依赖了bit32模块,这个是lua 5.2才开始支持的。)是不能直接使用的。
LuaJit安装目录/usr/local/openresty/luajit/include/luajit-2.1
下载好 GitHub 地址:https://github.com/lionsoul2014/ip2region 源码
编译ip2region.so文件
我们使用到目录binding/lua_c和binding/c目录和ip2region.db文件