- 博客(38)
- 收藏
- 关注
原创 Jetpack系列之DataBinding原理解析
定义数据绑定,是Google官方发布的一个框架,是mvvm在android上的一种实现,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰,可以直接绑定数据到xml中,并实现自动刷新。databinding能够省去findviewbyId,大量减少activity的代码,数据能够单向或双向绑定到layout文件中,有助于防止内存泄漏,而且能自动进行空检测以避免空指针异常。用法创建一个User类import androidx.databinding.BaseObservable;import andro
2021-02-18 23:34:55
505
原创 Android之Handler原理解析
Handler定义Handler 是一个消息分发对象,是Android给我们提供用来更新UI的一套机制。简单来说,子线程是不可以直接更新Android的UI布局的,子线程要更新UI布局的话,就得经过Handler机制和UI线程通讯以完成UI布局的更新。Handler简单使用1、首先定义一个静态内部类public class MainActivity extends AppCompatActivity { //其他代码已经省略... private static class MyHandler
2020-11-29 18:00:00
356
原创 单例模式详解
定义单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)常用的单例模式有以下4种懒汉单例模式(多线程不安全)饿汉单例模式(多线程安全)静态内部类单例模式(多线程安全)双检索单例模式(DCL)(多线程安全)懒汉单例模式public class SingleInstance { private SingleInstance(){} private static
2020-11-29 16:37:03
314
原创 java之线程池知识整理
开发过程中进程要用线程池,今天就好好整理一下java中线程池的知识。定义线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程
2020-11-25 22:05:15
135
原创 AsyncTask的使用及其原理解析
AsyncTask是啥?AsyncTask是Android的一种轻量级的异步任务类,从实现来说,AsyncTask封装了线程池和Handler。它可以在线程池中执行后台任务,把执行的进度和结果传递给主线程并在主线程中更新UI,通过AsyncTask可以更加方便的执行后台任务以及在主线程访问UI,但他不适合进行特别耗时的后台任务。AsyncTask的简单使用public class MainActivity extends AppCompatActivity { private MyAsyncTa
2020-11-25 20:19:44
649
原创 jdk1.8之ConcurrentHashMap源码解析
说到ConcurrentHashMap,就会很自然地想到HashTable。有了HashTable为什么还需要ConcurrentHashMap呢?原来虽然HashTable是多线程安全的,但是因为HashTable实现多线程的原理是通过给每一个put、get等函数都加上synchronized关键字。也就是说。同一个时刻,只能有一个线程去操作HashTable,另外一个想要并发操作HashTable的线程只能等待锁释放后才能操作线程,可见HashTable的效率十分低。为了解决HashTable这个低效
2020-11-22 00:34:24
632
1
原创 OkHttp源码解读
简单使用使用okhtt发送一个网络请求是十分的方便的OkHttpClient okHttpClient = new OkHttpClient();Request request = new Request.Builder().url("").build();//建造者设计模式Call call = okHttpClient.newCall(request);call.enqueue(new Callback() { @Override public void onFailure(
2020-11-21 14:40:10
240
原创 java锁ReentrantLock原理解析
ReentrantLock起源其实之前刚学习ReentrantLock的时候就觉得很奇怪,为什么有了synchronize却还需要ReentrantLock呢?原来,在synchronize在jdk1.6以前都是一把重量级锁(需要调用系统函数实现的锁,比较耗费系统资源),为了能够使得锁更加轻量级,所以出现了ReentrantLock。(jdk1.5起才有ReentrantLock)用法ReentrantLock r = new ReentrantLock();//默认是非公平锁//创建公平锁:Re
2020-11-19 11:04:04
356
2
原创 CAS算法
cas定义cas是一种能让线程不需要通过阻塞就能够避免多线程安全问题的一种算法,也是乐观锁的技术。它可以不使用锁而保证多线程安全。所以cas也是一种无锁算法。CAS的全称是compare and swap(比较并且交换)。其实cas算法实现过程比较简单,就是维护了3个变量:当前内存值V、旧的预期值A、即将更新的值B。通过while循环不断获取当前内存中的数值V,如果V等于A,就把V赋值为B;整个比较并交换的操作是原子操作。while(V!=A){}V=B;cas存在问题1、ABA问题ABA
2020-11-18 22:33:35
7131
2
原创 jdk1.8之HashMap底层原理
通俗概括可以通俗地理解HashMap是一个存储元素为链表的数组。首先,用户调用put(key,value)方法存储一对键值对的时候。会先调用key.hash()获取key的哈希值,通过这个哈希值确定这对键值对应该存储在数组中的位置,如果这个位置上已经存储有元素了,就说明发生了哈希冲突了。这时候就是通过将新的键值对放在旧的键值对后面,形成链表。如果链表过长的话,会装换成红黑树以便提高元素的查找效率。同时,hashmap的扩容因子是0.75,初始容量是16,就是当该hashmap中的元素总数大于 现容量x扩
2020-11-18 22:05:17
331
原创 mysql8.0.15 安装教程(Windows平台)
1,下载mysql-8.0.15-winx64.zip,地址是https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.15-winx64.zip2,解压,将D:\mysql-8.0.15-winx64\bin加入到环境变量中3,在D:\mysql-8.0.15-winx64新建my.ini这个文本文件,其中内容如下[mysqld...
2020-05-27 14:26:45
6078
15
原创 Kmeans算法(无监督学习、聚类算法)
算法思想如果你想把多个样本自动学习后分成k类,就可以使用k-means算法。首先随机取里面的k个点作为初始中心点,每个点离哪个中心点距离最近就属于哪一个分类,然后再根据同一类的点求均值得出新的中心点。以上步骤不断迭代到中心点的位置不变或者次数达到某个阈值,算法停止。代码import numpy as np#x是数据集,k是种类,maxIt最多循环次数def kmeans(X, k, m...
2019-07-12 13:37:18
550
原创 逻辑回归(非线性回归)
逻辑回归是一种分类算法,用于2元分类两种情况,也可以使用‘一对余’的思想来实现多元分类sigmoid function、logistic functionsigmoid function、logistic function都是同一种函数,如下:y=11+e−xy=\dfrac{1}{1+e^{-x}}y=1+e−x1函数值范围在(0,1),图像如下:假设函数hθ(x)=11+e−F...
2019-06-20 20:01:20
1859
原创 多元线性回归
当变量中有分类型的变量的时候,需要将分类型的变量转换成数值型的变量。例如:比如某衣服有一个颜色特征,特征值为红、绿、蓝三种颜色,该特征为分类型特征,需要把它转化成数值型特征,则把这个衣服颜色需要分为三个特征,分别是红色、绿色、蓝色,则红色衣服对应的特征值为1,0,0;绿色衣服对应的特征值为0,1,0;蓝色衣服对应的特征值为0,0,1。代码简单例子from numpy import gen...
2019-06-18 23:58:15
259
原创 简单线性回归(Simple Linear Regression)
简单线性回归:有且仅有一个自变量x,一个因变量y,x、y之间有线性关系,并且y是连续型变量。假设方程为:y=b0+b1xy=b_0+b_1xy=b0+b1x假设有n个样本(即有n个x,n个y)算法步骤:求出x‾\overline{x}xx‾=1n∑i=1nxi\overline{x}=\dfrac{1}{n}\sum_{i=1}^nx_ix=n1i=1∑nxi求出y‾\o...
2019-06-18 20:43:42
853
原创 神经网络算法
正向传播比较简单,为了更好理解,直接举例子:X4=W14∗X1+W24∗X2+W34∗X3+B4X_4=W_{14}*X_1+W_{24}*X_2+W_{34}*X_3+B_4X4=W14∗X1+W24∗X2+W34∗X3+B4X5=W15∗X1+W25∗X2+W35∗X3+B5X_5=W_{15}*X_1+W_{25}*X_2+W_{35}*X_3+B_5X5=W15∗...
2019-06-18 17:15:50
2624
原创 Java Web报错:getOutputStream() has already been called for this response解决方案
今天做了个导出excel表的功能。大概代码如下:ouputStream = response.getOutputStream(); wb.write(ouputStream); ouputStream.flush(); ouputStream.close(); 发现报错getOutputStream() has already been called for this res...
2019-06-18 09:40:43
2241
2
原创 SVM(支持向量机)
分类监督学习、分类问题算法原理当样本线性可分的时候,寻找能切分样本并且最大间距的一个直线、平面或者超平面。当样本非线性可分的时候,通过核函数映射到高维空间种,让样本线性可分。代码实现样本线性可分的情况:from sklearn import svmx=[[2,0],[1,1],[2,3]]#样本特征y=[0,0,1]#样本标签clf = svm.SVC(kernel = "li...
2019-06-05 20:14:27
296
原创 KNN(最邻近算法)
分类属于监督学习、分类算法算法原理通过预测点计算距离训练样本点之间的距离,获取前k个最近的距离的训练样本点,通过该k个训练样本点所属分类投票来决定该预测点的种类(k一般取值为奇数)。(距离衡量可以为欧式距离、曼哈顿距离等等,具体看实际情况而定)代码实现调用库函数版:from sklearn import neighborsfrom sklearn import datasets#得...
2019-06-02 23:43:50
516
原创 ID3(决策树算法)
python代码的实现如下:from sklearn.feature_extraction import DictVectorizerimport csvfrom sklearn import preprocessingfrom sklearn import treefrom sklearn.externals.six import StringIOallElectronicsDat...
2019-06-02 19:26:14
1265
1
原创 mybatis报错:Result Maps collection already contains value for model.dao.UserMapper.BaseResultMap
数据库:8.0.11数据库驱动包为:mysql-connector-java-8.0.11.jar使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件后,把文件导入到了javaweb工程中,然后工程报错:Result Maps collection already contains value for model.dao.UserMapper.BaseRe...
2019-05-28 23:39:10
538
原创 netty笔记---粘包、拆包问题解决方案
目录何为粘包、拆包粘包例子服务端代码客户端代码运行结果客户端截图服务端截图解决方案何为粘包、拆包粘包:客户端原本是发了10条数据给服务器端的,但是tcp是基于数据流传输数据,导致服务器端收到的数据条数可能少于10条,这就是粘包现象。拆包:客户端原本是发了1条数据给服务器端的,但是tcp是基于数据流传输数据,导致服务器端收到的数据条数可能大于1条,这就是拆包现象。粘包例子服务端代码pac...
2019-04-25 17:54:38
419
原创 netty笔记---各个组件的理解
目录一:EventLoopGroup二:一:EventLoopGroup一个EventLoopGroup当中会包含一个或多个EventLoop。一个EventLoop在它的整个生命周期当中都只会与唯一一个Thread进行绑定。所有由EventLoop所处理的各种I/O事件都将在它所关联的那个Thread上进行处理。一个Channel在它的整个生命周期中只会注册在一个EventLoop上...
2019-04-09 17:35:26
815
原创 netty笔记---http服务器、tcp服务器、心跳机制、WebSocket服务器
目录导入netty(graddle):一:搭建http服务器:HttpSever类HttpServerHandler类HttpServerInitializer类二:tcp服务器:TcpServer类TcpServerInitializer类:TcpServerHandler类:TcpClient类:TcpClientInitializer类:TcpClientHandler类:三:基于tcp服务...
2019-04-06 11:31:35
1056
原创 idea报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
把myecipse中的项目搬迁到idea中的时候,发现报错报错信息是:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)报错原因:idea构建gradle项目时不编译src/main/java目录下写的mapper.xml文件。解决步骤:1,将dao包中的*mapper....
2019-03-09 16:15:11
447
原创 mysql8.0.11 忘记密码解决方案
1,使用管理员身份打开dos命令窗口(注意,这里一定要使用管理员身份打开dos命令窗口)2,使用以下命令关闭mysql服务net stop mysql3,使用以下命令开启mysql的无密登陆服务mysqld --console --skip-grant-tables --shared-memory4,上面已经打开的dos窗口不需要关闭,直接最小化即可5,打开另外一个do...
2019-02-18 12:39:53
974
原创 微信小程序开发入坑笔记
2019.02.06wx.navigateTo/wx.redirectTo 无效在button标签的bindtap绑定按钮的事件中使用wx.navigateTo/wx.redirectTo无效,因为跳转到的页面中有tabbar,所以需要换成wx.switchTab。wx.navigateTo/wx.redirectTo只能使用在非tabbar的页面中。...
2019-02-06 23:34:42
238
原创 hadoop2.8.5集群搭建(HA模式)
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA、YARN等。最新的hadoop-2.8.5又增加了YARN HA注意:apache提供的hadoop-2.8.5的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.8.5就需要重新在64操作系统上重新编译一,前期准备:1.修改Linux主机名...
2018-12-06 20:24:57
1376
1
原创 Hapdoop安装配置(伪分布运行模式)
步骤:1,vim hadoop-2.8.5/etc/hadoop/hadoop-env.sh:export JAVA_HOME=/usr/local/java/jdk1.8.0_1712,vim hadoop-2.8.5/etc/hadoop/core-site.xml:<configuration><!-- 设置主结点的uri--> ...
2018-11-04 10:32:43
877
原创 Tensorflow学习笔记
注意1:输出层不需要使用激活函数2:tf.nn.softmax用于输出层,用于将结果概率化代价函数:1:二次代价函数loss = tf.reduce_mean(tf.square(prediction-y))2:对数释然函数,该函数于softmax搭配使用tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(lab...
2018-10-26 22:52:55
245
原创 SpringMvc的post方式中文乱码解决方案
在web.xml中的<web-app>中加入 <!-- 配置Post请求乱码 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.Characte...
2018-08-08 21:39:41
394
原创 tomcat的add/remove deployments列表中没有maven项目的解决方案
今天在myeclipse 2017 CI这个IDE上new了一个maven项目然后想通过右键tomcat,点击add/remove deployments,想把刚刚创建的maven项目demo_maven发布到tomcat中,结果发现tomcat的add/remove deployments列表中没有刚刚创建的maven项目demo_maven解决步骤:一、右键刚刚创建的m...
2018-08-07 16:26:38
3436
原创 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
(转自:http://www.cnblogs.com/lichenwei/p/4145696.html)Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。1、相关文件关于Mybatis-Generator的下载可以到这个地址:https://gith...
2018-07-19 11:44:19
162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人