• 等级
  • 9835 访问
  • 119 原创
  • 17 转发
  • 46399 排名
  • 0 评论
  • 0 获赞

Integer缓存问题

java内部为了节省内存,IntegerCache类中有一个数组缓存了值从-128到127的Integer对象。当我们调用Integer.valueOf(int i){这一步自动装箱就会用到}的时候,如果i的值时结余-128到127之间的,会直接从这个缓存中返回一个对象,否则就new一个新的Integer对象。 即:当我们定义两个Integer的范围在【-128—+127】之间,并且值相同的时候,...

2018-10-18 20:07:43

数据结构大纲(自我总结用)

线性表    顺序存储结构:我们常用的数组    链式存储结构:链表 串:     由多个或零个组成的有限序列,又名字符串。 树:     树是多个结点的有限集, 表示法: 顺序表: 双亲表示法:通过一个数组存储结点信息,结点包括下标,data域,和一个双亲指针(双亲结点的下标),但是如果我们需要找到某个结点的孩子结点,我们需要遍历整个数组 孩子表示法:我们为了更快的找到孩子,...

2018-10-16 15:34:58

mysql中的MVCC

学任何东西都是循序渐进的过程 之前看了这方面的东西,那时候很心急,因此很多东西不能完全理解。今天再次拿出来看 首先学习MVCC我们先要去学习redo log 和undo log这些日志是干嘛的 undo log: 存储了数据先前的版本 我们的mysql事务有一特性称为原子性,undo log就完成了这一特性。它是这样实现的:首先我们将数据读取到内存中,然后在内存中修改数据,在修改任何数据...

2018-10-14 17:30:23

java线程间通信方式

1.同步 就是通过Synchronized关键字来进行同步访问控制,确保谁拿到了相应的锁才能执行相应的操作 本质上就是共享内存式的通信,这个共享内存在java的内存模型中就是主内存,相当于通过主内存的数据进行线程通信。因Synchronized解锁时会将工作内存中的数据刷新到主内存中,Synchronized加锁时会将工作内存中的值清空从主内存读。多个线程访问同一变量,谁拿到了锁谁就去访问。 ...

2018-10-13 17:41:11

java如何查看死锁

首先我们先写一个死锁程序 public class DeadLock { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { synchroniz...

2018-10-13 15:41:10

spring中用到的设计模式(自我总结)

我们从spring的xml文件讲起 当我们使用<bean id="xxx">时,我们通过反射建立类这时候创建类就是通过工厂模式来创建的,并且我们创建的类可以设置scope的,如果设置singleton的话,就是单例,使用了单例模式,并且在aop中使用了动态代理,所以目前我熟悉的就三个。...

2018-10-13 14:25:44

线程池中的线程工厂

倒数第二个参数就是我们的主角,线程工厂,顾名思义就是用来生成线程的工厂,为了创建具有相似特性的线程所以使用它,例如守护线程等  

2018-10-12 20:57:02

线程池拒绝策略

今天看了线程池的拒绝策略: 我们看下ThreadPoolExecutor的API:看它的构造方法: 最后一个参数就是今天的主角:拒绝策略 首先点开这个类 我们发现他是一个接口,点开它的实现类,我们发现这些实现类就是我们所说的各种任务拒绝策略 我们一个一个分析 首先我们发现构造方法里有不需要拒绝策略的构造方法。那么一定就有一个默认的构造方法我们从这个讲起: 这就是我们的默认...

2018-10-12 20:51:31

如何让多个线程按照顺序执行

两种方法: 假设如下:                 如果有a,b,c三个线程,我们依次执行这三个线程。因为不保证有序性,可能执行出来是混乱的 解决如下: 第一种使用join()方法,这个方法的作用是,让当前执行线程等待直到调用join方法的线程结束运行 代码如下: class Thread1 extends Thread{ public void run(){ ...

2018-10-12 19:21:20

MYSQL中为什么索引不宜建在重复数据多的列上

昨天想了一天这个问题 首先我们先粗略的说一说: 加入有一个查询语句要查询性别为男生的数据,因为这样的数据很多,我们要扫描很多次索引,然后再去取这个性别为男的数据。 那么分为两部分,先扫描索引,然后去取这个符合要求的数据 如果我们不建立索引,那么去扫描整个表。 不建立索引需要的时间=T扫描整个表                            建立索引需要的时间= T去索引中取+T取...

2018-10-08 11:51:11

剑指Offer刷题笔记(java实现)_39.数组中次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入数组:{1,3,3,2,3,2,3,3,2}。由于2在数组中出现了5次,超过数组长度的一半,因此要输出2。 三种解法: 第一种遍历数组,利用hashMap存储每个数字出现的次数,时间复杂度O(n) 第二种:如果一个数组排好序,并且这个数组中有一个数字超过数组的一半,那么位于中间位置的一定是这个数 第三种:我们这么想,...

2018-10-07 16:18:31

剑指Offer刷题笔记(java实现)_26.树的子结构

题目描述:   输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。   其实思路很简单:我们的算法就通过比较即可,因为是树的遍历比较所以第一时间想到了递归 先假设母树为A,子树为B (1)我们先去判断节点的第一个点的值是否相同,如果相同则进一步遍历以这个节点相同的左右子树是否和B的起点的左右子树的值都相同 (2)如果比较的当前头结点的值都不...

2018-10-06 21:13:16

剑指Offer刷题笔记(java实现)_16.剪绳子

题目: 给一段绳子长为m,我们可以剪n次(m>1,n>1),问剪得的各段绳子长度之积的长度最大为多少。 我们要讲两个方法:叫做动态规划和贪心算法 先说动态规划: 如果一个问题是求最优解,并且该问题能够分为多个子问题,并且 子问题之间有重叠的更小子问题 所以,在用动态规划之前先分析能否将大问题分为多个小问题,分解后的小问题要存在最优解,那么小问题的最优解最合起来就能得到整个问题...

2018-10-06 12:02:31

剑指Offer刷题笔记(java实现)_16.数值的整数次方

题目很简单,我们要求出一个数值的整数次方 思路:最简单的就是通过一个循环,每次循环乘上一个底数,最后就得到了我们想要的结果 但是这样的方法并不高效率,我们之前学习过斐波那契数列,和这个有些类似 我们发现一个数的16次方就等于8次方乘8次方,8次方有等于4次方*4次方。我们会发现这样的计算方法高效很多。 既然是一个大问题向下分解,分解为多个小问题, 那么我们就是使用递归 注意:如果我们接受...

2018-10-06 11:33:39

剑指Offer刷题笔记(java实现)_12_矩阵中的路径

设计一个函数,用来判断一个矩阵中是否存在一条包含某字符串所有字符路径,起点可以从任意一格开始,并且不能重复踏入同一个格子 例如  a b t g          c f  c s          j d e h 如果给定一个bfce ,那么我们从b走向下到f向右到c向下到e说明有这个字符串的路径 解题思路:按照上下左右的顺序,依次试探,如果到了死路,则一直回溯到上一个可用节点 p...

2018-10-05 23:32:35

springIOC容器详解

SpringIOC容器又被搞了,我tm今天要搞定这个东西 我目前看过最好的讲解是这篇作者的 https://www.jianshu.com/p/4007079cb6c0 Spring的IoC容器在实现控制反转和依赖注入的过程中,可以划分为两个阶段: 容器启动阶段 Bean实例化阶段 这两个阶段中,IoC容器分别作了以下这些事情:   2、IoC容器及IoC容器如何获取对象间的依赖...

2018-09-15 10:50:07

mysql练习笔记

去重语句: select distinct column from table where xxxx; select distinct column1 column2  from table where xxxx;//两个条件必须全部相同,才能完成 范围查询 SELECT * from score where degree >60 and degree<80 select * ...

2018-09-14 22:31:49

SpringAOP和动态代理技术

一直拖拖拖,结果面试被搞了,下定决心一天搞定 AOP将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。 自己的话来说,就是将一些与业务核心逻辑无关并且多个对象公用的代码块封装起来,...

2018-09-14 11:59:42

JAVA并发编程实战读书笔记

今天第一天读这个书吧,感觉翻译确实有些问题,有些地方读起来并不是很通顺,感觉这本书对于我这种并发编程菜鸡不是很实用,要更深一点。 原子性:如count++这种操作其实是多步的操作,当并发执行它时一定注意加锁的操作 原子变量类:当我们遇到这类操作时,java的并发包中提供了一个原子变量类,用于实现数值和对象引用的原子状态转换。如通过AutomicLon个替代long类型的计数器,能过确保所有对计...

2018-09-03 21:19:18

JAVA访问权限

访问权限   类   包  子类  其他包     public     ∨   ∨     ∨      ∨     protect    ∨   ∨    ∨       ×     default    ∨   ∨     ×       ×     private    ∨   ×      ×       × 不能用protected和private修饰类...

2018-09-03 09:38:58

Sunmeok

关注
奖章
  • 持之以恒