
编程
文章平均质量分 80
俊哥66
这个作者很懒,什么都没留下…
展开
-
Tomcat假死原因排查
tomcat假死?为什么会假死呢,可能大多数人不会碰到这个问题,如果出现问题,重启服务器就好了,可是如果这个问题没有解决的话,那么就可能会存在相应的隐患,如果你的用户量多,那么必然你的请求量就高,这样假死的发生频率就会越来越高。而刚好我们线上也出现了这个问题,就是tomcat假死,是如何知道假死的呢开始我们的服务器报警预告无法访问某些接口发,报502的错误,由于我们的项目是通过nginx进行负...原创 2019-10-25 11:18:45 · 4004 阅读 · 0 评论 -
Gson的日常使用
在web项目中,我们现在使用最多的数据格式就是json,因此项目中会经常进行json与我们bean进行相互转换,目前使用比较多的就是阿里的fastjson以及谷歌的gson,我们本篇介绍的就是谷歌的这个解析json的工具。我们这边使用mavne来进行管理我们的jar包,因此我们只需要在pom里面引用相应的依赖 <dependency> <groupId>co...原创 2019-10-25 10:50:16 · 385 阅读 · 0 评论 -
安卓的事件分发机制(上)view
我们都知道安卓的手机基本上靠触摸、点击来代替以前的按键。所以就要涉及到安卓的事件分发了,我们经常看见的滑动等都是使用了这个分发,如果我们在项目中碰见了滑动冲突等问题时,那么解决这个办法就是通过安卓的事件分发机制。其实事件分发主要就是这三个,dispatchTouchEvent(),OnInterceptTouchEvent(),onTouchEvent(),其实就是这三个方法,只要弄清楚了这三个方法原创 2016-11-20 22:19:52 · 396 阅读 · 0 评论 -
安卓事件分发机制(下)viewgroup
上一节我们讲过了安卓的事件分发的机制,因为事件分为容器viewgroup和view,而上一篇我们已经说过了view的事件分发机制,所以我们这篇就主要讲viewgroup的分发机制,其实viewgroup就是多了一个onInterceptTouchEvent。因为他会进行拦截,拦截了的话就不会传递给子view。下面用列子开讲: 首先还是写一个自定义viewgroup,我们让这个类继承linelayo原创 2016-11-21 21:50:34 · 324 阅读 · 0 评论 -
spring、springmvc、hibernate的整合
spring与hibernate的整合,因为现在都是使用maven来管理那些依赖jar包的,所以我们就不会去关注哪些包是必须的,哪些必须的包是依赖于其他的包,这些maven都能帮我们搞定,剩下的就是spring和hibernate的整合,以前在hibernate没有注解的时候,配置是很麻烦的,但是现在有了注解,就不用一一去配置数据库xml了,直接在实体里面注解,好了,废话不多说了,直接上spring原创 2017-08-30 12:31:00 · 429 阅读 · 0 评论 -
oauth2
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 授权使用的场景是什么呢?其实现在市面上有好多的列子,最常用的就是第三方登录。其实他们就是用oauth2来控制资源权限的授权。就比如csdn可以使用qq登录,然后获取qq上自己的信息来进行csdn的注册,省了用户访问网站动不动就要注册的麻烦。oauth2最要是通过token来验证用户原创 2017-12-21 19:59:03 · 367 阅读 · 0 评论 -
char能不能存中文字符
在C语言中,char类型占1一个字节,而汉子占2个字节,所以不能存储。 在Java中,char类型占2个字节,而且Java默认采用Unicode编码,以个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。...转载 2018-03-12 15:12:24 · 6416 阅读 · 0 评论 -
mongodb操作以及在spring boot中的操作
什么是mongodbmongodb:MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。...原创 2018-04-15 14:58:23 · 1168 阅读 · 0 评论 -
ReentrantLock与AbstractQueuedSynchronizer源码解析
在我们开发过程中,经常要和多线程打交道,多线程其实也是面试过程中必须问的问题,其实为什么会要使用多线程,这个大家可以百度下就清楚了。我们今天讲的这个ReentrantLock其实是对于同步(安全)的问题而产生的。大家应该都知道synchronized吧,他的作用业很简单,其实就是为了防止多线程下操作数据导致一些列问题,在1.5之前,其实都是基于这个synchronized的,而在jdk5的时候就推...原创 2018-07-30 21:15:20 · 416 阅读 · 0 评论 -
线程池ThreadPoolExecutor源码解析
什么是多线程?多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。其实如果学过操作系统的同学的话就知道,其实我们操作底层中的cpu是以时间片的方式供这些线程使用,其实实时每次只有一个线程去使用cpu,但是时间片的间隔很小,所以让人以为是并行的。什么时候需要使用多线程?其实使用多线程的场景很多,比如你有好多任务需要做,假...原创 2018-07-31 20:04:50 · 247 阅读 · 0 评论 -
sql优化之in与exists
在我们开发过程中,初期可能不会去太关注我们自己写的sql语句的效率怎么样,因为总是觉得可以拿取到数据就算是ok了,可能也会注意一下你的sql执行的时间,但是在开发的过程中因为数据量的原因,其实你不去了解一下sql的一些优化的手段其实是无法感知你的sql的效率问题。我之前博客也写过一篇关于sql的优化一些需要注意的点,而我们本节主要是针对in与exists的区别以及什么时候使用in,什么时候使用ex...原创 2018-09-19 20:05:02 · 7371 阅读 · 2 评论 -
httpurlconnection使用post传值时web接口接收不到值
最近好久没有写博客了,因为上班的原因。今天想做一个点餐系统,移动版和服务器版。数据使用json数据进行传输。但是碰见一个难题就是如何让移动端将数据传输给服务器,然后进行更新到数据库。进入正题: 因为我使用的是httpurlconnection,大家都知道get请求的参数是放在url后面以?开头&分割。但是如果我们参数多或者是参数不想让别人知道的时候我们就要使用post,因为他的参数是放在相原创 2016-11-17 22:30:32 · 8378 阅读 · 3 评论 -
liunx、android等常用命令。还有就是git版本控制
众所周知作为程序员的我们或多或少会接触到liunx重要,那熟悉liunx常用命令十分,下面是我开发中常用的命令,因为我是安卓开发的,所以可能有些命令是安卓adb shell中的,但还是有一些常用的liunx命令,下面就是我工作中常用的命令。 1.ls命令:主要是为了列出目录下的文件,-a,查询所有,包括以.开头的隐藏文件。该命令非常方便的查看文件及目录 -l 列出文件的详细信息,如创建者,创建时转载 2016-10-27 10:20:02 · 370 阅读 · 0 评论 -
安卓传递对象之Serializable
在安卓中使用inetent和bundle可以传递基本数据类型以及数组等常用数据,然而传递对象或对象数组时,这些就没办法了,需要借用Serializable和parcelable这两个序列化的接口。 1.首先见一个存放数据的类并实现Serializable接口: public class data implements Serializable {String name, password;pub原创 2016-07-13 15:08:46 · 510 阅读 · 0 评论 -
map、list、set等常见集合的理解
简言:java中我们经常会使用到集合,比如hashmap、hashtable、arraylist、以及hashset等,还有几个比较少见的如(vector、treeset)等。其实这些都是基于list接口和set接口以及map接口。1.list接口:ArrayList:该类是一个数组的形式存在,但他是一个动态数组,用put来添加数据,数据可以为null(null与空不一样啊),添加的数据可以重复原创 2016-07-25 20:44:28 · 1950 阅读 · 0 评论 -
抽象类与接口区别
抽象类: 抽象类无法实例化(即不能new)。使用抽象方法,该方法是只需声明不需要实现。抽象方法需要定义在抽象类中,一个类包含抽象方法,这个类一定是抽象类。如果某个类是抽象类,他可以有具体方法(有声明,有实现),也可以有抽象方法。子类继承父类(该父类为抽象类)就要实现该父类的所定义的所有抽象方法,否则该子类也要定义为抽象类。抽象类中的变量可以只定义不赋值。并且可以在子类中更改。抽象方法默认为publ原创 2016-07-16 10:53:43 · 390 阅读 · 0 评论 -
java中内存分配以及static的用法
Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:1.栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2.堆区:由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3.全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变原创 2016-07-16 13:49:27 · 7111 阅读 · 3 评论 -
String 的个人理解以及在栈堆的内存以及Stringbuilder和Stringbuffer
我们知道String类是不能继承的,因为该类是final型的。而我们经常碰见String的==与equal的问题。String的“==”:该是比较两字符串的地址是否相等。 String的“equal”:是比较两字符串的值是否相等。 **具体的原因:** new一个String和直接赋值是不一样的,new一个可能会创建两个值,一个是在常量区创建一个字符串,在堆内存创建一个字符串,在指向该内存的地原创 2016-07-15 18:27:56 · 2650 阅读 · 0 评论 -
安卓aidl夸进程通信的小例子,
简言:都知道安卓数据的传输有好多种,比如bundle,intent,handler以及其他一些,但是这些是在一个进程上运行的,如果我们需要不同进程传输数据(通信),这时候我们就需要用到aidl(Android Interface Definition Language)语言进行编写,这就是涉及到安卓底层的ipc通信中的bindler,废话不多说了(bindler回去自己了解)。 我们写一个例子进行原创 2016-07-27 20:13:17 · 380 阅读 · 0 评论 -
java io流的使用之字节流与字符流的操作
简言:我们都知道现在使用最高的语言就是java语言了,而想掌握这么语言,有几个知识点是非常必要的,比如java中的网络操作、多线程、io流了。而我们这次就讲一讲io流中最常用的两个,字符流和字节流。 字符流:见名知意,我们可想而知这个是用来对字符数据的操作,比如文本数据等的操作,其实也可以使用字节流(下面会介绍),我们都或多或少的知道我们的字符是指计算机中使用的文字和符号,比如1、2、3、A、B、原创 2016-07-31 22:46:18 · 419 阅读 · 0 评论 -
代理模式,简单(静态)工厂模式,单例模式,模板方法模式个人理解
简言:java中总共有23种设计模式,每个模式的出现都是为了解决某一方面的问题,所以这23种设计模式有他们各自适用的地方(废话有点多),而设计模式的产生主要是为了降低类与类之间的耦合度。下面我们就简单的了解一下几种设计模式及使用的地方。1.单例模式:我们都知道单例模式分为懒汉式、饿汉式以及登记式三种。 代码如下(以懒汉式): public class 单例模式 {/** * @param ar原创 2016-07-21 19:53:31 · 2176 阅读 · 0 评论 -
java链表的数据结构和二叉树的实现
链表的算法: package lian.biao;public class 链表 {/** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub a a=new a(); a.add(1); a.add(2); a.原创 2016-07-21 21:13:57 · 873 阅读 · 0 评论 -
自定义view中的onmessure方法
简言:众所周知安卓中那些很炫酷的ui或多或少多少自己自定义出来的,他们或是直接继承控件本身,高级一点的话就自己写,就是继承view或者是viewgroup,然后重写里面的onmesure、onlayout、ondraw方法进行绘图及显示。而这些方法就要涉及viewroot和decorview。viewroot对应的是viewrootimpl类,他是连接windowmanager和decorview的原创 2016-08-10 10:00:54 · 845 阅读 · 0 评论 -
缓存activity的方法:.onSaveInstanceState和onRestoreInstanceState
有a、b两个activity,当a进入b之后的一段时间,可能系统就把a回收了,这时候按back键,执行的不是a的onStart()方法,而是onCreate()方法,a被重新创建了一次,这时a的临时数据和状态就很有可能就丢失了。 而Activity中的onSaveInstanceState()回调方法会保存临时的数据和状态,这个方法一定会再activity回收之前调用。方法中有一个Bundle参数转载 2016-11-03 15:55:05 · 547 阅读 · 1 评论 -
java四种线程池
线程池的简介:线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。 为什么要使用线程池 在java中,如果每个请求到达就创建一原创 2016-07-13 12:58:06 · 418 阅读 · 0 评论