zoukankan      html  css  js  c++  java
  • 脱坑笔记

    MySQL中没有设置正确的时区

    pojo需要实现Serializable

    注意使用插入语句时候看看column是否为非空

    注意springboot中controller只能位于springboot启动类的子包之下。

    使用MySQL时候的URL:jdbc:mysql://localhost:3306/tensquare_base

    mybatis配置的时候是和spring处在同一级的


    今天照例写上自己遇到的坑

    首先String类型的是使用双引号  ""  包括的,char类型的使用的是单引号  ' '

    在剑指offer上面写了个求解1到n中所有数字中1出现的个数时候,在下面的黄色部分出现问题,这里应该注意,使用同一个变量的范围作为判断条件的时候注意,if中的条件语句要从小的向大的写。(惭愧的是,自己花两个多小时写出来的,结果有人几行搞定,路漫漫啊)

    public int NumberOf1Between1AndN_Solution(int n) {
            int temp=0;
            int sum=0;
            int len=Integer.toString(n).length();
            int den= (int) Math.pow(10, len-1);
            if(n<1) {
                return 0;
            }
            else if(n<10) {
                return 1;
            }
            temp=n/den;
            sum=(--len)*temp*den/10;
            if (temp==1){
                sum+=n%den+1;
            }else{
                sum+=den;
            }
            return sum+NumberOf1Between1AndN_Solution(n%den);
        }


    springboot测试的时候出现出现 Failed to load ApplicationContext 的异常

    注意需要在启动类上加上

    @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})

    关上springboot的数据源自动配置,如果不关上,并且配置问价中没有就会出现错误。

    今天遇到一个问题就是Arrays.asList()这个函数只能接受对象构成的数组,基本数据类型构成的数组是不可以用的。

     
     

     数组一旦设定大小,他的.length实惠求其数组的长度,并不是数组里面有数的长度,因为数组中即使没赋值,其默认的初始值都是零

     

    任何被设置初始大小的数组都是不为null的


    今天写一个牛客网上面的编程题,犯了一个最不应该犯的错误

    String中的“equals()”和“==”,自己像傻子一样一直使用==判断两个的地址,在这里顺便复习一下String中的常量池。


    昨天出现springboot和eureka结合时候出现个问题,

    程序毫无任何错误输出的情况下结束进程,控制台打印

    process exit with code 1

    百度了好久没找到,最后在GitHub上找到了,老外自己debug出来的,看来以后自己要学着找bug

    最后按照老外的加上下面日志包,程序奇迹般的好使了

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>4.7</version>
    </dependency>

    但是回头想去找错误的时候,将这个依赖注释掉重启服务,尴尬的是服务没毛病,重启了还是一样正常,我只记得上一步自己在maven工程中加入了一个.iml文件。因为工程不知道为什么没生成这个文件,里面存放的是maven的配置信息。

    老外debug显示是相关的日志包不对,将springboot中的日志包去除,自己手动加上日志包。相关的配置如下

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-hateoas</artifactId>
                <version>${spring.boot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-batch</artifactId>
                <version>${spring.boot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-access</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>net.logstash.logback</groupId>
                <artifactId>logstash-logback-encoder</artifactId>
                <version>4.11</version>
            </dependency>
    </dependencies>

    最后贴上老外的地址  https://github.com/logstash/logstash-logback-encoder/issues/243


    今天使用eureka时候出现一个问题就是在使用json反序列化的时候必须有默认的构造函数,否则就会报错,错误忘记截图了,下次一定先贴截图


    generate-ddl生成表结构


    有个就是所有的类在声明的时候必须初始化,否则没有办法使用

    因为查询结果是空,friend任然是个空指针,必须初始化,才能在下面使用


    拦截器的设置

    @Component
    public class JwtIntercepter implements HandlerInterceptor {


    @Autowired
    private JwtUtil jwtUtil;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    String header=request.getHeader("Authorization");

    if(header!=null&&!"".equals(header)&&header.startsWith("Bearer ")){
    String token=header.substring(7);
    try{

    Claims claims=jwtUtil.parseJWT(token);
    String roles= (String) claims.get("roles");
    if(roles!=""&&roles.equals("admin")){
    request.setAttribute("claims_admin",claims);
    }
    if(roles!=null&&roles.equals("user")){
    request.setAttribute("claims_user",claims);
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    return true;
    }
    return false;
    }
    }

    注意拦截器最后的设置。重写方法需要注意是不是写错了


    注意在循环或者递归的时候一定注意对象是否为空,添加对应防止对象是空情况下的处理 

    public class Solution {
    
    
        private boolean funSymmetric(TreeNode l,TreeNode r){
            if(l==null&&r==null){
                return true;
            }
            if(l==null||r==null){
                return false;
            }
            if(l.val!=r.val){
                return false;
            }else{
                return funSymmetric(l.left,r.right)&&funSymmetric(l.right,r.left);
            }
        }
        boolean isSymmetrical(TreeNode pRoot)
        {
            if(pRoot==null){
                return true;
            }
            return funSymmetric(pRoot.left,pRoot.right);
    
        }
    }

     使用zuul网关的时候注意需要在添加的过滤器上添加@Component注解


    一个关于maven的错误 ,出现红色波浪线(unresolved dependency),解决办法之一就是删除pom文件中的依赖,在重新写入,对于自己写的工程需要使用mvn clean一下在mvn install一下。还有一个在搜索问题的时候有人建议导入工程时候使用open,在Structure中在设置,如果你是直接复制的项目文件夹  你要点 open  不要点 import project。  原因好像是如果 点了import project按照向导设置到最后,就会多出一个main工程,所有的依赖都会在main工程下找,main工程是你刚创建的肯定是空的,所以肯定会报错了。  要确实想import project,你需要去Project Structure 下的Modules里,把你原项目下的所有包都加进main下就好了


    看ThreadPoolExecutor源码的时候在addWorker()函数遇到一个循环的问题

        private boolean addWorker(Runnable firstTask, boolean core) {
            retry:
            for (;;) {
                int c = ctl.get();
                int rs = runStateOf(c);
    
                // Check if queue empty only if necessary.
                if (rs >= SHUTDOWN &&
                    ! (rs == SHUTDOWN &&
                       firstTask == null &&
                       ! workQueue.isEmpty()))
                    return false;
    
                for (;;) {
                    int wc = workerCountOf(c);
                    if (wc >= CAPACITY ||
                        wc >= (core ? corePoolSize : maximumPoolSize))
                        return false;
                    if (compareAndIncrementWorkerCount(c))
                        break retry;
                    c = ctl.get();  // Re-read ctl
                    if (runStateOf(c) != rs)
                        continue retry;
                    // else CAS failed due to workerCount change; retry inner loop
                }
            }
    
            boolean workerStarted = false;
            boolean workerAdded = false;
            Worker w = null;
            try {
                w = new Worker(firstTask);
                final Thread t = w.thread;
                if (t != null) {
                    final ReentrantLock mainLock = this.mainLock;
                    mainLock.lock();
                    try {
                        // Recheck while holding lock.
                        // Back out on ThreadFactory failure or if
                        // shut down before lock acquired.
                        int rs = runStateOf(ctl.get());
    
                        if (rs < SHUTDOWN ||
                            (rs == SHUTDOWN && firstTask == null)) {
                            if (t.isAlive()) // precheck that t is startable
                                throw new IllegalThreadStateException();
                            workers.add(w);
                            int s = workers.size();
                            if (s > largestPoolSize)
                                largestPoolSize = s;
                            workerAdded = true;
                        }
                    } finally {
                        mainLock.unlock();
                    }
                    if (workerAdded) {
                        t.start();
                        workerStarted = true;
                    }
                }
            } finally {
                if (! workerStarted)
                    addWorkerFailed(w);
            }
            return workerStarted;
        }

    这里应该注意上面的retry:这个标签是用来跳出外层循环的。因为本身的break和continue只能跳出一层循环。

    
    
  • 相关阅读:
    MySQL索引
    MySQL事物
    《软件设计师》——计算机网络
    《软件设计师》考点分布
    《软件设计师》——UML
    《软件设计师》——法律法规与标准化知识
    《软件设计师》——多媒体基础
    《软件设计师》——信息安全基础
    《软件设计师》——数据库系统
    《软件设计师》——数据结构和算法基础
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10440428.html
Copyright © 2011-2022 走看看