自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (3)
  • 收藏
  • 关注

原创 对象的自我救赎---finalize()

1. 哲学之生与死  在根搜索中不可达的对象,也并非“非死不可”的,这时候它们暂时处于“缓刑”阶段,要真正宣告一个对象死亡,至少经历两次标记过程:如果对象在进行根搜索后发现没有与GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否必要执行finalize()方法。当对下给你没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟机将这两种情况都视为“没有必要执行”。  如果这个对象被判定为有必

2021-06-18 11:35:11 206 1

原创 java中的引用

1. 强引用  强引用就是指程序代码之中普遍存在的,类似“Object obj=new Object()”这类引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。2. 软引用  软引用用来描述一些还有用,但并非必需的对象。对于软引用关联着的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中进行第二次回收。如果这次回收还是没有足够的内存,才会抛出内存溢出异常。软引用的源代码public class SoftRefere

2021-05-28 10:59:21 166

原创 判断对象是否可以回收的2种方式

1. 引用计数算法  给对象种添加一个引用计数器,每当有一个地方引用她时,计数器的值就加1;当引用失效时,计数j器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。  引用计数器的实现简单,判断效率也很高,在大部分情况下它都是一个不错的算法,python就是使用这种算法。而java没有采用这种方式的原因是因为这种算法很难解决对象之间的相互循环引用的问题。2. 根搜索算法  通过一系列的名为“GC Roots”的对象作为起始点,从这

2021-05-24 14:23:01 225

原创 2种对象访问方式

1. 句柄Java堆中将会划分出一块内存来作为句柄池,reference中存储的对象就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息。2. 直接指针Java堆对象的布局就必须考虑如何放置访问类型数据的相关信息,reference中直接存储的就是对象的地址。3. 句柄方式与直接指针的比较句柄方式直接指针方式优点reference中存储的是稳定的句柄地址;在对象被移动时只改变句柄中的实例数据指针,而reference本身需要被修改访问速度

2021-05-19 17:11:36 139

原创 运行时数据区域

java虚拟机在执行java程序的过程中会把它管理的内存划分为若干个不同的数据区域。有的区域随着虚拟机进程的启动而存在,有些区域则是依赖于用户线程的启动和结束而建立和销毁。java虚拟机所管理的内存包括如下几个运行时数据区域:1. 方法区方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。垃圾收集行为在这个区域是比较少出现的(相对于堆来说),但并非数据进入了方法区就如永久代的名字一样“永久”存在。这个区域的内存回收目标主要是针对常量池的.

2021-05-18 11:26:42 120 1

原创 Executor源码解析

java.util.concurrent.Executor的主要作用是用来实现工作者线程和任务线程的分离。工作者线程是用来执行任务的线程,任务线程是被工作者线程执行的业务逻辑。Executor其实是一个接口,它包含一个Executor方法,用来执行业务逻辑线程。public interface Executor { /** * Executes the given command at some time in the future. The command * may.

2021-05-11 11:14:39 151 1

原创 ByteBuffer源码分析

ByteBuffer顾名思义是存放Byte类型的缓存类,其内部是由byte[]数组来实现byte类型存储的。它是作为一种容器,存储的方式是线性存储的。成员变量 final byte[] hb;//存放byte的数组 final int offset;//偏移量 boolean isReadOnly;// 是否只读标识构造函数 ByteBuffer(int mark, int pos, int lim, int cap, byte.

2021-05-10 13:46:59 171

原创 笑谈插入排序

1.背景要说插入排序的发明者是怎么发明插入排序的,我想大概就是在斗地主的时候吧。大A(姑且假定为插入排序的发明者)是一个学霸,在江湖中也是名声在外,人人聊起都是竖起大拇指的那种人物;但是大人物也是有苦恼的一面,话说家家有本难念的经;在那个高手如云的时代,必须要有一个投名状(那就是发明一种举世闻名的算法)。为此大A为这件事情伤透了脑筋,甚至是跑入自家山后面的山洞进行闭关修炼,写下了30w行代码也没有发明出举世震惊的算法。衣带渐宽终不悔,为伊消得人憔悴。就这样几年过去了。大A虽然编程能力通过这几年的修炼

2021-03-28 21:16:02 177

原创 JVM知识点

2020-11-24 09:41:02 127

原创 CyclicBarrier之栅栏

同德则同心,同心则同志。1. CyclicBarrier之栅栏栅栏类似于闭锁,它能阻塞一组线程直到某个事件发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏的位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。CyclicBarrier可以使一定数量的参与方反复的在栅栏的位置集合,当线程到达栅栏位置,那么栅栏将打开,此时所有的线程都被释放,那么栅栏就被认为是打破了,所有阻塞的await调用都将终止并抛出异常。如果成功的通过栅栏,那么await将为每个线程返回一个唯一的到达索引号,我.

2020-06-10 14:27:47 192

原创 闭锁之CountDownLatch

君子务知大者远者,小人务知小者近者。1. CountDownLatch介绍CountDownLatch是闭锁的一种实现方式,闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止的状态。CountDownLatch它可以使一个或多个线程等待一组事件发生。闭锁状态包括一个计数器,该计数器被初始化为一个整数,表示需要等待的事件数量。countDown方法递减计数器,表示有一个事件发生了。而await方法等待计数器到零,这表示所有需要等待的事件都已经发生了。如果计数器的值没有到达零,那么await方法会.

2020-06-02 10:22:35 200

原创 python可视化工具

言之无文,行而不远。1. 数据可视化的作用数据可视化是数据分析很重要的一环。数据可视化主要作用是通过图形的方式,清晰的展示数据的趋势及分布。显示隐含在数据中的现象和规律,给决策者一个很好的数据支撑。2. python中matplotlibfrom matplotlib import pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签plt.rcParams['axes..

2020-05-27 09:59:14 310

原创 线程简介

信,国之宝也,民之所庇也。1. 线程的作用线程,被称为轻量级进程(Lightweight Process, LWP),是程序执行流的最小单元,是CPU调度和分派的基本单位。线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。使用线程的最大作用是提高程序并行执行的作用,充分利用CPU的利用率,但是并不是线程越多越好,因为如果线程过多,切换线程执行任务是需要花费资源。这要不仅不能降低程序的运行时间,反而线程在不断的切换浪费时间与资源。2. 线程的执行过程3. 线程示例 //使用lamb.

2020-05-19 14:34:26 218

原创 String、StringBuilder与StringBuffer的区别

弈者举棋不定,不胜其耦1. String​ String对象在Java中是不可变的,并且是不可继承的(在String类前使用了final修饰了);当创建一个String对象(不是使用new操作)的时候,JVM首先判断该String对象在常量池是否存在相对的字符;如果存在则返回常量池字符串的句柄。如果是使用new操作创建的字符串,即使内容一样也会在堆上另外开辟一片内存。流程图如下: String var1 = "hello"; String var2 = "he.

2020-05-19 14:32:32 182

原创 python之行列式

人活着不是单靠食物。 《圣经》1.对于一个n×n矩阵A,均可对应一个标量det(A),它的值将告诉我们矩阵是否为非奇异的。2. 令A= (aij )为一n×n矩阵,并用Mij表示删除A中aij的行和列得到的(n-1)×(n-1)矩阵,矩阵Mij的行列式称为aij的子式,定义aij的余子式Aij为A...

2019-06-04 21:34:52 8054 1

原创 python 之矩阵与方程组

若是你的右眼叫你跌倒,就剜出来丢掉。宁可失去百体中的一体,不叫全身丢在地狱里。                             《圣经》1. 概念    1.如果线性方程组无解,则称该方程组是不相容的(inconsistent),如果线性方程组至少存在一个解,则成为该方程组是相容的(consistent);      2.若两...

2019-05-26 10:53:31 1214

原创 python数据可视化(微信篇)

马太效应:让富有的更富有,让没有的更没有。 ──《圣经·马太福音》     python这几天可谓混的风声水起,借着人工智能这一东风;在中国互联网行业可谓是遍地开花,身边的人都在讨论人工智能。谈天的时候提到的最多的也是python,所以抱着好奇心(一个程序员永远不能失去你的好奇心,因为这是你的财富,是你产出的源泉)开始接触python,最后不...

2019-05-17 16:26:05 449

原创 定时器

你的付出的努力越多,得到的越多。你盖好了,他们就来了。1. 定时器概念      定时器是进程规划自己在未来某一时刻接获通知的一种机制;定时器的调度及精度取决于当前负载和对进程的调度,系统可能会在定时器到期的瞬间(通常是几分之一秒)之后才去调用所属进程。2. 使用UNIX API实现的定时器代码示例 #includ...

2018-10-18 09:38:27 235

原创 线程

1. 并行与并发并发是指一个处理器处理多个任务,但是在同一时刻只有一条指令执行,多个进程指令被快速的轮换执行。并发是指多个处理器或者是多核处理器同时处理多个不同的任务,指在同一时刻,有多条指令在多个处理器上同时执行。2. 线程的特性同一程序中的所有所有线程均会独立执行相同程序,切共享同一份全局内存区域,其中包括初始化数据段(initialized data)、未初始化数据...

2018-10-17 10:54:23 295

原创 信号量

人们常用零和游戏的观点看世界,其实他们本不该这样。他们常常说:我比别人做的好,所以我就该发达。而在非零和游戏里,尽管你比别人做的好,你也可能和他一样潦倒。 —凯文·凯利《失控》1. 概念信号是事件发生时对进程的通知...

2018-07-05 11:23:11 558

原创 stm32f10x之GPIO

1.GPIO的定义 GPIO的英文名字为General Purpose Input Output(通用输入/输出),是单片机中比较常用的引脚。2.GPIO的配置模式 浮空输入 上拉输入 模拟输入 开漏输出 推挽输出 推挽复用功能 开漏复用功能 控制的寄存器为:GPIOx_CRL(端口配置低寄存器)、GPIOx_CRH(端口配置高寄

2018-01-17 11:31:33 570

原创 2017总结

不知不觉也就工作5-6个月了,也到了年底的时间了是时候对自己来一个总结了。我想通过两个方面来进行总结:一、技术方面;二、生活方面。 一、技术方面;本科学习的专业是软件工程,主攻的方向也是java。曾经在学校也跟老师做过一些项目,其中我感觉自我良好的项目是网络爬虫项目。该项目是通过java爬取各大财经网站的文章以及用户的评论,使用户通过web界面可以搜索到某主题用户对其的反应。是这个项

2018-01-04 17:56:24 505 2

原创 java数值类型

1.java数值类图2.Integer类Integer存储时使用的字节数 // Bit twiddling /** * The number of bits used to represent an {@code int} value in two's * complement binary form. * * @since 1.5 */

2017-12-29 09:19:43 496

原创 c中指针数组与数组指针的区别

指针数组顾名思义就是一组指针,元素中的每个值都是指针;例如:int *apple[4]。 2. 数组指针:就是指向数据的一个指针,例如:int (*mango)[4];(这条语句的意思:mango是指向一个含有四个int元素的数组)示例: int apear[4]; //指针数组 int *PApper[4]; //数组指针 int (*peach)[4];

2017-12-24 12:14:24 274

原创 goahead文件下载

1. goahead下载文件源码static char *websIndex; /* 默认页面名称 */static char *websDocuments; /* 默认页面目录 */static void closeFile(){ wfree(websIndex); websIndex = NULL;

2017-12-02 16:07:26 3295 3

原创 goahead文件上传

1.goahead文件上传需要修改与添加的源码在goahead.c文件中添加一个并注册一个接受并客户端(浏览器)文件的action,代码示例:static void uploadFileAction(Webs *wp){ WebsKey *s; WebsUpload *up; char *upfile; websS

2017-10-22 12:30:39 3222 16

原创 goahead前台与后台的交互(ajax)

GoActions1.goActions简介goAction以我的理解就是与前台打交道的中间人,它接受客户端(浏览器)的请求,goaction把客户端的请求转交给其他业务处理的函数并从中得到结果,然后把结果推送给客户端完成一次完整的http请求,goAction其实非常类似于java的Servlet。官网对他的介绍如下: The traditional Common Gateway Interf

2017-10-14 13:32:53 8629 7

原创 Goahead的介绍与安装

1. goahead的作用1.1 goahead的介绍GoAhead WebServer,它是一个源码,免费、功能强大、可以在多个平台运行的嵌入式WebServer。GoAhead提供了多种方法编写动态页面,包括asp过程、GoForms过程和embedded javascript。GoAhead主要利用asp过程动态获取系统信息然后显示在页面上,GoForms过程则主要用来处理用户指令,例如控制设

2017-10-03 10:47:50 10643 3

原创 win7 安装goahead服务器

goahead的获取,官网下载goahead-3.6.3-src.tgz(点击这里获取)并解压。用命令行运行goahead-3.6.3下的make.bat文件,这时会自动在goahead-3.6.3\build生产一个windows-x86-default文件(这里面有bin文件,bin文件下是可执行文件)。把goahead-3.6.3\src的auth.txt与route.txt 复制到goa

2017-09-07 23:39:39 1468

原创 使用maven无法查看jdk源码

按住ctrl加鼠标点击无法查看jdk源码的原因:1.JRE system Library 更换成 jdk1.XX.XX(原来可能是jre1.XX.XX)。 2.点击windows->preferences->Maven 把DownLoad Artifact Sources 与DownLoad Artifact Docs勾上。

2017-08-28 17:04:27 2261

原创 jsp 实现excel的导出

通过jsp 导出excel 的方法: *在代码中添加:<% String fileName = “fileName.xls”; response.setContentType(“application/vnd.ms-excel”); response.addHeader(“Content-Disposition”, “attachment;filename=”+java.ne

2017-08-23 19:41:04 403

原创 java static 语句块与非static语句块的调用顺序

最近笔试的时候遇到这个问题,特来mark一下以便自己回忆。(http://img.blog.csdn.net/20170305190141929?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTU5KTEpfMjNOTUs=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/S

2017-03-05 19:03:42 387

原创 java中的异常

try、catch、finally的执行顺序1.try与catch:首先执行try语句块的代码块,如果碰到异常就跳出到catch语句块里面,不再执行其他的代码块转而执行catch里面的代码块。(可以理解为catch 是给try 擦屁股的好人) 2.try、catch与finally: try与catch的运行顺序与上相同,只是finally里的语句块一定会执行。异常分类必检异常(checked

2016-07-06 10:52:24 339

转载 maven 创建nexus

一、到nexus官网下载最新版1.1 下载地址:http://www.sonatype.org/downloads/nexus-latest-bundle.zip (目前最新版本是2.7.2-03)(2015-07-02注: 上面的下载地址好象已经失效了,新的地址为 http://www.sonatype.org/nexus/archived/ )1.2 下载完后,解压到指定目录,比如

2016-05-17 15:45:34 389

原创 项目中的小问题大麻烦

类中定义的变量尽量不要实例化,这是一个多么痛的礼物呀。今天我就为这样一个小问题伤了不少脑筋。我定义的类是这样的: class AA { private List list = new ArrayList(); public void XXX(){ //对list数组的操作。 } }然后调用的时候,由于没有清空,导致第一次的数据还保存在里面。我也是

2016-05-09 19:11:31 358

原创 cglib 代理

使用cglib 代理需要导入两个包(asm-3.3.1.jar、cglib-2.2.2.jar)导包的时候你要观察你导入这两个包是否兼容。1飞机类:package com.jxufe.cglibproxy;/** * 飞机类* @author jack* @version 创建时间:2016年5月9日 上午10:40:05* */public class Airplane {

2016-05-09 11:25:51 785

原创 maven中的依赖范围

依赖范围就是用来控制依赖与这三种(编译classpath 、测试classpath、运行classpath)的关系,maven中的四种依赖范围:      compile:顾名思义就是编译依赖范围。这个范围在编译、测试、运行都有效。例如:spring中的jar包     test:只在测试中有效。例如:junit    provided: 只在编译、测试有效。例如:Servlet-ap

2016-05-06 19:27:46 411

原创 代理模式(二)

jdk动态代理实现:package com.jxufe.proxy;/** * 这是一个接口类* @author jack* @version 创建时间:2016年5月6日 上午10:37:32* */public interface FlyAble { public void fly();}package com.jxufe.proxy;/*

2016-05-06 11:19:37 514

原创 代理模式(一)

代理模式分为:动态代理、静态代理。代理模式的UML类图:代码:package com.jxufe.proxy;/** * 这是一个接口类* @author jack* @version 创建时间:2016年5月6日 上午10:37:32* */public interface FlyAble { public void fly();}pack

2016-05-06 10:57:58 310

原创 插入排序

package com.jxufe.argorithem;import java.awt.Insets;/** * 插入排序* @author jack_one_one* @version 创建时间:2016年5月5日 下午1:00:21* */public class InsertSort { /** * 插入排序的具体实现方法 *@param array 排序的数

2016-05-05 13:11:32 390

JMI示例代码,其中包括客户端与服务端。

java JMI的示例代码,其中包含JMI客户端与服务端。如果要运行本样例请先运行服务端,然后运行客户端。

2019-06-14

jLink驱动]

windows 7 下的jlink驱动,适用于64位于32位的window 7。

2017-10-14

goahead-3.6.3

goahead 源码下载,此goahead版本我只在win7上测试可行,没有在linux测试;望需要在win7上运行goahead的同行下载。

2017-10-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除