Solon's blog 
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •     

java随笔--内部类

一、成员内部类​ 内部类可以用来实现多继承。成员内部类可以访问外部类的所有成员变量,包括private修饰的。 ​ 内部类跟外部类有一个很重要区别:内部类可以用private修饰,而外部类是不能使用private修饰的。如果内部类仅仅在类内部使用时,使用private修饰后,就可以更好的隐藏内部信息。 ​ 当需要使用到内部类的时候,还是推荐使用getInnerInstance的方式来获取,特别是当内部类只有无参构造器的时候 public class Outer { private int num; private Inner inner; Outer(){ num = 1; inner = new Inner(); } public void print(){ System.out.println("Outer.print()"); System.out.println(inner.num); Syst
 2019-10-19   学习笔记    JAVA随笔 

二分查找细节详解

1、基本二分查找//常见场景:查找一个数 int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(left <= right) { int mid = (right + left) / 2; if(nums[mid] == target) return mid; else if (nums[mid] < target) left = mid + 1; // 注意 else if (nums[mid] > target) right = mid - 1; // 注意 } return -1; } 1、为什么 while 循环的条件中是 <=,而不是 < ? 答:因为初始化 right 的赋值是 nums.length-1,即最后一个元
 2019-10-17   algorithm    二分查找 

Java随笔--对象的克隆

java的引用类型(包括类、接口、数组等复杂类型)是无法通过等号直接赋值的。 public class GoodsTest { public static void main(String[] args){ Goods goodsA = new Goods("GoodsA",20); Goods goodsB = goodsA; System.out.println("Before Change:"); goodsA.print(); goodsB.print(); goodsB.setTitle("GoodsB"); goodsB.setPrice(50); System.out.println("After Change:"); goodsA.print(); goodsB.print(); } } //修改goodsB,goo
 2019-10-17   学习笔记    JAVA随笔 

组合总数

https://leetcode-cn.com/problems/combination-sum/solution/hui-shuo-suan-fa-di-gui-java-by-longchenghuang/ 总结:回溯主要是通过递归对所有情况进行遍历,通过剪枝降低复杂度。难点在于如何通过剪枝降低系统栈深度,降低时间复杂度? 后面选取的数不能比前面选的数还要小,即 “更深层的边上的数值不能比它上层的边上的数值小”,本题通过这种方式降低复杂度。 List<List<Integer>> set=new ArrayList<List<Integer>>(); public List<List<Integer>> combinationSum(int[] candidates, int target) { //排序 Arrays.sort(candidates); List<Integer> list=new ArrayList<Integer>(); trace
 2019-10-17   LeetCode    回溯 

电话号码的字母组合

https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 思路:DFS、回溯(没有剪枝,解空间即为答案) 改进:字符串相加可以使用StringBuffer。 class Solution { //两个大括号的方式初始化(本质上是匿名内部类 + 实例化代码块儿) Map<String,String> hashMap=new HashMap<String,String>(){{ put("2","abc"); put("3","def"); put("4","ghi"); put("5","jkl"); put("6","mno"); put("7","pqrs"); put("8","tuv"); put("9","wxyz"); }}; public List<String> letterCo
 2019-10-12   LeetCode    回溯 

最长回文字符串

https://leetcode-cn.com/problems/longest-palindromic-substring/solution/ 方法一:中心扩展法 遍历字符串,以每个字符为中心,判断以其为中心的最长回文串长度。记录最长回文串的起始位置。注意回文串长度分奇偶两种情况。 class Solution { public String longestPalindrome(String s) { if(s==null||s.length()<1) return s; //回文串左右位置 int left=0;int right=0; for(int i=0;i<s.length();i++){ //回文串长度为奇数 int len1=lengthOfHuiwen(s,i,i); //长度为偶数 int len2=lengthOfHuiwen(s,i,i+1); int len=
 2019-10-11   LeetCode    动态规划 

JDBC连接池& JDBCTemplate

数据库连接池 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。 好处: 节约资源 用户访问高效 实现: 标准接口:DataSource javax.sql包下的 方法: 获取连接:getConnection() 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接 一般我们不去实现它,有数据库厂商来实现 C3P0:数据库连接池技术 Druid:数据库连接池实现技术,由阿里巴巴提供的 C3P0:数据库连接池技术 步骤: 导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar , 不要忘记导入数据库驱动jar包 定义配置文件: 名称: c3p0.properties 或者 c3p0-config.xml 路
 2019-10-10   学习笔记    JDBC 

JDBC基础

JDBC: 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 快速入门: 步骤: 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 2.右键–>Add As Library 注册驱动 获取数据库连接对象 Connection 定义sql 获取执行sql语句的对象 Statement 执行sql,接受返回结果 处理结果 释放资源 {r tidy=FALSE} * 代码实现: //1. 导入驱动jar包 //2.注册驱动 Class.forName("com.mysql.jdbc.Dr
 2019-10-10   学习笔记    JDBC 
123456

搜索

Hexo Fluid
 总访问量 次   总访客数 人