自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 笔记-Mysql索引

 

2018-11-14 09:31:17 76

原创 读书笔记:性能调优

1.通常使用Synchronized关键字同步代码,可读性好,如果涉及性能问题,可以使用显式的Lock对象2.免锁容器:通用策略:对容器的修改可以与读取操作同时发生,只要读取者只能看到完成修改的结果即可。修改是在容器数据结构的某个部分的一个单独的副本上执行的,并且这个副本在修改过程中不可视。只有当完成修改时,被修改的结构才会自动的和主数据结构交换,之后读取者就可以看到这个修改了。有Concur...

2018-07-19 10:03:53 82

原创 读书笔记:新类库中的构件

1.CountDownLatch:被用来同步一个或多个的同步任务,强制它们等待由其他任务执行的一组操作完成。可以向CountDownLatch对象设置一个初始计数值,任何在这个对象上调用wait()方法都将阻塞,直到这个计数值到达0。其他任务在结束工作的时候,可以在这个对象上调用countDown()来减小这个计数值。典型用法:把一个任务分割成n个独立的可解决任务,并创建值为0的CountDown...

2018-07-19 09:37:11 88

原创 读书笔记:死锁

概念:某个任务在等地另外一个任务,后者又在等待别的任务,一直下去,直到这个链上的任务又在等第一个任务释放锁,这就得到了一个人任务之间互相等待的连续循环,没有哪个线程能够继续,叫死锁。同时满足四个条件就发生死锁:1.互斥条件,任务使用的资源中至少有一个是不能共享的2.至少有一个任务它必须持有一个资源且正在等待获取一个当前被别的任务持有的资源3.资源不能被任务抢占,任务必须把资源当做普...

2018-07-18 14:56:12 101

原创 读书笔记:notify和notifyAll

1.由于在技术上可能有多个任务在单个对象上出于wait()状态,因此使用notifyAll()比notify()更安全2.notify()在众多等待同一个锁的任务中只有一个被唤醒,如果使用notify,必须保证被唤醒的是正确的任务;为了使用notify,所有任务必须等待相同的条件,如果有很多任务等待不同的条件,不能知道是否唤醒了正确的任务;当条件发生变化时,必须只有一个任务能从中受益。注:...

2018-07-18 11:23:19 3255

原创 读书笔记:线程间的协作

1.锁机制可以很好的解决线程之间资源的竞争访问,通过wait和notify实现线程间的握手合作wait:调用sleep方法锁并没有施放,调用yield也是同样的情况。当一个任务在方法里遇到了对wait的调用的时候,线程的执行被挂起,对象上的锁被施放,这意味着另外的一个任务可以获取这个锁,因此该对象的其他shnchronized方法可以在wait期间被调用,这一点很重要,因为这些其他的方法通常将...

2018-07-18 11:13:51 83

原创 读书笔记:解决共享资源的竞争

1.基本上所有的并发模式在解决线程冲突,都采用序列化访问共享资源的方案,意味着在给定时刻只允许一个任务访问共享资源。通常就是在代码前加上一条锁的语句来实现,这就使得一段时间内只有一个任务可以运行这段代码。因为锁语句产生了一种互斥的效果,所以这种机制也称互斥量。2.java提供关键字synchronized形式,为防止资源冲突提供了内置支持。当任务要执行synchronized关键字保护的代码,...

2018-07-18 08:37:14 220

原创 缓存器细节

ByteBuffer由数据和可以高效地访问以及操作这些数据的四个索引组成,这四个索引是:mark(标记)、position(位置)、limit(界限)和capacity(容量)部分方法:capacity():返回缓存区的容量clear():清空缓存区,将position设置0,limit设置为容量,可以调用这个方法覆写缓存区flip():把limit设置为position,positon设置为0,...

2018-07-16 14:53:57 152

原创 ByteBuffer编码和解码设置

FileChannel fileChannel2=new FileInputStream("D:\\abr.txt").getChannel();Charset charset=Charset.forName("utf-8");ByteBuffer byteBuffer=ByteBuffer.allocate(BIZE);while (fileChannel2.read(byteBuff...

2018-07-16 14:06:07 1704

原创 ByteBuffer

FileChannel in=new FileInputStream("D:\\abr.txt").getChannel(); File file=new File("D:\\abc.txt"); if (!file.exists()){ file.createNewFile(); } ByteBuffer byteBuffer=ByteBuffer.allocate(102...

2018-07-16 13:43:58 89

原创 容器的选择

List选择:1.对于有数组组成的ArrayList,无论列表的大小如何,get和set访问速度很快和一致。LinkedList,访问时间对于较大的列表明显增加访问时间2.在ArrayList列表插入元素,必须创建空间并把所有的引用向前移动,这会随着Arraylist的尺寸增加带来负担;LinkedList底层基于链表,会在每一个位置保存前一个元素、后一个元素的引用和自身值,只需要链接新的元素即可...

2018-07-13 10:11:48 149

原创 hashcode和equals

HashCode最重要的因素:1.无论何时,对同一个对象调用hashcode()都应该生成同样的值。2.想要使用hashcode实用,必须速度快,并且有意义,也就是,它必须基于对象的内容生成散列码,散列码不必要是独一无二的,更应该关注的是速度,但是通过hashcode()和equals()这两个方法唯一确定对象的身份。3.由于在生成桶的下标前,hashcode()还需要做进一步的处理,所以散列码的...

2018-07-13 09:13:24 82

原创 读书笔记:set和map

Set和存储顺序:Set(interface):存入set的元素都必须是唯一的,set不保存重复元素。加入set的元素必须定义equals()方法以保证对象的唯一性。Set和Collection有完全一样的接口。Set接口不保证元素的次序HashSet:为快速查找而设计的Set,存入HashSet的元素必须定义HashCode();TreeSet:保持次序的Set,底层为树结构,使用它可以从set...

2018-07-12 16:46:27 62

原创 读书笔记:数组

为什么是数组?数组就是一个简单的线性序列,元素的访问速度非常快,但是这种速度的代价就是在其生命周期内,数组对象的大小是被固定的;数组可以在编译器来提醒你插入或取出合适的数据类型;数组可以保存基本数据类型,容器是基于自动拆包装包才可以保存基本类型;在保持方面,对象数组保存对象的引用,基本数据类型保存值。数组和泛型没有很好的结合,不能实例化具有参数化类型的数组。Arrays实用功能:复制数组:数组中保...

2018-07-12 14:31:00 66

原创 读书笔记:字符串

1.不可变的Sring:String作为参数,实际传递的是一个引用的一个拷贝,该引用所指的对象一直在单一的物理位置上,保持不动。2.重载“+”和StringBuilder:重载“+”编译器不断的构建StringBuilder对象,调用toString()方法;字符串的拼接使用StringBuilder,提高效率,StringBuilder提供丰富方法,insert()、replace()等,但是不...

2018-07-11 10:39:38 63

原创 读书笔记:持有对象

List保存有序可以重复元素ArrayList长于随机访问元素,但在List的中间插入和移除元素时比较慢。LinkedList在list中间插入和移除元素性能高,随机访问速度慢,可以封装队列、栈和双向队列Stack 栈,后进先出的容器set:保存无序不能重复元素HashSet 使用散列,查询速度快TreeSet存储在红黑数据结构,元素保持排序状态Map:hashmap 设计快速访问;treemap...

2018-06-28 09:37:01 82

原创 javaweb高并发优化(慕课)

1 系统分析,主要分析高并发系统瓶颈,关注事物、锁、gc和网络延迟带来影响2 动静分离,将静态资源保存在CDN上,动态资源通过接口获取3使用缓存,从redis中读取速度大于数据库中读取4服务和缓存集群...

2018-04-27 17:54:17 406

原创 Servlet工作原理解析

1 Servlet容器Tomcat容器分四个等级,真正管理servlet的容器是context容器,一个web应用对应一个context容器,也就是servlet运行时的servlet容器。添加一个web应用创建一个standcontext容器,并且给这个context设置必要的参数,url和path分别代表这个应该在tomcat中的访问路径和物理路径。2 web应用的初始化应用的初始化主要是解析...

2018-03-12 21:19:47 1856

原创 JVM内存管理

1 物理内存和虚拟内存物理内存就是通常所说的RAM(随机存储器),每一个进程在的内存空间在逻辑上是独立的。虚拟内存:使多个进程在同时运行时可以共享物理内存,但物理内存在逻辑依旧保持独立,还可以扩展内存的地址空间。2 Java中需要内存的组件2.1 Java堆:用来保存java对象的内存区域,堆的大小在JVM启动就一次性向操作系统申请完成。-Xmx表示堆的最大大小,-Xms表示初始化大小。内存的管理...

2018-03-11 15:22:02 88

原创 百度UNIT平台

1.  场景:一个场景对应一个独立的系统,通常按垂直类划分,场景下的对话单元完成场景各种对话任务2.对话单元:定义了系统在一个场景下对用户对话的理解和回复规则 意图:用户的目的(查询是否有雨) 词槽:完成该对话需要提供的必要条件(时间、地点) 对话样本:开发者告诉系统该怎么理解意图和词槽 回复规则:返回一个执行函数名称或字符串 3 模型验证和

2017-10-17 13:08:34 3773

原创 Spring事务管理

事务:作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行四大特性原子性:事务是不可分割的原子工作单位,要么全部执行要么全部不执行一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发

2017-10-10 15:25:53 145

原创 初涉MySql性能优化

1.为什么要进行数据库性能优化a避免因数据库连接Timeout导致服务器报错(以5开头,服务器内部错误)b节省资源的开销(数据冗余 不合适的数据类型导致存储空间浪费)c提高查询速度2.该怎么优化:可以从SQL及索引 数据库表结构 系统配置和硬件四个方面考虑 4.SQL优化(针对查询优化):开启MySql慢查日志对有效率问题的sql进行监控,然后用mysqldum

2017-10-01 13:57:09 239

原创 RESTful风格WebService简介

RESTful是一种设计风格不是标准,关注核心是要处理的资源,通过RUL触发执行。是一种比RPC(远程调用)更轻量级、更安全的服务端和客户端交互方式,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。可有多种实现方式,如java中spring一、幂等性和安全:1.幂等性数学概念: f(f(x)) = f(x),x被函数f作用一次和无限次结果一样,即幂等,反之非幂等。

2017-09-22 13:02:19 2286

原创 SpringAOP使用注意三点

1.不要把业务逻辑代码放入aop中,应该放入非功能性的需求,比如 权限控制 缓存控制 事物控制审计日志 性能监控 分布式追踪  异常处理2.无法拦截static final private方法3.无法拦截内部方法调用

2017-09-14 22:17:41 458

原创 分享一个微信小程序自定义弹窗事件链接

官方API中wx.showModel()不支持自定义弹窗界面。  微信小程序自定义弹窗:http://www.jianshu.com/p/c388c01b664e

2017-09-08 17:52:30 5069 1

原创 myBatis读书笔记

一、ORM映方式:1 数据表映射类2 数据库表的行映射对象(对象实例)3 数据库的列(字段)映射对象属性二、SqlSessionFactory单个数据库映射关系经过编译后的内存镜像。每一个MyBatis的应用程序都以一个sqlSessionFactory对象实例为核心,一旦被创建,应该在执行期间一直存在,线程安全,采用单例模式。三、SqlSession对象应用程序和

2017-09-02 17:51:57 181

原创 微信小程序获取用户信息官方推荐方案

大部分微信小程序都会获取微信用户数据,分享一个官方的地址,详细的给出了解决的方案:https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=1141316098&docid=c45683ebfa39ce8fe71def0631fad26b

2017-08-10 17:18:44 16043

原创 记录module.exports 与 exports使用

1 exports是module.exports的一个引用2 require引用模块后,返回给调用者的是module.exports而不是exports3 exports.xxx,相当于在导出对象上挂属性,该属性对调用模块直接可见4 exports =相当于给exports对象重新赋值,调用模块不能访问exports对象及其属性如果此模块是一个类,就应该直接赋值module.exp

2017-08-08 12:30:25 1901

原创 java接口回调

两个类:Dog和Cat,一个接口CallBack。1 Dog类,实现接口CallBack接口:public class Dog implements CallBack { private Cat cat; public Dog(Cat li){ this.cat=li; } public void ask(String s){

2017-08-03 14:33:34 202

原创 税典通项目总结

1.结构设计:一个MainActivity+多个Fragment的组合,MainActivity充当Fragment容器角色,负责管理各个Fragment。不同的功能块之间的切换,在remove和add不同的Fragment,启动Fragment速度比启动Activity快,整体app功能切换相比多个Activity的组合速度有了很大的提高。当然,一些辅助性的功能也用新的Activity实现,由于

2017-08-03 09:27:07 171

原创 Junit单元测试笔记

JUnit是用于编写和运行测试的开源java框架,如下特点:1、提供了注释,以确定测试方法,常用注解有@Test、@Before、@BeforeClass、@After、@AfterClass等@Testpublic void method() 测试注释指示该公共无效方法它所附着可以作为一个测试用例。     @Beforepublic void method() Before

2017-07-26 17:32:45 163

原创 Spring自动组件扫描

Spring框架是能够自动扫描、检查和预定义的项目并实例化bean,从而免去繁琐的bean类声明在xml文件中。1、Bean类代码:import org.springframework.stereotype.Repository;@Repositorypublic class customDao { @Override public String toString() {

2017-06-20 23:32:01 193

原创 Spring bean初始化和销毁方法

在Spring框架中,有三种方式可以给bean添加初始化和销毁方法,分别是实现InitializingBean和DisposableBean接口、xml文档中配置和使用@PostConstruct和@PreDestroy注解。Bean代码如下:package bea;import javax.annotation.PostConstruct;import javax.annotati

2017-06-20 20:57:44 321

原创 Spring Bean的继承

在Spring框架中,继承是为了支持一个bean共享另外一个bean的属性、值或配置。子Bean可以继承到父Bean的属性、配置或值,也可以有选择的覆盖某些值或属性xml语法如下: 注:parent标签指定父bean的id,id是子bean的id,并把父bean的name属性重新赋值。

2017-06-20 20:17:02 177

原创 Spring中List Set Map 和Date注入

1、bean类代码:package learnBean;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import interfaceSpring.HelloSpring;public class BeiJingBean im

2017-06-20 12:25:12 298

原创 Spring bean的作用域

Spring框架中,bean 的作用域有如下五种:1.单例:每个spring的Ioc容器返回来一个bean实例(框架默认)2.原型:当每次请求时候都返回来一个bean实例3.请求:每个http请求返回来一个bean实例4.会话:每个http会话返回来一个bean实例5.全局会话:返回全局会话的一个http实例(常应用于多个模块的超大系统)后三者多用于web开发。1、声明

2017-06-19 22:50:23 180

原创 Spring内部bean实例

使用情形:在spring框架中,bean A只作为另外一个bean B的属性,那么可以把A作为B的内部bean实例。内部bean实例支持setter注入和构造器注入。Cat对象是AnimaSer对象的一个内部bean实例AnimaSer类代码:public class AnimalSer { private Cat cat; public AnimalSer( ){ s

2017-06-19 21:55:29 194

原创 Spring注入值到bean四中方式

Bean代码如下public class Cat implements HelloWorld{ private String name; private int age; public Cat(String name, int age) { super(); this.name = name; this.age = age; } public Cat(){ super

2017-06-19 21:40:00 186

原创 Spring依赖注入常用的两种方式

Spring中依赖注入:定义对象之间的彼此依赖,常用的两种注入方式:setter方法和构造器1、setter方法:在容器中声明变量并插入对应setter和getter方法,在对应xml文档中配置,代码片段:public class AnimalSer { private Cat cat; public Cat getCat() { return cat; } publ

2017-06-19 20:57:20 420

原创 分享一个安卓进阶的博客地址

地址:http://gityuan.com/android/

2017-06-08 10:03:08 146

提示
确定要删除当前文章?
取消 删除