自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fishandbearspaw的博客

记录,提高

  • 博客(167)
  • 收藏
  • 关注

原创 redis整理-kw

redis支持的数据类型有哪些?key只能为Stringvalue可以是:5种比较常见的String、Hash、List、Set、zset加上BitMap、hyperloglogs(是用来做基数统计的算法)、geospatial(地理空间相关的)redis在Spring的使用中,能直接存储Obecjt对象吗?能的,在Spring中,我们使用redis的形式如下 @Autowired private RedisTemplate<String, SignParam> redisTempl

2021-01-12 08:57:06 160

原创 SpringCloud-Netflix并没有闭源、Eureka1.X也没有闭源

网上流行的说法:Netflix的Eureka 闭源了(不实)引起一些人的焦虑、恐慌,SpringCloud-Netflix是不是就不能用了,没人维护了真相:1、Spring Cloud Netflix仍在维护2020.12.27上github看到,刚刚发布了一个新版本还是活跃的,有人维护的https://github.com/spring-cloud/spring-cloud-netflix/releases**2、闭源的或者说停止开发的是Eureka 2.0 **Spring Cloud

2020-12-27 11:06:51 740 1

原创 Java-异常

什么是异常?异常是指程序运行时,导致正常流程被中断的事件。异常分类可查异常:CheckedException (要么try catch住,要么往外抛,谁调用,谁处理。如果不处理,编译器,就不让你通过)运行时异常:RuntimeException (不是必须进行try catch的异常)错误:Error 指的是系统级别的异常,通常是内存用光了(不是必须进行try catch的异常)异常不进行捕捉,会怎么样?异常发生后,没有进行捕捉处理的话,程序就会终止,并在控制带打出异常信息...

2020-12-13 12:38:33 157

原创 Lock接口整理

Lock后于Synchronized出现Lock与Synchronized的不同它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。Java提供的Lock接口的实现ReentrantLockReentrantReadWriteLockLockSuppo

2020-12-13 12:36:09 135

原创 nginx相关整理

Nginx能做什么1.反向代理2.负载均衡3.HTTP服务器(包含动静分离)4.正向代理反向代理反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。具体例子:外网需要访问,医院内网机器时,当服务部署在内网机器上时,需要nginx服务部署在前置机上作转发;负载均衡负载均衡也是Nginx常用的一个功能,负

2020-12-08 08:57:37 108

原创 一个功能简单的线程池实现

功能:仅支持自动创建线程和线程复用import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;/** */public class MyThreadPool { int corePoolSize; int currentPoolSize; LinkedBlockingQueue<Runnable> todoWorks = new LinkedB

2020-11-30 09:41:01 95

原创 Mysql数据库读写锁相关

和读锁、写锁相关的场景一个线程想读取一行数据,而且这行数据正在被修改。这时候会发生什么?1.SELECT … FROM是一个快照读,通过读取数据库的一个快照,不会加任何锁,除非将隔离级别设置成了 SERIALIZABLE 。排他锁什么时候使用innodb引擎的insert,update,delete操作都会给操作数据加上排他锁(行级锁).这时候其他事务是没法对这行数据进行操作的.。在所有索引扫描范围的索引记录上加上排他的next key锁。如果是唯一索引,只需要在相应记录上加index r

2020-11-28 18:16:11 161

原创 Java-字符串

字符串遍历每一个字符的方法用for循环+str.substring(i,i+1);str.charAt(); //public char charAt(int index)str.toCharArray();** Char、String的转换**Char 2 String:1. String s = String.valueOf('c'); //效率最高的方法2. String s = String.valueOf(new char[]{'c'}); //将一个char数组转换成String

2020-11-03 22:17:59 502

原创 Java中的值传递、引用传递?

最终自己的理解Java中,声明变量如:Test a = null; 时内存中开辟了空间,存储了变量名a,并且拥有一个存储的地址A当Test a = new Test(); 时,内存中开辟了另外一块空间,储存了Test类的实例对象的数据状态,并且拥有一个存储的地址BJava中是值传递的因为,在方法调用时,method(a); 是新建一个变量a1(a1的存储地址为C),变量中COPY了地址B的值;由于始终拿到不到地址A,所以是无法改变A的指向地址的,A仍然指向地址B。如果地址B中存储的数据被改变,那

2020-11-03 20:10:14 118

原创 Java -数组

数组new实例方法int data[] = new int[3];int date[] = {1, 2, 4, 545, 11, 32, 13131, 4444};大小用.length~(联想记忆:数组没有继承collection接口,所以不是size);

2020-11-02 20:01:10 95

原创 关于Unbounded queue 、 Bounded queue -整理

可选是否有界队列(optionally-bounded)LinkedBlockingQueue有界队列无界队列ConcurrentLinkedQueue什么时候用无界队列?用无界队列的时候不用担心溢出吗?用有界队列的时候ThreadPoolExecutor-相关ThreadPoolExecutor的实现,可以使得队列是无界队列。使用无界队列时,要注意,核心线程数 X最大线程数 Y最大线程数不会生效,因为队列永远不会满。。...

2020-10-29 23:37:44 689

原创 Java-Collection集合- 关于optional operation

Collection类中的一些方法上有(optional operation)标识例如:add()方法boolean java.util.Collection.add(E e)Ensures that this collection contains the specified element (optional operation). Returns true if this collection changed as aresult of the call. (Returns false if

2020-10-29 22:36:48 291

原创 阻塞/Java中实现阻塞有哪些方法?

什么是阻塞?没有找到权威定义。自己理解:通常在Java中,我们说到阻塞,主语是线程。可以理解为线程想要进行下去,但是由于条件没有具备,所以阻塞等待,直到条件具备,该线程知道(被唤醒?),而继续把线程进行下去。只要线程暂停-释放cpu使用权就算阻塞吗?Java中实现阻塞有哪些方法sleep() 方法释放CPU,不会释放锁suspend() 和 resume() 方法(在JDK中已经过期)不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会

2020-10-29 13:53:29 1733

原创 Java基础-接口相关

接口可以作为变量类型例如:Runnable理解为实现了Runnable 接口的某个类,然后该类必定有run方法,可以进行调用 class MyThread extends Thread { Runnable runnable; @Override public void run() { runnable.run(); try { Runnable todoRunnable = todoWorks.take(); while (todoRunnable !=

2020-10-29 11:02:01 87

原创 Java后端基础-基本类型、字符串相关

String长度String.length()不是size();s.toCharArray();String只能查到在某个位置的字符.charAt();

2020-10-29 10:19:14 151

原创 Java基础-代理

什么是Java中的类加载器类加载器(class loader)用来加载 Java 类到 Java 虚拟机中java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class 类的一个实例什么是代理买票:在网上直接买票相对于到电影院现场买票就是代理买东西:在超市买东西,相对于批发市场、厂家,就是代理Java中的代理通过自定义的代理类对想要访问的对象进行访问Java中的

2020-10-29 10:10:47 56

原创 Java基础-类型、变量

面向对象对象=数据C++与Java的不同主要在于多重继承Java:接口多线程原先在C++中是没有的整型整型,用于没有小数部分的数值Char类型Char类型原本用于表示单个字符,但是现在有些Unicode要用两个char值来表示...

2020-10-29 10:09:44 73

原创 冒泡排序

什么是冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个一句话描述关于使用冒泡时,从0-Max,只看小。从Max-0,只看大?Java语言实现 public static void bubbleSort(int arr[]) { for(int i =0 ; i<arr.length-1 ; i++) {

2020-10-29 10:05:58 95

原创 实现多线程的几种方式

多线程的底层实现?一定要用Thread或者Runnable接口才能实现多线程吗?一般用的时候都是继承Thread类吧

2020-10-29 10:04:47 114

原创 HashSet相关整理

HashSet是Java中常用的Set的实现HashSet的实现HashSet底层是用HashMap实现的。HashSet的特点不保证添加顺序保证唯一HashSet是如何保证唯一的?HashSet的底层实现是HashMap,当HashSet中添加元素时,使用把元素的值作为key,new一个Obect()类放入到HashMap中,而HashMap是能够保证key值唯一的。...

2020-10-29 10:04:38 59

原创 关于线程和进程、多线程相关理解

什么是线程和进程?进程和线程简单而基本靠谱的定义如下:进程:程序的一次执行线程:CPU的基本调度单位阮一峰理解:(1)进程是一个容器。(2)线程是容器中的工作单位。一个CPU同一时间只能处理一个进程吗?对的一个CPU同一时间只能处理一个线程吗?对的那么,一个进程可以同时由两个CPU处理吗?可以的,就是只有能实现多个cpu处理一个进程,才能用线程池充分使用所有的CPU资源;什么是多线程?多线程是指该进程中包含了多个线程。为什么要使用多线程?使用多线程的目的是充分利用cpu资

2020-10-29 10:04:32 139

原创 JDBC过程

1、加载JDBC驱动程序。2、提供JDBC连接的URL。3、创建数据库的连接。4、创建一个Statement,要执行SQL语句,必须获得java.sql.Statement实例。5、执行SQL语句。6、处理两种情况的结果。7、关闭JDBC对象(关闭结果集–>关闭数据库操作对象–>关闭连接)。...

2020-10-29 10:04:22 79

原创 SQL-常见的聚合函数有哪些?

聚合函数聚合函数对一组值执行计算并返回单一的值。求个数/记录数/项目数等:count()例如: 统计员工个数?select count( ) from Company --包括空值select count(*) from Company --不包括空值求某一列平均数 :avg()例如:求某个班平均成绩 ?求某个公司员工的平均工资?select avg(score) from Scores —平均成绩select avg(salary) from Company --平均工资注意:若某行

2020-10-29 10:03:45 3961

原创 SQL - Group By 、Having

“Group By”就是根据“By”指定的规则对数据进行分组,把一整块数据分成几份,再在这几份的数据上各自进行语句处理,再合在一起展示Group By一般是什么时候使用?分组汇总配合聚合函数Group By会丢失数据?现在理解:如果不用聚合函数,把分组好的数据利用起来,那么确实会丢失。如:Group By的原则:,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面但是:select k.std_id, k.class_id from kechen

2020-10-29 10:03:26 229

原创 SQL-相关整理

SQL查询语句中的 limit 与 offset 的区别limit y 分句表示: 读取 y 条数据limit x, y 分句表示: 跳过 x 条数据,读取 y 条数据limit y offset x 分句表示: 跳过 x 条数据,读取 y 条数据offset关键字offset的英文:偏离什么叫子查询?子查询就是将一个查询(子查询)的结果作为另一个查询(主查询)的数据来源或判断条件的查询。常见的子查询有WHERE子查询,HAVING子查询,FROM子查询,SELECT子查询,EXISTS子查

2020-10-29 10:03:20 86

原创 SQL练习提高

练习1题目一:SQL语句:返回只选修一门课程的人id和那门课程的ID;答案:练习2查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为–,mysql为comment)CREATE TABLE employees (emp_no int(11) NOT NULL, – ‘员工编号’birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varcha

2020-10-29 10:03:12 119

原创 sql-join相关

select * from a,b代表什么?1)单纯的select * from a,b是笛卡尔乘积2)select * from a,b where a.id=b.id相当于inner join具体测试,参考:https://www.cnblogs.com/zzliu/p/11370272.html单独的join代表什么?join 和 inner join区别join等同于inner joinleft join 和right join,会LEFT JOIN 关键字会从左表 (table_n

2020-10-29 10:02:57 117

原创 Cookie和Session的区别

cookie百度百科:储存在用户本地终端上的数据百度百科:Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足Cookie的工作原理Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户

2020-10-29 10:02:47 134

原创 关于Java-线程池(ThreadPool)

为什么需要线程池?百度百科:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价他人理解:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?Java中的线程池实现...

2020-10-29 10:02:40 498

原创 Java基础-构造方法、初始化

构造对象想使用对象,就必须先构造对象。Java中使用构造器构造新的实例。构造器是一种特殊的方法so,构造方法也是方法,也可以用public、private进行修饰。例如:对比1、可以理解为格式一样,因为构造方法返回的类必定是该构造方法所构造的类,所以省略2、省略return3、构造器方法方法名为大写,其他方法为小写 public Thread(String name) { init(null, null, name, 0); } private

2020-10-29 10:02:33 4769

原创 信号量

什么是信号量?计数器,保存一个值,值代表有多少资源可以使用。一些人说不要使用“信号量”原因:信号量对应的功能可以使用互斥锁加条件变量来实现,因此信号量通常不是必要的(尽管它是更基本的原语);信号量的计数在本质上由用户维护,容易出错。其他人说法:在这样复杂的场景中使用信号量的最大问题是,简单的错误很容易导致死锁和/或竞争条件。当您有多个读取器和写入器时,这一点尤其正确。有了一个作家,事情就变得更简单了。如果您打算这样做,那么我强烈建议您首先使用有序的有限状态机对其建模,并让尽可能多的知识渊博

2020-10-28 20:20:59 159

原创 关于数据库的查询优化

加粗样式

2020-10-15 15:32:22 123

原创 B树、B+树

B树的诞生1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。B树的定义,性质B树:平衡的多叉树、平衡多路查找树(查找路径不只两个)性质:根结点至少有两个子女;每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;?除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;?所有的叶子结

2020-10-15 11:56:59 171

原创 关于各种锁

乐观锁、悲观锁乐观锁认为别人不会修改,再修改后,在更新的时候会判断一下在此期间别人有没有去更新这个数据;悲观锁认为别人一定也会修改,独享锁、共享锁独享锁是指该锁一次只能被一个线程所持有。共享锁是指该锁可被多个线程所持有。举例:有些锁对于写时关闭的,但是对于读时多个线程开发的。互斥锁...

2020-10-15 11:56:48 276

原创 synchronized整理

synchronized是什么?并发编程时,为保证线程安全时用到synchronized的作用1、保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区;2、还可以保证共享变量的内存可见性synchronized锁的对象Java中每一个对象都可以作为锁,这是synchronized实现同步的基础。synchronized可以修饰的方法类型1、普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁2、静态同步方法,锁是当前类的class对象 ,进入同步代码前

2020-10-15 11:56:41 130

原创 关于Volatile整理

Volatile的作用Volatile是为了解决可见性问题出现的volatile保证不同线程对共享变量操作的可见性,也就是说一个线程修改了volatile修饰的变量,当修改写回主内存时,另外一个线程立即看到最新的值。Volatile的代价Volatile需要cpu在处理相应变量时,要去嗅探检查该值是否过期。JMMJava内存模型,java虚拟机规范中所定义的一种内存模型。JMM的规定1、所有的共享变量都存储于主内存,变量指的是实例变量和类变量2、每一个线程还存在自己的工作内存,线程的工作内

2020-10-15 11:56:33 114

原创 网络分区是什么?

网络分区目前理解,在分布式环境下,有时由于网络通讯故障,而不是服务器上的应用故障,导致一些节点认为应用不可用,另外一些节点认为应用仍可用。导致,整个系统在提供服务时,造成了不一致性。例子Redis集群通常是主备集群;Redis的Sentinel组件会监视集群的状态,可能仅因为Sentinel组件所在服务器和主Redis的网络通讯出现了问题(并不是主Redis故障),导致发现当前的“主Redis”不可用就会把“从Redis”设为“主Redis”;在做这个主备转换前后,原来已链接“老主Redis”的客

2020-10-15 11:56:14 5935

原创 HashMap相关整理

HashMap是什么?HashMap是一种使用了Hash算法的Java中的数据结构,内部主要由数组和链表实现。备注链表是为了应付Hash碰撞时使用,如果没有碰撞,则不需要链表HashMap设计-均匀分布因为HashMap设计是通过,Hash值的不同,放到不同的index下,所以,存在一些的设计,使得index的计算更加均匀。HashMap当发生Hash碰撞时,从头插入还是从尾插入?Java8之前是头插入,Java8之后是尾插入。为什么修改?头插入时,HashMap在并发情况下的put操作在一定

2020-10-15 11:56:03 117

原创 ArrayList相关整理

ArrayList是什么?ArrayList是数组列表,主要用来装载数据。ArrayList的底层实现ArrayList是用数组来实现的。ArrayList的特点特点:查询效率⾼,增删效率低,线程不安全。使⽤频率很⾼。底层是数组,那么我们为什么可以存放任意数量元素这个功能,是通过数组扩容的方式实现的。ArrayList的默认大小:10ArrayList中存储元素的内存是连续的ArrayList遍历最⼤的优势在于内存的连续性,CPU的内部缓存结构会缓存连续的内存⽚段,可以⼤幅降低读取内存

2020-10-15 11:55:16 119

原创 数据库-索引相关

什么是索引?索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构;帮助MySQL高效获取数据的数据结构;所谓索引,就是以某个字段为关键字的B树文件;-阮一峰为什么需要索引?数据库以B树格式储存,能解决的问题和不能解决的问题解决了:按照"主键"(其实是主键索引)查找数据的问题没有解决:通过其他数据库字段查找数据的问题。想查找其他字段,就需要建立索引(index)主键和索引的区别?主键是表中的一个字段,能够唯一标识一条记录;索引是一种数据库存储数据时使用的一种数据结构。索引是底

2020-10-15 11:54:59 231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除