- 博客(35)
- 收藏
- 关注
原创 使用Docker快速搭建服务器环境
这篇文章也是方便自己记录搭建流程,服务器的购买啥的就不说了,最终目标就是在一个空白的Linux系统上,使用docker运行MySQL、Tomcat+Java、Nginx、Redis 的单机环境,以后方便自己快速的部署服务器。上面用到的部署命令如下,我们也可以用docker compose去编排这几个命令,这样就不用每次都一遍一遍运行了# 部署mysql# 部署redis# 部署tomcat# 部署nginx。
2023-10-26 00:07:13 916 3
原创 拦截器ConnectInterceptor
ConnectInterceptor拦截器ConnectInterceptor拦截器的主要功能是复用连接池里面的连接,创建新的连接,并把读写数据流的对象交由下一个拦截器处理。我们先来看下okhttp几个关键类之间的关系。可以看到OkHttp很多功能类比方代理管理、cookie管理等都是通过构造方式设置进来的,它们的实现方式交由开发者自定义,这样做既能满足高度的自定义性又能使每个类功能职责明确,提供良好的维护性。StreamAllocationstreamAllocation对象承担了连接的大部分
2022-02-21 20:23:10 465
原创 拦截器CacheInterceptor
CacheInterceptor拦截器在说第三个拦截器缓存拦截器之前,我们先了解下http协议的缓存机制是怎么样的缓存规则分为强制缓存和对比缓存两种。http把对于缓存的控制规则都放在头部的几个字段里了。Cache-ControlCache-Control常见的取值有private、public、no-cache、max-age,no-store,默认为privateprivate: 客户端可以缓存public: 客户端和代理服务器都可缓存max-age:
2022-02-08 20:17:28 392
原创 拦截器BridgeInterceptor分析
BridgeInterceptor拦截器在第一个拦截器retryAndFollowUpInterceptor里会调用chain.proceed,拦截链的proceed会继续调用下一个拦截器的intercept方法,也就是BridgeInterceptor,该拦截器的主要作用:检测请求头是否包含http默认的请求头,没有则补全;cookie补全;对响应进行Gzip数据流处理。这个拦截器功能比较简单:@Override public Response intercept(Chain chain) thro
2022-02-08 15:05:56 195
原创 拦截器RetryAndFollowUpInterceptor分析
RetryAndFollowUpInterceptor拦截器前面已经分析,okHttp的线程池里的请求任务的execute方法会构造拦截器链,然后通过index++依次调用chain.proceed方法来调用各种拦截器,不考虑用户自定义的拦截器的话,...
2022-02-08 12:09:27 411
原创 源码分析okHttp基本工作流程
okHttp基本用法关于okHttp基本的用法,这里简单提一下吧。okHttp可以使用同步请求和异步请求两种方式,当然同步请求不能在UI线程里面做,这样会导致app崩溃。同步请求//构造OkHttpClientfinal OkHttpClient client=new OkHttpClient.Builder().build();//构造请求体final Request request=new Request.Builder().url("www.baidu.com").build();ne
2022-02-05 23:56:06 2156
原创 网络传输原理
网络分层模型互联网的本质就是一系列的网络协议,最早由ISO国际组织定义为7层网络参考模型,后面应用于不同的场合,依据功能又划分出4层和5层的tcp/ip模型,其实功能都一样七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。五层划分为:应用层、传输层、网络层、数据链路层、物理层。四层划分为:应用层、传输层、网络层、网络接口层。物理层物理层功能:主要是基于 硬件的物理特性 发送高低电压(电信号),高电压对应数字1,低电压对应数字0,物理特性包含电信号(电缆)、光信号(光缆)、
2022-02-04 21:55:24 5579
原创 Matplotlib库Api整理
画折线import matplotlib.pyplot as pltplt.plot([1,2,3,4],[5,4,2,8])plt.plot([1,2,3,4],[6,5,3,9],marker="o")plt.show()画点plt.plot([1,2,3,4],[5,4,2,8],"o")plt.show()画柱状图#画柱状图data=[20,50,66,89]labels=['A','B','C','D']#指定x轴是1,2,3,4。y轴为数据值plt.bar(n
2021-07-25 22:22:16 295 1
原创 Pandas时间索引的骚操作
当DataFrame的索引为时间对象时,可以很方便的进行数据的筛选。时间范围生成#生成时间范围pd.date_range('2010-01-01','2010-01-08')>>>DatetimeIndex(['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07', '2010-01-08'],
2021-07-20 00:14:41 375 2
原创 Python DataFrame Api整理
DataFrame是提供了很多非常强大的表格管理函数,可以方便的处理表格型数据。DataFrame初始化import pandas as pda=pd.DataFrame({'one':[1,2,3,4],'two':[5,6,7,8]})>>> one two0 1 51 2 62 3 73 4 8
2021-07-19 23:34:11 456
原创 Python Series库Api整理
Series对比numpy,它更像是一个既包含数组又包含字典属性的数据结构,每一行都有各自的key。Series快速初始化import pandas as pd#创建4行的Series,每一行是一个数字,默认索引是0~3pd.Series([1,2,3,4]) >>> 0 1 1 2 2 3 3 4 #创建2行的Series,每一行是一个列表pd.Series([[1,2,3,4],[5,5
2021-07-18 21:39:32 191
原创 Python Numpy库Api整理
Python Numpy库Api整理numpy快速初始化np.array([1,2,3,4,5])np.array([1,2,3],[4,5,6]) #创建二维数组np.arange(15)np.arange(15).reshape(3, 5) #格式化成3行5列的数组List转化为numpy数组list = [i for i in range(0,100)]np.array(list)numpy数组运算a=np.array([1,2,3,4,5])b=np.array
2021-07-18 20:34:02 341
原创 Anaconda使用pyinstaller打包exe程序体积过大
现象使用的是Anaconda进行包管理,由于pyinstaller默认使用系统python环境变量来打包的,因此如果系统使用的python环境安装了太多的包,会导致最终输出的exe程序太大了,达到200多M。解决方案使用anaconda新建一个python环境,命名为ins#新建环境ins,使用python3.6conda create –name ins python=3.6#激活环境conda activate ins#在新的环境中安装脚本需要的各种库,packages自行替换成自己用到
2021-07-18 14:02:32 1944
原创 ubuntu下编译安卓7.0源码
ubuntu下编译安卓7.0源码本文使用的环境如下:1、Ubuntu系统:ubuntu-18.04.5-desktop-amd642、repo:谷歌开发的方便拉安卓源码的工具3、python3环境(python2运行repo会出错)4、java环境:jdk 85、硬件要求:虚拟机需要16G内存,不过网上有8G好像也成功了,内存空间200G6、其他工具下载虚拟机我是在windows 10上运行Ubuntu的,因此安装虚拟机,虚拟机自行安装Ubuntu系统国内下载地址:http://mir
2021-01-21 10:36:28 339
原创 RxJava使用Observable.zip的Iterable参数
Observable.zipzip函数允许你传入多个请求,然后合并出另外的结果传出来,普通的用法就不多说了,网上一堆介绍的然后做项目时有个疑问点,Observable.zip如果传入一个列表,合并列表里的所有请求的时候,请求回来的顺序是未知的,返回回来的数组是否会按传入时的顺序返回回来呢。于是做了以下实验:Integer[] skuSerials={1,2,3,4,5};ArrayList<Observable<Integer>> requestList=new Array
2020-05-29 11:14:25 5126 1
转载 机器视角:长文揭秘图像处理和卷积神经网络架构
本文转自机器之心编译的一篇国外论文,机器之心原文地址引言先坦白地说,有一段时间我无法真正理解深度学习。我查看相关研究论文和文章,感觉深度学习异常复杂。我尝试去理解神经网络及其变体,但依然感到困难。接着有一天,我决定一步一步,从基础开始。我把技术操作的步骤分解开来,并手动执行这些步骤(和计算),直到我理解它们如何工作。这相当费时,且令人紧张,但是结果非凡。现在,我不仅对深度学习有了全面的理解,还在此基础上有了好想法,因为我的基础很扎实。随意地应用神经网络是一回事,理解它是什么以及背后的发生机制是另外
2020-05-19 11:20:40 654
原创 安卓用targetSdk来兼容各个版本
compileSDKversion这个是编译期间你所使用的api版本,一般越高越好,越高表示开发时可以使用的api越新,并且可以避免使用被抛弃的sdk。minSdkVersion这个是支持的最小SDK版本,很好理解,在小于minSdkVersion的手机系统上无法安装targetSdkVersion为兼容而生,使开发的app在各个版本的手机系统上表现一致,如果实际手机系统低于开发时定义...
2020-04-06 19:46:23 3161
原创 Windows TensorFlow环境搭建
Windows TensorFlow环境搭建1、Anaconda以及python环境安装Anaconda是一个帮助统一管理机器上不同python版本的工具,也就是机器上可以有多个python版本,每个python通过Anaconda实现互相独立,互相不打扰。Windows安装anaconda很傻瓜式,就是去官网下载安装包,安装完,把D:\Anaconda\Scripts这个目录配置到系统环境...
2020-03-16 22:02:28 188
原创 canvas.drawBitmap()画出来的bitmap和原bitmap大小不同,有一部分缺失了
造成这个问题的原因就在于安卓系统会根据bitmap的density和当前运行设备的density进行比较,不同会进行缩放。项目里的图片叫 ic_launcher.png,大小是72*72,只有一张,放到了drawable-xhdpi的文件夹里了代码是这样的: val srcBitmap=BitmapFactory.decodeResource(resources,R.drawable...
2018-07-15 16:14:22 9522 1
转载 java注解
文章转载至https://www.cnblogs.com/xdp-gacl/p/3622275.html一、认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注
2017-12-05 10:19:55 138
原创 ScrollView嵌套WebView报Unable to create layer for WebView
java.lang.IllegalStateException: Unable to create layer for WebView at android.os.MessageQueue.nativePollOnce(Native Method)
2017-09-30 16:07:07 5361 1
原创 RecyclerView的ItemAnimator
ItemAnimator用于定义RecylcerView的item加入移除动画。具体的使用方法如下: 1、定义MyItemAnimator继承自SimpleItemAnimator,需要重写的方法主要有: @Override public boolean animateAdd(RecyclerView.ViewHolder holder) { return true;
2017-08-03 19:46:33 653
原创 webview调试
PC端的web可以直接在浏览器上按F12进行网页的调试,点击source可以看到网页的源代码,html页面的body结构最下方一般会有它所引用的js文件,每个js文件里有个主function,相当于main()函数,js文件执行的入口。可以在html页面找到对应的控件的id,相对应的js文件里会有$(id).onClick(),意思是找到id控件,然后添加点击事件,我们可以搜索相应的id控件找到它的
2017-07-27 10:54:24 791
原创 RecyclerView嵌套RecyclerView报ViewHolder类型不匹配错误
代码是这样实现的,最外层布局是一个大的RecyclerView,它里面只有一种类型的子布局,item布局里面有一个RecyclerView,有三种不同的数据集会分别填充到子布局里的RecyclerView中,于是有两种做法,一种是创建三个不同子RecyclerView的Adapter类,分别填充不同类型的数据,一种是创建一个通用的Adapter类,它的内部根据判断填充进来的数据的类型来选择不同类型的
2017-07-25 18:34:16 734 1
原创 startService()和bindService()区别
1、从生命周期来看startService()会调用service的onCreate()、onStartCommand(),调用stopService()后就执行service的onDestroy()bindService()则会调用service的onCreate()、onBind(),调用unBindService()后就执行service的onDestroy()并且当service已经启动之后
2017-07-15 12:17:00 370
转载 Activity启动模式和FLAG、TASKAFFINITY
Activity的任务栈Task以及启动模式与Intent的Flag详解转载至 http://www.jianshu.com/p/c1386015856a什么是任务栈(Task)官方文档是这么解释的任务是指在执行特定作业时与用户交互的一系列 Activity。 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中。其实就是以栈的结构
2017-07-11 20:47:08 461
转载 全局替换安卓应用字体
通过反射替换默认字体App中显示的字体来自于Typeface中的预定义的字体,这种方式是通过改变系统字体样式改变字体。首先需要改变APP的BaseTheme style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> -- Customize your theme here. -
2017-02-22 12:11:02 1192
原创 FFmpeg安卓平台编译
准备的文件1、FFmpeg源代码 2、ubuntu系统或者windows下搭建cygwin交叉编译环境 3、ndk-linux或者ndk-windows版本开始1、解压FFmpeg,ndk 2、进入FFmpeg根目录下 3、修改configure文件: 如果直接按照未修改的配置进行编译,结果编译出来的so文件类似libavcodec.so.55.39.101,版本号位于so之后,Andro
2017-02-13 15:30:07 352
原创 NDK开发
HelloJni工程的搭建在建立NDK工程之前要进行环境的搭建,有以下两个方面需要搭建的:NDK系统环境变量的配置去android developer官网选择NDK下载相应的ndk版本,我选择的是ndk-r9d版本,安装完以后要进行系统环境变量的配置,将ndk的安装目录配置到Path系统环境变量中,配置好之后打开cmd执行ndk-build出现如下画面则配置成功。 eclipse开发环境的配置ec
2017-02-07 22:01:53 224
原创 P2P打洞原理
tcp打洞首先我们明确现在我们有的设备:1、客户端A,网关NAT-A2、客户端B,网关NAT-B3、服务器S这些设备明确之后,就可以介绍TCP打洞的过程:1、首先服务器S开启两个服务监听,一个主连接端口,和一个协助打洞端口2、A通过主连接端口连接服务器S,B通过主连接端口连接服务器S,这个是正常的服务器通信3、当A需要和B进行直接连接时,首先A去连接服务器S
2016-11-16 15:04:00 4881
原创 上传项目到gitOsChina
1、在gitOsChina上创建一个项目2、eclipse(已经安装了egit)项目右键 --> team --> shareProject --> 添加成功后,使用commit和push命令就可以添加上去了3、每次添加都需要输入项目地址(没有设置密码的情况下),需要配置项目下的.git/config文件,配置内容如下:[core]repositoryformatversion =
2016-10-26 14:33:19 363
原创 内网穿透
通过NATAPP进行内网穿透1、首先到 https://natapp.cn/ 网站上下载它的客户端2、下载完之后解压会有个natapp.exe,直接运行就可以将本机局域网ip暴露到外网了,很简单ps:外网域名是定期更换的,可以购买收费版
2016-10-17 15:39:45 437
转载 习惯的力量
作者:陈艾链接:https://www.zhihu.com/question/21368231/answer/90497581来源:知乎著作权归作者所有,转载请联系作者获得授权。很多人觉得自己计划完不成,拖延,生活中养成种种恶习的根源在于自制力不强,以为增强了自制力,一切问题就能迎刃而解——这个想法是错的,自制力并不是解决这些问题的关键。那什么才是呢?诸位稍安勿燥,这个
2016-10-13 17:01:43 1115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人