- 博客(40)
- 资源 (21)
- 收藏
- 关注
原创 git回退到指定的commit
如果项目有多人共同开发,需要注意让其他伙伴把本地代码也回滚到指定版本(通过前面的回退命令),否则会出现已回滚的代码又重新被提交的情况。ps:如果无法强推,可能是分支处于保护状态,先在后台取消该分支保护。1、回退到指定的commit。
2023-07-21 17:12:20
1642
原创 四、ffmpeg移植Android,并写一个demo,另附源码
一、新建一个android项目(1)、新建项目,选择native C++(2)、将编译后的so文件和include文件放到lib目录下如何编译ffmpeg for Android,青查看上一篇:三、Mac编译ffmpeg for Android(3)、编辑CMakeLists.txt...
2021-01-25 12:55:47
735
原创 三、Mac编译ffmpeg for Android
前期准备FFmpeg 4.1.5 版本源码,下载链接:http://ffmpeg.org/download.html NDK ( android-ndk-r17c ),下载链接:https://developer.android.google.cn/ndk/downloads配置修改1、修改 configureffmpeg-4.1.5 根目录,使用 Sublime Text 可打开编辑 configure,找到如下 4 行配置:SLIBNAME_WITH_MAJOR='$(SLIB
2021-01-25 11:28:47
434
原创 二、ffmpeg编译安装-Mac
1、下载 ffmpeg 源代码git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
2021-01-22 19:44:24
435
原创 使用squash把多個 Commit 合併成一個 Commit(git command || sourcetree)
有時候 Commit 的太過「瑣碎」,舉個例子來說:$ git log --oneline27f6ed6 (HEAD -> master) add dog 22bab3e7 add dog 1ca40fc9 add 2 cats1de2076 add cat 2cd82f29 add cat 1382a2a5 add database settingsbb0c9c2 init commit在cd82f29跟1de2076這兩個 Commit 都只有各加一個檔案(分別是...
2020-09-17 11:32:20
3751
原创 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题...
2019-12-11 11:05:30
406
原创 Java 垃圾回收机制(翻译oracle官网)
官网地址:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被...
2019-06-10 14:56:45
418
原创 RedisTemplate geohash实践(网约车场景)
应用场景:移动出行,查找附近司机进行派单package com.tencent.iov.lbsservice.util;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.geo.*;import org.springframework.data.r...
2019-05-05 11:29:06
2796
4
原创 解决redis redistemplate KEY为字符串是多双引号的问题
KEY多双引号的配置: @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSe...
2019-04-29 11:49:21
22995
3
原创 springboot 通过@WebFilter(urlPatterns )配置Filter过滤路径,没有配置/*,输入任何路径都能进过滤器
@Slf4j@Component@ServletComponentScan@WebFilter(urlPatterns = {"/config/*","/driver/*","/order/*","/im/*","/privacy/*","/config/*"}, filterName = "apiFilter")public class SecurityRequestFilter im...
2019-04-25 12:51:33
19722
3
原创 Quartz blocked 线上故障解决
故障描述:线上的job正常跑一段时间后就进入了blocked状态,更新quartz版本仍无法解决故障分析:先说正常获取、触发任务执行的流程:调度器线程执行的时候,首先从 triggers 表获取状态为 WAITING 的将要发射的触发器,然后条件更新状态 TRIGGER_STATE 的值为 ACQUIRED ,更新成功则表示抢占到了,否则可能是被其他调度器抢占。然后插入触发器...
2019-04-22 12:13:00
11627
3
原创 netty之微信-小册总结(二十二)
小册总结Netty 相关的知识点到这里就告一段落了,最后,我们再用专门一节来对我们这本小册做一下总结回顾。1. Netty 是什么?经过我们整个小册的学习,我们可以了解到,Netty 其实可以看做是对 BIO 和 NIO 的封装,并提供良好的 IO 读写相关的 API,另外还提供了非常多的开箱即用的 handler,工具类等等。2. 服务端和客户端启动Netty 提供了两大...
2019-01-24 14:20:25
514
原创 netty之微信-心跳与空闲检测(二十一)
心跳与空闲检测本小节,我们一起探讨最后一个话题:心跳与空闲检测首先,我们来看一下,客户端与服务端之间的网络会存在什么问题?1. 网络问题下图是网络应用程序普遍会遇到的一个问题:连接假死 连接假死的现象是:在某一端(服务端或者客户端)看来,底层的 TCP 连接已经断开了,但是应用程序并没有捕获到,因此会认为这条连接仍然是存在的,从 TCP 层面来说,只有收...
2019-01-24 14:20:15
1176
2
原创 netty之微信-群聊消息的收发及 Netty 性能优化(二十)
群聊消息的收发及 Netty 性能优化通过前面小节的学习,相信大家看到本小节标题就已经知道该如何实现本小节的功能了吧,为了给大家学到更多的知识,在实现了群聊消息收发之后,本小节将带给大家更多的惊喜。开始实现之前,我们还是先来看一下群聊的最终效果。1. 群聊消息最终效果服务端 闪电侠,逆闪,极速先后登录,然后闪电侠拉逆闪,极速和自己加入群聊,下面,我们...
2019-01-23 09:44:37
2854
1
原创 netty之微信-群聊的成员管理(加入与退出,获取成员列表)(十九)
在开始之前,我们依然是先来看一下最终的效果。1. 最终效果服务端 从服务端可以看到,闪电侠、逆闪、极速先后登录到服务器,然后随后,闪电侠创建一个群聊,接下来,萨维塔也登录了。这里,客户端我们只展示闪电侠和萨维塔的控制台界面客户端 - 闪电侠 客户端 - 萨维塔 我们可以看到最终效果是四位用户登录成功之后...
2019-01-23 09:44:27
1680
原创 netty之微信-群聊的发起与通知(十八)
群聊的发起与通知这小节,我们来学习一下如何创建一个群聊,并通知到群聊中的各位成员我们依然是先来看一下最终的效果是什么样的。1. 最终效果服务端 创建群聊的客户端 其他客户端 首先,依然是三位用户依次登录到服务器,分别是闪电侠、极速、萨维塔。 然后,我们在闪电侠的控制台输入 creat...
2019-01-23 09:44:18
1440
原创 netty之微信-客户端互聊原理与实现(十七)
实战:客户端互聊原理与实现之前写过一篇非严肃的微信单聊原理,得到广大网友的一致好评,有很多读者留言问我如何使用 Netty 来具体实现这个逻辑,学完本小节,你会发现其实很简单。在开始本小节之前,我们先来看一下本小节学完之后,单聊的实现的效果是什么样的?1. 最终效果服务端 服务端启动之后,两个客户端陆续登录客户端 1 ...
2019-01-23 09:44:10
2041
1
原创 netty之微信-channelHandler 的生命周期(十五)
channelHandler 的生命周期在前面的小节中,对于 ChannelHandler,我们重点落在了读取数据相关的逻辑,这小节,我们来学习一下 ChannelHandler 的其他回调方法,这些回调方法的执行是有顺序的,而这个执行顺序可以称为 ChannelHandler 的生命周期。ChannelHandler 的生命周期详解这小节,我们还是基于前面小节的代码,我们添加一个...
2019-01-23 09:43:53
2266
4
原创 netty之微信-拆包粘包理论与解决方案(十四)
实战:拆包粘包理论与解决方案本小节我们来学习一下 Netty 里面拆包和粘包的概念,并且如何选择适合我们应用程序的拆包器在开始本小节之前,我们首先来看一个例子,本小节的例子我们选择客户端与服务端双向通信这小节的代码,然后做适当修改拆包粘包例子客户端 FirstClientHandlerpublic class FirstClientHandler extends Ch...
2019-01-23 09:43:46
986
原创 netty之微信-构建客户端与服务端 pipeline(十三)
实战:构建客户端与服务端 pipeline通过上小节的学习,我们已经了解 pipeline 和 channelHandler 的基本概念。本小节,我们使用上一小节的理论知识来重新构建服务端和客户端的 pipeline,把复杂的逻辑从单独的一个 channelHandler 中抽取出来。Netty 内置了很多开箱即用的 ChannelHandler。下面,我们通过学习 Netty 内置的...
2019-01-23 09:43:38
603
原创 netty之微信-pipeline 与 channelHandler(十二)
这一小节,我们将会学习 Netty 里面一大核心组件: Pipeline 与 ChannelHandler上一小节的最后,我们提出一个问题:如何避免 else 泛滥?我们注意到,不管是服务端还是客户端,处理流程大致分为以下几个步骤 我们把这三类逻辑都写在一个类里面,客户端写在 ClientHandler,服务端写在 ServerHandler,如果要做功能的扩展(比...
2019-01-23 09:43:29
564
原创 netty之微信-实现客户端与服务端收发消息(十一)
实战:实现客户端与服务端收发消息这一小节,我们来实现客户端与服务端收发消息,我们要实现的具体功能是:在控制台输入一条消息之后按回车,校验完客户端的登录状态之后,把消息发送到服务端,服务端收到消息之后打印并且向客户端发送一条消息,客户端收到之后打印。收发消息对象首先,我们来定义一下客户端与服务端的收发消息对象,我们把客户端发送至服务端的消息对象定义为 MessageRequestPa...
2019-01-23 09:41:34
1865
1
原创 netty之微信-Netty 实现客户端登录(十)
实战:Netty 实现客户端登录本小节,我们来实现客户端登录到服务端的过程登录流程 从上图中我们可以看到,客户端连接上服务端之后客户端会构建一个登录请求对象,然后通过编码把请求对象编码为 ByteBuf,写到服务端。 服务端接受到 ByteBuf 之后,首先通过解码把 ByteBuf 解码为登录请求响应,然后进行校验。 服务端校验通过之后,构造一个登录响...
2019-01-22 16:58:11
3685
原创 netty之微信-客户端与服务端通信协议编解码(九)
客户端与服务端通信协议编解码在学习了 ByteBuf 的 API 之后,这小节我们来学习如何设计并实现客户端与服务端的通信协议什么是服务端与客户端的通信协议无论是使用 Netty 还是原始的 Socket 编程,基于 TCP 通信的数据包格式均为二进制,协议指的就是客户端与服务端事先商量好的,每一个二进制数据包中每一段字节分别代表什么含义的规则。如下图的一个简单的登录指令 ...
2019-01-22 16:57:01
1415
2
原创 netty之微信-数据传输载体 ByteBuf (八)
数据传输载体 ByteBuf 介绍在前面一小节,我们已经了解到 Netty 里面数据读写是以 ByteBuf 为单位进行交互的,这一小节,我们就来详细剖析一下 ByteBufByteBuf结构首先,我们先来了解一下 ByteBuf 的结构 以上就是一个 ByteBuf 的结构图,从上面这幅图可以看到ByteBuf 是一个字节容器,容器里面的的数据分为三个部分...
2019-01-22 16:55:57
1495
原创 netty之微信-客户端与服务端双向通信(七)
实战:客户端与服务端双向通信在前面两个小节,我们已经学习了服务端启动与客户端启动的流程,熟悉了这两个过程之后,就可以建立服务端与客户端之间的通信了,本小节,我们用一个非常简单的 Demo 来了解一下服务端和客户端是如何来通信的。.handler(new ChannelInitializer<SocketChannel>() { @Override public...
2019-01-22 16:52:31
1144
原创 netty之微信-客户端启动流程(六)
客户端启动流程上一小节,我们已经学习了 Netty 服务端启动的流程,这一小节,我们来学习一下 Netty 客户端的启动流程。源码客户端启动 Demo对于客户端的启动来说,和服务端的启动类似,依然需要线程模型、IO 模型,以及 IO 业务处理逻辑三大参数,下面,我们来看一下客户端启动的标准流程NettyClient.javapublic class NettyClient...
2019-01-22 16:45:52
570
原创 netty之微信-服务端启动流程(五)
服务端启动流程这一小节,我们来学习一下如何使用 Netty 来启动一个服务端应用程序,以下是服务端启动的一个非常精简的 Demo:NettyServer.javapublic class NettyServer { public static void main(String[] args) { NioEventLoopGroup bossGroup = ...
2019-01-22 16:45:00
666
原创 netty之微信-Netty 环境配置(四)
请务必阅读此章节,有疑问请在章节下留言。源码地址:源码本小节介绍一下使用本小册的环境搭建,本小册假设读者本机已经有了 java 编程需要的环境。如果读者本机已经安装过 Maven,Git,Intellij IDEA 环境,建议直接看文末如何使用本小册代码。MavenMaven 是一个基于对象模型来管理项目构建的项目管理工具,通过配置文件 pom.xml 来配置 jar ...
2019-01-22 16:44:18
740
原创 netty之微信-Netty 是什么?(三)
Netty 是什么?在开始了解 Netty 是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的 IO 编程,应该如何来实现?源码IO编程我们简化下场景:客户端每隔两秒发送一个带有时间戳的 "hello world" 给服务端,服务端收到之后打印。为了方便演示,下面例子中,服务端和客户端各一个类,把这两个类拷贝到你的 IDE 中,先后运行 IOSe...
2019-01-22 16:42:31
948
原创 netty之微信-IM简介(二)
微信的聊天又分为单聊和群聊,下面分别来介绍一下。源码单聊流程单聊指的是两个用户之间相互聊天。下面我们来看一下,用户单聊的基本流程 如上图,A 要和 B 聊天,首先 A 和 B 需要与服务器建立连接,然后进行一次登录流程,服务端保存用户标识和 TCP 连接的映射关系 A 发消息给 B,首先需要将带有 B 标识的消息数据包发送到服务器,然后服务器从消息数据包中拿到 B...
2019-01-22 16:41:06
1472
1
原创 netty之微信-效果展示(一)
支持可热拔插的channelHandler ,心跳与空闲检测,源码 1、启动服务端(运行nettyServer的main方法) 2、启动客户端(运行nettyclient的main方法),并输入登录用户名登录,如下图: 3、单聊发送方: 接受方: 4、群聊(1)、发起群聊,创建群client: server:...
2019-01-22 16:27:26
824
原创 为什么选择netty?
为什么选择nettyNetty 是业界最流行的 NIO 框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证,例如 Hadoop 的 RPC 框架 Avro 使用 Netty 作为通信框架。很多其它业界主流的 RPC 和分布式服务框架,也使用Netty 来构建高性能的异步通信能力。Netty 的优点总结如下:API...
2019-01-04 10:48:09
352
原创 git 工具及命令操作
Git BashTortoiseGitIDE插件sourcetreegit工作流程:Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库...
2018-12-29 11:05:48
124
转载 nginx配置:server_name的作用
作用server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。案例修改nginx.confserver { listen 80; server_name www; location / { default_type text/html; content_by_lua ' ...
2018-12-26 15:18:09
12749
原创 经典混合加密系统(java实现)
此理论知识摘自《电子商务安全导论》一书由于网络协议的开放行,数据在网络传输的过程中,难以避免的会出现安全性问题.实际上,在一次信息传送过程中,可以综合利用消息加密、数字信封、散列函数和数字签名实现安全性、完整性、可鉴别性和不可否认.具体过程如下:(1)发送方A ①求明文消息的消息散列值:hA=H'(M); ②发送方用自己的私钥KSA对散列值进行数字签名:h'=EKSA (h...
2018-12-07 00:39:46
2273
3
原创 三、mycat实战之扩容(实操)
扩容是项目投入生产之后,经过一定的数据量的积累,达到一定的量级之后,需要执行的操作。扩容配置下载地址一、 离线扩容(摘自官方)工具目前从 mycat1.6 开始支持。一、准备工作1、mycat 所在环境安装 mysql 客户端程序。2、mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包。3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复。二、扩容...
2018-12-06 14:18:44
3587
原创 二、myca实战之实践
一、配置mycat配置文件目录:mycat/conf最主要的配置文件:server.xml、schema.xml、rule.xml1、server.xml配置跟实例数据库的连接信息,数据库用户名、密码、数据库名称,如下:<user name="root" defaultAccount="true"> <property name="password">...
2018-12-06 14:04:07
403
原创 一、mycat实战之理论
一、了解背景知识(摘自mycat官网)(1)OLTP 和 OLAP在互联网时代,海量数据的存储与访问成为系统设计与使用的瓶颈问题,对于海量数据处理,按照使用场景,主要分为两种类型:联机事务处理(OLTP)和联机分析处理(OLAP)。联机事务处理(OLTP)也称为面向交易的处理系统,其基本特征是原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。联机分析处理(...
2018-12-06 11:49:16
492
apache-ftpserver-1.0.6
2014-09-12
java 摄像头 拍照 程序 JMF
2013-09-14
java 摄像头 拍照 程序 控制电脑摄像头拍照
2013-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人