Java代码冗余
在一段程序中同时实现对数组元素的升序和降序排序,升序和降序只要改个""就可以,其它代码相同,想问一下可以省去代码相同的部分吗?能的话怎么写?(冒泡排序和选择排序都有这个问题,图中用的是选择排序)
Android Gson使用详解
一、Gson的基本用法1.1、Gson对象在进行序列化与反序列操作前,需要先实例化一个 com.google.gson.Gson 对象,获取Gson对象的方法有两种 //通过构造函数来获取 Gson gson = new Gson(); //通过 GsonBuilder 来获取,可以进行多项特殊配置 Gson gson = new GsonB
TCP、UDP、HTTP、SOCKET之间的区别与联系
IP:网络层协议;TCP和UDP:传输层协议;HTTP:应用层协议;SOCKET:TCP/IP网络的API。TCP/IP代表传输控制协议/网际协议,指的是一系列协议。TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
Python3 加密解密技术详解
Python3的标准库中没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上。我们将学习如何使用这两个库,来加密和解密字符串。哈希如果需要用到安全哈希算法或是消息摘要算法,那么你可以使用标准库中的hashlib模块。这个模块包含了符合FIPS(美国联邦信息处理标准)的安全哈希算法,包括SHA
Android WebView 上传文件支持全解析
默认情况下,使用Android的WebView是不能够支持上传文件的。而这个,也是在我们的前端工程师告知之后才了解的。因为Android的每个版本WebView的实现有差异,因此需要对不同版本去适配。花了一点时间,参考别人的代码,这个问题已经解决,这里把我踩过的坑分享出来。主要思路是重写WebChromeClient,然后在WebViewActivity中接收选择到的文件Uri,传给页面去上传就可
Android 中 SQLite 性能优化
数据库是应用开发中常用的技术,在Android应用中也不例外。Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查。纵使操作简单,也有可能出现查找数据缓慢,插入数据耗时等情况,如果出现了这种问题,我们就需要考虑对数据库操作进行优化了。本文将介绍一些实用的数据库优化操作,希望可以帮助大家更好地在开发过程中使用数据库。建立索引很多时候,我们都听说,想要查找快速就建
Android自定义控件,如何使view动起来?
摘要Android中的很多控件都有滑动功能,但是很多时候原生控件满足不了需求时,就需要自定义控件,那么如何能让控件滑动起来呢?本文主要总结几种可以使控件滑动起来的方法http://www.apkbus.com/blog-864937-78214.html
SpringBoot+Redis实现token鉴权的例子
实现结果本着结果导向的原则,先说一下这个例子最后实现的效果是啥:用户登录成功后后台会返回一个token给调用者,同时我们自定义了@AuthToken注解,被该注解标注的api进行请求的时候都需要进行token效验,效验通过才可以正常访问,实现接口级的鉴权控制。同时token具有生命周期,在用户持续一段时间不进行操作的话,token则会过期,用户一直操作的话,则不会过期。适合人群新手学习或者刚开始尝
【LEETCODE】模拟面试-39. Combination Sum
和subset区别:规定了子集的sum==target注意,这里传递的起始位置是i,而不是position+1,butwhy???helper(res, path, candidate, sum - candidate[i], i);code区别:notice:需要sortif条件里sum>=candidate[i]Arrays.sort(candidate); //需要sorthelper
MySQL中临时表的基本创建与使用教程
当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询。创建临时表很容易,给正常的CREATETABLE语句加上TEMPORARY关键字:?1234CREATETEMPORARYTABLEtmp_table( nameVARCHAR(10)NOTNULL,
将MySQL的临时目录建立在内存中的教程
MySQL系统会在内存(MEMORY)和磁盘(MyISAM)中建立临时表,如何能知道在磁盘中建立了多少临时表以及在内存中建立多少临时表呢?你可以通过下面命令获知: ?1234567mysql>SHOWGLOBALSTATUSLIKE'Created_tmp%tables';+-------------------------+----------+|Variable_name |Valu
使用python脚本实现mysql误操作的flushback
1.简介在oracle数据库中,当一个误操作被提交后,我们可以通过oracle提供的闪回功能将表闪回至误操作之前的状态。mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是利用全备+二进制日志前滚进行恢复。今天给大家介绍一种使用python脚本在mysql中实现类似oracle中flushbacktable的闪回功能,相比于传统的全备+增备,本方法更为快速、简单。2.闪回
MySQL数据库查看数据表占用空间大小和记录数的方法
如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的information_schema数据库。在该库中有一个TABLES表,这个表主要字段分别是:TABLE_SCHEMA:数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录数DATA_LENGTH:数据大小INDEX_LENGTH:索引大小其他字段请参考MySQL的手册,这
浅析一个MYSQL语法(在查询中使用count)的兼容性问题
简单来说就是在查询中使用count以及更多字段复制代码代码如下:selectcount(id),id,namefromtable 很尴尬的,我的环境是5.5的,这个是能获取到结果的,但是运行到服务器就不行了好吧,报了一个错误复制代码代码如下:#1140-MixingofGROUPcolumns(MIN(),MAX(),COUNT(),...)withnoGROUPcolumnsisil
CSS 绝对定位和相对定位我的理解
绝对定位不占任何位置的定位(带有绝对定位的div盒子直接不保留之前的位置移动)相对定位占位置的定位(举例:虽然带有相对定位的div模块移动了,但是这个div之前的占的位置还在的)绝对定位的div盒子的父亲必须要有一个定位,不然绝对定位就直接以浏览器为基准开始走动举个例子没给最外面的DIV定位,给最里面DIV一个绝对定位,发现这个小DIV是沿着浏览器边缘走动的.diva {width: 500px;
Java CAS 原理分析
1.简介CAS全称是compareandswap,是一种用于在多线程环境下实现同步功能的机制。CAS操作包含三个操作数--内存位置、预期数值和新值。CAS的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。在Java中,Java并没有直接实现CAS,CAS相关的实现是通过C++内联汇编的形式实现的。Java代码需通过JNI才能调用。关于实
从零开始打造一个Android 3D立体旋转容器
原文链接1.概述回到正题,这次带来的效果,是一个Android 的3D立体旋转的效果。当然灵感的来源,来自早些时间微博上看到的效果图。非常酷有木有!作为程序猿我当然要把它加入我的下一个项目中啦!原效果我们实现的效果:(为了更加可定制化,我在原图基础上新增了新的效果)可以快速滚动,并且无限循环这个是对一些参数的进行设定对图片的包裹效果因为本身继承自ViewGroup,所以基本控件都是可以包裹的htt
真正掌握vuex的使用方法(六)
下面咱们来将切换的案例改为vuex来写!首先需要在src目录下,新建一个store文件夹,然后在该文件夹内创建一个store.js文件import Vue from 'vue';//引用vueimport Vuex from 'vuex';//引用vuexVue.use(Vuex);//使用vuexconst state={ tagList:[],//用于存放与切换相关的数据};const
Win10下的 Anaconda的安装,Navigator配置虚拟环境
阅读数:155首先我们先从Anaconda官网(https://anaconda.org/)上下载对应自己系统版本的Anaconda。因为我的电脑是win10,64位的,https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/condaconfig–setshow_channel_urlsyes 或者通过NAVIGATOR添加镜像 使用更新命
JavaScript原型与原型链分析
原文链接JavaScript没有类的概念,但几乎所有的东西又是基于对象的,同时也能实现继承,这就是js跟其他OOP语言最大的不同之处,这也是js最难理解的一块。下面我来说说我个人的理解。首先从创建对象说起,一般会有下面几种方法:1.创建一个Object实例,然后给它添加属性和方法。var person() = new Object();person.name = 'mikej';person.sa