- 博客(38)
- 收藏
- 关注
原创 idea乱码问题
idea乱码问题修改文件编码修改 idea.exe.vmoptions 增加 -Dfile.encoding=UTF-8重启,就正常了;
2021-06-22 10:48:15
534
4
原创 java内存模型与线程
目录合理利用CPUCPU高速缓存代码乱序优化java内存模型java内存模型volatile关键字long和double的非原子协定原子性、可见性、有序性线程安全锁自旋锁 自适应自旋锁消除锁粗化轻量级锁合理利用CPUCPU高速缓存CPU的执行非常快,而I/O操作很耗时,为了合理利用CPU所以现在计算机都能加入了高速缓存作为...
2018-07-24 07:30:03
179
原创 垃圾收集器与内存分配策略
目录垃圾回收3问:判断对象是否该回收引用计数算法—主流java虚拟机并没有使用这种算法可达性分析算法—主流java虚拟机使用垃圾回收3问:哪些内存需要回收? java堆和方法区,不可能被任何途径使用的对象需要被回收;具体算法可达性分析算法和引用计数算法;什么时候回收? 要看具体虚拟机的实现,一般内存使用到达一定的阀值或新对象无法分配内存的时候会触发垃圾...
2018-07-19 11:50:28
190
原创 java虚拟机_JVM运行时数据区
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...
2018-07-13 10:46:15
551
原创 java线程异常处理
线程的异常处理java.lang.Thread.UncaughtExceptionHandler//实现接口public class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread...
2018-06-28 19:27:38
192
原创 Oracle报错 ORA-01403: 未找到任何数据 ORA-06512: 在 line 6
DECLARE -- 声明变量 V_ID INTEGER := 1000145;BEGIN -- 当没有查询结果的时候赋值会报错 -- [02000][1403] ORA-01403: 未找到任何数据 ORA-06512: 在 line 6 SELECT ID INTO V_ID FROM AGENT_CALL_RECORD acr WHERE acr.ID =...
2018-06-22 11:37:52
17442
原创 java SPI
简介:SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java spi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接...
2018-06-14 06:58:21
225
原创 Java 网络编程
java网络编程详解 什么是套接字(socket) 它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议本地主机的IP地址本地进程的协议端口远地主机的IP地址远地进程的协议端口。...
2018-05-30 23:18:10
1384
原创 Java IO
java.io.FileDescriptor 是一个用于表述指向文件的引用的抽象化概念。在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统...
2018-05-23 16:15:58
151
原创 java集合学习
链表单向链表 单向链表可以很容易实现一个栈,详情请点击链接双向链表 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E&
2018-05-16 23:10:21
141
原创 java类的加载及对象的创建过程
类加载过程当JVM第一次要使用一个类的时候,需要加载这个类;首先根据classpath的配到硬盘上找这个类的class文件(如果没有配置classpath,就到当前位置找);如果找到这个class,就加载到方法区; a) 分别将这个类的静态成员加载到静态区域,非静态成员加载到非静态区域; b) 在静态区域为所有静态成员变量分配空间,赋默认值; c) 为所有静态成员变量显示...
2018-05-11 08:22:48
195
原创 java基本类型
java的数据类型如下: 整数类型其中整形的规则是,高位是标志位 0是正,1是负,其余表示数字1 byte = 8 bit; // 一个字节是8个二进制位1 short = 16 bit;// 2字节 16位1 int = 32 bit;// 4字节 32位1 long = 64 bit;// 8字节 64位以short为例 7 6 5 4...
2018-05-11 07:33:45
237
转载 spring-boot redis 报错
springboot 访问redis 10次中有2-3次会发生下面的故障:2018-04-12 06:52:09.545 ERROR 527 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context w...
2018-04-12 07:43:13
998
原创 《java与模式》-15 享元模式
享元模式 对象的结构模式,以共享的方式高效的支持大量的细粒度对象; 享元模式做到共享的关键是区分内蕴状态与外蕴状态; 内蕴状态:存储在享元对象内部的不随环境变化,可以共享; 外蕴状态:随环境变化,不可以共享的状态; 单纯享元模式: 复合享元模式:
2017-11-23 17:04:03
181
原创 《java与模式》-14 代理模式
代理模式是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用; 智能引用代理例:金融网站提供查询股票信息的功能,要使用该功能用户必须有权限,而且需要记录;抽象和具体的划分,首先有一个抽象查询的角色 Searcher ,具体查询角色 RealSearcher;辅助功能,两个辅助对象一个查询权限 AccessValidator,另一个做查询的计数器 UsageLo
2017-11-22 15:33:33
180
原创 《java与模式》-13 装饰模式
装饰模式也叫包装模式; 装饰模式以对客户透明的方式动态的给一个对象附加上更多责任,客户端不会觉得对象在装饰前和装饰后有什么不同,装饰模式可以在不使用创建跟多子类的情况下,将对象功能加以扩展; 装饰模式常常被称作包裹模式,每一个具体装饰类都将下一个具体装饰类或具体构件类包起来,每一层包裹都提供了一些新的功能; ConcreteDecorator3将ConcreteDecorator2包起来,
2017-11-16 17:59:15
156
原创 《java与模式》-12 合成模式
合成模式属于对象的结构模式; 使客户端将单纯元素与复合元素同等看待; 角色:抽象构件角色;树枝角色;树叶角色; 其中树枝角色可以有子节点,树叶角色不可以有子节点,如果根节点是树叶角色那么就变成了只有一个节点的树; 合成模式根据所实现的接口分为两种形式:安全式、透明式; 合成模式可以不提供父对象的管理方法,但是必须在合适的地方提供子对象的管理方法,如add(),remove(),getC
2017-11-16 10:43:12
181
原创 《java与模式》-11 适配器模式
适配器模式适配器模式把一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作; 适配器的角色有目标角色(Target)、源角色(Adaptee)、适配器角色(Adapter);类的适配效果:适配器是源的子类,可以在适配器中置换掉源的方法;只引用了一个适配器类因此只有一个路线到达目标类,问题得到简化;使用一个具体类把源适配到目标中来如果源以及源的
2017-11-14 21:35:18
147
原创 《java与模式》-10 原始模型模式
通过给出一个原型对象指明所要创建的对象的类型,然后复制这个对象创造出更多同类型的对象; java 本身支持原始模型模式,Object有一个clone(),可以复制对象,但是要复制的话就必须要实现一个标志接口Cloneable接口,否则的话会抛CloneNotSupportedException异常;简单形式的原始模型客户端角色:提出创建对象的请求。 抽象原型角色(Cloneable的子接口),具
2017-11-06 16:49:53
370
原创 《java与模式》-9 建造模式
建造模式可以将一个产品的内部表象与产品的生成过程分割开,从而使一个生成过程创建具有不同内部表象的对象;角色抽象建(builder)造者,具体建(concrete builder)造者,导演者(director)角色,产品(product)角色; 客户端与导演者打交道,导演者调用具体建造者;每有一个产品类就有一个具体的建造者类; 导演需要演员(具体建造者),具体建造者对应了某一个具体产品; 具体
2017-11-03 18:06:14
224
原创 《java与模式》-8 单例模式 singleton
单例模式确保一个类只有一个实例,而且自行实例化,并自行向整个系统提供这个实例; 资源管理一般都是单例的,1.资源管理器必须只有一个实例。2.它必须自行初始化。3.允许整个系统访问自己; 例子:回收站,整个系统只能有一个回收站,整个系统使用这个唯一的实例,回收站自行提供这个实例; 1.懒汉式没有必要加双重检查; 2。除非有单一实例的需要否则不要使用单例; 3.多个JVM系统的分散式系统要避免
2017-11-02 10:22:07
219
原创 《java与模式》-7 工厂模式
简单工厂模式:静态工厂方法模式; 工厂方法模式:多态性工厂模式、虚拟构造子模式; 抽象工厂模式:工具箱模式;简单工厂模式有工厂角色,抽象产品角色,具体产品角色。 工厂类根据传入的参量,决定具体创建哪一类的实例。 当多抽象类、具体类的时候,一律使用同一个工厂。 好处:产品的等级结构不会传递到工厂类中; 缺点:增加产品必须修改工厂类; 一个工厂类可以有多个工厂方法,分别创建不同的产品对象,
2017-10-31 22:57:00
159
原创 《java与模式》-6 代码中应该遵守的原则
里氏替换原则凡基类适用的地方,子类一定适用。子类可以直接替换基类。依赖倒转原则要依赖于抽象不要依赖于具体。 要针对接口编程依赖倒转虽然强大,却不容易实现。而且维护这样的系统需要很好的面向对象的设计知识;并且并不是所有类都会发生变化,一些相当稳定的类,就不必有抽象类型。联合适用java接口和java抽象类java接口用来声明类型定义规则,抽象类做默认实现,具体实现类就直接继承抽象类,这样就直接
2017-10-26 21:38:41
174
原创 《java与模式》-4 java接口
接口是实现构建可插入性的关键关联的可插入性 A对象需要完成一个任务,需要知道B对象(属性),A对B就是关联。如果关联不是对类,而是对接口,那么任何一个实现了这个接口的对象都可以,这样我们只需要关心接口,不需要关心实现了。调用的可插入性 A对象需要调用B对象的方法,这个调用不一定非得要具体的类而是可以是一个接口,任何实现了这个接口的类都可以被当前对象调用。类型 应当使用接口或抽象类将软件
2017-10-24 16:21:32
188
原创 《java与模式》-3 设计原则
开闭原则1.一个软件实体应该对扩展开放,对修改关闭设计的时候应当使这个模块可以在不被修改的前提下被扩展。对面向对象来说是,不允许修改系统的抽象层,而允许扩展的是系统的实现层。就是不修改规则只修改实现2.解决问题的关键在与抽象化需要给系统定义一个一劳永逸,不再修改的抽象设计允许无穷无尽的行为在实现层被实现3.对可变性的封装原则找一个系统的可变因素将其封装起来 一种可变性不应散落在代码
2017-10-23 23:14:44
173
原创 《java与模式》-2 软件的可维护性和可复用性
导致软件可维护性低的真正原因有四个:过于僵硬,过于脆弱,复用率低,粘稠度高。过于僵硬:很难在一个软件系统里加入一个新的性能,哪怕是很小的都很难。过于脆弱:对一个地方的修改,往往会导致看上去没什么关系的另一个地方发生故障。复用率低:所谓复用,就是指一个软件的组成部分,可以在同一个项目的不同地方甚至令一个项目中重复使用。如果程序员在写代码的时候总是发现现有的代码依赖于一大堆其他的东西,而重新写
2017-10-20 16:54:14
418
原创 《java与模式》-3 观察者模式
观察者模式抽象主题:Observable抽象观察者:Observer具体主题角色:继承Observa具体观察者角色:实现Observer
2017-10-17 16:25:01
180
原创 spring web应用的异常处理
@ControllerAdvice@ExceptionHandler ResponseEntityExceptionHandler
2017-10-13 18:51:40
938
转载 根据select结果批量insert或update
1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1或者:Insert into Table2 select * from Table1注意:(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在(2)注意Table2的主键约
2017-09-28 17:39:22
8116
转载 ORACLE日期时间函数大全
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-09-05 14:46:28
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人