杂记

在这里插入图片描述
将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修改用户密码

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表名收集表名

https://blog.csdn.net/qq_34254462/article/details/124619710

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

docker-compose使用
在这里插入图片描述

mp 逻辑删除

@TableLogic(value = “0”,delval = “1”)
在表示逻辑删除的字段添加,加入后 在调用删除方法时实际就是逻辑删除 value表示未删除的,delval 表示删除的
在查询时候会自动拼接 逻辑删除字段为未删除的

回显时候遇到的bug:

在这里插入图片描述在这里插入图片描述
单选框不回显,下拉框回显的是值

原因:在页面写死了

在这里插入图片描述
解决方法:

在data中定义数组,上边遍历

linux查看端口号

linux查看端口号使用

docker 大全

若依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中文文档

skywalking中文文档

一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!

sa-token

第三方登录

JustAuth

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐