决定人生的是思维方式,而不是你掌握的知识
我们的思维模式会逐渐固化,要想有所改变,改变思维模式才是唯一有效的办法。 已故历史学家Will Durant和Ariel Durant花了四十年的时间研究、编纂和撰写西方文明史。他们几十年如一日的成果《The Complete Story of Civilization》字数高达几百万,总页数超过8800页,一共有11本书。 在完成这样一项艰巨的任务后,他们 ...
It’s not what you know, it’s how you think
我们的思维模式会逐渐固化,要想有所改变,改变思维模式才是唯一有效的办法。 已故历史学家Will Durant和Ariel Durant花了四十年的时间研究、编纂和撰写西方文明史。他们几十年如一日的成果《The Complete Story of Civilization》字数高达几百万,总页数超过8800页,一共有11本书。 在完成这样一项艰巨的任务后,他们 ...
CLion是JetBrains出品的C++ IDE,工程管理使用cmake。除了本地调试之外,CLion还支持远程调试,本文介绍下基于CLion的远程调试的配置,远程服务器环境是CentOS。 CentOS依赖依赖 # cmake yum install cmake -y # gcc & gdb yum install gcc-c++ -y yum install gdb -y #gdbserver yum install gdb-gdbserver -y 远程设置 基本代码 调试需要本地和远程的代码一致 CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(hello) set(CMAKE_CXX_STANDARD 11) add_executable(hello main.cpp) main.cpp #include ...
一般服务端应用都是多线程的程序,它服务于多个请求,程序发生死锁后,死锁的线程处于等待状态(WAITING或TIMED_WAITING),等待状态的线程不占用cpu,消耗的内存也很有限,而表现上可能是请求没法进行,最后超时了。在死锁情况不多的时候,这种情况不容易被发现。 死锁可以使用jstack工具来查看 jps查看java ...
java会自动收回不再使用的内存,但是不要以为jvm帮我们回收了内存就不会出现内存泄漏。 程序发生内存泄漏后,进程的可用内存会慢慢变少,最后的结果就是抛出OOM错误。发生OOM错误后可能会想到是内存不够大,于是把-Xmx参数调大,然后重启应用。这么做的结果就是,过了一段时间后,OOM依然会出现。最后无法再调大最大堆内存了 ...
CPU占用过高要分情况讨论,是不是业务上在搞活动,突然有大批的流量进来,而且活动结束后cpu占用率就下降了,如果是这种情况其实可以不用太关心,因为请求越多,需要处理的线程数越多,这是正常的现象。 第二种情况,CPU占用率长期过高,这种情况下可能是你的程序存在耗CPU计算的逻辑,也可能循环次数超级多的代码,甚至是出现死循环 ...
本文介绍JVM的常用工具。 jps 用来显示Java进程。 jstack 主要用来做线程堆栈分析,常用来分析CPU和load高的问题,一般步骤如下: 找到java进程的pid ps -ef | grep java 找到Java进程中的占用cpu较高的线程的线程id top –Hp pid java进程的信息dump到本地文件中 命令:jstack -l -m pid > dump.txt jstack线程信息dump内容的 ...
陆奇出席百度内部Engineering Leadership Talk。作为计算机科学博士及优秀的管理者,他提出的五点要求,对每一位百度工程师都适用。 “我们一定要有一个坚定不移的深刻的理念,相信整个世界终究是为技术所驱动的。” “有没有其他人已经解决这个问题?然后你可以把你的时间放在更好的创新上。” “做什么事情一定要做最好,一定要是做业界最强 ...
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>>() {}); 使用@JSONField定制序列化 注解定义 注意:1、若属性是私有的,必须有set* ...
本文整理了下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> 搜索mapper DAO的指定 @MapperScan @SpringBootApplication @MapperScan("net.suninf.dao") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } application.pro ...
本文整理了下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进入容器 docker exec -it idb bash 本机连接 mysql -h localhost -P 3306 --protocol=tcp -u root -p CentOS下直接安装 安装 wget https://dev.mysql.com/get/Downloads/MySQL-4.7/mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar rpm ...
针对视频操作(如实时美颜)的时候,就会遇到处理视频的每一帧图像,图像内容在内存中存放的形式也就是像素格式。 YUV格式介绍 YUV格式有两大类:planar 和 packed 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V;将几个分量分开存,比如YUV420中,data[0]专门存Y ...
macOS下,应用加载依赖的dylib或Framework需要根据rpath等信息去加载,而链接后默认依赖的路径是机器上的路径(可以通过otool命令查看),不方便打包出去使用。 下面的脚本信息能把应用依赖的dylib等拷贝到相同的输出目录,并且使用install_name_tool设置好相应的依赖,输出的目录下可以单独 ...
macOS安装开发包和应用工具,常常使用Homebrew来管理,Homebrew是基于ruby开发的、macOS下的自动化包管理器。 homebrew 更新镜像 解决默认配置访问慢的问题,参考: https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ 安装特定版本 在线安装 brew安装好后,可以通过brew search xxx来查看是否支持包xxx 通过 brew instal xxx 就能快速执行安装 比如,安装最新的ffmpeg只要执 ...
使用FFmpeg库进行音视频处理时,经常需要处理视频时间、编解码的dts/pts时间戳,时间的准确处理对音视频处理至关重要。 time_base 时间基(time_base)是FFmpeg中作为时间单位的概念。不同的音视频封装格式,可以使用不同的time_base。 FFmpeg内部的时间都会基于AV_TIME_BASE作为时间单位,比如A ...
CEF是基于chromium的开源项目,让集成chrome的浏览器内核非常方便,而且紧跟升级的节奏,在客户端产品上广泛使用。官网其实已经打了二进制包,可以直接拿来集成。 不过有时候我们还需要自己来打包,最常见的几个原因: 需要集成音视频能力(默认打包的音视频能力很弱) 有安全漏洞,可以自己简单的集成patch,频繁升级版本不 ...