![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
原创
你亲爱的裴先生
派森炸瓦
展开
-
HashMap实现的原理,hashmap怎么存的值?看了就懂了
JDK 8 中,HashMap的主干是一个Node数组。//该table在第一次使用时初始化,并在必要时进行调整。当分配时,长度总是2的幂。transient Node<K,V>[] table;Node是HashMap中的一个静态内部类存*HashMap存值原理:首先,put()方法传入要存的值,把该值的键的hashcode算出,然后与右移16位后的后16位,即最开始的...原创 2019-08-08 08:13:18 · 3024 阅读 · 2 评论 -
什么是死锁,为什么会产生死锁?
** 死锁** 每个人都拥有其他人需要的资源,同时又等待其他人拥有的资源,并且每个人在获得所有需要的资源之前都不会放弃已经拥有的资源。 当多个线程完成功能需要同时获取多个共享资源的时候可能会导致死锁。死锁的条件:1两个以上的线程2至少两个锁以上3同步中嵌套同步/**男孩*/public class Boy extends Thread{ @Override pu...原创 2019-08-11 15:56:07 · 986 阅读 · 0 评论 -
MySQL连接查询
连接查询连接查询就是求出多个表的乘积,例如t1连接t2,那么查询出的结果就是t1*t2。连接查询会产生笛卡尔积,假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。那么多表查询产生这样的结果并不是我们想要的,那么怎么去除重复的,不想要的记录呢,当然是通过条件过滤。通常要查询...原创 2019-08-24 19:17:07 · 85 阅读 · 0 评论 -
MySQL实现各种约束
mysql数据完整性作用:保证用户输入的数据保存到数据库中是正确的。确保数据的完整性 = 在创建表时给表中添加约束完整性的分类:实体完整性:域完整性:引用完整性: 学生表(学号 ,姓名) 成绩表( 学号,科目,成绩)1.1 实体完整性约束实体:即表中的一行(一条记录)代表一个实体(entity)实体完整性的作用:标识每一行数据不重复。约束类型:主键约束(primar...原创 2019-08-24 19:19:29 · 900 阅读 · 1 评论 -
CSS选择器
CSS选择器主要用于选择需要添加样式的html元素3.1 基本选择器3.1.1 标签选择器 在head中使用style标签引入在其中声明标签选择器: html标签{属性:属性值},具体示例如下: <style type="text/css"> span{color: red;font-size: 100px} </sty...原创 2019-08-20 21:19:04 · 82 阅读 · 0 评论 -
何为面试必问的CAS算法?
在CAS算法中,需要取出内存中某时刻的数据(由用户完成),在下一时刻比较并替换(由CPU完成,该操作是原子的)。这个时间差中,会导致数据的变化。假设如下事件序列:线程 1 从内存位置V中取出A。线程 2 从位置V中取出A。线程 2 进行了一些操作,将B写入位置V。线程 2 将A再次写入位置V。线程 1 进行CAS操作,发现位置V中仍然是A,操作成功。尽管线程 1 的CAS操作成功,但不代表这个过程没有问题——对于线程 1 ,线程 2 的修改已经丢失。原创 2019-08-16 08:09:28 · 244 阅读 · 2 评论 -
事件冒泡或事件捕获?
事件传递有两种方式:冒泡与捕获。事件传递定义了元素事件触发的顺序。 如果你将 元素插入到 元素中,用户点击 元素, 哪个元素的 “click” 事件先被触发呢?**在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: 元素的点击事件先触发,然后会触发 元素的点击事件。**在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: 元素的点击事件先触发 ,...原创 2019-08-21 21:50:18 · 97 阅读 · 0 评论 -
synchronized和volatile的区别:
volatilevolatile:易变的,不稳定的在并发编程中的三个特性:(1)互斥性(原子性)(2)内存可见性(3)指令重排序volatile 关键字: 当多个线程进行操作共享数据时,可以保证内存中的数据是可见的;相较于synchronized 是一种较为轻量级的同步策略;volatile 不具备"互斥性";volatile 不能保证变量的"原子性"; volati...原创 2019-08-21 22:17:13 · 163 阅读 · 0 评论 -
如何字节流实现readLine()方法
import java.io.InputStream;public class Systemin { public static void main(String[] args) throws Exception{ InputStream is=System.in; int len=0; StringBuilder sb=new Str...原创 2019-08-16 23:12:11 · 674 阅读 · 0 评论 -
插入排序
//外层循环从1开始,内层循环从0开始。 每次内层循环结束,要判断设为指针pos的点是否变动,(pos虽然改变,但是最开始pos的值已经取出放入curr,所以后边依然可以和curr进行比较)如果变了说明在循环时执行了pos--,就说明在指针位置左边有比设为指针位置的值大,并且已经后移,所以,此时把取出的开始指针的值(curr)插入到pos-到的位置(每有一个比指针数值大的值,指针里的值就该往左移...原创 2019-08-22 10:02:08 · 66 阅读 · 0 评论 -
##### 冒泡排序
冒泡排序如果一共n个数,第几轮为i,则需要比较n-1轮;每轮比较n-i-1次,每次确定一个最大的数 public static void select(){ int[] arr={5,12,4,7,13}; for(int i=0;i<arr.length-1;i++){ //n个元素冒泡排序,一共需要比较n-1轮,所以i<...原创 2019-08-22 10:02:56 · 77 阅读 · 0 评论 -
为什么hash结构 重写equals方法必须重写hashcode方法
hashset是由数组,链表和红黑树组成的。为什么重写equals必须重写hashcode?假如只重写equals而不重写hashcode,那么Student类的hashcode方法就是Object默认的hashcode方法,由于默认的hashcode方法是根据对象的内存地址经哈希算法得来的,显然此时s1!=s2,故两者的hashcode不一定相等。然而重写了equals,且s1.equ...原创 2019-08-17 20:50:42 · 128 阅读 · 0 评论 -
选择排序之 各种选择排序
public static void select1(){int[] a={5,12,4,7,13};for(int i=0;i<a.length-1;i++){ //n个元素,i从角标为0的元素开始,向后比较,选择最小的与其交换,因为只需要比较n-1((a.length-1)-i)次就能确定顺序,所以i<length-1int min=a[i];for(int j=i+1;j...原创 2019-08-22 21:11:43 · 141 阅读 · 0 评论 -
Dbutil
package util;import Bean.Student;import java.sql.*;public class Dbutil { private static String driver="com.mysql.cj.jdbc.Driver"; private static String url="jdbc:mysql://localhost:3306/h...原创 2019-08-26 22:32:08 · 170 阅读 · 0 评论 -
Dbutils使用
n. Dbutils使用https://www.cnblogs.com/lihanxiang/p/8475548.html【JavaWeb】DbUtils入门之QueryRunnerDbUtils简介根据官网的介绍,DbUtils是一种 JDBC Utility Component (翻译过来大概就是:JDBC实用部件),故名思意,和数据库操作有关官网上的简介也称之为 JDBC help...原创 2019-08-28 21:30:52 · 346 阅读 · 1 评论 -
fastjson解决循环引用和重复引用
什么是重复/循环引用简单说,重复引用就是一个集合/对象中的多个元素/属性同时引用同一对象,循环引用就是集合/对象中的多个元素/属性存在相互引用导致循环。举例说明重复引用List list = new ArrayList<>();Object obj = new Object();list.add(obj);list.add(obj);循环引用// 循环引用的特殊情况,...转载 2019-09-07 11:36:41 · 1786 阅读 · 1 评论 -
java计算兩天之间的间隔天数!冲
import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;public class Test3_7 {public static void main(String[] args) throws Exception {Scanner sc=new Scanner(System.in);...原创 2019-08-10 20:39:39 · 463 阅读 · 0 评论 -
别人懂得比你多,只是不愿和你争论而已
多花点时间去分析别人为什么会失败不要去思考别人为什么去成功,成功的原因有很多的。机会是均等的绝对的乐观首先改变自己别人在抱怨,你在干活机会其实是很公平的,只是你有没有看到,有没有去做以前是制作的时代,现在是创造的时代。释放体能搞了200年,释放脑能才刚刚开始。年轻人懂的比我多,只是不愿和你争论而已。...原创 2019-08-08 15:07:11 · 144 阅读 · 1 评论 -
ArrayList和LinkedList区别
ArrayList存储结构是数组,LinkedList存储结构是双向链表ArrayList集合适用在对元素查询、遍历操作,不适合插入和删除 (因为ArrayList底层是数组,所以需要插入和删除时比较麻烦,比如在第一个插入一个元素,这时需要后边所有元素向后移一位;空间连续,遍历更快)LinkedList集合适用在对元素插入和删除操作,不适合遍历和查找。(LinkedList底层...原创 2019-08-06 12:15:46 · 147 阅读 · 1 评论 -
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
import java.util.Scanner;public class Demo4 { public static void main(String[] args) { System.out.println("您要输入几个数?"); //记录用户需要输入的数组元素个数 Scanner sc=new Scanner(System.in); ...原创 2019-08-06 14:00:00 · 5806 阅读 · 0 评论 -
怎么判断字符串是否回文
public class StringUtils {23 /**4 * 把字符串转置5 *6 * @param array7 * char数组8 * @return 转置后的数组9 /10 public char[] change(String str) {11 char[] array = str.toCharArray();12 int size = array.leng...原创 2019-08-06 14:08:23 · 1559 阅读 · 0 评论 -
Num++先赋值后运算?No, 你错了
1.2 Java中一些语法和符号的区别1.2.1 num++和++num区别便于理解和记忆的讲法(其实是错误的 赋值操作优先级比++低):num++ 先赋值再运算 ...原创 2019-08-08 20:20:06 · 1296 阅读 · 1 评论 -
不使用第三个变量怎么交换两个变量的值
不使用第三个变量怎么交换两个变量的值异或运算交换 二进制数字异或 :相同为零(假) ,不同为一(真)如图,完成n1和n2的交换1.2.4.2 相加再相减交换如图n1,n2值进行交换...原创 2019-08-09 08:15:22 · 158 阅读 · 2 评论 -
Properties类 冲!
package IO;import java.io.*;import java.util.Properties;public class Properties1{ public static void main(String[] args) { //1.实例化一个Properties的对象 Properties pro=new Properties...原创 2019-08-13 17:32:50 · 94 阅读 · 1 评论 -
Map集合的遍历
使用keySet方法与get方法结合public class Demo { public static void main(String[] args){ HashMap<String, Integer> map = new HashMap<>(); map.put("aaa", 12); map.put("bbb",...原创 2019-08-19 14:10:52 · 81 阅读 · 0 评论 -
字节流为什么print到命令行 中文显示的是乱码,而写到文件里面的中文却能正常显示
为什么print到命令行 中文显示的是乱码,而写到文件里面的中文却能正常显示?注:我觉得好像不是记事本的原因,因为按字节读的话,如果读的是乱码,写入的应该也是乱码。正是因为字节流没有经过“解码-编码”这个过程,所以不会因为解码和编码使用的编码方式不同而产生错误,(字符流会)事实上**,使用字节流能够保证源文件和目标文件是一模一样的,打开文件当然是正常的啦,**而打印在屏幕有错是因为你把一个...原创 2019-08-09 19:07:07 · 304 阅读 · 0 评论 -
输出流对象对文件如何不覆盖写入?
下面用**setOut重定向System.out.print输出地址:**的例子来演示如何不覆盖写入import java.io.*;public class SysteminReader { public static void main(String[] args) throws Exception { //System.out.println("h...原创 2019-08-09 21:10:19 · 3059 阅读 · 3 评论 -
为什么要写序列化号
**在要序列化类中添加字段,保证序列化和反序列化是同一个格式的类 private static final long serialVersionUID = 100L; **这个我称之为:序列化号,用来记住序列化时类的格式,比如,我在第一次序列化时,Person类有name,age两个属性,但是后来因为需求删去了age属性,此时如果在第一次序列化时没有定义序列化号,那么你第一次序列化的那个码就...原创 2019-08-09 22:13:10 · 649 阅读 · 1 评论 -
java打印等腰三角形
import java.util.Scanner;public class Demo{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); for(int i=1;i<=n;i++){ for(int a=1;a<=n-...原创 2019-08-07 21:41:20 · 249 阅读 · 0 评论 -
分层遍历文件夹以及所有子文件,递归删除文件夹及其所有内容
import java.io.File;public class File2 { public static void main(String[] args) { //int level=1; File file=new File("d:\\aaa"); File[] files=f...原创 2019-08-07 21:43:00 · 183 阅读 · 0 评论 -
这样写,才是100分的懒汉单例模式!
public class SingleTon { private SingleTon(){ //禁止反射破解 synchronized (SingleTon.class) { if (instance != null) { throw new RuntimeException("不能使用反射创建对象"); ...原创 2019-08-14 20:01:08 · 83 阅读 · 1 评论 -
SqlSession和SqlSessionFactory
SqlSession:应用程序和数据库之间交互的一个单线程对象(非线程安全的),数据库的C、R、U、D及事务的处理接口,select | update | delete | insert | commit | rollback | close | flushStatements等SqlSessionFactory:工厂设计模式,创建SqlSession的工厂。SqlSessionFactory是...原创 2019-09-25 20:11:31 · 5171 阅读 · 0 评论