<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wflsyf的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wflsyf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wflsyf]]></copyright><item><title><![CDATA[mongo直接在数据库中更新数据，不查到内存]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/125161441</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/125161441</guid><author>wflsyf</author><pubDate>Tue, 07 Jun 2022 11:11:07 +0800</pubDate><description><![CDATA[由于数据量巨大，查询到内存操作完之后保存非常耗时，改为在数据库中直接操作]]></description><category></category></item><item><title><![CDATA[EasyExcel解析excel（合并单元格和未合并）]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/124998068</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/124998068</guid><author>wflsyf</author><pubDate>Fri, 27 May 2022 09:58:50 +0800</pubDate><description><![CDATA[未合并的单元格excel文件
    /**
     * 转换用户上传的excel文件为java对象
     *
     * @param file  用户上传的文件
     * @param clazz 将被解析的类
     * @param &lt;T&gt;   泛型,任意类型
     * @return 返回解析数据的List形式
     * @throws IOException      文件读取异常
     * @throws EquipmentException 自定义异常
]]></description><category></category></item><item><title><![CDATA[前端上传图片至服务器，然后前端通过url访问图片]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/124847134</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/124847134</guid><author>wflsyf</author><pubDate>Wed, 18 May 2022 17:32:52 +0800</pubDate><description><![CDATA[后端需挂载图片路径，前端上传图片时直接上传至挂载路径。
添加虚拟路径访问，例如图片都存放在linux服务器的/root/avatar/目录下，访问时想设置avatar代替目录,若web端口为10000，
则localhost:10000/访问前缀(未设置不填)/avatar/图片名可访问到图片

@Configuration
public class AvatarVirtualConfig implements WebMvcConfigurer {
    @Override
    public voi.]]></description><category></category></item><item><title><![CDATA[mongo数据库聚合分类，只返回数据库中指定字段不重复的数据]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/124821577</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/124821577</guid><author>wflsyf</author><pubDate>Tue, 17 May 2022 15:00:31 +0800</pubDate><description><![CDATA[T.class为mongo数据库实体类
        TypedAggregation&lt;T&gt; noRepeated = Aggregation.newAggregation(
                T.class,//数据库的实体类
                Aggregation.match(Criteria.where(数据库字段).is(待满足的条件).and(数据库字段).is(待满足的条件)),//匹配的规则，先获取数据中将满足条件的警报
              ]]></description><category></category></item><item><title><![CDATA[springboot邮件发送（QQ邮箱）]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123876703</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123876703</guid><author>wflsyf</author><pubDate>Thu, 31 Mar 2022 16:46:43 +0800</pubDate><description><![CDATA[yml配置文件

spring:
  mail:
    host: smtp.qq.com
    port: 587
    username: 发件人的QQ邮箱
    password: QQ邮箱里设置-》账户-》开启POP3/SMTP服务-》取得的码
    protocol: smtp
    default-encoding: UTF-8
    properties:
      mail.smtp.auth: true
      mail.smtp.starttls.enable: t.]]></description><category></category></item><item><title><![CDATA[指定定时任务，可改变任务定时时间]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123786382</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123786382</guid><author>wflsyf</author><pubDate>Mon, 28 Mar 2022 09:25:37 +0800</pubDate><description><![CDATA[实现SchedulingConfigurer接口
提前注入TaskScheduler

    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(128);
        scheduler.setThreadNamePrefix("TaskSche.]]></description><category></category></item><item><title><![CDATA[采用LocalDateTime获取指定时间段]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123661184</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123661184</guid><author>wflsyf</author><pubDate>Tue, 22 Mar 2022 15:04:01 +0800</pubDate><description><![CDATA[导包
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;

例如获取上一个月最后一天的最后一个时间点
        dateTime.minusMonths(1)
                .with(TemporalAdjusters.lastDayOfMonth())
                .withHour(23)
                .withMinute(59)
  ]]></description><category></category></item><item><title><![CDATA[Docker,流水线部署镜像时，第一次没有启动删除报错解决]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123590694</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123590694</guid><author>wflsyf</author><pubDate>Mon, 21 Mar 2022 14:25:13 +0800</pubDate><description><![CDATA[应该先判断是否存在
docker ps -q --filter "name=nettyserver" | docker stop nettyserver
docker ps -q --filter "name=nettyserver" | docker rm nettyserver
docker ps -q --filter "name=registry.cn-beijing.aliyuncs.com/cqupt/transformer-energy-nettyserver:1.0.0" | docker ]]></description><category></category></item><item><title><![CDATA[JPA表间关系（多对多，一对多，多对一）]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123499707</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123499707</guid><author>wflsyf</author><pubDate>Tue, 15 Mar 2022 12:57:50 +0800</pubDate><description><![CDATA[**AccountEntity：用户
RoleEntity：角色
Permission: 权限
一个用户只能有一个角色，而一个角色可以属于多个用户，
一个角色拥有多个权限，一个权限也可以被多个角色拥有
**

OneToMany(此时的角色就为一对多)，在多的一方中加入少的一方的Set集合。targetEntity 为关联的实体类。JoinColumn可减少中间表的生成，account_role_id为待会儿会在少的一方(AccountEntity)中生成的角色Id字段,referencedColumnNa]]></description><category></category></item><item><title><![CDATA[Compose文件配置springboot环境变量]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123333474</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123333474</guid><author>wflsyf</author><pubDate>Mon, 07 Mar 2022 16:30:07 +0800</pubDate><description><![CDATA[application.yml文件中的私密密码需要隐藏在服务器，因此需要将变量写在compose文件中。
在compose中加入environment然后下挂  参数名:“参数值”,如果在springBoot中有换行则需加下划线_.



]]></description><category></category></item><item><title><![CDATA[Mongo查询子文档中的多重嵌套]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123329047</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123329047</guid><author>wflsyf</author><pubDate>Mon, 07 Mar 2022 14:06:06 +0800</pubDate><description><![CDATA[例如它的数据库为这个样子，该列名称为provinces.

mongo按照以下进行筛选即可。

query.addCriteria(Criteria.where(“provinces”).elemMatch(Criteria.where(“projects”).elemMatch(Criteria.where(“boxes”).elemMatch(Criteria.where(“id”).is(“1422”)))));

...]]></description><category></category></item><item><title><![CDATA[DockerSwarm compose启动，容器时间和本地不一致]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/123175657</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/123175657</guid><author>wflsyf</author><pubDate>Mon, 28 Feb 2022 09:53:02 +0800</pubDate><description><![CDATA[在Dockerfile中添加

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &amp;&amp; echo "Asia/Shanghai" &gt;/etc/timezone


在compose文件中挂载

    volumes:
      - /etc/localtime:/etc/localtime:ro


]]></description><category></category></item><item><title><![CDATA[Collectors.groupingby生成两成map嵌套，或者保持list的顺序生成]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122731984</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122731984</guid><author>wflsyf</author><pubDate>Fri, 28 Jan 2022 15:29:10 +0800</pubDate><description><![CDATA[groupingby两个参数中的前者，生成的是最外面一层map的key，如果不加第二个参数原本应该生成list，改变他默认的生成规则，第二个参数填我们想让它的value怎么生成。

list的链表.stream().collect(Collectors.groupingBy(Monitor::getNodeId,Collectors.toMap(Monitor::getAddr,Function.identity())));


保持原有的list顺序生成map

list的链表.stream().col.]]></description><category></category></item><item><title><![CDATA[mongo查询后返回子文档中的部分数据（不全部返回）]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122731910</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122731910</guid><author>wflsyf</author><pubDate>Fri, 28 Jan 2022 15:22:58 +0800</pubDate><description><![CDATA[采用MongoTemplate实现、
f

        Query query = new Query();
        query.addCriteria(Criteria.where(单独的字段).is(某个值));
        query.fields().elemMatch(子文档所在字段,new Criteria(子文档中某个参数).is(某个值));
        mongoTemplate.findOne(query, GatewayDoc.class);


举例：

   .]]></description><category></category></item><item><title><![CDATA[Docker部署mqtt服务器(emqx)，密码认证]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122699883</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122699883</guid><author>wflsyf</author><pubDate>Wed, 26 Jan 2022 13:52:41 +0800</pubDate><description><![CDATA[拉取emqx镜像docker pull emqx/emqx:v3.0.1
启动emqx,docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v3.0.1
修改需要账号密码登录，认证方式为mysql。
1、进入emqx的docker容器内：docker exec -it emqx /bin/sh
2、修改etc目录中的exqx.conf文件中的allow_.]]></description><category></category></item><item><title><![CDATA[实现swagger在线文档]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122576232</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122576232</guid><author>wflsyf</author><pubDate>Wed, 19 Jan 2022 11:01:15 +0800</pubDate><description><![CDATA[导包

implementation 'io.springfox:springfox-boot-starter:3.0.0'


写swagger

@Configuration
@EnableOpenApi
public class SwaggerConfig {
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInf.]]></description><category></category></item><item><title><![CDATA[在请求期间通过ThreadLocal单用户共享]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122572938</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122572938</guid><author>wflsyf</author><pubDate>Wed, 19 Jan 2022 08:33:49 +0800</pubDate><description><![CDATA[在拦截器preHandle内，采用set赋值，postHandle后clear防止内存泄露。
//创建一个类，
	ThreadLocal&lt;AccountInfo&gt; USER_HOLDER = new ThreadLocal()

    public static void setUser(AccountInfo user) {
        USER_HOLDER.set(user);
    }

    public static AccountInfo getUser() {
    ]]></description><category></category></item><item><title><![CDATA[Jwts生成令牌案例（简单）]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122416569</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122416569</guid><author>wflsyf</author><pubDate>Mon, 10 Jan 2022 18:45:56 +0800</pubDate><description><![CDATA[导入依赖

    implementation 'io.jsonwebtoken:jjwt:0.9.1'


生成Token

    static String generate(final String username, final String secret) {
        Instant instant = Instant.now();
        return Jwts.builder()
                //注入参数
                .claim(.]]></description><category></category></item><item><title><![CDATA[Gradle剔除依赖]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122416424</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122416424</guid><author>wflsyf</author><pubDate>Mon, 10 Jan 2022 18:20:07 +0800</pubDate><description><![CDATA[在导入依赖的地方（注意：需要打括号将导入的依赖包住）
    implementation ('com.cqupt:transformer-energy-core-api:1.6.9'){
        exclude group:'org.springframework.boot',module:'spring-boot-starter-data-mongodb'
    }


]]></description><category></category></item><item><title><![CDATA[java8(stream)从数组或集合中找到符合条件的就返回该对象]]></title><link>https://blog.youkuaiyun.com/wflsyf/article/details/122396940</link><guid>https://blog.youkuaiyun.com/wflsyf/article/details/122396940</guid><author>wflsyf</author><pubDate>Sun, 09 Jan 2022 18:26:29 +0800</pubDate><description><![CDATA[测试代码
    public static void main(String[] args) {
        List&lt;Integer&gt; list =new ArrayList&lt;&gt;();
        for (int i=0;i&lt;10000;i++){
            list.add(i);
        }
        Integer integer = list.stream()
        .filter(integer1 -&gt; {
 ]]></description><category></category></item></channel></rss>