杂记
将127.0.0.1替换成localhost,就是为了说明这个作用
UPDATE firearms SET skin = REPLACE(skin,'127.0.0.1','localhost')
# 语法也就是
UPDATE 表名 SET 替换字段的名称 = REPLACE(替换字段的名称,'要替换的部分','替换后的内容')
mysql查看当前数据库的连接者
show processlist;
修改最大连接数量
set GLOBAL max_connections=2000;
快速拼接某个数据库中的表名
SELECT GROUP_CONCAT(CONCAT('"',TABLE_NAME,'"'))
FROM information_schema.`TABLES`
WHERE TABLE_SCHEMA='wish_g1'
GROUP BY TABLE_SCHEMA
mysql修改用户密码
select insert 一起使用的规范
语句形式为:insert into 数据库名.框架名.表名(列名) select (列名) from 数据库名.框架名.表名 where 条件
例如:
insert into MyEmp.dbo.tjdjb(yybh)
select yybh from MyCmd.dbo.tjdjb where djrq='2009-10-15' and yybh = '11'
mysql表名收集表名
sql执行计划
**elasticsearch 6.+版本 **
@GetMapping("list")
public JsonResult list(UserDTO userDTO,@RequestParam(defaultValue = "1")int pageNum, @RequestParam(defaultValue = "3")int pageSize) {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
if (StringUtils.hasText(userDTO.getUsername())) {
// 模糊 高亮
boolQuery.must(QueryBuilders.multiMatchQuery(userDTO.getUsername(),"username"));
}
if (StringUtils.hasText(userDTO.getGender())) {
// 精确
boolQuery.must(QueryBuilders.termQuery("sex",userDTO.getGender()));
}
HighlightBuilder.Field username = new HighlightBuilder.Field("username").preTags("<span style='color:red'>").postTags("</span>");
NativeSearchQuery build = new NativeSearchQueryBuilder()
.withHighlightFields(username)
.withPageable(PageRequest.of(pageNum - 1, pageSize))
.withQuery(boolQuery)
.build();
AggregatedPage<UserVO> users = elasticsearchTemplate.queryForPage(build, UserVO.class, new HighLightResultMapper());
Page page = new Page(pageNum,pageSize);
page.setTotal(users.getTotalElements());
PageInfo<UserVO> pageInfo = new PageInfo<UserVO>(page);
pageInfo.setList(users.getContent());
return JsonResult.successd(pageInfo);
}
分布式 mysql乐观锁
场景:在同一个服务启动多个实例时候,当并发量大的时候,防止数据更新出现冲突。
实现方式:mysql的乐观锁:
字段中添加一个版本号起到锁的作用
<!-- 乐观锁更新 -->
<update id="updateCount">
update
goods_sale
set count = #{record.count}, data_version = data_version + 1
where goods_sale_id = #{record.goodsSaleId}
and data_version = #{record.dataVersion}
</update>
在版本号不同时也就是数据已经发生了变化,这时候就不能在进行修改
要想让更新成功,可以加入自旋,重新开始事务业务逻辑的执行,直到没有发生冲突,更新成功。自旋的实现有两种,一种是使用循环,一种是使用递归。
public void addCount(String goodsId, Integer count) {
while(true) {
GoodsSale goodsSale = dao.selectByGoodsId(goodsId);
if (goodsSale == null) {
throw new Execption("数据不存在");
}
int count = goodsSale.getCount() + count;
goodsSale.setCount(count);
int count = dao.updateCount(goodsSale);
if (count > 0) {
return;
}
}
}
public void addCount(String goodsId, Integer count) {
GoodsSale goodsSale = dao.selectByGoodsId(goodsId);
if (goodsSale == null) {
throw new Execption("数据不存在");
}
int count = goodsSale.getCount() + count;
goodsSale.setCount(count);
int count = dao.updateCount(goodsSale);
if (count == 0) {
addCount(goodsId, count)
}
}
通过乐观锁+自旋的方式,解决数据更新的线程安全问题,而且锁粒度比互斥锁低,并发性能好。
网关的作用
- 路由转发 对外提供统一入口
- 鉴权 (身份认证和安全)
- 限流 zuul网关通过RateLimit gateway 1.计数器 2. 漏桶算法 3. 令牌桶
springboot打包(普通jar 非springboot)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--设置打包格式为普通jar-->
<configuration><skip>true</skip></configuration>
</plugin>
</plugins>
</build>
通过修改插件,会生成两个jar包,一个是带有exec的jar包,该jar包就是可执行的jar;一个是原始jar(其他服务引用需要的jar包)
maven打包跳过测试
mvn package -Dmaven.test.skip=true
docker-compose
mp 逻辑删除
@TableLogic(value = “0”,delval = “1”)
在表示逻辑删除的字段添加,加入后 在调用删除方法时实际就是逻辑删除 value表示未删除的,delval 表示删除的
在查询时候会自动拼接 逻辑删除字段为未删除的
回显时候遇到的bug:
单选框不回显,下拉框回显的是值
原因:在页面写死了
解决方法:
在data中定义数组,上边遍历
linux查看端口号
docker 大全
linux 上传 文件 rz sz 命令
安装 yum install -y lrzsz 打开上传界面 rz 选择上传
centos开放端口
1、开启防火墙
systemctl start firewalld
2、开放指定端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
命令含义:
–zone #作用域
–add-port=1935/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
3、重启防火墙
firewall-cmd --reload
4、查看端口号
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 1935 //查看所有1935端口使用情况·
pom文件中依赖当前本地中的某个jar的写法
<dependency>
<groupId>com.huawei</groupId>
<artifactId>vms-util</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/vms-util-1.0.jar</systemPath>
</dependency>
skywalking中文文档
一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!
第三方登录
npm 后台运行
npm run deploy
npm run stop
dockre-compose搭建redis
Docker-compose之Redis Cluster集群
try中有return finally还执行吗
1.try中有return, 会先将值暂存,无论finally语句中对该值做什么处理,最终返回的都是try语句中的暂存值。
2.当try与finally语句中均有return语句,会忽略try中return。
docker 修改整个容器的字符集
ENV LANG C.UTF-8