- 博客(21)
- 资源 (2)
- 收藏
- 关注
转载 Java多线程-马士兵高并发视频教程笔记
Java多线程基础基础创建线程Java中创建线程主要有三种方式:继承Thread类创建线程类 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体 创建Thread子类的实例,即创建了线程对象 调用线程对象的start()方法来启动该线程 通过Runnable接口创建线程类 定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体 创建 Ru
2020-10-21 11:10:51
526
原创 mysql索引匹配方式
staffs表 建立一个 name age pos的组合索引。全值匹配 和索引中所有的列进行匹配:explain select * from staffs where name='张三' and age=23 and pos ='dev';匹配最左前缀 只匹配前面的几列。最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。 例如:b = 2 如果建立(a,b)顺序的索引,...
2020-10-20 09:31:52
792
原创 Cglib 代理详解及案例
Cglib 代理模式的基本介绍静态代理和 JDK代理模式都要求目标对象是实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理-这就是 Cglib 代理 Cglib代理也叫作子类代理,它是在内存中构建一个子类对象从而实现对目标对象功能扩展, 有些书也将Cglib代理归属到动态代理。 Cglib 是一个强大的高性能的代码生成包,它可以在运行期扩展 java类与实现 java 接口.它广泛的被许多 AOP 的框架使用,例如 SpringA...
2020-10-14 12:40:24
787
1
原创 动态代理终于学明白了
动态代理模式的基本介绍代理对象,不需要实现接口,但是目标对象要实现接口,否则不能用动态代理 代理对象的生成,是利用 JDK的 API,动态的在内存中构建代理对象 动态代理也叫做:JDK代理、接口代理JDK 中生成代理对象的 API代理类所在包:java.lang.reflect.Proxy JDK实现代理只需要使用 newProxyInstance方法,但是该方法需要接收三个参数,完整的写法是: static Object newProxyInstance(ClassLoader...
2020-10-13 12:36:17
116
原创 String经典面试题必知必会
1、String str = new String("a") + new String("b") 创建了几个对象 对象1: new StringBuilder(); 对象2:new String("a"); 对象3:常量池中的 "a" 对象4:new String("b"); 对象5:常量池中的 "b"; 深入剖析:StringBuilder的toString(); 对象6: new String("ab");
2020-10-10 16:16:25
386
1
原创 Zookeeper监听原理详解
1、首先要有一个main()线程;2、在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通讯(connect),一个负责监听(Listener);3、通过connect线程将注册的监听事件发送给Zookeeper;4、在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中;5、Zookeeper监听到有数据或路径发生变化,就会将这个消息发生给listener线程;6、listener线程内部调用了process()方法。常见的监听
2020-10-10 11:32:42
266
原创 ZooKeeper的选举机制详解
1)半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。2)Zookeeper虽然在配置文件中并没有指定Master和Slave。但是,Zookeeper工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的。3)以一个简单的例子来说明整个选举的过程。假设有五台服务器组成的Zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。假设这些服务器依序
2020-10-10 11:20:18
403
1
原创 spring声明式事务学习笔记
步骤1、导入相关依赖: spring-jdbc等2、配置数据源JdbcTemplate3、开启基于注解的事务管理 @EnableTransactionManagement4、配置事务管理器来控制事务【public PlatformTransactionManager transactionManager ()】5、给业务service方法上标注@Transactional,表示当前方法是一个事务方法class UserService { @Autowired UserDao u
2020-10-10 09:46:24
67
原创 Linux根据时间范围查找日志命令示例
grep 时间范围 文件名称例如:1. grep ‘2019-09-09 10:24:3[1-7]’ test.log 查询test.log文件中2019-09-09 10:24:31到2019-09-09 10:24:37时间范围内的日志2. grep ‘2019-09-09 10:2[0-6]’ test.log 查询test.log文件中2019-09-09 10:20到2019-09-09 10:26时间范围内的日志在上面命令中的方括号[]可以限制区域,这样
2020-10-10 09:40:48
5354
原创 SpringCloud Alibaba-Nacos 作为注册中心示例
文档地址https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md1、 下载nacos-serverhttps://github.com/alibaba/nacos/releases2、启动nacos-server 默认使用nacos nacos 登录Linux/Unix/Ma
2020-10-10 09:38:01
220
1
原创 SpringCloud Alibaba-Nacos 作为配置中心示例
文档地址https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md1、 下载nacos-serverhttps://github.com/alibaba/nacos/releases2、启动nacos-server 默认使用nacos nacos 登录Linux/Unix/Mac启
2020-10-09 13:53:11
189
原创 open-feign远程调用服务
1、引入open-feign依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>2、编写一个接口,告诉springcloud这个接口需要调用远程接口
2020-10-09 13:38:23
1406
原创 java 以16进制不可见字符“\x1c\x1d”进行分隔解决方案
/x1C/x1D/x1E/x1F分别对应ASCII码的028,029,030,031四个字符所有可以使用String str = ""+(char)28+(char)29+"";进行分割等处理public class DE { /** * 在这里进行测- * @param args */ public static void main(String[] args) { //注意: 这里的file路径自己可以为了测试, 随便变化的, 写一个测试文件全路径即可 readF
2020-10-09 11:21:02
2549
原创 代码优化之逃逸分析
new出来的对象在方法内使用完结束,没有返回时未发送逃逸引用了外部实例 作为返回值返回时发生逃逸开启标量替换: -XX:+EliminateAllocations使用逃逸分析时编译器可以对代码做如下优化1、栈上分配将堆分配转换为栈分配,如果一个对象在子程序中被分配,要指向该对象的指针永远不会逃逸,对象可能是栈分配的候选,而不是堆分配。2、同步省略如果一个对象被发现只能从一个线程被访问到,那么对于找个对象的操作可以不考虑同步。3、分离对象或标量替换有的对象可能不需要作为一个连续的内存结
2020-10-02 18:55:47
363
原创 java强软弱虚引用总结
1、强引用(死也不回收)new出来的对象 ,死也不回收 OOM的主要原因之一2、软引用(不够即回收)内存够时不清空,内存不够时 执行二次回收,回收后依然不够后报OOM User u = new User(); SoftReference<User> usor = new SoftReference<User>(u); u = null ; usor.get(); //获取对象 回收前能获取到3、弱引用(发现即回收)第一次垃圾回收时就进行
2020-10-02 18:34:07
148
原创 java8内置四大核心函数式接口及应用举例
1、Consumer :消费型接口 void accept(T t);应用举例 public void happy(double money,Consumer<Double> con){ con.accept(money); } public void test(){ happy(1000, m -> Syso("消费"+m+"元")); }2、Supplier :供给型接口 T get(T
2020-10-02 18:28:12
425
原创 UML类图就该这么理解
用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合类图—关联关系(Association)类图—依赖关系(Dependence)类中用到了对方如果是类的成员属性如果是方法的返回类型是方法接收的参数类型方法中使用到类图—泛化关系(generalization) 继承父类泛化关系实际上就.
2020-10-02 18:09:43
153
原创 设计模式必学七大设计原则
1. 单一职责原则 对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2 注意事项和细节 - 降低类的复杂度,一个类只负责一项职责 - 提高类的可读性,可维护性 - 降低变更引起的风险 - 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则2
2020-10-02 18:05:32
103
原创 hotspot方法区的变化
jdk1.6及之前有永久代,静态变量存在永久代上jdk1.7有永久代,但已经逐步“去永久代”,字符串常量池,静态变量移除保存在堆中jdk8及以后无永久代,类型信息,字段,方法,常量保存在本地内存的元空间,但是字符串常量池,静态变量任然保存在堆上jdk7及以前:永久代 占jvm内存大小jdk8及以后:元空间 占物理机内存大小jdk7及以前-XX:MaxPermSize 设置永久代最大大小 默认32位64M 64位82M-XX:PermSize 设置永...
2020-09-30 17:16:36
220
原创 volatile作用及应用举例
作用保证线程可见性 【不能代替synchronized 保证原子性】禁止指令重排序 细节与CPU有关应用双重判断单例 要不要加volatile 需要 一定需要 防止指令重排 【synchronized 不能防止重排序】public class SingletonClass { private volatile static SingletonClass instance = null;public static SingletonClass getInsta
2020-09-30 16:59:54
154
原创 synchronized理解及优化
synchronized(Object)Object不要使用String常量 Integer 和Long锁的是对象不是代码 this XXX.class 通过对象头上的标识锁定方法和非锁定方法同时执行锁升级:偏向锁(只有一个线程的时候)、自旋锁、重量级锁代码执行快 线程少 使用自旋锁 代码执行慢 线程多 使用重量级锁优化:锁的细化:同步代码块中的代码越少越好。锁的粗化:很多细粒度的细化不如加粗。将锁对象final化 避免别修改 导致锁失效。不要使用String作为锁。
2020-09-30 16:55:05
154
尚硅谷_韩顺平_图解Java设计模式
2020-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人