- 博客(22)
- 收藏
- 关注
原创 jvm优化示例
例如,如果在循环中多次计算相同的表达式,JIT 编译器可能会将其移动到循环外部,以避免不必要的重复计算。动态反优化(Deoptimization):JIT 编译器可以在运行时撤销先前的优化,以适应代码的实际执行特征。常量传播(Constant Propagation):编译器会分析代码,找出已知常量的变量,并在可能的情况下用这些常量替换变量引用。Java 编译器在编译阶段会进行一些代码优化,以提高生成的字节码的执行效率。JIT 编译器的目标是在运行时根据代码的实际执行特征进行智能优化,从而实现更高的性能。
2023-06-05 11:43:19
158
原创 多处理器编程
两个线程同时支付100元,跟数据库中的原子性类似,会导致并发问题,余额有可能出现2^64-100,计算机内2的补码-100.编译器对内存访问“eventually consistent”的处理导致共享内存作为线程同步工具的失效。并发:有两个人同时做一件事情,不管是并发进程还是并发线程。单处理器多线程下也能并发,那么多处理器的复杂点。并发是一段时间内有多个任务,并行是同一时间点有多个任务。并发会导致每个人做的事情的完成先后顺序啥的不同。(3)可见性(最大的麻烦)理解并发程序的执行。
2022-10-26 10:52:37
300
原创 理解并发程序的执行
两方都举旗子,我们俩都贴纸,A手快,B的名字先贴上去,B手慢了,把A贴上去了,把B自己的名字覆盖掉了,啊哈哈,那这时候看,上面写的A的名字,那就A进去啦,实际上这个算法还是自私的,谁手快谁进去。上一个失败的例子就相当于,我想进厕所,我看一下厕所有没有人,我再进去,但是我看完之后,我只能闭着眼睛进去,但是这之间,有个人也进去了,那我们俩都进去了,就产生了并发问题。并发程序麻烦的地方(不可见性):看到以后的状态是一个历史,并不是实时的状态,当你去做事情的时候,那就有可能被改掉了。简单的上锁(其实是锁不住的)
2022-10-24 17:07:02
570
原创 应用程序的理解
ELF(Executable Linkable Format)是其中最常用的。操作系统做了什么:加载程序,并初始化运行环境(寄存器,代码,数据,堆栈)2文件/设备管理: open,close,read,write,…4.操作系统提供API打开,读取,改写(都需要相应的权限)可执行的文件(程序的二进制代码和数据) 和其他数据文件。从_start 开始执行(初始的%rip,PC)1进程管理:fork,execve,exit,…运行的程序称为进(正在运行的)程(程序)ELF文件的header(元数据)...
2022-08-15 22:30:42
329
1
原创 看看反转链表
最近看看简单题还会不会反转链表```java public ListNode ReverseList(ListNode head) { //处理空链表 fast-template if (head == null) return null; ListNode cur = head; ListNode pre = null; while (cur != null) { //断
2022-04-21 21:58:10
327
原创 对于计算机的小认识
计算机想要计算,1.通过软件方法:进行编程,使用硬件提供的已有功能来进行功能编程,比如硬件提供一个加法器,那么就可以写一个累加的程序来实现乘法操作,这种方法耗时长但是省钱2.通过硬件方法:通过计算机底层的硬件设计,利用数电相关知识进行硬件的设计,使硬件提供一个乘法操作直接使用,这种方法用时快,但是具有一定的成本....
2022-04-09 18:39:22
90
转载 进程和线程
进程我们都知道计算机的核心是CPU,它承担了所有的计算任务,而操作系统是计算机的管理者,它负责任务的调度,资源的分配和管理,统领整个计算机硬件;应用程序是具有某种功能的程序,程序是运行于操作系统之上的。进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执
2022-04-09 18:16:22
78
原创 java中冒号的用法
1、String[] abc = new String[3]{“a”,“b”,“c”};for (String str : abc){System.out.println(str); //这个地方的冒号就是遍历abc的集合,取出每一个元素}2、三元运算符boolean?true的内容:false的内容int a=1;int b=3;int i = a>b?3:1;//这个地方的冒号用来选择值,如果a大于b,那么i=3,否则i=13、跳转标记outer:for(int i=0;
2021-12-14 19:11:39
2609
转载 HTTPS
HTTP 有以下安全性问题:使用明文进行通信,内容可能会被窃听;不验证通信方的身份,通信方的身份有可能遭遇伪装;无法证明报文的完整性,报文有可能遭篡改。HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。加密1. 对称密钥加密对称密钥加密(Symmetric-Key Encry
2021-12-14 19:08:50
275
转载 GET 和 POST 比较
GET 和 POST 比较#作用GET 用于获取资源,而 POST 用于传输实体主体。#参数GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具(Fiddler)查看。因为 URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码。例如 中文 会转换为 %E4%B8%AD%E6%96%87,
2021-12-14 19:07:13
110
原创 java小知识
面向对象特点(高内聚低耦合)抽象,把现实世界的对象的某些特征提取出来,用代码表示,抽象出来的一般叫做类或者接口.数据抽象 -->表示世界中一类事物的特征,就是对象的属性。比如鸟有翅膀,羽毛等(类的属性)过程抽象 -->表示世界中一类事物的行为,就是对象的行为。比如鸟会飞,会叫(类的方法)封装将过程与数据包围起来.对数据的访问只能通过已定义的界面,eg:私有变量,用set,get方法获取封装保证了模块的独立性,使得程序维护修改较为容易,对应用程序的修改仅限于类的内部,因而可以将
2021-12-14 19:00:59
506
原创 ReentrantLock
ReentrantLock简单描述什么是aqs:aqs是一个抽象类,规范了构架锁的基本要求,同时也是juc体系中其他同步组件的基石。具体是实现就是:AQS使用一个volatile的int类型的成员变量state来表示同步状态,通过将每条要去抢占资源的线程封装成 一个Node节点,然后放入内置的同步队列来完成资源获取的排队工作,来实现锁的分配,同时CAS完成对State值的修改。分析需求:一个锁被重复拿到?一个线程有多个任务需要去完成,两个任务都需要锁,为了保证两个任务都完成,所以需要可重入锁。如
2021-12-14 18:59:07
72
原创 java类加载
概念Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最 终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载 、验证、准备、解析、初始化 、使用和卸载七个阶段,其中验证、准备、解析三个部分统称 为连接。加载->(验证->准备->解析)连接->初始化->使用->卸载加载、验证、准备、初始化和卸载这五个阶
2021-12-05 20:54:43
95
原创 浅谈JUC
浅谈JUC并发是一段时间,并行是一个时间点线程同步(锁的概念):线程同步机制: Monitor(监视器),在操作系统中叫监视器,在java中叫锁,他是一种同步机制,保证同一时间内,只有一个线程访问被保护数据或者代码.jvm同步基于进入和退出,使用管理对象实现的管程对象对临界区操作,进入的时候加锁,退出的时候解锁锁相当于上厕所,一个人进去,先上锁,等上完以后,再解锁,出来,下一个进去守护线程用户线程:自定义线程 new Thread();守护线程:特殊的线程,运行在后台的线程,比如
2021-12-05 20:53:09
390
原创 jdbc无法连接远程服务器上的MYSQL
今天在进行jdbc连接远程服务器MYSQL的时候,连接不上,出现了错误代码如下:package jdbc;import com.mysql.jdbc.Driver;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class jdbc01 { public static void main(Stri
2021-11-26 21:44:55
2751
原创 备份或恢复数据库遇到Unknown command ‘\\‘暨sql导入云服务器遇到字符编码,文件传输问题解决方案(
今天想将学习资料下的sql文件放到Mysql中,因为后面有大量的表需要创建,所以想弄进去.在执行 source d:\ecshop.sql的时候,又出现了上次 的问题,上次是分别更改server database client 等为 utf8来解决的,可是这样修改不是永久修改,关闭服务的时候,又会恢复默认编码.所以找教程,在/etc/my.cnf下添加了character_set_server=utf8 init_connect='SET NAMES utf8然后重启Mysql服务syste
2021-11-23 21:17:49
2218
原创 1024快乐
public class HelloWorld {public static void main(String[] args){System.out.println(“Hello World!”);}}
2021-10-24 00:12:47
87
1
原创 win11更新特别慢怎么办
在更新时,主要是svchose.exe在下载文件,所以我们可以打开c盘-Windows-System32-svchost.exe双击这个文件,这样就能启动它的下载了,如果还不行那就用镜像文件吧
2021-10-05 18:41:02
3432
1
原创 学数据结构与算法前要有什么基础
在学习数据结构,算法的时候,建议是通过C语言描述的书来进行学习,所以学习之前要将C语言学好,尤其是指针和结构体的概念,一定要会用,熟练掌握。觉得自己C语言学的差不多的时候,就可以开始接触链表的内容了,这里推荐《大话数据结构》和《啊哈算法!》,将常见的定义,增删改查自己动手做一遍,视频可以推荐浙大的数据结构和北京大学的程序设计与算法(2),进行系统的学习,多学,多练,多看,一定可以学会。...
2021-10-03 17:57:27
2789
2
原创 7-1 厘米换算英尺英寸 (15 分)C和java
C语言#include <stdio.h>int main(){ int cm,foot,inch; double mi; scanf("%d",&cm); mi = lon*1.0/100; mi = mi/0.3048; foot = mi; inch = (mi-foot)*12; printf("%d %d",foot,inch);} javaimport java.util.Scanner;public class Main{
2021-09-27 19:09:26
154
原创 类方法和实例方法的区别
类方法是属于类的,不是对象的。类方法的调用可以是类名.类方法() 或者 对象名.类方法()而实例方法只能是对象.实例方法名()类方法只能访问类方法,实例方法可以访问类方法和实例方法。类方法只能访问类成员变量,不能访问实例变量; 实例方法可以访问类成员变量和实例变量。类方法的调用可以通过类名,实例方法只能通过对象。类方法不能被覆盖,实例方法可以被覆盖。我们常见的static是静态的意思,在定义类方法时,要加上static,所以类方法又称为静态方法,而实例方法不能加static,又叫非静态方.
2021-09-26 09:17:02
7221
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人