07 2019 档案
摘要:从海量数据中,查询出某一固定前缀的key 支持模糊查询,不保证每次执行都返回给定数量的元素 一次返回的元素不可控,只是大概率符合count参数 以0为游标,开始一次新的迭代,直到命令返回游标0完成一次遍历 基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程 Redis常用数据类型 1️⃣Str
阅读全文
摘要:AOP 三种织入方式 AOP的实现:JdkProxy和Cglib 由AopProxyFactory根据AdvisedSupport对象的配置来决定 默认策略,如果目标类是接口,则使用JDKProxy来实现, JDKProxy的核心:InvocationHandler接口和Proxy类 JDKProx
阅读全文
摘要:IOC 控制反转:Inversion of Control spring core最核心部分 DI 依赖注入 dependency inversion 实现: 把底层类作为参数,传递给上层类,实现上层对下层的“控制” set注入、接口注入、注释注入、构造器注入 DL 实现: dependency l
阅读全文
摘要:java.util.concurrent:提供了并发编程的解决方案: CAS 是java.util.concurrent.atomic包的基础 AQS 是java.util.concurrent.locks包,及一些常用类,比如Semophore,ReentrantLock等类的基础 分类: 线程执
阅读全文
摘要:在使用spring boot写接口时,有时会遇到签名的情况,会计算sign值之类的,我们的值计算中,就涉及到了将参数和参数值,按照“k1=v1&k2=v2....”格式拼接,也就是“参数=值&参数=值...”。我采用的思路如下: 这种方法的缺点就是,最后一个参数值后面还会再有一个"&"。但是,我们项
阅读全文
摘要:如何创建线程池? 有五种: ThreadPoolExecutor的构造函数: corePoolSize :核心线程的数量 maxmumPoolSize: 线程不够用时,最大的线程数 workQueue:任务等待队列 keepAliveTime:核心线程外的线程,不会立即被销毁,而是等待至keepAl
阅读全文
摘要:线程安全问题的原因: 解决方法: 在同一时刻,有且只有一个线程操作这些数据;其他线程必须等到这个线程,再对共享数据进行操作 互斥锁: 互斥性:在同一时间,只有一个线程,持有某个对象锁。通过这种特性,来实现多线程的协调机制。在同一时间,只有一个线程对需要同步的代码块进行访问。互斥性,也被称为操作的原子
阅读全文
摘要:判定对象是否属于垃圾: 判断对象的引用数量 通过判断对象的引用数量来决定,是否被回收,引用数量=0,被当做垃圾处理 每个对象实例,都有一个引用计数器,被引用+1,完成引用-1 优点:执行效率高,程序执行影响较小 缺点:无法检测循环引用的情况,导致内存泄露 可达性分析算法 通过判断对象的引用链是否可达
阅读全文
摘要:yield函数:线程让步 对锁的行为不会有影响 如何中断线程? 调用interrupt(),通知线程,应该被中断了: 如果线程处于 被阻塞的状态,那么线程将立即退出 被阻塞的状态,并抛出InterruptedException的异常 如果线程处于正常活动的状态,那么将该线程的 中断标志 设置为tru
阅读全文
摘要:Java的反射: Robot.java: ReflectDemo.java: 运行结果:
阅读全文
摘要:对于时间字符串:2017-04-25,表达式如下: 四个分组: 有 4 个左括号,所以有 4 个分组: main方法中调用:
阅读全文
摘要:sleep是Thread类的方法 wait是object类中定义的方法 wait的唤醒:wait可以通过notify或notifyall唤醒; 锁池: 等待池: notify和notifyall的区别: notifyall 让所有等待池中的线程,全部进入锁池,去竞争锁的机会 notify 只会在等待
阅读全文
摘要:一、主线程等待法:优点:实现简单,缺点:代码冗余 运行结果: 二、使用Thread类的join()阻塞当前线程,以等待子线程处理完毕。优点:比“主线程等待法”更简单 缺点:粒度不够细 三、通过Callable接口实现:通过FutureTask 或者 线程池获取 1、future task 2、线程池
阅读全文
摘要:继承Thread类,创建多线程: 实现Runnable接口,创建多线程:*(推荐这种方式) Thread&Runnable的关系:
阅读全文
摘要:调用线程的start方法是创建了新的线程,在新的线程中执行。调用线程的run方法是在主线程中执行该方法,和调用普通方法一样 实例: 运行结果:
阅读全文
摘要:题一:二分查找法-Java:用于有序数组 代码: 题二:给定一个数组,写一个函数,将数组中的0都挪到数组的末尾,而维持其他非0元素的相对位置 思路:将所有非0元素拿出来,放在按顺序放在一个数组中,然后将最后的位置全部塞进0 思路二:遍历所有数组,将非0元素都放在前K位,剩余的都填充0 题目三:给n个
阅读全文
摘要:shell脚本的语法调试,我们使用bash的相关参数进行调试 -n 不要执行script,仅查询语法的问题 -v 在执行script之前,先将script的内容输出到屏幕上 -x 将使用的脚本的内容输出到屏幕,该参数经常被使用
阅读全文
摘要:while循环:当判断式的条件成立时,进入循环 until:当条件成立时,就终止循环 for..do...done 固定循环 初始值:某一个变量在循环中的初始值,比如i=1 限制值:当变量的值在范围内时,被执行循环,比如i<=100 执行步长:每执行一次循环,变量的值变化量,比如i=i+1
阅读全文
摘要:1️⃣if... then: 2️⃣case...esac: 示例: 3️⃣function函数 function的定义,一定要在使用之前
阅读全文
摘要:第一行#!/bin/bash 声明这个script使用的shell的名称: 因为我们使用的是bash,所以写这一行,来声明这个文件中的语法使用的是bash的语法。当脚本被执行的时候,能够加载bash相关环境的配置文件 除了第一行的#! ,是用来声明shell的,其他的#都是注释 良好的编写习惯: 记
阅读全文
摘要:sort:排序,可以根据不同的数据类型来排序 sort [参数] 文件名 -f 忽略大小写 -b 忽略最前面的空格 -n 使用“纯数字”来排序 -r 反序 -t 分隔符,默认使用[Tab]键来分割 -k 以第几个区间来排序,常和-t连用 uniq : 将重复的行删除,只显示一个,一般与sort结合使
阅读全文
摘要:cut : 将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候,以行为单位进行处理 格式: cut -d '分隔字符' -f fields -d 后面接分隔字符,与-f 一起使用 -f 是取出第几段的意思,根据-d分隔出来的信息,取第几段 cut -c 字符范围 示例一:cut -c
阅读全文
摘要:变量的设置规则: 双引号中的特殊字符$等,可以保持原有特性:var="lang is $LANG" echo $var 输出结果是:lang is en_US 单引号中的特殊字符,是纯文本 : var='lang is $LANG' echo $var 输出结果是:lang is $LANG pid
阅读全文
摘要:> 输出重定向:如果文件存在,会将原来的文件内容覆盖;如果文件不存在,则会创建文件,再添加信息 >> 追加:不会覆盖原来文件的内容,而是追加到文件的尾部 示例: echo "abc" >> a.txt //将"abc“追加到文件a.txt尾部 cat a.txt > b.txt //将a.txt文件
阅读全文
摘要:http://man.linuxde.net/sed 参数: -i 直接修改文件内容 sed替换: 格式: sed -i 's/要被替换的字符串/新的字符串/g' 文件名 sed删除: 格式:sed -i '/正则表达式或者关键字/d' 文件名 sed添加: a:新增,在目标行的下一行进行追加 i:
阅读全文
摘要:使用sed命令,进行替换时,报错:sed:-e 表达式 #1,字符 18:未终止的“s”命令 发现是少了/
阅读全文