- 博客(31)
- 资源 (1)
- 问答 (7)
- 收藏
- 关注
原创 Mysql优化和原理
Mysql优化和原理第一层为客户端的连接认证,C/S都有此架构 第二层为服务器层,包含MySQL的大多数核心服务功能 第三层包含了存储引擎,服务器通过API与其通信,API规避了不同存储引擎的差异,不同存储引擎也不会互相通信,另外存储引擎不会去解析SQL(InnoDB是例外,它会解析外键定义,因为服务器本身没有实现该功能)2.mysql性能监控...
2021-11-22 22:02:30
764
原创 JVM刨析
1.常见JVM实现Hotspot:目前使用的最多的 Java 虚拟机。Jrocket:原来属于BEA 公司,曾号称世界上最快的 JVM,后被 Oracle 公司收购,合并于 HotspotJ9: IBM 有自己的 java 虚拟机实现,它的名字叫做 J9. 主要是用在 IBM 产品(IBM WebSphere 和 IBM 的 AIX 平台上)TaobaoVM: 只有一定体量、一定规模的厂商才会开发自己的虚拟机,比如淘宝有自己的 VM,它实际上是 Hotspot 的定制版,专门为淘宝准备的,阿里、天
2021-11-13 19:33:48
1261
原创 多线程和高并发JUC-锁
JUC(java util cocurrent)ReentrantLock部分场合替代synchronized* 手工释放锁 * 标准写法:lock.lock();try { xxxxx} finally { lock.unlock();} 可以是公平锁 公平锁:线程抢锁先排队 非公平锁:线程到了就插队抢 可被打断的上锁过程 tryLock() lockInterruptibly() 锁上面的队列可以指定任意数量 区...
2021-11-08 21:52:11
157
原创 二、并发编程-线程的底层知识(可见性 有序性 原子性)
1.线程间的可见性多线程提高效率,本地缓存数据,造成数据修改不可见,要想保证可见,要么触发同步指令,要么加上volatile,被修饰的内存,只要有修改,马上同步涉及到的每个线程/** * volatile 关键字,使一个变量在多个线程间可见 * A B线程都用到一个变量,java默认是A线程中保留一份copy,这样如果B线程修改了该变量,则A线程未必知道 * 使用volatile关键字,会让所有线程都会读到变量的修改值 * * 在下面的代码中,running是存在于堆内存的t对象中
2021-11-06 19:56:57
255
原创 模板模式-Template
主要解决:一些方法通用,却在每一个子类都重新写了这一方法。钩子函数public class Main { public static void main(String[] args) { F f = new C1(); f.m(); }}abstract class F { public void m() { op1(); op2(); } abstract void op1();
2021-11-06 12:12:04
90
原创 备忘录模式-Memento
主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。public class Client { public static void main(String[] args) { Originator originator = new Originator(); originator.setState("On"); //Originator初始状态
2021-11-06 12:07:40
132
原创 原型模式-Prototype
主要解决:在运行期建立和删除原型。Object.clone()/** * String需要进一步深克隆吗? */public class Test { public static void main(String[] args) throws Exception { Person p1 = new Person(); Person p2 = (Person)p1.clone(); System.out.println("p1.loc ==
2021-11-06 11:59:26
95
原创 命令模式-Command
主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。对行为进行"记录、撤销/重做、事务"等处理public class Main { public static void main(String[] args) { Content c = new Content(); Command insertCommand = new InsertCo
2021-11-06 11:16:07
353
原创 一、线程基本知识
一、计算机底层层面是逻辑图,然后再深刻理解:程序、进程、线程、纤程进程(重)->线程(普通)->纤程(轻)进程:是操作系统资源分配的基本单位,比如内存、打开文件、网络IO,分配了独立的内存空间 线程:是操作系统资源调度的基本单位,cpu分配的基本单位 纤程:是用户态的线程,是线程中的线程,切换和调度不需要经过OS(操作系统)。;轻量级的线程 - 线程// 进程:是操作系统资源分配的基本单位,比如内存、打开文件、网络IO,分配了独立的内存空间public class..
2021-11-05 22:12:18
492
原创 桥接模式-Bridge
主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。public class GG { public void chase(MM mm) { Gift g = new WarmGift(new Flower()); give(mm, g); } public void give(MM mm, Gift g) { System.out.println(g + "gived!"); }.
2021-11-05 21:53:46
104
原创 适配器模式-Adapter
主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。public class Main { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("c:/test.text"); InputStreamReader isr = new InputStream
2021-11-05 21:35:47
135
原创 建造者模式-Builder
主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。public class Main { public static void main(String[] args) { //Effective Java Person p = new Person.PersonBuilder()
2021-11-05 21:33:35
136
原创 访问者模式-Visitor
主要解决:稳定的数据结构和易变的操作耦合问题。典型应用:编译器 Abstract Syntax Tree 抽象语法树public class Computer { ComputerPart cpu = new CPU(); ComputerPart memory = new Memory(); ComputerPart board = new Board(); public void acccept(Visitor v) { this.cpu...
2021-11-05 20:43:12
98
原创 迭代器模式-Iterator
主要解决:不同的方式来遍历整个整合对象。/** * 相比数组,这个容器不用考虑边界问题,可以动态扩展 */class ArrayList_<E> implements Collection_<E> { E[] objects = (E[])new Object[10]; //objects中下一个空的位置在哪儿,或者说,目前容器中有多少个元素 private int index = 0; public void add(E o) {
2021-11-03 21:36:46
94
原创 代理模式-Proxy
主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。/** * v05:使用代理 * v06:代理有各种类型 * 问题:如何实现代理的各种组合?继承?Decorator? * v07:代理的对象改成Movable类型-越来越像decorator了 * v08:如果有
2021-11-03 20:42:29
133
原创 享元模式-Flyweight
主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。池技术
2021-11-02 22:20:50
72
原创 组合模式-Composite
主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。abstract class Node { abstract public void p();}class LeafNode extends Node { String content; public LeafNode(String content) {this.content = content;} @Ov
2021-11-02 21:57:31
76
原创 观察者模式-Observer
主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。/** * 有很多时候,观察者需要根据事件的具体情况来进行处理 * 大多数时候,我们处理事件的时候,需要事件源对象 * 事件也可以形成继承体系 */class Child { private boolean cry = false; private List<Observer> observers = new ArrayList<>(); {
2021-11-02 21:46:22
121
原创 责任链模式-Chain of Responsibility
主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。public class Servlet_Main { public static void main(String[] args) { Request request = new Request(); request.str = "大家好:),<script>,欢迎访问 mashibing
2021-11-02 21:05:26
106
原创 装饰器模式-Decorator
主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。public interface Sourceable { public void method();}//被装饰类public class Source implements Sourceable { @Override public void method() { System.out.println("the original method.
2021-11-02 20:06:20
92
原创 外观模式-Facade/中介者模式-Mediator
外观模式主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。中介者模式主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。外观模式public class CPU { public void startup(){ System.out.println("cpu startup!"); } public void shutdown(){ Syst.
2021-11-01 22:35:48
251
原创 单例模式-Singleton
1、饿汉式(线程安全,调用效率高,但是不能延时加载) 简单实用public class Singleton{ private static final Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleton;...
2021-11-01 20:37:59
90
原创 设计模式目录
一、单例模式-singleton1、饿汉式(线程安全,调用效率高,但是不能延时加载) 简单实用public class Singleton{ private static final Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ retur...
2021-11-01 18:56:53
103
JAVA核心面试知识整理.rar
2021-12-06
Linux下java开发opencv
2017-03-02
opencv在Linux下必须安装吗?
2017-03-01
opencv在Linux下必须安装吗?
2017-03-01
linux下使用JNA调用libopencv_java2413.so报错
2017-03-01
Linux下怎么调用三方库.so
2017-03-01
Linux下JAVA调用.so文件时 .h文件放哪路径下
2017-02-28
JAVA如何识别jpg图片中的障碍物,如cad图的墙等
2017-02-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人