- 博客(69)
- 收藏
- 关注
原创 JVM调优命令
jps:显示系统内所有的jvm进程 jps -q :只输出进程ID jps -m:输出jvm进程启动时传递给main函数的参数 jps -l:输出主类的全名,如果执行的是jar包,则输出jar路径 jps -v:输出jvm进程启动时jvm的参数 jstat:用于监视虚拟机各种运行状态信息,可以显示jvm进程中的类转载、垃圾回收,JIT编译等...
2019-09-16 14:59:44
319
转载 缓存穿透、缓存击穿、雪崩
缓存穿透是指 缓存 和 数据库 中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案: 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力 缓存空值,key-value对写为key-nul...
2019-09-14 23:38:40
275
原创 原子类AtomicInteger
public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; private static final Unsafe unsafe = Unsafe...
2019-09-14 00:13:46
244
转载 java异常
总体上我们根据Javac对异常的处理要求,将异常类分为2类。 非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try...catch...finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码...
2019-08-22 23:00:16
211
转载 Synchronized和ReentrantLock的区别
可重入性: 两者都是同一个线程每进入一次,锁的计数器都自增1,要等到锁的计数器下降为0时才能释放锁。 锁的实现: Synchronized是依赖于JVM实现的,类似于操作系统来控制实现。 ReenTrantLock是JDK实现的,源码可见。 性能的区别: 在Synchronized优化以前,synchronized的性能是比ReenTrantLock差很多的,但是自从Syn...
2019-08-16 12:11:59
248
原创 hikari参数
参数 描述 构造器默认值 默认配置validate之后的值 validate重置 maximumPoolSize 池中最大连接数,包括闲置和使用中的连接 -1 10 如果maxPoolSize小于1,则会被重置。当minIdle<=0被重置为DEFAULT_POOL_SIZE则为10;如果minIdle>0则重置为minId...
2019-08-09 10:07:03
1310
转载 数据库
目录 一、索引 1. B+Tree 索引 2. 哈希索引 3. 全文索引 4. 空间数据索引 索引的利弊 二、存储引擎 InnoDB MyISAM 比较 三、切分 水平切分 垂直切分 Sharding 策略 四、复制 主从复制 复制的优点 五、事务 ACID 六、并发一致性问题 七、锁 分类 八、隔离级别 级别 九、多版本并发控制(MVCC) ...
2019-08-07 09:50:34
328
原创 LRU实现
用双端链表实现,将每次最新插入或者最新访问的节点移动到链表的尾部。 当容量满的时候,直接移除首节点就可以了。同时要注意一些边界情况-----链表只有一个节点。 import java.util.HashMap; public class LRU { public static class Node<K, V> { private K key; private V v...
2019-08-07 09:46:22
238
原创 输入一个网址,发生了什么
浏览器解析DNS对应的 IP 地址 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求(ARP(IP----物理地址),路由选择协议,建立连接TCP,发送请求) 服务器收到请求并进行处理 服务器返回一个响应 浏览器对该响应进行解码,渲染显示。 有哪些方法途径可以获取IP地址呢? 第一个是我们的浏览器。浏览器会将我们近一段时间访问的主机名及对应的IP地址进行缓...
2019-08-07 09:43:23
260
原创 注解
1、@Autowired:依赖主入(DI),不用new,按类型装配 2、@Resource:按名称装配,若没有指定name,那么就按照类型来注入。 config: 3、@Configuration:配置类 4、@ConfigurationProperties:通过prefix属性指定配置前缀,通过location指定配置文件路径 dao: 5、@Reponsitory(实现类): ...
2019-08-01 17:21:27
206
原创 要了命的索引
1、聚集索引:叶子节点(数据页)存放整张表的行数据,一张表只能有一个聚集索引,按照每张表的主键构造一棵B+树,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。 2、非聚集索引(辅助索引):叶子节点存放的是键值以及指向数据页的偏移量,需要进行二次查询 聚集索引和非聚集索引的区别:叶节点存放的信息不同;聚集索引只有一...
2019-07-31 18:17:21
194
原创 HashMap源码
hash(Object key) int类型4个字节,32位,将h右移动16位。再异或运算。即 高16位与低16位进行异或,每一位都充分参与运算,这样得到的值更加散列。 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ...
2019-07-29 11:29:32
170
原创 Java8------接口
一、接口的默认方法 情况1:正常使用 public interface A{ default void func() { System.out.println("A's"); } static void staticFunc() { System.out.println("staticFunc"); } } public class B impl...
2019-07-13 16:17:29
264
原创 Java多线程交替打印实现
public class test { int i = 1; public static void main(String[] args) { test obj = new test(); // 使用匿名内部类的形式 Runnable runnable = new Runnable() { @Override public void run() { wh...
2019-07-12 22:16:57
4741
1
原创 简单工厂、工厂模式、抽象工厂
简单工厂 接口IUser: public interface IUser { public void add(); public void remove(); } SqLiteUser类: public class SqLiteUser implements IUser { @Override public void add() { System.out.prin...
2019-07-09 15:53:31
209
原创 单例模式的实现
单例模式指的是在应用整个生命周期内只能存在一个实例 实现单例模式 一、饿汉式 以空间换时间的方式 在定义类的静态私有变量同时进行实例化 优点:线程安全;获取实例速度快 缺点:类加载即初始化实例,内存浪费 public class Singleton { private static Singleton instance=new Singleton(); private...
2019-07-08 17:00:51
234
原创 进程和线程的区别
为什么引入进程? 为了使程序能并发执行,且为了对并发执行的程序加以描述,所以引入进程,提高资源利用率和系统吞吐率。 为什么引入线程? 为了减少进程切换和创建的开销,提高执行效率和节省资源 。 区别 目的不同:进程是为了更好的使多道程序并发执行,以提高系统的资源利用率和系统吞吐量。线程引入的目的是为了减少在程序并发执过程中时空开销,提高系统的并发性能。 资源:进程是系统进行资源分配的单位,线...
2019-06-27 22:25:36
178
转载 线程的生命周期
生命周期的五种状态 1、新建(new Thread) 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。 例如:Thread t1=new Thread(); 2、就绪(runnable) 线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start(); 3、运行(running) 线程获得CPU资...
2019-06-27 21:51:15
168
转载 垃圾收集器
7种不同分代的收集器: Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1; 所处区域,则表明其是属于新生代收集器还是老年代收集器: 新生代收集器:Serial、ParNew、Parallel Scavenge; 老年代收集器:Serial Old、Parallel Ol...
2019-06-27 00:43:12
185
原创 查找及排序算法归纳
查找算法 1、二分查找 /** * 二分查找 * @param arr * @param key * @return */ private static int BinSearch(int[] arr,int key) { int low=0; int high=arr.length-1; int mid=(low+high)/2; whil...
2019-06-26 16:12:32
423
转载 隐式(Synchronized)锁和显式(java.util.Lock)锁
为了控制多个线程按照正确的顺序来访问共享数据,Java提供了提供了两种锁方案1.隐式锁(Synchronized) 这一种就是比较大家熟悉的synchronized关键字,因为Java中每个对象都实现了lock的功能,所以synchronized正是利用了这一特性,来控制并发访问.使用synchronized关键字可以保证使用同一个锁的方法或代码块在不同的线程里执行时是原子的即不可分割的(...
2019-06-20 16:12:30
498
转载 Thread的join()方法
join简介 join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用的对象完成它的执行。这段话难理解,后面我会用实例做讲解。 join实例 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个问题是网上很热门的面试题目(这里除了用join之外还有很多其他方法能够实现,只是使用j...
2019-06-19 16:44:32
780
转载 数据库左连接、右连接、内连接、全连接笔记
准备 表A: -- auto-generated definition CREATE TABLE table_a ( PK INT(10) NOT NULL PRIMARY KEY, Value VARCHAR(25) NULL ) COMMENT '表A'; 表B: -- auto-generated definition CREATE TABLE...
2019-06-11 17:18:56
545
转载 sleep、wait、run、start
sleep和wait的区别 1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 ...
2019-06-05 10:31:28
398
转载 hashCode()和equals()
一、hashCode()和equals()是什么? hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。 二、hashCode()和equals()的区别 下边从两个角度介绍了他们的区别:一个是性能,一个是可靠性。他们之间的主要区别也基本体现在这里。 1、equals()既然已经能实现对比的功能了,为什么还要hashCode()呢? ...
2019-04-09 22:29:29
333
原创 JAVA并发
第二章 自旋锁-原理 跟互斥锁一样,一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后,必须释放锁。如果在获取自旋锁时,没有任何执行单元保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有保持者,那么获取锁操作将自旋在那里,直到该自旋锁的保持者释放了锁。由此我们可以看出,自旋锁是一种比较低级的保护数据结构或代码片段的原始方式,这种锁可能存在两个问题: 1、死锁。试...
2019-04-09 09:33:05
198
原创 设计模式原则
单一职责原则(Single Responsibility Principle) 里氏替换原则(Liskov Substitution Principle):只要父类出现的地方子类就可以出现,而且替换成子类页不会产生任何错误,反之,则不行。java 使用extends实现继承,采用单一继承规则。//士兵开枪 依赖倒置原则(Dependence Inversion Principle):高层...
2019-04-09 09:28:30
134
转载 AOP面向切面编程、IOC控制反转/DI依赖注入
首先控制反转和面向切面编程是spring的核心机制,由于控制反转不好理解,因此有人提出依赖注入的概念,其实依赖注入是控制反转的一种方式,但现在大家默认控制反转等同于依赖注入 一.控制反转:控制反转是指spring容器通过依赖注入的方式使得创建依赖对象的控制权由对象转移到spring容器。举个例子: 我们有一个明星,要举办演唱会,在他唱歌之前有记者要采访他,通常我们的做法是创建一个明星类,...
2019-04-09 09:23:02
570
原创 PAT20181209 甲级 7-2&&7-3
7-2Decode Registration Card of PAT 分数16/25 部分答案正确 三种情况分别考虑,用list存储,再用Collections 进行相关排序。 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti...
2018-12-10 19:54:21
253
1
原创 商品销售
Description 商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天m个销货员销售情况为 销货员号(num) 销货件数(quantity) 销货单价(price) 101
2014-04-07 11:19:11
803
原创 矩形类定义
Description 定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动。 Input 四个数,分别表示矩形左下角和右上角顶点的坐标,如输入3.7 0.4 6.5 4.9,代表左下角坐标为(3.7, 0.4),右上角坐标为(6.5, 4.9)。 Output 输出一共有3
2014-04-07 11:18:25
2309
原创 处理成绩
Description 小平帮老师处理期末成绩时遇到了问题。他需要计算每个同学的平均成绩,并判断他们是否通过了期末考试不及格成绩( 期末包括Chinese,Math,English三门课程。 Input 输入学号,并输入三个个科目成绩,三个科目名称分别用Chinese,Math,English来表示 Output 输出学号,并输出与学号对应的平均成绩,和挂科科目(全过输出一个pass)
2014-04-07 11:17:12
815
原创 C++类实现最大数的输出
Description 判断整数的大小,输入n个数,找出最大的数并输出。 Input 有多组测试实例,输入n,并输入n个数。 Output 输出的最大的数,每个输出结果占一行。 Sample Input 10 1 2 3 4 5 6 7 8 9 10 Sample Output 10 #include using namespace std; class Q { p
2014-04-02 22:58:45
935
原创 对象数组求最大值
Description 建立一个对象数组,内放n( Input n和n个学生的学号、成绩 Output 成绩最高者的学号和成绩 Sample Input 5 101 78.5 102 85.5 103 98.5 104 100.0 105 95.5 Sample Output 104 100.00 #include #include using namespa
2014-04-02 22:58:09
919
原创 对象数组输入与输出
Description 建立一个对象数组,内放n(n Input n和n个学生的学号、成绩 Output 奇数学生的数据 Sample Input 5 101 78.5 102 85.5 103 98.5 104 100.0 105 95.5 Sample Output 101 78.50 103 98.50 105 95.50 HINT 主函数已给定如下,提交
2014-04-02 22:57:36
975
原创 长方柱类【C++ 类定义】
#include using namespace std; class Bulk { public: void set_value(); int get_volume(); int get_area(); //此处声明需要的成员函数 private: double lengh; double width; double height; }; /
2014-04-02 22:55:55
564
原创 删除相同元素(线性表)
Description (线性表)在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。 Input 输入长度:6 输入数据:2 3 4 5 5 7 Output 2 3 4 5 7 Sample Input 6 8 9 10 11 22 22 Sample Output 8 9 10 11 22 #incl
2014-04-02 22:51:41
810
原创 节点插入(线性表)
Description 有一个有序单链表(从小到大排序),表头指针为head,编写一个函数向该单链表中插入一个元素为x的结点,使插入后该链表仍然有序。 Input 输入长度n:5 输入数据:1 6 8 9 10 输入插入数据:7 Output 输出:1 6 7 8 9 10 Sample Input 4 1 2 3 4 6 Sample Output 1 2 3 4
2014-04-02 22:50:48
1069
原创 删除线性表节点(线性表)
Description 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。(O(1)表示算法的辅助空间为常量)。 Input 输入 n:6 输入数据:1 2 3 4 5 6 输入 item:5 Output 输出:1 2 3 4 6 Sample Input 10 1 2 3 4 5 6
2014-04-02 22:49:09
580
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅