互联网
Mof_Rehoboam
毕业于北京邮电大学计算机信息管理专业。先后在移动互联网、物联网、通信等领域摸爬滚打近7年,从事过开发,也担任过产品经理。目前是全栈Java开发工程师,同时也是《学习计划》、《全名垃圾分类》等APP的作者。
展开
-
学习计划
学习计划是一款辅助学习的软件,有了它,你可以详细了解到每天学习的进展和统计,让你坚持到底。功能特色在计划选项卡下,你可以添加和编辑每一天要实现的计划,点击今天标签,可以调出日历控件,查看每一天的计划完成情况。如果想更直观的看到每一天的计划完成情况,可以点击统计选项卡,其中用不同柱状颜色标明每一项计划在过去每天的完成情况百分比。如果当天某一项的训练计划在规定的时间完成,将获得相应的铜、银、金奖杯作为奖励。在成就选项卡中可以查看某年末月某日在哪项任务获得过哪项奖杯。为了更好的帮助大家坚持而完整地完成原创 2020-09-19 23:03:18 · 121 阅读 · 0 评论 -
假设有一张表,有字段ID(主键),A,B,C,D;如果字段A的值和字段B的值和上一条(或者某一条)记录都相同的话就算重复,就需要删除其中重复的记录,只保留一条不重复的记录,请问该如何写这条SQL?
创建表CREATE TABLE tmp(id INT PRIMARY KEY,A VARCHAR(5),B VARCHAR(5),C VARCHAR(5),D VARCHAR(5));插入测试数据INSERT INTO tmpSELECT 1 ,‘A1’,‘B1’,‘C1’,‘D1’UNION ALLSELECT 2 ,‘A1’,‘B1’,‘C2’,‘D2’UNION ALLSELECT 3,‘A2’,‘B2’,‘C3’,‘D3’UNION ALLSELECT 4原创 2020-07-19 09:23:12 · 475 阅读 · 0 评论 -
栈溢出、内存溢出和内存泄漏的区别
这三个概念在初学java的时候经常搞混。今天简单概括一下。栈溢出Java的内存结构中,栈的大小不是无限的。大量的方法调用过程,导致不断压栈最终将栈内存占满,产生StackOverflowError错误,程序直接终止运行。产生栈溢出的场景:比如不合理(递归太深)的递归调用。内存溢出创建了大量线程、对象,导致垃圾回收器来不及回收,分配的堆内存被占满,产OutOfMemoryError错误。产生栈溢出的场景:比如死循环中创建对象。内存泄漏当很多对象使用之后已经没有再使用的必要而没有置为null,原创 2020-07-15 19:11:10 · 2102 阅读 · 0 评论 -
MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
这个问题主要考察了以下几点内容:1.Redis的内存淘汰策略。2.Redis的最大内存设置。思路:首先计算出20w数据所需的内存空间,设置最大内存,然后选择合适的内存淘汰策略。内存淘汰策略在Redis的redis.conf配置文件中,列出了8种策略:(1)volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。(2)volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。(3)volatile-random:从已设置过期时间的数据集中任意选择数据原创 2020-07-14 20:37:51 · 3674 阅读 · 2 评论 -
Linux设置Shell脚本开机自动运行
以CentOS举例。1.编辑xx.sh, 在shell脚本的 #! /bin/bash下,增加如下两行内容:注:不要讲前面的#去掉,这里虽然是注释,但是chkconfig会读取这两行内容,如果去掉#,shell执行时会出错。# chkconfig: 2345 85 15 # description: myservice2345 的解释:等级2表示:无网络连接的多用户命令行模式等级3表示:有网络连接的多用户命令行模式等级4表示:不可用等级5表示:带图形界面的多用户模式85 15 的解原创 2020-06-26 20:20:37 · 2021 阅读 · 0 评论 -
CAP理论
概述有的人叫CAP原则或CAP定理,大体上都是一个意思。要理解CAP理论的原理,首页要理解其中三个字母分别代表的含义。C:Consistency的缩写,表示一致性;A: Availability的缩写,表示可用性;P:Partition tolerance的缩写,表示分区容忍度。什么是分区?简单理解就是由于网络波动或网络故障等原因,系统各模块直接无法正常通信的一种彼此隔离的状态。在分布式系统中,C A P三者不能同时满足,最多只能同时满足两种情况:要么AP,要么CP,要么AC,这些是被通过严格理论论原创 2020-06-25 09:33:56 · 165 阅读 · 0 评论 -
MySql 设置允许远程连接
当通过Sqlyog等工具连接云主机或虚拟机的Mysql时,如果出现:1130-Host "192.168.43.1" is not allowed to connect to this MySql server。说明你的Mysql登录用户未对远程连接授权。需要进行以下几步操作:在云主机或虚拟机登录Mysql:1.update user set host = '%' where user = 'root';以下代表允许root用户远程连接MySql:2.GRANT ALL PRIVILEG原创 2020-06-24 22:06:27 · 225 阅读 · 0 评论 -
MyBatis获取插入数据库的ID而不是影响的行数
使用Redis在新增数据时,默认返回的是影响的行数,而不是插入数据库的主键自增的id。映射文件可以通过如下方式配置(将文章对象article的数据录入到数据库):<insert id="addArticle" useGeneratedKeys="true" keyProperty="id"> insert into 表 () values ()</insert>在代码中:articleMapper.addArticle(article);这里需要注意:插入数据原创 2020-06-20 21:29:51 · 431 阅读 · 0 评论 -
REST风格介绍
在通过HTTP协议请求一个资源时,除去URL域名和端口剩下的部分,称为URI,意思是统一资源标志符(Uniform Resource Identifier),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。但是很多时候,我们习惯于通过POST和GET请求,然后搭配不同的URL完成对服务器同一资源的增删改查。这其实是违背了HTTP对URI的定义的。正确的做法是对于相同的资源,就使用相同的URI,对资源的不同操作就使用不同的请求方式(如GET、POST、U原创 2020-06-14 16:38:53 · 570 阅读 · 0 评论 -
关于生成验证码之后返回cookie丢失的问题
问题描述在做登录时进行验证码判断的功能时,因为要将生成验证码的文本存储在Redis中,微服务框架无法直接使用Sesiion,所以需要模拟之前Session底层的做法,将session的id值存储在cookie中来区分不同的浏览器客户端访问。所有需要在第一次生成验证码时,生成这个cookie返回给浏览器。当用户第二次刷新验证码时,直接通过这个ID标识覆盖Redis中存储的验证码。但是生成的cookie始终无法在Response对象中返回给浏览器。Controller中的代码是这样的:@RequestM原创 2020-06-09 09:10:57 · 583 阅读 · 0 评论 -
Redis6.0.4 服务器集群搭建
实现目标在一台主机上,搭建一个3主3从的高可用Redis服务器集群。Redis6.0.4安装参见CentOS7.0安装Redis6.0.4准备工作1.在redis安装目录,创建6个文件夹:mkdir 9000 9001 9002 9003 9004 90052.将redis安装目录redis.conf文件分别拷贝到6个文件夹中,并命名为:redis-cluster.conf[root@localhost redis-6.0.4]# cp redis.conf 9000/redis原创 2020-06-04 21:47:30 · 1809 阅读 · 1 评论 -
CentOS7.0安装Redis6.0.4
Redis6.0.4下载安装分别执行以下命令完成Redis6.0.4的下载和编译。$ wget http://download.redis.io/releases/redis-6.0.4.tar.gz$ tar xzf redis-6.0.4.tar.gz$ cd redis-6.0.4$ make启动Redis服务端:$ src/redis-server启动Redis客户端:$ src/redis-cli验证安装:redis> set foo barOKredis&原创 2020-06-04 18:36:49 · 730 阅读 · 1 评论 -
Redis的基础命令
keys *功能:列出所有当前连接的redis服务端存储的键。效果:127.0.0.1:9000> keys *1) "zhaoliwen"如果一个没有匹配到,显示:(empty list or set)127.0.0.1:9000> del zhaoliwen(integer) 1127.0.0.1:9000> keys *(empty list or set)127.0.0.1:9000> exists功能:查询某个键是否存在,如果存在返回1,如果不存原创 2020-05-30 20:18:17 · 198 阅读 · 0 评论 -
Java数据类型转换之谜探索
Java基本数据类型有四类八种:整数型小数型字符型布尔型byte、 short、 int、 longfloat 、doublecharboolean数据类型的转换主要有以下规则:1.小的数据类型会自动转为大的数据类型,反之需要强制类型转换。2.所有字面值是整数的默认是int类型。将2147483648赋值给long类型,报错:Integer number too large,明明没有超过long表示的范围。long i=2147483648;//Integer原创 2020-05-28 17:18:25 · 561 阅读 · 0 评论 -
Java标识符之规则、范围与规范的区别
这似乎是一个比较基础的概念,但是如果细究起来Java标识符的规则、范围和规范的区别,还不一定每个人都等立马准确回答上来,尤其是初学者。规则java标识符不能是关键字,不能以数字0-9开头。范围这里的范围一般指组成范围,包括各国常见文字、数字以及特殊字符(_、$)。规范1.驼峰命名,类名首字母大写,属性名\方法名首字母小写。2.见名知意,好的代码几乎可以不需要注释,光看标识符命名就可以获取足够的信息。总的来说,如果在组成范围之内并且遵守命名规则就是合法的标识符。命名规则和组成范围,是Java原创 2020-05-28 14:09:26 · 315 阅读 · 0 评论 -
正则表达式之字符匹配符
首先要明白字符和字符串的概念,这是我们理解正则表达式基础。字符串是由数字、字母、下划线以及标点符号组成的一串字符。那么可以理解,字符就是组成字符串的基本元素,是一个不可再分割的单位。再举一个通俗的例子:城墙是由砖头搭建的。那么,这里的城墙,就可以看作是字符串,砖头就是字符。我们来看一个最简单的字符匹配符(同时也是一个最简单的正则表达式):[]上面的一对中括号,代表在字符串中匹配一个“什么都不匹配”的“字符”,说白了,就是什么都不匹配。从哲学的角度讲,“无”并不代表没有,“无”本身就是原创 2020-05-26 11:00:16 · 661 阅读 · 0 评论 -
Eureka 使用详解
Eureka 简介看着这个图标,就感觉到了Spring与Eureka之间浓浓的基情。Spring Cloud Eureka 是Spring对Netflix公司的Eureka的二次封装的产品,它实现了服务治理的功能,Spring Cloud Eureka提供了服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。微服务在说微服务之前,先讲讲项目的功能拆分问题。功能拆分对我们来说并不陌生,曾记否刚入坑编程时的那段光辉岁月?你小心翼翼地将一大坨代码按功能切原创 2020-05-25 21:30:42 · 7604 阅读 · 7 评论 -
Nginx 使用详解
概述介绍Ngnix是一个高性能的HTTP服务器代理,实现对HTTP请求的处理。 它没啥别的本事,就是一个中介代理,把HTTP请求拦截下来之后交给Apache、Tomcat等WEB容器去处理。当然这个中介代理还会点武术的,它本身也可以完成对静态资源的请求处理,性能还不错,这个我在后面会讲到。主要作用负载均衡将一个请求,分摊给多个不同的服务器(WEB容器)去处理。这些服务器可能在一台主机上,也可以在其它主机,也可以是内网主机,也可以是外网。就像你去餐厅吃饭,有配菜、炒菜、传菜、上菜等不同环节不同的原创 2020-05-24 12:06:07 · 5928 阅读 · 4 评论 -
SpringBoot启动报Unable to start embedded Tomcat
我在进行SSM项目转SpringBoot的过程中,报了以下错误:大概的意思是内置去Tomcat启动失败。Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletCon.原创 2020-05-22 18:05:28 · 24483 阅读 · 5 评论 -
Maven 详解
Maven 详解 Author:赵利文 2020-5-19 17:52Maven概述简介 Maven是一款基于POM(项目对象模型:Projcet-Object-Model)的项目管理工具。Maven解决的问题 在没有Maven之前,在做软件项目的开发过程中,会导入一些依赖jar包。如果只有你一个人开发,并且jar包比较少还好说。但是上升到团队开发,不同团队成员开发不同的模块,模块之间还会依赖相同的jar包,相同的jar包的版本可能每个人使用的还不一样。这样在项目开发过程中或者在整合时原创 2020-05-20 21:16:42 · 545 阅读 · 0 评论 -
CentOS7.0通过Shell脚本一键安装Mysql
LinuxCentOS7.0通过Shell脚本一键安装MysqlCentOS7.0通过Shell脚本一键安装Mysql2020-5-18 20:31以下是Shell代码:#!/bin/bash# author: 赵利文 微信ID:zhaoliwen89# 首先检测rpm安装包是否准备好# 1.MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm# 2.MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm原创 2020-05-18 22:23:38 · 793 阅读 · 0 评论