- 博客(28)
- 收藏
- 关注
原创 shell脚本编程基础(一)
shell脚本编程基础系统信息tu@ubuntu:~/shell$ uname -aLinux ubuntu 4.4.0-198-generic #230-Ubuntu SMP Sat Nov 28 01:30:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linuxtu@ubuntu:~/shell$ cat /etc/issueUbuntu 16.04 LTS \n \ltu@ubuntu:~/shell$ 创建shell脚本文件在创建shell脚本时,必
2021-02-20 17:47:47
310
1
原创 no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]]
logback错误日志no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]]原因logback.xml的加载早于application.yml配置文件,在logback.xml中使用<springProperty>标签来获取配置文件中的变量值,读取不到而报出错误信息。解决方法:1.将logback.xml重命名为logback-spri
2021-02-06 13:31:20
7025
2
原创 oracle数据库修改索引表空间
sqlalter index INDEXNAME rebuild tablespace TABLESPACENAME;批量修改1.查询出当前用户下所有索引进行表空间修改的sql语句。select 'alter index '|| index_name ||' rebuild tablespace tablespacename;' from user_indexes;2.执行第1步的所有查询结果。...
2021-01-31 21:28:39
1161
原创 自定义redisTemplate序列化
自定义<String,Object>类型的redisTemplate,Object使用Jackson序列化。import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.
2021-01-24 21:17:45
122
原创 Redis字符串操作
命令描述SET key value设置指定 key 的值GET key获取指定 key 的值SETEX key seconds value设置指定 key 的值value ,并将设置key 的过期时间为 seconds (以秒为单位)SETNX key value只有在 key 不存在时设置 key 的值MSET key value [key value …]同时设置一个或多个 key-value 对MSETNX key value [key va...
2021-01-17 20:03:10
170
原创 Linux文件操作命令
1.mkdir 创建文件目录2.touch 创建文件3.ls 查看目录下文件4.cd 进入目录5.rm 删除文件6.cp 复制文件7.mv 移动文件8.pwd 显示当前工作目录9.cat 查看文件内容
2021-01-10 19:06:49
62
原创 Ubuntu安装Docker
卸载旧版本$ sudo apt-get remove docker docker-engine docker.io containerd runc更新apt包索引并安装包以允许apt通过HTTPS使用存储库$ sudo apt-get update$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-
2021-01-03 22:06:02
73
原创 Authentication failure 以及xxx is not in the sudoers file 问题的解决办法
问题无法进入root用户,并且没有sudo权限。Linux版本信息解决方法进入Linux修复模式,进入临时root,将用户添加到root和sudo组。1、在启动linux的时候,按下shift键,进入模式选择,选择Advance options for Ubuntu。2、光标移动到对应的recovery mode,按“e”键进入编辑界面。3、找到下图中的位置,将ro改为rw,之后按f10或者ctrl+x。4、选择root。5、进入临时root后,将用户添加至root和sudo组。
2020-12-27 20:52:28
414
原创 SpringBoot中简单使用redis
引入依赖在pom.xml中添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>配置redis连接信息在application.properties配置文件中添加redis连接信息spring.redis.host=l
2020-12-20 22:29:12
86
原创 java使用redis
import redis.clients.jedis.Jedis;import redis.clients.jedis.Pipeline;import java.util.List;import java.util.Set;/** * @author tu */public class Test { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new
2020-12-13 21:57:41
75
原创 Apollo的启动
Apollo启动启动apollo所需的3个服务apollo-configservice、apollo-adminservice、apollo-portal都需要连接到数据库,连接MySQL数据库时的时区参数是必须的(对于1.7.1版本),除此之外,进行数据库连接时还可以设置各种参数,如设置字符集characterEncoding=utf8。当需要设置多个参数时(如设置字符集和时区),使用命令行启动时就会报错。注意:文中所有涉及到数据库连接信息的地方都需要修改为自己数据库的信息(如用户名和密码等)。启动
2020-12-04 17:52:36
5373
原创 Apollo安装
安装Apollo运行环境java 1.8+MySQL 5.6.5+下载配置1.访问Apollo官方主页获取安装包(选择最新版v1.7.1)https://github.com/ctripcorp/apollo/tags2.打开1.7.1的发布链接,下载下图标记的安装包图中的.sha1文件里的是对应安装包经过sha1摘要算法的值,可以用来验证所下载安装包的完整性,不是必须的文件。3.将下载的安装包解压,之后将apollo-configservice-1.7.1.jar, apollo
2020-11-29 21:45:48
830
原创 kmp算法实现(不含原理)
kmp算法实现最近在极客时间上看王争老师的《设计模式之美》时偶然所得kmp算法,先行记录下其具体实现。工具类public class Util { /** * * @param a 主串 * @param n 主串长度 * @param b 模式串 * @param m 模式串长度 * @return 首次匹配下标 */ public static int kmp(char[] a, int n, char[] b
2020-11-22 22:05:14
122
原创 使用@Slf4j打印日志
添加依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.0</version> </dependency> <dependency>
2020-11-14 18:03:17
3058
1
原创 okhttp设置超时时间
okhttp设置超时时间OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS)//设置连接超时时间 .readTimeout(20, TimeUnit.SECONDS)//设置读取超时时间 .build();
2020-11-08 22:15:54
1790
原创 观察者模式
观察者模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都能得到通知并自动刷新。该模式必须包含两种角色:观察者和被观察者。Observer所有观察者的抽象,需要具备更新的功能。Observer.javapublic interface Observer { /** * 更新 */ void update();}Subject主题,所有被观察者的抽象,需要具备添加观察者、移除观察者和通知观察者的功能。Subject.j
2020-10-31 16:57:05
100
原创 动态代理-自定义前置通知和后置通知
ICalc.javapublic interface ICalc { int add(int a, int b); int sub(int a, int b);}ICalcImpl.javapublic class ICalcImpl implements ICalc { public int add(int a, int b) { System.out.println("add......"); return a + b; }
2020-10-25 22:09:29
289
原创 动态代理简单例子
MyTest.javaimport java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;class MyHandle implements InvocationHandler { private final Object target; MyHandle(Object target) { this.target = ta
2020-10-18 22:46:48
123
原创 this和super关键字
this关键字一个对象一个this。this是一个变量,是一个引用,this保存当前对象的内存地址,指向自身。所以,严格意义上说,this代表的就是“当前对象”。this存储在堆内存当中对象的内部。this只能使用自实例方法中,谁调用这个实例方法,this就是谁。this.大部分情况下是可以省略的。但是用来区分局部变量和实例变量的时候不能省略。this可以使用在实例方法中,也可以使用在构造方法中,不可以使用在静态方法中。this()这种语法只能出现在构造方法第一行,表示当前构造方法调用本类其
2020-10-11 17:34:46
91
原创 父子组件相互访问
父子组件间属性和方法的相互访问子组件访问父组件的属性子组件从props获取属性:props : [“f_msg”];父组件的地盘使用子组件: <t1 :f_msg=“msg”></t1>,其中t1是子组件,msg是父组件的属性;子组件内使用的f_msg就是父组件的属性msg。子组件访问父组件的方法父组件地盘使用子组件: <t1 @flag=“ff()”></t1>;子组件方法中使用this.$emit(“flag”)即可调用父组件的ff()
2020-09-27 14:28:00
160
原创 JDBC连接数据库
使用JDBC连接MySQL数据库一、资源配置首先需要引入所需要的jar包,使用maven时可以在pom.xml文件中直接引入下面的依赖: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version&
2020-09-20 21:54:23
270
原创 等待/通知机制
等待/通知在之前的破坏占有且等待条件来解决死锁问题时,我们使用了while(!getAllAccount(account1, account2)) { }来循环等待能够获取到全部所需资源。在并发量大的情况下,这种行为会严重消耗CPU。我们可以用等待/通知机制来进行优化,当资源不足时,进行等待,资源充足时再被唤醒。Java内置的synchronized配合wait()、notify()、notifyAll()就可以实现等待/通知机制。调用wait()方法使当前线程等待,调用notify()、notifyA
2020-09-13 21:44:34
156
原创 使用synchronized产生的死锁问题及其解决
synchronized死锁synchronized作为解决并发编程中原子性、可见性和有序性问题的万能钥匙。其带来的是性能上的问题。使用synchronized关键是看充当锁的角色,锁的作用是保护资源,我们要确定其锁定的范围囊括了需要保护的资源。我们知道synchronized(类名.class){}的用法,类名.class是一个Class的对象,只在JVM中存在一份,所以在不考虑分布式的情况下,这个用法真的可以说是“万能”的。但是通用的背后带来的是性能的问题,如现在有一个账户类(Account),如果
2020-09-06 19:45:34
6914
原创 volatile解决可见性和有序性问题
Java内存模型Java内存模型就是围绕在并发过程中如何处理原子性、可见性和有序性这三个特征来建立的。Java内存模型定义了8种内存访问操作以及其执行时需要满足的诸项规则,以及对volatile的特殊规定,这些足以判定哪些内存操作在并发下是安全的。当然,我们并不需要以上述的方式来思考并发问题,我们只需要用先行发生原则(Java内存模型定义的一个等效判断原则)来确定一个操作在并发环境下是否安全即可。先行发生原则先行发生(Happens-before)原则指的是什么?A Happens-before B
2020-08-30 19:42:43
610
原创 并发编程之可见性、原子性、有序性问题
并发编程Bug的源头我们都知道,CPU、内存和I/O设备有着明显的速度差异,而为了合理利用CPU的高性能,平衡这三者之间的速度差异,计算机体系结构、操作系统、编译程序都做出了贡献,主要体现为:CPU增加了缓存,以均衡与内存的速度差异;操作系统增加了进程、线程,以分时复用CPU,进而均衡CPU与I/O设备的速度差异;编译程序优化指令执行次序,使得缓存能够得到更加合理地利用。这些优化就是并发程序诡异问题的根源所在,总的来说就是缓存导致的可见性问题、线程切换带来的原子性问题、以及编译优化带来的有
2020-08-23 19:21:22
228
原创 java文件操作
File类File类可以表示一个文件(如.txt,.exe文件等文件),还可以表示一个目录(文件夹),所以我们可以在程序中用File 类的对象可以表示一个文件或者目录File 类的对象 还不能直接对文件进行读写操作,只能修改文件的属性常用方法方法描述boolean exists()判断文件是否存在boolean isDirectory()判断类型是否是文件夹boolean isFile()判断类型是否是文件long length()计算文件所包含的字
2020-08-16 18:38:30
169
原创 多态
多态java多态的具体体现是父类型引用指向子类型对象,由于程序执行时的动态绑定,导致了同一种行为(方法)产生了不同的效果。下面通过一个常被拿来用的多态相关的例子,来加强对多态的理解。例题class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { return ("A and A"); }}class B extends
2020-08-07 18:44:47
146
原创 Java学习笔记
Java编程练习——ArrayList练习java编程,自己简单实现ArraryList,代码如下:/** *MyArrayList class * @author zc * */public class MyArrayList<T> { /** * DEFAULT_CAPACITY 默认长度 */ private static final int DEFAULT_CAPACITY = 10; /** * theSize 大小
2020-08-02 00:35:43
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人