Posts List

JVM调优之 死锁问题

一般服务端应用都是多线程的程序,它服务于多个请求,程序发生死锁后,死锁的线程处于等待状态(WAITING或TIMED_WAITING),等待状态的线程不占用cpu,消耗的内存也很有限,而表现上可能是请求没法进行,最后超时了。在死锁情况不多的 ...

JVM调优之 高CPU占用问题

CPU占用过高要分情况讨论,是不是业务上在搞活动,突然有大批的流量进来,而且活动结束后cpu占用率就下降了,如果是这种情况其实可以不用太关心,因为请求越多,需要处理的线程数越多,这是正常的现象。 第二种情况,CPU占用率长期过高,这种情况下可 ...

JVM工具使用

本文介绍JVM的常用工具。 jps 用来显示Java进程。 jstack 主要用来做线程堆栈分析,常用来分析CPU和load高的问题,一般步骤如下: 找到java进程的pid ps -ef | grep java 找到Java进程中的占用cpu较高的线程的线程id top –Hp pid java进程的信息d ...

陆奇:如何成为一个优秀的工程师

陆奇出席百度内部Engineering Leadership Talk。作为计算机科学博士及优秀的管理者,他提出的五点要求,对每一位百度工程师都适用。 “我们一定要有一个坚定不移的深刻的理念,相信整个世界终究是为技术所驱动的。” “有没有其他人已经解决这个问题?然后 ...

fastjson库的使用

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 序列化 String jsonString = JSON.toJSONString(obj); 反序列化 VO vo = JSON.parseObject("...", VO.class); 泛型反序列化 import com.alibaba.fastjson.TypeReference; List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {}); 使 ...

MySQL与Spring boot对接

本文整理了下CentOS7下mysql与Spring boot对接的基本配置,Spring boot与Mybatis结合使用。 pom.xml引入依赖 引入连接mysql的必要依赖 mysql-connector-java 引入整合MyBatis的核心依赖 mybatis-spring-boot-starter <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> 搜索mapp ...

CentOS7 安装MySQL

本文整理了下CentOS7下安装mysql的基本配置。 Docker安装 推荐使用Docker方式,非常方便,容易配置。 安装mysql service docker start docker pull mysql:5.7 docker images 运行mysql docker run -itd --name idb -v /root/suninf/datadir:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e TZ=Asia/Shanghai -d mysql:5.7 结束docker容器 docker ps docker stop <containId> docker rm -f <containId> shell进 ...

FFmpeg像素格式YUV与RGB分析

针对视频操作(如实时美颜)的时候,就会遇到处理视频的每一帧图像,图像内容在内存中存放的形式也就是像素格式。 YUV格式介绍 YUV格式有两大类:planar 和 packed 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随 ...

macOS下依赖自动打包脚本

macOS下,应用加载依赖的dylib或Framework需要根据rpath等信息去加载,而链接后默认依赖的路径是机器上的路径(可以通过otool命令查看),不方便打包出去使用。 下面的脚本信息能把应用依赖的dylib等拷贝到相同的输出目录, ...

Homebrew使用

macOS安装开发包和应用工具,常常使用Homebrew来管理,Homebrew是基于ruby开发的、macOS下的自动化包管理器。 homebrew 更新镜像 解决默认配置访问慢的问题,参考: https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ 安装特定版本 在线安装 brew安装好后,可以通过brew search xxx来 ...

FFmpeg时间戳整理

使用FFmpeg库进行音视频处理时,经常需要处理视频时间、编解码的dts/pts时间戳,时间的准确处理对音视频处理至关重要。 time_base 时间基(time_base)是FFmpeg中作为时间单位的概念。不同的音视频封装格式,可以使用不同的time_ba ...

macOS下编译CEF62

CEF是基于chromium的开源项目,让集成chrome的浏览器内核非常方便,而且紧跟升级的节奏,在客户端产品上广泛使用。官网其实已经打了二进制包,可以直接拿来集成。 不过有时候我们还需要自己来打包,最常见的几个原因: 需要集成音视频能力(默 ...

Java Object类的方法

本文整理一些Java开发中关于Object类型的方法的使用。 equals方法 equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this == obj); } 很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。 但是我们知道,String 、Math ...

Java对象锁synchronized与Lock类

本文通过一个例子来解释两种锁机制:实现ABC循环打印3次“ABCABCABC”,要求使用3个线程,分别打印A/B/C,通过锁同步机制来控制流程 使用对象锁 synchronized锁的是括号里的对象 public class Main { private static Boolean flagA = true; private static Boolean flagB = false; private static Boolean flagC = false; public ...

Java ArrayList

ArrayList是最常用的随机访问动态数组,与C++的std::vector类似。 类型声明 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { // ... } public interface List<E> extends Collection<E> { // ... } public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); boolean equals(Object o); int hashCode(); Object[] toArray(); <T> T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); void clear(); boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean removeIf(Predicate<? super E> filter); boolean ...