- 博客(31)
- 收藏
- 关注
原创 如何在循环中删除List集合中的元素
一、首先是最基本的for循环for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i);}remove()方法删除元素后会立刻更新List的size,因此index也发生了变化,会导致漏掉某些元素。解决办法1、在删除某一个元素后直接break,当然这种情况只适合删...
2019-05-30 16:35:09
12743
7
原创 几种求32位数中1的个数的算法
方法一:最简单的循环位运算int count1(int i){ int num=0; while(i!=0) { num += i & 0x01; i >>>= 1; } return num;}时间复杂度是O(n),且n一定是32。方法二:n&(n-1)int co...
2019-05-29 08:45:28
3949
2
原创 form提交的几种方式(采坑记录)
1.在<form></form>中直接加入<button></button>,点击button会自动提交表单,不需要onclick2.在<form></form>中加入 <input type="submit" value="提交">,点击直接提交,并且会提交input中的值。3.在<form>&l...
2019-05-01 22:27:55
345
转载 过滤器与拦截器的区别
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符拦截器,是在面向切面编程的就是在你...
2018-09-15 17:32:11
180
转载 读写锁源码分析(ReentrantReadWriteLock)
为什么需要读写锁?与传统锁不同的是读写锁的规则是可以共享读,但只能一个写,如果场景中往往读远远大于写,读写锁就是为了这种优化而创建出来的一种机制。注意是读远远大于写,一般情况下独占锁的效率低来源于高并发下对临界区的激烈竞争导致线程上下文切换。因此当并发不是很高的情况下,读写锁由于需要额外维护读锁的状态,可能还不如独占锁的效率高。因此需要根据实际情况选择使用。 一个简单的读写锁实现...
2018-08-19 12:17:10
353
转载 volatile和sychronized的区别
一,volatile关键字的可见性要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下:从图中可以看出:①每个线程都有一个自己的本地内存空间--线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作②对该变量操作完后,在某个时间再把变量刷新回主内存因此,就存在内存可见性问题,看一个示例程序:...
2018-08-17 12:11:23
507
1
原创 String、StringBuilder 和StringBuffer
String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。可以看出String类其实是通过char数组来保存字符串的。 “对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象”。StringBuild...
2018-08-16 11:03:55
214
原创 自旋锁、偏向锁、轻量级锁、重量级锁
重量级锁内置锁在Java中被抽象为监视器锁(monitor)。在JDK 1.6之前,监视器锁可以认为直接对应底层操作系统中的互斥量(mutex)。这种同步方式的成本非常高,包括系统调用引起的内核态与用户态切换、线程阻塞造成的线程切换等。因此,后来称这种锁为“重量级锁”。自旋锁首先,内核态与用户态的切换上不容易优化。但通过自旋锁,可以减少线程阻塞造成的线程切换(包括挂起线程和恢复线程)。...
2018-08-15 11:36:13
352
转载 建造者(Builder)模式
建造者(Builder)模式构建器(Builder)模式使用简单对象并使用逐步方法构建复杂对象。 这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。构建器(Builder)模式构建器逐步构建最终对象,此构建器独立于其他对象。实例实例我们考虑了一家快餐店的商业案例,其中典型的餐点可能是汉堡和冷饮。 汉堡可以是一个素食汉堡或鸡肉汉堡,将被包装进行包装。 冷饮可以是...
2018-08-13 11:09:25
130
转载 单例模式
单例模式单例(Singleton)模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。这种模式涉及一个类,它负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象,可以直接访问,而不需要实例化类的对象。实现实例我们将创建一个单一对象类 - SingleObject。单个对象(SingleObjec...
2018-08-13 10:56:50
121
转载 工厂模式(抽象工厂模式)
工厂模式工厂模式是Java中最常用的设计模式之一。 这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。在工厂模式中,我们没有创建逻辑暴露给客户端创建对象,并使用一个通用的接口引用新创建的对象。实现方法我们将创建一个Shape接口和实现Shape接口的具体类。 一个工厂类ShapeFactory会在下一步中定义。FactoryPatternDemo这是一个...
2018-08-13 10:51:50
127
转载 springMVC传递对象参数
基础类型如果传递的json数据为基础类型(Int,String等)的话,则只需要用@RequestParam标注方法中的参数就行了。ajax代码$.ajax({ url : "someurl", type : "POST", dataType : "JSON", data : {"name":"test", "password":"password&
2018-08-10 10:39:09
6278
转载 DOM对象和js对象以及jQuery对象的区别
一、DOM对象文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口。DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。 通过DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。 HTML DOM 独立于平台和编程语言。...
2018-08-09 19:52:41
334
1
原创 springboot springsecurity实现后台线路管理
https://github.com/fwm1/springboot-firetech.git一、springsecurity实现权限控制@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class WebSecurityConfig extends Web...
2018-08-08 11:16:16
488
转载 Git命令
将本地工程push到远程方式一: 建立本地仓库 git init 创建远程仓库:在github或者gitlab创建远程仓库 让本地仓库和远程仓库进行关联 git remote add origin git@mycode.skylettestudio.com:xlPay/XLPay.git 进行添加和提交操作 git add .git ...
2018-07-23 10:10:46
161
转载 python导入自定义模块
python 导入自定义模块:1.如果导入的模块和主程序在同个目录下,直接import就行了2.如果导入的模块是在主程序所在目录的子目录下,可以在子目录中增加一个空白的__init__.py文件,该文件使得python解释器将子目录整个也当成一个模块,然后直接通过“import 子目录.模块”导入即可。3.如果导入的模块是在主程序所在目录的父目录下,则要通过修改path来解决,有两种方法...
2018-07-22 21:48:23
504
原创 conda管理python环境
conda 切换环境:activate *** 新建环境:conda create -n *** 删除环境:conda remove -n *** --all 复制环境:conda create -n newEnv --clone oldEnv 查看当前环境:conda info --envs 安装不同版本的Python:conda create ...
2018-07-22 21:46:38
969
原创 快速排序
思想:1.在数组中找到一个主元(pivot),一般以数组的第一个元素为主元,将数组分为两部分,使得第一部分的元素都小于主元,第二部分的元素大于主元,然后再对这两个部分递归调用快速排序。2.low指针指向first的下一个元素,high指向最后一个元素last,当low<high时,进行low和high的交换(满足一定规则)。3.当high<low时,还要考虑把high向前移动直到 ar...
2018-05-08 20:57:48
100
转载 MySQL大表优化方案,单表优化、读写分离、缓存、分区表
当 MySQL 单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化。单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候 MySQL 单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT、SMALL...
2018-05-07 09:20:43
215
转载 MySQL的索引及优化
索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引。索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示SQL执行的详细信息,可以进行索引的优化。一、导致SQL执行慢的原因:...
2018-05-05 22:34:33
199
原创 AVL树
一、AVL树继承自BinarySearchTree,1,它是一棵平衡二叉树,他要求每个节点的左右子树的深度之差不能超过1。2,每个节点都有一个平衡因子bf,取值为-1、0、1 。它的值等于右子树的深度减去左子树的深度。3,有LL、RR、RL、LR四种旋转方式import java.util.ArrayList;public class AVLTree<E extends Comparabl...
2018-04-08 16:11:15
173
原创 JDK8中的排序
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Test { public static void main(String[] args){ List<User> ...
2018-04-06 09:12:01
4476
转载 Java枚举(enum)七种常见的用法
用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl…. 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public enum Color { RED, GREEN, BLANK, YELLOW }用法二:switchJDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们...
2018-04-06 07:09:36
152
原创 模拟Server/Client进程通信
一、服务器端ServerSocket serverSocket = new ServerSocket(8080);//创建服务器套接字,Socket socket = serverSocket.accept();//并等待连接二、客户端Socket socket = new Socket("localhost",8080);//创建套接字并通过该套接字向服务器发送请求连接客户端代码:public ...
2018-03-31 14:32:51
473
转载 sleep()和wait()的区别
1、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!);wait()方法则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线...
2018-03-31 08:51:41
179
转载 SpringMVC常用注解标签详解
1、@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller...
2018-03-29 08:39:50
173
原创 二叉查找树--BinarySearchTree
一、定义Tree接口public interface Tree<E> extends Iterable<E> { boolean search(E e); boolean insert(E e); boolean delete(E e); void inorder(); //中序遍历 void preorder();//前序遍历 ...
2018-03-25 17:41:26
309
原创 数据结构--用堆实现优先队列
一、优先队列实现方法 应想到使用二叉查找树实现优先队列(线性表的思想被否决了,接下来该想到的也应该是树结构了吧),它可以使这两种操作的平均运行时间都是O(logN)。但是使用二叉查找树会存在两个问题1:根节点的选择。2:使用指针的必要性。(我们不需要那么“精确”的排序)所以我们使用一种名为“二叉堆”的工具,它具有二叉查找树的部分思想,但我们将用数组去实现它(你也可以认为就是用数组实现了个二...
2018-03-25 14:18:30
2386
1
原创 浅谈JAVA泛型
一、泛型的主要优点是能在编译时检测出类型错误而不是在运行时检测出错误。二、泛型类型必须是引用类型,即基本类型不能作为泛型类型。三、定义泛型类、接口和方法 1.构造方法应该是public ClassName()而不是public ClassName<E>() 2.可以为静态方法定义泛型类型 声明泛型方法 public static <E>...
2018-03-24 20:23:44
229
转载 json和jsonp概述以及解决跨域问题
JSON的格式或者叫规则: JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。 1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。 2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序...
2018-03-16 16:24:15
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人