- 浏览: 39600 次
最新评论
文章列表
JVM内存模型
名称特征作用配置参数异常程序计数器占用内存小,线程私有,
生命周期与线程相同大致为字节码行号指示器无无虚拟机栈线程私有,生命周期与线程相同,使用连续的内存空间Java 方法执行的内存模型,存储局部 ...
1.前言
由于最近在做ios与android端需要做amr至mp3的转换,在网上搜了下资料,基本都是用ffmpeg做音视频类转换
2.ffmpeg下载安装
2.1、下载ffmpeg。
下载网址:http://www.ffmpeg.org/download.html
2.2、解压缩
tar -zxvf ffmpeg-2.0.1.tar.gz
2.3、编辑profile文件:
vi /etc/profile
在文件末尾加上两句话:
export FFMPEG_HOME=/usr/lo ...
1.did not match any file(s) known to git
原因:window平台下由于文件不区分大小写,修改大小写之后git提交出错。
解决办法:随便修改个名,提交。然后在修改为想要的名字,提交就可以了
1.静态方法
无论是静态方法还是实例方法,在内存中都只有一份代码,也就是只占用一份内存空间
方法属于一个程序块,只有当别人调用它时才会调到内存里面去执行,也就是说当前有多少个线程在执行就有多少组方法块里的局部变量
2.静态变量
只存在一份,多个线程公用一份,一个线程修改就会影响其他线程
3.结论
静态方法是使用得当是线程安全的,因为每次调用会创建一份私有块,如果是静态变量是的的话就要加锁挥着其他处理。
4.实例
class User{
private int id;
private String name;
public int g ...
1.ThreadLocal简介
早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本.
最常见的ThreadLocal使用场景为 用来解决 数据库连接、Session管理等.
2.部分源码
ThreadLocal中存在ThreadLocalMap 以不同的线程key创建不同的副本 ...
1.CountDownLatch简介
CountDownLatch是一个同步辅助类,完成指定线程数量之前,同步等待其他线程完成,个人感觉和计数器差不多。
2.CountDownLatch示例
import java.util.concurrent.CountDownLatch;
/**
* Created by wuhao on 15-12-23.
*/
public class CountDownLatchDemo {
public static void main(String[] args) {
//计数器数值为3,工作线程数
...
IMAP协议RFC3501中文文档 .
分类: 各类协议标准文档 2011-05-18 09:48 1405人阅读 评论(0) 收藏 举报
因特网邮件访问协议,版本4rev1(IMAP4rev1)允许一个客户端访问和操作在一个服务器上的电子邮件。IMAP4rev1允许,以一种功能上等效于本地文件夹的方式,操作邮箱(远程邮件文件夹)。IMAP4rev1也提供这样一个功能,一个离线客户端与服务器异步(交互)。
IMAP4rev1包括以下操作:创建、删除、及重命名邮箱,检查新邮件,永久删除邮件,设置和清除标记,RFC2822及RFC2045解析,检索,及选择性的获取邮件属性,文本,及其中的一部 ...
TCP-TCP连接3/4次握手
- 博客分类:
- 项目开发
TCP建立连接
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接:
(1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2) 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
(3) 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完 ...
Lambda表达式实现设计模式:命令模式
- 博客分类:
- java
如何在使用Java 8 Lambda表达式的函数式编程方式时实现命令设计模式。命令模式的目标是将请求封装成一个对象,从对客户端的不同类型请求,例如队列或日志请求参数化,并提供相应的操作。命令模式是一种通用编程方式,该方式基于运行时决策顺序来执行方法。模式的参与者如下:
命令 :声明用于执行操作的接口。
实体命令 :定义接收者对象和动作的绑定。
客户端 :创建实体命令实例并设置它的接收者。
调用者:控制命令来执行请求。
接收者 :实际完成工作。
这些参与者之间的关系描述如下:
让我们看一个命令模式的具体例子,了解它是如何转换成lambda表达式的。假定我们有一个文件系统工具,所有动作都依赖 ...
一.UBUNTU安装
Ubuntu上,打开终端,然后键入以下命令:
1.安装Redis
$sudo apt-get update
$sudo apt-get install redis-server
2.启动Redis
$redis-server
3.检查Redis是否在工作
$redis-cli
redis 127.0.0.1:6379>
4.检测redis
redis 127.0.0.1:6379> ping
PONG
说明安装Redis OK
二.LINUX通用安装
1.指定安装目录/usr/local/redis
mkdir /usr/local/re ...
mysql 错误汇总
- 博客分类:
- java
1.Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
这种问题需要强行重新修改密码,方法如下:
停止mysql服务
service mysql(d) stop
启动mysqld_safe
/usr/bin/mysqld_safe --skip-grant-tables
设置mysql用户密码
[root@localhost ~]# mysql
mysql>use mysql
mysql>update user set password=password("123456") ...
大日志文件查找日志
split命令对日志文件进行分割
split -1000 xxx.log newlog
然后
组合查讯警告及其他信息
cat start.log | grep WARNING
正则表达式查讯信息
cat start.log | grep [0-9][0-9]
-参考:
1.tail (用于显示指定文件末尾内容)
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f ...
Base64 编解码 工具类
- 博客分类:
- java
1.工具类:
import java.io.UnsupportedEncodingException;
import java.util.Base64;
public class Base64Util {
/**
* base64 编码
*
* @param str
* @return
*/
public static String encoder(String str){
final Base64.Encoder encoder = Base64.getEncoder();
String strEncoder = ...
备注:httpclient4.5 发送MultiPart/Param/String
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.ap ...