旋转数组查找指定值 递增数组[1,2,3,4,5],变化为[5,6,1,2,3,4], 给定K,判断是否存在,并返回其索引位置 二分查找 选择中间位置作为判断的分界点 所以二分中,必定有一部分数组是递增有序的,而另一部分则不是,所以当我们取中间点的时候,首先判断中间点是不是所要寻找的值。 如果不是,则寻找递增的那一部分数组 1.前部分是递增数组,如果指定值在前部分数组中,end = mid - 1;否则在后...
求字符串的组合 输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一是把这个字符放到组合中 去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择...
设计实现一个LRU Cache 什么是LRU Cache在LeetCode上有一个LRU Cache实现的题目 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get t...
CGlib动态代理 JDK动态代理必须提供接口才能使用,在一些不能提供接口的环境中,只能采用第三方技术,比如CGlib动态代理,它的优势在于不需要提供接口,只要一个非抽象类就能实现动态代理 CGLib采用了非常底层的字节码技术,其原理是通过目标类的字节码为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。我们先通过一个demo看一下Cglib是如何实现动态代理的。 ...
Java实现关于数组的一些骚操作 如何找出数组中唯一的重复元素? 问题描述:数组a[N],1-N-1这N-1个数存放在a[N]中,其中某个数字重复1次。写一个函数,找出重复的数字。要求每个数组元素只能访问一次,并且不用辅助空间。分析:由于不能使用辅助物理空间且每个元素只能访问一次,所以可以从原理入手,采用数学求和法。 设重复的数字为A,那么数组的和为1-N-1,A的累加,减去1-N-1的累加即可得到重复的数字A...
排序算法Java实现 不稳定排序 选择排序: 经过第一轮比较得到的最小的记录,与第一个记录的位置交换, 然后对不包括第一个记录以外的记录进行第二轮比较,得到的最小记录与第二个记录交换 时间复杂度:O(n^2) 空间复杂度:O(1) public static void selectSort(int[] arr){ if (arr == null || arr....
剑指Offer面试题32:从1到n整数中1出现的次数 题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次思路一:最直白但是时间复杂度高的解法 依次累加1到n中每个整数1出现的次数。每次可以通过对10求余数判断整数的个位数是不是1 public int NumberOf1Between1AndN(int n) { ...
SSM整合踩坑集合 IDE:IntelliJ IDEA maven项目管理,Spring,Spring MVC,MyBatis整合开发 纯xml配置 上图是Spring容器和SpringMVC的配置的文件,下图是自定义的Controller 然后运行就出现了如下的错误,哭唧唧 启动时出现这个页面,后台报错如下:Caused by: java.io.FileNotFoundException:...
MyBatis踩坑持续更新 Invalid bound statement (not found)错误 IDEA开发,其中xml文件放到resources中,接口定义在mapper包下,mybatis配置如下: 我们知道配置映射器用三种方式<mapper resource="xml所在文件路径"/><mapper package = "mapper接口所在包名"/><ma...
设计模式的设计原则 单一职责原则 是什么单一职责原则的英文名称是Single Responsibility Principle,简称SRP。 “一个类仅有一个职责”或者“引起类变化的只有一个原因”,这就是单一职责原理。 类只因一个原因而变化,这仿佛是一种新的类定义方式。当接触面向对象编程时,试图把一个类对比为一个事物,事物具备的功能都是这个类的操作。比如,一根尺子,既可以用来打学生手板,也可以用来丈...
Socket编程 什么是Socket?Socket是连接运行在网络上的两个程序间的双向通讯的端点。 Socket进行网络通信的过程1.服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户的连接请求。 2.客户程序根据服务器程序所在的主机名和端口号发出连接请求。服务器在端口监听到有客户端发来的请求,如果有连接请求,那么接受连接请求并获得一个新的绑定到不同端口地址...
Schema与数据类型优化 数据库设计时更优的Tips 选择优化的数据类型1.更小的通常更好 一般情况下,应该尽量使用可以正确存储数据的最小数据类型。因为它们占用更少的磁盘。内存和CPU缓存,并且处理时需要的CPU周期也更少 2.简单就好 简单数据类型的操作通常需要更少的CPU周期 3.尽量避免NULL 通常情况下最好指定列为not null。 通常把可为NULL的列改为NOT NULL带来的性能提...
关于数据库的优化问题 大型网站应用之海量数据和高并发解决方案总结一二 数据库分库分表策略的具体实现方案 分库分表之后 查询和新增数据的时候,需要一个专门做这个事情的中间件(常见的有MyCat和Cobar,还有一些公司自研的数据库中间件产品)用来区分表和库,如果不同的库或者不同的服务器,要进行判断和对接。 如果只是单体应用或单一系统,系统的瓶颈是由数据库的IO引起的或者数据库表超过500W一般都会进行分库分表。 ...
数据库的引擎 MyISAM 引擎特点:1.不支持事务 2.只支持表级锁(数据库操作表时需要锁定整张表),锁定成本小,但并发性不高 3.读写相互阻塞,但是读读不阻塞 4.只会缓存索引,不会缓存数据 5.读取速度快(因为功能相对弱小,占用资源少,锁粒度粗) 6.不支持外键约束,但支持全文索引 7.MyISAM是MySQL5.5.5前缺省的存储引擎 适用的生产业务场景1.不需要...
JDK1.8 HashMap底层实现原理 底层实现: 数组+链表+红黑树一些重要的变量://默认初始容量16static final int DEFAULT_INITIAL_CAPACITY = 1 &amp;lt;&amp;lt; 4; //容量最大值static final int MAXIMUM_CAPACITY = 1 &amp;lt;&amp;lt; 30;//默认加载因子0.75static final float DEFAULT_L...
【LeetCode】Two Sum问题 1.Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may no...
【leetcode】中关于二叉树的那些题 112 Path SumGiven a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.Note: A leaf is a node with no...
MyBatis配置踩坑 MyBatis版本3.4.6 mysql-connector版本:6.0.6 报错:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered vi...
关于动态代理模式 为什么JDK的动态代理只能实现接口的代理?我们通过JDK动态代理生成的代理对象的类型实际是$Proxy0(这个名字后面的0是编号,有多个代理类会一次递增)类,该类继承了Proxy类,所以只能对接口进行代理。Java的继承机制注定了这些动态代理类们无法实现对类的动态代理。public final class $Proxy0 extends Proxy 动态代理底层实现原理...
【LeetCode】SingleNumber[I][II] 题目描述Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it without ...