自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 string、stringbuilder、stringbuffer原理及对比

(3)StringBuilder与StringBuffer区别?答:底层实现都是char数组,StringBuilder不是线程安全的,StringBuffer是线程安全的(Synchronized)。     速度:StringBuilder>StringBuffer>String(创建新对象,缓存了hash)()String s=new String(“xyz”),创建了几个S

2018-05-12 14:54:20 340

原创 JMeter测试数据库mysql与hypersql并发性能(JMeter也支持分布式测试)

1.添加线程组(任何测试计划的起点)  打开JMeter,右键TestPlan,选择Add->Thread->Thread Group线程数:创建多少个线程进行并发访问Ramp-Up Period(in seconds):多长时间内创建完所有的线程,如果Ramp-Up Period设置为x秒,线程数为k,则每隔x/k秒创                     建一个线程并启动。默认值...

2018-05-07 12:32:10 1338

原创 编译器相关

1.编译器有默认宏,可根据其判断操作系统类型2.预编译命令:   #pragma once  ---常出现在头文件中,仅编译一次,同一头文件多次include,编译时会出现重定义错误,使用该命令可以避免(兼容性不好,一些老版本编译器可能不支持),使用#ifndef、#define、#endif同样可以(推荐,c/c++标准支持)。 #error ---输出错误,停止编译 ...

2018-05-04 18:11:54 259

原创 注释规范

文件注释:                @file - 文件名                       @author - 作者                       @version - 版本                       @date - 日期               @note - 注解函数注释:               @brief - 简短说明      ...

2018-04-05 13:49:54 881

原创 Ubuntu16.04 图形界面进入不了

错误提示:The System is running in low graphics modeYour Screen, graphics card,and input device settings could not be detected correctly. You will need to configure this yourself解决方法:01

2018-01-04 21:58:31 9474

原创 linux下qt虚拟键盘

本文编译使用qt5.7源码自带虚拟键盘步骤如下:    1.下载Qt5.7源码       http://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.zip  解压 2.找到虚拟键盘源码目录qtvirtualkeyboard,进入该目录,执

2017-12-14 21:16:30 5169

原创 java序列化与反序列化

()对象序列化、反序列化?    序列化:把对象转化为字节数组的过程称为对象的序列化。     反序列化:把字节数组恢复为对象的过程称为对象的反序列化。序列化的两种用途:1.把对象的字节序列永久保存到硬盘上2.在网络上传送对象的字节序列 --默认的序列化不安全,可以自定义序列化     需要序列化的对象需要实现java.io.Serializable接口(标识接口)。

2017-09-13 08:39:22 209

原创 java IO流

IO使用了装饰者模式(扩展对象的功能)()java io?答:所有流类型继承以下四种抽象流类型。 字节流字符流输入流InputStreamReader输出流OutputStreamWriter字节流和字符流区别,什么时候使用?答:字节流

2017-09-13 08:38:52 186

原创 部分加密算法简介

加密算法对称加密:使用相同密钥加密解密。MD5:输入任意长度的字符串,返回128位的加密数据。(不可逆)SHA1:输入任意长度的字符串,返回160位的加密数据。(不可逆)应用:     1.加密用户密码     2.网上下载大文件的时候,会提供文件的MD5值,用户在下载后可以在下载文件的基础上计算MD5值,如果和提供的MD5相同,说明没有损坏或修改。      (MD5

2017-09-13 08:38:38 909

原创 java实现分布式锁

分布式锁?答:控制分布式系统同步访问共享资源。(1)基于数据库实现当要锁住某个方法或资源时,在表中增加一条记录,释放锁时删除这条记录。问题:1.锁是非重入的,同一个线程在没有释放锁之前不能再次获得该锁,因为数据        库中数据已经存在。           2.锁是非阻塞的,因为数据insert失败直接报错,没有获得锁的线程不会进入             排队

2017-09-13 08:38:25 1222

原创 网络编程及http

java URL编程(http  get、post)1.创建URL对象  URL(String url)2.通过URL对象打开连接URLConnection  URLConnection openConnection()3.通过URLConnection对象获得输入输出流 InputStream =connection.getInputStream() OutputSt

2017-09-13 08:38:01 997

原创 负载均衡算法小结

负载均衡算法:1.轮询法--将请求轮流分配到服务器 2.加权轮询法3.随机法4.加权随机法 5.源地址哈希法  得到客户端IP的哈希值,对服务器个数取模6.最小连接数  将请求分配给当前积压连接数最少的服务器。7.一致性hash 不会引起剧烈变动负载均衡实现session共享:数据库,session频繁使用更好放在kv数据库。DN

2017-09-13 08:37:40 286

原创 高并发限流

高并发限流:     1.计数器2.滑动窗口3.漏桶4.令牌桶

2017-09-13 08:37:12 393

原创 数据结构常见题目

链表当删除一个节点时,并不一定要删除这个节点本身,可以把下一个节点的内容复制出来覆盖被删除节点的内容,然后把下一个节点删除。(提高单链表的删除效率,不用从头遍历链表,但删除的是最后一个节点时,仍需要从头遍历到前一个节点)当我们用一个指针遍历链表不能解决问题时,可以尝试用两个指针遍历链表,让其中一个指针遍历的快一些。如:(1)链表倒数第k个节点       思路:两个指针间隔k-1,

2017-09-13 08:36:57 20475

原创 java异常体系及注意事项

java异常体系: ()Exception与Error答:java.lang.Error与java.lang.Exception都继承自java.lang.Throwable.Java异常是面向对象的,当异常发生时自动产生一个异常对象,再由catch方法捕获处理。自定义异常:   class MyException extends Exception{

2017-09-13 08:36:42 311

原创 redis讲解

Redis字典 redis内存管理  内存申请:本质调用了malloc(calloc同malloc一样)函数,加上了异常处理和内存统计。       异常处理:内存申请失败后的处理函数---------------》可以自定义       内存统计:更新总申请内存大小  内存调整:调用了realloc()函数,加上了异常处理和内存统计。  内存释放:调用了free()函

2017-09-13 08:36:21 331

原创 java线程池

部分方法介绍:  Shutdown():执行后,不能再向线程池提交任务,等待正在执行的任务及位于任务队列中的任务执行完成后,销毁所有线程。  Shutdownnow():执行后,不能再向线程池提交任务,如果有空闲线程销毁空闲线程,取消所有位于阻塞队列中的任务,将其放入List中,取消正在执行任务的线程(设置中断标志位)。任务队列满且超过最大线程个数处理策略:         1.丢

2017-09-12 22:20:27 187

原创 mysql引擎、索引、事务、锁、sql注入及java操作

()数据库索引的数据结构      --》提高数据检索速度常用: hash索引、B-树或B+树不使用红黑树原因:高度h深,逻辑上很近的节点物理上可能很远,无法利用局部性。B-树:(1)所有叶节点具有相同的深度,等于h(2)Key和指针相互间隔,两端为指针在B-Tree中按key检索数据:从根节点进行二分查找,如果找到则返回对应节点的data,否则在相

2017-09-12 21:40:36 290

原创 ThreadLocal实现原理

ThreadLocal实现原理答:当使用ThreadLocal维护变量时,Threadlocal为每个使用该变量的线程提供独立的变量副本,每个线程都可以独立的改变自己的副本,而不影响其他线程的变量副本。每个线程Thread都有一个 ThreadLocal.ThreadLocalMap成员,用来保存与线程相关的变量。 一个线程中可以new多个ThreadLocal对象(工具类),En

2017-09-12 21:15:06 258

原创 java并发与多线程

()Synchronized与Lock区别   --都是可重入锁答:Lock能够实现Synchronized的所有功能(互斥性、内存可见性),Synchronized会自动释放锁,Lock必须手动释放,将unLock()放到finally中,Synchronized一直等待直到获取锁,Lock可以在指定时间获取不到锁就自动放弃(tryLock),Synchronized无法响应中断,Lock可

2017-09-12 21:12:43 252

原创 linux IO多路复用机制(select、poll、epoll)及5种IO模型

I/O多路复用:监视多个文件描述符(优势),一旦某个描述符就绪,通知程序进行相应处理。Select、poll、epoll本质上都是同步IO(Linux)。Select:1.文件描述符个数有限制1024       --位图       2.每次调用都需要重新将3个fd集合从用户态拷贝到内核态       3.内核需要遍历所有fd,效率低如果select返回可读,结果

2017-09-12 21:08:25 4113

原创 java NIO

我们知道阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时(或超时)才会返回;同样,在调用ServerSocket.accept()方法时,也会一直阻塞到有客户端连接才会返回,每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求。缺点:1. 当客户端多时,会创建大量的处理线程。且每个线程都要占用栈空间和一些CPU时间2. 阻塞可能带来频繁

2017-09-12 21:04:01 174

原创 java四大引用

2)软引用(SoftReference)      内存充足时,垃圾回收器不会回收具有软引用的对象,内存不足时,垃圾回收器会回收具有软引用的对象。(做缓存)使用方法:   SoftReference ref = new SoftReference(T reference);    //内部包含有指向T类型对象的引用   ref.get() //获得保存的T类型对象的

2017-09-12 21:02:00 196

原创 java泛型机制、可变参数原理

()java中泛型及作用答:参数化类型,java1.5之前,在集合中存储的对象使用前需要先进行向下类型转换,不方便,运行时还可能出现ClassCastException,泛型提供编译期类型检查,确保只把正确类型对象放入集合。如:   Arraylist list=new Arraylist();   list.add(“123”);//以Object对象存储   int a=(

2017-09-12 20:57:08 555

原创 JVM内存布局、垃圾收集算法、volatile讲解

()JVM内存结构每个java程序运行在一个单独的JVM实例中,每个实例唯一对应一个堆。栈只有两种异常:  1.StackOverflowError,线程请求的栈深度大于虚拟机允许的深度  2.OutOfMemoryError,无法申请到足够的内存堆只有一种异常:OutOfMemoryError,无法申请到足够内存方法区只有一种异常:OutOfMemoryE

2017-09-12 20:50:06 331

原创 finalize()方法解密

java垃圾回收器在回收对象之前,会自动调用此对象的finalize()方法,不需要程序员调用。(但只会被自动调用一次,如果之前被调用过,就不会再次调用)原理:如果类没有实现finalize()方法,当GC时,如果没有引用指向它,垃圾回收器会直接回收该对象。如果一个类实现了finalize()方法,当创建该类的对象的时候,会多创建一个Finalizer对象,指向刚创建的对象,并把此Finali

2017-09-12 20:35:46 428 1

原创 java集合类总结

(1)Arraylist与vector区别?答:arraylist与vector底层实现都是object数组,vector的方法是线程安全的(Synchronized),arraylist不是线程安全的,由于线程的同步影响性能,因此arraylist性能比vector好。线程安全:如果你的代码所在进程中有多个线程在同时运行,这些线程可能会同时运行这段代码,如果每次运行结果和单线程运行的结果

2017-09-12 20:32:04 211

原创 类的加载机制

jvm中有多个类加载器,每个类加载器负责加载指定位置的类。      Java源代码(.java)在经过java编译器编译之后生成java字节码(.class),类加载器负责加载java字节码到jvm中,并转换成java.lang.Class类的一个实例。例:bootstrap类加载器(原生代码实现,c++)负责加载jre/lib/rt.jar中的类,extclassloader负责加载j

2017-09-12 20:10:41 189

原创 Filter介绍

1)Filter是实现javax.servlet.Filter的接口的java类,接口中包含三个方法:init,doFilter、destroy      创建:web应用程序启动时        1.init方法         当web应用程序启动时,web服务器根据web.xml中的配置信息创建每个注册的Filter的实例对象,将其保存在内存中,立即调用其init方法,ini

2016-12-19 16:21:20 253

原创 java利用jxl.jar创建、读取EXCEL文件

1.下载jxl.jar包2.创建EXCEL表格  try {      WritableWorkbook workbook=Workbook.createWorkbook(new File("表格.xls"));//创建EXCEL文件,获得对象        WritableSheet sheet=workbook.createSheet("第一页",0);//创建第一个工作表L

2016-11-29 15:22:20 358

原创 Tomcat web-INF目录介绍、部分配置介绍

常见的web应用,也成为WAR文件。对于WEB-INF目录的访问,servlet规范有如下约束:The Web application class loader must load classes from the WEB-INF/classesdirectory first, and then from library JARs in the WEB-INF/lib di

2016-11-28 13:03:39 3032

原创 网络加载图片及图片缓存处理

网络加载图片:                          InputStream is=new URL(String url).openStream();                          Bitmap bm=BitmapFactory.decodeStream(is);获得Bitmap对象后即可缓存处理:                 软引用Soft

2016-11-23 15:15:12 589

原创 ndk介绍及使用

NDK是一个工具集,全称Native Development kit,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk使用方法:1.下载NDK http://developer.android.com/sdk/ndk/index.html,解压2.在java类中声明带有native关键字修饰的方法3.通过JDK自带的javah生成c/c++头文

2016-11-21 13:02:15 576

原创 服务器端集成redis数据库

redis数据库是一个内存数据库,以key-value对的形式存储数据,支持的value类型为string、list、set、sorted set(有序集合)、hash.1.redis支持持久化,可以周期性的把数据写入硬盘2.支持订阅/发布3.支持事务,当开启一个事务时,会把命令依次放入一个队列,当提交时,才会依次执行队列中的命令。4.支持有效期的设置,可以设置一个key的有效期

2016-11-15 21:14:05 455

原创 邮箱找回密码功能实现思路

发送邮件功能实现参见       当用户找回密码时,向用户邮箱发送一个链接,通过该链接用户可以转到密码重置界面,为了防止非法用户利用用户名然后直接访问该密码重置界面修改用户密码,发送到邮箱的链接可以带上服务器端生成的一个大的随机标志和一个有效期,当非法用户通过url直接访问密码重置界面时可以根据随机标志予以拒绝,即使随机标志正确(合法用户),超过有效期同样予以拒绝。大的随机标志如何生成:

2016-11-10 21:42:30 4590

原创 使用JavaMail发送邮件

JavaMail是SUN提供的用于发送和接收电子邮件的编程接口1.导入JavaMail相关包(JavaMail1.4.5为例)   http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-    downloads-eeplat-419426.html#javamail-1.4.5-oth-J

2016-11-10 19:19:13 433

原创 android下md5加密

MD5属于不可逆加密算法,由密文无法推出原文用法:public class MD5 {public static String encrypt(String data){char[] hex=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};byte[] encrypt

2016-11-09 12:24:16 289

原创 jersey搭建rest服务

1.安装好eclipse和tomcat2.添加jersey依赖库(本文以JAX-RS 2.0为例)   https://jersey.java.net/download.html下载Jersey,解压后添加目录api、ext、lib中的所有jar包到工程中3.创建rest服务资源  例:        注解:@Path表示资源的uri路径           @GET表

2016-11-05 11:33:31 390

原创 android下RSA数据加密

RSA加密算法原理:   1.随机选择两个不相等的大质数p和q,n=p*q    2.m=(p-1)(q-1),随机选择整数e(1    3.根据公式e*d=1(mod m)计算出d最终得到的(n,e)为公钥,(n,d)为私钥属于非对称加密算法,公钥和私钥是一对,如果公钥对数据进行加密,只有对应的私钥才能解密,如果用私钥对数据进行加密,只有对应的公钥才能解密(用于认证)

2016-11-01 19:19:17 302

原创 android集成短信验证功能(Eclipse下)

1.mob官网http://www.mob.com下载相应sdk2.在工程src目录下新建libs目录,导入如下三个jar包3.打开AndroidManifest.xml配置如下权限uses-permissionandroid:name="android.permission.READ_CONTACTS"/>uses-permissionandroid:

2016-10-27 19:17:18 636

graphics.h

vc下画图时可能需要用到的graphics.h头文件

2015-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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