- 博客(33)
- 收藏
- 关注
原创 Java 读取TXT文件-行读取
Java 读取TXT文件-行读取public static String readFiles(String path) throws Exception{ BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path),"UTF-8")); StringBuffer sb = new StringBuffer(); String line = reader.readLine(
2020-07-29 11:00:16
1071
原创 可重入锁(又名递归锁)
可重入锁指的是同一线程外层函数获得锁之后,内层递归函数仍能获取该锁的代码,在同一线程的外层获取锁的时候,在进入内层方法会自动获取锁,也就是说线程可以任意进入它已经拥有的锁的同步代码块。synchronized 是一个典型的重入锁使用synchronized 实现代码如下:public class ReenterLockDemo { public static void main(S...
2020-05-04 22:42:22
285
原创 CAS实现原子操作的三大问题
在java并发包中有一些并发框架也使用了自旋CAS的方式来实现原子操作,比如LinkedTransferQueue类的Xfer方法。CAS虽然很高效地解决了原子操作,但是CAS仍然存在三大问题ABA问题,循环时间长开销大,以及只能保证一个共享变量的原子操作。ABA问题在CAS操作值的时候,如果一个变量是A,变成了B,又变成了A,那么使用CAS进行检查时是发现没有变化,但是的确是变化了。解决思路...
2020-04-08 23:41:21
628
原创 手写一个轮询算法加深理解
手写一个轮询算法加深理解先将config包下的ApplicationContextConfig类中的@LoadBalanced注解去掉@Configurationpublic class ApplicationContextConfig { /** * applicationcontext.xml <bean id=" class=> * */ @...
2020-04-06 19:27:49
463
原创 windows安装配置zookeeper后启动出现的错误:java.io.IOException: Unable to create data directory
今天学习zookeeper集群部署在Windows10上出现了很多问题现在一一叙述一下问题1再点击zkServer.cmd出现闪退 需要用编译工具打开在最后一行加入pause命令问题2datadir权限问题在c盘部署是是需要系统管理员权限的,我觉得来回更改权限很麻烦就在D盘下部署了。问题3 zoo.cfg配置问题则需要去conf文件夹下面新建一个文本,zoo.cfg,然后把zoo_sa...
2020-03-03 12:04:37
1959
2
原创 RocketMQ学习(1)
1. MQ介绍##1.1 为什么要用MQ消息队列是一种“先进先出”的数据结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BKWEla3R-1583031162741)(img/queue1.png)]其应用场景主要包含以下3个方面应用解耦系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一...
2020-03-01 10:54:26
443
原创 windows桌面图标变白
在命令提示符下输入下列命令即可恢复。 按键 “WIN+R” 输入即可cmd 然后输入分别输入 :taskkill /im explorer.exe /fcd /d %userprofile%\appdata\localdel iconcache.db /astart explorer.exeexit...
2020-02-14 09:04:35
249
原创 Redis和MongoDB的区别
Redis和MongoDB的区别(面试受用)项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。最近又想起为什么用MongoDB,就查阅一下,汇总汇总:之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。就Redis和Mongo...
2019-12-25 10:31:01
331
原创 剑指offer 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { public boolean Has...
2019-12-18 13:47:08
218
原创 剑指offer 合并两个链表
/** * 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 */ class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { ...
2019-12-17 22:05:22
116
原创 剑指offer 二叉树的镜像
public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { public voi...
2019-12-17 21:32:27
97
转载 Git本地commit后push到GitHub,没有显示contribution
https://blog.youkuaiyun.com/lanyandong/article/details/81040612
2019-12-13 13:14:54
508
原创 java面试题
一、Java 基础1.JDK 和 JRE 有什么区别?2.== 和 equals 的区别是什么?3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?4.final 在 java 中有什么作用?5.java 中的 Math.round(-1.5) 等于多少?6.String 属于基础的数据类型吗?7.java 中操作字符串都有哪些类?它们之间有什么区...
2019-12-04 08:56:25
1479
3
原创 设计模式(创建型,原型模式)
原型模式中有三个登场角色:原型角色: 定义用于复制现有实例来生成新实例的方// 以贴主示例代码为例 implements Cloneable // 1.(抽象类或者接口)实现 java.lang.Cloneable 接口public Shape clone(); // 2.定义复制现有实例来生成新实例的方法具体原型角色: 实现用于复制现有实例来生成新实例的方法public S...
2019-12-02 13:42:49
95
原创 navicat连接MySQL8+时出现2059错误解决方法
在用navicat连接MySQL8+时会出现2059错误,这是由于新版本的MySQL使用的是caching_sha2_password验证方式,但此时的navicat还没有支持这种验证方式。解决方法就是将验证方式改为以前版本(5.7及以下)使用的验证方式mysql_native_password。具体的验证方式可以查看默认数据库’mysql’中user表plugin字段。在命令行中登录数据库时...
2019-11-12 22:42:34
187
原创 线程池拒绝策略
线程池拒绝策略RejectedExecutionHandler //(饱和策略):当队列和线程池都满了,说明线程池处于饱和状态,那么必须采取一种策略处理提交的新任务,这个策略默认是AbortPolicy类下的方法,表示无法处理新任务时抛出的异常。在JDK1.5中Java线程池框架提供了一下4种策略:AbortPolicy() //直接抛出异常CallerRunsPolicy()...
2019-10-09 10:44:16
185
原创 写时复制
写时复制CopyOnWrite 容器及写时复制的容器。往一个容器添加元素的时候,不直接网当前容器Object[] 添加,而是先将当前容器Object[] 进行Copy ,复制出一个新的引用指向新的容器 setArray(newElements);。这样做的好处是可以copyonwrite 容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以copyonwrite 容器也是一种读写分...
2019-10-07 13:26:53
110
原创 JAVA集合知识点总结(一)
JAVA集合集合类存放于Java.util包中,主要有3种:set(集)、list(列表包含Queue)和map(映射)。Collection:Collection是集合List、Set、Queue的最基本的接口。Iterator:迭代器,可以通过迭代器遍历集合中的数据Map:是映射表的基础接口ListJava的List是非常常用的数据类型。List是有序的Collection...
2019-09-25 22:13:05
350
原创 JVM加载机制的过程(二)
类加载器虚拟机设计团队把类的加载阶段中的“通过一个类的全限定类名来获取描述此类的二进制字节流”这个动作放到JVM外部实现,实现这个动作的代码模块称为类加载器启动类加载器(Bootstrap ClassLoader)负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath参数指定路径中的,且被虚拟机认可(按文件名识别,如rt.jar)的类。扩展类加载器(E...
2019-09-25 20:02:43
106
原创 JVM 类加载机制过程(一)
JVM 类加载机制JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个 Class 文件获取,这里既可以从ZIP包中读取(比如从jar包和 war 包中读取),也可以在运行时计...
2019-09-25 19:40:08
139
原创 设计模式(3)
里氏替换原则OO 中的继承性思考和说明中的继承性思考和说明继承包含这样一层义:父类中凡是已经实现好的方法, 实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契但是如果对些已经实现的方法任意修改,就会对整个继承体系造成破坏 继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序侵入性,程序的可移植降低增加对象间耦合如果一个类被其他所继承则当这个类需要修改时,必须考...
2019-09-19 09:34:16
88
原创 设计模式(2)
借口隔离原则客户端不应该依赖它需要的接 口,即一 个类对另一的依赖应该建立在最小的接口上先看一张图类A通过接口 Interface1 依赖类 B,类 C通过 接口 Interface1 依赖类 D,如果接口 Interface1 对于类 A和类 C来说不是最小接口那么类 B和类D必须去实现他们不需要的方法。接下来要多做的是按隔离原则应当这样处理: 按隔离原则应当这样处理: 将接...
2019-09-19 09:03:10
258
原创 设计模式(1)
设计模式的作用代码重用性可读性可扩展性可靠性使程序呈现高内聚,低耦合的特性设计模式常用的七大原则有单一职责原则借口隔离原则依赖倒转原则里式替换原则开闭原则OCP迪米特法则合成复用原则单一职责原则 对类来说的,即一个应该只负责 项职。如类 A负责两个不同职 :责两个不同职 :责1,职 责2。 当职 责1需求变更...
2019-09-18 22:12:43
168
1
原创 实例方法和静态方法常识
1、调用方式上静态方法依赖于类,通过类.静态方法调用;实例方法依赖于类的对象,需要创建对象后,对象.实例方法使用2、使用上实例方法内部不能定义静态变量,会出现编译错误;实例方法可以直接调用静态方法;静态方法内部可以定义和使用实例变量,静态方法无法直接调用实例方法(因静态方法加载时类还没有实例化,实例方法依赖于类的对象)3、静态方法和实例方法的内存分配问题一般认为静态方法常驻内存,实例方法...
2019-09-17 21:28:15
2167
原创 浏览器输入url到发起http请求所经历的过程
一 浏览器查找域名对应的 IP 地址(域名解析的过程,先进行缓存的查看);1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。2、如果hosts里没有这个域名的映射,则查找本地DNS(Domain Name System)解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。...
2019-09-14 16:54:04
344
原创 二维数组转稀疏数组的思路
二维数组转稀疏数组的思路遍历 原始的二维数组,得到有效数据的个数sum根据sum就可以创建稀疏数组sparseArr int[sum + 1][3]将二维数组的有效数据存入到稀疏数组 //创建一个原始大的二维数组11 * 11 //0: 表示没有棋子 int chessArr1[][] = new int[11][11]; chess...
2019-09-12 21:19:27
262
1
原创 JAVA 线程实现/创建方式
1.继承 Thread 类Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。 启动线程的唯一方法就是通过 Thread 类的 start()实例方法。 start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法class MyThread extends Thread { @Override public v...
2019-09-11 16:58:58
124
原创 GC回收算法
复制算法(copy)复制算法用于回收新生代GC复制算法将堆分成From和To两个内存块,当From被占满时GC将From中的存活对象复制到To中,同时将From和To交换。通过递归遍历GC root(即采用深度优先)复制存活对象,对于已经复制过的标记其COPIED字段。复制过的对象将在From的对象的forwarding记录To中该对象地址,以便于其余引用了该对象的引用进行修改。分配对...
2019-09-09 13:37:43
173
原创 JVM知识体系总结
JVM位置jvm 是运行在操作系统之上,本身和硬件是没有直接的交互关系。. 类加载器ClassLoader负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定Native Interface本地接口Java语言本身不能对操作系统底层进行访问和操作,但是可以...
2019-09-09 12:57:16
229
原创 StringBuffer与StringBuilder的区别
StringBuffer与StringBuilder的线程安全性问题StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。这是因为在源代码中StringBuffer的很多方法都被关键字synchronized 修饰了,而StringBuilder没有。有多线程编程经验的程序员应...
2019-09-07 09:03:59
128
原创 JDBC时区异常错误解决
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-06-23 10:42:34
773
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人