- 博客(58)
- 资源 (4)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Linux磁盘扩容详解
公司项目服务器是买的阿里的,原来的项目是外包出去别人做的,用户图片上传保存到了服务器上,500G的磁盘空间硬生生给用完了,怎么搞?扩容呗,大概思路就是从阿里那再买一块磁盘,添加到ESC实例上,然后挂载,然后格式化磁盘文件,然后把老图片mv过去,然后建立link。结果就是原来的磁盘空间够用了,服务飞起来了。今天就来讲解下我的处理过程。第一步:从阿里那里买一块新的数据盘,挂载到ESC实例上具体...
2019-10-23 16:10:32
5159
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 代理模式-动态代理
大半夜写的博客,点击保存莫名其妙的消失了,csdn也是醉了,没办法,重写吧。前面讲了代理模式的思想和静态代理的实现,静态代理有问题,实际项目中一般不用,只是帮助理解代理模式。如果要用代理的方式对原有类做扩展,那就要用到动态代理了。Java给提供了原生的API实现代理模式:Proxy 和 InvocationHandler。先看一下用这两个类怎么实现动态代理。同样提供一个接口:publi
2017-11-12 00:15:24
299
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 7种数据库事务传递性代码实例详解
1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。4、PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。5
2017-09-24 20:28:08
8254
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java线程同步详解
线程的两种实现方式和区别就不说了,大家自己看教程吧1.线程加入: join()方法,等待其他线程终止。在当前线程中调用另一个线程的t.join()方法,则当前线程转入阻塞状态,直到另一个线程t运行结束,当前线程再由阻塞转为就绪状态。看下面的事例代码:/** * Created by huogd 2016年5月16日 下午5:50:28 */public cl
2017-07-09 11:52:08
568
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 代理模式-静态代理
使用java提供的Proxy类和InvocationHandler实现动态代理类:接口public interface IRequest { public boolean revokeRequest(boolean isHavePermission);}接口的实现类:public class RequestImpl implements IRequest { @Ove
2016-01-20 23:00:06
541
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java泛型详解
学习java或者软件开发的出去面试有时候项目经理经常会问到有关泛型的理解;泛型:是指在定义类或者接口的时候可以为类和接口指定类型形参,在定义变量、定义方法时该类型形参可以当做普通的类型来使用,并且该类型形参在定义变量和创建对象时确定1、定义泛型类,程序实例代码如下:public class GenericClass<E> { /** * @param args...
2013-10-12 20:24:27
13875
4
转载 MySQL-如何分库分表?一看就懂
range来分,每个库一段连续的数据,这个一般是按比如时间范围来的,但是这种一般较少用,因为很容易产生热点问题,大量的流量都打在最新的数据上了,优点:扩容的时候,就很容易,因为你只要预备好,给每个月都准备一个库就可以了,到了一个新的月份的时候,自然而然,就会写新的库了 缺点:大部分的 请求,都是访问最新的数据。如图,按会员库拆分,拆分成会员1库,会员2库,以userId拆分,userId尾号0-5为1库。根据业务拆分,如图,电商系统,拆分成订单库,会员库,商品库。
2023-02-26 23:07:24
258
转载 玩转MySQL:一站式解决分库分表后患问题方案
比如当你考虑对存储层做分库分表时,就得先考虑清楚本章中提到的所有问题,以及具体该如何解决,只考虑追求技术风潮,不考虑技术风险的做法,显然无法被称作一位合格的架构师。对单个业务库做了水平分库后,也就是又对单个业务库做了横向拓展后,一般都会将库中所有的表做水平切分,也就是不同库中的所有表,每个水平库节点中存储的数据是不同的,这时又会出现4.2阶段聊到的一些问题,如单业务的聚合操作、连表操作会无法进行,这种情况的解决思路和水平分表时一样,先确定读写的数据位于哪个库表中,然后再去生成SQL并执行。
2023-02-26 23:04:17
552
转载 线上服务内存OOM问题定位三板斧
相信大家都有感触,线上服务内存OOM的问题,是最难定位的问题,不过归根结底,最常见的原因: 本身资源不够 申请的太多 资源耗尽 58到家架构部,运维部,58速运技术部联合进行了一次线上服务内存OOM问题排查实战演练,将内存OOM问题定位三板斧分享出来,希望对大家也有帮助。题目某服务器上部署了Java服务一枚,出现了OutOfMemoryError,...
2019-06-24 17:59:23
706
原创 java 8 线程池详解-流程图
java引入线程池的目的是为了复用线程,因为线程的创建和销毁都需要时间开销.创建线程池的方法有很多种:ExecutorService service = Executors.newCachedThreadPool();ExecutorService service1 = Executors.newCachedThreadPool(new ThreadFactoryImpl("th"))...
2019-02-24 15:09:20
2392
原创 redis-setbit理解
1.SETBIT key offset value对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。在redis中,存储的字符串都是以二级制的进行存在的。举例:设置一个 key-value ,键的名字叫“andy” 值为字符'a'我们知道 'a' 的ASCII码是 97。转换为二进制是:01100001。offset的学名叫
2017-01-05 17:50:48
15814
11
原创 java - 正确认识ThreadLocal
ThreadLocal,可以理解为线程的本地变量,有人说是每个线程中都保存了一个对象的副本或者拷贝,这简直是胡说八道。ThreadLocal不是为每个线程保存某个变量的拷贝或者副本,而是保存的一个新new出来的新的对象,java对象都是引用传递,如果是保存拷贝那多个线程使用的不还是一个对象,肯定达不到线程间互不影响的效果。建议大家不要听网上一群傻逼胡说霸道。什么拷贝什么副本的!!!那么Th
2016-09-30 15:26:20
641
1
原创 Java集合-HashSet
前面大概讲了ArrayList和LinkedList,HashMap,现在来讲讲HashSet。因为HashSet是的实现是基于HashMap的,所以放在HashMap的后面写。此类实现 Set 接口,由哈希表(实际上是一个HashMap 实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null 元素。 此类为基本操作提供了稳定性能,这些基本操作包
2016-05-13 14:38:52
582
原创 Java集合-HashMap数据结构详解
HashMap的存储结构是数组+链表。HashMap添加键值对的时候添加的是Entrty对象,Entrty对象保存了key,value和next(也就是Entrty)对象。其中Entrty类是HashMap的内部类。final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node[] tab; Node p; int n, i;
2016-05-06 18:29:10
1026
原创 Java集合-ArrayList和LinkedList
LinkedList的特性不说了,自己看源码,贴出来一个牛逼的添加源码,LinkedList在指定位置添加一个元素的源码: public void add(int index, E element) { checkPositionIndex(index); if (index == size) linkLast(e
2016-05-05 17:20:13
368
原创 Android AsynTask源码分析和优缺点
AsynTask是Android SDK中自带的网络请求API,今天来分析下AsynTask的源代码,顺便说一下AsynTask的用法和优缺点。先来看看AsynTask是怎么用的:
2016-03-31 16:07:26
976
1
原创 Android 消息机制
Android分为UI线程(主线程),和普通的线程(自己写的线程)。UI线程默认有消息循环,这是项目启动的时候系统添加进去的,看ActivityThread.java类:public static void main(String[] args) { Looper.prepareMainLooper(); ActivityThread thread = ne
2016-03-29 15:10:07
428
1
原创 java集合基础
public class MainClasss {public static void main(String[] args) {// 泛型占位符上限约束List list = new ArrayList();// list.add(""); // 编译错误, 不能把String类型添加至未知类型的集合test(list);// 无序,元素不能重复,判断元素相同的标准就是equals方法返回tru
2016-02-02 21:20:22
500
原创 排序算法---之二叉树堆排序
堆是完全二叉树的结构,并且,节点都比子节点上的值大或者小。这就是对,由此可见,依次输出堆的最顶端元素,就能得到一个有序的序列,那么关键的问题就是如何把一个无序的序列建成一个堆?输出堆最顶端元素后,如何把剩下的元素建成一个堆?下面看看实现过程:
2016-01-21 11:18:40
593
原创 快速排序java版
public class MainTest { final static int length = 10; // 数组长度 static int[] nums = new int[length]; public static void main(String[] args) { // 生成随机数 Random random = new Random(); for (int i
2016-01-19 23:05:51
491
原创 冒泡排序java版
package com.algorithm.maopaosort;import java.util.Random;/** * @author Administrator 冒泡排序 */public class MaoPao { public static void main(String[] args) { maoPao(); } private static void
2016-01-19 11:11:16
534
原创 mysql数据库学习汇总
MySQL学习汇总1、字段Int类型占4个字节,32位,无符号最小值是0,最大值那就是4294967295,和Java基本类型差不多。建表的时候定义的长度比如Int(10),这个10跟字段类型允许的值范围无关,至于有什么作用,待以后考证,大家知道的可以回复我,谢谢
2015-12-30 11:01:40
5553
2
原创 java 反射详解
原本是做Android开发的,最近才转到web上来,接触了springMVC,大家都知道spring框架大量使用了Java反射的技术,所以在深入之前先来熟悉下Java的反射,记录下来Java反射说到Java的反射不得不提Class类,Java是面向对象的语言,任何事物都可以封装成一个类,所以类这个抽象的概念也是一个类,那就是Java中的Class类。至于Class的api大家可以看
2015-12-22 23:04:51
619
原创 MySQL 命令环境变量设置方法
安装完MySQL之后,大家可以直接打开MySQL的client输入命令,操作MySQL数据库。当然也可以使用dos窗口输入MySQL命令操作MySQL数据库。方法1:1、打开dos窗口,具体怎么打开,百度。2、定位到MySQL安装目录下的bin目录,比如我的:D:\Program Files\MySQL\MySQL Server 5.6\bin。见图:然后输入m...
2015-09-01 20:46:52
39076
1
原创 二进制相关知识
补码在计算机中,整数是以补码的形式保存的。在补码的保存方式中,最高位为符号位,最高位为0表示正数,最高位为1表示负数。正数的补码是把十进制正数数据转换为二进制的形式;负数的补码,是把负数绝对值的补码按位取反,然后再按照二进制运算加1,得到的就是负数的补码。数据类型:在java中zhengshu
2014-07-19 16:36:12
1749
原创 ++a和a++
看下面几行代码: int c = 1; int d = c--; // 在这一行的执行步骤是先把c赋给d,然后c的值减一 System.out.println(d); System.out.println(c); d = --c; // 在这一行的执行步骤是c的值先减去一,然后再把减过的值赋给d,这时候c、d的值是一样的 System.out.println(d);
2014-07-19 10:52:57
744
原创 设计模式之-抽象工厂
做过web开发的同行都知道,大多数工作都是一些对数据库的曾删改查工作。如果使用了Hibernate那么就不用考虑更换数据库会带来的麻烦。但是如果没有使用hibernate数据库,那么网站开发完之后如果要更换数据库就会有很多的工作量要做。因为不同的数据库有可能一些操作不一样或者官方提供的API等等一些差异,那么如何解决这样的问题呢? 之前我写的数据库访问程序都是非常简单的,没有涉及到设计模式
2014-03-11 22:02:11
721
原创 设计模式之-工厂方法模式
在上一篇文章中,我记录了简单工厂的使用方法,上面的程序避免了很多的错误;但是这是比较好的方法吗,如果需要增加一个计算功能,那么除了需要增加一个实现类,还要在工厂方法中增加一个分支,那么这就违背了Open-Close-rules原则;要解决这个问题就是使用另外一个设计模式:工厂方法模式;1、工厂方法模式其实和简单工厂模式差不多,在之所以叫工厂方法就是把简单工厂中的工厂类抽象出来了,成为一个接口,
2014-01-07 12:49:13
664
原创 设计模式之-简单工厂模式
简单工厂模式,这是《大话设计模式》开篇讲解的内容,以一个面试题引出,步步逼近,讲的很好,详细见该书;它从最初的代码讲起,一直到最后应用到了设计模式-简单工厂模式;其中用到了类的三大特性:封装、继承、多态;在这里我不再一一讲解,只是把完整的代码贴上来供参考(稍微做了修改):1、抽象类-Operation,该类只有一个抽象方法,负责计算各种运算,其实现由实现类完成;public abstrac
2013-12-29 19:19:04
750
原创 设计模式之-单例模式
在某些情况下,一个类只需要一个实例,单例模式就可以解决这样的需求;单例模式比较简单,也是比较常用的一种设计模式,它是把一个类的构造方法定义为private,防止外界随意创建新的实例,同时提供一个对外的接口以供外加访问;看下面的代码:package com.agm.singelton;public class Singleton { //define a singleton ins
2013-12-27 22:17:58
720
2
原创 java设计模式之-对设计模式的看法
从现在开始,我们来讨论一下设计模式;设计模式在软件开发中有着举足轻重的地位,设计模式不是属于某一种语言,而是属于软件开发的领域;任何开发语言都可以应用设计模式,然而尤其在面向对象的开发语言中尤为常用,这里我就以java语言为例详细的介绍设计模式的使用(因为我目前是学习java的,呵呵)显而易见,设计模式是很难理解的,但是也不是不能理解;试想,别人都能想到这些设计模式我们为什么学不会呢!!在
2013-12-27 21:31:36
1493
原创 java序列化高级认识
http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html#ibm-pcon
2013-12-27 20:49:49
652
原创 java内部类详解
之前看过内部类,但是感觉有些复杂,没有太大的收获;最近看了疯狂java讲义的书,用重新对java的内部类有了重新的认识,现在记录如下,以备以后查阅毕竟自己的东西以后看起来会更快,同时也给其他学习java的爱好者一个参考,如有不当之处还望多多包涵;1、非静态内部类内部类就是在一个类OutClass的内部再定义一个类InnerClass,那么这个类InnerClass就是内部类,非静态内部类就
2013-10-08 19:02:08
668
原创 java中break,continue,return详解
breakbreak :跳出当前循环;但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环; for (int i = 0; i < 10; i++) { if (i == 6) break; // 在执行i==6时强制终止循环,i==6不会被执行 System.out.println(i); }输出结果
2013-07-15 10:43:28
5145
原创 java中的抽象类和接口
抽象类在解决问题的时候一般将父类定义为abstract类型的,也就是抽象类,在抽象类中可以定义抽象方法也可以定义非抽象方法;此外,在多态机制中,一般不从父类得到类对象,所以抽象类不能实例化对象是有一定道理的;此外如果一个类中的某个方法定义为了abstract类型的,那么这个类就必须定义为abstract类型的;接口:说白了接口就是纯粹的抽象类,在接口中任何方法都不能有方法体(在抽象类中
2013-06-29 21:23:30
567
原创 final、fianlly和finalize
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。1、属性不可变:final修饰的变量不能够更改,而且必须在定义的时候就必须为其赋给相应的值;如果在定义的时候没有为其赋值,必须在其构造方法中为其赋值;一般由final修饰的变量为常量;2、方法不可覆盖:定义为final的方法不可以被其子类覆盖也就是重写,这点和定义为private类型效果是一样的,因为定义为p
2013-06-29 21:01:57
1835
原创 JSP常用资源
JavaSE API文档:http://gceclub.sun.com.cn/java_docs/jdk6/html/zh_cn/apiJAVAEE5 API文档:http://java.sun.com./javaee/5/docs/apiJAVAMain API文档:http://java.sun.com.products/javamail/javadocs
2013-05-26 10:57:41
735
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人