java
李小二?
李小二,你懂了吗?
展开
-
iterator()方法
原创 2021-09-10 11:12:34 · 128 阅读 · 0 评论 -
Jedis连接redis
在linux上面安装redis并启动,注意redis配置文件的要求 #bind 0.0.0.0 protected-mode no 注意开放防火墙6379端口 /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT 在Java代码中进行连接 <dependency> <groupId>redis.clients</groupId> <artifact原创 2021-07-26 11:05:20 · 130 阅读 · 0 评论 -
ReenTrantLock和synchronized
synchronized为一个锁升级的过程,ReenTrantLock底层为CAS ReenTrantLock可以代替synchronized ReenTrantLock需要手动去释放锁 ReenTrantLock可以设置公平或非公平 ReenTrantLock可重入 ReenTrantLock可以使用tryLock进行尝试锁定,不论锁定与否继续执行下面的代码 public class ReenTrantLockTest2 { Lock lock = new ReentrantLock原创 2021-07-20 09:52:37 · 141 阅读 · 0 评论 -
DLC需要加volatile吗?
Test test = new Test(); 创建过程 1.申请内存 成员变量赋默认值 2.调用构造方法 初始化成员变量 3.test建立指引 下面重点来了 public class Test { /** * 单例模式 */ //首先私有化构造方法 private Test(){} private static volatile Test test; public static Test getInstance(){ .原创 2021-07-19 21:07:39 · 247 阅读 · 0 评论 -
volatile关键字
让一个变量在多个线程之间保证可见性 堆内存是所有线程的共享内存,除了共享内存,每个线程有自己的专属区域,自己的工作内存,当多个线程访问共享内存里面的同一个值时,则会在自己的专属区域里面copy一份,但是当在自己的专属区域改变值之后,不会及时的反映到另一个线程里面 禁止指令重排 现在cpu为了高效,在编译后将指令可能会进行一个重新排序, ...原创 2021-07-18 22:54:51 · 53 阅读 · 0 评论 -
synchronized关键字
应用场景 用于同步代码块 多线程访问同一资源时的保护 当关键字在实例方法时,锁当前对象 当关键字在静态方法时,锁的是当前class 那么问题,来了这个class是惟一的吗?因为class是通过类加载器加载的,不同类加载器加载的class是不同的,但注意不同类加载器之间的class是不能互相访问的,因此我们能访问的class肯定是唯一的 可重入 当同一个线程对象访问两个都带锁的方法的时候,而这两个锁锁的是同一个对象,则两个方法可以互相调用不会有锁的互斥,同理父类子类的方法加锁,也满足可重入性 ...原创 2021-07-18 22:34:21 · 190 阅读 · 0 评论 -
进程和线程
进程、线程? 例如电脑上的qq.exe 当双击启动后,就相当于一个进程,而线程是进程中的最小执行单元,相当于进程中的一条执行路径。 线程的启动方式 /** * 线程的启动方式 */ public class TestThread { public static void main(String[] args) { //第一种线程的启动 Thread t1 = new Test(); t1.start(); /...原创 2021-07-18 21:44:37 · 62 阅读 · 0 评论 -
设计模式-单例
单例设计模式,对于一个类只能得到一个对象,无论调用多少个线程都只能获得这个类的一个对象。 第一种方法,饿汉式,缺点是在类加载的时候就将对象new了,这样对于内存来说是一个浪费。 public class Student { //直接将对象在内部new好,并赋值给静态属性 private static final Student STU = new Student(); private Student(){}//上来直接将构造方法属性私有化 public static原创 2021-07-16 21:11:35 · 94 阅读 · 0 评论 -
HashMap源码
对hash的理解 将任意长度的输入,转化为固定长度的输出,会产生hash冲突,举例(有10个苹果,9个盒子,则肯定有一个盒子里面装两个) 好的hash算法应该有什么特点:首先效率要高,对长文本也能高效的计算出hash值; 不能根据hash值逆推出来原文;散列度较高输入有一点不同,得到的hash值就不同;极可能分散; static final int hash(Object key) { int h; //将hashcode的高16位参与运算 防止散列 ..原创 2021-07-10 21:43:59 · 143 阅读 · 3 评论 -
阿里云服务器遇到挖矿病毒
https://www.yundashi168.com/272.html?spm=a2c6h.13066369.0.0.26665732VJQBar原创 2021-05-22 20:29:06 · 127 阅读 · 0 评论 -
mysql连接
数据库连接失败 连接阿里云服务器上部署的数据库出现访问失败。 修改阿里云服务器配置规则保证3306端口的访问权限 登录数据库 mysql -uroot -p 输入密码 修改数据库root可以远程访问连接 1.登录数据库 mysql -uroot -p 输入密码 2.use mysql 3.select host,user,password from user; GRANT ALL PRIVILEGES ON . TO ‘root’@’%'IDENTIFIED BY ‘root’; flush pr原创 2021-05-09 22:26:34 · 57 阅读 · 0 评论 -
linux远程登录阿里云服务器
通过命令 ssh root@服务器公网地址 输入服务器密码 出现错误linux无法ifconfig 出ip地址 解决方法 vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改最后一行为yes 即可原创 2021-05-08 23:26:40 · 106 阅读 · 0 评论 -
2021-01-31
@力扣刷题 第五题 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 首先对题目进行分析,两个链表都是已经排好顺序的(升序),需要将两个链表合成一个链表也是按照升序排列 解决思路 1.首先要进行合并必须要进行比较大小 2.还有就是不需要进行内存的重新申请,直接在原来两个链表上进行操作,主要是最后在返回链表头的时候要注意 3.因为每次的操作都是相同的,先进行比较,然后小的节点放在前面大的节点放在后面。这样每次都是进行这个操作,因此选择使用递归 下面是具原创 2021-01-31 22:28:06 · 205 阅读 · 4 评论 -
JAVAC/S QQ
根据网络通信完成最基本的消息发送,原理还是基于C/S,好的小二现在开始讲给你! 首先我们还是要建立服务端和客户端,并且消息的发送是基于客户端连接上服务端,消息的发送是利用IO流来进行发送的,并且不同类型的IO流可以发送不同类型的数据,这个就得根据实际情况情况来进行定义,这次的模仿qq可以将发送的消息看作字符串,因此最基本的额io流就可以,在发送的时候将其转化为字节数组就行。 下面是具体的步骤: 建立服务器端、客户端 服务器有自己的界面上面主要有发送消息框和发送按钮,还有显示全部消息的文本框,服.原创 2021-01-27 22:30:54 · 246 阅读 · 0 评论 -
java视频meeting
以下博客会出现小二这个人,我最近就是一直在给他讲代码,但是他真的太笨了!! 首先meeting也是在服务器和客户端的基础上,也是基于C/S通信的,这个就不做过多赘述,视频我们将其理解为由一帧一帧的图片组成,因此视频会议就可以理解为在以非常快的速度传输一张一张图片,这个快的速度是我们肉眼不能识别的,因此看不出来这是一张一张图片,那么接下来就好理解了 首先都是需要客户端和服务器完成最基本的通信连接,接下来就是数据传输操作: 1.获取视频 2.将图片转化为二维数组(图像处理的时候我们知道,一张图片就是由二维数组原创 2021-01-26 09:32:14 · 585 阅读 · 0 评论 -
android里面的绘图
首先在java里面的绘图我们都是直接用一个Graphics来完成,但是在android里面绘制图形需要以下关键字 //安卓画图 ImageView draw; Bitmap bm; Canvas cv; Paint pt; 那么关于对这四个关键字的理解: ImageView draw可以理解为图形将要显示在这个上面 为画布这个画布会有它的尺寸为限制 Bitmap 可以从字面意思上理解是位图,因为对于图形可以看作是由一个一个像素点所组成的,因此设置Bitmap.createB.原创 2021-01-16 19:25:58 · 140 阅读 · 0 评论 -
快速排序
快速排序 下面说下我对于快速排序的理解,首先它是排序算法中一种,既然是排序那么自然少不了最基本的 比较、交换、循环, 快速排序可以称其为单轴快排,这个轴就是你选中的一个基准,在一串需要排序的数字中选择一个轴,然后将其余全部的数字与这个选中的轴进行比较,比这个轴小的放在左边,比这个轴大的放在右边,此时就相当于将数组分成了两个部分,然后在各个部分重复上面的操作,即可完成快速排序。 废话不多说,直接上代码 对于轴的选择,我们每次都选择需要进行排序数组的最后一个数为轴,然后将剩下的所有数与其进行比较,根据其原理.原创 2021-01-07 11:51:23 · 129 阅读 · 0 评论 -
线程安全初次探究
关于对线程安全的理解 线程安全就是多个线程对共享数据的操作 举例说明 public void run() { // TODO Auto-generated method stub //synchronized(obj) { //ll.lock(); for(int i = 0;i<5;i++) { try { //我们定义的这个线程,对count进行累加操作 count = count+i; Thread.sleep(10); ..原创 2020-12-15 22:13:17 · 73 阅读 · 1 评论 -
数组和链表实现队列的比较
首先对于数组、链表基本都有的基本操作就是增删改查,采用数组和链表两种方式实现增删改查操作 第一种方式是数组实现队列 首先定义一个接口是增删改查 //定义的接口 其中E为泛型,用来定义具体操作的是什么类型 可以是一个类也可以是基本数据类型(用包装类实现) public interface Iarray<E> { //增加 void add(E e); //删除 void delete(E e); //修改 void check(E e,E ee); //遍历 void arra.原创 2020-12-13 22:11:15 · 897 阅读 · 0 评论 -
java 链表的理解
数据结构 首先可以将这四个字理解为对数据进行处理或者存储的一种方法结构。 数据存储的底层原理 数据在底层存储的形式有两种分为数组形式的存储和链表存储的形式,这两种的区别是什么:数组存储在内存地址上必须是连续的;链表的存储形式在地址上不一定是连续的 如果是数组形式的存储的话,加入有32位的内存,但是存储数组的形式假如没有利用完内存会有碎片化内存的产生,但是链表存储的话,不用完全按照顺序地址存储,所以会占满内存 因此会优于数组存储 ...原创 2020-12-04 22:05:19 · 167 阅读 · 0 评论 -
java飞机大战对线程的理解
线程理解 假设在一台电脑上会有很多个应用,你可以同时开启多个应用,这个被称作进程 一台电脑可以同时有多个进程运行,每个进程里面会有多个线程同时运行,举个例子,你打开一个视频播放软件,你可以同时下载视频,也同时在看着视频,这就是在一个进程里面有两个线程,线程的通俗理解就是可以我可以在看电视的同时也在吃着饭,互相不影响都在进行着。 利用飞机大战游戏来运行多线程 -代码用来实现飞机大战的窗口界面 public void init() { //飞机大战窗口 this.setTitle("..原创 2020-11-26 14:39:09 · 187 阅读 · 0 评论 -
java 简易画图板实现
java简易画板 关于画板窗口的实现: this.setTitle(“绘图工具”); this.setSize(800, 1000); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); FlowLayout fl = new FlowLayout(); 窗口的按钮添加: JButton ju1 = new JButton(“直线”); this.add(ju1); JButton j原创 2020-11-21 11:17:57 · 433 阅读 · 1 评论 -
java 简单图形界面学习
窗口基本设计: javax.swing (可视化组件类) 2.java.awt (元素组件类) javax.swing.JFrame jf = new javax.swing.JFrame(); jf.setSize(400, 500);//窗口分辨率 jf.setVisible(true); //可视化 jf.setTitle(“登录界面”);//窗口的标题 //jf.setVisible(true); jf.setLocationRelativeTo(null); //居中 jf.setDefaul原创 2020-11-08 22:30:42 · 97 阅读 · 0 评论 -
java 继承
java 继承 在多种类型之间存在继承的关系 继承的规则是:子类和父类有同名的方法和属性,但是具体内容不同 继承 public class 子类名 extends 父类名{} new一个对象的格式: 父类名 新对象名称 = new 子类名(); 继承之后,子类具有父类的属性和方法,同时子类可以重写父类中的方法(注意,格式要求相同,参数列表相同) 代码示例: 父类: public class Roler { String name; int blood;//自身血量 int blood1;//攻击掉血量 pu原创 2020-11-08 22:12:52 · 96 阅读 · 0 评论