- 博客(41)
- 收藏
- 关注
原创 Jedis连接redis
在linux上面安装redis并启动,注意redis配置文件的要求#bind 0.0.0.0protected-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
143
原创 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
158
原创 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
267
原创 volatile关键字
让一个变量在多个线程之间保证可见性堆内存是所有线程的共享内存,除了共享内存,每个线程有自己的专属区域,自己的工作内存,当多个线程访问共享内存里面的同一个值时,则会在自己的专属区域里面copy一份,但是当在自己的专属区域改变值之后,不会及时的反映到另一个线程里面禁止指令重排现在cpu为了高效,在编译后将指令可能会进行一个重新排序,...
2021-07-18 22:54:51
64
原创 synchronized关键字
应用场景 用于同步代码块 多线程访问同一资源时的保护 当关键字在实例方法时,锁当前对象 当关键字在静态方法时,锁的是当前class那么问题,来了这个class是惟一的吗?因为class是通过类加载器加载的,不同类加载器加载的class是不同的,但注意不同类加载器之间的class是不能互相访问的,因此我们能访问的class肯定是唯一的可重入当同一个线程对象访问两个都带锁的方法的时候,而这两个锁锁的是同一个对象,则两个方法可以互相调用不会有锁的互斥,同理父类子类的方法加锁,也满足可重入性...
2021-07-18 22:34:21
205
原创 进程和线程
进程、线程?例如电脑上的qq.exe 当双击启动后,就相当于一个进程,而线程是进程中的最小执行单元,相当于进程中的一条执行路径。 线程的启动方式 /** * 线程的启动方式 */public class TestThread { public static void main(String[] args) { //第一种线程的启动 Thread t1 = new Test(); t1.start(); /...
2021-07-18 21:44:37
79
原创 设计模式-单例
单例设计模式,对于一个类只能得到一个对象,无论调用多少个线程都只能获得这个类的一个对象。第一种方法,饿汉式,缺点是在类加载的时候就将对象new了,这样对于内存来说是一个浪费。public class Student { //直接将对象在内部new好,并赋值给静态属性 private static final Student STU = new Student(); private Student(){}//上来直接将构造方法属性私有化 public static
2021-07-16 21:11:35
110
原创 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
172
3
原创 阿里云服务器遇到挖矿病毒
https://www.yundashi168.com/272.html?spm=a2c6h.13066369.0.0.26665732VJQBar
2021-05-22 20:29:06
147
原创 mysql连接
数据库连接失败连接阿里云服务器上部署的数据库出现访问失败。修改阿里云服务器配置规则保证3306端口的访问权限登录数据库mysql -uroot -p输入密码修改数据库root可以远程访问连接1.登录数据库mysql -uroot -p输入密码2.use mysql3.select host,user,password from user;GRANT ALL PRIVILEGES ON . TO ‘root’@’%'IDENTIFIED BY ‘root’;flush pr
2021-05-09 22:26:34
72
原创 linux远程登录阿里云服务器
通过命令 ssh root@服务器公网地址输入服务器密码出现错误linux无法ifconfig 出ip地址解决方法vi /etc/sysconfig/network-scripts/ifcfg-ens33修改最后一行为yes 即可
2021-05-08 23:26:40
120
原创 java
力扣继续刷题题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度思路:可以从字符串开头进行遍历,因为需要在字符串里找到不重复的最长字符串,因此在遍历的时候,每次遇到一个字符就需要判断这个字符在前面遍历的字符里面有没有出现过,后面还需要将这个字符加入到集合里面去,因此需要使用集合HashMap来进行判断字符有没有出现过具体代码实现class Solution { public int lengthOfLongestSubstring(String s) { .
2021-02-09 15:56:09
134
2
原创 爬楼梯问题
题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?经典爬楼梯问题,小二,关于这个问题你怎么理解啊?解题思路:假设你现在要去爬5层楼梯,那么你的前一级楼梯就会有两种情况,一种是4级,另外一种是3级,那么我们就可以这样考虑这个问题,你将你到达3级和4级楼梯的方法数加起来就是你到达5级楼梯的方法,用数学公式可以表达为f(5) = f(4) + f(3),看见这个我们就可以想到斐波那契问题,但是如果采用递归的方法,在楼梯数很大的时候就
2021-02-08 11:39:36
349
原创 力扣
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。题目分析:小二,你想像一串括号,现在让你来判断这一串括号是否是有效的,你怎么进行判断?按照正常的思路都是,从左至右遇见的每一个左括号都记录下来,遇见右括号的顺序要与左括号的先后顺序要相反才行,这个顺序就是重点,那么怎么将这个问题对应到相应的数据结构中去呢?我们可以这样进行思考,遍历字符串,当我们遇见的每一个左括号
2021-02-07 13:26:01
133
原创 2021-01-31
@力扣刷题 第五题题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的首先对题目进行分析,两个链表都是已经排好顺序的(升序),需要将两个链表合成一个链表也是按照升序排列解决思路1.首先要进行合并必须要进行比较大小2.还有就是不需要进行内存的重新申请,直接在原来两个链表上进行操作,主要是最后在返回链表头的时候要注意3.因为每次的操作都是相同的,先进行比较,然后小的节点放在前面大的节点放在后面。这样每次都是进行这个操作,因此选择使用递归下面是具
2021-01-31 22:28:06
225
4
原创 JAVAC/S QQ
根据网络通信完成最基本的消息发送,原理还是基于C/S,好的小二现在开始讲给你!首先我们还是要建立服务端和客户端,并且消息的发送是基于客户端连接上服务端,消息的发送是利用IO流来进行发送的,并且不同类型的IO流可以发送不同类型的数据,这个就得根据实际情况情况来进行定义,这次的模仿qq可以将发送的消息看作字符串,因此最基本的额io流就可以,在发送的时候将其转化为字节数组就行。下面是具体的步骤:建立服务器端、客户端服务器有自己的界面上面主要有发送消息框和发送按钮,还有显示全部消息的文本框,服.
2021-01-27 22:30:54
258
原创 java视频meeting
以下博客会出现小二这个人,我最近就是一直在给他讲代码,但是他真的太笨了!!首先meeting也是在服务器和客户端的基础上,也是基于C/S通信的,这个就不做过多赘述,视频我们将其理解为由一帧一帧的图片组成,因此视频会议就可以理解为在以非常快的速度传输一张一张图片,这个快的速度是我们肉眼不能识别的,因此看不出来这是一张一张图片,那么接下来就好理解了首先都是需要客户端和服务器完成最基本的通信连接,接下来就是数据传输操作:1.获取视频2.将图片转化为二维数组(图像处理的时候我们知道,一张图片就是由二维数组
2021-01-26 09:32:14
615
原创 android里面的绘图
首先在java里面的绘图我们都是直接用一个Graphics来完成,但是在android里面绘制图形需要以下关键字 //安卓画图 ImageView draw; Bitmap bm; Canvas cv; Paint pt;那么关于对这四个关键字的理解:ImageView draw可以理解为图形将要显示在这个上面 为画布这个画布会有它的尺寸为限制Bitmap 可以从字面意思上理解是位图,因为对于图形可以看作是由一个一个像素点所组成的,因此设置Bitmap.createB.
2021-01-16 19:25:58
155
原创 快速排序
快速排序下面说下我对于快速排序的理解,首先它是排序算法中一种,既然是排序那么自然少不了最基本的 比较、交换、循环,快速排序可以称其为单轴快排,这个轴就是你选中的一个基准,在一串需要排序的数字中选择一个轴,然后将其余全部的数字与这个选中的轴进行比较,比这个轴小的放在左边,比这个轴大的放在右边,此时就相当于将数组分成了两个部分,然后在各个部分重复上面的操作,即可完成快速排序。废话不多说,直接上代码对于轴的选择,我们每次都选择需要进行排序数组的最后一个数为轴,然后将剩下的所有数与其进行比较,根据其原理.
2021-01-07 11:51:23
151
原创 线程安全初次探究
关于对线程安全的理解线程安全就是多个线程对共享数据的操作举例说明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
91
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
938
原创 java 链表的理解
数据结构首先可以将这四个字理解为对数据进行处理或者存储的一种方法结构。数据存储的底层原理数据在底层存储的形式有两种分为数组形式的存储和链表存储的形式,这两种的区别是什么:数组存储在内存地址上必须是连续的;链表的存储形式在地址上不一定是连续的如果是数组形式的存储的话,加入有32位的内存,但是存储数组的形式假如没有利用完内存会有碎片化内存的产生,但是链表存储的话,不用完全按照顺序地址存储,所以会占满内存 因此会优于数组存储...
2020-12-04 22:05:19
183
原创 java飞机大战对线程的理解
线程理解假设在一台电脑上会有很多个应用,你可以同时开启多个应用,这个被称作进程 一台电脑可以同时有多个进程运行,每个进程里面会有多个线程同时运行,举个例子,你打开一个视频播放软件,你可以同时下载视频,也同时在看着视频,这就是在一个进程里面有两个线程,线程的通俗理解就是可以我可以在看电视的同时也在吃着饭,互相不影响都在进行着。利用飞机大战游戏来运行多线程-代码用来实现飞机大战的窗口界面 public void init() { //飞机大战窗口 this.setTitle("..
2020-11-26 14:39:09
206
原创 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
453
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
110
原创 java 继承
java 继承在多种类型之间存在继承的关系继承的规则是:子类和父类有同名的方法和属性,但是具体内容不同继承 public class 子类名 extends 父类名{}new一个对象的格式: 父类名 新对象名称 = new 子类名();继承之后,子类具有父类的属性和方法,同时子类可以重写父类中的方法(注意,格式要求相同,参数列表相同)代码示例:父类:public class Roler {String name;int blood;//自身血量int blood1;//攻击掉血量pu
2020-11-08 22:12:52
125
原创 树莓派 Linux修改文件权限
**例如现在有一文件test.c文件已经编写完毕,想要去修改文件的权限:chmod abc test.c其中a:文件所有者的权限b:与文件所有者同属一个用户组的其他用户的权限c:其他用户组的权限权限一共有三种 r(可读) 4w(可写) 2x(可执行) 1因此 用上面三个数字进行组合,并且abc三个位置对应不同用户的权限例如 chmod 666 test.cchmod 777 test.c...
2020-09-24 09:21:33
1617
原创 linux文件编程 打开 创建 写入
int main(){ int fd; fd = open("./file2",O_RDWR); if(fd == -1) { printf("file2 no exist\n"); } fd = open("./file2",O_RDWR|O_CREAT,0600); if(fd > 0) { printf("file2 okok\n");...
2020-08-17 21:41:18
174
原创 树莓派WIFI连接和IP地址的固定
**首先用串口登录树莓派来进行联网**1.用串口的方式登录树莓派2.输入命令 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf3.添加WIFI信息ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1countr
2020-08-17 11:03:33
346
原创 linux指令 -I -L
-I编译程序按照-I指定的路进去搜索头文件。-L表示:编译程序按照-L指定的路进去寻找库文件,一般的在-L的后面可以一次用-l指定多个库文件。
2020-08-12 20:57:18
3271
原创 scp 传输文件
用到scp指令出现错误解决办法ssh -o StrictHostKeyChecking=no 192.168.0.xxx然后根据提示输入密码
2020-08-11 22:55:47
180
原创 linux网络编程 字节序
字节序:指多字节数据在计算机内存中存储或网络传输时各字节的存储顺序有两种存储:小端字节序:低字节存储在低地址中大端字节序:
2020-08-11 14:47:51
80
原创 linux网络编程 字节序
字节序:指多字节数据在计算机内存中存储或网络传输时各字节的存储顺序有两种存储:小端字节序:低字节存储在低地址中大端字节序:高字节存储在低地址中网络编程用的是大端字节序
2020-08-08 15:47:14
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人