自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

原创 uWSGI + Nginx的配置

系统:centOS7过程比较坑,分为几个部分吧:python3的安装uwsgi的安装nginx和uwsgi的配置selinux的配置一. python3的安装centOS7默认安装的是python2,直到centOS8,才换成了python3。但是现在大环境都是在用python3,所以我们第一步是要安装python3.首先说,不要卸载python2了,因为2和3可以并存,卸载2容易出事儿,系统有些东西也是跟2关联的,不是强迫症建议就不要卸载2,直接安装3就行,不影响。安

2020-06-11 17:08:06 811 1

转载 关于serialVersionUID的说明

1、为什么要使用serialVersionUID(1)对于实现了Serializable接口的类,可以将其序列化输出至磁盘文件中,同时会将其serialVersionUID输出到文件中。(2)然后有需要使用时,再从磁盘将对象内容及serialVersionUID读入内容中的某个对象。(3)将磁盘内容读入对象时,需要进行强制类型转换,如Person person = (Person)ois.read...

2018-06-25 10:59:09 1006

原创 JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别

web应用部署的根目录,编译路径和项目的根目录有什么区别?直接上例子:你有一个项目,名字叫做testPro项目放到了你的D盘,目录结构是这样的:D:/testPro--src  --main    --webapp      --WEB-INF--target  --classes这里,项目的根目录就是D:/testProweb应用部署的根目录就是w

2018-01-05 18:36:53 28515 1

原创 Spring项目实践(四)--- Spring MVC配置文件详解

前三讲我们依次讲了pom.xml,web.xml和spring配置文件,这次我们来讲一下springmvc的配置。首先明确一下springmvc是spring的一个模块。springmvc的配置文件,也不是固定命名的,而是同spring配置文件一样,在web.xml中指定的: springmvc org.springframework.we

2018-01-05 18:20:18 13055

原创 Spring项目实践(三)--- Spring配置文件详解

不同于我们讲的pom.xml以及web.xml,这两个文件的名称是固定的,不可更改的,这里的设计采用的是约定优于配置的原则。而Spring的配置文件的名称是可以更改的,实际上我们在《Spring项目实践(二)---web.xml文件详解 》中已经给Spring的配置文件命名过了: contextConfigLocation

2018-01-04 17:11:09 7923

原创 Spring项目实践(二)---web.xml文件详解

上一篇讲了spring项目中的pom.xml文件,pom文件主要作用是引入依赖库,设置编译参数等 这一篇来讲一下web.xml文件。 web.xml的学名叫做部署描述文件(DD),它不是Spring所特有的,而是在Servlet规范中定义的,是web应用的配置文件。 我们还是按照之前的套路,一部分一部分的讲解。一.根标签 根标签是<web-app>,这块比较简单,模板里也自带,不再赘述二.上

2018-01-02 17:12:49 2810

原创 Spring项目实践(一)---pom.xml文件详解

现在我们大部分的JAVA开发都会用到maven了(当然Android开发更常用的是gradle)。Spring也是我们开发JAVA WEB项目最常用的框架之一,这篇就来讲一下,Spring项目中使用maven的pom.xml应该如何配置。我们来一部分一部分的看下pom文件 一. maven的信息部分<?xml version="1.0" encoding="UTF-8"?><project xm

2017-12-28 16:42:38 12785 1

原创 Address already in use: JVM_Bind问题的解决

tomcat一般出现Address already in use: JVM_Bind的问题,可能是端口冲突,也就是端口被占用了。这个可能是其他应用程序使用了同一个端口(默认是8080),也可能是你启动过tomcat,进程还没有被kill掉。不管是哪种情况,我们都可以按照如下方式来处理:如果是windows系统,打开控制台,输入:netstat -ano来查看现在端口

2017-12-20 14:46:03 16328

原创 关于JAVA的redis客户端的实现

最近在研究java的redis使用,尤其是在spring中的使用,总结一下。首先java的redis客户端比较好用的,也是比较常用的是Jedis。 关于Jedis需要注意的有2点: 1. Jedis不是线程安全的。也就是说当多个线程同时使用Jedis的同一个实例的时候会出现并发问题。所以Jedis提供了一个线程池JedisPool,这个我们在后面的代码中也会使用到。 2. JedisPool需

2017-12-14 16:31:21 3573 1

原创 JAVA代理那些事儿

对于java里的代理,一直是一知半解,这次打算一次性解决这个问题。我不打算按部就班的解释什么叫代理,而是从一个需求入手,来一步步的引出代理的概念首先我们有一个项目,完成了一些功能。 在这个项目里面,我们有个UserManager的类,里面有个方法,叫addUser(User):class UserManager{ public void addUser(User user){

2017-12-08 18:43:57 209

转载 注解@PostConstruct与@PreDestroy讲解及实例

转载:http://blog.csdn.net/yaerfeng/article/details/8447530从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式:@PostConstruct

2017-12-07 15:29:13 220

原创 数据库的读写分离

一般来说,我们web应用的数据库都是读多写少。为了保证数据库的读写速度,我们可以采用读写分离的方案。简单来说,有一个(或多个)主库,主库负责数据库的写操作(insert, update, delete),有一个(或多个)从库,从库负责数据库的读操作(select)这样我们需要保证的是:1. 主从库的数据一致2. 主库只负责写数据3. 从库只负责读数据实现读写分离的方

2017-12-04 14:53:23 474

原创 session,cookie 的身份认证那些事儿

cookie,session和token,其实都离不开同一个概念–会话跟踪我们知道,HTTP协议是一种无状态协议。也就是说,客户端和服务器端在一次请求结束后,两者的连接就会被关闭,当客户端再次请求服务器的时候,需要建立新的连接。举个例子来说,客户端就是顾客,服务器端就是商人,请求就是顾客去找商人买东西。这个商人有个特点,只认东西不认人。所以对这个商人来说,没有所谓的“老主顾”,每次来买东西的人对他来

2017-11-28 17:22:09 582

原创 nginx+tomcat部署笔记

公司服务器端一直是nginx+tomcat的环境。其中nginx用作反向代理,动态的请求交给tomcat来处理。nginx本身处理静态内容(例如图片)因为是从头开始学,列一下自己遇到的坑。nginx和tomcat的安装不再赘述,我的环境是centOS,因为用的公司的openstack,有现成的nginx+tomcat的镜像,所以我只是用镜像创建了一个实例,不需要自己安装。笔记list: 1. ng

2017-11-27 16:08:48 1646

原创 Head first:servlet and jsp 笔记

常用端口:HTTP在TCP的端口80上运行;telnet在端口23,FTP在端口21,SSH(secure shell 远程登录协议)在端口22CGI:CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web

2017-11-23 18:29:27 806

原创 十月读书笔记:Effective Java(五)--clone和toString方法

一. 关于toString方法 作为一个应用程序开发者,而非一个”api开发者”,我们其实并不需要像作者一样关注过多的东西,比如toString是否需要一个明确的注释等。 需要记住的是: 1. 如果是一个value类,比如bigInteger,或者我们自己写的Student等,最好重写它的toString方法,用来展示一些类的信息,比如一个Student类,它的toString方法可能会返回学

2016-10-27 17:54:17 426

原创 十月读书笔记:Effective Java(四)--equals二三事

这一篇主要讲了equals方法的一些问题。 一. 重写equals方法要满足的特性 简单说一下,其实从字面意思上大家也都可以明白,而且这部分其实更偏向于数学,所以不再赘述,仅讲一下笔者遇到的几个有趣的问题。 当你重写equals方法时,必须遵守其通用约定。如下是从Object的规范中拷贝来的约定内容: equals方法实现了等价关系(equivalence relation): 自反性(R

2016-10-19 14:09:15 392

原创 十月读书笔记:Effective Java(三)--避免使用finalize

一. 避免使用终结函数finalize 这里我们要说的是一个关键字finalize。 我想大家都知道finalize的作用,类的Finalize方法,可以告诉垃圾回收器应该执行的操作,该方法从Object类继承而来。在从堆中永久删除对象之前,垃圾回收器调用该对象的Finalize方法。 但是,我想说的是,finalize虽然会“继续执行”,但是它并不能保证被及时执行。 及时的执行finali

2016-10-19 11:27:01 384

原创 十月读书笔记:Effective Java(二)--注意栈内过期的对象引用

一. 避免创建重复的对象 一个我们所熟知的,经常被考来考去的例子是:String s = new String("helloWorld"); 上面这句创建了两个对象,一个是对象s,一个是字符串实例helloWorld,而当这句被放到一个for循环中,则可能创建成百上千个实例。同样不可取的还有下面这句(不可放入到循环中):String s= null;s = s + "a"; 为了避免创建重

2016-10-11 15:43:12 688 1

原创 十月读书笔记:Effective Java(一)--静态工厂方法及私有化构造函数

简述: 《Effective Java》是Joshua Bloch所著,Joshua是Sun公司的高级工程师,他也是我们所熟知的JAVA开发工具包中java.math和Java Collections Framework的开发者,所以在这本书中,大部分时候 Joshua是从一个平台开发者的角度(而非一个平台使用者)来考虑问题的一. 静态工厂方法(statics factory method) 静

2016-10-10 14:57:49 1131

原创 OKHttp的简单封装类

网上关于OKHttp的教程很多,不再一一赘述。最近在自己写一点小的APP,也用不到太深的内容,所以就简单写了一个类来封装一下(或许连封装都称不上)import java.util.HashMap;import java.util.Iterator;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import o

2016-10-09 17:31:55 428

原创 十月读书笔记--深入理解Java虚拟机:JVM高级特性与最佳实践

1. JDK:我们把java程序设计语言,java虚拟机和java api类库统称为JDK--java development kit,JDK是用于java程序开发的最小环境2. JRE:我们把java api类库中的java se api子集和java虚拟机统称为JRE--java runtime environment,JRE是支持java程序运行的标准环境3. JAVA CARD:支

2016-10-09 15:26:42 544

原创 移动端图文直播技术方案的分析

最近公司的项目要实现一个赛事的图文直播,类似网易新闻的NBA直播。具体的需求: 1. 主播端(php实现)可以推送消息到直播间 2. 客户端(android/iOS实现)接收消息 3. 消息的种类比较多,支持文字,图片(包括GIF图),图文混排(相对固定的几种格式) 4. 客户端用户不能发言,发言需要去专门的讨论区(im,类似群)最初的需求分析: 1. 用socket实现消息的传递 2.

2016-04-21 11:50:51 4219 1

原创 Retrofit和Rxjava结合实践(二)--Rxjava快速理解

上一篇我们介绍了Retrofit,这次我们来了解一下Rxjava。Rxjava的概念和使用,如果铺开来讲,可以讲很长,同上一篇一样,我不打算把这篇博客写成一个技术索引,或者大全,我只是希望能让初学者能够抛开那些复杂的概念(在Rxjava中,你能看到各种让初学者头大的名词,诸如响应式编程,调度器,订阅者,观察者等等),对Rxjava有一个基础的认识,同时知道如何在代码中使用它。ps:关于响应

2016-04-05 14:44:31 666

原创 Retrofit和Rxjava结合实践(一)--Retrofit快速上手

这个专题我打算写三篇,分别介绍Retrofit,Rxjava以及如何将两者结合起来。 本篇先介绍比较简单的Retrofit一. 为什么要使用Retrofit 因为简洁,好用,而且效率高(关于效率这一点,我曾经看到过一个请求耗时的对比,但是对不起各位看官,我搜了好多地方

2016-04-01 15:40:12 821

转载 大型网站的静态化处理

原文来自:http://www.cnblogs.com/sharpxiajun/p/4282789.html在存储瓶颈的开篇我提到像hao123这样的导航网站只要它部署的web服务器数量足够,它可以承载超大规模的并发访问量,如果是一个动态的网站,特别是使用到了数据库的网站是很难做到通过增加web服务器数量的方式来有效的增加网站并发访问能力的。但是现实情况是像淘宝、京东这样的大型

2016-03-30 14:18:03 4896

原创 Android视频录制--屏幕录制

上一篇介绍了MediaProjection,这个类可以用来实现安卓屏幕数据的采集,也就是手机一帧帧的截图,并输出成byte流的格式。 有兴趣的同学可以看这篇: Android视频录制--MediaProjection但其实只用MediaProjection,并无法生成一个视频,因为我们得到的只是流,还需要把流编码成视频格式。MediaProjection官方的demo里,也仅仅是把输出内容放到了

2016-01-08 15:35:17 13651 16

原创 阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇

在前两篇里,我们分别介绍了如何购买阿里云服务器,安装基本软件和配置(请看阿里云ECS服务器Linux环境下配置php服务器(一)--基础配置篇) 以及如何安装使用phpMyAdmin(请看阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇)今天我们来讲一下,如何将你本地开发好的项目,部署到Linux服务器上。因为我本地开发环境是Windows(Mac下配置php实在

2016-01-01 20:06:25 6568

原创 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇

上一篇讲了php服务器的基本配置,我们安装了apache,php,还有mysql,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服务器(一)这一次我们来继续说说phpMyAdmin的安装。什么是phpMyAdmin?phpMyAdmin是一种MySQL的管理工具,它可以直接通过网页来管理你的MySQL,当然,phpMyAdmin

2015-12-31 15:07:32 6408 4

原创 阿里云ECS服务器Linux环境下配置php服务器(一)--基础配置篇

最近在搞一个后台,想建一个php的环境,记录一下过程。首先是买服务器,为了省钱其实刚开始可以不买,在自己的机器上先搭建一个本地服务器,通过内网ip测试,等开发差不多后,再买,然后把环境移到ecs服务器上。买哪种类型的ECS服务器比较好? 我主要是为了把csdn的博客移到自己的主页上,同时业余时间学习一下php,不需要太大的空间和带宽,所以我就买的最便宜的68元/月的,包年680。 如下:

2015-12-30 13:28:05 13204 1

原创 Android AsyncTask的doInBackground不执行问题

今天在写一个小程序的时候,遇到一个问题:一个activity页面的AsyncTask的doInBackground不执行。试着在doInBackground里面打印了下log,确认是走不到doInBackground里面: @Override protected Result<JokeInfo> doInBackground(Integer... params) {

2015-12-29 16:45:12 2835

原创 android屏幕适配终极指南(二):DP和DPI

上次我们讲了DPI,分辨率的一些事儿(有兴趣的童鞋可以去这里看:android屏幕适配终极指南(一):DPI,分辨率和屏幕尺寸)这次我们来讲点跟android有关的。 大家都知道,一个正常的工程,都会有如下几个文件夹: ps:旧的版本还会有个drawable-ldpi,也就是low dpi,但是这个在我现在使用的android studio1.0中,创建工程时并没有生成它,我猜测可能是现在的手机

2015-12-10 16:21:06 2050 2

原创 android屏幕适配终极指南(一):DPI,分辨率和屏幕尺寸

dpi,分辨率,dp,sp,px这些东西,相信每个android开发者都不陌生,但是这几者之间的关系,能够说得清清楚楚的,我相信并不多。 看完这篇博客,希望能让你彻彻底底的理解它们。一. DPI 首先说dpi,废话是:每英寸的像素点数(Dots Per Inch,其实这么说不够严谨,真正的”每英寸像素点数”,其实是PPI,Pixels Per Inch,而DPI实际上是每英寸打印点数,是一个印刷

2015-12-09 19:52:07 8200

转载 Protocol Buffers介绍

最近在跟第三方合作的时候,用到了protocol buffers,查了一下,发现网上对于这个的文章已经不少了,借花献佛,也自己学习一下。今天来介绍一下“Protocol Buffers”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干脆单独开一个帖子算了。  ★protobuf是

2015-12-09 17:35:14 428

原创 DrawerLayout取消阴影

DrawerLayout在滑出的时候,是默认有一个阴影的,把原来的layout给半透明的盖住。其实这个阴影是可以去掉的,方法也很简单,把阴影颜色设置成透明:mDrawerLayout.setScrimColor(Color.TRANSPARENT);

2015-12-02 11:47:31 3438 3

原创 android视频直播-直播流程概述

最近都在忙着做视频直播的项目,有一个月没有写博客了,现在直播流程终于通了,写个博客总结一下。首先,如果你要实现的是摄像头直播,那其实很简单,因为已经有很多第三方支持摄像头直播了,你所要做的,无非就是接入他们的sdk。 或者你也可以去github上找一套摄像头直播的代码。因为我们项目要实现的是手机录屏的直播,所以跟摄像头直播有些区别,无法直接使用第三方的sdk。 ps:关于手机录屏的内容,请看我的

2015-11-16 12:01:09 6261 3

原创 android 前置service

在android开发中,如何写一个不被干掉的service一直是一个大问题。 尤其是现在这么多一键加速的app,分分钟让你的服务被干掉。总结一下,从2.x版本一路走来,大家也研究了很多保护service不被干掉的方法: 1. 最基本的,不要用bindService去开启一个服务,而是用startService,因为前者会将activity与service绑定到一起,当你的activity挂掉时,

2015-10-14 11:28:46 959

原创 The same input jar ***.jar is specified twice

最近在开发一个android项目的时候,遇到一个问题。 用android studio编译没有错,直接真机调试也没有错,用发布环境Jenkins打包也没有错。 但是我本地环境打包就会报错,提示:The same input jar ukphotoview.jar is specified twice以为是gradle版本的问题,折腾半天也没有发现有什么问题。 干脆就直接搜索关键字ukphoto

2015-09-29 15:42:53 748

原创 EventBus的使用

EventBus用了好久了,一直没有整理一下。 我们往简单里说,EventBus的出现,让我们在大部分情况下,不需要使用broadcast来在不同的activity,fragment,甚至是adapter(我知道你们经常纠结adapter和activity的交互!)之间交互了。 当然,如果你要获取系统广播什么的,还是需要broadcast的。 而且EventBus的回调很丰富,你甚至可以指定你

2015-09-28 18:19:30 1206

原创 会议室开发项目的总结

本来打算在这个项目v1.0发布的时候,再来写这篇回顾,也算是对这个项目的一个交代。但是数据问题迟迟没有搞定,再拖我怕我自己都忘了,所以就尽快把这个写完吧。在整个项目开发和管理过程中,我们尝试了跟之前不同的一些方式,收获了不少经验,也得到了很多教训。 在项目筹备阶段,我们想采取集中开发的方式,把前后端开发,产品集中到一个会议室,一起讨论需求,确认需求,开发,以至联调。在项目过程中,我陆陆续续纪录了一

2015-09-21 17:24:12 1371

EnhancerRedis.java

EnhancerRedis类,实现了对JedisPool的封装,以及通过cglib来实现AOP,以自动释放JedisPool的实例

2017-12-14

android5.0屏幕录制

5.0下,使用MediaProjection进行屏幕录制的demo。 我比较懒,里面只放了实现的java类和xml,工程请自行创建。 另外这个demo源自android sample,我基本上没有改动,所以它其实只能算是屏幕捕捉,就是把屏幕内容在一个surfaceview里面显示出来,并没有把屏幕内容输出到视频文件中。 如果想看输出到视频文件的屏幕录制,请关注我的博客

2015-09-17

AudioRecorder

android音频录制的线程类,可以通过如下方式直接调用: AudioRecorder audioRecorder = new AudioRecorder(audioPath); audioRecorder.start();

2015-09-10

空空如也

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

TA关注的人

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