![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度理解
程序员一灯
12年开发老兵,目前已是一个老师,分享这么多年的心得体会
展开
-
linux上安装maven
1、下载mavenMaven – Download Apache Mavenhttps://maven.apache.org/download.cgi二、上传到linux服务器解压:tar -zxvf apache-maven-3.8.3-bin.tar.gz三、配置环境mv apache-maven-3.8.3-bin /root/mavenvi /etc/profile最后追加export MAVEN_HOME=/root/mavene...原创 2021-10-29 15:03:42 · 160 阅读 · 0 评论 -
在Linux系统上安装Git
Git是目前流行的非常好用的版本控制工具,这里介绍两种安装方式,1、yum安装,2、从github上下载最新的源码编译后安装一、yum安装1、在Linux上是有yum安装Git,非常简单,只需要一行命令yum -y install git...原创 2021-10-29 14:52:14 · 142 阅读 · 0 评论 -
linux实现git免密登录
1、linux操作①在linux中输入ssh-keygen -t rsa②提示信息Enter file in which to save the key (/home/用户目录/.ssh/id_rsa):直接enter不设置账号Enter passphrase (empty for no passphrase):直接enter不设置密码Enter same passphrase again:直接enter不设置密码Your identification has been save原创 2021-10-29 14:50:47 · 1987 阅读 · 0 评论 -
查看字节码的工具jclasslib bytecode viewer
前言查看字节码除了使用javap,还可以使用开发工具插件,idea就有几个插件,之前我写的文章:javap -c 查看 Java 字节码里面有javap用法以及使用idea自带的插件进行字节码查看,这里再推荐一款字节码软件,功能更多一些。地址:GitHub - ingokegel/jclasslib: jclasslib bytecode editor is a tool that visualizes all aspects of compiled Java class files and t原创 2021-10-29 13:45:54 · 1693 阅读 · 5 评论 -
通过javap命令分析java汇编指令
一、javap命令简述javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。当然这些信息中,有些信息(如本地变量表、指令和代码行偏移量映射表、常量池中方法的参数名称等等)需要在使用javac编译成class文件时,指定参数才能输出,比如,你直接javac xx.java,就不会在生成对应的局部变量表等信息,如果你使用javac -g xx.java就可以生成所有相关信息了。如果你使用原创 2021-10-29 13:15:59 · 605 阅读 · 0 评论 -
synchronized底层原理分析
如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控制中是必不可少的部分,今天就来看一下synchronized的使用和底层原理。一、synchronized的特性1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不..原创 2021-10-29 12:10:50 · 1370 阅读 · 0 评论 -
javap -c 查看 Java 字节码
最近看一些文档,发现很多都查看字节码,对代码逻辑、数据结构的分析还是很有帮助的,类似如下的图:在我们工作、学习、以及研究 JVM 过程当中,不可避免的要查看 Java 字节码,通过查看字节码可以了解一个类的编译结果,也能通过编译器层面来分析一个类的性能。字节码文件是不能直接打开的,下面栈长教大家几种简单的方法如何查看 Java 字节码。1、使用 javap 命令查看字节码命令格式如下:javap -c xxx.classJDK 提供的了,不解释,来,演示操作一把:比如.原创 2021-10-29 11:12:47 · 872 阅读 · 0 评论 -
分布式事务实践(三)--Spring的全局事务JTA
01.Spring的本地事务Spring本身提供了一套Spring容器中进行事务管理的接口:不同的数据源厂商对Spring提供的事务管理接口都有相应的实现.而在Spring的容器内,调用者实际上是通过调用Spring的事务接口来实现事务的管理.02. 容器内存在多个数据源时如果一个应用容器中存在多个不同的数据源,通常我们会创建多个数据源的事务管理器.比如一个Java应用要连数据库,同时也要连接MQ,这种情况下进行事务管理,我们就会创建一个DataSourceTransac..原创 2021-10-29 10:03:27 · 1235 阅读 · 0 评论 -
分布式事务实践(二)--Spring的事务机制
1 Spring事务管理机制1.1 Spring框架的介绍Spring框架是开发人员使用的最流行的一个框架.1.2 Spring事务管理的优点提供统一的API接口支持不同的数据源Sring本身没有提供任何事务支持,只是对外提供统一的编程API接口,让数据源驱动方来对Spring事务进行实现,Spring事务的核心是PlatformTransactionManager接口.提供了声明式的事务管理Spring的事务实现可以是编程式和声明式,声明式的事务管理运用的是SpringAOP的思想原创 2021-10-29 09:55:02 · 221 阅读 · 0 评论 -
分布式事务实践(一): 事务的介绍
public class Demo { public static void main(String[] args) { Connection con = null; PreparedStatement ps = null; try { con = J...原创 2021-10-29 09:30:25 · 287 阅读 · 0 评论 -
Java数据结构-哈希表
1、员工信息表/** * 员工信息类 * @author Administrator * */public class Info { private String key; private String name; public Info(String key, String name) { this.key = key; this.name = name; } public String getKey() { return key; } public v原创 2021-10-22 20:16:06 · 94 阅读 · 0 评论 -
Java数据结构-二叉树
1、节点实现/* * 二叉树节点 */public class Node { //数据项 public long data; //数据项 public String sData; //左子节点 public Node leftChild; //右子节点 public Node rightChild; /** * 构造方法 * @param data */ public Node(long data,String sData) { this.data =原创 2021-10-22 20:01:58 · 77 阅读 · 0 评论 -
Java数据结构-快速排序
1、快速排序的代码实现/* * 快速排序 */public class QuickSort { /** * 划分数组 */ public static int partition(long arr[],int left, int right,long point) { int leftPtr = left - 1; int rightPtr = right; while(true) { //循环,将比关键字小的留在左端 while(leftPtr <原创 2021-10-22 19:58:59 · 98 阅读 · 0 评论 -
Java的位运算符详解——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算,既然是针对两个二进制运算的,那么所有的数都先转换成二进制:1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为02.或运算符或运算符用原创 2015-09-05 23:40:44 · 604 阅读 · 0 评论 -
mysql主从复制
mysql读写分离原创 2017-03-13 13:51:40 · 326 阅读 · 0 评论 -
Java数据结构-希尔排序
1、希尔排序/* * 希尔排序 */public class ShellSort { /** * 排序方法 */ public static void sort(long[] arr) { //初始化一个间隔 int h = 1; //计算最大间隔 while(h < arr.length / 3) { h = h * 3 + 1; } while(h > 0) { //进行插入排序 long tmp = 0; for原创 2021-10-21 23:15:33 · 116 阅读 · 0 评论 -
Java数据结构-汉诺塔
1、使用递归实现public class HanoiTower { /** * 移动盘子 * topN:移动的盘子数 * from:起始塔座 * inter:中间塔座 * to:目标塔座 */ public static void doTower(int topN,char from,char inter,char to) { if(topN == 1) { System.out.println("盘子1,从"+ from + "塔座到" + to + "塔座原创 2021-10-21 23:13:23 · 166 阅读 · 0 评论 -
Java数据结构-递归
1、递归输出打印public class Recursion { public static void main(String[] args) { test2(100); } public static void test() { System.out.println("Hello,World!"); test(); } public static void test2(int n) { if(n == 0) { return; } System.out原创 2021-10-21 23:08:38 · 128 阅读 · 0 评论 -
Java数据结构-双端链表和双向链表
一、链结点/* * 链结点,相当于是车厢 */public class Node { //数据域 public long data; //指针域 public Node next; public Node previous; public Node(long value) { this.data = value; } /** * 显示方法 */ public void display() { System.out.print(data + " ");原创 2021-10-20 22:17:48 · 199 阅读 · 0 评论 -
Java数据结构-链表
一、节点Node/* * 链结点,相当于是车厢 */public class Node { //数据域 public long data; //指针域 public Node next; public Node(long value) { this.data = value; } /** * 显示方法 */ public void display() { System.out.print(data + " "); }}二、列表LinkList原创 2021-10-20 22:14:02 · 70 阅读 · 0 评论 -
Java数据结构-栈和队列
一、栈public class MyStack { //底层实现是一个数组 private long[] arr; private int top; /** * 默认的构造方法 */ public MyStack() { arr = new long[10]; top = -1; } /** * 带参数构造方法,参数为数组初始化大小 */ public MyStack(int maxsize) { arr = new long[maxsize];原创 2021-10-20 22:12:01 · 123 阅读 · 0 评论 -
Java数据结构-简单排序
一、冒泡排序BubbleSortpublic class InsertSort { public static void sort(long[] arr) { long tmp = 0; for(int i = 1; i < arr.length; i++) { tmp = arr[i]; int j = i; while(j > 0 && arr[j] >= tmp) { arr[j] = arr[j - 1];原创 2021-10-20 22:07:25 · 79 阅读 · 0 评论 -
解说JAVA中==与equals
其实什么都不需要讲的、说的!!!应为Object中的equals是比较的内存地址。如果一个类没有重写equals方法,那么就继承Object中的那个equals方法。在JAVA中==与equals的差别:大家都知道==比较的都是内存地址值。下面主要讲解equals:在Object类中定义了方法: public boolean equals(Objec...原创 2019-05-17 19:03:17 · 1442 阅读 · 4 评论 -
JAVA死锁2
public class Deadlock{ public static void main(String[ ] args) { final Object resource1 = "resource1"; final Object resource2 = "resource2"; int a=0; Thread t1 = n原创 2012-07-09 00:39:36 · 756 阅读 · 0 评论 -
JAVA死锁1
死锁的概念就是:当你去买东西的时候,店小二说给钱给货,你说给货给钱,你们僵住了,就死锁了public class DeadLock { public static void main(String[] args) { Object o1 = new Object(); Object o2 = new Object(); Thread t1 = new T1(o1,o...原创 2019-05-17 19:02:55 · 2192 阅读 · 0 评论 -
JAVA操作符位移详解
package util;public class BitOperator { public static void main(String[] args) { System.out.println("\n按位左移"); output("123", 123); output("123 << 32", 123 <<...原创 2019-05-17 19:03:07 · 1142 阅读 · 0 评论